From b63b7672e6ba731c53198c69309c0d8e9ee7f138 Mon Sep 17 00:00:00 2001 From: pa834y Date: Tue, 24 Apr 2018 20:25:22 -0400 Subject: Add websocket client code. Change-Id: I2d3939c698a0df6bec068063f08566226f65bfd3 Issue-ID: POLICY-756 Signed-off-by: pa834y --- .../onap/policy/std/test/AutoClientEndTest.java | 277 +++++++-------------- .../onap/policy/std/test/ManualClientEndTest.java | 175 ++++++------- 2 files changed, 176 insertions(+), 276 deletions(-) (limited to 'PolicyEngineAPI/src/test/java') diff --git a/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/AutoClientEndTest.java b/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/AutoClientEndTest.java index 664dcc808..4f1ce6f59 100644 --- a/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/AutoClientEndTest.java +++ b/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/AutoClientEndTest.java @@ -21,196 +21,111 @@ package org.onap.policy.std.test; import static org.junit.Assert.assertNotNull; - -import org.junit.After; -import org.junit.Before; +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 org.java_websocket.WebSocket; +import org.java_websocket.handshake.ClientHandshake; +import org.java_websocket.server.WebSocketServer; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; 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.StdPolicyEngine; +import org.onap.policy.std.StdPDPNotification; +import org.springframework.util.SocketUtils; /** * The class AutoClientEndTest contains tests for the class {@link AutoClientEnd}. * - * @generatedBy CodePro at 6/1/16 1:40 PM - * @version $Revision: 1.0 $ */ public class AutoClientEndTest { + private static WebSocketServer ws; + + private static int port = 18080; + private static CountDownLatch countServerDownLatch = null; + private StdPDPNotification notification = null; + + /** + * Start server. + * + * @throws Exception the exception + */ + @BeforeClass + public static void startServer() throws Exception { + port = SocketUtils.findAvailableTcpPort(); + ws = new WebSocketServer(new InetSocketAddress(port), 16) { + @Override + public void onOpen(WebSocket conn, ClientHandshake handshake) { + 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\"}"); + } + + @Override + public void onClose(WebSocket conn, int code, String reason, boolean remote) { + + } + + @Override + public void onMessage(WebSocket conn, String message) {} + + @Override + public void onError(WebSocket conn, Exception ex) { + + ex.printStackTrace(); + fail("There should be no exception!"); + } + + @Override + public void onStart() {} + + + }; + + ws.setConnectionLostTimeout(30); + ws.start(); + } + + @Test + public void testAutoClient() throws Exception { + + NotificationScheme scheme = NotificationScheme.AUTO_ALL_NOTIFICATIONS; + NotificationHandler handler = new NotificationHandler() { + + @Override + public void notificationReceived(PDPNotification notifi) { + notification = (StdPDPNotification) notifi; + countServerDownLatch.countDown(); + + } + }; + + AutoClientEnd.setAuto(scheme, handler); + countServerDownLatch = new CountDownLatch(1); + + AutoClientEnd.start("http://localhost:" + port + "/"); + countServerDownLatch.await(); + + + assertNotNull(notification); + assertTrue(AutoClientEnd.getStatus()); + } + + @AfterClass + public static void successTests() throws InterruptedException, IOException { + AutoClientEnd.stop(); + ws.stop(); + } + + - /** - * Run the boolean getStatus() method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Test - public void testGetStatus_1() - throws Exception { - - boolean result = AutoClientEnd.getStatus(); - - assertNotNull(result); - } - - /** - * Run the String getURL() method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Test - public void testGetURL_1() - throws Exception { - - String result = AutoClientEnd.getURL(); - - // add additional test code here - // An unexpected exception was thrown in user code while executing this test: - // java.lang.NoClassDefFoundError: Could not initialize class org.onap.policy.std.AutoClientEnd - assertNotNull(result); - } - - - /** - * Run the void setAuto(NotificationScheme,NotificationHandler) method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Test - public void testSetAuto() - throws Exception { - NotificationScheme scheme = NotificationScheme.AUTO_ALL_NOTIFICATIONS; - NotificationHandler handler = null; - - AutoClientEnd.setAuto(scheme, handler); - - // add additional test code here - // An unexpected exception was thrown in user code while executing this test: - // java.lang.ExceptionInInitializerError - // at org.apache.log4j.Logger.getLogger(Logger.java:104) - // at org.onap.policy.std.AutoClientEnd.(AutoClientEnd.java:39) - } - - /** - * Run the void setScheme(NotificationScheme) method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Test - public void testSetScheme() - throws Exception { - - NotificationScheme scheme = NotificationScheme.AUTO_ALL_NOTIFICATIONS; - AutoClientEnd.setScheme(scheme); - - } - - /** - * Run the void start(String) method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Test - public void testStart() - throws Exception { - String url = "http://test.com"; - - AutoClientEnd.start(url); - - // add additional test code here - // An unexpected exception was thrown in user code while executing this test: - // java.lang.NoClassDefFoundError: Could not initialize class org.onap.policy.std.AutoClientEnd - } - - - /** - * Run the void start(String) method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Test - public void testStart_2() - throws Exception { - String url = null; - - AutoClientEnd.start(url); - - // add additional test code here - // An unexpected exception was thrown in user code while executing this test: - // java.lang.NoClassDefFoundError: Could not initialize class org.onap.policy.std.AutoClientEnd - } - - /** - * Run the void stop() method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Test - public void testStop_1() - throws Exception { - - AutoClientEnd.stop(); - - // add additional test code here - // An unexpected exception was thrown in user code while executing this test: - // java.lang.NoClassDefFoundError: Could not initialize class org.onap.policy.std.AutoClientEnd - } - - /** - * Perform pre-test initialization. - * - * @throws Exception - * if the initialization fails for some reason - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @Before - public void setUp() - throws Exception { - // add set up code here - StdPolicyEngine policyEngine = new StdPolicyEngine("Test/config_pass.properties", (String) null); - - NotificationHandler handler = policyEngine.getNotificationHandler(); - AutoClientEnd.setAuto(NotificationScheme.AUTO_ALL_NOTIFICATIONS, handler); - AutoClientEnd.start("http://testurl.com"); - - } - - /** - * Perform post-test clean-up. - * - * @throws Exception - * if the clean-up fails for some reason - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - @After - public void tearDown() - throws Exception { - // Add additional tear down code here - } - - /** - * Launch the test. - * - * @param args the command line arguments - * - * @generatedBy CodePro at 6/1/16 1:40 PM - */ - public static void main(String[] args) { - new org.junit.runner.JUnitCore().run(AutoClientEndTest.class); - } } diff --git a/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/ManualClientEndTest.java b/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/ManualClientEndTest.java index b87fa74bd..4a09164b5 100644 --- a/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/ManualClientEndTest.java +++ b/PolicyEngineAPI/src/test/java/org/onap/policy/std/test/ManualClientEndTest.java @@ -21,17 +21,21 @@ package org.onap.policy.std.test; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; - -import java.net.URI; -import java.net.URL; - -import org.junit.After; -import org.junit.Before; +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 org.java_websocket.WebSocket; +import org.java_websocket.handshake.ClientHandshake; +import org.java_websocket.server.WebSocketServer; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; import org.onap.policy.api.NotificationScheme; -import org.onap.policy.api.PDPNotification; import org.onap.policy.std.ManualClientEnd; +import org.springframework.util.SocketUtils; /** * The class ManualClientEndTest contains tests for the class {@link ManualClientEnd}. @@ -40,91 +44,72 @@ import org.onap.policy.std.ManualClientEnd; * @version $Revision: 1.0 $ */ public class ManualClientEndTest { - /** - * Run the ManualClientEnd() constructor test. - * - * @generatedBy CodePro at 6/1/16 1:41 PM - */ - @Test - public void testManualClientEnd_1() - throws Exception { - ManualClientEnd mce = new ManualClientEnd(new URI("http://www.onap.org")); - assertNotNull(mce); - mce.close(); - // add additional test code here - } - - - /** - * Run the PDPNotification result(NotificationScheme) method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:41 PM - */ - @Test - public void testResult_1() - throws Exception { - NotificationScheme scheme = NotificationScheme.AUTO_ALL_NOTIFICATIONS; - - PDPNotification result = ManualClientEnd.result(scheme); - - assertNull(result); - } - - - /** - * Run the void start(String) method test. - * - * @throws Exception - * - * @generatedBy CodePro at 6/1/16 1:41 PM - */ - @Test - public void testStart_1() - throws Exception { - String url = "This is not a URL"; - - ManualClientEnd.start(url); - - } - - /** - * Perform pre-test initialization. - * - * @throws Exception - * if the initialization fails for some reason - * - * @generatedBy CodePro at 6/1/16 1:41 PM - */ - @Before - public void setUp() - throws Exception { - // add additional set up code here - } - - /** - * Perform post-test clean-up. - * - * @throws Exception - * if the clean-up fails for some reason - * - * @generatedBy CodePro at 6/1/16 1:41 PM - */ - @After - public void tearDown() - throws Exception { - // Add additional tear down code here - } - - /** - * Launch the test. - * - * @param args the command line arguments - * - * @generatedBy CodePro at 6/1/16 1:41 PM - */ - public static void main(String[] args) { - new org.junit.runner.JUnitCore().run(ManualClientEndTest.class); - } + private static WebSocketServer ws; + + private static int port = 18080; + private static CountDownLatch countServerDownLatch = null; + private static String recvMsg = null; + + /** + * Start server. + * + * @throws Exception the exception + */ + @BeforeClass + public static void startServer() throws Exception { + port = SocketUtils.findAvailableTcpPort(); + ws = new WebSocketServer(new InetSocketAddress(port), 16) { + @Override + public void onOpen(WebSocket conn, ClientHandshake handshake) { + + } + + @Override + public void onClose(WebSocket conn, int code, String reason, boolean remote) { + countServerDownLatch.countDown(); + } + + @Override + public void onMessage(WebSocket conn, String message) { + 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\"}"); + } + + @Override + public void onError(WebSocket conn, Exception ex) { + + ex.printStackTrace(); + fail("There should be no exception!"); + } + + @Override + public void onStart() {} + + + }; + + ws.setConnectionLostTimeout(30); + ws.start(); + } + + @Test + public void testAutoClient() throws Exception { + countServerDownLatch = new CountDownLatch(1); + + ManualClientEnd.start("http://localhost:" + port + "/"); + countServerDownLatch.await(); + + assertNotNull(ManualClientEnd.result(NotificationScheme.MANUAL_ALL_NOTIFICATIONS)); + assertTrue("Manual".equalsIgnoreCase(recvMsg)); + } + + @AfterClass + public static void successTests() throws InterruptedException, IOException { + ws.stop(); + } } -- cgit 1.2.3-korg