View Javadoc
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  }