[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