[Checkins] SVN: zc.z3monitor/trunk/ Added a test for the initialization subscriber.
Jim Fulton
jim at zope.com
Tue Feb 21 23:05:13 UTC 2012
Log message for revision 124453:
Added a test for the initialization subscriber.
Also cleaned up the buildout quite a bit.
Changed:
U zc.z3monitor/trunk/buildout.cfg
U zc.z3monitor/trunk/setup.py
A zc.z3monitor/trunk/src/zc/z3monitor/initialize.test
U zc.z3monitor/trunk/src/zc/z3monitor/tests.py
-=-
Modified: zc.z3monitor/trunk/buildout.cfg
===================================================================
--- zc.z3monitor/trunk/buildout.cfg 2012-02-21 21:58:13 UTC (rev 124452)
+++ zc.z3monitor/trunk/buildout.cfg 2012-02-21 23:05:13 UTC (rev 124453)
@@ -1,119 +1,12 @@
[buildout]
develop = .
- ../../zc.ngi/trunk
- ../../zc.monitor/trunk
+parts = py
-parts = instance test zodb storage interpreter
-
-[zodb]
-recipe = zc.recipe.egg
-eggs = ZODB3 <3.9dev
-
-[app]
-recipe = zc.zope3recipes:application
-eggs = zc.z3monitor
- zope.app.zcmlfiles
- zope.app.server
- setuptools
- zc.configuration
- ZODB3
- zope.annotation
- zope.app.appsetup
- zope.app.authentication
- zope.app.catalog
- zope.app.component
- zope.app.container
- zope.app.folder
- zope.app.intid
- zope.app.keyreference
- zope.app.publication
- zope.app.security
- zope.app.securitypolicy
- zope.app.session
- zope.app.testing
- zope.app.testing
- zope.app.zcmlfiles
- zope.component
- zope.event
- zope.formlib
- zope.i18nmessageid
- zope.interface
- zope.lifecycleevent
- zope.locking
- zope.proxy
- zope.testing
- zope.sendmail
-
-
-
-
-
-servers = zserver
-site.zcml =
- <include package="zope.app.zcmlfiles" />
- <include package="zope.app.securitypolicy" />
- <include package="zope.app.securitypolicy" file="meta.zcml" />
- <include package="zope.app.authentication" />
- <include package="zope.app.server" />
- <securityPolicy
- component="zope.app.securitypolicy.zopepolicy.ZopeSecurityPolicy" />
- <role id="zope.Anonymous" title="Everybody"
- description="All users have this role implicitly" />
- <role id="zope.Manager" title="Site Manager" />
- <role id="zope.Member" title="Site Member" />
- <grantAll role="zope.Manager" />
- <unauthenticatedPrincipal
- id="zope.anybody"
- title="Unauthenticated User"
- />
- <principal
- id="zope.manager"
- title="Manager"
- login="jim"
- password_manager="SHA1"
- password="40bd001563085fc35165329ea1ff5c5ecbdbbeef"
- />
- <grant
- role="zope.Manager"
- principal="zope.manager"
- />
- <include package="zc.z3monitor" />
- <include package="zc.z3monitor" file="sleeptest.zcml" />
-
-[instance]
-recipe = zc.zope3recipes:instance
-application = app
-zope.conf =
- <product-config zc.z3monitor>
- port 8000
- </product-config>
- <zodb>
- <zeoclient>
- server 8100
- cache-size 100KB
- </zeoclient>
- </zodb>
-
-
-[storage]
-recipe = zc.zodbrecipes:server
-zeo.conf =
- <zeo>
- address 8100
- </zeo>
- <filestorage 1>
- path ${data:path}
- </filestorage>
-
-
-[data]
-recipe = zc.recipe.filestorage
-
[test]
recipe = zc.recipe.testrunner
eggs = zc.z3monitor
-[interpreter]
+[py]
recipe = zc.recipe.egg
-eggs = zc.z3monitor
+eggs = ${test:eggs}
interpreter = py
Modified: zc.z3monitor/trunk/setup.py
===================================================================
--- zc.z3monitor/trunk/setup.py 2012-02-21 21:58:13 UTC (rev 124452)
+++ zc.z3monitor/trunk/setup.py 2012-02-21 23:05:13 UTC (rev 124453)
@@ -22,6 +22,7 @@
install_requires = [
'setuptools', 'zc.monitor', 'ZODB3', 'zope.component',
'zope.publisher', 'zope.app.appsetup', 'zope.testing',
+ 'mock',
],
include_package_data = True,
zip_safe = False,
Added: zc.z3monitor/trunk/src/zc/z3monitor/initialize.test
===================================================================
--- zc.z3monitor/trunk/src/zc/z3monitor/initialize.test (rev 0)
+++ zc.z3monitor/trunk/src/zc/z3monitor/initialize.test 2012-02-21 23:05:13 UTC (rev 124453)
@@ -0,0 +1,65 @@
+Basic stubby test of monitor initialization. Mocks everywhere!
+
+ >>> import zc.z3monitor
+ >>> from zope.app.appsetup.product import getProductConfiguration
+ >>> from zope.component import getUtilitiesFor
+ >>> from ZODB.ActivityMonitor import ActivityMonitor
+
+
+Test empty product config to initialize activity monitors
+---------------------------------------------------------
+
+ >>> getProductConfiguration.return_value = {}
+ >>> import mock
+ >>> db = mock.Mock()
+ >>> db.getActivityMonitor.return_value = None
+ >>> getUtilitiesFor.return_value = [('foo', db)]
+
+ >>> zc.z3monitor.initialize(None)
+
+ >>> import ZODB.interfaces
+ >>> getUtilitiesFor.assert_called_with(ZODB.interfaces.IDatabase)
+ >>> getProductConfiguration.assert_called_with('zc.z3monitor')
+ >>> db.setActivityMonitor.assert_called_once_with(
+ ... ActivityMonitor.return_value)
+
+ >>> from zc.monitor import start
+ >>> start.called
+ False
+
+Test that the port option does as expected and we don't reinitialize database
+-----------------------------------------------------------------------------
+
+ >>> getProductConfiguration.return_value = {'port': '42'}
+ >>> db.getActivityMonitor.return_value = 1
+ >>> zc.z3monitor.initialize(None)
+
+OK, this time we started:
+
+ >>> start.assert_called_once_with(42)
+
+We didn't call setActivityMonitor again:
+
+ >>> db.setActivityMonitor.assert_called_once_with(
+ ... ActivityMonitor.return_value)
+
+
+
+Test that the port option does as expected and we don't reinitialize database
+-----------------------------------------------------------------------------
+
+Various flavors of bind:
+
+ >>> getProductConfiguration.return_value = {'bind': '43'}
+ >>> zc.z3monitor.initialize(None)
+ >>> start.assert_called_with(43)
+
+ >>> getProductConfiguration.return_value = {'bind': 'foo.com:44'}
+ >>> zc.z3monitor.initialize(None)
+ >>> start.assert_called_with(('foo.com', 44))
+
+ >>> getProductConfiguration.return_value = {'bind': 'foo.sock'}
+ >>> zc.z3monitor.initialize(None)
+ >>> start.assert_called_with('foo.sock')
+
+
Property changes on: zc.z3monitor/trunk/src/zc/z3monitor/initialize.test
___________________________________________________________________
Added: svn:eol-style
+ native
Modified: zc.z3monitor/trunk/src/zc/z3monitor/tests.py
===================================================================
--- zc.z3monitor/trunk/src/zc/z3monitor/tests.py 2012-02-21 21:58:13 UTC (rev 124452)
+++ zc.z3monitor/trunk/src/zc/z3monitor/tests.py 2012-02-21 23:05:13 UTC (rev 124453)
@@ -11,14 +11,16 @@
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
-import re, unittest
-import logging, sys
-
+from zope.testing import renormalizing, setupstack
+import doctest
+import logging
+import mock
+import re
+import sys
+import unittest
import ZODB.MappingStorage
-from zope.testing import doctest, renormalizing
-
class FauxCache:
@property
@@ -35,6 +37,15 @@
ZODB.MappingStorage.MappingStorage._is_connected = True
ZODB.MappingStorage.MappingStorage.is_connected = is_connected
+def setUpInitialize(test):
+ for name in (
+ 'zope.app.appsetup.product.getProductConfiguration',
+ 'zope.component.getUtilitiesFor',
+ 'ZODB.ActivityMonitor.ActivityMonitor',
+ 'zc.monitor.start',
+ ):
+ setupstack.context_manager(test, mock.patch(name))
+
def test_suite():
return unittest.TestSuite((
doctest.DocFileSuite(
@@ -44,5 +55,8 @@
(re.compile("\d+[.]\d+ seconds"), 'N.NNNNNN seconds'),
]),
),
-
+ doctest.DocFileSuite(
+ 'initialize.test',
+ setUp = setUpInitialize, tearDown=setupstack.tearDown,
+ )
))
More information about the checkins
mailing list