Add urlgen.

pull/1435/head
Ben Johnson 2015-01-29 00:46:49 -05:00
parent 8ae192d04c
commit 03134ec83e
3 changed files with 93 additions and 0 deletions

1
tests/siege/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
urls.txt

33
tests/siege/README.md Normal file
View File

@ -0,0 +1,33 @@
Siege
=====
Siege is an HTTP benchmarking tool and can be used against InfluxDB easily.
If you're on Mac you can install `siege` using `brew`. If you're on Linux
you can install using your package manager.
## Running
To run siege, first start one or more InfluxDB nodes. At least one of those
nodes should run on the default port of `8086`.
Next, choose a URL file to run. The URL files are named based on their series
cardinality. For example, `series.10.txt` has 10 unique series.
Now you can execute siege. There are several arguments available but only
a few that we're concerned with:
```
-c NUM the number of concurrent connections.
-d NUM delay between each request, in seconds.
-b benchmark mode. runs with a delay of 0.
-t DUR duration of the benchmark. value should end in 's', 'm', or 'h'.
-f FILE the path to the URL file.
```
These can be combined to simulate different load. For example, this command
will execute writes against 10 unique series using 100 concurrent connections:
```sh
$ siege -c 100 -f series.10.txt
```

59
tests/siege/urlgen Executable file
View File

@ -0,0 +1,59 @@
#!/bin/sh -e
# Calculate start time as unix timestamp.
TIME=`date -j -f "%b %d %T %Z %Y" "Jan 01 00:00:00 EDT 2000" "+%s"`
# Set defaults.
INTERVAL=10
NUMSERIES=1
NUMPOINTS=100
# Parse arguments
while getopts "s:p:i:h" opt; do
case $opt in
i)
INTERVAL=$OPTARG
;;
s)
NUMSERIES=$OPTARG
;;
p)
NUMPOINTS=$OPTARG
;;
h)
echo "urlgen is a utility for generating URL files for siege."
echo ""
echo "Usage:"
echo " urlgen.sh [OPTIONS]"
echo ""
echo "The following arguments can be specified:"
echo ""
echo " -i seconds"
echo " Interval between generated points per series."
echo ""
echo " -s num"
echo " Number of unique series to generate."
echo ""
echo " -p num"
echo " Number of points per series to generate."
echo ""
exit 1
;;
esac
done
# Generate a new value every interval per series.
for i in `seq 1 $NUMPOINTS`;
do
# Move forward the current time.
let TIME=TIME+INTERVAL
TIMESTAMP=`date -j -f "%s" $TIME +"%Y-%m-%dT%H:%M:%SZ"`
# Generate a URL for each series.
for series in `seq 1 $NUMSERIES`;
do
echo 'http://localhost:8086/write POST {"database" : "db", "retentionPolicy" : "raw", "points": [{"name": "cpu", "tags": {"host": "server'$series'"}, "timestamp": "'$TIMESTAMP'","values": {"value": 100}}]}'
done
done