tests: Move logging into test_server.py for Casper.

This commit is contained in:
Steve Howell
2017-01-25 09:31:51 -08:00
committed by Tim Abbott
parent 6de1e8be46
commit 38f5f3a76e
2 changed files with 23 additions and 16 deletions

View File

@@ -68,11 +68,6 @@ subprocess.check_call(['mkdir', '-p', 'var/casper'])
subprocess.check_call(['rm', '-f'] + glob.glob('var/casper/casper-failure*.png'))
LOG_FILE = 'var/casper/server.log'
if os.path.exists(LOG_FILE) and os.path.getsize(LOG_FILE) < 100000:
log = open(LOG_FILE, 'a')
log.write('\n\n')
else:
log = open(LOG_FILE, 'w')
def run_tests(realms_have_subdomains, files, external_host):
# type: (bool, Iterable[str], str) -> None
@@ -98,7 +93,7 @@ def run_tests(realms_have_subdomains, files, external_host):
if options.remote_debug:
remote_debug = "--remote-debugger-port=7777 --remote-debugger-autorun=yes"
with test_server_running(options.force, external_host, log, dots=True):
with test_server_running(options.force, external_host, log_file=LOG_FILE, dots=True):
ret = 1
for test_file in test_files:
cmd = "node_modules/.bin/casperjs %s test --subdomains=%s %s" % (

View File

@@ -33,15 +33,18 @@ def set_up_django(external_host):
django.setup()
os.environ['PYTHONUNBUFFERED'] = 'y'
def assert_server_running(server):
# type: (subprocess.Popen) -> None
def assert_server_running(server, log_file):
# type: (subprocess.Popen, str) -> None
"""Get the exit code of the server, or None if it is still running."""
if server.poll() is not None:
raise RuntimeError('Server died unexpectedly!')
message = 'Server died unexpectedly!'
if log_file:
message += '\nSee %s\n' % (log_file,)
raise RuntimeError(message)
def server_is_up(server):
# type: (subprocess.Popen) -> bool
assert_server_running(server)
def server_is_up(server, log_file):
# type: (subprocess.Popen, str) -> bool
assert_server_running(server, log_file)
try:
# We could get a 501 error if the reverse proxy is up but the Django app isn't.
return requests.get('http://127.0.0.1:9981/accounts/home').status_code == 200
@@ -49,8 +52,17 @@ def server_is_up(server):
return False
@contextmanager
def test_server_running(force=False, external_host='testserver', log=sys.stdout, dots=False):
# type: (bool, str, Any, bool) -> Iterator[None]
def test_server_running(force=False, external_host='testserver', log_file=None, dots=False):
# type: (bool, str, str, bool) -> Iterator[None]
if log_file:
if os.path.exists(log_file) and os.path.getsize(log_file) < 100000:
log = open(log_file, 'a')
log.write('\n\n')
else:
log = open(log_file, 'w')
else:
log = sys.stdout # type: ignore # BinaryIO vs. IO[str]
set_up_django(external_host)
generate_fixtures_command = ['tools/setup/generate-fixtures']
@@ -68,7 +80,7 @@ def test_server_running(force=False, external_host='testserver', log=sys.stdout,
try:
# Wait for the server to start up.
sys.stdout.write('Waiting for test server')
while not server_is_up(server):
while not server_is_up(server, log_file):
if dots:
sys.stdout.write('.')
sys.stdout.flush()
@@ -79,7 +91,7 @@ def test_server_running(force=False, external_host='testserver', log=sys.stdout,
yield
finally:
assert_server_running(server)
assert_server_running(server, log_file)
server.terminate()
if __name__ == '__main__':