Title: [89642] trunk/Tools
Revision
89642
Author
[email protected]
Date
2011-06-23 17:33:42 -0700 (Thu, 23 Jun 2011)

Log Message

2011-06-23  Dirk Pranke  <[email protected]>

        Reviewed by Tony Chang.

        nrwt: move http locking code into manager
        https://bugs.webkit.org/show_bug.cgi?id=63103

        * Scripts/webkitpy/layout_tests/layout_package/manager.py:
        * Scripts/webkitpy/layout_tests/layout_package/worker.py:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (89641 => 89642)


--- trunk/Tools/ChangeLog	2011-06-24 00:28:54 UTC (rev 89641)
+++ trunk/Tools/ChangeLog	2011-06-24 00:33:42 UTC (rev 89642)
@@ -1,3 +1,13 @@
+2011-06-23  Dirk Pranke  <[email protected]>
+
+        Reviewed by Tony Chang.
+
+        nrwt: move http locking code into manager
+        https://bugs.webkit.org/show_bug.cgi?id=63103
+
+        * Scripts/webkitpy/layout_tests/layout_package/manager.py:
+        * Scripts/webkitpy/layout_tests/layout_package/worker.py:
+
 2011-06-23  Alok Priyadarshi  <[email protected]>
 
         Reviewed by James Robinson.

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py (89641 => 89642)


--- trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py	2011-06-24 00:28:54 UTC (rev 89641)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py	2011-06-24 00:33:42 UTC (rev 89642)
@@ -262,8 +262,8 @@
         self.HTTP_SUBDIR = self._fs.join('', 'http', '')
         self.WEBSOCKET_SUBDIR = self._fs.join('', 'websocket', '')
         self.LAYOUT_TESTS_DIRECTORY = "LayoutTests" + self._fs.sep
+        self._has_http_lock = False
 
-
         # disable wss server. need to install pyOpenSSL on buildbots.
         # self._websocket_secure_server = websocket_server.PyWebSocket(
         #        options.results_directory, use_tls=True, port=9323)
@@ -282,7 +282,6 @@
         # This maps worker names to the state we are tracking for each of them.
         self._worker_states = {}
 
-
     def collect_tests(self, args, last_unexpected_results):
         """Find all the files to test.
 
@@ -630,6 +629,11 @@
         test_lists = self._shard_tests(file_list,
             int(self._options.child_processes) > 1 and not self._options.experimental_fully_parallel)
 
+        # FIXME: we need a less hard-coded way of figuring out if we need to
+        # start the servers.
+        if test_lists[0][0] == 'tests_to_http_lock':
+            self.start_servers_with_lock()
+
         num_workers = self._num_workers(len(test_lists))
         manager_connection = manager_worker_broker.get(self._port, self._options,
                                                        self, worker.Worker)
@@ -698,6 +702,8 @@
             _log.error("Exception raised, exiting")
             self.cancel_workers()
             raise
+        finally:
+            self.stop_servers_with_lock()
 
         thread_timings = [worker_state.stats for worker_state in self._worker_states.values()]
 
@@ -848,6 +854,25 @@
         # bot red for those.
         return unexpected_results['num_regressions']
 
+    def start_servers_with_lock(self):
+        self._printer.print_update('Acquiring http lock ...')
+        self._port.acquire_http_lock()
+        self._printer.print_update('Starting HTTP server ...')
+        self._port.start_http_server()
+        self._printer.print_update('Starting WebSocket server ...')
+        self._port.start_websocket_server()
+        self._has_http_lock = True
+
+    def stop_servers_with_lock(self):
+        if self._has_http_lock:
+            self._printer.print_update('Stopping HTTP server ...')
+            self._port.stop_http_server()
+            self._printer.print_update('Stopping WebSocket server ...')
+            self._port.stop_websocket_server()
+            self._printer.print_update('Releasing server lock ...')
+            self._port.release_http_lock()
+            self._has_http_lock = False
+
     def clean_up_run(self):
         """Restores the system after we're done running tests."""
 

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/worker.py (89641 => 89642)


--- trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/worker.py	2011-06-24 00:28:54 UTC (rev 89641)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/worker.py	2011-06-24 00:33:42 UTC (rev 89642)
@@ -71,12 +71,6 @@
                                                    "tests_run%d.txt" % self._worker_number)
         self._tests_run_file = self._filesystem.open_text_file_for_writing(tests_run_filename)
 
-        # FIXME: it's goofy that we have to track this at all, but it's due to
-        # the awkward logic in TestShellThread._run(). When we remove that
-        # file, we should rewrite this code so that caller keeps track of whether
-        # the lock is held.
-        self._has_http_lock = False
-
     def cancel(self):
         """Attempt to abort processing (best effort)."""
         self._canceled = True
@@ -118,9 +112,6 @@
         self._worker_connection.post_message('exception', exception_type, exception_value, stack)
 
     def handle_test_list(self, src, list_name, test_list):
-        if list_name == "tests_to_http_lock":
-            self.start_servers_with_lock()
-
         start_time = time.time()
         num_tests = 0
         for test_input in test_list:
@@ -131,8 +122,6 @@
         elapsed_time = time.time() - start_time
         self._worker_connection.post_message('finished_list', list_name, num_tests, elapsed_time)
 
-        self.stop_servers_with_lock()
-
     def handle_stop(self, src):
         self._done = True
 
@@ -151,7 +140,6 @@
     def cleanup(self):
         _log.debug("%s cleaning up" % self._name)
         self.kill_driver()
-        self.stop_servers_with_lock()
         if self._tests_run_file:
             self._tests_run_file.close()
             self._tests_run_file = None
@@ -172,25 +160,6 @@
         thread_timeout_sec = driver_timeout_sec + thread_padding_sec
         return thread_timeout_sec
 
-    def start_servers_with_lock(self):
-        _log.debug('Acquiring http lock ...')
-        self._port.acquire_http_lock()
-        _log.debug('Starting HTTP server ...')
-        self._port.start_http_server()
-        _log.debug('Starting WebSocket server ...')
-        self._port.start_websocket_server()
-        self._has_http_lock = True
-
-    def stop_servers_with_lock(self):
-        if self._has_http_lock:
-            _log.debug('Stopping HTTP server ...')
-            self._port.stop_http_server()
-            _log.debug('Stopping WebSocket server ...')
-            self._port.stop_websocket_server()
-            _log.debug('Releasing server lock ...')
-            self._port.release_http_lock()
-            self._has_http_lock = False
-
     def kill_driver(self):
         if self._driver:
             self._driver.stop()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to