コード例 #1
0
 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)
コード例 #2
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)
コード例 #3
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)
コード例 #4
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)
コード例 #5
0
 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()