From d9735af55ab6fe947c68eb27c686df901d260398 Mon Sep 17 00:00:00 2001
From: "mhm@chromium.org"
 <mhm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed, 7 Oct 2009 23:53:57 +0000
Subject: [PATCH] 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
---
 tools/python/google/httpd_utils.py            | 52 +++++++++----------
 .../layout_package/http_server.py             | 38 +++-----------
 2 files changed, 32 insertions(+), 58 deletions(-)
 mode change 100644 => 100755 webkit/tools/layout_tests/layout_package/http_server.py

diff --git a/tools/python/google/httpd_utils.py b/tools/python/google/httpd_utils.py
index 309c924472b3c..e7cfe09d9b0c0 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
old mode 100644
new mode 100755
index 9f328f6b15953..f438f43bc85eb
--- 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 ?
-- 
GitLab