mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 04:10:24 +00:00

Small tweak to the autobahn test file, we look for the python2 executable now. It'll make my life easier.
76 lines
2.2 KiB
Python
Executable file
76 lines
2.2 KiB
Python
Executable file
#!/usr/bin/env python2
|
|
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()
|