[Checkins] SVN: gocept.zeoraid/trunk/src/gocept/zeoraid/ Added
support for record_iternext.
Christian Theune
ct at gocept.com
Wed Jan 30 08:29:57 EST 2008
Log message for revision 83315:
Added support for record_iternext.
Changed:
U gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py
U gocept.zeoraid/trunk/src/gocept/zeoraid/tests/failingstorage.py
U gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py
-=-
Modified: gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py
===================================================================
--- gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py 2008-01-30 13:09:28 UTC (rev 83314)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py 2008-01-30 13:29:57 UTC (rev 83315)
@@ -432,9 +432,9 @@
# IStorageCurrentRecordIteration
- # XXX
def record_iternext(self, next=None):
"""Iterate over the records in a storage."""
+ return self._apply_single_storage('record_iternext', (next,))
# IServeable
Modified: gocept.zeoraid/trunk/src/gocept/zeoraid/tests/failingstorage.py
===================================================================
--- gocept.zeoraid/trunk/src/gocept/zeoraid/tests/failingstorage.py 2008-01-30 13:09:28 UTC (rev 83314)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/tests/failingstorage.py 2008-01-30 13:29:57 UTC (rev 83315)
@@ -62,7 +62,7 @@
# non-data descriptors on the proxy object.
__stub_methods__ = ['history', 'loadSerial', 'close', 'getSize', 'pack',
'tpc_abort', 'tpc_finish', 'storeBlob', 'loadBlob',
- 'undo']
+ 'undo', 'record_iternext']
for name in __stub_methods__:
method = zope.proxy.non_overridable(failing_method(name))
locals()[name] = method
Modified: gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py
===================================================================
--- gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py 2008-01-30 13:09:28 UTC (rev 83314)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py 2008-01-30 13:29:57 UTC (rev 83315)
@@ -956,6 +956,51 @@
self._storage.undoInfo)
self.assertEquals('failed', self._storage.raid_status())
+ def test_record_iternext(self):
+ for x in range(5):
+ oid = self._storage.new_oid()
+ self._dostoreNP(oid, data=str(x))
+
+ oid, serial, data, next = self._storage.record_iternext(None)
+ self.assertEquals('0', data)
+ oid, serial, data, next = self._storage.record_iternext(next)
+ self.assertEquals('1', data)
+ oid, serial, data, next = self._storage.record_iternext(next)
+ self.assertEquals('2', data)
+ oid, serial, data, next = self._storage.record_iternext(next)
+ self.assertEquals('3', data)
+ oid, serial, data, next = self._storage.record_iternext(next)
+ self.assertEquals('4', data)
+ self.assertEquals(None, next)
+
+ def test_record_iternext_degrading1(self):
+ for x in range(5):
+ oid = self._storage.new_oid()
+ self._dostoreNP(oid, data=str(x))
+
+ self._disable_storage(0)
+ oid, serial, data, next = self._storage.record_iternext(None)
+ self.assertEquals('0', data)
+
+ self._disable_storage(0)
+ self.assertRaises(gocept.zeoraid.interfaces.RAIDError,
+ self._storage.record_iternext, next)
+
+ def test_record_iternext_degrading2(self):
+ for x in range(5):
+ oid = self._storage.new_oid()
+ self._dostoreNP(oid, data=str(x))
+
+ self._backend(0).fail('record_iternext')
+ oid, serial, data, next = self._storage.record_iternext(None)
+ self.assertEquals('0', data)
+ self.assertEquals('degraded', self._storage.raid_status())
+
+ self._backend(0).fail('record_iternext')
+ self.assertRaises(gocept.zeoraid.interfaces.RAIDError,
+ self._storage.record_iternext, next)
+ self.assertEquals('failed', self._storage.raid_status())
+
class ZEOReplicationStorageTests(ZEOStorageBackendTests,
ReplicationStorageTests,
ThreadTests.ThreadTests):
More information about the Checkins
mailing list