[Zodb-checkins] CVS: ZODB3/ZEO/tests - testClientCache.py:1.9.2.1
Jeremy Hylton
jeremy at zope.com
Fri Jun 20 15:59:47 EDT 2003
Update of /cvs-repository/ZODB3/ZEO/tests
In directory cvs.zope.org:/tmp/cvs-serv20098/tests
Modified Files:
Tag: ZODB3-3_2-branch
testClientCache.py
Log Message:
Fix corner case in load() -- from zodb4.
Need to backport.
=== ZODB3/ZEO/tests/testClientCache.py 1.9 => 1.9.2.1 ===
--- ZODB3/ZEO/tests/testClientCache.py:1.9 Mon Jun 16 14:50:06 2003
+++ ZODB3/ZEO/tests/testClientCache.py Fri Jun 20 14:59:46 2003
@@ -281,6 +281,8 @@
class PersistentClientCacheTests(unittest.TestCase):
_oid = 'abcdefgh'
+ _oid2 = 'bcdefghi'
+ _oid3 = 'cdefghij'
def setUp(self):
unittest.TestCase.setUp(self)
@@ -388,7 +390,42 @@
cache.checkSize(10*self.cachesize) # Force a file flip
self.failUnless(cache.getLastTid() is None)
-
+ def testLoadNonversionWithVersionInFlippedCache(self):
+ # This test provokes an error seen once in an unrelated test.
+ # The object is stored in the old cache file with version data,
+ # a load for non-version data occurs. The attempt to copy the
+ # non-version data to the new file fails.
+ nvdata = "Mend your speech a little, lest it may mar your fortunes."
+ nvserial = "12345678"
+ version = "folio"
+ vdata = "Mend your speech a little, lest you may mar your fortunes."
+ vserial = "12346789"
+
+ self.cache.store(self._oid, nvdata, nvserial, version, vdata, vserial)
+ self.cache.checkSize(10 * self.cachesize) # force a cache flip
+
+ for i in 1, 2: # check the we can load before and after copying
+ for xversion, xdata, xserial in [("", nvdata, nvserial),
+ (version, vdata, vserial)]:
+ data, serial = self.cache.load(self._oid, xversion)
+ self.assertEqual(data, xdata)
+ self.assertEqual(serial, xserial)
+
+ # now cause two more cache flips and make sure the data is still there
+ self.cache.store(self._oid2, "", "", "foo", "bar", "23456789")
+ self.cache.checkSize(10 * self.cachesize) # force a cache flip
+ self.cache.load(self._oid, "")
+ self.cache.store(self._oid3, "bar", "34567890", "", "", "")
+ self.cache.checkSize(10 * self.cachesize) # force a cache flip
+ self.cache.load(self._oid, "")
+
+ for i in 1, 2: # check the we can load before and after copying
+ for xversion, xdata, xserial in [("", nvdata, nvserial),
+ (version, vdata, vserial)]:
+ data, serial = self.cache.load(self._oid, xversion)
+ self.assertEqual(data, xdata)
+ self.assertEqual(serial, xserial)
+
class ClientCacheLongOIDTests(ClientCacheTests):
_oid = 'abcdefghijklmnop' * 2
_oid2 = 'bcdefghijklmnopq' * 2
@@ -397,7 +434,8 @@
class PersistentClientCacheLongOIDTests(PersistentClientCacheTests):
_oid = 'abcdefghijklmnop' * 2
-
+ _oid2 = 'bcdefghijklmnopq' * 2
+ _oid3 = 'cdefghijklmnopqr' * 2
def test_suite():
suite = unittest.TestSuite()
More information about the Zodb-checkins
mailing list