diff options
author | mhm@chromium.org <mhm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-07 23:53:57 +0000 |
---|---|---|
committer | mhm@chromium.org <mhm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-07 23:53:57 +0000 |
commit | d9735af55ab6fe947c68eb27c686df901d260398 (patch) | |
tree | 57e50782673d320a12aa602a3d62db69bf894b1e | |
parent | 01c022ac4ee3ba1c3840544f3493cf0690e03125 (diff) | |
download | chromium_src-d9735af55ab6fe947c68eb27c686df901d260398.zip chromium_src-d9735af55ab6fe947c68eb27c686df901d260398.tar.gz chromium_src-d9735af55ab6fe947c68eb27c686df901d260398.tar.bz2 |
Clean up code duplication in layout test http_server.
Refactored out UrlIsAlive to live outside the ApacheHttpd class and imported http_utils.py into http_server.py
Now they share common code.
BUG=6784
TEST=started and stopped http_server successfully.
Review URL: http://codereview.chromium.org/243022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28351 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | tools/python/google/httpd_utils.py | 52 | ||||
-rwxr-xr-x[-rw-r--r--] | webkit/tools/layout_tests/layout_package/http_server.py | 38 |
2 files changed, 32 insertions, 58 deletions
diff --git a/tools/python/google/httpd_utils.py b/tools/python/google/httpd_utils.py index 309c924..e7cfe09 100644 --- a/tools/python/google/httpd_utils.py +++ b/tools/python/google/httpd_utils.py @@ -18,6 +18,31 @@ import google.platform_utils class HttpdNotStarted(Exception): pass +def UrlIsAlive(url): + """Checks to see if we get an http response from |url|. + We poll the url 5 times with a 1 second delay. If we don't + get a reply in that time, we give up and assume the httpd + didn't start properly. + + Args: + url: The URL to check. + Return: + True if the url is alive. + """ + wait_time = 5 + while wait_time > 0: + try: + response = urllib.urlopen(url) + # Server is up and responding. + return True + except IOError: + pass + wait_time -= 1 + # Wait a second and try again. + time.sleep(1) + + return False + def ApacheConfigDir(start_dir): """Returns a path to the directory holding the Apache config files.""" return google.path_utils.FindUpward(start_dir, 'tools', 'python', @@ -122,34 +147,9 @@ class ApacheHttpd(object): # Ensure that the server is running on all the desired ports. for port in self._port_list: - if not self._UrlIsAlive('http://127.0.0.1:%s/' % str(port)): + if not UrlIsAlive('http://127.0.0.1:%s/' % str(port)): raise HttpdNotStarted('Failed to start httpd on port %s' % str(port)) - def _UrlIsAlive(self, url): - """Checks to see if we get an http response from |url|. - We poll the url 5 times with a 1 second delay. If we don't - get a reply in that time, we give up and assume the httpd - didn't start properly. - - Args: - url: The URL to check. - Return: - True if the url is alive. - """ - wait_time = 5 - while wait_time > 0: - try: - response = urllib.urlopen(url) - # Server is up and responding. - return True - except IOError: - pass - wait_time -= 1 - # Wait a second and try again. - time.sleep(1) - - return False - def StopServer(self, force=False): """If we started an httpd.exe process, or if force is True, call self._stop_command (passed in on init so it can be platform-dependent). diff --git a/webkit/tools/layout_tests/layout_package/http_server.py b/webkit/tools/layout_tests/layout_package/http_server.py index 9f328f6b..f438f43 100644..100755 --- a/webkit/tools/layout_tests/layout_package/http_server.py +++ b/webkit/tools/layout_tests/layout_package/http_server.py @@ -17,6 +17,7 @@ import time import urllib import path_utils +import google.httpd_utils def RemoveLogFiles(folder, starts_with): files = os.listdir(folder) @@ -25,9 +26,6 @@ def RemoveLogFiles(folder, starts_with): full_path = os.path.join(folder, file) os.remove(full_path) -class HttpdNotStarted(Exception): - pass - class Lighttpd: # Webkit tests try: @@ -220,38 +218,14 @@ class Lighttpd: for mapping in mappings: url = 'http%s://127.0.0.1:%d/' % ('sslcert' in mapping and 's' or '', mapping['port']) - if not self._UrlIsAlive(url): - raise HttpdNotStarted('Failed to start httpd on port %s' % - str(mapping['port'])) + if not google.httpd_utils.UrlIsAlive(url): + raise google.httpd_utils.HttpdNotStarted('Failed to start httpd on ', + 'port %s' % + str(mapping['port'])) # Our process terminated already if self._process.returncode != None: - raise HttpdNotStarted('Failed to start httpd.') - - def _UrlIsAlive(self, url): - """Checks to see if we get an http response from |url|. - We poll the url 5 times with a 3 second delay. If we don't - get a reply in that time, we give up and assume the httpd - didn't start properly. - - Args: - url: The URL to check. - Return: - True if the url is alive. - """ - attempts = 5 - while attempts > 0: - try: - response = urllib.urlopen(url) - # Server is up and responding. - return True - except IOError: - pass - attempts -= 1 - # Wait 3 seconds and try again. - time.sleep(3) - - return False + raise google.httpd_utils.HttpdNotStarted('Failed to start httpd.') # TODO(deanm): Find a nicer way to shutdown cleanly. Our log files are # probably not being flushed, etc... why doesn't our python have os.kill ? |