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

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

Issue 17267004: [Android] Enable using isolate files to get a list of data dependencies to push to the device. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove the apk since crbug.com/252785 is fixed Created 7 years, 6 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 | « base/base_unittests.isolate ('k') | no next file » | 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 9a429dc2b7e58bf529d65b8067345c408f04016f..a040e564d80b859c9522e93f1ef8d50871d2fab4 100644
--- a/build/android/pylib/gtest/test_runner.py
+++ b/build/android/pylib/gtest/test_runner.py
@@ -5,8 +5,10 @@
import glob
import logging
import os
+import sys
from pylib import android_commands
+from pylib import cmd_helper
from pylib import constants
from pylib import perf_tests_helper
from pylib.android_commands import errors
@@ -17,24 +19,62 @@ from pylib.utils import run_tests_helper
import test_package_apk
import test_package_executable
+sys.path.insert(
+ 0, os.path.join(constants.DIR_SOURCE_ROOT, 'tools', 'swarm_client'))
+import run_isolated
-def _GetDataFilesForTestSuite(test_suite_basename):
+
+_ISOLATE_FILE_PATHS = {
+ 'base_unittests': 'base/base_unittests.isolate',
+ #'net_unittests': 'net/net_unittests.isolate',
+ #'unit_tests': 'chrome/unit_tests.isolate',
+ #'content_browsertests': 'content/content_browsertests.isolate',
+ #'content_unittests': 'content/content_unittests.isolate',
+ }
+_ISOLATE_SCRIPT = os.path.join(
+ constants.DIR_SOURCE_ROOT, 'tools', 'swarm_client', 'isolate.py')
+
+
+def _GetDataFilesForTestSuite(product_dir, test_suite_basename):
"""Returns a list of data files/dirs needed by the test suite.
Args:
- test_suite_basename: The test suite basename for which to return file paths.
+ product_dir: Absolute path to product directory (e.g. /../out/Debug).
+ test_suite_basename: The test suite basename (e.g. base_unittests).
Returns:
A list of test file and directory paths.
"""
+ # TODO(frankf): *.isolated should be generated by gyp using foo_tests_run
+ # targets. This is a stop-gap solution as currently there are no such
+ # targets for content_unittests and content_browsertests.
+ isolate_rel_path = _ISOLATE_FILE_PATHS.get(test_suite_basename)
+ if isolate_rel_path:
+ isolate_abs_path = os.path.join(constants.DIR_SOURCE_ROOT, isolate_rel_path)
+ isolated_abs_path = os.path.join(
+ product_dir, '%s.isolated' % test_suite_basename)
+ assert os.path.exists(isolate_abs_path)
+ isolate_cmd = [
+ 'python', _ISOLATE_SCRIPT,
+ 'check',
+ '--isolate=%s' % isolate_abs_path,
csharp 2013/06/28 13:12:17 I don't think you need to specify the .isolate fil
frankf 2013/06/28 18:32:46 There's no isolated file at this point, that's wha
csharp 2013/06/28 19:01:05 Ah, right. I thought you were performing an action
+ '--isolated=%s' % isolated_abs_path,
+ '-V', 'PRODUCT_DIR=%s' % product_dir,
+ '-V', 'OS=android',
+ '--outdir=%s' % product_dir,
+ ]
+ assert not cmd_helper.RunCmd(isolate_cmd)
+ with open(isolated_abs_path) as f:
+ isolated_content = run_isolated.load_isolated(f.read(),
+ os_flavor='android')
+ assert isolated_content['os'] == 'android'
+ return isolated_content['files'].keys()
+
+ logging.info('Did not find an isolate file for the test suite.')
# Ideally, we'd just push all test data. However, it has >100MB, and a lot
# of the files are not relevant (some are used for browser_tests, others for
# features not supported, etc..).
- if test_suite_basename == 'base_unittests':
- return [
- 'base/test/data/',
- ]
- elif test_suite_basename == 'unit_tests':
+ if test_suite_basename == 'unit_tests':
test_files = [
'base/test/data/',
'chrome/test/data/download-test1.lib',
@@ -265,7 +305,8 @@ class TestRunner(base_test_runner.BaseTestRunner):
def PushDataDeps(self):
self.test_package.PushDataAndPakFiles()
self.tool.CopyFiles()
- test_data = _GetDataFilesForTestSuite(self.test_package.test_suite_basename)
+ test_data = _GetDataFilesForTestSuite(self.test_package.test_suite_dirname,
+ self.test_package.test_suite_basename)
if test_data:
# Make sure SD card is ready.
self.adb.WaitForSdCardReady(20)
« no previous file with comments | « base/base_unittests.isolate ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698