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

Unified Diff: build/android/pylib/browsertests/setup.py

Issue 18770008: [Android] Redesigns the sharder to allow replicated vs distributed tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adds tagging of tests (for replication) 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
Index: build/android/pylib/browsertests/setup.py
diff --git a/build/android/pylib/browsertests/setup.py b/build/android/pylib/browsertests/setup.py
new file mode 100644
index 0000000000000000000000000000000000000000..7db8933312551f1e87d07bb7bfb778b28e11d99f
--- /dev/null
+++ b/build/android/pylib/browsertests/setup.py
@@ -0,0 +1,93 @@
+# Copyright (c) 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Runs content_browsertests."""
frankf 2013/07/16 00:02:18 Update these.
gkanwar 2013/07/16 00:47:03 Done.
+
+import logging
+import os
+import sys
+
+from pylib import android_commands
+from pylib import cmd_helper
+from pylib import constants
+from pylib import ports
+from pylib.base import base_test_result
+from pylib.gtest import setup as gtest_setup
+from pylib.gtest import test_runner
+from pylib.utils import report_results
+
+sys.path.insert(0,
+ os.path.join(constants.DIR_SOURCE_ROOT, 'build', 'util', 'lib'))
+from common import unittest_util
+
+
+def Setup(test_arguments, timeout, cleanup_test_files, tool, build_type,
+ webkit, push_deps, gtest_filter):
+ """Create the test runner factory and tests.
+
+ Args:
+ 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 of the Valgrind tool.
+ build_type: 'Release' or 'Debug'.
+ webkit: Whether the suite is being run from a WebKit checkout.
+ push_deps: If True, push all dependencies to the device.
+ gtest_filter: filter for tests.
+
+ Returns:
+ A tuple of (TestRunnerFactory, tests).
+ """
+
+ test_suite_dir = os.path.join(cmd_helper.OutDirectory.get(), build_type)
+ test_suite = os.path.join(test_suite_dir, 'apks',
+ constants.BROWSERTEST_SUITE_NAME + '.apk')
frankf 2013/07/16 00:02:18 indent issue
gkanwar 2013/07/16 00:47:03 Done.
+
+ # Constructs a new TestRunner with the current options.
+ def TestRunnerFactory(device, shard_index):
+ return test_runner.TestRunner(
+ device,
+ test_suite,
+ test_arguments,
+ timeout,
+ cleanup_test_files,
+ tool,
+ build_type,
+ webkit,
+ push_deps,
+ constants.BROWSERTEST_TEST_PACKAGE_NAME,
+ constants.BROWSERTEST_TEST_ACTIVITY_NAME,
+ constants.BROWSERTEST_COMMAND_LINE_FILE)
+
+ # TODO(gkanwar): This breaks the abstraction of having dispatch.Dispatch deal
+ # entirely with the devices. Can we do this another way?
+ attached_devices = android_commands.GetAttachedDevices()
+ # Get tests and split them up based on the number of devices.
+ all_enabled = gtest_setup.GetAllEnabledTests(TestRunnerFactory,
+ attached_devices)
+ if gtest_filter:
+ all_tests = unittest_util.FilterTestNames(all_enabled,
+ gtest_filter)
+ else:
+ all_tests = _FilterTests(all_enabled)
+
+ return (TestRunnerFactory, all_tests)
+
+
+def _FilterTests(all_enabled_tests):
+ """Filters out tests and fixtures starting with PRE_ and MANUAL_."""
+ return [t for t in all_enabled_tests if _ShouldRunOnBot(t)]
+
+
+def _ShouldRunOnBot(test):
+ fixture, case = test.split('.', 1)
+ if _StartsWith(fixture, case, 'PRE_'):
+ return False
+ if _StartsWith(fixture, case, 'MANUAL_'):
+ return False
+ return True
+
+
+def _StartsWith(a, b, prefix):
+ return a.startswith(prefix) or b.startswith(prefix)

Powered by Google App Engine
This is Rietveld 408576698