Skip to content

Commit 03ae149

Browse files
committed
Attempt to fix a few flaky tests
Signed-off-by: Soby Chacko <soby.chacko@broadcom.com>
1 parent b36a4f7 commit 03ae149

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

spring-kafka/src/test/java/org/springframework/kafka/annotation/BatchListenerConversion2Tests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public void testBatchOfPojosWithABadOne() throws Exception {
7575
this.template.send(topic, "{\"bar\":\"baz\"}");
7676
this.template.send(topic, "junk");
7777
this.template.send(topic, "{\"bar\":\"baz\"}");
78+
this.template.flush();
7879
assertThat(listener.latch1.await(10, TimeUnit.SECONDS)).isTrue();
7980
assertThat(listener.badFoo).isInstanceOf(BadFoo.class);
8081
assertThat(listener.receivedFoos).isEqualTo(2);

spring-kafka/src/test/java/org/springframework/kafka/listener/ShareKafkaListenerIntegrationTests.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.kafka.common.config.ConfigResource;
3737
import org.apache.kafka.common.serialization.StringDeserializer;
3838
import org.apache.kafka.common.serialization.StringSerializer;
39+
import org.awaitility.Awaitility;
3940
import org.jspecify.annotations.Nullable;
4041
import org.junit.jupiter.api.Test;
4142

@@ -44,6 +45,7 @@
4445
import org.springframework.context.annotation.Configuration;
4546
import org.springframework.kafka.annotation.EnableKafka;
4647
import org.springframework.kafka.annotation.KafkaListener;
48+
import org.springframework.kafka.config.KafkaListenerEndpointRegistry;
4749
import org.springframework.kafka.config.ShareKafkaListenerContainerFactory;
4850
import org.springframework.kafka.core.DefaultKafkaProducerFactory;
4951
import org.springframework.kafka.core.DefaultShareConsumerFactory;
@@ -87,6 +89,9 @@ class ShareKafkaListenerIntegrationTests {
8789
@Autowired
8890
KafkaTemplate<String, String> kafkaTemplate;
8991

92+
@Autowired
93+
KafkaListenerEndpointRegistry kafkaListenerEndpointRegistry;
94+
9095
@Test
9196
void shouldSupportBasicShareKafkaListener() throws Exception {
9297
final String topic = "share-listener-basic-test";
@@ -147,11 +152,15 @@ void shouldSupportAcknowledgingShareConsumerAwareListener() throws Exception {
147152
final String groupId = "share-ack-consumer-aware-group";
148153
setShareAutoOffsetResetEarliest(this.broker.getBrokersAsString(), groupId);
149154

155+
// wait for containers before producing so the share consumer is subscribed.
156+
awaitRunningShareListenerContainers();
157+
150158
// Send test message
151159
kafkaTemplate.send(topic, "ack-consumer-aware-message");
160+
kafkaTemplate.flush();
152161

153162
// Wait for processing
154-
assertThat(AckShareConsumerAwareTestListener.latch.await(10, TimeUnit.SECONDS)).isTrue();
163+
assertThat(AckShareConsumerAwareTestListener.latch.await(30, TimeUnit.SECONDS)).isTrue();
155164
assertThat(AckShareConsumerAwareTestListener.received.get()).isEqualTo("ack-consumer-aware-message");
156165
assertThat(AckShareConsumerAwareTestListener.consumerReceived.get()).isNotNull();
157166
assertThat(AckShareConsumerAwareTestListener.acknowledgmentReceived.get()).isNotNull();
@@ -243,6 +252,20 @@ private boolean isAcknowledgedInternal(ShareAcknowledgment ack) {
243252
}
244253
}
245254

255+
/**
256+
* Wait until all listener containers have started (needed when this test runs before others).
257+
*/
258+
private void awaitRunningShareListenerContainers() {
259+
Awaitility.await()
260+
.atMost(30, TimeUnit.SECONDS)
261+
.pollInterval(100, TimeUnit.MILLISECONDS)
262+
.untilAsserted(() -> {
263+
assertThat(this.kafkaListenerEndpointRegistry.getListenerContainerIds()).isNotEmpty();
264+
this.kafkaListenerEndpointRegistry.getListenerContainers().forEach(container ->
265+
assertThat(container.isRunning()).isTrue());
266+
});
267+
}
268+
246269
@Configuration
247270
@EnableKafka
248271
static class TestConfig {

0 commit comments

Comments
 (0)