Index: build/android/pylib/single_test_runner.py |
diff --git a/build/android/pylib/single_test_runner.py b/build/android/pylib/single_test_runner.py |
index 48e92ea3d6cec24f2d59731b4057a7c807c00b94..ea1fc11ec1d26ecb64760542c371ab12e073686a 100644 |
--- a/build/android/pylib/single_test_runner.py |
+++ b/build/android/pylib/single_test_runner.py |
@@ -2,12 +2,14 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import glob |
import logging |
import os |
import sys |
from base_test_runner import BaseTestRunner |
import debug_info |
+import constants |
import run_tests_helper |
from test_package_apk import TestPackageApk |
from test_package_executable import TestPackageExecutable |
@@ -32,10 +34,10 @@ class SingleTestRunner(BaseTestRunner): |
""" |
def __init__(self, device, test_suite, gtest_filter, test_arguments, timeout, |
- rebaseline, performance_test, cleanup_test_files, tool, |
+ rebaseline, performance_test, cleanup_test_files, tool_name, |
shard_index, dump_debug_info=False, |
fast_and_loose=False): |
- BaseTestRunner.__init__(self, device, shard_index) |
+ BaseTestRunner.__init__(self, device, tool_name, shard_index) |
self._running_on_emulator = self.device.startswith('emulator') |
self._gtest_filter = gtest_filter |
self._test_arguments = test_arguments |
@@ -48,22 +50,14 @@ class SingleTestRunner(BaseTestRunner): |
self.fast_and_loose = fast_and_loose |
if os.path.splitext(test_suite)[1] == '.apk': |
- self.test_package = TestPackageApk( |
- self.adb, device, |
+ self.test_package = TestPackageApk(self.adb, device, |
test_suite, timeout, rebaseline, performance_test, cleanup_test_files, |
- tool, self.dump_debug_info) |
+ self.tool, self.dump_debug_info) |
else: |
self.test_package = TestPackageExecutable( |
self.adb, device, |
test_suite, timeout, rebaseline, performance_test, cleanup_test_files, |
- tool, self.dump_debug_info) |
- |
- def _GetHttpServerDocumentRootForTestSuite(self): |
- """Returns the document root needed by the test suite.""" |
- if self.test_package.test_suite_basename == 'page_cycler_tests': |
- return os.path.join(run_tests_helper.CHROME_DIR, 'data', 'page_cycler') |
- return None |
- |
+ self.tool, self.dump_debug_info) |
def _TestSuiteRequiresMockTestServer(self): |
"""Returns True if the test suite requires mock test server.""" |
@@ -147,23 +141,55 @@ class SingleTestRunner(BaseTestRunner): |
if self.test_package.test_suite_basename in ['base_unittests', |
'sql_unittests', |
'unit_tests']: |
- return [ |
+ test_files = [ |
'base/data/json/bom_feff.json', |
+ 'base/data/file_util_unittest', |
'net/data/cache_tests/insert_load1', |
'net/data/cache_tests/dirty_entry5', |
+ 'net/data/ssl/certificates/', |
'ui/base/test/data/data_pack_unittest', |
- 'chrome/test/data/bookmarks/History_with_empty_starred', |
- 'chrome/test/data/bookmarks/History_with_starred', |
+ 'chrome/test/data/download-test1.lib', |
+ 'chrome/test/data/extensions/bad_magic.crx', |
+ 'chrome/test/data/extensions/good.crx', |
+ 'chrome/test/data/extensions/icon1.png', |
+ 'chrome/test/data/extensions/icon2.png', |
+ 'chrome/test/data/extensions/icon3.png', |
+ 'chrome/test/data/extensions/allow_silent_upgrade/', |
+ 'chrome/test/data/extensions/app/', |
+ 'chrome/test/data/extensions/bad/', |
+ 'chrome/test/data/extensions/effective_host_permissions/', |
+ 'chrome/test/data/extensions/empty_manifest/', |
+ 'chrome/test/data/extensions/good/Extensions/', |
+ 'chrome/test/data/extensions/manifest_tests/', |
+ 'chrome/test/data/extensions/page_action/', |
+ 'chrome/test/data/extensions/permissions/', |
+ 'chrome/test/data/extensions/script_and_capture/', |
+ 'chrome/test/data/extensions/unpacker/', |
+ 'chrome/test/data/bookmarks/', |
+ 'chrome/test/data/components/', |
'chrome/test/data/extensions/json_schema_test.js', |
'chrome/test/data/History/', |
'chrome/test/data/json_schema_validator/', |
+ 'chrome/test/data/pref_service/', |
'chrome/test/data/serializer_nested_test.js', |
'chrome/test/data/serializer_test.js', |
'chrome/test/data/serializer_test_nowhitespace.js', |
'chrome/test/data/top_sites/', |
+ 'chrome/test/data/web_app_info/', |
'chrome/test/data/web_database', |
+ 'chrome/test/data/webui/', |
'chrome/test/data/zip', |
- ] |
+ 'chrome/third_party/mock4js/', |
+ ] |
+ if self.test_package.test_suite_basename == 'unit_tests': |
+ test_files += ['chrome/test/data/simple_open_search.xml'] |
+ # The following are spell check data. Now only list the data under |
+ # third_party/hunspell_dictionaries which are used by unit tests. |
+ old_cwd = os.getcwd() |
+ os.chdir(constants.CHROME_DIR) |
+ test_files += glob.glob('third_party/hunspell_dictionaries/*.bdic') |
+ os.chdir(old_cwd) |
+ return test_files |
elif self.test_package.test_suite_basename == 'net_unittests': |
return [ |
'net/data/cache_tests', |
@@ -171,6 +197,8 @@ class SingleTestRunner(BaseTestRunner): |
'net/data/ftp', |
'net/data/proxy_resolver_v8_unittest', |
'net/data/ssl/certificates', |
+ 'net/data/url_request_unittest/', |
+ 'net/data/proxy_script_fetcher_unittest' |
] |
elif self.test_package.test_suite_basename == 'ui_tests': |
return [ |
@@ -178,8 +206,8 @@ class SingleTestRunner(BaseTestRunner): |
'chrome/test/data/json2.js', |
'chrome/test/data/sunspider', |
'chrome/test/data/v8_benchmark', |
- 'chrome/test/ui/sunspider_uitest.js', |
- 'chrome/test/ui/v8_benchmark_uitest.js', |
+ 'chrome/test/perf/sunspider_uitest.js', |
+ 'chrome/test/perf/v8_benchmark_uitest.js', |
] |
elif self.test_package.test_suite_basename == 'page_cycler_tests': |
data = [ |
@@ -196,6 +224,8 @@ class SingleTestRunner(BaseTestRunner): |
] |
elif self.test_package.test_suite_basename == 'content_unittests': |
return [ |
+ 'chrome/test/gpu/webgl_conformance_test_expectations.txt', |
+ 'net/data/ssl/certificates/', |
'webkit/data/dom_storage/webcore_test_database.localstorage', |
] |
return [] |
@@ -206,9 +236,6 @@ class SingleTestRunner(BaseTestRunner): |
Sometimes one test may need to run some helper tools first in order to |
successfully complete the test. |
""" |
- document_root = self._GetHttpServerDocumentRootForTestSuite() |
- if document_root: |
- self.LaunchTestHttpServer(document_root) |
if self._TestSuiteRequiresMockTestServer(): |
self.LaunchChromeTestServerSpawner() |
@@ -216,28 +243,19 @@ class SingleTestRunner(BaseTestRunner): |
"""Strips and copies the required data files for the test suite.""" |
self.test_package.StripAndCopyExecutable() |
self.test_package.PushDataAndPakFiles() |
- self.test_package.tool.CopyFiles() |
+ self.tool.CopyFiles() |
test_data = self.GetDataFilesForTestSuite() |
if test_data and not self.fast_and_loose: |
- if self.test_package.test_suite_basename == 'page_cycler_tests': |
- # Since the test data for page cycler are huge (around 200M), we use |
- # sdcard to store the data and create symbol links to map them to |
- # data/local/tmp/ later. |
- self.CopyTestData(test_data, '/sdcard/') |
- for p in [os.path.dirname(d) for d in test_data if os.path.isdir(d)]: |
- mapped_device_path = '/data/local/tmp/' + p |
- # Unlink the mapped_device_path at first in case it was mapped to |
- # a wrong path. Add option '-r' becuase the old path could be a dir. |
- self.adb.RunShellCommand('rm -r %s' % mapped_device_path) |
- self.adb.RunShellCommand( |
- 'ln -s /sdcard/%s %s' % (p, mapped_device_path)) |
- else: |
- self.CopyTestData(test_data, '/data/local/tmp/') |
+ # Due to the large size of certain test data, we use sdcard to store the |
+ # test data and create symbolic links to map them to data/local/tmp/. |
+ for data in test_data: |
+ self.CopyTestData([data], '/sdcard/') |
+ self.LinkSdCardPathsToTempDir(test_data) |
def RunTestsWithFilter(self): |
"""Runs a tests via a small, temporary shell script.""" |
self.test_package.CreateTestRunnerScript(self._gtest_filter, |
- self._test_arguments) |
+ self._test_arguments) |
self.test_results = self.test_package.RunTestsAndListResults() |
def RebaselineTests(self): |
@@ -292,20 +310,18 @@ class SingleTestRunner(BaseTestRunner): |
def SetUp(self): |
"""Sets up necessary test enviroment for the test suite.""" |
super(SingleTestRunner, self).SetUp() |
+ self.adb.ClearApplicationState(constants.CHROME_PACKAGE) |
if self.test_package.performance_test: |
- if run_tests_helper.IsRunningAsBuildbot(): |
- self.adb.SetJavaAssertsEnabled(enable=False) |
- self.adb.Reboot(full_reboot=False) |
self.adb.SetupPerformanceTest() |
if self.dump_debug_info: |
self.dump_debug_info.StartRecordingLog(True) |
self.StripAndCopyFiles() |
self.LaunchHelperToolsForTestSuite() |
- self.test_package.tool.SetupEnvironment() |
+ self.tool.SetupEnvironment() |
def TearDown(self): |
"""Cleans up the test enviroment for the test suite.""" |
- self.test_package.tool.CleanUpEnvironment() |
+ self.tool.CleanUpEnvironment() |
if self.test_package.cleanup_test_files: |
self.adb.RemovePushedFiles() |
if self.dump_debug_info: |