Files
OpenCellular/util/run_host_test
Vic Yang aaac3935d2 Make target for test coverage report generation
By 'make coverage', lcov is used to generate test coverage report in
HTML format stored in coverage_rpt folder.

BUG=chrome-os-partner:19235
TEST=Generate a report.
BRANCH=None

Change-Id: I44142eaaeb897cf09179764781120370920144cd
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58203
2013-06-16 20:14:01 -07:00

81 lines
2.0 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 sys
import time
TIMEOUT=10
EXIT_CODE_REBOOT = (1 << 6)
RESULT_ID_TIMEOUT = 0
RESULT_ID_PASS = 1
RESULT_ID_FAIL = 2
RESULT_ID_REBOOT = 3
EXPECT_LIST = [pexpect.TIMEOUT, 'Pass!', 'Fail!']
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, timeout_secs):
child = pexpect.spawn('build/host/{0}/{0}.exe'.format(test_name),
timeout=TIMEOUT)
child.logfile = log
try:
return child.expect(EXPECT_LIST)
except pexpect.EOF:
child.close()
if child.exitstatus & EXIT_CODE_REBOOT:
sys.stderr.write('System rebooting\n')
return RESULT_ID_REBOOT
else:
raise
finally:
child.kill(15)
log = StringIO()
tee_log = Tee(log)
test_name = sys.argv[1]
start_time = time.time()
result_id = RESULT_ID_REBOOT
while result_id == RESULT_ID_REBOOT:
result_id = RunOnce(test_name, tee_log, start_time + TIMEOUT - time.time())
elapsed_time = time.time() - start_time
failed = False
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))
elif result_id == RESULT_ID_FAIL:
sys.stderr.write('Test %s failed! (%.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)