def test_ack_unack_ack_failed(self): q = SQLiteAckQueue(path=self.path) q.put("val1") q.put("val2") q.put("val3") val1 = q.get() val2 = q.get() val3 = q.get() # qsize should be zero when all item is getted from q self.assertEqual(q.qsize(), 0) self.assertEqual(q.unack_count(), 3) # nack will let the item requeued as ready status q.nack(val1) self.assertEqual(q.qsize(), 1) self.assertEqual(q.ready_count(), 1) # ack failed is just mark item as ack failed q.ack_failed(val3) self.assertEqual(q.ack_failed_count(), 1) # ack should not effect qsize q.ack(val2) self.assertEqual(q.acked_count(), 1) self.assertEqual(q.qsize(), 1) # all ack* related action will reduce unack count self.assertEqual(q.unack_count(), 0) # reget the nacked item ready_val = q.get() self.assertEqual(ready_val, val1) q.ack(ready_val) self.assertEqual(q.qsize(), 0) self.assertEqual(q.acked_count(), 2) self.assertEqual(q.ready_count(), 0)
def test_resume_unack(self): q = SQLiteAckQueue(path=self.path) q.put("val1") val1 = q.get() self.assertEqual(q.qsize(), 0) self.assertEqual(q.unack_count(), 1) self.assertEqual(q.ready_count(), 0) del q q = SQLiteAckQueue(path=self.path, auto_resume=False) self.assertEqual(q.qsize(), 0) self.assertEqual(q.unack_count(), 1) self.assertEqual(q.ready_count(), 0) q.resume_unack_tasks() self.assertEqual(q.qsize(), 0) self.assertEqual(q.unack_count(), 0) self.assertEqual(q.ready_count(), 1) self.assertEqual(val1, q.get()) del q q = SQLiteAckQueue(path=self.path, auto_resume=True) self.assertEqual(q.qsize(), 0) self.assertEqual(q.unack_count(), 0) self.assertEqual(q.ready_count(), 1) self.assertEqual(val1, q.get())