| Index: build/android/lighttpd_server.py
|
| diff --git a/build/android/lighttpd_server.py b/build/android/lighttpd_server.py
|
| index ffe985b029193cbe8bcd75895e36d4c6c294c8bb..6f93e617cd97913d593e5a3114826309fd321663 100755
|
| --- a/build/android/lighttpd_server.py
|
| +++ b/build/android/lighttpd_server.py
|
| @@ -1,5 +1,6 @@
|
| #!/usr/bin/env python
|
| -# Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +#
|
| +# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| @@ -17,8 +18,12 @@ import pexpect
|
| import random
|
| import shutil
|
| import socket
|
| +import subprocess
|
| import sys
|
| import tempfile
|
| +import time
|
| +
|
| +from pylib import constants
|
|
|
|
|
| class LighttpdServer(object):
|
| @@ -45,7 +50,7 @@ class LighttpdServer(object):
|
| self.temp_dir = tempfile.mkdtemp(prefix='lighttpd_for_chrome_android')
|
| self.document_root = os.path.abspath(document_root)
|
| self.fixed_port = port
|
| - self.port = port or 9000
|
| + self.port = port or constants.LIGHTTPD_DEFAULT_PORT
|
| self.server_tag = 'LightTPD ' + str(random.randint(111111, 999999))
|
| self.lighttpd_path = lighttpd_path or '/usr/sbin/lighttpd'
|
| self.lighttpd_module_path = lighttpd_module_path or '/usr/lib/lighttpd'
|
| @@ -61,13 +66,15 @@ class LighttpdServer(object):
|
| return os.path.join(self.temp_dir, name)
|
|
|
| def _GetRandomPort(self):
|
| - # Ports 8001-8004 are reserved for other test servers. Ensure we don't
|
| - # collide with them.
|
| - return random.randint(8005, 8999)
|
| + # The ports of test server is arranged in constants.py.
|
| + return random.randint(constants.LIGHTTPD_RANDOM_PORT_FIRST,
|
| + constants.LIGHTTPD_RANDOM_PORT_LAST)
|
|
|
| def StartupHttpServer(self):
|
| """Starts up a http server with specified document root and port."""
|
| - # Currently we use lighttpd as http sever in test.
|
| + # If we want a specific port, make sure no one else is listening on it.
|
| + if self.fixed_port:
|
| + self._KillProcessListeningOnPort(self.fixed_port)
|
| while True:
|
| if self.base_config_path:
|
| # Read the config
|
| @@ -139,6 +146,19 @@ class LighttpdServer(object):
|
| break
|
| return (client_error or 'Timeout', server_msg)
|
|
|
| + def _KillProcessListeningOnPort(self, port):
|
| + """Checks if there is a process listening on port number |port| and
|
| + terminates it if found.
|
| +
|
| + Args:
|
| + port: Port number to check.
|
| + """
|
| + if subprocess.call(['fuser', '-kv', '%d/tcp' % port]) == 0:
|
| + # Give the process some time to terminate and check that it is gone.
|
| + time.sleep(2)
|
| + assert subprocess.call(['fuser', '-v', '%d/tcp' % port]) != 0, \
|
| + 'Unable to kill process listening on port %d.' % port
|
| +
|
| def _GetDefaultBaseConfig(self):
|
| return """server.tag = "%(server_tag)s"
|
| server.modules = ( "mod_access",
|
|
|