Esempio n. 1
0
    def test_decode_offset_fetch_response(self):
        encoded = "".join([
            struct.pack(">i", 42),  # Correlation ID
            struct.pack(">i", 1),  # One topics
            struct.pack(">h6s", 6, "topic1"),  # First topic
            struct.pack(">i", 2),  # Two partitions
            struct.pack(">i", 2),  # Partition 2
            struct.pack(">q", 4),  # Offset 4
            struct.pack(">h4s", 4, "meta"),  # Metadata
            struct.pack(">h", 0),  # No error
            struct.pack(">i", 4),  # Partition 4
            struct.pack(">q", 8),  # Offset 8
            struct.pack(">h4s", 4, "meta"),  # Metadata
            struct.pack(">h", 0),  # No error
        ])

        results = KafkaProtocol.decode_offset_fetch_response(encoded)
        self.assertEqual(
            set(results),
            set([
                OffsetFetchResponse(topic='topic1',
                                    partition=2,
                                    offset=4,
                                    error=0,
                                    metadata="meta"),
                OffsetFetchResponse(topic='topic1',
                                    partition=4,
                                    offset=8,
                                    error=0,
                                    metadata="meta"),
            ]))
    def test_decode_offset_fetch_response(self):
        encoded = b"".join([
            struct.pack(">i", 42),            # Correlation ID
            struct.pack(">i", 1),             # One topics
            struct.pack(">h6s", 6, b"topic1"),# First topic
            struct.pack(">i", 2),             # Two partitions

            struct.pack(">i", 2),             # Partition 2
            struct.pack(">q", 4),             # Offset 4
            struct.pack(">h4s", 4, b"meta"),  # Metadata
            struct.pack(">h", 0),             # No error

            struct.pack(">i", 4),             # Partition 4
            struct.pack(">q", 8),             # Offset 8
            struct.pack(">h4s", 4, b"meta"),  # Metadata
            struct.pack(">h", 0),             # No error
        ])

        results = KafkaProtocol.decode_offset_fetch_response(encoded)
        self.assertEqual(set(results), set([
            OffsetFetchResponse(topic = b'topic1', partition = 2, offset = 4, error = 0, metadata = b"meta"),
            OffsetFetchResponse(topic = b'topic1', partition = 4, offset = 8, error = 0, metadata = b"meta"),
        ]))