| OLD | NEW |
| (Empty) |
| 1 # -*- test-case-name: buildbot.test.test_persistent_queue -*- | |
| 2 | |
| 3 import os | |
| 4 import shutil | |
| 5 from twisted.trial import unittest | |
| 6 | |
| 7 from buildbot.status.persistent_queue import DequeMemoryQueue, DiskQueue, \ | |
| 8 IQueue, ListMemoryQueue, MemoryQueue, PersistentQueue, WriteFile | |
| 9 | |
| 10 class test_Queues(unittest.TestCase): | |
| 11 def setUp(self): | |
| 12 if os.path.isdir('fake_dir'): | |
| 13 shutil.rmtree('fake_dir') | |
| 14 | |
| 15 def tearDown(self): | |
| 16 if os.path.isdir('fake_dir'): | |
| 17 self.assertEqual([], os.listdir('fake_dir')) | |
| 18 | |
| 19 def testQueued(self): | |
| 20 # Verify behavior when starting up with queued items on disk. | |
| 21 os.mkdir('fake_dir') | |
| 22 WriteFile(os.path.join('fake_dir', '3'), 'foo3') | |
| 23 WriteFile(os.path.join('fake_dir', '5'), 'foo5') | |
| 24 WriteFile(os.path.join('fake_dir', '8'), 'foo8') | |
| 25 queue = PersistentQueue(MemoryQueue(3), | |
| 26 DiskQueue('fake_dir', 5, pickleFn=str, unpickleFn=str)) | |
| 27 self.assertEqual(['foo3', 'foo5', 'foo8'], queue.items()) | |
| 28 self.assertEqual(3, queue.nbItems()) | |
| 29 self.assertEqual(['foo3', 'foo5', 'foo8'], queue.popChunk()) | |
| 30 | |
| 31 def _test_helper(self, q): | |
| 32 self.assertTrue(IQueue.providedBy(q)) | |
| 33 self.assertEqual(8, q.maxItems()) | |
| 34 self.assertEqual(0, q.nbItems()) | |
| 35 self.assertEqual([], q.items()) | |
| 36 | |
| 37 for i in range(4): | |
| 38 self.assertEqual(None, q.pushItem(i), str(i)) | |
| 39 self.assertEqual(i + 1, q.nbItems(), str(i)) | |
| 40 self.assertEqual([0, 1, 2, 3], q.items()) | |
| 41 self.assertEqual(4, q.nbItems()) | |
| 42 if isinstance(q, PersistentQueue): | |
| 43 self.assertEqual([0, 1, 2], q.primaryQueue.items()) | |
| 44 self.assertEqual([3], q.secondaryQueue.items()) | |
| 45 | |
| 46 self.assertEqual(None, q.save()) | |
| 47 self.assertEqual([0, 1, 2, 3], q.items()) | |
| 48 self.assertEqual(4, q.nbItems()) | |
| 49 if isinstance(q, PersistentQueue): | |
| 50 self.assertEqual([], q.primaryQueue.items()) | |
| 51 self.assertEqual([0, 1, 2, 3], q.secondaryQueue.items()) | |
| 52 | |
| 53 for i in range(4): | |
| 54 self.assertEqual(None, q.pushItem(i + 4), str(i + 4)) | |
| 55 self.assertEqual(i + 5, q.nbItems(), str(i + 4)) | |
| 56 self.assertEqual([0, 1, 2, 3, 4, 5, 6, 7], q.items()) | |
| 57 self.assertEqual(8, q.nbItems()) | |
| 58 if isinstance(q, PersistentQueue): | |
| 59 self.assertEqual([0, 1, 2], q.primaryQueue.items()) | |
| 60 self.assertEqual([3, 4, 5, 6, 7], q.secondaryQueue.items()) | |
| 61 | |
| 62 self.assertEqual(0, q.pushItem(8)) | |
| 63 self.assertEqual(8, q.nbItems()) | |
| 64 self.assertEqual([1, 2, 3, 4, 5, 6, 7, 8], q.items()) | |
| 65 if isinstance(q, PersistentQueue): | |
| 66 self.assertEqual([1, 2, 3], q.primaryQueue.items()) | |
| 67 self.assertEqual([4, 5, 6, 7, 8], q.secondaryQueue.items()) | |
| 68 | |
| 69 self.assertEqual([1, 2], q.popChunk(2)) | |
| 70 self.assertEqual([3, 4, 5, 6, 7, 8], q.items()) | |
| 71 self.assertEqual(6, q.nbItems()) | |
| 72 if isinstance(q, PersistentQueue): | |
| 73 self.assertEqual([3], q.primaryQueue.items()) | |
| 74 self.assertEqual([4, 5, 6, 7, 8], q.secondaryQueue.items()) | |
| 75 | |
| 76 self.assertEqual([3], q.popChunk(1)) | |
| 77 self.assertEqual([4, 5, 6, 7, 8], q.items()) | |
| 78 self.assertEqual(5, q.nbItems()) | |
| 79 if isinstance(q, PersistentQueue): | |
| 80 self.assertEqual([], q.primaryQueue.items()) | |
| 81 self.assertEqual([4, 5, 6, 7, 8], q.secondaryQueue.items()) | |
| 82 | |
| 83 self.assertEqual(None, q.save()) | |
| 84 self.assertEqual(5, q.nbItems()) | |
| 85 self.assertEqual([4, 5, 6, 7, 8], q.items()) | |
| 86 if isinstance(q, PersistentQueue): | |
| 87 self.assertEqual([], q.primaryQueue.items()) | |
| 88 self.assertEqual([4, 5, 6, 7, 8], q.secondaryQueue.items()) | |
| 89 | |
| 90 self.assertEqual(None, q.insertBackChunk([2, 3])) | |
| 91 self.assertEqual([2, 3, 4, 5, 6, 7, 8], q.items()) | |
| 92 self.assertEqual(7, q.nbItems()) | |
| 93 if isinstance(q, PersistentQueue): | |
| 94 self.assertEqual([2, 3], q.primaryQueue.items()) | |
| 95 self.assertEqual([4, 5, 6, 7, 8], q.secondaryQueue.items()) | |
| 96 | |
| 97 self.assertEqual([0], q.insertBackChunk([0, 1])) | |
| 98 self.assertEqual([1, 2, 3, 4, 5, 6, 7, 8], q.items()) | |
| 99 self.assertEqual(8, q.nbItems()) | |
| 100 if isinstance(q, PersistentQueue): | |
| 101 self.assertEqual([1, 2, 3], q.primaryQueue.items()) | |
| 102 self.assertEqual([4, 5, 6, 7, 8], q.secondaryQueue.items()) | |
| 103 | |
| 104 self.assertEqual([10, 11], q.insertBackChunk([10, 11])) | |
| 105 self.assertEqual([1, 2, 3, 4, 5, 6, 7, 8], q.items()) | |
| 106 self.assertEqual(8, q.nbItems()) | |
| 107 if isinstance(q, PersistentQueue): | |
| 108 self.assertEqual([1, 2, 3], q.primaryQueue.items()) | |
| 109 self.assertEqual([4, 5, 6, 7, 8], q.secondaryQueue.items()) | |
| 110 | |
| 111 self.assertEqual([1, 2, 3, 4, 5, 6, 7, 8], q.popChunk(8)) | |
| 112 self.assertEqual([], q.items()) | |
| 113 self.assertEqual(0, q.nbItems()) | |
| 114 if isinstance(q, PersistentQueue): | |
| 115 self.assertEqual([], q.primaryQueue.items()) | |
| 116 self.assertEqual([], q.secondaryQueue.items()) | |
| 117 | |
| 118 self.assertEqual([], q.popChunk()) | |
| 119 self.assertEqual(0, q.nbItems()) | |
| 120 if isinstance(q, PersistentQueue): | |
| 121 self.assertEqual([], q.primaryQueue.items()) | |
| 122 self.assertEqual([], q.secondaryQueue.items()) | |
| 123 | |
| 124 def testListMemoryQueue(self): | |
| 125 self._test_helper(ListMemoryQueue(maxItems=8)) | |
| 126 | |
| 127 def testDequeMemoryQueue(self): | |
| 128 # Will fail on python 2.3. | |
| 129 self._test_helper(DequeMemoryQueue(maxItems=8)) | |
| 130 | |
| 131 def testDiskQueue(self): | |
| 132 self._test_helper(DiskQueue('fake_dir', maxItems=8)) | |
| 133 | |
| 134 def testPersistentQueue(self): | |
| 135 self._test_helper(PersistentQueue(MemoryQueue(3), | |
| 136 DiskQueue('fake_dir', 5))) | |
| 137 | |
| 138 # vim: set ts=4 sts=4 sw=4 et: | |
| OLD | NEW |