Giter Club home page Giter Club logo

corcel's People

Contributors

jamlen avatar reaandrew avatar waffle-iron avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

jamlendev

corcel's Issues

httpHeaders in the context need $ prefix

We should not need to use the $ prefix to define action properties inside the context block but currently we need to.

---
name : Golden Master For Corcel DEMO Application
workers : 1
waitTime : 0
jobs:
  -
    name : Managing Tickets
    context:
        $httpHeaders:
            a: boom boom
    steps:
      -
        name: Create a new ticket
        action:
          type : HttpRequest
          requestTimeout : 150
          method : POST
          url : http://localhost:45000/tickets/
          body: '{"title": "A new work item", "body": "Allow an agent to change the delivery date"}'
          httpHeaders:
              content-Type: application/json
        extractors:

Panic running a single request

The following file with the command `` causes the exception of panic: interface conversion: interface {} is nil, not map[interface {}]interface {} from the source `github.com/guzzlerio/corcel/infrastructure/http/YamlHTTPRequestParser.go:18`

---
  name : Golden Master For Corcel DEMO Application
  workers : 1
  waitTime : 0
  context:
      vars:
          corcel_host: localhost
          corcel_port: 45000
          httpHeaders:
              content-Type: application/json
  jobs:
    -
      name : Managing Tickets
      steps:
        -
          name: Create a new ticket
          action:
            type : HttpRequest
            requestTimeout : 150
            method : POST
            url : http://$corcel_host:$corcel_port/tickets

The reason for this one is that inside YamlHTTPRequestParser.go the code assumes that there is a httpHeaders key present inside the http action.

Move builders from test package

The following builders are useful outside of the test package and should be moved to the serialisation/yaml package and remove the yaml prefixing:

  • YAMLPlanBuilder.go
  • YAMLJobBuilder.go
  • YAMLStepBuilder.go

Add more version information to Corcel at build time

This page had a good write up about this.

https://www.atatus.com/blog/golang-auto-build-versioning/

A snippet from the link:

So, we use the below ldflag for our applications

go build -ldflags "-X main.buildstamp `date -u '+%Y-%m-%d_%I:%M:%S%p'` -X main.githash `git rev-parse HEAD`" myapp.go
We have a code to handle --version flag in our app. When the flag --version is passed, we print the buildstamp and githash variables, and exit the application. Hence, you will get the below output when we run all our applications with the version flag.

$ ./myapp --version
Git Commit Hash: c553786277bf05c0aa0320b7c7fc8249c73a27c0
UTC Build Time : 2015-07-26_07:07:11AM
This is how we handle auto versioning in golang binaries. If you have any other tips, share it in comments.

Shell Action

It would be a general good thing to support a Shell Action. They could even invoke curl from our Plans or another tool. I think this would be good for giving us a load of functionality available whilst we develop the specialist Actions.

Automatically add relevant Result Processors for the Actions specified

Currently all execution result processors are added as there is no link between the Action and the corresponding Result Processor e.g.

I should be able to add the HTTP Action and automatically the corresponding result processor should be added.

I should still be able to add further Result Processors e.g. The General Result Processor

Validate scenario yaml file

Validate scenario yaml file - could be as easy as just trying to parse the yaml and translating the errors to something helpful. Could be coarse to start with e.g. "The YAML is goosed" to a more fine grained and helpful place soon as "Property X in YAML is not well formed".

Javascript support

We need to find the best library in order to support JavaScript.

v8worker by Ryan Dahl looks to be the best from a simplicity point of view and principles but it comes with this statement:

It's only been tested on my OSX laptop and x64 linux. Should be portable with some difficulty to windows.

So we have a job on it seems to make it support Windows. LETS double check this and compile on windows to check whether someone has committed this but not updated the documentation

This ticket is for a spike and to understand what to do now and next e.g.

Pure GO javascript library NOW
Update to V8 worker after

OR

Wait to implement JavaScript until public beta when we know how to handle

Support standard log file formats as input

Using a log file from a web server, allow a "replay" type function which will convert (maybe on the fly) each entry in the log file to a Corcel command.

Propose to support the following formats:

  • W3C Extended format
  • IIS Log File Format
  • NCSA Common Log File Format
  • Apache Custom Log - (format string must be supplied in config/cmd arg)

ADD JSON Path support

Seems quite under supported in GOLANG and the libraries which state they support it are not trivial to actually work.

Creating a ticket for this JSON Path and putting it under spike

Support turning on/off HTTP keep alive on connections

Support turning on/off HTTP keep alive on connections for the HTTP Action. We can simply set

req.Close = true

This will cause a new connection with each request. This is a specific configuration item for the HTTP Connector.

Add ramp up option

Add support to allow an initial user count, ramp up duration and total users. Maybe a command line option: --ramp-up=1,30s,25.

Could also consider a --ramp-down feature too.

Basic UI

Goal.

Simple UI with:

  • a text box to paste in the yaml
  • a button to start the run
  • an indication of progress whilst running
  • an output in HTML table of the results

This will need a server component in order to communicate over HTTP.

Create a build routine to bump the version

Create a build routine to bump the version.

Maybe something in the Makefile or something, maybe a parameterised build task i.e.

make version major (or broken) (bumps the major version including the git tag)

make version minor (or feature) (bumps the minor version including the git tag)

make version patch (or fix) (bumps the patch version including the git tag)

From semantic versioning and the great description of "Broken, Feature, Fix"

ENV Variables for short performance testing

This is on top of the ability of specifying these variables inside the plan. Anything which you can specify in the plan you should be able to override with ENV Variables.

The Corcel logo does not display completely

When running corcel with a single request the full logo is not displayed just the first segment. Further investigation needs to be done to check whether the other progress bars update.

                     ,▄▄▄▄,
╔═══════════════════════════════════════════════════════════════════╗
║                           Summary                                 ║
╠═══════════════════════════════════════════════════════════════════╣
║         Running Time: 3.212699ms                                  ║
║           Throughput: 7649 req/s                                  ║
║       Total Requests: 1                                           ║
║     Number of Errors: 0                                           ║
║         Availability: 100.0000%                                   ║
║           Bytes Sent: 96 B                                        ║
║       Bytes Received: 200 B                                       ║
║   Mean Response Time: 1.0000 ms                                   ║
║    Min Response Time: 1.0000 ms                                   ║
║    Max Response Time: 1.0000 ms                                   ║
╚═══════════════════════════════════════════════════════════════════╝

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.