I was troubleshooting a capacity issue with one of the web application and wanted to reproduce why some calls were failing. Usually I turn to Jmeter but today I decided to use something quick and fast and found this nifty nodejs called Artillery. Just configure what you wanted to do in a yml file and run the test. You will get report of the http responses and various other stats.
I found it very useful to make a quick number of requests along with request chaining and authentication. Here is what I did.
To install
yarn add global artillery
Now create a yml file as below
config:
  target: 'https://api.edge.service'
  phases:
   - duration: 30
     arrivalRate: 1
scenarios:
 - flow:
   - log: "Getting token"
   - post:
      url: "/token"
      json:
       username: 'xxxxxx'
       password: 'xxxxxxxx'
       grant_type: 'password'
      capture:
       json: "$.access_token"
       as: access_token
      expect:
        - statusCode: 200
   - get:
      headers:
        Authorization: 'Bearer {{ access_token }}'
      url: "/apis/users/v1"
The above yml is self explanatory. But in brief, here is what it does, it has a base url of 'https://api.edge.service' and the test will run for 30 seconds with 1 user request being made every second. It will first make a token request and uses the 'access_token' field in the response json in the next request's 'Authorization' header.
So there you have it, a request which first gets an authentication token and then using that token to make another API call.
Run the test
#  With debug to see the requests made.
DEBUG=http artillery run load.yml
#  With debug to see the requests and responses made.
DEBUG=http:response artillery run load.yml
#  With debug to see the requests and responses made.
DEBUG=http:response artillery run load.yml
#Or just run in default mode
artillery run load-dev.yml
The Report
Summary report @ 17:20:54(-0400) 2020-05-13
  Scenarios launched:  1
  Scenarios completed: 1
  Requests completed:  2
  Mean response/sec: 1.35
  Response time (msec):
    min: 45.5
    max: 1126.6
    median: 586.1
    p95: 1126.6
    p99: 1126.6
  Scenario counts:
    0: 1 (100%)
  Codes:
    200: 2
The more I read the documentation of Artillery, the more I like it. It also has a PRO version which is paid and can be run from cloud. For me, I just use it my local to run some quick tests.
 

 
    
Top comments (2)
OK,
Probably it's a dumb question: how to run that pretty strange command line?
I am talking about this:
I have windows 10 and it fails on "DEBUG=http" with the reason:
DEBUG=http sets environment variable. In Windows you should do 'set DEBUG=http...'
Sorry for the very late response.