[Checkins] SVN: gocept.zeoraid/trunk/src/gocept/zeoraid/ Added
preliminary tests for __len__, need to force ClientStorage to sync.
Christian Theune
ct at gocept.com
Mon Jan 14 11:39:56 EST 2008
Log message for revision 82872:
Added preliminary tests for __len__, need to force ClientStorage to sync.
Fixed issue with OID generation when storages went offline: we always need to
ask all storages for a max oid.
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 15:19:42 UTC (rev 82871)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/storage.py 2008-01-14 16:39:55 UTC (rev 82872)
@@ -198,12 +198,11 @@
# XXX
def new_oid(self):
- # XXX This is not exactly a read operation, but we only need an answer from one storage
if self.isReadOnly():
raise ZODB.POSException.ReadOnlyError()
self._lock_acquire()
try:
- return self._apply_single_storage('new_oid')
+ return self._apply_all_storages('new_oid')
finally:
self._lock_release()
@@ -442,6 +441,7 @@
# XXX
@ensure_open_storage
def raid_recover(self, name):
+ # XXX: Need to sync `max oid` after recovery
if name not in self.storages_degraded:
return
self.storages_degraded.remove(name)
Modified: gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py
===================================================================
--- gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py 2008-01-14 15:19:42 UTC (rev 82871)
+++ gocept.zeoraid/trunk/src/gocept/zeoraid/tests/test_basics.py 2008-01-14 16:39:55 UTC (rev 82872)
@@ -233,7 +233,30 @@
self.assertRaises(gocept.zeoraid.interfaces.RAIDError,
self._storage.lastTransaction)
+ def test_len_degrading(self):
+ # Brrrr. ClientStorage doesn't seem to implement __len__ correctly.
+ self.assertEquals(0, len(self._storage))
+ self.assertEquals(0, len(self._backend(0)))
+ self.assertEquals(0, len(self._backend(1)))
+ self.assertEquals
+ self._dostore()
+ self._dostore()
+ # See above. This shouldn't be 0 if ClientStorage worked correctly.
+ self.assertEquals(0, len(self._storage))
+ self.assertEquals(0, len(self._backend(0)))
+ self.assertEquals(0, len(self._backend(1)))
+ self._storage.raid_disable(self._storage.storages_optimal[0])
+ self._dostore()
+ # See above. This shouldn't be 0 if ClientStorage worked correctly.
+ self.assertEquals(0, len(self._storage))
+ self.assertEquals(0, len(self._backend(0)))
+
+ self._storage.raid_disable(self._storage.storages_optimal[0])
+ self.assertRaises(gocept.zeoraid.interfaces.RAIDError,
+ self._storage.__len__)
+
+
class ZEOReplicationStorageTests(ZEOStorageBackendTests,
ReplicationStorageTests,
ThreadTests.ThreadTests):
More information about the Checkins
mailing list