[Checkins] SVN: lovely.remotetask/trunk/ more enhancements on logging during startup

Bernd Roessl bernd.roessl at lovelysystems.com
Mon Oct 8 18:46:06 EDT 2007


Log message for revision 80722:
  more enhancements on logging during startup

Changed:
  U   lovely.remotetask/trunk/CHANGES.txt
  U   lovely.remotetask/trunk/setup.py
  U   lovely.remotetask/trunk/src/lovely/remotetask/README.txt
  U   lovely.remotetask/trunk/src/lovely/remotetask/service.py
  U   lovely.remotetask/trunk/src/lovely/remotetask/tests.py

-=-
Modified: lovely.remotetask/trunk/CHANGES.txt
===================================================================
--- lovely.remotetask/trunk/CHANGES.txt	2007-10-08 21:12:33 UTC (rev 80721)
+++ lovely.remotetask/trunk/CHANGES.txt	2007-10-08 22:46:06 UTC (rev 80722)
@@ -2,8 +2,8 @@
 Changes for lovely.remotetask
 =============================
 
-after:
-======
+2007/10/08 0.2.8:
+=================
 
 - enhanced logging during startup
 

Modified: lovely.remotetask/trunk/setup.py
===================================================================
--- lovely.remotetask/trunk/setup.py	2007-10-08 21:12:33 UTC (rev 80721)
+++ lovely.remotetask/trunk/setup.py	2007-10-08 22:46:06 UTC (rev 80722)
@@ -3,7 +3,7 @@
 
 setup (
     name='lovely.remotetask',
-    version='0.2.7',
+    version='0.2.8',
     author = "Lovely Systems",
     author_email = "office at lovelysystems.com",
     description = "A remotetask client utiltiy for zope 3",

Modified: lovely.remotetask/trunk/src/lovely/remotetask/README.txt
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/README.txt	2007-10-08 21:12:33 UTC (rev 80721)
+++ lovely.remotetask/trunk/src/lovely/remotetask/README.txt	2007-10-08 22:46:06 UTC (rev 80722)
@@ -104,7 +104,7 @@
 
 The ``add()`` function schedules the task called "echo" to be executed with
 the specified arguments. The method returns a job id with which we can inquire
-about the job. 
+about the job.
 
   >>> service.getStatus(jobid)
   'queued'
@@ -148,6 +148,10 @@
 registered at the root. We test this use-case in a separate footnote so that
 the flow of this document is not broken. [#1]_
 
+To get a clean logging environment let's clead the logging stack::
+
+  >>> log_info.clear()
+
 On Zope startup the IDatabaseOpenedEvent is being fired, and will call
 the bootStrap method:
 
@@ -171,11 +175,24 @@
   >>> service.isProcessing()
   True
 
+Checking out the logging will prove the started service::
+
+  >>> print log_info
+  lovely.remotetask INFO
+    handling event IStartRemoteTasksEvent
+  lovely.remotetask INFO
+    service TestTaskService1 on site site1 started
+  lovely.remotetask ERROR
+    site site2 not found
+  lovely.remotetask INFO
+    service RootTaskService on site root started
+
 The verification for the jobs in the root-level service is done in another
 footnote [#2]_
 
-To deal with a lot of services in one sites it possible to use asterisks (*)
-to start services. In case of using site@* means start all services in that site::
+To deal with a lot of services in one sites it will be possible to use
+asterisks (*) to start services. In case of using site@* means start all
+services in that site::
 
 But first stop all processing services::
 
@@ -187,6 +204,10 @@
   >>> root_service.isProcessing()
   False
 
+And reset the logger::
+
+  >>> log_info.clear()
+
 Reset the product configuration with the asterisked service names::
 
   >>> servicenames = ('site1@*')
@@ -205,9 +226,18 @@
   >>> root_service.isProcessing()
   False
 
-To deal with a lot of services in a lot of sites it possible to use asterisks (*)
-to start services. In case of using *@* means start all services on all sites::
+Let's checkout the logging::
 
+  >>> print log_info
+  lovely.remotetask INFO
+    handling event IStartRemoteTasksEvent
+  lovely.remotetask INFO
+    service TestTaskService1 on site site1 started
+
+To deal with a lot of services in a lot of sites it possible to use
+asterisks (*) to start services. In case of using *@* means start all
+services on all sites::
+
   >>> service.stopProcessing()
   >>> service.isProcessing()
   False
@@ -220,6 +250,10 @@
   >>> getAutostartServiceNames()
   ['*@*']
 
+...and reset the logger::
+
+  >>> log_info.clear()
+
 And fire the event again. All services should be started now::
 
   >>> bootStrapSubscriber(event)
@@ -230,6 +264,88 @@
   >>> root_service.isProcessing()
   True
 
+Let's checkout the logging::
+
+  >>> print log_info
+  lovely.remotetask INFO
+    handling event IStartRemoteTasksEvent
+  lovely.remotetask INFO
+    service RootTaskService on site root started
+  lovely.remotetask INFO
+    service TestTaskService1 on site site1 started
+
+
+To deal with a specific service in a lot of sites it possible to use
+asterisks (*) to start services. In case of using *@service means start the
+service called `service` on all sites::
+
+  >>> service.stopProcessing()
+  >>> service.isProcessing()
+  False
+
+  >>> root_service.stopProcessing()
+  >>> root_service.isProcessing()
+  False
+
+Reset the product configuration with the asterisked service names::
+
+  >>> servicenames = ('*@TestTaskService1')
+  >>> config.mapping['autostart'] = servicenames
+  >>> setProductConfigurations([config])
+  >>> getAutostartServiceNames()
+  ['*@TestTaskService1']
+
+...and reset the logger::
+
+  >>> log_info.clear()
+
+And fire the event again. All services should be started now::
+
+  >>> bootStrapSubscriber(event)
+
+  >>> service.isProcessing()
+  True
+
+  >>> root_service.isProcessing()
+  False
+
+Let's checkout the logging::
+
+  >>> print log_info
+  lovely.remotetask INFO
+    handling event IStartRemoteTasksEvent
+  lovely.remotetask INFO
+    service TestTaskService1 on site site1 started
+
+In case of configuring a directive which does not match any service on
+any site logging will show a warning message::
+
+  >>> service.stopProcessing()
+  >>> service.isProcessing()
+  False
+
+  >>> servicenames = ('*@Foo')
+  >>> config.mapping['autostart'] = servicenames
+  >>> setProductConfigurations([config])
+  >>> getAutostartServiceNames()
+  ['*@Foo']
+
+  >>> log_info.clear()
+
+  >>> bootStrapSubscriber(event)
+
+  >>> service.isProcessing()
+  False
+
+  >>> root_service.isProcessing()
+  False
+
+  >>> print log_info
+  lovely.remotetask INFO
+    handling event IStartRemoteTasksEvent
+  lovely.remotetask WARNING
+    no services started by directive *@Foo
+
 Finally stop processing and kill the thread. We'll call service.process()
 manually as we don't have the right environment in the tests.
 

Modified: lovely.remotetask/trunk/src/lovely/remotetask/service.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/service.py	2007-10-08 21:12:33 UTC (rev 80721)
+++ lovely.remotetask/trunk/src/lovely/remotetask/service.py	2007-10-08 22:46:06 UTC (rev 80722)
@@ -354,13 +354,20 @@
                                  component.queryUtility(interfaces.ITaskService,
                                                        context=site,
                                                        name=serviceName))]
-                for name, service in services:
+                serviceCount=0
+                for srvname, service in services:
                     if service is not None and not service.isProcessing():
                         service.startProcessing()
-                        log.info('service %s on site %s started' % (name,
-                                                                    csName))
+                        serviceCount += 1
+                        msg = 'service %s on site %s started'
+                        log.info(msg % (srvname, csName))
                     else:
-                        log.error('service %s on site %s not found' % (name,
-                                                                       csName))
+                        if siteName != "*" and serviceName != "*":
+                            msg = 'service %s on site %s not found'
+                            log.error(msg % (srvname, csName))
             else:
-                log.error('site %s not found' % csName)
+                log.error('site %s not found' % siteName)
+
+        if (siteName == "*" or serviceName == "*") and serviceCount == 0:
+            msg = 'no services started by directive %s'
+            log.warn(msg % name)

Modified: lovely.remotetask/trunk/src/lovely/remotetask/tests.py
===================================================================
--- lovely.remotetask/trunk/src/lovely/remotetask/tests.py	2007-10-08 21:12:33 UTC (rev 80721)
+++ lovely.remotetask/trunk/src/lovely/remotetask/tests.py	2007-10-08 22:46:06 UTC (rev 80722)
@@ -18,19 +18,27 @@
 __docformat__ = "reStructuredText"
 
 import doctest
+import logging
 import unittest
 from zope.app.testing import placelesssetup
 from zope.app.testing.setup import (placefulSetUp,
                                     placefulTearDown)
 from zope.testing.doctestunit import DocFileSuite
 from zope.testing.doctest import INTERPRET_FOOTNOTES
+from zope.testing.loggingsupport import InstalledHandler
 
+
 def setUp(test):
     root = placefulSetUp(site=True)
     test.globs['root'] = root
 
+    log_info = InstalledHandler('lovely.remotetask')
+    test.globs['log_info'] = log_info
+
 def tearDown(test):
     placefulTearDown()
+    log_info = test.globs['log_info']
+    log_info.uninstall()
 
 def test_suite():
     return unittest.TestSuite((



More information about the Checkins mailing list