Example #1
0
    def test_start_cmd(self):
        # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726
        if sys.platform.startswith('win') or sys.platform == 'cygwin':
            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 = LayoutTestApacheHttpd(test_port, "/mock/output_dir")
        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.assertTrue(host.filesystem.exists("/mock/output_dir/httpd.conf"))
Example #2
0
    def test_start_cmd(self):
        # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726
        if sys.platform in ('cygwin', 'win32'):
            return

        host = MockHost()
        test_port = test.TestPort(host)
        host.filesystem.write_text_file(
            "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf",
            "Mock Config\n")
        host.filesystem.write_text_file("/usr/lib/lighttpd/liblightcomp.dylib",
                                        "Mock dylib")

        server = Lighttpd(test_port,
                          "/mock/output_dir",
                          additional_dirs={
                              "/mock/one-additional-dir":
                              "/mock-checkout/one-additional-dir",
                              "/mock/another-additional-dir":
                              "/mock-checkout/one-additional-dir"
                          })
        self.assertRaises(ServerError, server.start)

        config_file = host.filesystem.read_text_file(
            "/mock/output_dir/lighttpd.conf")
        self.assertEqual(re.findall(r"alias.url.+", config_file), [
            'alias.url = ( "/js-test-resources" => "/test.checkout/LayoutTests/resources" )',
            'alias.url += ( "/mock/one-additional-dir" => "/mock-checkout/one-additional-dir" )',
            'alias.url += ( "/mock/another-additional-dir" => "/mock-checkout/one-additional-dir" )',
            'alias.url += ( "/media-resources" => "/test.checkout/LayoutTests/media" )',
        ])
    def test_start_cmd(self):
        # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726
        if sys.platform.startswith('win') or sys.platform == 'cygwin':
            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(), '')
        host.filesystem.write_text_file(
            "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/aliases.json", '[["/js-test-resources", "resources"], ["/media-resources", "media"], ["/test/test.file", "resources/testfile"]]')

        server = LayoutTestApacheHttpd(test_port, "/mock/output_dir")
        server._check_that_all_ports_are_available = lambda: True
        server._is_server_running_on_all_ports = lambda: True
        server._wait_for_action = fake_pid

        self.assertEqual(server.ports_to_forward(), [8000, 8080, 8443])

        oc = OutputCapture()
        try:
            oc.capture_output()
            server.start()
            server.stop()
        finally:
            _, _, logs = oc.restore_output()
        self.assertTrue(host.filesystem.exists("/mock/output_dir/httpd.conf"))
    def test_win32_start_and_stop(self):
        host = MockHost()
        test_port = test.TestPort(host)
        host.filesystem.write_text_file(
            "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf",
            "Mock Config\n")
        host.filesystem.write_text_file("/usr/lib/lighttpd/liblightcomp.dylib",
                                        "Mock dylib")
        host.filesystem.write_text_file(
            "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/aliases.json",
            '[["/js-test-resources", "resources"], ["/media-resources", "media"], ["/test/test.file", "resources/testfile"]]'
        )

        host.platform.is_win = lambda: True
        host.platform.is_cygwin = lambda: False

        server = Lighttpd(test_port,
                          "/mock/output_dir",
                          additional_dirs={
                              "/mock/one-additional-dir":
                              "/mock-checkout/one-additional-dir",
                              "/mock/another-additional-dir":
                              "/mock-checkout/one-additional-dir"
                          })
        server._check_that_all_ports_are_available = lambda: True
        server._is_server_running_on_all_ports = lambda: True

        server.start()
        self.assertNotEquals(host.executive.calls, [])

        def wait_for_action(action):
            if action():
                return True
            return action()

        def mock_returns(return_values):
            def return_value_thunk(*args, **kwargs):
                return return_values.pop(0)

            return return_value_thunk

        host.executive.check_running_pid = mock_returns([True, False])
        server._wait_for_action = wait_for_action

        server.stop()
        self.assertEqual(['taskkill.exe', '/f', '/t', '/pid', 42],
                         host.executive.calls[1])
    def test_test_timings_trie(self):
        test_port = test.TestPort(MockHost())
        individual_test_timings = []
        individual_test_timings.append(json_results_generator.TestResult('foo/bar/baz.html', elapsed_time=1.2))
        individual_test_timings.append(json_results_generator.TestResult('bar.html', elapsed_time=0.0001))
        trie = json_results_generator.test_timings_trie(test_port, individual_test_timings)

        expected_trie = {
          'bar.html': 0,
          'foo': {
              'bar': {
                  'baz.html': 1200,
              }
          }
        }

        self.assertEqual(json.dumps(trie), json.dumps(expected_trie))
Example #6
0
    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 = HttpServerBase(test_port)
        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.assertEqual(host.filesystem.files[server._pid_file], None)

        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.assertEqual(host.filesystem.files[server._pid_file], None)
    def test_build_alias_path_pairs(self):
        host = MockHost()
        test_port = test.TestPort(host)
        server = HttpServerBase(test_port)

        data = [
            ['/media-resources', 'media'],
            [
                '/modern-media-controls',
                '../Source/WebCore/Modules/modern-media-controls'
            ],
            ['/resources/testharness.css', 'resources/testharness.css'],
        ]

        expected = [
            ('/media-resources', '/test.checkout/LayoutTests/media'),
            ('/modern-media-controls',
             '/test.checkout/LayoutTests/../Source/WebCore/Modules/modern-media-controls'
             ),
            ('/resources/testharness.css',
             '/test.checkout/LayoutTests/resources/testharness.css'),
        ]

        self.assertEqual(server._build_alias_path_pairs(data), expected)