|
2 | 2 | describe ".compress" do |
3 | 3 | let(:instrumenter) { Kafka::Instrumenter.new(client_id: "test") } |
4 | 4 |
|
5 | | - it "sets offsets correctly for compressed messages with relative offsets" do |
6 | | - compressor = Kafka::Compressor.new(codec_name: :snappy, threshold: 1, instrumenter: instrumenter) |
7 | | - |
8 | | - message1 = Kafka::Protocol::Message.new(value: "hello1", offset: 0) |
9 | | - message2 = Kafka::Protocol::Message.new(value: "hello2", offset: 1) |
10 | | - message3 = Kafka::Protocol::Message.new(value: "hello3", offset: 2) |
11 | | - |
12 | | - message_set = Kafka::Protocol::MessageSet.new(messages: [message1, message2, message3]) |
13 | | - compressed_message_set = compressor.compress(message_set, offset: 1000) |
14 | | - data = Kafka::Protocol::Encoder.encode_with(compressed_message_set) |
15 | | - |
16 | | - decoder = Kafka::Protocol::Decoder.from_string(data) |
17 | | - decoded_message_set = Kafka::Protocol::MessageSet.decode(decoder) |
18 | | - messages = decoded_message_set.messages |
19 | | - |
20 | | - expect(messages.map(&:offset)).to eq [998, 999, 1000] |
21 | | - end |
22 | | - |
23 | | - it "sets offsets correctly for compressed messages with relative offsets on a compacted topic" do |
24 | | - compressor = Kafka::Compressor.new(codec_name: :snappy, threshold: 1, instrumenter: instrumenter) |
25 | | - |
26 | | - message1 = Kafka::Protocol::Message.new(value: "hello1", offset: 0) |
27 | | - message2 = Kafka::Protocol::Message.new(value: "hello2", offset: 2) |
28 | | - message3 = Kafka::Protocol::Message.new(value: "hello3", offset: 3) |
29 | | - |
30 | | - message_set = Kafka::Protocol::MessageSet.new(messages: [message1, message2, message3]) |
31 | | - compressed_message_set = compressor.compress(message_set, offset: 1000) |
32 | | - data = Kafka::Protocol::Encoder.encode_with(compressed_message_set) |
33 | | - |
34 | | - decoder = Kafka::Protocol::Decoder.from_string(data) |
35 | | - decoded_message_set = Kafka::Protocol::MessageSet.decode(decoder) |
36 | | - messages = decoded_message_set.messages |
37 | | - |
38 | | - expect(messages.map(&:offset)).to eq [997, 999, 1000] |
39 | | - end |
40 | | - |
41 | | - it "keeps the predefined offsets for messages delivered in 0.9 format" do |
42 | | - compressor = Kafka::Compressor.new(codec_name: :snappy, threshold: 1, instrumenter: instrumenter) |
43 | | - |
44 | | - message1 = Kafka::Protocol::Message.new(value: "hello1", offset: 997) |
45 | | - message2 = Kafka::Protocol::Message.new(value: "hello2", offset: 999) |
46 | | - message3 = Kafka::Protocol::Message.new(value: "hello3", offset: 1000) |
47 | | - |
48 | | - message_set = Kafka::Protocol::MessageSet.new(messages: [message1, message2, message3]) |
49 | | - compressed_message_set = compressor.compress(message_set, offset: 1000) |
50 | | - data = Kafka::Protocol::Encoder.encode_with(compressed_message_set) |
51 | | - |
52 | | - decoder = Kafka::Protocol::Decoder.from_string(data) |
53 | | - decoded_message_set = Kafka::Protocol::MessageSet.decode(decoder) |
54 | | - messages = decoded_message_set.messages |
55 | | - |
56 | | - expect(messages.map(&:offset)).to eq [997, 999, 1000] |
57 | | - end |
58 | | - |
59 | 5 | it "only compresses the messages if there are at least the configured threshold" do |
60 | 6 | compressor = Kafka::Compressor.new(codec_name: :snappy, threshold: 3, instrumenter: instrumenter) |
61 | 7 |
|
|
0 commit comments