aboutsummaryrefslogtreecommitdiffstats
path: root/test/autobahn_SUITE_data/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/autobahn_SUITE_data/test.py')
-rwxr-xr-xtest/autobahn_SUITE_data/test.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/test/autobahn_SUITE_data/test.py b/test/autobahn_SUITE_data/test.py
new file mode 100755
index 0000000..422cb41
--- /dev/null
+++ b/test/autobahn_SUITE_data/test.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+import os
+import os.path
+import sys
+import subprocess
+
+
+AB_TESTS_ENV = os.getenv("AB_TESTS_ENV")
+AB_TESTS_PRIV = os.getenv("AB_TESTS_PRIV")
+
+VIRTUALENV_URL = 'https://raw.github.com/pypa/virtualenv/master/virtualenv.py'
+VIRTUALENV_BIN = os.path.join(AB_TESTS_ENV, "virtualenv.py")
+PIP_BIN = os.path.join(AB_TESTS_ENV, "bin", "pip")
+
+
+def activate_env(env):
+ """
+ See 'Using Virtualenv without bin/python' at http://www.virtualenv.org
+ """
+ activate_this = os.path.join(env, 'bin', 'activate_this.py')
+ exec(compile(open(activate_this).read(), activate_this, 'exec'),
+ dict(__file__=activate_this))
+
+def install_env(env):
+ """
+ Install a new virtualenv at a path and also install the Autobahn package.
+ """
+ os.makedirs(env) if not os.path.isdir(env) else None
+ subprocess.check_call(["curl", "-sS", VIRTUALENV_URL, "-o", VIRTUALENV_BIN])
+ subprocess.check_call(["python", VIRTUALENV_BIN, env])
+ activate_env(env)
+ subprocess.check_call([PIP_BIN, "install", "Autobahn"])
+
+def client_config():
+ """
+ See comment on SUPPORTED_SPEC_VERSIONS in Autobahn/.../websocket.py
+ """
+ base = {
+ 'options': {'failByDrop': False},
+ 'enable-ssl': False,
+ 'servers': [{
+ 'agent': 'Cowboy/10',
+ 'url': 'ws://localhost:33080/echo',
+ 'options': {'version': 10}}, # hybi-10
+ {'agent': 'Cowboy/18',
+ 'url': 'ws://localhost:33080/echo',
+ 'options': {'version': 18}} # RFC6455
+ ],
+ 'cases': ['*'],
+ 'exclude-cases': [] }
+ return base
+
+def run_test(env, config):
+ activate_env(env)
+ from twisted.python import log
+ from twisted.internet import reactor
+ from autobahn.fuzzing import FuzzingClientFactory
+ os.chdir(AB_TESTS_PRIV)
+ log.startLogging(sys.stdout)
+ fuzzer = FuzzingClientFactory(config)
+ return reactor.run()
+
+
+def main():
+ cmd = sys.argv[1]
+ if cmd == 'setup':
+ install_env(AB_TESTS_ENV)
+ print('AB-TESTS-SETUP-OK')
+ elif cmd == 'test':
+ run_test(AB_TESTS_ENV, client_config())
+ print('AB-TESTS-TEST-OK')
+ else:
+ return 1
+
+if __name__ == '__main__':
+ main()