mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
This includes: - Remove an unused function argument - Style fix - Handle EOF by pexpect instead of catching exception BUG=chrome-os-partner:19235 TEST=Run all tests TEST=Make a test crash and check EOF is handled properly BRANCH=None Change-Id: I3636cdab6e68cacf97c4b245b14b2d57613a1674 Signed-off-by: Vic (Chun-Ju) Yang <victoryang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/182049 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
77 lines
1.9 KiB
Python
Executable File
77 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
from cStringIO import StringIO
|
|
import pexpect
|
|
import signal
|
|
import sys
|
|
import time
|
|
|
|
TIMEOUT=10
|
|
|
|
RESULT_ID_TIMEOUT = 0
|
|
RESULT_ID_PASS = 1
|
|
RESULT_ID_FAIL = 2
|
|
RESULT_ID_EOF = 3
|
|
|
|
EXPECT_LIST = [pexpect.TIMEOUT, 'Pass!', 'Fail!', pexpect.EOF]
|
|
|
|
class Tee(object):
|
|
def __init__(self, target):
|
|
self._target = target
|
|
|
|
def write(self, data):
|
|
sys.stdout.write(data)
|
|
self._target.write(data)
|
|
|
|
def flush(self):
|
|
sys.stdout.flush()
|
|
self._target.flush()
|
|
|
|
def RunOnce(test_name, log):
|
|
child = pexpect.spawn('build/host/{0}/{0}.exe'.format(test_name),
|
|
timeout=TIMEOUT)
|
|
child.logfile = log
|
|
try:
|
|
return child.expect(EXPECT_LIST)
|
|
finally:
|
|
if child.isalive():
|
|
child.kill(signal.SIGTERM)
|
|
child.read()
|
|
|
|
log = StringIO()
|
|
tee_log = Tee(log)
|
|
test_name = sys.argv[1]
|
|
start_time = time.time()
|
|
|
|
result_id = RunOnce(test_name, tee_log)
|
|
|
|
elapsed_time = time.time() - start_time
|
|
if result_id == RESULT_ID_TIMEOUT:
|
|
sys.stderr.write('Test %s timed out after %d seconds!\n' %
|
|
(test_name, TIMEOUT))
|
|
failed = True
|
|
elif result_id == RESULT_ID_PASS:
|
|
sys.stderr.write('Test %s passed! (%.3f seconds)\n' %
|
|
(test_name, elapsed_time))
|
|
failed = False
|
|
elif result_id == RESULT_ID_FAIL:
|
|
sys.stderr.write('Test %s failed! (%.3f seconds)\n' %
|
|
(test_name, elapsed_time))
|
|
failed = True
|
|
elif result_id == RESULT_ID_EOF:
|
|
sys.stderr.write('Test %s terminated unexpectedly! (%.3f seconds)\n' %
|
|
(test_name, elapsed_time))
|
|
failed = True
|
|
|
|
if failed:
|
|
sys.stderr.write('\n====== Emulator output ======\n')
|
|
sys.stderr.write(log.getvalue())
|
|
sys.stderr.write('\n=============================\n')
|
|
sys.exit(1)
|
|
else:
|
|
sys.exit(0)
|