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()