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