- Improve logging & add timeouts to Future gets in integration tests
diff --git a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/websocket/SubscriptionWebSocket.java b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/websocket/SubscriptionWebSocket.java
index 6f295c7..d99c16b 100644
--- a/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/websocket/SubscriptionWebSocket.java
+++ b/graphql/cxs-impl/src/main/java/org/apache/unomi/graphql/servlet/websocket/SubscriptionWebSocket.java
@@ -60,6 +60,7 @@
@Override
public void onWebSocketText(String textMessage) {
+ logger.info("Got web socket messages {}", textMessage);
final GraphQLMessage message = GraphQLMessage.fromJson(textMessage);
if (message == null) {
return;
diff --git a/itests/src/test/java/org/apache/unomi/itests/graphql/GraphQLWebSocketIT.java b/itests/src/test/java/org/apache/unomi/itests/graphql/GraphQLWebSocketIT.java
index 5c8a680..3ee25f0 100644
--- a/itests/src/test/java/org/apache/unomi/itests/graphql/GraphQLWebSocketIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/graphql/GraphQLWebSocketIT.java
@@ -21,6 +21,7 @@
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.subscribers.DefaultSubscriber;
+import org.apache.unomi.itests.BasicIT;
import org.eclipse.jetty.websocket.api.RemoteEndpoint;
import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.WebSocketAdapter;
@@ -28,19 +29,25 @@
import org.eclipse.jetty.websocket.client.WebSocketClient;
import org.junit.Assert;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.net.URI;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
public class GraphQLWebSocketIT extends BaseGraphQLIT {
+ private final static Logger LOGGER = LoggerFactory.getLogger(GraphQLWebSocketIT.class);
+
private static final String SUBSCRIPTION_ENDPOINT = "ws://localhost:" + HTTP_PORT + "/graphql";
@Test
public void testWebSocketConnectionSegment() throws Exception {
WebSocketClient client = new WebSocketClient();
try {
+ LOGGER.info("Starting web socket client...");
client.start();
URI echoUri = new URI(SUBSCRIPTION_ENDPOINT);
@@ -50,22 +57,30 @@
Future<Session> onConnected = client.connect(socket, echoUri, request);
RemoteEndpoint remote = onConnected.get().getRemote();
+ LOGGER.info("Connected, initializing... ");
+
String initMsg = resourceAsString("graphql/socket/out/init.json");
remote.sendString(initMsg);
+ LOGGER.info("Initialized, acknowledging... ");
+
String ackMsg = resourceAsString("graphql/socket/in/ack.json");
- String initResp = socket.waitMessage().get();
+ String initResp = socket.waitMessage().get(10, TimeUnit.SECONDS);
Assert.assertEquals(ackMsg, initResp);
+ LOGGER.info("Sending terminate message...");
+
String termMsg = resourceAsString("graphql/socket/out/term.json");
remote.sendString(termMsg);
+ LOGGER.info("Waiting for socket to close...");
- CloseStatus status = socket.waitClose().get();
+ CloseStatus status = socket.waitClose().get(10, TimeUnit.SECONDS);
// Assert.assertEquals(1000, (int) status.getStatus()); TODO skip for now
} finally {
client.stop();
+ LOGGER.info("Web socket client stopped.");
}
}