[Zodb-checkins] CVS: StandaloneZODB/ZODB/tests - BasicStorage.py:1.16 ConflictResolution.py:1.7 HistoryStorage.py:1.6 StorageTestBase.py:1.11 Synchronization.py:1.3 TransactionalUndoStorage.py:1.14 TransactionalUndoVersionStorage.py:1.5 VersionStorage.py:1.12
Jeremy Hylton
jeremy@zope.com
Tue, 22 Jan 2002 11:42:42 -0500
Update of /cvs-repository/StandaloneZODB/ZODB/tests
In directory cvs.zope.org:/tmp/cvs-serv27349/tests
Modified Files:
BasicStorage.py ConflictResolution.py HistoryStorage.py
StorageTestBase.py Synchronization.py
TransactionalUndoStorage.py TransactionalUndoVersionStorage.py
VersionStorage.py
Log Message:
Don't use self._transaction.
It's not thread-safe to store a Transaction() object in an instance
variable without some sort of locking. Nor is it desirable to use the
same transaction object for more than one transaction.
So get rid of all uses of self._transaction and replace with a local
variable.
=== StandaloneZODB/ZODB/tests/BasicStorage.py 1.15 => 1.16 ===
class BasicStorage:
def checkBasics(self):
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
# This should simply return
- self._storage.tpc_begin(self._transaction)
+ self._storage.tpc_begin(t)
# Aborting is easy
- self._storage.tpc_abort(self._transaction)
+ self._storage.tpc_abort(t)
# Test a few expected exceptions when we're doing operations giving a
# different Transaction object than the one we've begun on.
- self._storage.tpc_begin(self._transaction)
+ self._storage.tpc_begin(t)
self.assertRaises(
POSException.StorageTransactionError,
self._storage.store,
@@ -65,7 +66,7 @@
POSException.StorageTransactionError,
self._storage.store,
0, 1, 2, 3, Transaction())
- self._storage.tpc_abort(self._transaction)
+ self._storage.tpc_abort(t)
def checkSerialIsNoneForInitialRevision(self):
eq = self.assertEqual
@@ -125,7 +126,6 @@
# Now abort this transaction
self._storage.tpc_abort(self._transaction)
# Now start all over again
- self._transaction = Transaction()
oid = self._storage.new_oid()
self._dostore(oid=oid, data=MinPO(6))
@@ -133,14 +133,13 @@
oid1 = self._storage.new_oid()
revid1 = self._dostore(oid=oid1, data=MinPO(-2))
oid = self._storage.new_oid()
- self._storage.tpc_begin(self._transaction)
- self._storage.store(oid, ZERO, zodb_pickle(MinPO(5)),
- '', self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self._storage.store(oid, ZERO, zodb_pickle(MinPO(5)), '', t)
# Now abort this transaction
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_abort(self._transaction)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_abort(t)
# Now start all over again
- self._transaction = Transaction()
oid = self._storage.new_oid()
revid = self._dostore(oid=oid, data=MinPO(6))
=== StandaloneZODB/ZODB/tests/ConflictResolution.py 1.6 => 1.7 ===
info = self._storage.undoInfo()
tid = info[1]['id']
- self._storage.tpc_begin(self._transaction)
- self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_finish(t)
def checkUndoUnresolvable(self):
# This test is based on checkNotUndoable in the
@@ -164,9 +165,9 @@
# Start the undo
info = self._storage.undoInfo()
tid = info[1]['id']
- self._storage.tpc_begin(self._transaction)
- self.assertRaises(UndoError,
- self._storage.transactionalUndo,
- tid, self._transaction)
- self._storage.tpc_abort(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self.assertRaises(UndoError, self._storage.transactionalUndo,
+ tid, t)
+ self._storage.tpc_abort(t)
=== StandaloneZODB/ZODB/tests/HistoryStorage.py 1.5 => 1.6 ===
"""
+from ZODB.Transaction import Transaction
from ZODB.tests.MinPO import MinPO
from ZODB.tests.StorageTestBase import zodb_unpickle
@@ -111,10 +112,11 @@
revid6 = self._dostore(oid, revid=revid5, data=MinPO(16),
version=version)
# Now commit the version
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.commitVersion(version, '', self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.commitVersion(version, '', t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
# After consultation with Jim, we agreed that the semantics of
# revision id's after a version commit is that the committed object
# gets a new serial number (a.k.a. revision id). Note that
@@ -168,10 +170,11 @@
revid6 = self._dostore(oid, revid=revid5, data=MinPO(16),
version=version)
# Now commit the version
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.abortVersion(version, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.abortVersion(version, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
# After consultation with Jim, we agreed that the semantics of
# revision id's after a version commit is that the committed object
# gets a new serial number (a.k.a. revision id). Note that
=== StandaloneZODB/ZODB/tests/StorageTestBase.py 1.10 => 1.11 ===
version = ''
# Begin the transaction
- self._transaction = Transaction()
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self._transaction = t
# Store an object
- r1 = self._storage.store(oid, revid, data, version,
- self._transaction)
+ r1 = self._storage.store(oid, revid, data, version, t)
# Finish the transaction
- r2 = self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ r2 = self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
+ self._transaction = None
return handle_serials(oid, r1, r2)
def _dostoreNP(self, oid=None, revid=None, data=None, version=None):
=== StandaloneZODB/ZODB/tests/Synchronization.py 1.2 => 1.3 ===
def verifyWrongTrans(self, callable, *args):
- self._storage.tpc_begin(self._transaction)
+ self._storage.tpc_begin(Transaction())
args = (StorageTransactionError, callable) + args
apply(self.assertRaises, args)
def checkAbortVersionNotCommitting(self):
self.verifyNotCommitting(self._storage.abortVersion,
- VERSION, self._transaction)
+ VERSION, Transaction())
def checkAbortVersionWrongTrans(self):
self.verifyWrongTrans(self._storage.abortVersion,
@@ -81,7 +81,7 @@
def checkCommitVersionNotCommitting(self):
self.verifyNotCommitting(self._storage.commitVersion,
- VERSION, "", self._transaction)
+ VERSION, "", Transaction())
def checkCommitVersionWrongTrans(self):
self.verifyWrongTrans(self._storage.commitVersion,
@@ -90,7 +90,7 @@
def checkStoreNotCommitting(self):
self.verifyNotCommitting(self._storage.store,
- OID, SERIALNO, "", "", self._transaction)
+ OID, SERIALNO, "", "", Transaction())
def checkStoreWrongTrans(self):
self.verifyWrongTrans(self._storage.store,
@@ -107,18 +107,19 @@
self._storage.tpc_abort(Transaction())
def checkAbortWrongTrans(self):
- self._storage.tpc_begin(self._transaction)
+ self._storage.tpc_begin(Transaction())
self._storage.tpc_abort(Transaction())
def checkFinishNotCommitting(self):
self._storage.tpc_finish(Transaction())
def checkFinishWrongTrans(self):
- self._storage.tpc_begin(self._transaction)
+ self._storage.tpc_begin(Transaction())
self._storage.tpc_finish(Transaction())
def checkBeginCommitting(self):
- self._storage.tpc_begin(self._transaction)
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self._storage.tpc_begin(t)
# XXX how to check undo?
=== StandaloneZODB/ZODB/tests/TransactionalUndoStorage.py 1.13 => 1.14 ===
import types
from ZODB import POSException
+from ZODB.Transaction import Transaction
from ZODB.tests.MinPO import MinPO
from ZODB.tests.StorageTestBase import zodb_pickle, zodb_unpickle
@@ -37,13 +38,14 @@
def _multi_obj_transaction(self, objs):
newrevs = {}
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self._transaction_begin()
for oid, rev, data in objs:
- self._transaction_store(oid, rev, data, '', self._transaction)
+ self._transaction_store(oid, rev, data, '', t)
newrevs[oid] = None
- self._transaction_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ self._transaction_vote(t)
+ self._storage.tpc_finish(t)
for oid in newrevs.keys():
newrevs[oid] = self._transaction_newserial(oid)
return newrevs
@@ -58,11 +60,12 @@
info = self._storage.undoInfo()
tid = info[0]['id']
# Now start an undo transaction
- self._transaction.note('undo1')
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ t.note('undo1')
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
data, revid = self._storage.load(oid, '')
@@ -70,11 +73,12 @@
# Do another one
info = self._storage.undoInfo()
tid = info[2]['id']
- self._transaction.note('undo2')
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ t.note('undo2')
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
data, revid = self._storage.load(oid, '')
@@ -82,11 +86,12 @@
# Try to undo the first record
info = self._storage.undoInfo()
tid = info[4]['id']
- self._transaction.note('undo3')
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ t.note('undo3')
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
@@ -96,10 +101,11 @@
# And now let's try to redo the object's creation
info = self._storage.undoInfo()
tid = info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
data, revid = self._storage.load(oid, '')
@@ -113,10 +119,11 @@
# Undo the last transaction
info = self._storage.undoInfo()
tid = info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
data, revid = self._storage.load(oid, '')
@@ -125,10 +132,11 @@
# creation. Let's undo the object creation.
info = self._storage.undoInfo()
tid = info[2]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
self.assertRaises(KeyError, self._storage.load, oid, '')
@@ -141,10 +149,11 @@
# Undo the last transaction
info = self._storage.undoInfo()
tid = info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
data, revid = self._storage.load(oid, '')
@@ -153,10 +162,11 @@
# creation. Let's redo the last undo
info = self._storage.undoInfo()
tid = info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
data, revid = self._storage.load(oid, '')
@@ -171,26 +181,28 @@
oid2 = self._storage.new_oid()
revid1 = revid2 = ZERO
# Store two objects in the same transaction
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self._transaction_begin()
- self._transaction_store(oid1, revid1, p31, '', self._transaction)
- self._transaction_store(oid2, revid2, p51, '', self._transaction)
+ self._transaction_store(oid1, revid1, p31, '', t)
+ self._transaction_store(oid2, revid2, p51, '', t)
# Finish the transaction
- self._transaction_vote(self._transaction)
+ self._transaction_vote(t)
revid1 = self._transaction_newserial(oid1)
revid2 = self._transaction_newserial(oid2)
- self._storage.tpc_finish(self._transaction)
+ self._storage.tpc_finish(t)
eq(revid1, revid2)
# Update those same two objects
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self._transaction_begin()
- self._transaction_store(oid1, revid1, p32, '', self._transaction)
- self._transaction_store(oid2, revid2, p52, '', self._transaction)
+ self._transaction_store(oid1, revid1, p32, '', t)
+ self._transaction_store(oid2, revid2, p52, '', t)
# Finish the transaction
- self._transaction_vote(self._transaction)
+ self._transaction_vote(t)
revid1 = self._transaction_newserial(oid1)
revid2 = self._transaction_newserial(oid2)
- self._storage.tpc_finish(self._transaction)
+ self._storage.tpc_finish(t)
eq(revid1, revid2)
# Make sure the objects have the current value
data, revid1 = self._storage.load(oid1, '')
@@ -200,10 +212,11 @@
# Now attempt to undo the transaction containing two objects
info = self._storage.undoInfo()
tid = info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 2)
self.failUnless(oid1 in oids)
self.failUnless(oid2 in oids)
@@ -249,14 +262,15 @@
info = self._storage.undoInfo()
tid = info[0]['id']
tid1 = info[1]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- oids1 = self._storage.transactionalUndo(tid1, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ oids1 = self._storage.transactionalUndo(tid1, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
# We get the finalization stuff called an extra time:
-## self._storage.tpc_vote(self._transaction)
-## self._storage.tpc_finish(self._transaction)
+## self._storage.tpc_vote(t)
+## self._storage.tpc_finish(t)
eq(len(oids), 2)
eq(len(oids1), 2)
unless(oid1 in oids)
@@ -268,10 +282,11 @@
# Now try to undo the one we just did to undo, whew
info = self._storage.undoInfo()
tid = info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 2)
unless(oid1 in oids)
unless(oid2 in oids)
@@ -292,23 +307,25 @@
revid1 = self._dostore(oid1, data=p31, already_pickled=1)
revid2 = self._dostore(oid2, data=p51, already_pickled=1)
# Update those same two objects
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self._transaction_begin()
- self._transaction_store(oid1, revid1, p32, '', self._transaction)
- self._transaction_store(oid2, revid2, p52, '', self._transaction)
+ self._transaction_store(oid1, revid1, p32, '', t)
+ self._transaction_store(oid2, revid2, p52, '', t)
# Finish the transaction
- self._transaction_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ self._transaction_vote(t)
+ self._storage.tpc_finish(t)
revid1 = self._transaction_newserial(oid1)
revid2 = self._transaction_newserial(oid2)
eq(revid1, revid2)
# Now attempt to undo the transaction containing two objects
info = self._storage.undoInfo()
tid = info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 2)
self.failUnless(oid1 in oids)
self.failUnless(oid2 in oids)
@@ -318,13 +335,14 @@
eq(zodb_unpickle(data), MinPO(51))
# Like the above, but this time, the second transaction contains only
# one object.
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self._transaction_begin()
- self._transaction_store(oid1, revid1, p33, '', self._transaction)
- self._transaction_store(oid2, revid2, p53, '', self._transaction)
+ self._transaction_store(oid1, revid1, p33, '', t)
+ self._transaction_store(oid2, revid2, p53, '', t)
# Finish the transaction
- self._transaction_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ self._transaction_vote(t)
+ self._storage.tpc_finish(t)
revid1 = self._transaction_newserial(oid1)
revid2 = self._transaction_newserial(oid2)
eq(revid1, revid2)
@@ -334,10 +352,11 @@
# Now attempt to undo the transaction containing two objects
info = self._storage.undoInfo()
tid = info[1]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
self.failUnless(oid1 in oids)
self.failUnless(not oid2 in oids)
@@ -357,11 +376,12 @@
# Start the undo
info = self._storage.undoInfo()
tid = info[1]['id']
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self.assertRaises(POSException.UndoError,
self._storage.transactionalUndo,
- tid, self._transaction)
- self._storage.tpc_abort(self._transaction)
+ tid, t)
+ self._storage.tpc_abort(t)
# Now have more fun: object1 and object2 are in the same transaction,
# which we'll try to undo to, but one of them has since modified in
# different transaction, so the undo should fail.
@@ -372,12 +392,13 @@
p81, p82, p91, p92 = map(zodb_pickle,
map(MinPO, (81, 82, 91, 92)))
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self._transaction_begin()
- self._transaction_store(oid1, revid1, p81, '', self._transaction)
- self._transaction_store(oid2, revid2, p91, '', self._transaction)
- self._transaction_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ self._transaction_store(oid1, revid1, p81, '', t)
+ self._transaction_store(oid2, revid2, p91, '', t)
+ self._transaction_vote(t)
+ self._storage.tpc_finish(t)
revid1 = self._transaction_newserial(oid1)
revid2 = self._transaction_newserial(oid2)
eq(revid1, revid2)
@@ -394,8 +415,9 @@
self.assertNotEqual(revid2, revid_22)
info = self._storage.undoInfo()
tid = info[1]['id']
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self.assertRaises(POSException.UndoError,
self._storage.transactionalUndo,
- tid, self._transaction)
- self._storage.tpc_abort(self._transaction)
+ tid, t)
+ self._storage.tpc_abort(t)
=== StandaloneZODB/ZODB/tests/TransactionalUndoVersionStorage.py 1.4 => 1.5 ===
from ZODB import POSException
+from ZODB.Transaction import Transaction
from ZODB.tests.MinPO import MinPO
from ZODB.tests.StorageTestBase import zodb_unpickle
@@ -11,14 +12,17 @@
oid = self._storage.new_oid()
version = 'one'
revid_a = self._dostore(oid, data=MinPO(91))
- revid_b = self._dostore(oid, revid=revid_a, data=MinPO(92), version=version)
- revid_c = self._dostore(oid, revid=revid_b, data=MinPO(93), version=version)
+ revid_b = self._dostore(oid, revid=revid_a, data=MinPO(92),
+ version=version)
+ revid_c = self._dostore(oid, revid=revid_b, data=MinPO(93),
+ version=version)
info=self._storage.undoInfo()
tid=info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
assert len(oids) == 1
assert oids[0] == oid
data, revid = self._storage.load(oid, '')
@@ -28,10 +32,11 @@
assert revid > revid_b and revid > revid_c
assert zodb_unpickle(data) == MinPO(92)
# Now commit the version...
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.commitVersion(version, '', self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.commitVersion(version, '', t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
assert len(oids) == 1
assert oids[0] == oid
@@ -46,10 +51,11 @@
# ...and undo the commit
info=self._storage.undoInfo()
tid=info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
assert len(oids) == 1
assert oids[0] == oid
data, revid = self._storage.load(oid, version)
@@ -57,10 +63,11 @@
data, revid = self._storage.load(oid, '')
assert zodb_unpickle(data) == MinPO(91)
# Now abort the version
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.abortVersion(version, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.abortVersion(version, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
assert len(oids) == 1
assert oids[0] == oid
# The object should not exist in the version now, but it should exist
@@ -76,10 +83,11 @@
# Now undo the abort
info=self._storage.undoInfo()
tid=info[0]['id']
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.transactionalUndo(tid, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.transactionalUndo(tid, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
assert len(oids) == 1
assert oids[0] == oid
# And the object should be back in versions 'one' and ''
=== StandaloneZODB/ZODB/tests/VersionStorage.py 1.11 => 1.12 ===
from ZODB import POSException
+from ZODB.Transaction import Transaction
from ZODB.tests.MinPO import MinPO
from ZODB.tests.StorageTestBase import zodb_unpickle
@@ -144,10 +145,11 @@
## s1 = self._storage.getSerial(oid)
# Now abort the version -- must be done in a transaction
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.abortVersion(version, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.abortVersion(version, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
## s2 = self._storage.getSerial(oid)
## eq(s1, s2) # or self.assert(s2 > s1) ?
eq(len(oids), 1)
@@ -159,14 +161,15 @@
eq = self.assertEqual
oid, version = self._setup_version()
# Now abort a bogus version
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
#JF# The spec is silent on what happens if you abort or commit
#JF# a non-existent version. FileStorage consideres this a noop.
#JF# We can change the spec, but until we do ....
#JF# self.assertRaises(POSException.VersionError,
#JF# self._storage.abortVersion,
- #JF# 'bogus', self._transaction)
+ #JF# 'bogus', t)
# And try to abort the empty version
if (hasattr(self._storage, 'supportsTransactionalUndo')
@@ -174,12 +177,12 @@
# XXX FileStorage used to be broken on this one
self.assertRaises(POSException.VersionError,
self._storage.abortVersion,
- '', self._transaction)
+ '', t)
# But now we really try to abort the version
- oids = self._storage.abortVersion(version, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ oids = self._storage.abortVersion(version, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid)
data, revid = self._storage.load(oid, '')
@@ -194,19 +197,21 @@
oid1, version1 = self._setup_version('one')
data, revid1 = self._storage.load(oid1, version1)
eq(zodb_unpickle(data), MinPO(54))
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
self.assertRaises(POSException.VersionCommitError,
self._storage.commitVersion,
- 'one', 'one', self._transaction)
+ 'one', 'one', t)
def checkModifyAfterAbortVersion(self):
eq = self.assertEqual
oid, version = self._setup_version()
# Now abort the version
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.abortVersion(version, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.abortVersion(version, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
# Load the object's current state (which gets us the revid)
data, revid = self._storage.load(oid, '')
# And modify it a few times
@@ -225,10 +230,11 @@
data, revid = self._storage.load(oid, '')
eq(zodb_unpickle(data), MinPO(51))
# Try committing this version to the empty version
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.commitVersion(version, '', self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.commitVersion(version, '', t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
data, revid = self._storage.load(oid, '')
eq(zodb_unpickle(data), MinPO(54))
@@ -251,11 +257,12 @@
eq(zodb_unpickle(data), MinPO(51))
# Okay, now let's commit object1 to version2
- self._storage.tpc_begin(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
oids = self._storage.commitVersion(version1, version2,
- self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid1)
data, revid = self._storage.load(oid1, version2)
@@ -286,10 +293,11 @@
eq(zodb_unpickle(data), MinPO(51))
# First, let's abort version1
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.abortVersion(version1, self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.abortVersion(version1, t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid1)
data, revid = self._storage.load(oid1, '')
@@ -310,10 +318,11 @@
data, revid = self._storage.load(oid2, version2)
eq(zodb_unpickle(data), MinPO(54))
# Okay, now let's commit version2 back to the trunk
- self._storage.tpc_begin(self._transaction)
- oids = self._storage.commitVersion(version2, '', self._transaction)
- self._storage.tpc_vote(self._transaction)
- self._storage.tpc_finish(self._transaction)
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ oids = self._storage.commitVersion(version2, '', t)
+ self._storage.tpc_vote(t)
+ self._storage.tpc_finish(t)
eq(len(oids), 1)
eq(oids[0], oid2)
data, revid = self._storage.load(oid1, '')