guzzlerio / corcel Goto Github PK
View Code? Open in Web Editor NEWPerformance test tool
License: Mozilla Public License 2.0
Performance test tool
License: Mozilla Public License 2.0
Support the amqp:// scheme inside the Url File
Support the AmqpRequest inside the Plan File
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:
Use a tempting engine like moustache instead of manually replacing the tokens in the body
We need a set of tests that intentionally try to break Corcel. Be creative!
This ticket could spawn a few more.
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.
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
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.
We don't need the HTTP as the context of the headers is already HTTP
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.
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
Add the date to the downloads page on corcel.io
Need the ability to have a a JavaScript assertion
Depends #17
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".
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
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:
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 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 methods for dynamic population of the Registry:
ScanForActions
ScanForAssertions
ScanForProcessors
ScanForExtractors
ScanForContexts
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.
Allow for assertions in the AFTER plan run to assert on the performance statistics e.g. Average Throughput must be greater than 50 reqs/sec
Goal.
Simple UI with:
This will need a server component in order to communicate over HTTP.
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"
Migrate to http://goconvey.co for the testing instead of Ginkgo
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.
This still a problem?
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 ║
╚═══════════════════════════════════════════════════════════════════╝
Support the tcp://
scheme inside the Url File
Support the TcpRequest inside the Plan File
OR should we stay explicit and use --plan for a plan and --list for a list as they are two distinct ways of feeding corcel. I think I vote for the explicit route and go for --list .
Create a Global Error Handler - Ensure a default message is output.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.