Title: [90207] trunk/Tools
Revision
90207
Author
[email protected]
Date
2011-06-30 23:34:47 -0700 (Thu, 30 Jun 2011)

Log Message

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:

Modified Paths

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__':
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to