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

Unified Diff: build/android/pylib/host_driven/test_case.py

Issue 1874603002: [Android] Remove host-driven test framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update chrome/android/java_sources.gni Created 4 years, 8 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/host_driven/setup.py ('k') | build/android/pylib/host_driven/test_info_collection.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/host_driven/test_case.py
diff --git a/build/android/pylib/host_driven/test_case.py b/build/android/pylib/host_driven/test_case.py
deleted file mode 100644
index 76c738d324716be9e2cdc3ba4421ee4b6f266bad..0000000000000000000000000000000000000000
--- a/build/android/pylib/host_driven/test_case.py
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright 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.
-
-"""Base class for host-driven test cases.
-
-This test case is intended to serve as the base class for any host-driven
-test cases. It is similar to the Python unitttest module in that test cases
-inherit from this class and add methods which will be run as tests.
-
-When a HostDrivenTestCase object is instantiated, its purpose is to run only one
-test method in the derived class. The test runner gives it the name of the test
-method the instance will run. The test runner calls SetUp with the device ID
-which the test method will run against. The test runner runs the test method
-itself, collecting the result, and calls TearDown.
-
-Tests can perform arbitrary Python commands and asserts in test methods. Tests
-that run instrumentation tests can make use of the _RunJavaTestFilters helper
-function to trigger Java tests and convert results into a single host-driven
-test result.
-"""
-
-import logging
-import os
-import time
-
-from devil.android import forwarder
-from pylib import constants
-from pylib import valgrind_tools
-from pylib.base import base_test_result
-from pylib.instrumentation import test_package
-from pylib.instrumentation import test_result
-from pylib.instrumentation import test_runner
-
-# aka the parent of com.google.android
-BASE_ROOT = 'src' + os.sep
-
-
-class HostDrivenTestCase(object):
- """Base class for host-driven test cases."""
-
- _HOST_DRIVEN_TAG = 'HostDriven'
-
- def __init__(self, test_name, instrumentation_options=None):
- """Create a test case initialized to run |test_name|.
-
- Args:
- test_name: The name of the method to run as the test.
- instrumentation_options: An InstrumentationOptions object.
- """
- class_name = self.__class__.__name__
- self.device = None
- self.device_id = ''
- self.has_forwarded_ports = False
- self.instrumentation_options = instrumentation_options
- self.ports_to_forward = []
- self.shard_index = 0
-
- # Use tagged_name when creating results, so that we can identify host-driven
- # tests in the overall results.
- self.test_name = test_name
- self.qualified_name = '%s.%s' % (class_name, self.test_name)
- self.tagged_name = '%s_%s' % (self._HOST_DRIVEN_TAG, self.qualified_name)
-
- # TODO(bulach): make ports_to_forward not optional and move the Forwarder
- # mapping here.
- def SetUp(self, device, shard_index, ports_to_forward=None):
- if not ports_to_forward:
- ports_to_forward = []
- self.device = device
- self.shard_index = shard_index
- self.device_id = str(self.device)
- if ports_to_forward:
- self.ports_to_forward = ports_to_forward
-
- def TearDown(self):
- pass
-
- # TODO(craigdh): Remove GetOutDir once references have been removed
- # downstream.
- @staticmethod
- def GetOutDir():
- return constants.GetOutDirectory()
-
- def Run(self):
- logging.info('Running host-driven test: %s', self.tagged_name)
- # Get the test method on the derived class and execute it
- return getattr(self, self.test_name)()
-
- @staticmethod
- def __GetHostForwarderLog():
- return ('-- Begin Full HostForwarder log\n'
- '%s\n'
- '--End Full HostForwarder log\n' % forwarder.Forwarder.GetHostLog())
-
- def __StartForwarder(self):
- logging.warning('Forwarding %s %s', self.ports_to_forward,
- self.has_forwarded_ports)
- if self.ports_to_forward and not self.has_forwarded_ports:
- self.has_forwarded_ports = True
- tool = valgrind_tools.CreateTool(None, self.device)
- forwarder.Forwarder.Map([(port, port) for port in self.ports_to_forward],
- self.device, tool)
-
- def __RunJavaTest(self, test, test_pkg, additional_flags=None):
- """Runs a single Java test in a Java TestRunner.
-
- Args:
- test: Fully qualified test name (ex. foo.bar.TestClass#testMethod)
- test_pkg: TestPackage object.
- additional_flags: A list of additional flags to add to the command line.
-
- Returns:
- TestRunResults object with a single test result.
- """
- # TODO(bulach): move this to SetUp() stage.
- self.__StartForwarder()
-
- java_test_runner = test_runner.TestRunner(
- self.instrumentation_options, self.device, self.shard_index,
- test_pkg, additional_flags=additional_flags)
- try:
- java_test_runner.SetUp()
- return java_test_runner.RunTest(test)[0]
- finally:
- java_test_runner.TearDown()
-
- def _RunJavaTestFilters(self, test_filters, additional_flags=None):
- """Calls a list of tests and stops at the first test failure.
-
- This method iterates until either it encounters a non-passing test or it
- exhausts the list of tests. Then it returns the appropriate overall result.
-
- Test cases may make use of this method internally to assist in running
- instrumentation tests. This function relies on instrumentation_options
- being defined.
-
- Args:
- test_filters: A list of Java test filters.
- additional_flags: A list of addition flags to add to the command line.
-
- Returns:
- A TestRunResults object containing an overall result for this set of Java
- tests. If any Java tests do not pass, this is a fail overall.
- """
- test_type = base_test_result.ResultType.PASS
- log = ''
-
- opts = self.instrumentation_options
- test_pkg = test_package.TestPackage(
- opts.test_apk_path,
- opts.test_apk_jar_path,
- opts.test_support_apk_path,
- test_apk_incremental_install_script=
- opts.test_apk_incremental_install_script)
-
- start_ms = int(time.time()) * 1000
- done = False
- for test_filter in test_filters:
- tests = test_pkg.GetAllMatchingTests(
- None, None, test_filter, [self.device])
- # Filters should always result in >= 1 test.
- if len(tests) == 0:
- raise Exception('Java test filter "%s" returned no tests.'
- % test_filter)
- for test in tests:
- # We're only running one test at a time, so this TestRunResults object
- # will hold only one result.
- java_result = self.__RunJavaTest(test, test_pkg, additional_flags)
- assert len(java_result.GetAll()) == 1
- if not java_result.DidRunPass():
- result = java_result.GetNotPass().pop()
- log = result.GetLog()
- log += self.__GetHostForwarderLog()
- test_type = result.GetType()
- done = True
- break
- if done:
- break
- duration_ms = int(time.time()) * 1000 - start_ms
-
- overall_result = base_test_result.TestRunResults()
- overall_result.AddResult(
- test_result.InstrumentationTestResult(
- self.tagged_name, test_type, start_ms, duration_ms, log=log))
- return overall_result
-
- def __str__(self):
- return self.tagged_name
-
- def __repr__(self):
- return self.tagged_name
« no previous file with comments | « build/android/pylib/host_driven/setup.py ('k') | build/android/pylib/host_driven/test_info_collection.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698