diff options
author | Loïc Hoguin <[email protected]> | 2012-01-31 10:52:44 +0100 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2012-01-31 12:17:29 +0100 |
commit | 9823450cc31ecdcbf5d3ef3609695815f3d84782 (patch) | |
tree | 84a54e1d3400799b2dffe9a5214bde0883a04ffe /test/autobahn_SUITE_data | |
parent | 21802d2767e48924186d173eb36b61994e990b87 (diff) | |
parent | 88088251732e36f72e3edf806a5561b569e62c19 (diff) | |
download | cowboy-9823450cc31ecdcbf5d3ef3609695815f3d84782.tar.gz cowboy-9823450cc31ecdcbf5d3ef3609695815f3d84782.tar.bz2 cowboy-9823450cc31ecdcbf5d3ef3609695815f3d84782.zip |
Merge branch 'autobahn-suite' of https://github.com/klaar/cowboy
This needs python2 to be the default python in /usr/bin/python.
Diffstat (limited to 'test/autobahn_SUITE_data')
-rwxr-xr-x | test/autobahn_SUITE_data/test.py | 76 |
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() |