[Checkins] SVN: gocept.zeoraid/trunk/src/gocept/zeoraid/ test isReadOnly and lastTransaction, fixed code accordingly

Thomas Lotze tl at gocept.com
Mon Jan 14 09:20:41 EST 2008


Log message for revision 82869:
  test isReadOnly and lastTransaction, fixed code accordingly

Changed:
  U   gocept.zeoraid/trunk/src/gocept/zeoraid/storage.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-14 14:14:03 UTC (rev 82868)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py	2008-01-14 14:20:41 UTC (rev 82869)
@@ -175,6 +175,8 @@
 
     def lastTransaction(self):
         """Return the id of the last committed transaction."""
+        if self.raid_status() == 'failed':
+            raise gocept.zeoraid.interfaces.RAIDError('RAID is failed.')
         return self._last_tid
 
     def __len__(self):
@@ -435,7 +437,7 @@
     @ensure_open_storage
     def raid_disable(self, name):
         self._degrade_storage(name, fail=False)
-        return 'disabled %r' % name
+        return 'disabled %r' % (name,)
 
     # XXX
     @ensure_open_storage

Modified: gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py
===================================================================
--- gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py	2008-01-14 14:14:03 UTC (rev 82868)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py	2008-01-14 14:20:41 UTC (rev 82869)
@@ -105,7 +105,7 @@
         self.assertEquals('teststorage', self._storage.getName())
 
 
-class FailingStorageTestsBase(unittest.TestCase):
+class FailingStorageTestsBase(StorageTestBase.StorageTestBase):
 
     backend_count = None
 
@@ -215,7 +215,25 @@
                           self._storage.history, ZODB.utils.z64, '')
         self.assertEquals('failed', self._storage.raid_status())
 
+    def test_lastTransaction(self):
+        self.assertEquals(ZODB.utils.z64, self._storage.lastTransaction())
+        self.assertEquals(ZODB.utils.z64, self._backend(0).lastTransaction())
+        self.assertEquals(ZODB.utils.z64, self._backend(1).lastTransaction())
+        self._dostore()
+        lt = self._storage.lastTransaction()
+        self.assertNotEquals(ZODB.utils.z64, lt)
+        self.assertEquals(lt, self._backend(0).lastTransaction())
+        self.assertEquals(lt, self._backend(1).lastTransaction())
 
+    def test_lastTransaction_degrading(self):
+        self._storage.raid_disable(self._storage.storages_optimal[0])
+        self.assertEquals(ZODB.utils.z64, self._storage.lastTransaction())
+        self._storage.raid_disable(self._storage.storages_optimal[0])
+        self.assertEquals('failed', self._storage.raid_status())
+        self.assertRaises(gocept.zeoraid.interfaces.RAIDError,
+                          self._storage.lastTransaction)
+
+
 class ZEOReplicationStorageTests(ZEOStorageBackendTests,
                                  ReplicationStorageTests,
                                  ThreadTests.ThreadTests):



More information about the Checkins mailing list