1 package com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.metrics;
2
3 import static java.util.concurrent.TimeUnit.MILLISECONDS;
4 import static org.awaitility.Awaitility.await;
5 import static org.hamcrest.Matchers.containsString;
6
7 import org.jboss.shrinkwrap.api.asset.EmptyAsset;
8 import org.junit.jupiter.api.Test;
9
10 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.Messages;
11 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.RequestContextProbe;
12 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.TestEvent;
13 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.TestEventHandler;
14 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.TestEventWithCustomSerialization;
15 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.TestEventWithCustomSerializationHandler;
16 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.TestEventWithCustomSerializationSerialization;
17 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.TestHandlerMethod;
18 import com.github.jonasrutishauser.transactional.event.quarkus.deployment.it.TestPublisher;
19
20 import io.quarkus.test.QuarkusUnitTest;
21 import io.restassured.RestAssured;
22 import jakarta.inject.Inject;
23
24 abstract class AbstractMetricsIT {
25
26 static QuarkusUnitTest config() {
27 return new QuarkusUnitTest()
28 .setFlatClassPath(true)
29 .withApplicationRoot(archive -> archive
30 .addClasses(Messages.class, RequestContextProbe.class, TestEvent.class, TestEventHandler.class, TestPublisher.class,
31 TestHandlerMethod.class,
32 TestEventWithCustomSerialization.class, TestEventWithCustomSerializationHandler.class,
33 TestEventWithCustomSerializationSerialization.class)
34 .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml")
35 ).overrideRuntimeConfigKey("quarkus.transactional.event.initial-dispatch-interval", "1");
36 }
37
38 @Inject
39 TestPublisher publisher;
40
41 @Test
42 void testMetrics() {
43 publisher.publish("test failure");
44
45 await().pollInterval(10, MILLISECONDS).until(() -> publisher.getMessages().contains("test failure"));
46
47 RestAssured.when().get("/q/metrics").then().statusCode(200).body(
48 containsString("com_github_jonasrutishauser_transaction_event_max_concurrent_dispatching 10.0"),
49 containsString("com_github_jonasrutishauser_transaction_event_failedattempts_total 1"),
50 containsString("com_github_jonasrutishauser_transaction_event_dispatched_processing 0"),
51 containsString("com_github_jonasrutishauser_transaction_event_processing_current 0"));
52 }
53
54 }