[Zodb-checkins] SVN: zdaemon/trunk/src/zdaemon/ Bug fixed: detection of daemon startup and shutdown was broken

Florent Xicluna laxyf at yahoo.fr
Sun Dec 2 12:08:49 EST 2007


Log message for revision 82079:
  Bug fixed: detection of daemon startup and shutdown was broken
  

Changed:
  U   zdaemon/trunk/src/zdaemon/README.txt
  U   zdaemon/trunk/src/zdaemon/tests/tests.py
  U   zdaemon/trunk/src/zdaemon/zdctl.py

-=-
Modified: zdaemon/trunk/src/zdaemon/README.txt
===================================================================
--- zdaemon/trunk/src/zdaemon/README.txt	2007-12-02 14:03:30 UTC (rev 82078)
+++ zdaemon/trunk/src/zdaemon/README.txt	2007-12-02 17:08:48 UTC (rev 82079)
@@ -53,10 +53,11 @@
 daemon :)
 
     >>> system("./zdaemon -p 'sleep 100' start")
-    . daemon process started, pid=819
+    . .
+    daemon process started, pid=819
 
 This ran the sleep deamon.  We can check whether it ran with the
-status command:  
+status command:
 
     >>> system("./zdaemon -p 'sleep 100' status")
     program running; pid=819
@@ -64,6 +65,7 @@
 We can stop it with the stop command:
 
     >>> system("./zdaemon -p 'sleep 100' stop")
+    . .
     daemon process stopped
 
     >>> system("./zdaemon -p 'sleep 100' status")
@@ -82,7 +84,8 @@
 Now, we can run with the -C option to read the configuration file:
 
     >>> system("./zdaemon -Cconf start")
-    . daemon process started, pid=1136
+    . .
+    daemon process started, pid=1136
 
 If we list the directory:
 
@@ -96,6 +99,7 @@
 where this goes.
 
     >>> system("./zdaemon -Cconf stop")
+    . .
     daemon process stopped
 
     >>> open('conf', 'w').write(
@@ -108,7 +112,8 @@
 
 
     >>> system("./zdaemon -Cconf start")
-    . daemon process started, pid=1139
+    . .
+    daemon process started, pid=1139
 
     >>> system("ls")
     conf
@@ -119,6 +124,7 @@
     True
 
     >>> system("./zdaemon -Cconf stop")
+    . .
     daemon process stopped
 
 In the example, we included a command-line argument in the program
@@ -133,12 +139,14 @@
     ... ''')
 
     >>> system("./zdaemon -Cconf start 100")
-    . daemon process started, pid=1149
+    . .
+    daemon process started, pid=1149
 
     >>> system("./zdaemon -Cconf status")
     program running; pid=1149
 
     >>> system("./zdaemon -Cconf stop")
+    . .
     daemon process stopped
 
 Environment Variables
@@ -182,7 +190,7 @@
 controlling terminal.  It can optionally redirect the output to
 standard error and standard output to a file.  This is done with the
 transcript option.  This is, of course, useful for logging output from
-long-running applications.  
+long-running applications.
 
 Let's look at an example. We'll have a long-running process that
 simple tails a data file:
@@ -200,7 +208,8 @@
     ... ''')
 
     >>> system("./zdaemon -Cconf start")
-    . daemon process started, pid=7963
+    . .
+    daemon process started, pid=7963
 
 .. Wait a little bit to make sure tail has a chance to work
 
@@ -211,7 +220,7 @@
 
     >>> open('log').read()
     'rec 1\n'
-    
+
 We can rotate the transcript log by renaming it and telling zdaemon to
 reopen it:
 

Modified: zdaemon/trunk/src/zdaemon/tests/tests.py
===================================================================
--- zdaemon/trunk/src/zdaemon/tests/tests.py	2007-12-02 14:03:30 UTC (rev 82078)
+++ zdaemon/trunk/src/zdaemon/tests/tests.py	2007-12-02 17:08:48 UTC (rev 82079)
@@ -31,7 +31,7 @@
 def make_sure_non_daemon_mode_doesnt_hang_when_program_exits():
     """
     The whole awhile bit that waits for a program to start
-    whouldn't be used on non-daemopn mode.
+    whouldn't be used on non-daemon mode.
 
     >>> open('conf', 'w').write(
     ... '''
@@ -58,14 +58,14 @@
     ... ''')
 
     >>> system("./zdaemon -Cconf start")
-    . . 
-    Daemon manager not running.
+    . .
+    daemon manager not running
 
     """
