Rev 46: Fix lighttpd shutdown some more. in http://bazaar.launchpad.net/%7Evila/bzr/local-test-server

Vincent Ladeuil v.ladeuil+lp at free.fr
Mon Sep 1 14:04:51 BST 2008


At http://bazaar.launchpad.net/%7Evila/bzr/local-test-server

------------------------------------------------------------
revno: 46
revision-id: v.ladeuil+lp at free.fr-20080901130447-dn4cgeb29krpf3is
parent: v.ladeuil+lp at free.fr-20080901120048-66fowizci07wkphp
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: local_test_server
timestamp: Mon 2008-09-01 15:04:47 +0200
message:
  Fix lighttpd shutdown some more.
  
  * server.py:
  (Lighttpd._stop): lighttpd is weird, sometimes he fails to delete
  its pid file.
modified:
  server.py                      server.py-20080524160639-rqhbexqatjqbwypw-1
  tests/test_utils.py            test_utils.py-20080603162150-w01001l902j0gu95-1
-------------- next part --------------
=== modified file 'server.py'
--- a/server.py	2008-09-01 12:00:48 +0000
+++ b/server.py	2008-09-01 13:04:47 +0000
@@ -207,7 +207,7 @@
         :param verified: A callable retuning True if the desired condition is
             verified.
         :param delay: How long to try (in seconds).
-        :param interval: How often to try (in miliseconds) intially.
+        :param interval: How often to try (in miliseconds) initially.
 
         :return: True if the condition is verified, False if the delay expires.
 
@@ -279,11 +279,14 @@
                 raise
         return False
 
-    def _wait_for_server_process_death(self, sig=None, kill=None):
+    def _wait_for_server_process_death(self, sig=None, kill=None,
+                                       interval=None):
         if sig is None:
             sig = signal.SIGTERM
         if kill is None:
             kill = self._kill_server
+        if interval is None:
+            interval = 500.0
         def server_is_dead():
             pid = self.get_pid()
             if pid is None:
@@ -292,7 +295,7 @@
                 killed = kill(pid, sig)
                 return killed
 
-        return self._hk_poll(server_is_dead, interval=500.0)
+        return self._hk_poll(server_is_dead, interval=interval)
 
     def _get_log_content(self):
         return self._get_file_content(self.get_config_value('log_file'))
@@ -487,12 +490,13 @@
                 self, extra='Did not create pid file %s'
                 % self.get_config_value('pid_file'))
 
-
     def _stop(self):
         if not self._wait_for_server_process_death():
             raise LTSCantStopError(self)
-        # We need to delete the pid file ourselves
-        osutils.delete_any(self.get_config_value('pid_file'))
+        # Sometimes the pid_file is left behind even if the server process is
+        # dead
+        if self.get_pid() is not None:
+            osutils.delete_any(self.get_config_value('pid_file'))
 
     def _wait_for_server_start_in_log(self):
         """Reliably check that the server is started.

=== modified file 'tests/test_utils.py'
--- a/tests/test_utils.py	2008-06-27 17:38:32 +0000
+++ b/tests/test_utils.py	2008-09-01 13:04:47 +0000
@@ -52,6 +52,10 @@
         klass = self._server_class
         if klass._server_command_name is not None:
             if server.locate_program(klass._server_command_name) is None:
+                # Don't even try to start the server if its associated command
+                # can't be found.
+                # FIXME: we should handle that as part as installation
+                # verification.
                 raise tests.UnavailableFeature(klass)
         return klass(server._get_available_port(), self._get_config())
 



More information about the bazaar-commits mailing list