1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/bin/bash
ROOT=$(dirname $0)
echo ROOT=$ROOT
AFB=$ROOT/build/src/afb-daemon
CLI="$ROOT/build/src/afb-client-demo -e -s"
PORT=12345
TOKEN=knock-knock-knock
count=10
null=false
eval set -- $(getopt -o c:n -l count:,null -- "$@") || exit
while true
do
case "$1" in
-c|--count)
if ! test "$2" -gt 0 2>/dev/null; then
echo "error: $2 is not a valid count" >&2
exit 1
fi
count="$2"
shift 2
;;
-n|--null)
null=true
shift
;;
--)
shift
break
;;
esac
done
OUT="$ROOT/stress-out-clients"
echo rm $OUT.*
rm $OUT.* 2> /dev/null
if $null; then
OUT=/dev/null
else
OUT="$OUT.%03d"
fi
commands() {
cat << EOC
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}}
hello eventdel {"tag":"ev2"}
EOC
}
r() {
while :; do commands; done |
$CLI "localhost:$PORT/api?token=$TOKEN" > "$1" 2>&1 &
}
echo launch clients...
i=1
while test $i -le $count; do
echo " + launch clients $i"
r $(printf "$OUT" $i)
i=$(expr $i + 1)
done
echo done
wait
|