[Zope-Checkins] SVN: Zope/trunk/lib/python/Testing/ZopeTestCase/
Separate ConnectionRegistry out into its own module so it can be
Stefan H. Holek
stefan at epy.co.at
Fri May 6 13:31:11 EDT 2005
Log message for revision 30290:
Separate ConnectionRegistry out into its own module so it can be
reused more cleanly.
Changed:
U Zope/trunk/lib/python/Testing/ZopeTestCase/ZopeTestCase.py
U Zope/trunk/lib/python/Testing/ZopeTestCase/base.py
A Zope/trunk/lib/python/Testing/ZopeTestCase/connections.py
U Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt
U Zope/trunk/lib/python/Testing/ZopeTestCase/sandbox.py
U Zope/trunk/lib/python/Testing/ZopeTestCase/testBaseTestCase.py
U Zope/trunk/lib/python/Testing/ZopeTestCase/testPortalTestCase.py
U Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py
-=-
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/ZopeTestCase.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/ZopeTestCase.py 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/ZopeTestCase.py 2005-05-06 17:31:11 UTC (rev 30290)
@@ -21,13 +21,14 @@
The default user is logged in and has the 'Access contents information'
and 'View' permissions given to his role.
-$Id: ZopeTestCase.py,v 1.29 2005/02/09 12:42:40 shh42 Exp $
+$Id$
"""
import base
import functional
import interfaces
import utils
+import connections
from AccessControl import getSecurityManager
from AccessControl.SecurityManagement import newSecurityManager
@@ -80,7 +81,7 @@
'''Clears the fixture.'''
# This code is a wart from the olden days.
try:
- if base._connections.contains(self.app._p_jar):
+ if connections.contains(self.app._p_jar):
self.app._delObject(folder_name)
except:
pass
@@ -121,5 +122,4 @@
from base import app
from base import close
-from base import closeConnections
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/base.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/base.py 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/base.py 2005-05-06 17:31:11 UTC (rev 30290)
@@ -12,7 +12,7 @@
##############################################################################
"""TestCase for Zope testing
-$Id: base.py,v 1.1 2004/08/19 13:59:41 shh42 Exp $
+$Id$
"""
import ZopeLite as Zope2
@@ -22,29 +22,23 @@
import profiler
import utils
import interfaces
+import connections
from AccessControl.SecurityManagement import noSecurityManager
-_connections = utils.ConnectionRegistry()
-
-
def app():
'''Opens a ZODB connection and returns the app object.'''
app = Zope2.app()
- _connections.register(app._p_jar)
+ connections.register(app._p_jar)
return utils.makerequest(app)
def close(app):
'''Closes the app's ZODB connection.'''
- _connections.close(app._p_jar)
+ connections.close(app._p_jar)
-def closeConnections():
- '''Closes all registered ZODB connections.'''
- _connections.closeAll()
-
class TestCase(profiler.Profiled, unittest.TestCase):
'''Base test case for Zope testing
'''
@@ -131,7 +125,7 @@
def _close(self):
'''Closes the ZODB connection.'''
transaction.abort()
- closeConnections()
+ connections.closeAll()
def logout(self):
'''Logs out.'''
Added: Zope/trunk/lib/python/Testing/ZopeTestCase/connections.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/connections.py 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/connections.py 2005-05-06 17:31:11 UTC (rev 30290)
@@ -0,0 +1,53 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""ZODB connection registry
+
+$Id$
+"""
+
+class ConnectionRegistry:
+ '''ZODB connection registry'''
+
+ def __init__(self):
+ self._conns = []
+
+ def register(self, conn):
+ self._conns.append(conn)
+
+ def contains(self, conn):
+ return conn in self._conns
+
+ def __len__(self):
+ return len(self._conns)
+
+ def count(self):
+ return len(self)
+
+ def close(self, conn):
+ if self.contains(conn):
+ self._conns.remove(conn)
+ conn.close()
+
+ def closeAll(self):
+ for conn in self._conns:
+ conn.close()
+ self._conns = []
+
+
+registry = ConnectionRegistry()
+register = registry.register
+contains = registry.contains
+count = registry.count
+close = registry.close
+closeAll = registry.closeAll
+
Property changes on: Zope/trunk/lib/python/Testing/ZopeTestCase/connections.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt 2005-05-06 17:31:11 UTC (rev 30290)
@@ -13,6 +13,8 @@
- Fixed _refreshSkinData() helper to work with CMF >= 1.5.
- Fixed a bug where using sessions in sandboxed (functional) tests would cause
connection pool depletion and subsequent hangs. Thanks to Balazs Ree.
+- Encapsulated the ConnectionRegistry in its own module, connections.py.
+ Reusing the registry from other modules becomes a lot cleaner as a result.
0.9.6
- Dropped support for Zope 2.5 as it lacks the setSecurityManager() API.
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/sandbox.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/sandbox.py 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/sandbox.py 2005-05-06 17:31:11 UTC (rev 30290)
@@ -12,13 +12,14 @@
##############################################################################
"""Support for ZODB sandboxes in ZTC
-$Id: sandbox.py,v 1.2 2004/08/19 15:31:26 shh42 Exp $
+$Id$
"""
import ZopeLite as Zope2
import transaction
import base
import utils
+import connections
class Sandboxed:
@@ -32,7 +33,7 @@
def _app(self):
'''Returns the app object for a test.'''
app = Zope2.app(Zope2.sandbox().open())
- base._connections.register(app._p_jar)
+ connections.register(app._p_jar)
AppZapper().set(app)
return utils.makerequest(app)
@@ -40,7 +41,7 @@
'''Clears the transaction and the AppZapper.'''
transaction.abort()
AppZapper().clear()
- base.closeConnections()
+ connections.closeAll()
class AppZapper:
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/testBaseTestCase.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/testBaseTestCase.py 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/testBaseTestCase.py 2005-05-06 17:31:11 UTC (rev 30290)
@@ -19,7 +19,7 @@
example test cases. See testSkeleton.py for a quick
way of getting started.
-$Id: testBaseTestCase.py,v 1.7 2005/02/09 12:42:40 shh42 Exp $
+$Id$
"""
import os, sys
@@ -30,6 +30,7 @@
from Testing.ZopeTestCase import base
from Testing.ZopeTestCase import utils
+from Testing.ZopeTestCase import connections
from AccessControl import getSecurityManager
from AccessControl.SecurityManagement import newSecurityManager
@@ -80,9 +81,9 @@
self.assertHooks(['beforeTearDown', 'beforeClose', 'afterClear'])
def testAppOpensConnection(self):
- self.assertEqual(len(base._connections), 1)
+ self.assertEqual(connections.count(), 1)
self._app()
- self.assertEqual(len(base._connections), 2)
+ self.assertEqual(connections.count(), 2)
def testClearCallsCloseHook(self):
self._called = []
@@ -102,15 +103,15 @@
self.assertEqual(len(self.getObjectsInTransaction()), 0)
def testClearClosesConnection(self):
- self.assertEqual(len(base._connections), 1)
+ self.assertEqual(connections.count(), 1)
self._clear()
- self.assertEqual(len(base._connections), 0)
+ self.assertEqual(connections.count(), 0)
def testClearClosesAllConnections(self):
self._app()
- self.assertEqual(len(base._connections), 2)
+ self.assertEqual(connections.count(), 2)
self._clear()
- self.assertEqual(len(base._connections), 0)
+ self.assertEqual(connections.count(), 0)
def testClearLogsOut(self):
uf = self.app.acl_users
@@ -128,15 +129,15 @@
self.assertEqual(len(self.getObjectsInTransaction()), 0)
def testCloseClosesConnection(self):
- self.assertEqual(len(base._connections), 1)
+ self.assertEqual(connections.count(), 1)
self._close()
- self.assertEqual(len(base._connections), 0)
+ self.assertEqual(connections.count(), 0)
def testCloseClosesAllConnections(self):
self._app()
- self.assertEqual(len(base._connections), 2)
+ self.assertEqual(connections.count(), 2)
self._close()
- self.assertEqual(len(base._connections), 0)
+ self.assertEqual(connections.count(), 0)
def testLogoutLogsOut(self):
uf = self.app.acl_users
@@ -167,7 +168,7 @@
except self.Error:
self.assertHooks(['beforeSetUp', '_setup', 'afterClear'])
# Connection has been closed
- self.assertEqual(len(base._connections), 0)
+ self.assertEqual(connections.count(), 0)
def _setup(self):
HookTest._setup(self)
@@ -188,7 +189,7 @@
except self.Error:
self.assertHooks(['beforeTearDown', 'beforeClose', 'afterClear'])
# Connection has been closed
- self.assertEqual(len(base._connections), 0)
+ self.assertEqual(connections.count(), 0)
def beforeClose(self):
HookTest.beforeClose(self)
@@ -206,7 +207,7 @@
self.closed = 1
def afterSetUp(self):
- self.reg = utils.ConnectionRegistry()
+ self.reg = connections.ConnectionRegistry()
self.conns = [self.Conn(), self.Conn(), self.Conn()]
def testRegister(self):
@@ -214,6 +215,7 @@
for conn in self.conns:
self.reg.register(conn)
assert len(self.reg) == 3
+ assert self.reg.count() == 3
def testCloseConnection(self):
# Should be able to close a single registered connection
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/testPortalTestCase.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/testPortalTestCase.py 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/testPortalTestCase.py 2005-05-06 17:31:11 UTC (rev 30290)
@@ -19,7 +19,7 @@
example test cases. See testSkeleton.py for a quick
way of getting started.
-$Id: testPortalTestCase.py,v 1.30 2005/01/30 14:22:48 shh42 Exp $
+$Id$
"""
import os, sys
@@ -508,8 +508,8 @@
except self.Error:
self.assertHooks(['beforeSetUp', '_setup', 'afterClear'])
# Connection has been closed
- from Testing.ZopeTestCase import base
- self.assertEqual(len(base._connections), 0)
+ from Testing.ZopeTestCase import connections
+ self.assertEqual(connections.count(), 0)
def _setup(self):
HookTest._setup(self)
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py 2005-05-06 17:11:14 UTC (rev 30289)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/utils.py 2005-05-06 17:31:11 UTC (rev 30290)
@@ -15,7 +15,7 @@
These functions are designed to be imported and run at
module level to add functionality to the test environment.
-$Id: utils.py,v 1.21 2005/02/11 09:00:21 shh42 Exp $
+$Id$
"""
import os
@@ -163,32 +163,6 @@
raise ValueError('Argument must be list, tuple, or string')
-class ConnectionRegistry:
- '''ZODB connection registry'''
-
- def __init__(self):
- self._conns = []
-
- def register(self, conn):
- self._conns.append(conn)
-
- def close(self, conn):
- if self.contains(conn):
- self._conns.remove(conn)
- conn.close()
-
- def closeAll(self):
- for conn in self._conns:
- conn.close()
- self._conns = []
-
- def __len__(self):
- return len(self._conns)
-
- def contains(self, conn):
- return conn in self._conns
-
-
__all__ = [
'setupCoreSessions',
'setupSiteErrorLog',
More information about the Zope-Checkins
mailing list