| Index: Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py | 
| diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py | 
| index 2847f84ad6aca20525f2b130539557f81daf1ff3..939e8bdb7eec2ce4fad863b219088d919e8e9859 100644 | 
| --- a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py | 
| +++ b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py | 
| @@ -72,26 +72,18 @@ class LayoutTestRunner(object): | 
|  | 
| self._expectations = None | 
| self._test_inputs = [] | 
| -        self._needs_http = None | 
| -        self._needs_websockets = None | 
| self._retrying = False | 
|  | 
| self._current_run_results = None | 
| -        self._remaining_locked_shards = [] | 
| -        self._has_http_lock = False | 
|  | 
| -    def run_tests(self, expectations, test_inputs, tests_to_skip, num_workers, needs_http, needs_websockets, retrying): | 
| +    def run_tests(self, expectations, test_inputs, tests_to_skip, num_workers, retrying): | 
| self._expectations = expectations | 
| self._test_inputs = test_inputs | 
| -        self._needs_http = needs_http | 
| -        self._needs_websockets = needs_websockets | 
| self._retrying = retrying | 
|  | 
| # FIXME: rename all variables to test_run_results or some such ... | 
| run_results = TestRunResults(self._expectations, len(test_inputs) + len(tests_to_skip)) | 
| self._current_run_results = run_results | 
| -        self._remaining_locked_shards = [] | 
| -        self._has_http_lock = False | 
| self._printer.num_tests = len(test_inputs) | 
| self._printer.num_completed = 0 | 
|  | 
| @@ -106,19 +98,10 @@ class LayoutTestRunner(object): | 
| self._printer.write_update('Sharding tests ...') | 
| locked_shards, unlocked_shards = self._sharder.shard_tests(test_inputs, int(self._options.child_processes), self._options.fully_parallel) | 
|  | 
| -        # FIXME: We don't have a good way to coordinate the workers so that | 
| -        # they don't try to run the shards that need a lock if we don't actually | 
| -        # have the lock. The easiest solution at the moment is to grab the | 
| -        # lock at the beginning of the run, and then run all of the locked | 
| -        # shards first. This minimizes the time spent holding the lock, but | 
| -        # means that we won't be running tests while we're waiting for the lock. | 
| -        # If this becomes a problem in practice we'll need to change this. | 
| - | 
| +        # We don't have a good way to coordinate the workers so that they don't | 
| +        # try to run the shards that need a lock. The easiest solution is to | 
| +        # run all of the locked shards first. | 
| all_shards = locked_shards + unlocked_shards | 
| -        self._remaining_locked_shards = locked_shards | 
| -        if self._port.requires_http_server() or locked_shards: | 
| -            self.start_servers_with_lock(2 * min(num_workers, len(locked_shards))) | 
| - | 
| num_workers = min(num_workers, len(all_shards)) | 
| self._printer.print_workers_and_shards(num_workers, len(all_shards), len(locked_shards)) | 
|  | 
| @@ -140,8 +123,6 @@ class LayoutTestRunner(object): | 
| except Exception, e: | 
| _log.debug('%s("%s") raised, exiting' % (e.__class__.__name__, str(e))) | 
| raise | 
| -        finally: | 
| -            self.stop_servers_with_lock() | 
|  | 
| return run_results | 
|  | 
| @@ -193,29 +174,6 @@ class LayoutTestRunner(object): | 
|  | 
| self._interrupt_if_at_failure_limits(run_results) | 
|  | 
| -    def start_servers_with_lock(self, number_of_servers): | 
| -        self._printer.write_update('Acquiring http lock ...') | 
| -        self._port.acquire_http_lock() | 
| -        if self._needs_http: | 
| -            self._printer.write_update('Starting HTTP server ...') | 
| -            self._port.start_http_server(number_of_servers=number_of_servers) | 
| -        if self._needs_websockets: | 
| -            self._printer.write_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: | 
| -            if self._needs_http: | 
| -                self._printer.write_update('Stopping HTTP server ...') | 
| -                self._port.stop_http_server() | 
| -            if self._needs_websockets: | 
| -                self._printer.write_update('Stopping WebSocket server ...') | 
| -                self._port.stop_websocket_server() | 
| -            self._printer.write_update('Releasing server lock ...') | 
| -            self._port.release_http_lock() | 
| -            self._has_http_lock = False | 
| - | 
| def handle(self, name, source, *args): | 
| method = getattr(self, '_handle_' + name) | 
| if method: | 
| @@ -226,17 +184,7 @@ class LayoutTestRunner(object): | 
| self._printer.print_started_test(test_input.test_name) | 
|  | 
| def _handle_finished_test_list(self, worker_name, list_name): | 
| -        def find(name, test_lists): | 
| -            for i in range(len(test_lists)): | 
| -                if test_lists[i].name == name: | 
| -                    return i | 
| -            return -1 | 
| - | 
| -        index = find(list_name, self._remaining_locked_shards) | 
| -        if index >= 0: | 
| -            self._remaining_locked_shards.pop(index) | 
| -            if not self._remaining_locked_shards and not self._port.requires_http_server(): | 
| -                self.stop_servers_with_lock() | 
| +        pass | 
|  | 
| def _handle_finished_test(self, worker_name, result, log_messages=[]): | 
| self._update_summary_with_result(self._current_run_results, result) | 
|  |