Diff
Modified: trunk/Tools/ChangeLog (90206 => 90207)
--- trunk/Tools/ChangeLog 2011-07-01 06:06:59 UTC (rev 90206)
+++ trunk/Tools/ChangeLog 2011-07-01 06:34:47 UTC (rev 90207)
@@ -1,5 +1,23 @@
2011-06-30 Adam Barth <[email protected]>
+ Reviewed by Eric Seidel.
+
+ Remove the concept of "being wedged" from new-run-webkit-tests
+ https://bugs.webkit.org/show_bug.cgi?id=63767
+
+ Worker processes shouldn't ever become wedged. My understanding is
+ that this code was originally motivated by the old threading-based
+ design but no longer servers any purpose.
+
+ Note: If we actually have a problem with the test harness getting
+ stuck, buildbot will kill us.
+
+ * Scripts/webkitpy/layout_tests/layout_package/manager.py:
+ * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
+ * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
+
+2011-06-30 Adam Barth <[email protected]>
+
The win32 implementation of fork is sad about forking test-webkitpy.
Hopefully this will heal the bot.
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py (90206 => 90207)
--- trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py 2011-07-01 06:06:59 UTC (rev 90206)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py 2011-07-01 06:34:47 UTC (rev 90207)
@@ -672,19 +672,12 @@
try:
while not self.is_done():
- # We loop with a timeout in order to be able to detect wedged threads.
+ # FIXME: Do we need to run in a loop anymore?
manager_connection.run_message_loop(delay_secs=1.0)
- if any(worker_state.wedged for worker_state in self._worker_states.values()):
- _log.error('')
- _log.error('Remaining workers are wedged, bailing out.')
- _log.error('')
- else:
- _log.debug('No wedged threads')
-
# Make sure all of the workers have shut down (if possible).
for worker_state in self._worker_states.values():
- if not worker_state.wedged and worker_state.worker_connection.is_alive():
+ if worker_state.worker_connection.is_alive():
_log.debug('Waiting for worker %d to exit' % worker_state.number)
worker_state.worker_connection.join(5.0)
if worker_state.worker_connection.is_alive():
@@ -1317,21 +1310,10 @@
worker_states = self._worker_states.values()
return worker_states and all(self._worker_is_done(worker_state) for worker_state in worker_states)
+ # FIXME: Inline this function.
def _worker_is_done(self, worker_state):
- t = time.time()
- if worker_state.done or worker_state.wedged:
- return True
+ return worker_state.done
- next_timeout = worker_state.next_timeout
- WEDGE_PADDING = 40.0
- if next_timeout and t > next_timeout + WEDGE_PADDING:
- _log.error('')
- worker_state.worker_connection.log_wedged_worker(worker_state.current_test_name)
- _log.error('')
- worker_state.wedged = True
- return True
- return False
-
def cancel_workers(self):
for worker_state in self._worker_states.values():
worker_state.worker_connection.cancel()
@@ -1377,10 +1359,6 @@
worker_state.stats['total_time'] += elapsed_time
worker_state.stats['num_tests'] += 1
- if worker_state.wedged:
- # This shouldn't happen if we have our timeouts tuned properly.
- _log.error("%s unwedged", source)
-
self._all_results.append(result)
self._update_summary_with_result(self._current_result_summary, result)
@@ -1445,7 +1423,6 @@
self.done = False
self.current_test_name = None
self.next_timeout = None
- self.wedged = False
self.stats = {}
self.stats['name'] = worker_connection.name
self.stats['num_tests'] = 0
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py (90206 => 90207)
--- trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py 2011-07-01 06:06:59 UTC (rev 90206)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py 2011-07-01 06:34:47 UTC (rev 90207)
@@ -209,9 +209,6 @@
def join(self, timeout):
raise NotImplementedError
- def log_wedged_worker(self, test_name):
- raise NotImplementedError
-
def yield_to_broker(self):
pass
@@ -232,9 +229,6 @@
def join(self, timeout):
assert not self._alive
- def log_wedged_worker(self, test_name):
- assert False, "_InlineWorkerConnection.log_wedged_worker() called"
-
def run(self):
self._alive = True
self._client.run(self._port)
@@ -254,9 +248,6 @@
self._options = options
self._client = client
- def log_wedged_worker(self, test_name):
- _log.error("%s (pid %d) is wedged on test %s" % (self.name, self.pid, test_name))
-
def run(self):
options = self._options
port_obj = port.get(self._platform_name, options)
@@ -289,8 +280,5 @@
def join(self, timeout):
return self._proc.join(timeout)
- def log_wedged_worker(self, test_name):
- return self._proc.log_wedged_worker(test_name)
-
def start(self):
self._proc.start()
Modified: trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py (90206 => 90207)
--- trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py 2011-07-01 06:06:59 UTC (rev 90206)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py 2011-07-01 06:34:47 UTC (rev 90207)
@@ -186,25 +186,6 @@
self.assertEqual(self._an_int, 2)
self.assertEqual(self._a_str, 'hi, everybody')
- def test_log_wedged_worker(self):
- starting_queue = self.queue()
- stopping_queue = self.queue()
- self.make_broker(starting_queue, stopping_queue)
- oc = outputcapture.OutputCapture()
- oc.capture_output()
- try:
- worker = self._broker.start_worker(0)
- starting_queue.get()
- worker.log_wedged_worker('test_name')
- stopping_queue.put('')
- self._broker.post_message('stop')
- self._broker.run_message_loop()
- worker.join(0.5)
- self.assertFalse(worker.is_alive())
- self.assertTrue(self.is_done())
- finally:
- oc.restore_output()
-
def test_unknown_message(self):
self.make_broker()
worker = self._broker.start_worker(0)
@@ -219,17 +200,6 @@
"TestWorker/0: received message 'unknown' it couldn't handle")
-class InlineBrokerTests(_TestsMixin, unittest.TestCase):
- def setUp(self):
- _TestsMixin.setUp(self)
- self._worker_model = 'inline'
-
- def test_log_wedged_worker(self):
- self.make_broker()
- worker = self._broker.start_worker(0)
- self.assertRaises(AssertionError, worker.log_wedged_worker, None)
-
-
# FIXME: https://bugs.webkit.org/show_bug.cgi?id=54520.
if multiprocessing and sys.platform not in ('cygwin', 'win32'):
@@ -270,7 +240,6 @@
self.assertRaises(NotImplementedError, obj.cancel)
self.assertRaises(NotImplementedError, obj.is_alive)
self.assertRaises(NotImplementedError, obj.join, None)
- self.assertRaises(NotImplementedError, obj.log_wedged_worker, None)
if __name__ == '__main__':