Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3650)

Unified Diff: build/android/pylib/gtest/test_runner.py

Issue 20649002: [Android] Dedup content_browsertests test setup from gtests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed bulach's comments Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/android/pylib/gtest/test_package_exe.py ('k') | build/android/run_browser_tests.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/gtest/test_runner.py
diff --git a/build/android/pylib/gtest/test_runner.py b/build/android/pylib/gtest/test_runner.py
index da422c38ee083cbf3a78bc4ee4edd1ebf70deec2..2a93e37532c828045c54011ebc0a77012985c964 100644
--- a/build/android/pylib/gtest/test_runner.py
+++ b/build/android/pylib/gtest/test_runner.py
@@ -11,76 +11,52 @@ from pylib import constants
from pylib import pexpect
from pylib.base import base_test_result
from pylib.base import base_test_runner
-from pylib.utils import run_tests_helper
-import test_package_apk
-import test_package_exe
-
-def _TestSuiteRequiresMockTestServer(suite_basename):
+def _TestSuiteRequiresMockTestServer(suite_name):
"""Returns True if the test suite requires mock test server."""
tests_require_net_test_server = ['unit_tests', 'net_unittests',
'content_unittests',
'content_browsertests']
- return (suite_basename in
+ return (suite_name in
tests_require_net_test_server)
class TestRunner(base_test_runner.BaseTestRunner):
- def __init__(self, device, suite_name, test_arguments, timeout,
- cleanup_test_files, tool_name, build_type,
- push_deps, test_apk_package_name=None,
- test_activity_name=None, command_line_file=None):
+ def __init__(self, device, test_package, test_arguments, timeout,
+ cleanup_test_files, tool_name, build_type, push_deps):
"""Single test suite attached to a single device.
Args:
device: Device to run the tests.
- suite_name: A specific test suite to run, empty to run all.
+ test_package: An instance of TestPackage class.
test_arguments: Additional arguments to pass to the test binary.
timeout: Timeout for each test.
cleanup_test_files: Whether or not to cleanup test files on device.
tool_name: Name of the Valgrind tool.
build_type: 'Release' or 'Debug'.
push_deps: If True, push all dependencies to the device.
- test_apk_package_name: Apk package name for tests running in APKs.
- test_activity_name: Test activity to invoke for APK tests.
- command_line_file: Filename to use to pass arguments to tests.
"""
super(TestRunner, self).__init__(device, tool_name, build_type, push_deps,
cleanup_test_files)
+ self.test_package = test_package
+ self.test_package.tool = self.tool
self._test_arguments = test_arguments
if timeout == 0:
timeout = 60
# On a VM (e.g. chromium buildbots), this timeout is way too small.
if os.environ.get('BUILDBOT_SLAVENAME'):
timeout = timeout * 2
- self.timeout = timeout * self.tool.GetTimeoutScale()
-
- logging.warning('Test suite: ' + str(suite_name))
- if os.path.splitext(suite_name)[1] == '.apk':
- self.test_package = test_package_apk.TestPackageApk(
- self.adb,
- device,
- suite_name,
- self.tool,
- test_apk_package_name,
- test_activity_name,
- command_line_file)
- else:
- # Put a copy into the android out/target directory, to allow stack trace
- # generation.
- symbols_dir = os.path.join(constants.DIR_SOURCE_ROOT, 'out', build_type,
- 'lib.target')
- self.test_package = test_package_exe.TestPackageExecutable(
- self.adb,
- device,
- suite_name,
- self.tool,
- symbols_dir)
+ self._timeout = timeout * self.tool.GetTimeoutScale()
#override
def InstallTestPackage(self):
- self.test_package.Install()
+ self.test_package.Install(self.adb)
+
+ def GetAllTests(self):
+ """Install test package and get a list of all tests."""
+ self.test_package.Install(self.adb)
+ return self.test_package.GetAllTests(self.adb)
#override
def PushDataDeps(self):
@@ -90,7 +66,7 @@ class TestRunner(base_test_runner.BaseTestRunner):
device_dir = self.adb.GetExternalStorage()
# TODO(frankf): linux_dumper_unittest_helper needs to be in the same dir
# as breakpad_unittests exe. Find a better way to do this.
- if self.test_package.suite_basename == 'breakpad_unittests':
+ if self.test_package.suite_name == 'breakpad_unittests':
device_dir = constants.TEST_EXECUTABLE_DIR
for p in os.listdir(constants.ISOLATE_DEPS_DIR):
self.adb.PushIfNeeded(
@@ -125,14 +101,14 @@ class TestRunner(base_test_runner.BaseTestRunner):
while True:
full_test_name = None
found = p.expect([re_run, re_passed, re_runner_fail],
- timeout=self.timeout)
+ timeout=self._timeout)
if found == 1: # re_passed
break
elif found == 2: # re_runner_fail
break
else: # re_run
full_test_name = p.match.group(1).replace('\r', '')
- found = p.expect([re_ok, re_fail, re_crash], timeout=self.timeout)
+ found = p.expect([re_ok, re_fail, re_crash], timeout=self._timeout)
log = p.before.replace('\r', '')
if found == 0: # re_ok
if full_test_name == p.match.group(1).replace('\r', ''):
@@ -160,7 +136,7 @@ class TestRunner(base_test_runner.BaseTestRunner):
log=p.before.replace('\r', '')))
except pexpect.TIMEOUT:
logging.error('Test terminated after %d second timeout.',
- self.timeout)
+ self._timeout)
if full_test_name:
results.AddResult(base_test_result.BaseTestResult(
full_test_name, base_test_result.ResultType.TIMEOUT,
@@ -168,7 +144,7 @@ class TestRunner(base_test_runner.BaseTestRunner):
finally:
p.close()
- ret_code = self.test_package.GetGTestReturnCode()
+ ret_code = self.test_package.GetGTestReturnCode(self.adb)
if ret_code:
logging.critical(
'gtest exit code: %d\npexpect.before: %s\npexpect.after: %s',
@@ -183,10 +159,11 @@ class TestRunner(base_test_runner.BaseTestRunner):
return test_results, None
try:
- self.test_package.ClearApplicationState()
+ self.test_package.ClearApplicationState(self.adb)
self.test_package.CreateCommandLineFileOnDevice(
- test, self._test_arguments)
- test_results = self._ParseTestOutput(self.test_package.SpawnTestProcess())
+ self.adb, test, self._test_arguments)
+ test_results = self._ParseTestOutput(
+ self.test_package.SpawnTestProcess(self.adb))
finally:
self.CleanupSpawningServerState()
# Calculate unknown test results.
@@ -203,7 +180,7 @@ class TestRunner(base_test_runner.BaseTestRunner):
def SetUp(self):
"""Sets up necessary test enviroment for the test suite."""
super(TestRunner, self).SetUp()
- if _TestSuiteRequiresMockTestServer(self.test_package.suite_basename):
+ if _TestSuiteRequiresMockTestServer(self.test_package.suite_name):
self.LaunchChromeTestServerSpawner()
self.tool.SetupEnvironment()
« no previous file with comments | « build/android/pylib/gtest/test_package_exe.py ('k') | build/android/run_browser_tests.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698