Add a script for stressing the daemon
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 6 Apr 2017 12:47:53 +0000 (14:47 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 6 Apr 2017 14:26:13 +0000 (16:26 +0200)
Change-Id: Ic8c5241339106376daaf91acafca1e4fb0f5f818
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
stress.sh [new file with mode: 0755]

diff --git a/stress.sh b/stress.sh
new file mode 100755 (executable)
index 0000000..f4a78bb
--- /dev/null
+++ b/stress.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+ROOT=$(dirname $0)
+
+AFB=$ROOT/build/src/afb-daemon
+CLI=$ROOT/build/src/afb-client-demo
+HELLO=$ROOT/build/bindings/samples/helloWorld.so
+PORT=12345
+TEST=$ROOT/test
+TOKEN=knock-knock-knoc
+OUT=$ROOT/stress-out
+
+rm $OUT*
+
+echo -n launch afb...
+$AFB --session-max=100 --port=$PORT --rootdir=$ROOT --roothttp=$TEST --tracereq=all --token=$TOKEN --ldpaths=/tmp --binding=$HELLO --verbose --verbose --verbose > $OUT.0 2>&1 &
+afbpid=$!
+strace -tt -f -o $OUT-strace.0 -p $afbpid &
+echo done
+
+sleep 3
+
+CMDS='
+hello ping true
+HELLO PING false
+hello pIngNull true
+hello PingBug true
+hello PiNgJsOn {"well":"formed","json":[1,2,3,4.5,true,false,null,"oups"]}
+hello subcall {"api":"hello","verb":"pingjson","args":[{"key1":"value1"}]}
+hello subcall {"api":"hello","verb":"subcall","args":{"api":"hello","verb":"pingjson","args":[{"key1":"value1"}]}}
+hello subcallsync {"api":"hello","verb":"pingjson","args":[{"key1":"value1"}]}
+hello subcallsync {"api":"hello","verb":"subcall","args":{"api":"hello","verb":"pingjson","args":[{"key1":"value1"}]}}
+hello subcall {"api":"hello","verb":"subcallsync","args":{"api":"hello","verb":"pingjson","args":[{"key1":"value1"}]}}
+hello subcallsync {"api":"hello","verb":"subcallsync","args":{"api":"hello","verb":"pingjson","args":[{"key1":"value1"}]}}
+hello eventadd {"tag":"ev1","name":"event-A"}
+hello eventadd {"tag":"ev2","name":"event-B"}
+hello eventpush {"tag":"ev1","data":[1,2,"hello"]}
+hello eventpush {"tag":"ev2","data":{"item":0}}
+hello eventsub {"tag":"ev2"}
+hello eventpush {"tag":"ev1","data":[1,2,"hello"]}
+hello eventpush {"tag":"ev2","data":{"item":0}}
+hello eventsub {"tag":"ev1"}
+hello subcall {"api":"hello","verb":"eventpush","args":{"tag":"ev1","data":[1,2,"hello"]}}
+hello subcall {"api":"hello","verb":"eventpush","args":{"tag":"ev2","data":{"item":0}}}
+hello subcallsync {"api":"hello","verb":"eventpush","args":{"tag":"ev1","data":[1,2,"hello"]}}
+hello subcallsync {"api":"hello","verb":"eventpush","args":{"tag":"ev2","data":{"item":0}}}
+hello eventunsub {"tag":"ev2"}
+hello eventpush {"tag":"ev1","data":[1,2,"hello"]}
+hello eventpush {"tag":"ev2","data":{"item":0}}
+hello eventdel {"tag":"ev1"}
+hello eventpush {"tag":"ev1","data":[1,2,"hello"]}
+hello eventpush {"tag":"ev2","data":{"item":0}}
+'
+
+r() {
+       while :; do echo "$CMDS"; done | while read x; do echo $x; sleep 0.005; done | strace -tt -f -o $OUT-strace.$1 $CLI "localhost:$PORT/api?token=$TOKEN" > $OUT.$1 2>&1 &
+}
+
+echo -n launch clients...
+r 1
+r 2
+r 3
+r 4
+r 5
+r 7
+r 8
+r 9
+r a
+r b
+r c
+echo done
+
+sleep 3
+
+kill $afbpid
+