Loadmill
Users of Loadmill can use this node module to:
- Run load tests on loadmill.com.
- Run functional tests on loadmill.com.
- Do both programmatically or via CLI.
Installation
Using npm:
npm install loadmill --save
Using yarn:
yarn add loadmill
Usage
The following code runs a very simple load test that gets a single page from www.myapp.com
every second for one minute:
const loadmill = require('loadmill')({token: process.env.LOADMILL_API_TOKEN});
loadmill.run({requests: [{url: "www.myapp.com"}]}, (err, id) => {
if (!err) {
console.log("Load test started: " + id);
}
});
Test Configuration
The JSON test configuration may be exported from the loadmill test editor or from an old test run.
Read more about the configuration format here.
Using Promises
Every function that accepts a callback will return a promise instead if no callback is provided (and vice versa):
loadmill.run("./load-tests/simple.json")
.then(id => console.log("Load test started: ", id))
.catch(err => console.error("Something bad: ", err));
Waiting for Tests
Since load tests usually run for at least a few minutes, the loadmill client does not wait for them to finish by default.
You can explicitly wait for a test to finish using the wait
function:
loadmill.run("./load-tests/long_test.json")
.then(loadmill.wait)
.then(result => console.log(result));
Functional Tests
You may also use a test configuration to run a functional test (i.e. a single iteration of requests) - this is usually useful for testing your API for regressions after every new deployment.
Functional tests are expected to be shorter and thus are awaited on by default:
loadmill.runFunctional("./load-tests/api_test.json")
.then(result => console.log(result));
Parameters
You will usually want some part of your test to be dynamic, e.g. the host name of the tested server.
With Loadmill, this is made easy by using parameters.
You may set/override parameter defaults for a test by passing a hash mapping parameter names to values:
loadmill.run("./load-tests/parametrized_test.json", {host: "test.myapp.com", port: 4443}, (err, id) => {});
loadmill.runFunctional("./load-tests/parametrized_test.json", {host: "test.${parentDomain}"});
CLI
Coming Soon...