/
Consume_Single_Partition_OrderingTest.java
61 lines (49 loc) · 1.88 KB
/
Consume_Single_Partition_OrderingTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.github.dhslrl321.order;
import com.github.support.annotation.SinglePartitionKafkaTest;
import com.github.support.helper.KafkaConsumerTestHelper;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.time.Duration;
import java.util.List;
import static com.github.support.helper.ConsumerRecordsHelper.messagesFrom;
import static com.github.support.helper.KafkaConsumerTestHelper.produce;
import static org.assertj.core.api.Assertions.assertThat;
@SinglePartitionKafkaTest(testDescriptions = "토픽에 파티션이 하나인 테스트")
public class Consume_Single_Partition_OrderingTest {
KafkaConsumer<String, String> sut;
@BeforeEach
void setUp() {
sut = KafkaConsumerTestHelper.simpleConsumer();
}
@Test
@DisplayName("partition 이 하나라서 발행한 순서대로 consume 된다")
void name() {
produceAtoE();
produce1to5();
sut.subscribe(List.of("my-topic"));
ConsumerRecords<String, String> actual = sut.poll(Duration.ofSeconds(2));
List<String> messages = messagesFrom(actual);
// 발행 순서대로 consume 된다
assertThat(messages)
.isEqualTo(
List.of("a", "b", "c", "d", "e", "1", "2", "3", "4", "5")
);
}
private static void produceAtoE() {
produce("my-topic", "a");
produce("my-topic", "b");
produce("my-topic", "c");
produce("my-topic", "d");
produce("my-topic", "e");
}
private static void produce1to5() {
produce("my-topic", "1");
produce("my-topic", "2");
produce("my-topic", "3");
produce("my-topic", "4");
produce("my-topic", "5");
}
}