[Zope-Checkins] CVS: Zope/lib/python/Products/TemporaryFolder/tests - testTemporaryStorage.py:1.3

Chris McDonough chrism@zope.com
Mon, 26 Nov 2001 10:34:56 -0500


Update of /cvs-repository/Zope/lib/python/Products/TemporaryFolder/tests
In directory cvs.zope.org:/tmp/cvs-serv13394/tests

Modified Files:
	testTemporaryStorage.py 
Log Message:
Changed revision cache gc algorithm to be better on memory, addd revision cache gc tests.

=== Zope/lib/python/Products/TemporaryFolder/tests/testTemporaryStorage.py 1.2 => 1.3 ===
 
 import ZODB
+from ZODB.tests.MinPO import MinPO
 from Products.TemporaryFolder import TemporaryStorage
-import sys, os, unittest
+from Products.TemporaryFolder.TemporaryStorage import CONFLICT_CACHE_MAXAGE,\
+     CONFLICT_CACHE_GCEVERY
+import sys, os, unittest, time
 
 from ZODB.tests import StorageTestBase, BasicStorage, \
      Synchronization, ConflictResolution, \
@@ -13,7 +16,7 @@
 
 class TemporaryStorageTests(
     StorageTestBase.StorageTestBase,
-    RevisionStorage.RevisionStorage, # not actually a revision storage, but..
+    RevisionStorage.RevisionStorage, # not a revision storage, but passes
     BasicStorage.BasicStorage,
     Synchronization.SynchronizedStorage,
     ConflictResolution.ConflictResolvingStorage,
@@ -28,6 +31,29 @@
 
     def tearDown(self):
         StorageTestBase.StorageTestBase.tearDown(self)
+
+    def checkConflictCacheIsCleared(self):
+        old_gcevery = TemporaryStorage.CONFLICT_CACHE_GCEVERY
+        old_maxage  = TemporaryStorage.CONFLICT_CACHE_MAXAGE
+        TemporaryStorage.CONFLICT_CACHE_GCEVERY = 5
+        TemporaryStorage.CONFLICT_CACHE_MAXAGE =  5
+        try:
+            oid = self._storage.new_oid()
+            self._dostore(oid, data=MinPO(5))
+            time.sleep(TemporaryStorage.CONFLICT_CACHE_GCEVERY + 1)
+            oid2 = self._storage.new_oid()
+            self._dostore(oid2, data=MinPO(10))
+            oid3 = self._storage.new_oid()
+            self._dostore(oid3, data=MinPO(9))
+            assert len(self._storage._conflict_cache) == 2
+            time.sleep(TemporaryStorage.CONFLICT_CACHE_GCEVERY + 1)
+            oid4 = self._storage.new_oid()
+            self._dostore(oid4, data=MinPO(11))
+            assert len(self._storage._conflict_cache) == 1
+            
+        finally:
+            TemporaryStorage.CONFLICT_CACHE_GCEVERY = old_gcevery
+            TemporaryStorage.CONFLICT_CACHE_MAXAGE =  old_maxage
 
 def test_suite():
     suite = unittest.makeSuite(TemporaryStorageTests, 'check')