/Lib/bsddb/test/test_queue.py

http://unladen-swallow.googlecode.com/ · Python · 168 lines · 108 code · 49 blank · 11 comment · 23 complexity · e1ad3145f833035ed18d22d49f616139 MD5 · raw file

  1. """
  2. TestCases for exercising a Queue DB.
  3. """
  4. import os, string
  5. from pprint import pprint
  6. import unittest
  7. from test_all import db, verbose, get_new_database_path
  8. #----------------------------------------------------------------------
  9. class SimpleQueueTestCase(unittest.TestCase):
  10. def setUp(self):
  11. self.filename = get_new_database_path()
  12. def tearDown(self):
  13. try:
  14. os.remove(self.filename)
  15. except os.error:
  16. pass
  17. def test01_basic(self):
  18. # Basic Queue tests using the deprecated DBCursor.consume method.
  19. if verbose:
  20. print '\n', '-=' * 30
  21. print "Running %s.test01_basic..." % self.__class__.__name__
  22. d = db.DB()
  23. d.set_re_len(40) # Queues must be fixed length
  24. d.open(self.filename, db.DB_QUEUE, db.DB_CREATE)
  25. if verbose:
  26. print "before appends" + '-' * 30
  27. pprint(d.stat())
  28. for x in string.letters:
  29. d.append(x * 40)
  30. self.assertEqual(len(d), len(string.letters))
  31. d.put(100, "some more data")
  32. d.put(101, "and some more ")
  33. d.put(75, "out of order")
  34. d.put(1, "replacement data")
  35. self.assertEqual(len(d), len(string.letters)+3)
  36. if verbose:
  37. print "before close" + '-' * 30
  38. pprint(d.stat())
  39. d.close()
  40. del d
  41. d = db.DB()
  42. d.open(self.filename)
  43. if verbose:
  44. print "after open" + '-' * 30
  45. pprint(d.stat())
  46. # Test "txn" as a positional parameter
  47. d.append("one more", None)
  48. # Test "txn" as a keyword parameter
  49. d.append("another one", txn=None)
  50. c = d.cursor()
  51. if verbose:
  52. print "after append" + '-' * 30
  53. pprint(d.stat())
  54. rec = c.consume()
  55. while rec:
  56. if verbose:
  57. print rec
  58. rec = c.consume()
  59. c.close()
  60. if verbose:
  61. print "after consume loop" + '-' * 30
  62. pprint(d.stat())
  63. self.assertEqual(len(d), 0, \
  64. "if you see this message then you need to rebuild " \
  65. "Berkeley DB 3.1.17 with the patch in patches/qam_stat.diff")
  66. d.close()
  67. def test02_basicPost32(self):
  68. # Basic Queue tests using the new DB.consume method in DB 3.2+
  69. # (No cursor needed)
  70. if verbose:
  71. print '\n', '-=' * 30
  72. print "Running %s.test02_basicPost32..." % self.__class__.__name__
  73. if db.version() < (3, 2, 0):
  74. if verbose:
  75. print "Test not run, DB not new enough..."
  76. return
  77. d = db.DB()
  78. d.set_re_len(40) # Queues must be fixed length
  79. d.open(self.filename, db.DB_QUEUE, db.DB_CREATE)
  80. if verbose:
  81. print "before appends" + '-' * 30
  82. pprint(d.stat())
  83. for x in string.letters:
  84. d.append(x * 40)
  85. self.assertEqual(len(d), len(string.letters))
  86. d.put(100, "some more data")
  87. d.put(101, "and some more ")
  88. d.put(75, "out of order")
  89. d.put(1, "replacement data")
  90. self.assertEqual(len(d), len(string.letters)+3)
  91. if verbose:
  92. print "before close" + '-' * 30
  93. pprint(d.stat())
  94. d.close()
  95. del d
  96. d = db.DB()
  97. d.open(self.filename)
  98. #d.set_get_returns_none(true)
  99. if verbose:
  100. print "after open" + '-' * 30
  101. pprint(d.stat())
  102. d.append("one more")
  103. if verbose:
  104. print "after append" + '-' * 30
  105. pprint(d.stat())
  106. rec = d.consume()
  107. while rec:
  108. if verbose:
  109. print rec
  110. rec = d.consume()
  111. if verbose:
  112. print "after consume loop" + '-' * 30
  113. pprint(d.stat())
  114. d.close()
  115. #----------------------------------------------------------------------
  116. def test_suite():
  117. return unittest.makeSuite(SimpleQueueTestCase)
  118. if __name__ == '__main__':
  119. unittest.main(defaultTest='test_suite')