Beispiel #1
0
class TestMessageQueue(unittest.TestCase):

    def setUp(self):
        self.client = Redis(decode_responses=True)
        self.client.flushdb()

        self.mq = MessageQueue(self.client, "mq")

        self.msg = "hello world"

        self.blocktime = 1

    def test_add(self):
        self.mq.add_message(self.msg)
        self.assertEqual(
            self.mq.len(),
            1
        )

    def test_get_message_non_block(self):
        self.mq.add_message(self.msg)
        self.assertEqual(
            self.mq.get_message(),
            self.msg
        )

    def test_get_message_blocking(self):
        before = time()
        print("blocking, wait for {0} second(s)".format(self.blocktime))
        self.assertIsNone(
            self.mq.get_message(self.blocktime)
        )
        self.assertTrue(
            time() - before >= self.blocktime
        )

    def test_len(self):
        self.assertEqual(
            self.mq.len(),
            0
        )

        self.mq.add_message(self.msg)

        self.assertEqual(
            self.mq.len(),
            1
        )
class TestMessageQueue:
    def setup_class(self):
        self.client = Redis()

        self.mq = MessageQueue(self.client, "email_queue")

        self.mq.add_message("*****@*****.**")
        self.mq.add_message("*****@*****.**")
        self.mq.add_message("*****@*****.**")

    def test_len(self):
        assert self.mq.len() == 3

    def test_consume(self):
        assert self.mq.get_message() == "*****@*****.**"
        assert self.mq.get_message() == "*****@*****.**"
        assert self.mq.get_message() == "*****@*****.**"
Beispiel #3
0
class TestMessageQueue(unittest.TestCase):

    def setUp(self):
        self.client = Redis(decode_responses=True)

        self.stream_key = "test_message_queue"
        self.q = MessageQueue(self.client, self.stream_key) 

        self.message = {"name":"peter", "age":"36", "location":"UK"}
        
        self.tearDown()

    def tearDown(self):
        self.client.delete(self.stream_key)

    def make_a_none_empty_queue(self, queue, size):
        for i in range(size):
            key = "key{0}".format(i)
            value = "value{0}".format(i)
            self.q.add_message({key:value,})

    def test_add_message(self):
        message_id = self.q.add_message(self.message)
        self.assertIsNotNone(message_id)

    def test_add_message_return_utf8_id(self):
        message_id = self.q.add_message(self.message)
        self.assertIsInstance(message_id, str)

    def test_get_message_return_none_when_msg_not_exists(self):
        self.assertIsNone(self.q.get_message("10086-0"))

    def test_get_message_return_msg_when_its_exists(self):
        message_id = self.q.add_message(self.message)
        self.assertEqual(
            self.message, 
            self.q.get_message(message_id)
        )

    def test_remove_message(self):
        message_id = self.q.add_message(self.message)
        
        self.q.remove_message(message_id)

        self.assertIsNone(self.q.get_message(message_id))

    def test_len_return_zero_when_queue_empty(self):
        self.assertEqual(self.q.len(), 0)

    def test_len_retrun_non_zero_when_queue_not_empty(self):
        id = self.q.add_message(self.message)
        self.assertEqual(self.q.len(), 1)
        self.q.remove_message(id)
        self.assertEqual(self.q.len(), 0)

    def test_get_by_range_return_empty_list_when_queue_empty(self):
        self.assertEqual(self.q.get_by_range("-", "+"), list())

    def test_get_by_range_return_none_empty_list_when_queue_not_empty(self):
        self.make_a_none_empty_queue(self.q, 10)
        result = self.q.get_by_range("-", "+")
        self.assertEqual(len(result), 10)
        self.assertEqual(type(result), list)
        for msg in result:
            self.assertEqual(type(msg), dict)

    def test_get_by_range_return_right_size(self):
        self.make_a_none_empty_queue(self.q, 10)
        result = self.q.get_by_range("-", "+", 5)
        self.assertEqual(len(result), 5)

    def test_get_by_range_return_empty_list_when_stream_empty(self):
        self.assertEqual(
            self.q.get_by_range("-", "+"),
            list()
        )

    def test_iterate_return_right_size(self):
        self.make_a_none_empty_queue(self.q, 10)
        self.assertEqual(
            len(self.q.iterate(0, 5)),
            5
        )
        self.assertEqual(
            len(self.q.iterate(0, 10)),
            10
        )

    def test_iterate_return_right_message(self):
        self.make_a_none_empty_queue(self.q, 10)
        full_message_list = self.q.get_by_range("-", "+", 10)
        self.assertEqual(
            self.q.iterate(0, 5),
            full_message_list[0:5]
        )
        self.assertEqual(
            self.q.iterate(0, 10),
            full_message_list
        )

    def test_iterate_return_empty_list_when_stream_empty(self):
        self.assertEqual(
            self.q.iterate(0),
            list()
        )
Beispiel #4
0
class TestGroup(unittest.TestCase):

    def setUp(self):
        self.client = Redis(decode_responses=True)

        self.stream = "test_stream"
        self.group = "test_group"


        # objs
        self.q = MessageQueue(self.client, self.stream)
        self.g = Group(self.client, self.stream, self.group)

        # create a empty stream key
        self.msg_id = self.q.add_message({"k":"v"})
        self.q.remove_message(self.msg_id)

    def tearDown(self):
        self.client.delete(self.stream)

    def create_group(self):
        self.g.create(0)

    def add_msg_to_stream(self):
        self.q.add_message({"k":"v"})

    def test_create(self):
        self.create_group()

        self.assertNotEqual(
            self.g.info(),
            []
        )

    def test_read_message(self):
        self.create_group()

        self.assertEqual(
            self.g.read_message("worker1", ">"),
            []
        )

        self.add_msg_to_stream()

        self.assertNotEqual(
            self.g.read_message("worker1", ">"),
            []
        )

    def test_ack_message(self):
        self.create_group()
        self.add_msg_to_stream()

        msgs = self.g.read_message("worker1", ">")

        msg_id = list(msgs[0].keys())[0]
        self.g.ack_message(msg_id)

        pending_count = self.g.info()['pending']
        self.assertEqual(
            pending_count,
            0
        )

    def test_info(self):
        self.assertEqual(
            self.g.info(),
            dict()
        )

        self.create_group()

        self.assertIsNotNone(
            self.g.info()
        )

    def test_consumer_info(self):
        self.create_group()

        self.assertEqual(
            self.g.consumer_info(),
            []
        )

        self.add_msg_to_stream()
        msgs = self.g.read_message("worker1", ">")

        self.assertNotEqual(
            self.g.consumer_info(),
            []
        )

    def test_delete_consumer(self):
        self.create_group()
        self.add_msg_to_stream()

        msgs = self.g.read_message("worker1", ">")

        self.g.delete_consumer("worker1")

        self.assertEqual(
            self.g.consumer_info(),
            []
        )

    def test_destroy_group(self):
        self.create_group()

        self.g.destroy()

        self.assertEqual(
            self.g.info(),
            dict()
        )