| #!/bin/bash |
| # |
| # Requires pip install autobahntestsuite |
| # |
| # you should run this from ./build, after building with |
| # cmake .. -DLWS_WITH_MINIMAL_EXAMPLES=1 |
| # |
| # It will use the minimal echo client and server to run |
| # autobahn ws tests as both client and server. |
| |
| set -u |
| |
| PARALLEL=2 |
| N=1 |
| OS=`uname` |
| |
| CLIE=bin/lws-minimal-ws-client-echo |
| SERV=bin/lws-minimal-ws-server-echo |
| |
| RESULT=0 |
| |
| which wstest 2>/dev/null |
| if [ $? -ne 0 ]; then |
| echo "wstest is not installed" |
| exit 8 |
| fi |
| |
| killall wstest 2>/dev/null |
| |
| # |
| # 2.10 / 2.11: There is no requirement to handle multiple PING / PONG |
| # in flight on a single connection in RFC6455. lws doesn't |
| # waste memory on supporting it since it is useless. |
| |
| cat << EOF >fuzzingclient.json |
| { |
| "outdir": "./reports/servers", |
| "servers": [ |
| { |
| "url": "ws://127.0.0.1:9001" |
| } |
| ], |
| "cases": [ "*" ], |
| "exclude-cases": ["2.10", "2.11" ], |
| "exclude-agent-cases": {} |
| } |
| EOF |
| |
| echo |
| echo "----------------------------------------------" |
| echo "------- tests: autobahn as server" |
| echo |
| |
| $SERV -p 9001 -d3 & |
| wstest -m fuzzingclient |
| R=$? |
| echo "Autobahn client exit $R" |
| |
| killall lws-minimal-ws-server-echo |
| sleep 1s |
| |
| # repeat the client results |
| |
| R=`cat /tmp/ji | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | wc -l` |
| echo -n "AUTOBAHN SERVER / LWS CLIENT: Total tests: " `cat /tmp/ji | wc -l` " : " |
| if [ "$R" == "0" ] ;then |
| echo "All pass" |
| else |
| RESULT=1 |
| echo -n "$R FAIL : " |
| cat /tmp/ji | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | cut -d\" -f2 | tr '\n' ',' |
| echo |
| fi |
| |
| # and then the server results |
| |
| cat reports/servers/index.json | tr '\n' '!' | sed "s|\},\!|\n|g" | tr '!' ' ' | tr -s ' ' > /tmp/jis |
| R=`cat /tmp/jis | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | wc -l` |
| |
| echo -n "AUTOBAHN CLIENT / LWS SERVER: Total tests: " `cat /tmp/jis | wc -l` " : " |
| if [ "$R" == "0" ] ;then |
| echo "All pass" |
| else |
| RESULT=$(( $RESULT + 2 )) |
| echo -n "$R FAIL : " |
| cat /tmp/jis | grep -v '"behavior": "OK"' | grep -v '"behavior": "NON-STRICT"' | grep -v '"behavior": "INFORMATIONAL"' | cut -d\" -f2 | tr '\n' ',' |
| echo |
| fi |
| |
| echo $RESULT |
| exit $RESULT |
| |