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

Side by Side Diff: build/android/pylib/run_java_tests.py

Issue 11148018: Upstream the android python scripts changes that enable the new Forwarder2 to be used in our test f… (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 2 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 unified diff | Download patch
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Runs the Java tests. See more information on run_instrumentation_tests.py.""" 5 """Runs the Java tests. See more information on run_instrumentation_tests.py."""
6 6
7 import fnmatch 7 import fnmatch
8 import logging 8 import logging
9 import os 9 import os
10 import re 10 import re
(...skipping 22 matching lines...) Expand all
33 """A fatal test exception.""" 33 """A fatal test exception."""
34 pass 34 pass
35 35
36 36
37 def _TestNameToExpectation(test_name): 37 def _TestNameToExpectation(test_name):
38 # A test name is a Package.Path.Class#testName; convert to what we use in 38 # A test name is a Package.Path.Class#testName; convert to what we use in
39 # the expectation file. 39 # the expectation file.
40 return '.'.join(test_name.replace('#', '.').split('.')[-2:]) 40 return '.'.join(test_name.replace('#', '.').split('.')[-2:])
41 41
42 42
43 # TODO(jaydeepmehta): FilterTests should be moved to a common file for
bulach 2012/10/15 19:31:55 ditto..
felipeg 2012/10/16 14:11:44 Done.
44 # all integration tests.
43 def FilterTests(test_names, pattern_list, inclusive): 45 def FilterTests(test_names, pattern_list, inclusive):
44 """Filters |test_names| using a list of patterns. 46 """Filters |test_names| using a list of patterns.
45 47
46 Args: 48 Args:
47 test_names: A list of test names. 49 test_names: A list of test names.
48 pattern_list: A list of patterns. 50 pattern_list: A list of patterns.
49 inclusive: If True, returns the tests that match any pattern. if False, 51 inclusive: If True, returns the tests that match any pattern. if False,
50 returns the tests that do not match any pattern. 52 returns the tests that do not match any pattern.
51 Returns: 53 Returns:
52 A list of test names. 54 A list of test names.
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 self.wait_for_debugger = options.wait_for_debugger 125 self.wait_for_debugger = options.wait_for_debugger
124 126
125 self.tests_iter = tests_iter 127 self.tests_iter = tests_iter
126 self.coverage = coverage 128 self.coverage = coverage
127 self.apks = apks 129 self.apks = apks
128 self.test_apk = apks[0] 130 self.test_apk = apks[0]
129 self.instrumentation_class_path = self.test_apk.GetPackageName() 131 self.instrumentation_class_path = self.test_apk.GetPackageName()
130 self.ports_to_forward = ports_to_forward 132 self.ports_to_forward = ports_to_forward
131 133
132 self.test_results = TestResults() 134 self.test_results = TestResults()
133 # List of forwarders created by this instance of TestRunner. 135 self.forwarder = None
134 self.forwarders = []
135 136
136 if self.coverage: 137 if self.coverage:
137 if os.path.exists(TestRunner._COVERAGE_MERGED_FILENAME): 138 if os.path.exists(TestRunner._COVERAGE_MERGED_FILENAME):
138 os.remove(TestRunner._COVERAGE_MERGED_FILENAME) 139 os.remove(TestRunner._COVERAGE_MERGED_FILENAME)
139 if not os.path.exists(TestRunner._COVERAGE_META_INFO_PATH): 140 if not os.path.exists(TestRunner._COVERAGE_META_INFO_PATH):
140 raise FatalTestException('FATAL ERROR in ' + sys.argv[0] + 141 raise FatalTestException('FATAL ERROR in ' + sys.argv[0] +
141 ' : Coverage meta info [' + 142 ' : Coverage meta info [' +
142 TestRunner._COVERAGE_META_INFO_PATH + 143 TestRunner._COVERAGE_META_INFO_PATH +
143 '] does not exist.') 144 '] does not exist.')
144 if (not TestRunner._COVERAGE_WEB_ROOT_DIR or 145 if (not TestRunner._COVERAGE_WEB_ROOT_DIR or
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 if not self.adb.IsRootEnabled(): 264 if not self.adb.IsRootEnabled():
264 logging.warning('Unable to enable java asserts for %s, non rooted device', 265 logging.warning('Unable to enable java asserts for %s, non rooted device',
265 self.device) 266 self.device)
266 else: 267 else:
267 if self.adb.SetJavaAssertsEnabled(enable=True): 268 if self.adb.SetJavaAssertsEnabled(enable=True):
268 self.adb.Reboot(full_reboot=False) 269 self.adb.Reboot(full_reboot=False)
269 270
270 # We give different default value to launch HTTP server based on shard index 271 # We give different default value to launch HTTP server based on shard index
271 # because it may have race condition when multiple processes are trying to 272 # because it may have race condition when multiple processes are trying to
272 # launch lighttpd with same port at same time. 273 # launch lighttpd with same port at same time.
273 # This line *must* come before the forwarding below, as it nukes all 274 http_server_ports = self.LaunchTestHttpServer(
274 # the other forwarders. A more comprehensive fix might be to pull the 275 os.path.join(constants.CHROME_DIR),
275 # forwarder-killing line up to here, but that might violate assumptions 276 (constants.LIGHTTPD_RANDOM_PORT_FIRST + self.shard_index))
276 # implicit in other places.
277 self.LaunchTestHttpServer(os.path.join(constants.CHROME_DIR),
278 (constants.LIGHTTPD_RANDOM_PORT_FIRST +
279 self.shard_index))
280
281 if self.ports_to_forward: 277 if self.ports_to_forward:
282 for port in self.ports_to_forward: 278 port_pairs = [(port, port) for port in self.ports_to_forward]
283 self.forwarders.append(Forwarder( 279 # We need to remember which ports the HTTP server is using, since the
284 self.adb, [(port, port)], self.tool, '127.0.0.1', self.build_type)) 280 # forwarder will stomp on them otherwise.
281 port_pairs.append(http_server_ports)
282 self.forwarder = Forwarder(
283 self.adb, port_pairs, self.tool, '127.0.0.1', self.build_type)
285 self.CopyTestFilesOnce() 284 self.CopyTestFilesOnce()
286 self.flags.AddFlags(['--enable-test-intents']) 285 self.flags.AddFlags(['--enable-test-intents'])
287 286
288 def TearDown(self): 287 def TearDown(self):
289 """Cleans up the test harness and saves outstanding data from test run.""" 288 """Cleans up the test harness and saves outstanding data from test run."""
290 if self.forwarders: 289 if self.forwarder:
291 for forwarder in self.forwarders: 290 self.forwarder.Close()
292 forwarder.Close()
293 self.GenerateCoverageReportIfNeeded() 291 self.GenerateCoverageReportIfNeeded()
294 super(TestRunner, self).TearDown() 292 super(TestRunner, self).TearDown()
295 293
296 def TestSetup(self, test): 294 def TestSetup(self, test):
297 """Sets up the test harness for running a particular test. 295 """Sets up the test harness for running a particular test.
298 296
299 Args: 297 Args:
300 test: The name of the test that will be run. 298 test: The name of the test that will be run.
301 """ 299 """
302 self.SetupPerfMonitoringIfNeeded(test) 300 self.SetupPerfMonitoringIfNeeded(test)
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 Args: 354 Args:
357 test: The name of the test that was just run. 355 test: The name of the test that was just run.
358 Raises: 356 Raises:
359 FatalTestException: if there's anything wrong with the perf data. 357 FatalTestException: if there's anything wrong with the perf data.
360 """ 358 """
361 if not self._IsPerfTest(test): 359 if not self._IsPerfTest(test):
362 return 360 return
363 raw_test_name = test.split('#')[1] 361 raw_test_name = test.split('#')[1]
364 362
365 # Wait and grab annotation data so we can figure out which traces to parse 363 # Wait and grab annotation data so we can figure out which traces to parse
364 # TODO(tonyg): Is there an error log line to watch for here?
bulach 2012/10/15 19:31:55 ditto..
felipeg 2012/10/16 14:11:44 Done.
366 regex = self.adb.WaitForLogMatch(re.compile('\*\*PERFANNOTATION\(' + 365 regex = self.adb.WaitForLogMatch(re.compile('\*\*PERFANNOTATION\(' +
367 raw_test_name + 366 raw_test_name +
368 '\)\:(.*)'), None) 367 '\)\:(.*)'), None)
369 368
370 # If the test is set to run on a specific device type only (IE: only 369 # If the test is set to run on a specific device type only (IE: only
371 # tablet or phone) and it is being run on the wrong device, the test 370 # tablet or phone) and it is being run on the wrong device, the test
372 # just quits and does not do anything. The java test harness will still 371 # just quits and does not do anything. The java test harness will still
373 # print the appropriate annotation for us, but will add --NORUN-- for 372 # print the appropriate annotation for us, but will add --NORUN-- for
374 # us so we know to ignore the results. 373 # us so we know to ignore the results.
375 # The --NORUN-- tag is managed by MainActivityTestBase.java 374 # The --NORUN-- tag is managed by MainActivityTestBase.java
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 586
588 logging.info('Will run: %s', str(tests)) 587 logging.info('Will run: %s', str(tests))
589 588
590 if len(attached_devices) > 1 and (coverage or options.wait_for_debugger): 589 if len(attached_devices) > 1 and (coverage or options.wait_for_debugger):
591 logging.warning('Coverage / debugger can not be sharded, ' 590 logging.warning('Coverage / debugger can not be sharded, '
592 'using first available device') 591 'using first available device')
593 attached_devices = attached_devices[:1] 592 attached_devices = attached_devices[:1]
594 sharder = TestSharder(attached_devices, options, tests, apks) 593 sharder = TestSharder(attached_devices, options, tests, apks)
595 test_results = sharder.RunShardedTests() 594 test_results = sharder.RunShardedTests()
596 return test_results 595 return test_results
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698