summaryrefslogtreecommitdiffstats
path: root/Lib/bsddb/test/test_queue.py
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2002-11-19 17:47:07 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2002-11-19 17:47:07 (GMT)
commit1c6b1a2b4ea38955a3f0514f4709bafd0be96c5e (patch)
tree1d75385f12cdeda7369e5a2428d33649e6b70380 /Lib/bsddb/test/test_queue.py
parenta406b58619e3fd8fb26ced18ac64b475a48648d2 (diff)
downloadcpython-1c6b1a2b4ea38955a3f0514f4709bafd0be96c5e.zip
cpython-1c6b1a2b4ea38955a3f0514f4709bafd0be96c5e.tar.gz
cpython-1c6b1a2b4ea38955a3f0514f4709bafd0be96c5e.tar.bz2
Importing test suite from bsddb3 3.4.0 (with modifications).
Diffstat (limited to 'Lib/bsddb/test/test_queue.py')
-rw-r--r--Lib/bsddb/test/test_queue.py168
1 files changed, 168 insertions, 0 deletions
diff --git a/Lib/bsddb/test/test_queue.py b/Lib/bsddb/test/test_queue.py
new file mode 100644
index 0000000..6a92834
--- /dev/null
+++ b/Lib/bsddb/test/test_queue.py
@@ -0,0 +1,168 @@
+"""
+TestCases for exercising a Queue DB.
+"""
+
+import sys, os, string
+import tempfile
+from pprint import pprint
+import unittest
+
+from bsddb import db
+
+from test.test_support import verbose
+
+
+#----------------------------------------------------------------------
+
+class SimpleQueueTestCase(unittest.TestCase):
+ def setUp(self):
+ self.filename = tempfile.mktemp()
+
+ def tearDown(self):
+ try:
+ os.remove(self.filename)
+ except os.error:
+ pass
+
+
+ def test01_basic(self):
+ # Basic Queue tests using the deprecated DBCursor.consume method.
+
+ if verbose:
+ print '\n', '-=' * 30
+ print "Running %s.test01_basic..." % self.__class__.__name__
+
+ d = db.DB()
+ d.set_re_len(40) # Queues must be fixed length
+ d.open(self.filename, db.DB_QUEUE, db.DB_CREATE)
+
+ if verbose:
+ print "before appends" + '-' * 30
+ pprint(d.stat())
+
+ for x in string.letters:
+ d.append(x * 40)
+
+ assert len(d) == 52
+
+ d.put(100, "some more data")
+ d.put(101, "and some more ")
+ d.put(75, "out of order")
+ d.put(1, "replacement data")
+
+ assert len(d) == 55
+
+ if verbose:
+ print "before close" + '-' * 30
+ pprint(d.stat())
+
+ d.close()
+ del d
+ d = db.DB()
+ d.open(self.filename)
+
+ if verbose:
+ print "after open" + '-' * 30
+ pprint(d.stat())
+
+ d.append("one more")
+ c = d.cursor()
+
+ if verbose:
+ print "after append" + '-' * 30
+ pprint(d.stat())
+
+ rec = c.consume()
+ while rec:
+ if verbose:
+ print rec
+ rec = c.consume()
+ c.close()
+
+ if verbose:
+ print "after consume loop" + '-' * 30
+ pprint(d.stat())
+
+ assert len(d) == 0, \
+ "if you see this message then you need to rebuild BerkeleyDB 3.1.17 "\
+ "with the patch in patches/qam_stat.diff"
+
+ d.close()
+
+
+
+ def test02_basicPost32(self):
+ # Basic Queue tests using the new DB.consume method in DB 3.2+
+ # (No cursor needed)
+
+ if verbose:
+ print '\n', '-=' * 30
+ print "Running %s.test02_basicPost32..." % self.__class__.__name__
+
+ if db.version() < (3, 2, 0):
+ if verbose:
+ print "Test not run, DB not new enough..."
+ return
+
+ d = db.DB()
+ d.set_re_len(40) # Queues must be fixed length
+ d.open(self.filename, db.DB_QUEUE, db.DB_CREATE)
+
+ if verbose:
+ print "before appends" + '-' * 30
+ pprint(d.stat())
+
+ for x in string.letters:
+ d.append(x * 40)
+
+ assert len(d) == 52
+
+ d.put(100, "some more data")
+ d.put(101, "and some more ")
+ d.put(75, "out of order")
+ d.put(1, "replacement data")
+
+ assert len(d) == 55
+
+ if verbose:
+ print "before close" + '-' * 30
+ pprint(d.stat())
+
+ d.close()
+ del d
+ d = db.DB()
+ d.open(self.filename)
+ #d.set_get_returns_none(true)
+
+ if verbose:
+ print "after open" + '-' * 30
+ pprint(d.stat())
+
+ d.append("one more")
+
+ if verbose:
+ print "after append" + '-' * 30
+ pprint(d.stat())
+
+ rec = d.consume()
+ while rec:
+ if verbose:
+ print rec
+ rec = d.consume()
+
+ if verbose:
+ print "after consume loop" + '-' * 30
+ pprint(d.stat())
+
+ d.close()
+
+
+
+#----------------------------------------------------------------------
+
+def suite():
+ return unittest.makeSuite(SimpleQueueTestCase)
+
+
+if __name__ == '__main__':
+ unittest.main( defaultTest='suite' )