Skip to content

Commit c1424ac

Browse files
committed
Fix flaky test in JMS observability
See gh-32458
1 parent 36d1bc5 commit c1424ac

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

spring-jms/src/test/java/org/springframework/jms/listener/MessageListenerContainerObservationTests.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
import java.util.concurrent.atomic.AtomicReference;
2222
import java.util.stream.Stream;
2323

24+
import io.micrometer.jakarta9.instrument.jms.JmsProcessObservationContext;
2425
import io.micrometer.observation.Observation;
26+
import io.micrometer.observation.ObservationHandler;
2527
import io.micrometer.observation.tck.TestObservationRegistry;
2628
import jakarta.jms.MessageListener;
2729
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
@@ -117,14 +119,14 @@ void shouldHaveObservationErrorWhenRethrown(AbstractMessageListenerContainer lis
117119
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
118120
jmsTemplate.convertAndSend("spring.test.observation", "message content");
119121
CountDownLatch latch = new CountDownLatch(1);
122+
registry.observationConfig().observationHandler(new ErrorHandlerObservationHandler(latch));
120123
listenerContainer.setConnectionFactory(connectionFactory);
121124
listenerContainer.setObservationRegistry(registry);
122125
listenerContainer.setDestinationName("spring.test.observation");
123126
listenerContainer.setMessageListener((MessageListener) message -> {
124127
throw new IllegalStateException("error");
125128
});
126129
listenerContainer.setErrorHandler(error -> {
127-
latch.countDown();
128130
throw new IllegalStateException("not handled");
129131
});
130132
listenerContainer.afterPropertiesSet();
@@ -139,6 +141,25 @@ void shouldHaveObservationErrorWhenRethrown(AbstractMessageListenerContainer lis
139141
listenerContainer.shutdown();
140142
}
141143

144+
static class ErrorHandlerObservationHandler implements ObservationHandler<JmsProcessObservationContext> {
145+
146+
private final CountDownLatch latch;
147+
148+
ErrorHandlerObservationHandler(CountDownLatch latch) {
149+
this.latch = latch;
150+
}
151+
152+
@Override
153+
public boolean supportsContext(Observation.Context context) {
154+
return context instanceof JmsProcessObservationContext;
155+
}
156+
157+
@Override
158+
public void onError(JmsProcessObservationContext context) {
159+
this.latch.countDown();
160+
}
161+
}
162+
142163
static Stream<Arguments> listenerContainers() {
143164
return Stream.of(
144165
arguments(named(DefaultMessageListenerContainer.class.getSimpleName(), new DefaultMessageListenerContainer())),

0 commit comments

Comments
 (0)