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

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

Issue 11421149: Ensure host_forwarder is killed when setting up/tearing down sharding. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Marcus' comments Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | build/android/pylib/forwarder.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 5
6 import android_commands 6 import android_commands
7 import logging 7 import logging
8 import multiprocessing 8 import multiprocessing
9 9
10 from android_commands import errors 10 from android_commands import errors
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 device: Device serial where this shard will run 59 device: Device serial where this shard will run
60 index: Index of this device in the pool. 60 index: Index of this device in the pool.
61 61
62 Returns: 62 Returns:
63 An object of BaseTestRunner type (that can provide a "Run()" method). 63 An object of BaseTestRunner type (that can provide a "Run()" method).
64 """ 64 """
65 pass 65 pass
66 66
67 def SetupSharding(self, tests): 67 def SetupSharding(self, tests):
68 """Called before starting the shards.""" 68 """Called before starting the shards."""
69 Forwarder.KillHost(self.build_type) 69 pass
70 70
71 def OnTestsCompleted(self, test_runners, test_results): 71 def OnTestsCompleted(self, test_runners, test_results):
72 """Notifies that we completed the tests.""" 72 """Notifies that we completed the tests."""
73 pass
74
75 def _KillHostForwarder(self):
73 Forwarder.KillHost(self.build_type) 76 Forwarder.KillHost(self.build_type)
74 77
75 def RunShardedTests(self): 78 def RunShardedTests(self):
76 """Runs the tests in all connected devices. 79 """Runs the tests in all connected devices.
77 80
78 Returns: 81 Returns:
79 A TestResults object. 82 A TestResults object.
80 """ 83 """
81 logging.warning('*' * 80) 84 logging.warning('*' * 80)
82 logging.warning('Sharding in ' + str(len(self.attached_devices)) + 85 logging.warning('Sharding in ' + str(len(self.attached_devices)) +
83 ' devices.') 86 ' devices.')
84 logging.warning('Note that the output is not synchronized.') 87 logging.warning('Note that the output is not synchronized.')
85 logging.warning('Look for the "Final result" banner in the end.') 88 logging.warning('Look for the "Final result" banner in the end.')
86 logging.warning('*' * 80) 89 logging.warning('*' * 80)
87 final_results = TestResults() 90 final_results = TestResults()
91 self._KillHostForwarder()
88 for retry in xrange(self.retries): 92 for retry in xrange(self.retries):
89 logging.warning('Try %d of %d', retry + 1, self.retries) 93 logging.warning('Try %d of %d', retry + 1, self.retries)
90 self.SetupSharding(self.tests) 94 self.SetupSharding(self.tests)
91 test_runners = [] 95 test_runners = []
92 96
93 # Try to create N shards, and retrying on failure. 97 # Try to create N shards, and retrying on failure.
94 try: 98 try:
95 for index, device in enumerate(self.attached_devices): 99 for index, device in enumerate(self.attached_devices):
96 logging.warning('*' * 80) 100 logging.warning('*' * 80)
97 logging.warning('Creating shard %d for %s', index, device) 101 logging.warning('Creating shard %d for %s', index, device)
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 self.tests = [] 139 self.tests = []
136 for t in test_results.GetAllBroken(): 140 for t in test_results.GetAllBroken():
137 self.tests += [t.name] 141 self.tests += [t.name]
138 if not self.tests: 142 if not self.tests:
139 break 143 break
140 else: 144 else:
141 # We ran out retries, possibly out of healthy devices. 145 # We ran out retries, possibly out of healthy devices.
142 # There's no recovery at this point. 146 # There's no recovery at this point.
143 raise Exception('Unrecoverable error while retrying test runs.') 147 raise Exception('Unrecoverable error while retrying test runs.')
144 self.OnTestsCompleted(test_runners, final_results) 148 self.OnTestsCompleted(test_runners, final_results)
149 self._KillHostForwarder()
145 return final_results 150 return final_results
OLDNEW
« no previous file with comments | « no previous file | build/android/pylib/forwarder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698