-    
+
 def allow_duplicate_arguments():
     """
-    
+
 Wrapper scripts will often embed configuration arguments. This could
 cause a problem when zdaemon reinvokes itself, passing it's own set of
 configuration arguments.  To deal with this, we'll allow duplicate
@@ -79,9 +79,11 @@
     ... ''')
 
     >>> system("./zdaemon -Cconf -Cconf -Cconf start")
-    . daemon process started, pid=21446
+    . .
+    daemon process started, pid=21446
 
     >>> system("./zdaemon -Cconf -Cconf -Cconf stop")
+    . .
     daemon process stopped
 
 """
@@ -127,6 +129,7 @@
             setUp=setUp, tearDown=tearDown,
             checker=renormalizing.RENormalizing([
                 (re.compile('pid=\d+'), 'pid=NNN'),
+                (re.compile('(\. )+\.?'), '<BLANKLINE>'),
                 ])
         ),
         doctest.DocFileSuite(
@@ -134,6 +137,7 @@
             setUp=setUp, tearDown=tearDown,
             checker=renormalizing.RENormalizing([
                 (re.compile('pid=\d+'), 'pid=NNN'),
+                (re.compile('(\. )+\.?'), '<BLANKLINE>'),
                 (re.compile('^env\n((?:.*\n)+)$'), checkenv),
                 ])
         ),

Modified: zdaemon/trunk/src/zdaemon/zdctl.py
===================================================================
--- zdaemon/trunk/src/zdaemon/zdctl.py	2007-12-02 14:03:30 UTC (rev 82078)
+++ zdaemon/trunk/src/zdaemon/zdctl.py	2007-12-02 17:08:48 UTC (rev 82079)
@@ -128,7 +128,7 @@
             if m:
                 s = m.group(1)
                 args = eval(s, {"__builtins__": {}})
-                program = self.options.program 
+                program = self.options.program
                 if args[:len(program)] != program:
                     print "WARNING! zdrun is managing a different program!"
                     print "our program   =", program
@@ -194,28 +194,26 @@
         return resp
 
     def awhile(self, cond, msg):
-        n = 0
-        was_running = True
+        was_running = False
         try:
-            if self.get_status():
-                was_running = True
-                
-            while not cond():
+            for n in range(10):
+                if self.get_status(): # running?
+                    was_running = True
+                elif was_running: # no longer running?
+                    break
+                if cond(): # condition fulfilled?
+                    break
                 sys.stdout.write(". ")
                 sys.stdout.flush()
                 time.sleep(1)
-                n += 1
-                if self.get_status():
-                    was_running = True
-                elif was_running or n > 10:
-                    print "\nDaemon manager not running."
-                    return
 
         except KeyboardInterrupt:
             print "^C"
-        else:
-            print msg % self.__dict__
 
+        if not cond():
+            msg = "daemon manager not running"
+        print "\n" + msg % self.__dict__
+
     def help_help(self):
         print "help          -- Print a list of available actions."
         print "help <action> -- Print help for <action>."
@@ -235,7 +233,7 @@
             else:
                 args = [self.options.python, sys.argv[0]]
                 os.environ['DAEMON_MANAGER_MODE'] = '1'
-                
+
             args += self._get_override("-S", "schemafile")
             args += self._get_override("-C", "configfile")
             args += self._get_override("-b", "backofflimit")
@@ -619,7 +617,7 @@
     if os.environ.get('DAEMON_MANAGER_MODE'):
         import zdaemon.zdrun
         return zdaemon.zdrun.main(args)
-        
+
     if options is None:
         options = ZDCtlOptions()
     options.realize(args)



More information about the Zodb-checkins mailing list