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

Side by Side Diff: Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py

Issue 27046003: Handle content_shell failing to start on android as device going offline. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Tools/Scripts/webkitpy/layout_tests/port/android.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) 2011 Google Inc. All rights reserved. 1 # Copyright (C) 2011 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 19 matching lines...) Expand all
30 import math 30 import math
31 import threading 31 import threading
32 import time 32 import time
33 33
34 from webkitpy.common import message_pool 34 from webkitpy.common import message_pool
35 from webkitpy.layout_tests.controllers import single_test_runner 35 from webkitpy.layout_tests.controllers import single_test_runner
36 from webkitpy.layout_tests.models.test_run_results import TestRunResults 36 from webkitpy.layout_tests.models.test_run_results import TestRunResults
37 from webkitpy.layout_tests.models import test_expectations 37 from webkitpy.layout_tests.models import test_expectations
38 from webkitpy.layout_tests.models import test_failures 38 from webkitpy.layout_tests.models import test_failures
39 from webkitpy.layout_tests.models import test_results 39 from webkitpy.layout_tests.models import test_results
40 from webkitpy.layout_tests.port import driver
40 from webkitpy.tool import grammar 41 from webkitpy.tool import grammar
41 42
42 43
43 _log = logging.getLogger(__name__) 44 _log = logging.getLogger(__name__)
44 45
45 46
46 TestExpectations = test_expectations.TestExpectations 47 TestExpectations = test_expectations.TestExpectations
47 48
48 # Export this so callers don't need to know about message pools. 49 # Export this so callers don't need to know about message pools.
49 WorkerException = message_pool.WorkerException 50 WorkerException = message_pool.WorkerException
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 self._host = self._caller.host 232 self._host = self._caller.host
232 self._filesystem = self._host.filesystem 233 self._filesystem = self._host.filesystem
233 self._port = self._host.port_factory.get(self._options.platform, self._o ptions) 234 self._port = self._host.port_factory.get(self._options.platform, self._o ptions)
234 235
235 self._batch_count = 0 236 self._batch_count = 0
236 self._batch_size = self._options.batch_size or 0 237 self._batch_size = self._options.batch_size or 0
237 238
238 def handle(self, name, source, test_list_name, test_inputs): 239 def handle(self, name, source, test_list_name, test_inputs):
239 assert name == 'test_list' 240 assert name == 'test_list'
240 for i, test_input in enumerate(test_inputs): 241 for i, test_input in enumerate(test_inputs):
241 device_offline = self._run_test(test_input, test_list_name) 242 try:
242 if device_offline: 243 device_offline = self._run_test(test_input, test_list_name)
243 self._caller.post('device_offline', test_list_name, test_inputs[ i + 1:]) 244 # FIXME: Do we need both the DriverOutput.device_offline and the exception?
245 if device_offline:
Peter Beverloo 2013/10/15 16:40:08 nit: throw a DeviceOffline exception to avoid code
246 self._caller.post('device_offline', test_list_name, test_inp uts[i + 1:])
247 self._caller.stop_running()
248 return
249 except driver.DeviceOffline as e:
250 _log.error('Device offline: %s' % repr(e))
251 self._caller.post('device_offline', test_list_name, test_inputs[ i:])
244 self._caller.stop_running() 252 self._caller.stop_running()
245 return 253 return
246 254
247 self._caller.post('finished_test_list', test_list_name) 255 self._caller.post('finished_test_list', test_list_name)
248 256
249 def _update_test_input(self, test_input): 257 def _update_test_input(self, test_input):
250 if test_input.reference_files is None: 258 if test_input.reference_files is None:
251 # Lazy initialization. 259 # Lazy initialization.
252 test_input.reference_files = self._port.reference_files(test_input.t est_name) 260 test_input.reference_files = self._port.reference_files(test_input.t est_name)
253 if test_input.reference_files: 261 if test_input.reference_files:
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 def split_at(seq, index): 490 def split_at(seq, index):
483 return (seq[:index], seq[index:]) 491 return (seq[:index], seq[index:])
484 492
485 num_old_per_new = divide_and_round_up(len(old_shards), max_new_shards) 493 num_old_per_new = divide_and_round_up(len(old_shards), max_new_shards)
486 new_shards = [] 494 new_shards = []
487 remaining_shards = old_shards 495 remaining_shards = old_shards
488 while remaining_shards: 496 while remaining_shards:
489 some_shards, remaining_shards = split_at(remaining_shards, num_old_p er_new) 497 some_shards, remaining_shards = split_at(remaining_shards, num_old_p er_new)
490 new_shards.append(TestShard('%s_%d' % (shard_name_prefix, len(new_sh ards) + 1), extract_and_flatten(some_shards))) 498 new_shards.append(TestShard('%s_%d' % (shard_name_prefix, len(new_sh ards) + 1), extract_and_flatten(some_shards)))
491 return new_shards 499 return new_shards
OLDNEW
« no previous file with comments | « no previous file | Tools/Scripts/webkitpy/layout_tests/port/android.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698