53
53
54
54
/**
55
55
* @author Borahm Lee
56
+ * @author Artem Bilan
56
57
* @since 3.3
57
58
*/
58
59
@ DirtiesContext
@@ -73,48 +74,59 @@ class AbstractConsumerSeekAwareTests {
73
74
74
75
@ Test
75
76
public void checkCallbacksAndTopicPartitions () {
76
- await ().timeout (Duration .ofSeconds (5 )).untilAsserted (() -> {
77
- Map <ConsumerSeekCallback , List <TopicPartition >> callbacksAndTopics = multiGroupListener .getCallbacksAndTopics ();
78
- Set <ConsumerSeekCallback > registeredCallbacks = callbacksAndTopics .keySet ();
79
- Set <TopicPartition > registeredTopicPartitions = callbacksAndTopics .values ().stream ().flatMap (Collection ::stream ).collect (Collectors .toSet ());
80
-
81
- Map <TopicPartition , List <ConsumerSeekCallback >> topicsAndCallbacks = multiGroupListener .getTopicsAndCallbacks ();
82
- Set <TopicPartition > getTopicPartitions = topicsAndCallbacks .keySet ();
83
- Set <ConsumerSeekCallback > getCallbacks = topicsAndCallbacks .values ().stream ().flatMap (Collection ::stream ).collect (Collectors .toSet ());
84
-
85
- assertThat (registeredCallbacks ).containsExactlyInAnyOrderElementsOf (getCallbacks ).isNotEmpty ();
86
- assertThat (registeredTopicPartitions ).containsExactlyInAnyOrderElementsOf (getTopicPartitions ).hasSize (3 );
87
- });
77
+ await ().timeout (Duration .ofSeconds (5 ))
78
+ .untilAsserted (() -> {
79
+ Map <ConsumerSeekCallback , List <TopicPartition >> callbacksAndTopics =
80
+ multiGroupListener .getCallbacksAndTopics ();
81
+ Set <ConsumerSeekCallback > registeredCallbacks = callbacksAndTopics .keySet ();
82
+ Set <TopicPartition > registeredTopicPartitions =
83
+ callbacksAndTopics .values ()
84
+ .stream ()
85
+ .flatMap (Collection ::stream )
86
+ .collect (Collectors .toSet ());
87
+
88
+ Map <TopicPartition , List <ConsumerSeekCallback >> topicsAndCallbacks =
89
+ multiGroupListener .getTopicsAndCallbacks ();
90
+ Set <TopicPartition > getTopicPartitions = topicsAndCallbacks .keySet ();
91
+ Set <ConsumerSeekCallback > getCallbacks =
92
+ topicsAndCallbacks .values ()
93
+ .stream ()
94
+ .flatMap (Collection ::stream )
95
+ .collect (Collectors .toSet ());
96
+
97
+ assertThat (registeredCallbacks ).containsExactlyInAnyOrderElementsOf (getCallbacks ).isNotEmpty ();
98
+ assertThat (registeredTopicPartitions ).containsExactlyInAnyOrderElementsOf (getTopicPartitions );
99
+ });
88
100
}
89
101
90
102
@ Test
91
103
void seekForAllGroups () throws Exception {
92
104
template .send (TOPIC , "test-data" );
93
105
template .send (TOPIC , "test-data" );
94
- assertThat (MultiGroupListener .latch1 .await (10 , TimeUnit .SECONDS )).isTrue ();
95
- assertThat (MultiGroupListener .latch2 .await (10 , TimeUnit .SECONDS )).isTrue ();
106
+ assertThat (MultiGroupListener .latch1 .await (30 , TimeUnit .SECONDS )).isTrue ();
107
+ assertThat (MultiGroupListener .latch2 .await (30 , TimeUnit .SECONDS )).isTrue ();
96
108
97
109
MultiGroupListener .latch1 = new CountDownLatch (2 );
98
110
MultiGroupListener .latch2 = new CountDownLatch (2 );
99
111
100
112
multiGroupListener .seekToBeginning ();
101
- assertThat (MultiGroupListener .latch1 .await (10 , TimeUnit .SECONDS )).isTrue ();
102
- assertThat (MultiGroupListener .latch2 .await (10 , TimeUnit .SECONDS )).isTrue ();
113
+ assertThat (MultiGroupListener .latch1 .await (30 , TimeUnit .SECONDS )).isTrue ();
114
+ assertThat (MultiGroupListener .latch2 .await (30 , TimeUnit .SECONDS )).isTrue ();
103
115
}
104
116
105
117
@ Test
106
118
void seekForSpecificGroup () throws Exception {
107
119
template .send (TOPIC , "test-data" );
108
120
template .send (TOPIC , "test-data" );
109
- assertThat (MultiGroupListener .latch1 .await (10 , TimeUnit .SECONDS )).isTrue ();
110
- assertThat (MultiGroupListener .latch2 .await (10 , TimeUnit .SECONDS )).isTrue ();
121
+ assertThat (MultiGroupListener .latch1 .await (30 , TimeUnit .SECONDS )).isTrue ();
122
+ assertThat (MultiGroupListener .latch2 .await (30 , TimeUnit .SECONDS )).isTrue ();
111
123
112
124
MultiGroupListener .latch1 = new CountDownLatch (2 );
113
125
MultiGroupListener .latch2 = new CountDownLatch (2 );
114
126
115
127
multiGroupListener .seekToBeginningForGroup ("group2" );
116
- assertThat (MultiGroupListener .latch2 .await (10 , TimeUnit .SECONDS )).isTrue ();
117
- assertThat (MultiGroupListener .latch1 .await (100 , TimeUnit .MICROSECONDS )).isFalse ();
128
+ assertThat (MultiGroupListener .latch2 .await (30 , TimeUnit .SECONDS )).isTrue ();
129
+ assertThat (MultiGroupListener .latch1 .await (1 , TimeUnit .SECONDS )).isFalse ();
118
130
assertThat (MultiGroupListener .latch1 .getCount ()).isEqualTo (2 );
119
131
}
120
132
@@ -128,7 +140,8 @@ static class Config {
128
140
@ Bean
129
141
ConcurrentKafkaListenerContainerFactory <String , String > kafkaListenerContainerFactory (
130
142
ConsumerFactory <String , String > consumerFactory ) {
131
- ConcurrentKafkaListenerContainerFactory <String , String > factory = new ConcurrentKafkaListenerContainerFactory <>();
143
+ ConcurrentKafkaListenerContainerFactory <String , String > factory =
144
+ new ConcurrentKafkaListenerContainerFactory <>();
132
145
factory .setConsumerFactory (consumerFactory );
133
146
return factory ;
134
147
}
@@ -172,7 +185,9 @@ void seekToBeginningForGroup(String groupIdForSeek) {
172
185
}
173
186
});
174
187
}
188
+
175
189
}
190
+
176
191
}
177
192
178
193
}
0 commit comments