[Zope-Checkins] CVS: ZODB3/BDBStorage/tests - BerkeleyTestBase.py:1.7.4.1 ZODBTestBase.py:1.5.4.1 test_create.py:1.11.6.1 test_storage_api.py:1.23.2.1 test_virgin.py:1.10.6.1 test_zodb_simple.py:1.8.4.1 timeiter.py:1.3.6.1 timepickles.py:1.2.4.1
Barry Warsaw
barry@wooz.org
Tue, 7 Jan 2003 14:40:49 -0500
Update of /cvs-repository/ZODB3/BDBStorage/tests
In directory cvs.zope.org:/tmp/cvs-serv24866/BDBStorage/tests
Modified Files:
Tag: ZODB3-3_1-branch
BerkeleyTestBase.py ZODBTestBase.py test_create.py
test_storage_api.py test_virgin.py test_zodb_simple.py
timeiter.py timepickles.py
Log Message:
Sync'ing with the trunk for BDBStorage. Note though that the
RecoveryStorage tests refactored on the trunk are disabled on the
branch.
=== ZODB3/BDBStorage/tests/BerkeleyTestBase.py 1.7 => 1.7.4.1 ===
--- ZODB3/BDBStorage/tests/BerkeleyTestBase.py:1.7 Tue Sep 3 13:21:52 2002
+++ ZODB3/BDBStorage/tests/BerkeleyTestBase.py Tue Jan 7 14:40:44 2003
@@ -2,20 +2,23 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
-# Basic test framework class for both the Full and Minimal Berkeley storages
+# Basic test framework class for both the BDBFullStorage and BDBMinimalStorage
+# Berkeley storages
import os
import errno
+
+from BDBStorage.BerkeleyBase import BerkeleyConfig
from ZODB.tests.StorageTestBase import StorageTestBase
DBHOME = 'test-db'
@@ -23,44 +26,48 @@
class BerkeleyTestBase(StorageTestBase):
- def _zap_dbhome(self):
+ def _zap_dbhome(self, dir):
# If the tests exited with any uncommitted objects, they'll blow up
# subsequent tests because the next transaction commit will try to
# commit those object. But they're tied to closed databases, so
# that's broken. Aborting the transaction now saves us the headache.
try:
- for file in os.listdir(DBHOME):
- os.unlink(os.path.join(DBHOME, file))
- os.removedirs(DBHOME)
+ for file in os.listdir(dir):
+ os.unlink(os.path.join(dir, file))
+ os.removedirs(dir)
except OSError, e:
- if e.errno <> errno.ENOENT: raise
+ if e.errno <> errno.ENOENT:
+ raise
- def setUp(self):
- StorageTestBase.setUp(self)
- self._zap_dbhome()
- os.mkdir(DBHOME)
+ def _mk_dbhome(self, dir):
+ # Checkpointing just slows the tests down because we have to wait for
+ # the thread to properly shutdown. This can take up to 10 seconds, so
+ # for the purposes of the test suite we shut off this thread.
+ config = BerkeleyConfig()
+ config.interval = 0
+ os.mkdir(dir)
try:
- self._storage = self.ConcreteStorage(DBHOME)
+ return self.ConcreteStorage(dir, config=config)
except:
- self._zap_dbhome()
+ self._zap_dbhome(dir)
raise
+ def setUp(self):
+ StorageTestBase.setUp(self)
+ self._zap_dbhome(DBHOME)
+ self._storage = self._mk_dbhome(DBHOME)
+
def tearDown(self):
StorageTestBase.tearDown(self)
- self._zap_dbhome()
+ self._zap_dbhome(DBHOME)
class MinimalTestBase(BerkeleyTestBase):
- from bsddb3Storage import Minimal
- ConcreteStorage = Minimal.Minimal
+ from BDBStorage import BDBMinimalStorage
+ ConcreteStorage = BDBMinimalStorage.BDBMinimalStorage
class FullTestBase(BerkeleyTestBase):
- from bsddb3Storage import Full
- ConcreteStorage = Full.Full
-
-
-class AutopackTestBase(BerkeleyTestBase):
- from bsddb3Storage import Autopack
- ConcreteStorage = Autopack.Autopack
+ from BDBStorage import BDBFullStorage
+ ConcreteStorage = BDBFullStorage.BDBFullStorage
=== ZODB3/BDBStorage/tests/ZODBTestBase.py 1.5 => 1.5.4.1 ===
--- ZODB3/BDBStorage/tests/ZODBTestBase.py:1.5 Tue Sep 3 13:21:20 2002
+++ ZODB3/BDBStorage/tests/ZODBTestBase.py Tue Jan 7 14:40:44 2003
@@ -18,7 +18,7 @@
import errno
from ZODB import DB
-from bsddb3Storage.tests.BerkeleyTestBase import BerkeleyTestBase
+from BDBStorage.tests.BerkeleyTestBase import BerkeleyTestBase
DBHOME = 'test-db'
@@ -27,8 +27,8 @@
class ZODBTestBase(BerkeleyTestBase):
def setUp(self):
BerkeleyTestBase.setUp(self)
+ self._db = None
try:
- self._storage = self.ConcreteStorage(DBHOME)
self._db = DB(self._storage)
self._conn = self._db.open()
self._root = self._conn.root()
=== ZODB3/BDBStorage/tests/test_create.py 1.11 => 1.11.6.1 ===
--- ZODB3/BDBStorage/tests/test_create.py:1.11 Mon Feb 11 18:40:43 2002
+++ ZODB3/BDBStorage/tests/test_create.py Tue Jan 7 14:40:44 2003
@@ -2,21 +2,28 @@
#
# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
# Unit test for database creation
import os
+import time
import unittest
-import BerkeleyTestBase
+
+import BDBStorage
+if BDBStorage.is_available:
+ from BDBStorage.BerkeleyBase import BerkeleyConfig
+ from BDBStorage.BDBFullStorage import BDBFullStorage
+
+from BDBStorage.tests import BerkeleyTestBase
@@ -25,21 +32,16 @@
self.failUnless(os.path.isdir(BerkeleyTestBase.DBHOME))
-class MinimalCreateTest(BerkeleyTestBase.BerkeleyTestBase,
- BerkeleyTestBase.MinimalTestBase,
- TestMixin):
+class MinimalCreateTest(BerkeleyTestBase.MinimalTestBase, TestMixin):
pass
-class FullCreateTest(BerkeleyTestBase.BerkeleyTestBase,
- BerkeleyTestBase.FullTestBase,
- TestMixin):
+class FullCreateTest(BerkeleyTestBase.FullTestBase, TestMixin):
pass
-class FullOpenExistingTest(BerkeleyTestBase.BerkeleyTestBase,
- BerkeleyTestBase.FullTestBase):
+class FullOpenExistingTest(BerkeleyTestBase.FullTestBase):
def checkOpenWithExistingVersions(self):
version = 'test-version'
oid = self._storage.new_oid()
@@ -71,11 +73,48 @@
+class FullOpenCloseTest(BerkeleyTestBase.FullTestBase):
+ def _mk_dbhome(self, dir):
+ config = BerkeleyConfig
+ config.interval = 10
+ os.mkdir(dir)
+ try:
+ return self.ConcreteStorage(dir, config=config)
+ except:
+ self._zap_dbhome(dir)
+ raise
+
+ def checkCloseWithCheckpointingThread(self):
+ # All the interesting stuff happens in the setUp and tearDown
+ time.sleep(20)
+
+
+
+class OpenRecoveryTest(BerkeleyTestBase.FullTestBase):
+ def _mk_dbhome(self, dir):
+ self._dir = dir
+
+ def checkOpenWithBogusConfig(self):
+ class C: pass
+ c = C()
+ # This instance won't have the necessary attributes, so the creation
+ # will fail. We want to be sure that everything gets cleaned up
+ # enough to fix that and create a proper storage.
+ self.assertRaises(AttributeError, BDBFullStorage, self._dir, config=c)
+ c = BerkeleyConfig()
+ s = BDBFullStorage(self._dir, config=c)
+ s.close()
+
+
+
def test_suite():
suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(MinimalCreateTest, 'check'))
- suite.addTest(unittest.makeSuite(FullCreateTest, 'check'))
- suite.addTest(unittest.makeSuite(FullOpenExistingTest, 'check'))
+ if BDBStorage.is_available:
+ suite.addTest(unittest.makeSuite(MinimalCreateTest, 'check'))
+ suite.addTest(unittest.makeSuite(FullCreateTest, 'check'))
+ suite.addTest(unittest.makeSuite(FullOpenExistingTest, 'check'))
+ suite.addTest(unittest.makeSuite(FullOpenCloseTest, 'check'))
+ suite.addTest(unittest.makeSuite(OpenRecoveryTest, 'check'))
return suite
=== ZODB3/BDBStorage/tests/test_storage_api.py 1.23 => 1.23.2.1 ===
--- ZODB3/BDBStorage/tests/test_storage_api.py:1.23 Thu Oct 3 13:33:43 2002
+++ ZODB3/BDBStorage/tests/test_storage_api.py Tue Jan 7 14:40:44 2003
@@ -1,27 +1,25 @@
##############################################################################
#
-# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# Copyright (c) 2001, 2002, 2003 Zope Corporation and Contributors.
# All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
# Unit tests for basic storage functionality
import unittest
-# Import this here and now so that import failures properly cause the test
-# suite to ignore these tests.
-import bsddb3
-
from ZODB import POSException
-import BerkeleyTestBase
+import BDBStorage
+from BDBStorage.tests import BerkeleyTestBase
+
from ZODB.tests.BasicStorage import BasicStorage
from ZODB.tests.RevisionStorage import RevisionStorage
from ZODB.tests.VersionStorage import VersionStorage
@@ -30,7 +28,9 @@
TransactionalUndoVersionStorage
from ZODB.tests.PackableStorage import PackableStorage
from ZODB.tests.HistoryStorage import HistoryStorage
-from ZODB.tests.IteratorStorage import IteratorStorage
+from ZODB.tests.IteratorStorage import IteratorStorage, ExtendedIteratorStorage
+# XXX The refactored RecoveryStorage test is only available on the trunk.
+#from ZODB.tests.RecoveryStorage import RecoveryStorage
from ZODB.tests import ConflictResolution
@@ -47,40 +47,41 @@
class FullTest(BerkeleyTestBase.FullTestBase, BasicStorage,
RevisionStorage, VersionStorage,
TransactionalUndoStorage,
- TransactionalUndoVersionStorage, PackableStorage,
- HistoryStorage, IteratorStorage,
+ TransactionalUndoVersionStorage,
+ PackableStorage,
+ HistoryStorage,
+ IteratorStorage, ExtendedIteratorStorage,
ConflictResolution.ConflictResolvingStorage,
ConflictResolution.ConflictResolvingTransUndoStorage):
-
- # BAW: This test fails, it should be fixed.
- # DBNotFoundError: (-30990, 'DB_NOTFOUND: No matching key/data pair found')
- def checkVersionIterator(self):
- import sys
- print >> sys.stderr, \
- 'FullTest.checkVersionIterator() temporarily disabled.'
+ pass
- def checkTransactionalUndoAfterPackWithObjectUnlinkFromRoot(self):
- # the current berkeley storage fails this test, but we don't
- # intend to fix it for this version of the code.
- pass
-
+
+DST_DBHOME = 'test-dst'
-class AutopackTest(BerkeleyTestBase.AutopackTestBase, BasicStorage):
- def checkVersionedStoreAndLoad(self):
- # This storage doesn't support versions, so we should get an exception
- oid = self._storage.new_oid()
- self.assertRaises(POSException.Unsupported,
- self._dostore,
- oid, data=11, version='a version')
+##class FullRecoveryTest(BerkeleyTestBase.FullTestBase,
+## RecoveryStorage):
+## def setUp(self):
+## BerkeleyTestBase.FullTestBase.setUp(self)
+## self._zap_dbhome(DST_DBHOME)
+## self._dst = self._mk_dbhome(DST_DBHOME)
+
+## def tearDown(self):
+## BerkeleyTestBase.FullTestBase.tearDown(self)
+## self._zap_dbhome(DST_DBHOME)
+
+## def new_dest(self):
+## self._zap_dbhome(DST_DBHOME)
+## return self._mk_dbhome(DST_DBHOME)
def test_suite():
suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(MinimalTest, 'check'))
- suite.addTest(unittest.makeSuite(FullTest, 'check'))
- suite.addTest(unittest.makeSuite(AutopackTest, 'check'))
+ if BDBStorage.is_available:
+ suite.addTest(unittest.makeSuite(FullTest, 'check'))
+## suite.addTest(unittest.makeSuite(FullRecoveryTest, 'check'))
+ suite.addTest(unittest.makeSuite(MinimalTest, 'check'))
return suite
=== ZODB3/BDBStorage/tests/test_virgin.py 1.10 => 1.10.6.1 ===
--- ZODB3/BDBStorage/tests/test_virgin.py:1.10 Mon Feb 11 18:40:43 2002
+++ ZODB3/BDBStorage/tests/test_virgin.py Tue Jan 7 14:40:44 2003
@@ -16,7 +16,8 @@
import unittest
-from ZODBTestBase import ZODBTestBase
+import BDBStorage
+from BDBStorage.tests.ZODBTestBase import ZODBTestBase
from Persistence import PersistentMapping
@@ -34,20 +35,21 @@
class FullNewInsertsTest(ZODBTestBase, InsertMixin):
- from bsddb3Storage import Full
- ConcreteStorage = Full.Full
+ from BDBStorage import BDBFullStorage
+ ConcreteStorage = BDBFullStorage.BDBFullStorage
class MinimalNewInsertsTest(ZODBTestBase, InsertMixin):
- from bsddb3Storage import Minimal
- ConcreteStorage = Minimal.Minimal
+ from BDBStorage import BDBMinimalStorage
+ ConcreteStorage = BDBMinimalStorage.BDBMinimalStorage
def test_suite():
suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(MinimalNewInsertsTest, 'check'))
- suite.addTest(unittest.makeSuite(FullNewInsertsTest, 'check'))
+ if BDBStorage.is_available:
+ suite.addTest(unittest.makeSuite(MinimalNewInsertsTest, 'check'))
+ suite.addTest(unittest.makeSuite(FullNewInsertsTest, 'check'))
return suite
=== ZODB3/BDBStorage/tests/test_zodb_simple.py 1.8 => 1.8.4.1 ===
--- ZODB3/BDBStorage/tests/test_zodb_simple.py:1.8 Fri Aug 23 13:16:12 2002
+++ ZODB3/BDBStorage/tests/test_zodb_simple.py Tue Jan 7 14:40:44 2003
@@ -12,17 +12,15 @@
#
##############################################################################
-# Test some simple ZODB level stuff common to both the Minimal and Full
-# storages, like transaction aborts and commits, changing objects, etc.
-# Doesn't test undo, versions, or packing.
+# Test some simple ZODB level stuff common to both the BDBMinimalStorage and
+# BDBFullStorage storages, like transaction aborts and commits, changing
+# objects, etc. Doesn't test undo, versions, or packing.
import time
import unittest
-# Import this here and now so that import failures properly cause the test
-# suite to ignore these tests.
-import bsddb3
-from ZODBTestBase import ZODBTestBase
+import BDBStorage
+from BDBStorage.tests.ZODBTestBase import ZODBTestBase
from Persistence import PersistentMapping
@@ -69,20 +67,21 @@
class MinimalCommitAndRead(ZODBTestBase, CommitAndRead):
- from bsddb3Storage import Minimal
- ConcreteStorage = Minimal.Minimal
+ from BDBStorage import BDBMinimalStorage
+ ConcreteStorage = BDBMinimalStorage.BDBMinimalStorage
class FullCommitAndRead(ZODBTestBase, CommitAndRead):
- from bsddb3Storage import Full
- ConcreteStorage = Full.Full
+ from BDBStorage import BDBFullStorage
+ ConcreteStorage = BDBFullStorage.BDBFullStorage
def test_suite():
suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(MinimalCommitAndRead, 'check'))
- suite.addTest(unittest.makeSuite(FullCommitAndRead, 'check'))
+ if BDBStorage.is_available:
+ suite.addTest(unittest.makeSuite(MinimalCommitAndRead, 'check'))
+ suite.addTest(unittest.makeSuite(FullCommitAndRead, 'check'))
return suite
=== ZODB3/BDBStorage/tests/timeiter.py 1.3 => 1.3.6.1 ===
--- ZODB3/BDBStorage/tests/timeiter.py:1.3 Mon Feb 11 18:40:43 2002
+++ ZODB3/BDBStorage/tests/timeiter.py Tue Jan 7 14:40:44 2003
@@ -65,7 +65,7 @@
from ZODB import utils
from ZODB.TimeStamp import TimeStamp
from ZODB.FileStorage import FileStorage
-from bsddb3Storage.Full import Full
+from BDBStorage.BDBFullStorage import BDBFullStorage
PROGRAM = sys.argv[0]
ZERO = '\0'*8
@@ -157,7 +157,7 @@
#
print >>sys.stderr, 'Opening destination BDB...'
t0 = time.time()
- dstdb = Full(options.dest)
+ dstdb = BDBFullStorage(options.dest)
t1 = time.time()
print >>sys.stderr, 'Opening destination BDB done. %s seconds' % (t1-t0)
=== ZODB3/BDBStorage/tests/timepickles.py 1.2 => 1.2.4.1 ===
--- ZODB3/BDBStorage/tests/timepickles.py:1.2 Fri Aug 23 13:16:46 2002
+++ ZODB3/BDBStorage/tests/timepickles.py Tue Jan 7 14:40:44 2003
@@ -65,7 +65,7 @@
from ZODB import utils
from ZODB.TimeStamp import TimeStamp
from ZODB.FileStorage import FileStorage
-from bsddb3Storage.Full import Full
+from BDBStorage.BDBFullStorage import BDBFullStorage
PROGRAM = sys.argv[0]
ZERO = '\0'*8
@@ -157,7 +157,7 @@
#
print >>sys.stderr, 'Opening destination BDB...'
t0 = time.time()
-## dstdb = Full(options.dest)
+## dstdb = BDBFullStorage(options.dest)
dstdb = None
t1 = time.time()
print >>sys.stderr, 'Opening destination BDB done. %s seconds' % (t1-t0)