79 lines
2.3 KiB
Python
79 lines
2.3 KiB
Python
import sys
|
|
import os
|
|
import signal
|
|
import subprocess
|
|
import time
|
|
import twill
|
|
import urllib2
|
|
|
|
AUTHENTIC_SRCDIR = '/usr/local/src/authentic'
|
|
AUTHENTICCTL = '/usr/sbin/authenticctl.py'
|
|
AUTHENTIC_DATA_DIR = '/usr/share/authentic/'
|
|
LCSCTL = '/usr/sbin/lcsctl.py'
|
|
LCS_DATADIR = '/usr/share/lcs/'
|
|
|
|
try:
|
|
from config import *
|
|
except ImportError:
|
|
pass
|
|
|
|
pids = []
|
|
|
|
def waitforport(port, start):
|
|
while True:
|
|
if time.time() - start > 90:
|
|
raise Exception('Servers did not start in 90 seconds!!')
|
|
time.sleep(5)
|
|
try:
|
|
urllib2.urlopen('http://localhost:%s' % port)
|
|
except urllib2.URLError:
|
|
continue
|
|
else:
|
|
break
|
|
|
|
def setup():
|
|
if not os.path.exists(AUTHENTIC_SRCDIR):
|
|
print >> sys.stderr, 'Authentic source dir (%s) does not exist' % AUTHENTIC_SRCDIR
|
|
print >> sys.stderr, 'Create it or edit tests/config.py to match your local installation'
|
|
sys.exit(1)
|
|
|
|
twill.commands.reset_browser()
|
|
twill.set_output(file('/dev/null', 'w'))
|
|
base = []
|
|
if os.path.exists('/usr/bin/valgrind'):
|
|
base = ['./valgrind-wrapper.sh', 'python']
|
|
|
|
os.environ['PYTHONPATH'] = '../../bindings/python:../../bindings/python/.libs'
|
|
os.mkdir('/tmp/.tests')
|
|
authentic_command = base + [AUTHENTICCTL, 'start',
|
|
'--app-dir', '/tmp/.tests/authentictests',
|
|
'--data-dir', AUTHENTIC_DATADIR,
|
|
'--extra', os.path.join(AUTHENTIC_SRCDIR, 'extra', 'conformance'),
|
|
'--port', '10001', '--http', '--silent']
|
|
print authentic_command
|
|
sp = subprocess.Popen(authentic_command)
|
|
pids.append(sp.pid)
|
|
lcs_command = base + [LCSCTL, 'start',
|
|
'--app-dir', '/tmp/.tests/lcstests',
|
|
'--data-dir', LCS_DATADIR,
|
|
'--port', '10002', '--http', '--silent']
|
|
print lcs_command
|
|
sp = subprocess.Popen(lcs_command)
|
|
pids.append(sp.pid)
|
|
|
|
# Wait for the daemons to load themselves
|
|
starttime = time.time()
|
|
waitforport(10001, starttime)
|
|
waitforport(10002, starttime)
|
|
|
|
|
|
def teardown():
|
|
for pid in pids:
|
|
try:
|
|
# valgrind seems to prefer SIGINT to SIGTERM
|
|
os.kill(pid, signal.SIGINT)
|
|
except OSError:
|
|
print >> sys.stderr, 'failed to kill pid %s' % pid
|
|
os.system('rm -rf /tmp/.tests/')
|
|
|