[Zope-Checkins] CVS: StandaloneZODB/ZODB/tests - ReadOnlyStorage.py:1.1.2.2
Jeremy Hylton
jeremy@zope.com
Tue, 8 Jan 2002 12:15:40 -0500
Update of /cvs-repository/StandaloneZODB/ZODB/tests
In directory cvs.zope.org:/tmp/cvs-serv21099
Modified Files:
Tag: Standby-branch
ReadOnlyStorage.py
Log Message:
More extensive tests.
=== StandaloneZODB/ZODB/tests/ReadOnlyStorage.py 1.1.2.1 => 1.1.2.2 ===
+from ZODB.Transaction import Transaction
class ReadOnlyStorage:
def _create_data(self):
# test a read-only storage that already has some data
- self.oids = []
+ self.oids = {}
for i in range(10):
oid = self._storage.new_oid()
- self._dostore(oid)
- self.oids.append(oid)
+ revid = self._dostore(oid)
+ self.oids[oid] = revid
def _make_readonly(self):
self._storage.close()
self.open(read_only=1)
+ self.assert_(self._storage.isReadOnly())
- def checkNewOid(self):
+ def checkReadMethods(self):
+ self._create_data()
+ self._make_readonly()
+ # XXX not going to bother checking all read methods
+ for oid in self.oids.keys():
+ data, revid = self._storage.load(oid, '')
+ self.assertEqual(revid, self.oids[oid])
+ self.assert_(not self._storage.modifiedInVersion(oid))
+ _data = self._storage.loadSerial(oid, revid)
+ self.assertEqual(data, _data)
+
+ def checkWriteMethods(self):
self._make_readonly()
self.assertRaises(ReadOnlyError, self._storage.new_oid)
-
+ self.assertRaises(ReadOnlyError, self._storage.undo,
+ '\000' * 8)
+
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self.assertRaises(ReadOnlyError, self._storage.abortVersion,
+ '', t)
+ self._storage.tpc_abort(t)
+
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self.assertRaises(ReadOnlyError, self._storage.commitVersion,
+ '', '', t)
+ self._storage.tpc_abort(t)
+
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self.assertRaises(ReadOnlyError, self._storage.store,
+ '\000' * 8, None, '', '', t)
+ self._storage.tpc_abort(t)
+
+ if self._storage.supportsTransactionalUndo():
+ t = Transaction()
+ self._storage.tpc_begin(t)
+ self.assertRaises(ReadOnlyError, self._storage.transactionalUndo,
+ '\000' * 8, t)
+ self._storage.tpc_abort(t)
+