Example #1
0
 def setUp(self):
     self.producer = Mock()
     self.producer_provider = Mock(return_value=self.producer)
     self.consumer = Mock()
     self.consumer_provider = Mock(return_value=self.consumer)
     self.topic = Topic(
         'fruit',
         self.producer_provider,
         self.consumer_provider,
         FakeValueCodec())
Example #2
0
class TestTopicIntegration(TestCase):

    def setUp(self):
        self.producer = Mock()
        self.producer_provider = Mock(return_value=self.producer)
        self.consumer = Mock()
        self.consumer_provider = Mock(return_value=self.consumer)
        self.registry = Mock()
        self.registry_provider = Mock(return_value=self.registry)
        self.topic = Topic(
            'fruit',
            self.producer_provider,
            self.consumer_provider,
            MultiCodec(
                RegisteredSchemaAvroCodec(
                    "Fruit-value",
                    {
                        "type": "string",
                        "name": "Fruit_value",
                    },
                    self.registry_provider),
                ZlibCodec()))

    def test_send_messages(self):
        self.topic.send_messages('banana', 'apple')
        self.producer.send_messages.assert_called_once_with(
            'fruit',
            'x\x9c\xe3IJ\xcc\x03B\x00\x08\xa4\x02n',
            'x\x9c\xe3J,(\xc8I\x05\x00\x06t\x02\x1d')

    def test_consume_message(self):
        self.registry.get_subject_latest_version.return_value = {
            "type": "string",
            "name": "Fruit_value",
        }
        self.consumer.next.return_value = KafkaMessage(
            'fruit', 0, 1, None, 'x\x9c\xe3IJ\xcc\x03B\x00\x08\xa4\x02n')
        msg = self.topic.next()
        self.assertEquals(msg.value, 'banana')
Example #3
0
 def setUp(self):
     self.producer = Mock()
     self.producer_provider = Mock(return_value=self.producer)
     self.consumer = Mock()
     self.consumer_provider = Mock(return_value=self.consumer)
     self.registry = Mock()
     self.registry_provider = Mock(return_value=self.registry)
     self.topic = Topic(
         'fruit',
         self.producer_provider,
         self.consumer_provider,
         MultiCodec(
             RegisteredSchemaAvroCodec(
                 "Fruit-value",
                 {
                     "type": "string",
                     "name": "Fruit_value",
                 },
                 self.registry_provider),
             ZlibCodec()))
Example #4
0
class TestTopic(TestCase):

    def setUp(self):
        self.producer = Mock()
        self.producer_provider = Mock(return_value=self.producer)
        self.consumer = Mock()
        self.consumer_provider = Mock(return_value=self.consumer)
        self.topic = Topic(
            'fruit',
            self.producer_provider,
            self.consumer_provider,
            FakeValueCodec())

    def test_send_message(self):
        msg = 'banana'
        self.topic.send_messages(msg)
        self.producer.send_messages.assert_called_once_with('fruit', 'banana!')
        self.assertEqual(1, self.producer_provider.call_count)

    def test_send_messages(self):
        messages = ['apple', 'banana', 'lemon']
        self.topic.send_messages(*messages)
        self.producer.send_messages.assert_called_once_with(
            'fruit', 'apple!', 'banana!', 'lemon!')
        self.assertEqual(1, self.producer_provider.call_count)

    def test_multiple_send_messages(self):
        messages_a = ['apple', 'banana', 'lemon']
        messages_b = ['lime', 'peach', 'grapes']
        self.topic.send_messages(*messages_a)
        self.topic.send_messages(*messages_b)
        self.producer.send_messages.assert_has_calls([
            call('fruit', 'apple!', 'banana!', 'lemon!'),
            call('fruit', 'lime!', 'peach!', 'grapes!')])
        self.assertEqual(1, self.producer_provider.call_count)

    def test_consume_a_message(self):
        msg = KafkaMessage('fruit', 0, 1, None, 'banana!')
        self.consumer.next.return_value = msg
        decoded_msg = self.topic.next()
        self.assertEqual(decoded_msg.value, 'banana')
        self.consumer_provider.assert_called_once_with('fruit')

    def test_consume_messages_via_iterator(self):
        self.consumer.next.side_effect = [
            KafkaMessage('fruit', 0, n, None, item)
            for n, item in enumerate(['apple!', 'banana!', 'lemon!'])
        ]
        messages = []
        for message in self.topic:
            messages.append(message)
            if len(messages) >= 3:
                break
        self.assertEqual(
            ['apple', 'banana', 'lemon'],
            [msg.value for msg in messages])
        self.consumer_provider.assert_called_once_with('fruit')

    def test_task_done(self):
        msg = Mock()
        self.topic.task_done(msg)
        self.consumer.task_done.assert_called_once_with(msg)

    def test_commit(self):
        self.topic.commit()
        self.consumer.commit.assert_called_once_with()