⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 245826 in webkit


Ignore:
Timestamp:
May 28, 2019, 2:55:50 PM (7 years ago)
Author:
Dewei Zhu
Message:

Limit run-benchmark http server to specific interface.
https://bugs.webkit.org/show_bug.cgi?id=198247

Reviewed by Ryosuke Niwa.

Add '--interface' option to 'twisted_http_server.py'.
'SimpleHTTPServerDriver' should specify interface for http server.
Update regex that determines http server port from 'lsof' output to support ipv6 address.

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py:

Added '--interface' argument.

  • Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:

Limited http server to a specific interfce.
Added '-P' option to 'lsof' invocation to inhibits the conversion of port numbers to port name so script won't
fail if it's listening on a 'well-known' port.
Abstracted '_check_http_server_is_running' to allow potential child class to have its own implementation.
(SimpleHTTPServerDriver.serve): Updated regex that determines http server port from 'lsof' output to support ipv6 address.
(SimpleHTTPServerDriver.kill_server): Added null check for 'self._server_process'.

Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r245824 r245826  
     12019-05-25  Dewei Zhu  <dewei_zhu@apple.com>
     2
     3        Limit run-benchmark http server to specific interface.
     4        https://bugs.webkit.org/show_bug.cgi?id=198247
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Add '--interface' option to 'twisted_http_server.py'.
     9        'SimpleHTTPServerDriver' should specify interface for http server.
     10        Update regex that determines http server port from 'lsof' output to support ipv6 address.
     11
     12        * Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py:
     13        Added '--interface' argument.
     14        * Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
     15        Limited http server to a specific interfce.
     16        Added '-P' option to 'lsof' invocation to inhibits the conversion of port numbers to port name so script won't
     17        fail if it's listening on a 'well-known' port.
     18        Abstracted '_check_http_server_is_running' to allow potential child class to have its own implementation.
     19        (SimpleHTTPServerDriver.serve): Updated regex that determines http server port from 'lsof' output to support ipv6 address.
     20        (SimpleHTTPServerDriver.kill_server): Added null check for 'self._server_process'.
     21
    1222019-05-28  David Xiong  <w_xiong@apple.com>
    223
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py

    r208205 r245826  
    4141    parser.add_argument('web_root')
    4242    parser.add_argument('--port', type=int, default=0)
     43    parser.add_argument('--interface', default='')
    4344    args = parser.parse_args()
    4445    web_root = static.File(args.web_root)
     
    4647    web_root.putChild('shutdown', serverControl)
    4748    web_root.putChild('report', serverControl)
    48     reactor.listenTCP(args.port, server.Site(web_root))
     49    reactor.listenTCP(args.port, server.Site(web_root), interface=args.interface)
    4950    reactor.run()
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py

    r225698 r245826  
    3131        _log.info('Launching an http server')
    3232        http_server_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "http_server/twisted_http_server.py")
    33         self._server_process = subprocess.Popen(["python", http_server_path, web_root], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     33        interface_args = []
     34        if self._ip:
     35            interface_args.extend(['--interface', self._ip])
     36        self._server_process = subprocess.Popen(["python", http_server_path, web_root] + interface_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    3437
    3538        max_attempt = 5
     
    5255            for attempt in xrange(max_attempt):
    5356                try:
    54                     output = subprocess.check_output(['/usr/sbin/lsof', '-a', '-iTCP', '-sTCP:LISTEN', '-p', str(self._server_process.pid)])
    55                     self._server_port = int(re.search('TCP \*:(\d+) \(LISTEN\)', output).group(1))
     57                    output = subprocess.check_output(['/usr/sbin/lsof', '-a', '-P', '-iTCP', '-sTCP:LISTEN', '-p', str(self._server_process.pid)])
     58                    self._server_port = int(re.search('TCP .*:(\d+) \(LISTEN\)', output).group(1))
    5659                    if self._server_port:
    5760                        _log.info('HTTP Server is serving at port: %d', self._server_port)
     
    6467            else:
    6568                raise Exception("Cannot listen to server, max tries exceeded")
     69        self._wait_for_http_server()
    6670
     71    def _wait_for_http_server(self):
     72        max_attempt = 5
    6773        # Wait for server to be up completely before exiting
    6874        for attempt in xrange(max_attempt):
     
    7278            except Exception as error:
    7379                _log.info('Server not running yet: %s' % error)
    74                 time.sleep(interval)
     80                time.sleep(1)
    7581        raise Exception('Server not running, max tries exceeded: %s' % error)
    7682
     
    8591    def kill_server(self):
    8692        try:
     93            if not self._server_process:
     94                return
    8795            if self._server_process.poll() is None:
    8896                self._server_process.terminate()
Note: See TracChangeset for help on using the changeset viewer.