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_ack_active_size(self): q = SQLiteAckQueue(path=self.path) q.put("val1") item = q.get(raw=True) # active_size should be 1 as it hasn't been acked self.assertEqual(q.active_size(), 1) q.ack(item) # active_size should be 0 after ack self.assertEqual(q.active_size(), 0)
def test_ack_unknown_item(self): q = SQLiteAckQueue(path=self.path) q.put("val1") val1 = q.get() q.ack("val2") q.nack("val3") q.ack_failed("val4") self.assertEqual(q.qsize(), 0) self.assertEqual(q.unack_count(), 1) q.ack(val1) self.assertEqual(q.unack_count(), 0)
def test_ack_and_clear(self): q = SQLiteAckQueue(path=self.path) q._MAX_ACKED_LENGTH = 10 ret_list = [] for _ in range(100): q.put("val%s" % _) for _ in range(100): ret_list.append(q.get()) for ret in ret_list: q.ack(ret) self.assertEqual(q.acked_count(), 100) q.clear_acked_data() self.assertEqual(q.acked_count(), 10)
def test_ack_and_clear(self): q = SQLiteAckQueue(path=self.path) ret_list = [] for _ in range(100): q.put("val%s" % _) for _ in range(100): ret_list.append(q.get()) for ret in ret_list: q.ack(ret) self.assertEqual(q.acked_count(), 100) q.clear_acked_data(keep_latest=10) self.assertEqual(q.acked_count(), 10) q.shrink_disk_usage()