Browse Source

Fix flaky test in JMS observability

See gh-32458
pull/32482/head
Brian Clozel 2 years ago
parent
commit
c1424acb94
  1. 23
      spring-jms/src/test/java/org/springframework/jms/listener/MessageListenerContainerObservationTests.java

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

@ -21,7 +21,9 @@ import java.util.concurrent.TimeUnit; @@ -21,7 +21,9 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
import io.micrometer.jakarta9.instrument.jms.JmsProcessObservationContext;
import io.micrometer.observation.Observation;
import io.micrometer.observation.ObservationHandler;
import io.micrometer.observation.tck.TestObservationRegistry;
import jakarta.jms.MessageListener;
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
@ -117,6 +119,7 @@ class MessageListenerContainerObservationTests { @@ -117,6 +119,7 @@ class MessageListenerContainerObservationTests {
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
jmsTemplate.convertAndSend("spring.test.observation", "message content");
CountDownLatch latch = new CountDownLatch(1);
registry.observationConfig().observationHandler(new ErrorHandlerObservationHandler(latch));
listenerContainer.setConnectionFactory(connectionFactory);
listenerContainer.setObservationRegistry(registry);
listenerContainer.setDestinationName("spring.test.observation");
@ -124,7 +127,6 @@ class MessageListenerContainerObservationTests { @@ -124,7 +127,6 @@ class MessageListenerContainerObservationTests {
throw new IllegalStateException("error");
});
listenerContainer.setErrorHandler(error -> {
latch.countDown();
throw new IllegalStateException("not handled");
});
listenerContainer.afterPropertiesSet();
@ -139,6 +141,25 @@ class MessageListenerContainerObservationTests { @@ -139,6 +141,25 @@ class MessageListenerContainerObservationTests {
listenerContainer.shutdown();
}
static class ErrorHandlerObservationHandler implements ObservationHandler<JmsProcessObservationContext> {
private final CountDownLatch latch;
ErrorHandlerObservationHandler(CountDownLatch latch) {
this.latch = latch;
}
@Override
public boolean supportsContext(Observation.Context context) {
return context instanceof JmsProcessObservationContext;
}
@Override
public void onError(JmsProcessObservationContext context) {
this.latch.countDown();
}
}
static Stream<Arguments> listenerContainers() {
return Stream.of(
arguments(named(DefaultMessageListenerContainer.class.getSimpleName(), new DefaultMessageListenerContainer())),

Loading…
Cancel
Save