1 package com.github.jonasrutishauser.transactional.event.liberty;
2
3 import static java.util.concurrent.TimeUnit.MINUTES;
4 import static org.awaitility.Awaitility.await;
5 import static org.hamcrest.Matchers.containsString;
6 import static org.junit.jupiter.api.Assertions.assertEquals;
7
8 import java.util.concurrent.Callable;
9
10 import jakarta.ws.rs.client.ClientBuilder;
11 import jakarta.ws.rs.client.Entity;
12 import jakarta.ws.rs.client.WebTarget;
13 import jakarta.ws.rs.core.Response.Status;
14
15 import org.junit.jupiter.api.Test;
16
17 class TransactionalEventIT {
18
19 @Test
20 void testRoundTrip() {
21 WebTarget target = ClientBuilder.newClient()
22 .target("http://localhost:9080/transactional-event-liberty-it/rest");
23
24 postMessage(target, "test message");
25
26 await().until(processMessages(target), containsString("test message"));
27 }
28
29 @Test
30 void testFailure() {
31 WebTarget target = ClientBuilder.newClient()
32 .target("http://localhost:9080/transactional-event-liberty-it/rest");
33
34 postMessage(target, "test failure");
35 for (int i = 10; i < 50; i++) {
36 postMessage(target, "failure " + i);
37 }
38
39 await().atMost(1, MINUTES).until(processMessages(target), containsString("test failure"));
40 for (int i = 10; i < 50; i++) {
41 await().until(processMessages(target), containsString("failure " + i));
42 }
43 }
44
45 private Callable<String> processMessages(WebTarget target) {
46 return () -> target.path("test").request().get(String.class);
47 }
48
49 private void postMessage(WebTarget target, String message) {
50 int status = target.path("test").request().post(Entity.text(message)).getStatus();
51
52 assertEquals(Status.NO_CONTENT.getStatusCode(), status);
53 }
54
55 }