summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/websocketmanager2/provider/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/websocketmanager2/provider/src/test')
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/AkkaConfigTest.java4
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/UserScopeTest.java46
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsockerProviderTest.java46
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketClientTest.java48
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketMessageTest.java74
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketServerConnectTest.java79
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/resources/akka-cluster-local.cfg49
-rw-r--r--sdnr/wt/websocketmanager2/provider/src/test/resources/simplelogger.properties37
8 files changed, 375 insertions, 8 deletions
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/AkkaConfigTest.java b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/AkkaConfigTest.java
index 217088b33..2460ca42f 100644
--- a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/AkkaConfigTest.java
+++ b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/AkkaConfigTest.java
@@ -54,11 +54,11 @@ public class AkkaConfigTest {
assertTrue("only one node detected",config.getClusterConfig().getSeedNodes().size()>1);
}
- private String loadResourceContentAsString(String resourceName) throws URISyntaxException, FileNotFoundException, IOException {
+ public static String loadResourceContentAsString(String resourceName) throws URISyntaxException, FileNotFoundException, IOException {
StringBuilder sb = new StringBuilder();
- ClassLoader classLoader = getClass().getClassLoader();
+ ClassLoader classLoader = AkkaConfigTest.class.getClassLoader();
File file = Paths.get(classLoader.getResource(resourceName).toURI()).toFile();
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
String line = br.readLine();
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/UserScopeTest.java b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/UserScopeTest.java
new file mode 100644
index 000000000..52eedb994
--- /dev/null
+++ b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/UserScopeTest.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH 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==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.websocketmanager2.test;
+
+import static org.junit.Assert.*;
+
+import org.json.JSONArray;
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.utils.UserScopes;
+
+public class UserScopeTest {
+
+ private static final String SCOPE1 ="scope1";
+ private static final String SCOPE2 ="scope2";
+ private static final String SCOPE3 ="scope3";
+ private static final String SCOPE4 ="scope4";
+
+ @Test
+ public void test() {
+ UserScopes scopes1 = new UserScopes();
+ JSONArray json1=new JSONArray();
+ json1.put(SCOPE1);
+ json1.put(SCOPE2);
+ json1.put(SCOPE3);
+ scopes1.setScopes(json1);
+
+ assertTrue(scopes1.hasScope(SCOPE1));
+ assertFalse(scopes1.hasScope(SCOPE4));
+ }
+
+}
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsockerProviderTest.java b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsockerProviderTest.java
new file mode 100644
index 000000000..57d79602b
--- /dev/null
+++ b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsockerProviderTest.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH 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==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.websocketmanager2.test;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.WebSocketManagerProvider;
+import org.opendaylight.mdsal.binding.api.RpcProviderService;
+import org.osgi.service.http.HttpService;
+
+public class WebsockerProviderTest extends Mockito {
+
+ @Test
+ public void test() {
+ RpcProviderService rpcProviderServiceMock = mock(RpcProviderService.class);
+ HttpService httpService = mock(HttpService.class);
+
+ try (WebSocketManagerProvider provider = new WebSocketManagerProvider();) {
+ provider.setRpcProviderRegistry(rpcProviderServiceMock);
+ provider.init();
+ provider.onBindService(httpService);
+ provider.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+
+ }
+
+}
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketClientTest.java b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketClientTest.java
new file mode 100644
index 000000000..f56e1a686
--- /dev/null
+++ b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketClientTest.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH 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==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.websocketmanager2.test;
+
+import static org.junit.Assert.*;
+import org.java_websocket.handshake.ServerHandshake;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.websocket.SyncWebSocketClient;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.websocket.SyncWebSocketClient.WebsocketEventHandler;
+
+public class WebsocketClientTest extends Mockito {
+
+ @Test
+ public void test() {
+
+ WebsocketEventHandler clientHandlerMock = mock(WebsocketEventHandler.class);
+ ServerHandshake serverHandshakeMock = mock(ServerHandshake.class);
+
+ try {
+ SyncWebSocketClient client = new SyncWebSocketClient("url");
+
+ client.addEventHandler(clientHandlerMock);
+ client.onMessage("TestMessage");
+ client.onOpen(serverHandshakeMock);
+ client.close();
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Exception "+e.getMessage());
+ }
+ }
+
+}
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketMessageTest.java b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketMessageTest.java
new file mode 100644
index 000000000..f769dd40d
--- /dev/null
+++ b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketMessageTest.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt
+ * =================================================================================================
+ * Copyright (C) 2019 highstreet technologies GmbH 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==========================================================================
+ ******************************************************************************/
+package org.onap.ccsdk.features.sdnr.wt.websocketmanager2.test;
+
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.*;
+
+import java.net.InetSocketAddress;
+
+import org.eclipse.jetty.websocket.api.Session;
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.WebSocketManagerSocket;
+
+public class WebsocketMessageTest {
+
+ private static final String MSG1 = "{\"data\":\"scopes\",\"scopes\":[\"scope1\"]}";
+ private static final String MSG2 = "{}";
+ private static final String MSG3 = "{\""+WebSocketManagerSocket.KEY_NODENAME+":\"xy\","+WebSocketManagerSocket.KEY_EVENTTYPE+":\"zu\"}";
+ private static final String MSG4 = "{ Not correct messga}";
+
+ @Test
+ public void test() {
+ MyWebSocketManagerSocket socketToTest = new MyWebSocketManagerSocket();
+ Session sess = mock(Session.class);
+ InetSocketAddress remoteAdr = new InetSocketAddress("127.0.0.1", 4444);
+ when(sess.getRemoteAddress()).thenReturn(remoteAdr);
+ socketToTest.onWebSocketConnect(sess);
+ // message from client
+ socketToTest.setExpected(MSG1);
+ socketToTest.onWebSocketText(MSG1);
+ socketToTest.setExpected(MSG2);
+ socketToTest.onWebSocketText(MSG2);
+ socketToTest.setExpected(MSG3);
+ socketToTest.onWebSocketText(MSG3);
+ socketToTest.setExpected(MSG4);
+ socketToTest.onWebSocketText(MSG4);
+ socketToTest.onWebSocketClose(0, "by default");
+ sess.close();
+
+ }
+
+ private static class MyWebSocketManagerSocket extends WebSocketManagerSocket {
+
+ private String expected;
+
+ public MyWebSocketManagerSocket() {
+ }
+ void setExpected(String expected) {
+ this.expected = expected;
+ }
+
+ @Override
+ public void send(String msg) {
+ System.out.println(msg);
+ assertTrue("Expected '"+expected+"' answer '"+msg+"'", msg.contains(expected));
+ }
+
+ }
+}
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketServerConnectTest.java b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketServerConnectTest.java
index b380beca3..e59c343f2 100644
--- a/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketServerConnectTest.java
+++ b/sdnr/wt/websocketmanager2/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/websocketmanager2/test/WebsocketServerConnectTest.java
@@ -6,9 +6,9 @@
* =================================================================================================
* 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
@@ -17,17 +17,84 @@
******************************************************************************/
package org.onap.ccsdk.features.sdnr.wt.websocketmanager2.test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import com.google.common.util.concurrent.ListenableFuture;
+import java.util.concurrent.ExecutionException;
+import org.eclipse.jetty.websocket.api.WebSocketPolicy;
+import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
+import org.json.JSONObject;
import org.junit.Test;
import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.WebSocketManager;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.WebSocketManagerSocket;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.WebSocketManagerSocket.EventInputCallback;
+import org.onap.ccsdk.features.sdnr.wt.websocketmanager2.utils.AkkaConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventOutput;
+import org.opendaylight.yangtools.yang.common.RpcResult;
public class WebsocketServerConnectTest {
- @Test
- public void test() {
+ private static final String XML1 = "<notification></notification>";
+ private static final String NODENAME = "abc";
+ private static final String EVENTTYPE = "test";
+ protected boolean responseReceived;
- WebSocketManager servlet =new WebSocketManager();
+ @Test
+ public void test() {
+ responseReceived = false;
+ AkkaConfig config = null;
+ try {
+ // config = AkkaConfig.load("akka-singlenode.cfg", true);
+ config = AkkaConfig.loadContent(AkkaConfigTest.loadResourceContentAsString("akka-cluster-local.cfg"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("error loading singlenode config");
+ }
+ EventInputCallback callback = message -> {
+ JSONObject o = new JSONObject(message);
+ assertEquals("message which was pushed is not as expected", XML1,
+ o.get(WebSocketManagerSocket.KEY_XMLEVENT));
+ assertEquals("nodename which was pushed is not as expected", NODENAME,
+ o.get(WebSocketManagerSocket.KEY_NODENAME));
+ assertEquals("eventtype which was pushed is not as expected", EVENTTYPE,
+ o.get(WebSocketManagerSocket.KEY_EVENTTYPE));
+ responseReceived = true;
+ };
+ WebSocketManager servlet = new WebSocketManager(config, callback);
+ WebsocketEventInput input = mock(WebsocketEventInput.class);
+ when(input.getXmlEvent()).thenReturn(XML1);
+ when(input.getNodeName()).thenReturn(NODENAME);
+ when(input.getEventType()).thenReturn(EVENTTYPE);
+ ListenableFuture<RpcResult<WebsocketEventOutput>> result = servlet.websocketEvent(input);
+ assertNotNull(result);
+ RpcResult<WebsocketEventOutput> rpc = null;
+ try {
+ rpc = result.get();
+ } catch (InterruptedException | ExecutionException e) {
+ fail(e.getMessage());
+ }
+ assertNotNull(rpc);
+ assertTrue("rpc result was not successful", rpc.isSuccessful());
+ assertTrue(rpc.getResult().getResponse().equals("OK"));
+ while (!responseReceived) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ WebSocketServletFactory factory = mock(WebSocketServletFactory.class);
+ WebSocketPolicy wspolicy = mock(WebSocketPolicy.class);
+ when(factory.getPolicy()).thenReturn(wspolicy);
+ servlet.configure(factory);
+
+ }
- }
}
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/resources/akka-cluster-local.cfg b/sdnr/wt/websocketmanager2/provider/src/test/resources/akka-cluster-local.cfg
new file mode 100644
index 000000000..465dcad83
--- /dev/null
+++ b/sdnr/wt/websocketmanager2/provider/src/test/resources/akka-cluster-local.cfg
@@ -0,0 +1,49 @@
+odl-cluster-data {
+ akka {
+ remote {
+ artery {
+ enabled = off
+ canonical.hostname = "192.168.178.143"
+ canonical.port = 2550
+ }
+ netty.tcp {
+ hostname = "192.168.178.143"
+ port = 2550
+ }
+ # when under load we might trip a false positive on the failure detector
+ # transport-failure-detector {
+ # heartbeat-interval = 4 s
+ # acceptable-heartbeat-pause = 16s
+ # }
+ }
+
+ cluster {
+ # Remove ".tcp" when using artery.
+ seed-nodes = ["akka.tcp://opendaylight-cluster-data@192.168.178.142:2550",
+ "akka.tcp://opendaylight-cluster-data@192.168.178.143:2550",
+ "akka.tcp://opendaylight-cluster-data@192.168.178.144:2550",
+ "akka.tcp://opendaylight-cluster-data@192.168.178.145:2550"]
+
+ roles = ["member-2"]
+
+ }
+
+ persistence {
+ # By default the snapshots/journal directories live in KARAF_HOME. You can choose to put it somewhere else by
+ # modifying the following two properties. The directory location specified may be a relative or absolute path.
+ # The relative path is always relative to KARAF_HOME.
+
+ # snapshot-store.local.dir = "target/snapshots"
+ # journal.leveldb.dir = "target/journal"
+
+ journal {
+ leveldb {
+ # Set native = off to use a Java-only implementation of leveldb.
+ # Note that the Java-only version is not currently considered by Akka to be production quality.
+
+ # native = off
+ }
+ }
+ }
+ }
+}
diff --git a/sdnr/wt/websocketmanager2/provider/src/test/resources/simplelogger.properties b/sdnr/wt/websocketmanager2/provider/src/test/resources/simplelogger.properties
new file mode 100644
index 000000000..6f38b507a
--- /dev/null
+++ b/sdnr/wt/websocketmanager2/provider/src/test/resources/simplelogger.properties
@@ -0,0 +1,37 @@
+# SLF4J's SimpleLogger configuration file
+# Simple implementation of Logger that sends all enabled log messages, for all defined loggers, to System.err.
+
+# Default logging detail level for all instances of SimpleLogger.
+# Must be one of ("trace", "debug", "info", "warn", or "error").
+# If not specified, defaults to "info".
+org.slf4j.simpleLogger.defaultLogLevel=trace
+
+# Logging detail level for a SimpleLogger instance named "xxx.yyy.zzz".
+# Must be one of ("trace", "debug", "info", "warn", or "error").
+# If not specified, the default logging detail level is used.
+# org.slf4j.simpleLogger.log.xxx.yyy=debug
+org.slf4j.simpleLogger.log.org.onap.ccsdk.features.sdnr.wt.devicemanager=debug
+org.slf4j.simpleLogger.log.org.onap.ccsdk.features.sdnr.wt.devicemanager.base.internalTypes.Resources=info
+org.slf4j.simpleLogger.log.org.onap.ccsdk.features.sdnr.wt.devicemanager.base.netconf.container=trace
+
+# Set to true if you want the current date and time to be included in output messages.
+# Default is false, and will output the number of milliseconds elapsed since startup.
+#org.slf4j.simpleLogger.showDateTime=false
+
+# The date and time format to be used in the output messages.
+# The pattern describing the date and time format is the same that is used in java.text.SimpleDateFormat.
+# If the format is not specified or is invalid, the default format is used.
+# The default format is yyyy-MM-dd HH:mm:ss:SSS Z.
+#org.slf4j.simpleLogger.dateTimeFormat=yyyy-MM-dd HH:mm:ss:SSS Z
+
+# Set to true if you want to output the current thread name.
+# Defaults to true.
+#org.slf4j.simpleLogger.showThreadName=true
+
+# Set to true if you want the Logger instance name to be included in output messages.
+# Defaults to true.
+#org.slf4j.simpleLogger.showLogName=true
+
+# Set to true if you want the last component of the name to be included in output messages.
+# Defaults to false.
+#org.slf4j.simpleLogger.showShortLogName=false