def test_ack_delete_from(self): """ Tests ack and delete on a consumer's queue. """ # Both ack and delete use the same implementation and it's only the user-exposed API that differs. ps = RedisPubSub(self.kvdb, self.key_prefix) msg_value = '"msg_value"' topic = Topic('/test/delete') ps.add_topic(topic) producer = Client('Producer', 'producer') ps.add_producer(producer, topic) consumer = Consumer('Consumer', 'consumer', sub_key=new_cid()) ps.add_consumer(consumer, topic) pub_ctx = PubCtx() pub_ctx.client_id = producer.id pub_ctx.topic = topic.name pub_ctx.msg = Message(msg_value) msg_id = ps.publish(pub_ctx).msg.msg_id ps.move_to_target_queues() # A message has been published and move to a consumer's queue so let's confirm the fact first. result = self.kvdb.lrange( ps.CONSUMER_MSG_IDS_PREFIX.format(consumer.sub_key), 0, -1) eq_(result, [msg_id]) # Ok, now delete the message and confirm it's not in the consumer's queue anymore. ps.delete_from_consumer_queue(consumer.sub_key, [msg_id]) result = self.kvdb.lrange( ps.CONSUMER_MSG_IDS_PREFIX.format(consumer.sub_key), 0, -1) eq_(result, [])
def test_ack_delete_from(self): """ Tests ack and delete on a consumer's queue. """ # Both ack and delete use the same implementation and it's only the user-exposed API that differs. ps = RedisPubSub(self.kvdb, self.key_prefix) msg_value = '"msg_value"' topic = Topic('/test/delete') ps.add_topic(topic) producer = Client('Producer', 'producer') ps.add_producer(producer, topic) consumer = Consumer('Consumer', 'consumer', sub_key=new_cid()) ps.add_consumer(consumer, topic) pub_ctx = PubCtx() pub_ctx.client_id = producer.id pub_ctx.topic = topic.name pub_ctx.msg = Message(msg_value) msg_id = ps.publish(pub_ctx).msg.msg_id ps.move_to_target_queues() # A message has been published and move to a consumer's queue so let's confirm the fact first. result = self.kvdb.lrange(ps.CONSUMER_MSG_IDS_PREFIX.format(consumer.sub_key), 0, -1) eq_(result, [msg_id]) # Ok, now delete the message and confirm it's not in the consumer's queue anymore. ps.delete_from_consumer_queue(consumer.sub_key, [msg_id]) result = self.kvdb.lrange(ps.CONSUMER_MSG_IDS_PREFIX.format(consumer.sub_key), 0, -1) eq_(result, [])