|
5 | 5 | it "encodes and decodes compressed messages" do |
6 | 6 | compressor = Kafka::Compressor.new(codec_name: :snappy, threshold: 1, instrumenter: instrumenter) |
7 | 7 |
|
8 | | - message1 = Kafka::Protocol::Message.new(value: "hello1", offset: -1) |
9 | | - message2 = Kafka::Protocol::Message.new(value: "hello2", offset: 0) |
| 8 | + message1 = Kafka::Protocol::Message.new(value: "hello1") |
| 9 | + message2 = Kafka::Protocol::Message.new(value: "hello2") |
10 | 10 |
|
11 | 11 | message_set = Kafka::Protocol::MessageSet.new(messages: [message1, message2]) |
12 | 12 | compressed_message_set = compressor.compress(message_set) |
|
22 | 22 | # When decoding a compressed message, the offsets are calculated relative to that |
23 | 23 | # of the container message. The broker will set the offset in normal operation, |
24 | 24 | # but at the client-side we set it to -1. |
25 | | - expect(messages.map(&:offset)).to eq [-1, 0] |
| 25 | + expect(messages.map(&:offset)).to eq [-2, -1] |
26 | 26 | end |
27 | 27 |
|
28 | | - it "encodes and decodes compressed messages" do |
| 28 | + it "sets offsets correctly for compressed messages with relative offsets" do |
| 29 | + compressor = Kafka::Compressor.new(codec_name: :snappy, threshold: 1, instrumenter: instrumenter) |
| 30 | + |
| 31 | + message1 = Kafka::Protocol::Message.new(value: "hello1", offset: 0) |
| 32 | + message2 = Kafka::Protocol::Message.new(value: "hello2", offset: 1) |
| 33 | + message3 = Kafka::Protocol::Message.new(value: "hello3", offset: 772043) |
| 34 | + |
| 35 | + message_set = Kafka::Protocol::MessageSet.new(messages: [message1, message2, message3]) |
| 36 | + compressed_message_set = compressor.compress(message_set) |
| 37 | + data = Kafka::Protocol::Encoder.encode_with(compressed_message_set) |
| 38 | + |
| 39 | + decoder = Kafka::Protocol::Decoder.from_string(data) |
| 40 | + decoded_message_set = Kafka::Protocol::MessageSet.decode(decoder) |
| 41 | + messages = decoded_message_set.messages |
| 42 | + |
| 43 | + expect(messages.map(&:offset)).to eq [772041, 772042, 772043] |
| 44 | + end |
| 45 | + |
| 46 | + it "keeps the offsets for compressed messages with provided offsets" do |
29 | 47 | compressor = Kafka::Compressor.new(codec_name: :snappy, threshold: 1, instrumenter: instrumenter) |
30 | 48 |
|
31 | 49 | message1 = Kafka::Protocol::Message.new( |
|
45 | 63 | compressed_message_set = compressor.compress(message_set) |
46 | 64 |
|
47 | 65 | data = Kafka::Protocol::Encoder.encode_with(compressed_message_set) |
| 66 | + |
48 | 67 | decoder = Kafka::Protocol::Decoder.from_string(data) |
49 | | - decoded_message = Kafka::Protocol::Message.decode(decoder) |
50 | | - decoded_message_set = decoded_message.decompress |
| 68 | + decoded_message_set = Kafka::Protocol::MessageSet.decode(decoder) |
51 | 69 | messages = decoded_message_set.messages |
52 | 70 |
|
53 | 71 | expect(messages.map(&:offset)).to eq [772033, 772034, 772035, 772036, 772037, 772038, 772039, 772040, 772041, 772042, 772043] |
|
0 commit comments