def setUp(self): super(TestWPTServe, self).setUp() self.host = MockHost() self.port = test.TestPort(self.host) self.host.filesystem.write_text_file( '/mock-checkout/third_party/blink/tools/blinkpy/third_party/wpt/wpt.config.json', '{"ports": {}, "aliases": []}')
def test_start_with_unkillable_zombie_process(self): # Allow asserting about debug logs. self.set_logging_level(logging.DEBUG) host = MockHost() test_port = test.TestPort(host) host.filesystem.write_text_file('/log_file_dir/access_log', 'foo') host.filesystem.write_text_file('/log_file_dir/error_log', 'foo') host.filesystem.write_text_file('/tmp/pidfile', '7') server = WPTServe(test_port, '/log_file_dir') server._pid_file = '/tmp/pidfile' server._spawn_process = lambda: 4 server._is_server_running_on_all_ports = lambda: True # Simulate a process that never gets killed. host.executive.check_running_pid = lambda _: True server.start() self.assertEqual(server._pid, 4) self.assertIsNone(host.filesystem.files[server._pid_file]) # In this case, we'll try to kill the process repeatedly, # then give up and just try to start a new process anyway. logs = self.logMessages() self.assertEqual(len(logs), 43) self.assertEqual(logs[:2], [ 'DEBUG: stale wptserve pid file, pid 7\n', 'DEBUG: pid 7 is running, killing it\n' ]) self.assertEqual(logs[-2:], [ 'DEBUG: all ports are available\n', 'DEBUG: wptserve successfully started (pid = 4)\n' ])
def test_start_cmd(self): # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726 if sys.platform == 'win32': return def fake_pid(_): host.filesystem.write_text_file('/tmp/WebKit/httpd.pid', '42') return True host = MockHost() host.executive = MockExecutive(should_log=True) test_port = test.TestPort(host) host.filesystem.write_text_file(test_port.path_to_apache_config_file(), '') server = ApacheHTTP(test_port, '/mock/output_dir', additional_dirs=[], number_of_servers=4) server._check_that_all_ports_are_available = lambda: True server._is_server_running_on_all_ports = lambda: True server._wait_for_action = fake_pid oc = OutputCapture() try: oc.capture_output() server.start() server.stop() finally: _, _, logs = oc.restore_output() self.assertIn('StartServers 4', logs) self.assertIn('MinSpareServers 4', logs) self.assertIn('MaxSpareServers 4', logs)
def test_init_env(self): test_port = test.TestPort(MockHost()) server = WPTServe(test_port, '/foo') self.assertEqual( server._env, # pylint: disable=protected-access { 'MOCK_ENVIRON_COPY': '1', 'PATH': '/bin:/mock/bin', 'PYTHONPATH': '/mock-checkout/third_party/pywebsocket/src' })
def test_init_start_cmd(self): test_port = test.TestPort(MockHost()) server = WPTServe(test_port, '/foo') self.assertEqual( server._start_cmd, # pylint: disable=protected-access [ 'python', '-u', '/mock-checkout/third_party/blink/tools/blinkpy/third_party/wpt/wpt/wpt', 'serve', '--config', '/mock-checkout/third_party/blink/tools/blinkpy/third_party/wpt/wpt.config.json', '--doc_root', '/test.checkout/LayoutTests/external/wpt' ])
def test_corrupt_pid_file(self): # This tests that if the pid file is corrupt or invalid, # both start() and stop() deal with it correctly and delete the file. host = MockHost() test_port = test.TestPort(host) server = ServerBase(test_port, test_port.default_results_directory()) server._pid_file = '/tmp/pidfile' server._spawn_process = lambda: 4 server._is_server_running_on_all_ports = lambda: True host.filesystem.write_text_file(server._pid_file, 'foo') server.stop() self.assertIsNone(host.filesystem.files[server._pid_file]) host.filesystem.write_text_file(server._pid_file, 'foo') server.start() self.assertEqual(server._pid, 4) # Note that the pid file would not be None if _spawn_process() # was actually a real implementation. self.assertIsNone(host.filesystem.files[server._pid_file])