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