def queue_persistence(self, queue, tdir, qdir): self.assertEqual(queue.qsize(), 0) for request in self.fake_requests: queue.put(request) self.assertEqual(queue.qsize(), len(self.fake_requests)) del queue queue = Queue(qdir, tempdir=tdir) self.assertEqual(queue.qsize(), len(self.fake_requests)) for _ in range(len(self.fake_requests)): queue.get() self.assertEqual(queue.qsize(), 0)
def test_ClearOldFile(self): """put until reaching chunksize, then get without calling task_done""" q = Queue(self.path, chunksize=10) for i in range(15): q.put('var1') for i in range(11): q.get() q = Queue(self.path, chunksize=10) self.assertEqual(q.qsize(), 15) for i in range(11): q.get() q.task_done() self.assertEqual(q.qsize(), 4)
def test_OpenCloseOneHundred(self): """Write 1000 items, close, reopen checking if all items are there""" q = Queue(self.path) for i in range(1000): q.put('var%d' % i) del q q = Queue(self.path) self.assertEqual(1000, q.qsize()) for i in range(1000): data = q.get() self.assertEqual('var%d' % i, data) q.task_done() with self.assertRaises(Empty): q.get_nowait() # assert adding another one still works q.put('foobar') data = q.get()
def test_OpenCloseSingle(self): """Write 1 item, close, reopen checking if same item is there""" q = Queue(self.path) q.put('var1') del q q = Queue(self.path) self.assertEqual(1, q.qsize()) self.assertEqual('var1', q.get()) q.task_done()
def test_PartialWrite(self): """Test recovery from previous crash w/ partial write""" q = Queue(self.path) for i in range(100): q.put('var%d' % i) del q with open(os.path.join(self.path, 'q00000'), 'ab') as f: pickle.dump('文字化け', f) q = Queue(self.path) self.assertEqual(100, q.qsize()) for i in range(100): self.assertEqual('var%d' % i, q.get()) q.task_done() with self.assertRaises(Empty): q.get_nowait()
def test_GarbageOnHead(self): """Adds garbage to the queue head and let the internal integrity checks fix it""" q = Queue(self.path) q.put('var1') del q with open(os.path.join(self.path, 'q00001'), 'a') as fd: fd.write('garbage') q = Queue(self.path) q.put('var2') self.assertEqual(2, q.qsize()) self.assertEqual('var1', q.get()) q.task_done()