Don't run test until ws.start() completes 77/72777/8
authorJim Hahn <jrh3@att.com>
Thu, 15 Nov 2018 13:00:24 +0000 (08:00 -0500)
committerJim Hahn <jrh3@att.com>
Fri, 16 Nov 2018 15:12:08 +0000 (10:12 -0500)
Allocate server port via port=0 method.
Replace tabs with spaces.
Use logback-test to log test output only to stdout.
Only wait for latch a finite amount of time.
Update license date in new logback-test.
Tabs => spaces in logback-test.
More tabs => spaces in logback-test.
Remove extra attributes from logback-test "configuration" element.

Change-Id: I5608a4736c0b08d86a0687034eac6a65e3e77972
Issue-ID: POLICY-1092
Signed-off-by: Jim Hahn <jrh3@att.com>
PolicyEngineAPI/src/test/java/org/onap/policy/std/test/ManualClientEndTest.java
PolicyEngineAPI/src/test/resources/logback-test.xml [new file with mode: 0644]

index a9fa3f5..42df545 100644 (file)
@@ -26,7 +26,8 @@ import static org.junit.Assert.assertTrue;
 
 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;
@@ -35,16 +36,16 @@ import org.junit.BeforeClass;
 import org.junit.Test;
 import org.onap.policy.api.NotificationScheme;
 import org.onap.policy.std.ManualClientEnd;
-import org.springframework.util.SocketUtils;
 
 /**
- * The class <code>ManualClientEndTest</code> contains tests for the class <code>{@link ManualClientEnd}</code>.
+ * The class <code>ManualClientEndTest</code> contains tests for the class
+ * <code>{@link ManualClientEnd}</code>.
  *
  */
 public class ManualClientEndTest {
     private static WebSocketServer ws;
 
-    private static final int port = SocketUtils.findAvailableTcpPort();
+    private static int port;
     private static volatile String recvMsg = null;
     private static volatile Exception webEx = null;
 
@@ -55,7 +56,10 @@ public class ManualClientEndTest {
      */
     @BeforeClass
     public static void startServer() throws Exception {
-        ws = new WebSocketServer(new InetSocketAddress(port), 1) {
+
+        CountDownLatch latch = new CountDownLatch(1);
+
+        ws = new WebSocketServer(new InetSocketAddress(0), 1) {
             @Override
             public void onOpen(WebSocket conn, ClientHandshake handshake) {}
 
@@ -64,39 +68,48 @@ public class ManualClientEndTest {
 
             @Override
             public void onMessage(WebSocket conn, String message) {
-               
-               // NOTE: must copy to recvMsg BEFORE invoking conn.send()
+
+                // NOTE: must copy to recvMsg BEFORE invoking conn.send()
                 recvMsg = message;
-                
+
                 conn.send("{\"removedPolicies\": [],\"loadedPolicies\":"
-                        + "[{\"policyName\": \"Test.Config_BRMS_Param_BrmsParamTestPa.1.xml\","
-                        + "\"versionNo\": \"1\",\"matches\": {\"ECOMPName\": \"DROOLS\","
-                        + "\"ONAPName\": \"DROOLS\",\"ConfigName\": \"BRMS_PARAM_RULE\","
-                        + "\"guard\": \"false\",\"TTLDate\": \"NA\",\"RiskLevel\": \"5\","
-                        + "\"RiskType\": \"default\"},\"updateType\": \"NEW\"}],\"notificationType\": \"UPDATE\"}");
+                                + "[{\"policyName\": \"Test.Config_BRMS_Param_BrmsParamTestPa.1.xml\","
+                                + "\"versionNo\": \"1\",\"matches\": {\"ECOMPName\": \"DROOLS\","
+                                + "\"ONAPName\": \"DROOLS\",\"ConfigName\": \"BRMS_PARAM_RULE\","
+                                + "\"guard\": \"false\",\"TTLDate\": \"NA\",\"RiskLevel\": \"5\","
+                                + "\"RiskType\": \"default\"},\"updateType\": \"NEW\"}],\"notificationType\": \"UPDATE\"}");
             }
 
             @Override
             public void onError(WebSocket conn, Exception ex) {
-               webEx = ex;
+                webEx = ex;
                 ex.printStackTrace();
+                latch.countDown();
             }
 
             @Override
-            public void onStart() {}
+            public void onStart() {
+                latch.countDown();
+            }
         };
 
         ws.setConnectionLostTimeout(0);
         ws.setReuseAddr(true);
         ws.start();
+
+        // ensure port connected (or error) before running the actual test
+        latch.await(20, TimeUnit.SECONDS);
+
+        // ensure no error during start-up
+        assertNull(webEx);
+
+        port = ws.getPort();
     }
 
     @Test
     public void testManualClient() throws Exception {
-       
         ManualClientEnd.start("http://localhost:" + port + "/");
 
-        assertNull(webEx);
         assertNotNull(ManualClientEnd.result(NotificationScheme.MANUAL_ALL_NOTIFICATIONS));
         assertTrue("Manual".equalsIgnoreCase(recvMsg));
     }
diff --git a/PolicyEngineAPI/src/test/resources/logback-test.xml b/PolicyEngineAPI/src/test/resources/logback-test.xml
new file mode 100644 (file)
index 0000000..717766a
--- /dev/null
@@ -0,0 +1,54 @@
+<!--
+  ============LICENSE_START=======================================================
+  PolicyEngineAPI
+  ================================================================================
+  Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+  ================================================================================
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+       http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  ============LICENSE_END=========================================================
+  -->
+
+<configuration>
+    <property name="defaultPattern"
+        value="%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX, UTC}|%X{requestId}|%X{serviceInstanceId}|%t|%X{serverName}|%X{serviceName}|%X{instanceUuid}|%p|%X{severity}|%X{serverIpAddress}|%X{server}|%X{clientIpAddress}|%c||%msg%n" />
+        
+    <!-- Example evaluator filter applied against console appender -->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>${defaultPattern}</pattern>
+        </encoder>
+    </appender>
+    
+    <!-- ============================================================================ -->
+    <!-- EELF loggers -->
+    <!-- ============================================================================ -->
+    
+    <logger name="com.att.eelf.audit" level="info" additivity="false">
+        <appender-ref ref="STDOUT" />
+    </logger>
+    <logger name="com.att.eelf.metrics" level="info" additivity="false">
+        <appender-ref ref="STDOUT" />
+    </logger>
+    <logger name="com.att.eelf.error" level="info" additivity="false">
+        <appender-ref ref="STDOUT" />
+    </logger>
+    <logger name="com.att.eelf.debug" level="info" additivity="false">
+        <appender-ref ref="STDOUT" />
+    </logger>
+    
+    
+    <root level="INFO">
+        <appender-ref ref="STDOUT" />
+    </root>
+
+</configuration>