xref: /aosp_15_r20/external/libwebsockets/scripts/autobahn-test-server.sh (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
1*1c60b9acSAndroid Build Coastguard Worker#!/bin/bash
2*1c60b9acSAndroid Build Coastguard Worker#
3*1c60b9acSAndroid Build Coastguard Worker# Requires pip install autobahntestsuite
4*1c60b9acSAndroid Build Coastguard Worker#
5*1c60b9acSAndroid Build Coastguard Worker# you should run this from ./build, after building with
6*1c60b9acSAndroid Build Coastguard Worker# cmake .. -DLWS_WITH_MINIMAL_EXAMPLES=1
7*1c60b9acSAndroid Build Coastguard Worker#
8*1c60b9acSAndroid Build Coastguard Worker# It will use the minimal echo client and server to run
9*1c60b9acSAndroid Build Coastguard Worker# autobahn ws tests as both client and server.
10*1c60b9acSAndroid Build Coastguard Worker
11*1c60b9acSAndroid Build Coastguard Workerset -u
12*1c60b9acSAndroid Build Coastguard Worker
13*1c60b9acSAndroid Build Coastguard WorkerPARALLEL=2
14*1c60b9acSAndroid Build Coastguard WorkerN=1
15*1c60b9acSAndroid Build Coastguard WorkerOS=`uname`
16*1c60b9acSAndroid Build Coastguard Worker
17*1c60b9acSAndroid Build Coastguard WorkerCLIE=bin/lws-minimal-ws-client-echo
18*1c60b9acSAndroid Build Coastguard WorkerSERV=bin/lws-minimal-ws-server-echo
19*1c60b9acSAndroid Build Coastguard Worker
20*1c60b9acSAndroid Build Coastguard WorkerRESULT=0
21*1c60b9acSAndroid Build Coastguard Worker
22*1c60b9acSAndroid Build Coastguard Workerwhich wstest 2>/dev/null
23*1c60b9acSAndroid Build Coastguard Workerif [ $? -ne 0 ]; then
24*1c60b9acSAndroid Build Coastguard Worker	echo "wstest is not installed"
25*1c60b9acSAndroid Build Coastguard Worker	exit 8
26*1c60b9acSAndroid Build Coastguard Workerfi
27*1c60b9acSAndroid Build Coastguard Worker
28*1c60b9acSAndroid Build Coastguard Workerkillall wstest 2>/dev/null
29*1c60b9acSAndroid Build Coastguard Worker
30*1c60b9acSAndroid Build Coastguard Worker#
31*1c60b9acSAndroid Build Coastguard Worker# 2.10 / 2.11:      There is no requirement to handle multiple PING / PONG
32*1c60b9acSAndroid Build Coastguard Worker#                   in flight on a single connection in RFC6455.  lws doesn't
33*1c60b9acSAndroid Build Coastguard Worker#		    waste memory on supporting it since it is useless.
34*1c60b9acSAndroid Build Coastguard Worker
35*1c60b9acSAndroid Build Coastguard Workercat << EOF >fuzzingclient.json
36*1c60b9acSAndroid Build Coastguard Worker{ 
37*1c60b9acSAndroid Build Coastguard Worker   "outdir": "./reports/servers",
38*1c60b9acSAndroid Build Coastguard Worker   "servers": [
39*1c60b9acSAndroid Build Coastguard Worker      {
40*1c60b9acSAndroid Build Coastguard Worker         "url": "ws://127.0.0.1:9001"
41*1c60b9acSAndroid Build Coastguard Worker      }
42*1c60b9acSAndroid Build Coastguard Worker   ],
43*1c60b9acSAndroid Build Coastguard Worker   "cases": [ "*" ],
44*1c60b9acSAndroid Build Coastguard Worker   "exclude-cases": ["2.10", "2.11" ],
45*1c60b9acSAndroid Build Coastguard Worker   "exclude-agent-cases": {}
46*1c60b9acSAndroid Build Coastguard Worker}
47*1c60b9acSAndroid Build Coastguard WorkerEOF
48*1c60b9acSAndroid Build Coastguard Worker
49*1c60b9acSAndroid Build Coastguard Workerecho
50*1c60b9acSAndroid Build Coastguard Workerecho "----------------------------------------------"
51*1c60b9acSAndroid Build Coastguard Workerecho "-------   tests: autobahn as server"
52*1c60b9acSAndroid Build Coastguard Workerecho
53*1c60b9acSAndroid Build Coastguard Worker
54*1c60b9acSAndroid Build Coastguard Worker$SERV -p 9001 -d3 &
55*1c60b9acSAndroid Build Coastguard Workerwstest -m fuzzingclient
56*1c60b9acSAndroid Build Coastguard WorkerR=$?
57*1c60b9acSAndroid Build Coastguard Workerecho "Autobahn client exit $R"
58*1c60b9acSAndroid Build Coastguard Worker
59*1c60b9acSAndroid Build Coastguard Workerkillall lws-minimal-ws-server-echo
60*1c60b9acSAndroid Build Coastguard Workersleep 1s
61*1c60b9acSAndroid Build Coastguard Worker
62*1c60b9acSAndroid Build Coastguard Worker# repeat the client results
63*1c60b9acSAndroid Build Coastguard Worker
64*1c60b9acSAndroid Build Coastguard WorkerR=`cat /tmp/ji | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | wc -l`
65*1c60b9acSAndroid Build Coastguard Workerecho -n "AUTOBAHN SERVER / LWS CLIENT: Total tests: " `cat /tmp/ji | wc -l` " : "
66*1c60b9acSAndroid Build Coastguard Workerif [ "$R" == "0" ] ;then
67*1c60b9acSAndroid Build Coastguard Worker	echo "All pass"
68*1c60b9acSAndroid Build Coastguard Workerelse
69*1c60b9acSAndroid Build Coastguard Worker	RESULT=1
70*1c60b9acSAndroid Build Coastguard Worker	echo -n "$R FAIL : "
71*1c60b9acSAndroid Build Coastguard Worker	cat /tmp/ji | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | cut -d\" -f2 | tr '\n' ','
72*1c60b9acSAndroid Build Coastguard Worker	echo
73*1c60b9acSAndroid Build Coastguard Workerfi
74*1c60b9acSAndroid Build Coastguard Worker
75*1c60b9acSAndroid Build Coastguard Worker# and then the server results
76*1c60b9acSAndroid Build Coastguard Worker
77*1c60b9acSAndroid Build Coastguard Workercat reports/servers/index.json | tr '\n' '!' | sed "s|\},\!|\n|g" | tr '!' ' ' | tr -s ' ' > /tmp/jis
78*1c60b9acSAndroid Build Coastguard WorkerR=`cat /tmp/jis | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | wc -l`
79*1c60b9acSAndroid Build Coastguard Worker
80*1c60b9acSAndroid Build Coastguard Workerecho -n "AUTOBAHN CLIENT / LWS SERVER: Total tests: " `cat /tmp/jis | wc -l` " : "
81*1c60b9acSAndroid Build Coastguard Workerif [ "$R" == "0" ] ;then
82*1c60b9acSAndroid Build Coastguard Worker	echo "All pass"
83*1c60b9acSAndroid Build Coastguard Workerelse
84*1c60b9acSAndroid Build Coastguard Worker	RESULT=$(( $RESULT + 2 ))
85*1c60b9acSAndroid Build Coastguard Worker	echo -n "$R FAIL : "
86*1c60b9acSAndroid Build Coastguard Worker	cat /tmp/jis | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | cut -d\" -f2 | tr '\n' ','
87*1c60b9acSAndroid Build Coastguard Worker	echo
88*1c60b9acSAndroid Build Coastguard Workerfi
89*1c60b9acSAndroid Build Coastguard Worker
90*1c60b9acSAndroid Build Coastguard Workerecho $RESULT
91*1c60b9acSAndroid Build Coastguard Workerexit $RESULT
92*1c60b9acSAndroid Build Coastguard Worker
93