Created
April 6, 2012 12:25
-
-
Save PolCPP/2319307 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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", "autobahntestsuite"]) | |
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 autobahntestsuite.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() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment