Incorporate Liam code review
[policy/engine.git] / PolicyEngineAPI / src / test / java / org / onap / policy / std / test / AutoClientEndTest.java
index 4f1ce6f..5056fce 100644 (file)
 package org.onap.policy.std.test;
 
 import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
-
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
 import org.java_websocket.WebSocket;
 import org.java_websocket.handshake.ClientHandshake;
 import org.java_websocket.server.WebSocketServer;
@@ -37,7 +36,6 @@ import org.onap.policy.api.NotificationHandler;
 import org.onap.policy.api.NotificationScheme;
 import org.onap.policy.api.PDPNotification;
 import org.onap.policy.std.AutoClientEnd;
-import org.onap.policy.std.StdPDPNotification;
 import org.springframework.util.SocketUtils;
 
 /**
@@ -47,9 +45,9 @@ import org.springframework.util.SocketUtils;
 public class AutoClientEndTest {
     private static WebSocketServer ws;
 
-    private static int port = 18080;
+    private static int port = SocketUtils.findAvailableTcpPort();
     private static CountDownLatch countServerDownLatch = null;
-    private StdPDPNotification notification = null;
+    private static PDPNotification notification = null;
 
     /**
      * Start server.
@@ -58,8 +56,8 @@ public class AutoClientEndTest {
      */
     @BeforeClass
     public static void startServer() throws Exception {
-        port = SocketUtils.findAvailableTcpPort();
-        ws = new WebSocketServer(new InetSocketAddress(port), 16) {
+        notification = null;
+        ws = new WebSocketServer(new InetSocketAddress(port), 1) {
             @Override
             public void onOpen(WebSocket conn, ClientHandshake handshake) {
                 conn.send("{\"removedPolicies\": [],\"loadedPolicies\": "
@@ -91,7 +89,7 @@ public class AutoClientEndTest {
 
         };
 
-        ws.setConnectionLostTimeout(30);
+        ws.setConnectionLostTimeout(0);
         ws.start();
     }
 
@@ -102,8 +100,8 @@ public class AutoClientEndTest {
         NotificationHandler handler = new NotificationHandler() {
 
             @Override
-            public void notificationReceived(PDPNotification notifi) {
-                notification = (StdPDPNotification) notifi;
+            public void notificationReceived(PDPNotification notify) {
+                notification = notify;
                 countServerDownLatch.countDown();
 
             }
@@ -113,17 +111,26 @@ public class AutoClientEndTest {
         countServerDownLatch = new CountDownLatch(1);
 
         AutoClientEnd.start("http://localhost:" + port + "/");
-        countServerDownLatch.await();
+        countServerDownLatch.await(45, TimeUnit.SECONDS);
+
 
+        assertNotNull(notification);
 
+
+        // simulate a server restart and verify client reconnects
+        countServerDownLatch = new CountDownLatch(1);
+        ws.stop(30000);
+        startServer();
+        countServerDownLatch.await(60+10, TimeUnit.SECONDS);
         assertNotNull(notification);
-        assertTrue(AutoClientEnd.getStatus());
+
+        AutoClientEnd.stop();
+
     }
 
     @AfterClass
-    public static void successTests() throws InterruptedException, IOException {
-        AutoClientEnd.stop();
-        ws.stop();
+    public static void stopServer() throws InterruptedException, IOException {
+        ws.stop(30000);
     }