testcaches
The testcaches
tool simulates multiple ATS caches' _astats
endpoints.
Its primary goal is for testing the Monitor under load, but it may be useful for testing other components.
A list of parameters can be seen by running ./testcaches -h
. There are only three: the first port to use, the number
of ports to use, and the number of remaps (delivery services) to serve in each fake server.
Each port is a unique fake server, with distinct incrementing stats.
When run with no parameters, it defaults to ports 40000-40999 and 1000 remaps.
Stats are served at the regular ATS stats_over_http
endpoint, _astats
. For example, if it's serving on port 40000,
it can be reached via curl http://localhost:40000/_astats
. It also respects the ?application=system
query parameter,
and will serve only system stats (the Monitor "health check" [as opposed to the "stat check"]). For
example, curl http://localhost:40000/_astats?application=system
.
Commands
The testcaches
app accepts a number of commands, which manipulate the data it serves. These command are all available
via HTTP requests.
Each HTTP request is made to a fake cache at a specific port. Thus, you can modify data served by each fake cache
independently.
The commands are:
/cmd/setstat
Sets how much a stat increments by every interval (currently, an interval is hard-coded to 1 second). Accepts a min and
max, and will increment by a random number between them. The min may equal the max, if a constant increment is desired.
Query Parameters:
remap
- the remap rule to set
stat
- the stat to set
min
- the minimum number to increment by
max
- the minimum to increment by
Example:
curl -Lvsk http://localhost:4242/cmd/setstat?remap=num1.example.net&stat=out_bytes&min=10&max=25
setsystem
Sets system stats to constant values. Multiple stats may be set with a single request.
Query Parameters:
loadavg1m
- the 1m loadavg in the system
object.
loadavg5m
- the 5m loadavg in the system
object.
loadavg10m
- the 10m loadavg in the system
object.
speed
- the network interface speed in the system
object. This number is in kilobits. I.e. 20000 means 20Gbps.
Example:
curl -sk 'http://localhost:4242/cmd/setsystem?loadavg1m=10.1&loadavg5m=27.92&loadavg10m=3.4&speed=20000'
setdelay
Sets the delay for serving all _astats requests to this fake cache. Accepts a minimum and maximum, which may be qual,
and delays the request by a random interval between them. When a delay is set, the server immediately accepts client
requests, reads headers and sets up the connection, and then delays writing out the body.
Query Parameters:
min
- the minimum delay time, in milliseconds
max
- the maximum delay time, in milliseconds
Example:
curl -Lvsk 'http://localhost:4242/cmd/setdelay?min=200&max=600'
Docker
Build environment variables: none
Run environment variables:
NUM_PORTS
- app numPorts
argument
NUM_REMAPS
- app numRemaps
argument
PORT_START
- app portStart
argument