[Zodb-checkins] CVS: Zope3/src/zodb/btrees/tests - test_conflict.py:1.4

Jeremy Hylton jeremy@zope.com
Thu, 9 Jan 2003 13:16:21 -0500


Update of /cvs-repository/Zope3/src/zodb/btrees/tests
In directory cvs.zope.org:/tmp/cvs-serv23546/zodb/btrees/tests

Modified Files:
	test_conflict.py 
Log Message:
Collector #121:  ConflictResolvingStorage doesn't with builtin
_p_resolveConfict

Add several tests to test_conflict that test integration through zodb.
These tests should be backported to ZODB3.


=== Zope3/src/zodb/btrees/tests/test_conflict.py 1.3 => 1.4 ===
--- Zope3/src/zodb/btrees/tests/test_conflict.py:1.3	Thu Jan  9 12:51:58 2003
+++ Zope3/src/zodb/btrees/tests/test_conflict.py	Thu Jan  9 13:16:17 2003
@@ -17,31 +17,28 @@
 from zodb.btrees.IOBTree import IOBTree, IOBucket, IOSet, IOTreeSet
 from zodb.btrees.IIBTree import IIBTree, IIBucket, IISet, IITreeSet
 from zodb.btrees.OIBTree import OIBTree, OIBucket, OISet, OITreeSet
-from unittest import TestCase, TestSuite, TextTestRunner, makeSuite
+from unittest import TestCase, TestSuite, makeSuite
 
-from transaction.interfaces import ConflictError
+from transaction import get_transaction
+from zodb.btrees.interfaces import BTreesConflictError as ConflictError
 
 class Base:
     """ Tests common to all types: sets, buckets, and BTrees """
+
+    storage = None
+    
     def tearDown(self):
-        self.t = None
         del self.t
+        if self.storage is not None:
+            self.storage.close()
+            self.storage.cleanup()
 
-    def _getRoot(self):
+    def openDB(self):
         from zodb.storage.file import FileStorage
         from zodb.db import DB
         n = 'fs_tmp__%s' % os.getpid()
-        s = FileStorage(n)
-        db = DB(s)
-        root = db.open().root()
-        return root
-
-    def _closeDB(self, root):
-        root._p_jar._db.close()
-        root = None
-
-    def _delDB(self):
-        os.system('rm fs_tmp__*')
+        self.storage = FileStorage(n)
+        self.db = DB(self.storage)
 
 class MappingBase(Base):
     """ Tests common to mappings (buckets, btrees) """
@@ -70,6 +67,29 @@
 
         return  base, b1, b2, bm, e1, e2, items
 
+    def testSimpleConflict(self):
+        # Unlike all the other tests, invoke conflict resolution
+        # by committing a transaction and catching a conflict
+        # in the storage.
+        self.openDB()
+
+        r1 = self.db.open().root()
+        r1["t"] = self.t
+        get_transaction().commit()
+        
+        r2 = self.db.open().root()
+        copy = r2["t"]
+        copy._p_activate()
+
+        self.assertEqual(self.t._p_serial, copy._p_serial)
+
+        self.t.update({1:2, 2:3})
+        get_transaction().commit()
+
+        copy.update({3:4})
+        get_transaction().commit()
+        
+
     def testMergeDelete(self):
         base, b1, b2, bm, e1, e2, items = self._setupConflict()
         del b1[items[0][0]]
@@ -384,7 +404,6 @@
                   TestIITreeSets,
                   TestIOBuckets, TestOOBuckets, TestOIBuckets, TestIIBuckets):
         s = makeSuite(klass)
-        print klass, s.countTestCases()
         suite.addTest(makeSuite(klass))
     return suite