@cryptotaxi247 / netdata-1 / commits / 89fe0639a

stress test for netdata server

Costa Tsaousis (ktsaou) committed Dec 7, 2015 at 23:27 UTC 89fe0639a4050a31dbc263cb2eb590046a4383df
1 file changed +66
tests/stress.sh new
+66
@@ -0,0 +1,66 @@
1 +#!/bin/bash
2 +
3 +# set the host to connect to
4 +if [ ! -z "$1" ]
5 + then
6 + host="$1"
7 +else
8 + host="http://127.0.0.1:19999"
9 +fi
10 +echo "using netdata server at: $host"
11 +
12 +charts=($(curl "$host/netdata.conf" 2>/dev/null | grep "^\[" | cut -d '[' -f 2 | cut -d ']' -f 1 | grep -v ^global$ | grep -v "^plugin" | sort -u))
13 +if [ "${#charts[@]}" -eq 0 ]
14 + then
15 + echo "Cannot download charts from server: $host"
16 + exit 1
17 +fi
18 +
19 +update_every="$(curl "$host/netdata.conf" 2>/dev/null | grep "update every = " | head -n 1 | cut -d '=' -f 2)"
20 +[ $[ update_every + 1 - 1] -eq 0 ] && update_every=1
21 +
22 +entries="$(curl "$host/netdata.conf" 2>/dev/null | grep "history = " | head -n 1 | cut -d '=' -f 2)"
23 +[ $[ entries + 1 - 1] -eq 0 ] && entries=3600
24 +
25 +modes=("average" "max")
26 +formats=("jsonp" "json" "ssv" "csv" "datatable" "datasource" "tsv" "ssvcomma" "html" "array")
27 +options="flip|jsonwrap"
28 +
29 +now=$(date +%s)
30 +first=$[now - (entries * update_every)]
31 +duration=$[now - first]
32 +
33 +file="$(mktemp /tmp/netdata-stress-XXXXXXXX)"
34 +cleanup() {
35 + echo "cleanup"
36 + [ -f $file ] && rm $file
37 +}
38 +trap cleanup EXIT
39 +
40 +while [ 1 = 1 ]
41 +do
42 + echo "curl --compressed --keepalive-time 120 --header \"Connection: keep-alive\" \\" >$file
43 + for x in {1..100}
44 + do
45 + dt=$[RANDOM * duration / 32767]
46 + st=$[RANDOM * duration / 32767]
47 + et=$[ st + dt ]
48 + [ $et -gt $now ] && st=$[ now - dt ]
49 +
50 + points=$[RANDOM * 2000 / 32767 + 2]
51 + st=$[first + st]
52 + et=$[first + et]
53 +
54 + mode=$[RANDOM * ${#modes[@]} / 32767]
55 + mode="${modes[$mode]}"
56 +
57 + chart=$[RANDOM * ${#charts[@]} / 32767]
58 + chart="${charts[$chart]}"
59 +
60 + format=$[RANDOM * ${#formats[@]} / 32767]
61 + format="${formats[$format]}"
62 +
63 + echo "--url \"$host/api/v1/data?chart=$chart&mode=$mode&format=$format&options=$options&after=$st&before=$et&points=$points\" \\"
64 + done >>$file
65 + bash $file >/dev/null
66 +done