Changeset 235225 in webkit


Ignore:
Timestamp:
Aug 23, 2018, 8:51:14 AM (7 years ago)
Author:
youenn@apple.com
Message:

Use "wpt serve" to launch WPT server
https://bugs.webkit.org/show_bug.cgi?id=188848

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • resources/config.json:

Use config alias to serve http/wpt content as /WebKit/

Tools:

Use "wpt serve" provided by WPT instead of using our custom launcher.
This simplifies things and will avoid future breakage.
Further simplify web_platform_test_server.py by removing no longer needed actions.

  • Do not copy files but use alias
  • Do not kill main pid, which leaves subprocesses alive, use interrupt instead.
  • Stop enumerating subprocess pids.
  • Scripts/webkitpy/common/system/executive_mock.py:

(MockExecutive.interrupt):

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py: Removed.
  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(WebPlatformTestServer.init):
(WebPlatformTestServer.ports_to_forward):
(WebPlatformTestServer._prepare_config):
(WebPlatformTestServer._spawn_process):
(WebPlatformTestServer._stop_running_server):

Location:
trunk
Files:
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r235174 r235225  
     12018-08-23  Youenn Fablet  <youenn@apple.com>
     2
     3        Use "wpt serve" to launch WPT server
     4        https://bugs.webkit.org/show_bug.cgi?id=188848
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        * resources/config.json:
     9        Use config alias to serve http/wpt content as /WebKit/
     10
    1112018-08-22  Rob Buis  <rbuis@igalia.com>
    212
  • trunk/LayoutTests/imported/w3c/resources/config.json

    r229937 r235225  
    55 "aliases": [
    66          {"url-path": "/resources/testharnessreport.js", "local-dir":"../../../resources/"},
    7           {"url-path": "/resources/testharness.css", "local-dir":"../../../resources/"}],
     7          {"url-path": "/resources/testharness.css", "local-dir":"../../../resources/"},
     8          {"url-path": "/WebKit/", "local-dir":"../../../http/wpt/"}],
    89 "check_subdomains": false,
    910 "log_level":"debug",
  • trunk/Tools/ChangeLog

    r235222 r235225  
     12018-08-23  Youenn Fablet  <youenn@apple.com>
     2
     3        Use "wpt serve" to launch WPT server
     4        https://bugs.webkit.org/show_bug.cgi?id=188848
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Use "wpt serve" provided by WPT instead of using our custom launcher.
     9        This simplifies things and will avoid future breakage.
     10        Further simplify web_platform_test_server.py by removing no longer needed actions.
     11        - Do not copy files but use alias
     12        - Do not kill main pid, which leaves subprocesses alive, use interrupt instead.
     13        - Stop enumerating subprocess pids.
     14
     15        * Scripts/webkitpy/common/system/executive_mock.py:
     16        (MockExecutive.interrupt):
     17        * Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py: Removed.
     18        * Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:
     19        (WebPlatformTestServer.__init__):
     20        (WebPlatformTestServer.ports_to_forward):
     21        (WebPlatformTestServer._prepare_config):
     22        (WebPlatformTestServer._spawn_process):
     23        (WebPlatformTestServer._stop_running_server):
     24
    1252018-08-23  Jonathan Bedard  <jbedard@apple.com>
    226
  • trunk/Tools/Scripts/webkitpy/common/system/executive_mock.py

    r231452 r235225  
    144144        pass
    145145
     146    def interrupt(self, pid):
     147        pass
     148
    146149    def popen(self, args, cwd=None, env=None, **kwargs):
    147150        self.calls.append(args)
  • trunk/Tools/Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py

    r229937 r235225  
    8787        if not self._pid_file:
    8888            self._pid_file = self._filesystem.join(self._runtime_path, '%s.pid' % self._name)
    89         self._servers_file = self._filesystem.join(self._runtime_path, '%s_servers.json' % (self._name))
    9089
    9190        self._filesystem = port_obj.host.filesystem
     
    9392        self._doc_root = self._filesystem.join(self._layout_root, doc_root(port_obj))
    9493
    95         self._resources_files_to_copy = []
     94        self._doc_root_path = self._filesystem.join(self._layout_root, self._doc_root)
     95        self._config_filename = self._filesystem.join(self._doc_root_path, "config.json")
    9696
    97         current_dir_path = self._filesystem.abspath(self._filesystem.split(__file__)[0])
    98         self._start_cmd = ["python", self._filesystem.join(current_dir_path, "web_platform_test_launcher.py"), self._servers_file]
    99         self._doc_root_path = self._filesystem.join(self._layout_root, self._doc_root)
     97        wpt_file = self._filesystem.join(self._doc_root_path, "wpt.py")
     98        self._start_cmd = ["python", wpt_file, "serve", "--config", self._config_filename]
    10099
    101100        self._mappings = []
     
    113112        return [mapping['port'] for mapping in self._mappings]
    114113
    115     def _copy_webkit_test_files(self):
    116         _log.debug('Copying WebKit resources files')
    117         for f in self._resources_files_to_copy:
    118             webkit_filename = self._filesystem.join(self._layout_root, "resources", f)
    119             if self._filesystem.isfile(webkit_filename):
    120                 self._filesystem.copyfile(webkit_filename, self._filesystem.join(self._doc_root, "resources", f))
     114    def _prepare_config(self):
     115        self._filesystem.maybe_make_directory(self._output_dir)
     116        self._output_log_path = self._filesystem.join(self._output_dir, self._log_file_name)
     117        self._wsout = self._filesystem.open_text_file_for_writing(self._output_log_path)
     118
    121119        _log.debug('Copying WebKit web platform server config.json')
    122120        config_wk_filename = self._filesystem.join(self._layout_root, "imported", "w3c", "resources", "config.json")
    123121        if self._filesystem.isfile(config_wk_filename):
    124122            config_json = self._filesystem.read_text_file(config_wk_filename).replace("%CERTS_DIR%", self._filesystem.join(self._output_dir, "_wpt_certs"))
    125             self._filesystem.write_text_file(self._filesystem.join(self._doc_root, "config.json"), config_json)
    126 
    127         wpt_testharnessjs_file = self._filesystem.join(self._doc_root, "resources", "testharness.js")
    128         layout_tests_testharnessjs_file = self._filesystem.join(self._layout_root, "resources", "testharness.js")
    129         if (not self._filesystem.compare(wpt_testharnessjs_file, layout_tests_testharnessjs_file)):
    130             _log.warning("\n//////////\nWPT tests are not using the same testharness.js file as other WebKit Layout tests.\nWebKit testharness.js might need to be updated according WPT testharness.js.\n//////////\n")
    131 
    132     def _clean_webkit_test_files(self):
    133         _log.debug('Cleaning WPT resources files')
    134         for f in self._resources_files_to_copy:
    135             wpt_filename = self._filesystem.join(self._doc_root, "resources", f)
    136             if self._filesystem.isfile(wpt_filename):
    137                 self._filesystem.remove(wpt_filename)
    138         _log.debug('Cleaning WPT web platform server config.json')
    139         config_wpt_filename = self._filesystem.join(self._doc_root, "config.json")
    140         if self._filesystem.isfile(config_wpt_filename):
    141             self._filesystem.remove(config_wpt_filename)
    142 
    143     def _prepare_config(self):
    144         self._filesystem.maybe_make_directory(self._output_dir)
    145         self._output_log_path = self._filesystem.join(self._output_dir, self._log_file_name)
    146         self._wsout = self._filesystem.open_text_file_for_writing(self._output_log_path)
    147         self._copy_webkit_test_files()
     123            self._filesystem.write_text_file(self._config_filename, config_json)
    148124
    149125    def _spawn_process(self):
     
    166142        return self._process.pid
    167143
    168     def _stop_running_subservers(self):
    169         if self._filesystem.exists(self._servers_file):
    170             try:
    171                 json_data = self._filesystem.read_text_file(self._servers_file)
    172                 started_servers = json.loads(json_data)
    173                 for server in started_servers:
    174                     if self._executive.check_running_pid(server['pid']):
    175                         _log.warning('Killing server process (protocol: %s , port: %d, pid: %d).' % (server['protocol'], server['port'], server['pid']))
    176                         self._executive.kill_process(server['pid'])
    177             finally:
    178                 self._filesystem.remove(self._servers_file)
     144    def _stop_running_server(self):
     145        _log.debug('Cleaning WPT web platform server config.json')
     146        if self._filesystem.isfile(self._config_filename):
     147            self._filesystem.remove(self._config_filename)
    179148
    180     def stop(self):
    181         super(WebPlatformTestServer, self).stop()
    182         # In case of orphaned pid, kill the running subservers if any still alive.
    183         self._stop_running_subservers()
    184 
    185     def _stop_running_server(self):
    186         _log.debug('Stopping %s server' % (self._name))
    187         self._clean_webkit_test_files()
    188 
    189         if self._process:
    190             self._process.communicate(input='\n')
    191149        if self._wsout:
    192150            self._wsout.close()
    193151            self._wsout = None
    194152
    195         if self._pid and self._executive.check_running_pid(self._pid):
    196             _log.warning('Cannot stop %s server normally.' % (self._name))
    197             _log.warning('Killing server launcher process (pid: %d).' % (self._pid))
    198             self._executive.kill_process(self._pid)
     153        if self._pid:
     154            # kill_process will not kill the subprocesses, interrupt does the job.
     155            self._executive.interrupt(self._pid)
    199156
    200157        self._remove_pid_file()
    201         self._stop_running_subservers()
Note: See TracChangeset for help on using the changeset viewer.