npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

load-runner

v1.0.3

Published

``` npm install ./bin/load-runner.js NOTE: To pass any commands onto the script being executed, finish with a -- followed by any arguments to the passed. You can also pass a placeholder `{runNum}` to pass in the current test run number.

Downloads

8

Readme

Usage

npm install
./bin/load-runner.js
NOTE: To pass any commands onto the script being executed, finish with a -- followed by any
arguments to the passed. You can also pass a placeholder `{runNum}` to pass in the current test run
number.

Options:
  -c, --concurrency  Concurrency of Users                                               [default: 1]
  -n, --numUsers     Number of Users (number of total runs)                             [default: 1]
  -r, --rampUp       Ramp up time to Concurrency of Users (in seconds)                  [default: 1]
  -b, --before       Library to execute before the start of tests
  -s, --script       Script to execute                                                    [required]
  --seed             Seed for random number generator (otherwise generated from current time)
                                                                                            [number]
  -f, --flows        Each flow will be selected with probability specified by percentages specified
                     with this parameter, you need to use this with LR_FLOW_NUM environment
                     variable, must not be set with --pattern                                [array]
  --pattern          Flow will be selected with repeated pattern specified by this parameter, you
                     need to use this with LR_FLOW_NUM environment variable, must not be set with -f
                     parameter                                                               [array]
  -o, --output       Whether or not to save logs, individual test script output and reports
                     Save destination will be:
                     runs/run_<script>_<timestamp>_<numUsers>_<concurrency>_<rampUp>/
                     e.g. runs/run_test.js_1329317523630_100_10_5/                [default: "false"]
  -p, --profile      Only usefull if "-o true".
                     Profile name, will be appended to output directory name:
                     e.g. runs/run_test.js_1329317523630_100_10_5-profilename/

For example:

./bin/load-runner.js -s ./scripts/dummy.js -c 5 -n 100 -r 10 -o

It is possible to send args to the script under test by adding -- after the load-runner args e.g.

./bin/load-runner.js -s ./scripts/dummy.js -c 5 -n 100 -r 10 -o -- -testarg1 testval1

Environment variables

There are some environment variables generated for the test script that can be useful. You can use Node.js process.env object to access them.

  • LR_FLOW_NUMBER - number generated each run, value depends on percentages specified by -f parameter, see Flow numbers
  • LR_TOTAL_RUNS - total number of runs, it's value of -n parameter
  • LR_RUN_NUMBER - current test run number
  • LR_RAND - randomly generated value for each run, float between 0 and 1, based on random generation with --seed parameter

Look at scripts/dummy_env_vars.js for example of using this.

Flow numbers

Flow number functionality can be used inside test script to determine which branch of script to be executed.

Random way

It can be specified by -f parameter and can be accessed by LR_FLOW_NUMBER environment variable in the script.

For example this executes 5 times flow 0, 3 times flow 1, 2 times flow 2 from total of 10 runs.

./bin/load-runner.js -s ./scripts/dummy_flow_numbers.js -n 10 -o -f 50 30 20 --seed 123 

Flow numbers are randomly shuffled, but it's possible to use --seed parameter for repeatable result.

Pattern

Flow numbers can be also specified by repeating pattern, you can use LR_FLOW_NUMBER to access that number in the script.

For example this repeats 0 0 0 1 1 2 pattern for the all 20 runs.

./bin/load-runner.js -s ./scripts/dummy_flow_numbers.js -n 20 -o -pattern 0 0 0 1 1 2 

Output

Specifying the --output or -o flag will open a browser pointed at http://localhost:8000 for live stats for the running test. After the test run is complete, various files are output to the runs/ directory

  • <test_no>-<status>-<duration>.json e.g. 01-ok-15336.json - A json version of a single tests results
  • <test_no>-<status>-<duration>.txt e.g. 01-ok-15336.txt - A single tests log
  • summary.json - A json summary of all test runs with durations of individual actions and statistics
  • info.txt - A high level log of all test runs
  • errors.txt - Optional log file showing all tests that have errors
  • verbose.txt - A verbose log of all test runs
  • results-<timestamp>.html e.g. results-2015-05-08T14:29:30.186Z.html - Copy of the final content served at http://localhost:8000 during the test run

For example:

ls -la runs/run_._scripts_test_happy.js_1431080790428_9_3_1/
total 536
drwxr-xr-x  16 admin  staff    544  8 May 15:54 .
drwxr-xr-x  13 admin  staff    442  8 May 15:46 ..
-rw-r--r--   1 admin  staff    393  8 May 11:26 1-ok-9592.json
-rw-r--r--   1 admin  staff    393  8 May 11:26 2-ok-8978.json
-rw-r--r--   1 admin  staff   2785  8 May 11:26 3-ok-9288.json
-rw-r--r--   1 admin  staff   2882  8 May 11:26 4-error-577.json
-rw-r--r--   1 admin  staff   2882  8 May 11:26 5-error-621.json
-rw-r--r--   1 admin  staff   2882  8 May 11:26 6-error-602.json
-rw-r--r--   1 admin  staff   2882  8 May 11:26 7-error-605.json
-rw-r--r--   1 admin  staff   2882  8 May 11:26 8-error-603.json
-rw-r--r--   1 admin  staff   2882  8 May 11:26 9-error-573.json
-rw-r--r--   1 admin  staff  17562  8 May 11:26 errors.txt
-rw-r--r--   1 admin  staff  43016  8 May 11:26 info.txt
-rw-r--r--   1 admin  staff  86949  8 May 11:26 results-2015-05-08T10:26:30.407Z.html
-rw-r--r--   1 admin  staff   2228  8 May 11:26 summary.json
-rw-r--r--   1 admin  staff  74045  8 May 11:26 verbose.txt

Writing a test

See scripts/dummy.js or scripts/test_happy.js for an example of writing a test

Running custom code before test-script starts

If you need to run same set of tasks before every load-testing run, consider adding them to the ./setup folder as a javascript module, and reference this module in ./setup/index.js.

You will be able to run this code automatically by specifying the -b parameter:

./bin/load-runner.js -b create_deploy_app -s ./scripts/test_app_api.js -c 10 -n 100 -r 1 -o  -- --projectName loadtest0 -u [email protected] -p Password1  -h testing.zeta.feedhenry.com -e test --endpoint hello -t 100

will run function specified in ./setup/create_deploy_app.js ad referenced in index.js. The runner will pass this function parsed parameters from commandline after the -- and expects the function to return a promise.

Requirements

Node version 4.4 and above.