[spice-server,23/23] ci: Add test for websockets

Submitted by Frediano Ziglio on June 25, 2019, 4:11 p.m.

Details

Message ID 20190625161147.25211-24-fziglio@redhat.com
State Accepted
Commit a68fd56b418aa891242c589bee7fcac172ba28fe
Headers show
Series "WebSocket support" ( rev: 1 ) in Spice

Not browsing as part of any series.

Commit Message

Frediano Ziglio June 25, 2019, 4:11 p.m.
---
 .gitlab-ci.yml                     | 20 ++++++++++++++++++++
 server/tests/autobahn-check-report | 18 ++++++++++++++++++
 server/tests/fuzzingclient.json    | 11 +++++++++++
 3 files changed, 49 insertions(+)
 create mode 100755 server/tests/autobahn-check-report
 create mode 100644 server/tests/fuzzingclient.json

Patch hide | download patch | download mbox

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6e5204af7..b303d4656 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -136,3 +136,23 @@  makecheck-windows:
   - mingw64-configure --disable-celt051
   - mingw64-make
   - mingw64-make LOG_COMPILE=wine -C server check || (cat server/tests/test-suite.log && exit 1)
+
+websocket-autobahn:
+  before_script:
+  - apt-get update || true
+  - apt-get install -y python-six python-pyparsing libopus-dev libssl-dev libglib2.0-dev
+  - git clone ${CI_REPOSITORY_URL/spice.git/spice-protocol.git}
+  - (cd spice-protocol && ./autogen.sh --prefix=/usr && make install)
+  image: crossbario/autobahn-testsuite
+  script:
+  - ./autogen.sh
+  - make -j4
+  - ./server/tests/test-websocket & pid=$!
+  - wstest -m fuzzingclient -s server/tests/fuzzingclient.json
+  - kill $pid
+  - server/tests/autobahn-check-report reports/servers/index.json
+  - rm -rf reports/servers
+  - ./server/tests/test-websocket -n & pid=$!
+  - wstest -m fuzzingclient -s server/tests/fuzzingclient.json
+  - kill $pid
+  - server/tests/autobahn-check-report reports/servers/index.json
diff --git a/server/tests/autobahn-check-report b/server/tests/autobahn-check-report
new file mode 100755
index 000000000..9e29128c7
--- /dev/null
+++ b/server/tests/autobahn-check-report
@@ -0,0 +1,18 @@ 
+#!/usr/bin/env python
+import sys
+import json
+
+num_tests = 0
+for server in json.load(open(sys.argv[1])).values():
+  for test, result in server.items():
+    is_test = 0
+    for k, v in result.items():
+      if k[:8].lower() != 'behavior':
+        continue
+      is_test = 1
+      if v != 'OK' and v != 'INFORMATIONAL':
+        raise Exception('Invalid %s %s for test %s' % (k, v, test))
+    num_tests += is_test
+if num_tests < 100:
+  raise Exception('Too few tests done %s' % num_tests)
+print('Output report is fine')
diff --git a/server/tests/fuzzingclient.json b/server/tests/fuzzingclient.json
new file mode 100644
index 000000000..8bc1b718d
--- /dev/null
+++ b/server/tests/fuzzingclient.json
@@ -0,0 +1,11 @@ 
+{
+   "outdir": "./reports/servers",
+   "servers": [
+      {
+         "url": "ws://127.0.0.1:7777"
+      }
+   ],
+   "cases": ["*"],
+   "exclude-cases": ["6.*","12.*","13.*"],
+   "exclude-agent-cases": {}
+}