[Zope-Checkins] SVN: Zope/trunk/lib/python/Testing/ZopeTestCase/ Explicitly close connections to "sandbox" databases.

Stefan H. Holek stefan at epy.co.at
Sat Apr 23 14:50:39 EDT 2005


Log message for revision 30126:
  Explicitly close connections to "sandbox" databases.
  

Changed:
  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/testShoppingCart.py

-=-
Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt	2005-04-23 09:58:24 UTC (rev 30125)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/doc/CHANGES.txt	2005-04-23 18:50:39 UTC (rev 30126)
@@ -10,6 +10,8 @@
 - ZopeLite now takes care not to monkey patch an already started Zope.
 - PortalTestCase no longer calls _refreshSkinData() as CMF is smart enough
   now (and CMF 1.5+ does not work that way anyway).
+- Fixed a bug where using sessions in sandboxed (functional) tests would cause
+  connection pool depletion and subsequent hangs. Thanks to Balazs Ree.
 
 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-04-23 09:58:24 UTC (rev 30125)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/sandbox.py	2005-04-23 18:50:39 UTC (rev 30126)
@@ -17,6 +17,7 @@
 
 import ZopeLite as Zope2
 import transaction
+import base
 import utils
 
 
@@ -31,6 +32,7 @@
     def _app(self):
         '''Returns the app object for a test.'''
         app = Zope2.app(Zope2.sandbox().open())
+        base._connections.register(app._p_jar)
         AppZapper().set(app)
         return utils.makerequest(app)
 
@@ -38,6 +40,7 @@
         '''Clears the transaction and the AppZapper.'''
         transaction.abort()
         AppZapper().clear()
+        base.closeConnections()
 
 
 class AppZapper:

Modified: Zope/trunk/lib/python/Testing/ZopeTestCase/testShoppingCart.py
===================================================================
--- Zope/trunk/lib/python/Testing/ZopeTestCase/testShoppingCart.py	2005-04-23 09:58:24 UTC (rev 30125)
+++ Zope/trunk/lib/python/Testing/ZopeTestCase/testShoppingCart.py	2005-04-23 18:50:39 UTC (rev 30126)
@@ -105,11 +105,27 @@
         self.cart.addItems([DummyOrder('510-007', 2),])
         self.assertEqual(self.cart.getTotal(), 149.95)
 
+    def testGetItem(self):
+        # Getting an item from the "database" should work
+        item = self.cart.getItem('510-115')
+        self.assertEqual(item['id'], '510-115')
+        self.assertEqual(item['title'], 'Econo Feeder')
+        self.assertEqual(item['price'], 7.95)
 
+    def testEight(self):
+        # Additional test to trigger connection pool depletion bug
+        pass
+
+
+class TestSandboxedShoppingCart(ZopeTestCase.Sandboxed, TestShoppingCart):
+    '''Demonstrate that sessions work in sandboxes''' 
+
+
 def test_suite():
     from unittest import TestSuite, makeSuite
     suite = TestSuite()
     suite.addTest(makeSuite(TestShoppingCart))
+    suite.addTest(makeSuite(TestSandboxedShoppingCart))
     return suite
 
 if __name__ == '__main__':



More information about the Zope-Checkins mailing list