summaryrefslogtreecommitdiffstats
path: root/dmaap-listener/src/test/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'dmaap-listener/src/test/java/org')
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientJdkTest.java100
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientTest.java97
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/SdncFlatJsonDmaapConsumerTest.java41
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestA1AdapterPolicyDmaapConsumer.java136
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestCMNotifyDmaapConsumer.java140
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDmaapListener.java52
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDummyDmaapConsumer.java26
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestOofPciPocDmaapConsumers.java314
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncDhcpEventConsumer.java139
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncEsrDmaapReceiver.java140
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncJsonDmaapConsumer.java138
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncLcmDmaapConsumer.java166
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncOdlConnection.java26
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncPserverDmaapReceiver.java186
-rw-r--r--dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncRANSliceDmaapConsumer.java166
15 files changed, 1867 insertions, 0 deletions
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientJdkTest.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientJdkTest.java
new file mode 100644
index 000000000..03f832801
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientJdkTest.java
@@ -0,0 +1,100 @@
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Properties;
+import org.junit.Test;
+
+public class MessageRouterHttpClientJdkTest {
+ public MessageRouterHttpClientJdk getClient() throws MalformedURLException {
+ Properties properties = new Properties();
+ properties.put("username", "my_user");
+ properties.put("password", "my_password");
+ properties.put("topic", "network_automation");
+ properties.put("group", "message_processors");
+ properties.put("host", "dmaap-server.com");
+ properties.put("id", "machine_one");
+ properties.put("fetchPause", "3000");
+ MessageRouterHttpClientJdk client = new MessageRouterHttpClientJdk();
+ client.processProperties(properties);
+ return client;
+ }
+
+ @Test
+ public void processMsg() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClientJdk client = getClient();
+ client.processMsg(null);
+ }
+
+ @Test
+ public void isReady() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClientJdk client = getClient();
+ assertEquals(true, client.isReady());
+ }
+
+ @Test
+ public void isRunning() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClientJdk client = getClient();
+ assertEquals(false, client.isRunning());
+ }
+
+ @Test
+ public void buidUrl() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClientJdk client = getClient();
+ assertEquals(new URL(
+ "http://dmaap-server.com/events/network_automation/message_processors/machine_one?timeout=15000"),
+ client.url);
+ }
+
+ @Test
+ public void buidUrlWithFilter() throws InvalidMessageException, MalformedURLException {
+ Properties properties = new Properties();
+ properties.put("username", "my_user");
+ properties.put("password", "my_password");
+ properties.put("topic", "network_automation");
+ properties.put("group", "message_processors");
+ properties.put("host", "dmaap-server.com");
+ properties.put("id", "machine_one");
+ properties.put("filter", "{\"class\":\"Contains\",\"string\":\"hello\",\"value\":\"world\"}");
+ properties.put("fetchPause", "3000");
+ MessageRouterHttpClientJdk client = new MessageRouterHttpClientJdk();
+ client.processProperties(properties);
+ assertEquals(new URL(
+ "http://dmaap-server.com/events/network_automation/message_processors/machine_one?timeout=15000&filter=%7B%22class%22%3A%22Contains%22%2C%22string%22%3A%22hello%22%2C%22value%22%3A%22world%22%7D"),
+ client.url);
+ }
+
+ @Test
+ public void buildAuthorizationString() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClientJdk client = getClient();
+ String authString = client.buildAuthorizationString("Hello", "World");
+ assertEquals("Basic SGVsbG86V29ybGQ=", authString);
+ }
+
+ @Test
+ public void clientFromProperties() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClientJdk client = new MessageRouterHttpClientJdk();
+ Properties props = new Properties();
+ client.init(props, "src/test/resources/dmaap-consumer-1.properties");
+ assertEquals(new URL(
+ "http://localhost:3904/events/ccsdk-topic/ccsdk-unittest/ccsdk_unittest?timeout=15000&limit=1000"),
+ client.url);
+ }
+
+ @Test
+ public void buildHttpURLConnection() throws InvalidMessageException, IOException {
+ MessageRouterHttpClientJdk client = getClient();
+ HttpURLConnection connection = client.buildHttpURLConnection();
+ assertEquals("GET", connection.getRequestMethod());
+ assertTrue(connection.getRequestProperties().get("Accept").contains("application/json"));
+ assertEquals(false, connection.getUseCaches());
+ Integer defaultConnectTimeout = Integer.valueOf(client.DEFAULT_CONNECT_TIMEOUT);
+ Integer defaultReadTimeout = Integer.valueOf(client.DEFAULT_READ_TIMEOUT);
+ assertEquals(defaultConnectTimeout.intValue(), connection.getConnectTimeout());
+ assertEquals(defaultReadTimeout.intValue(), connection.getReadTimeout());
+ }
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientTest.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientTest.java
new file mode 100644
index 000000000..7567e2a9e
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientTest.java
@@ -0,0 +1,97 @@
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertEquals;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Properties;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import org.junit.Test;
+
+public class MessageRouterHttpClientTest {
+
+ class MockMessageRouterHttpClient extends MessageRouterHttpClient {
+ protected Client getClient(Integer connectTimeoutSeconds, Integer readTimeoutMinutes) {
+ ClientBuilder clientBuilder = ClientBuilder.newBuilder();
+ return clientBuilder.build();
+ }
+ }
+
+ public MessageRouterHttpClient getClient() {
+ Properties properties = new Properties();
+ properties.put("username", "my_user");
+ properties.put("password", "my_password");
+ properties.put("topic", "network_automation");
+ properties.put("group", "message_processors");
+ properties.put("host", "dmaap-server.com");
+ properties.put("id", "machine_one");
+ properties.put("fetch", "machine_one");
+
+ MockMessageRouterHttpClient client = new MockMessageRouterHttpClient();
+ client.processProperties(properties);
+ return client;
+ }
+
+ @Test
+ public void processMsg() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClient client = getClient();
+ client.processMsg(null);
+ }
+
+ @Test
+ public void isReady() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClient client = getClient();
+ assertEquals(true, client.isReady());
+ }
+
+ @Test
+ public void isRunning() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClient client = getClient();
+ assertEquals(false, client.isRunning());
+ }
+
+ @Test
+ public void buidUrl() throws InvalidMessageException, MalformedURLException, URISyntaxException {
+ MessageRouterHttpClient client = getClient();
+ assertEquals(new URI(
+ "http://dmaap-server.com/events/network_automation/message_processors/machine_one?timeout=15000"),
+ client.uri);
+ }
+
+ @Test
+ public void buidUrlWithFilter() throws InvalidMessageException, MalformedURLException, URISyntaxException {
+ Properties properties = new Properties();
+ properties.put("username", "my_user");
+ properties.put("password", "my_password");
+ properties.put("topic", "network_automation");
+ properties.put("group", "message_processors");
+ properties.put("host", "dmaap-server.com");
+ properties.put("id", "machine_one");
+ properties.put("filter", "{\"class\":\"Contains\",\"string\":\"hello\",\"value\":\"world\"}");
+ properties.put("fetchPause", "3000");
+ MessageRouterHttpClient client = new MockMessageRouterHttpClient();
+ client.processProperties(properties);
+ assertEquals(new URI(
+ "http://dmaap-server.com/events/network_automation/message_processors/machine_one?timeout=15000&filter=%7B%22class%22%3A%22Contains%22%2C%22string%22%3A%22hello%22%2C%22value%22%3A%22world%22%7D"),
+ client.uri);
+ }
+
+ @Test
+ public void buildAuthorizationString() throws InvalidMessageException, MalformedURLException {
+ MessageRouterHttpClient client = getClient();
+ String authString = client.buildAuthorizationString("Hello", "World");
+ assertEquals("Basic SGVsbG86V29ybGQ=", authString);
+ }
+
+ @Test
+ public void clientFromProperties() throws InvalidMessageException, MalformedURLException, URISyntaxException {
+ MessageRouterHttpClient client = new MockMessageRouterHttpClient();
+ Properties props = new Properties();
+ client.init(props, "src/test/resources/dmaap-consumer-1.properties");
+ assertEquals(new URI(
+ "http://localhost:3904/events/ccsdk-topic/ccsdk-unittest/ccsdk_unittest?timeout=15000&limit=1000"),
+ client.uri);
+ }
+
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/SdncFlatJsonDmaapConsumerTest.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/SdncFlatJsonDmaapConsumerTest.java
new file mode 100644
index 000000000..d1aee634d
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/SdncFlatJsonDmaapConsumerTest.java
@@ -0,0 +1,41 @@
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.*;
+
+
+import java.io.File;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class SdncFlatJsonDmaapConsumerTest {
+
+ private static final String DMAAP_LISTENER_PROPERTIES = "dmaap-listener.properties";
+ private static final String DMAAP_LISTENER_PROPERTIES_DIR = "src/test/resources";
+
+ SdncFlatJsonDmaapConsumer consumer;
+
+ @Before
+ public void setUp() throws Exception {
+ consumer = new SdncFlatJsonDmaapConsumer();
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgString_NullInvalidMessageException() throws InvalidMessageException {
+ // expected = InvalidMessageException: Null message
+ consumer.processMsg(null);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgString_UnformatedMessageInvalidMessageException() throws InvalidMessageException {
+ // expected = InvalidMessageException: Cannot parse json object
+ consumer.processMsg("TESTING", null);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testing()throws InvalidMessageException {
+ // Expected = InvalidMessageException: Unable to process message - cannot load field mappings
+ String msg = "{\"test\":\"string\"}";
+ consumer.processMsg(msg, null);
+ }
+} \ No newline at end of file
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestA1AdapterPolicyDmaapConsumer.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestA1AdapterPolicyDmaapConsumer.java
new file mode 100644
index 000000000..8b7044f69
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestA1AdapterPolicyDmaapConsumer.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class TestA1AdapterPolicyDmaapConsumer {
+ private static final String a1AdapterInput = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIver\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n },\n" +
+ " \"Action\": \"getHealthCheck\",\n" +
+ " \"Payload\": {\n" +
+ " \"near-rt-ric-id\": \"near-RT-ric1\",\n" +
+ " \"policy-type-id\": \"20000\",\n" +
+ " \"description\": \"parameters to control policy \",\n" +
+ " \"name\": \"admission_control_policy\",\n" +
+ " \"policy-type\": \"object\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"getHealthCheck\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ " }\n" +
+ "}";
+
+ @Test
+ public void test() throws Exception {
+ Properties props = new Properties();
+
+ A1AdapterPolicyDmaapConsumer consumer = new A1AdapterPolicyDmaapConsumer();
+ InputStream propStr = TestA1AdapterPolicyDmaapConsumer.class.getResourceAsStream("/dmaap-consumer-a1Adapter-policy-1.properties");
+ props.load(propStr);
+ consumer.init(props, "src/test/resources/dmaap-consumer-1.properties");
+ consumer.processMsg(a1AdapterInput);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgNullMessage() throws Exception {
+ A1AdapterPolicyDmaapConsumer consumer = new A1AdapterPolicyDmaapConsumer();
+ consumer.processMsg(null);
+ }
+
+ @Test
+ public void testProcessMsgMissingBody() throws Exception {
+ String msg = "{\n" +
+ " \"body1\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIver\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n },\n" +
+ " \"Action\": \"getHealthCheck\",\n" +
+ " \"Payload\": {\n" +
+ " \"near-rt-ric-id\": \"near-RT-ric1\",\n" +
+ " \"policy-type-id\": \"20000\",\n" +
+ " \"description\": \"parameters to control policy \",\n" +
+ " \"name\": \"admission_control_policy\",\n" +
+ " \"policy-type\": \"object\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"getHealthCheck\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ " }\n" +
+ "}";
+
+ A1AdapterPolicyDmaapConsumer consumer = new A1AdapterPolicyDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+ @Test
+ public void testProcessMsgInvalidRPC() throws Exception {
+ String msg = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIver\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n },\n" +
+ " \"Action\": \"getHealthCheck\",\n" +
+ " \"Payload\": {\n" +
+ " \"near-rt-ric-id\": \"near-RT-ric1\",\n" +
+ " \"policy-type-id\": \"20000\",\n" +
+ " \"description\": \"parameters to control policy \",\n" +
+ " \"name\": \"admission_control_policy\",\n" +
+ " \"policy-type\": \"object\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name1\": \"getHealthCheck\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ " }\n" +
+ "}";
+
+ A1AdapterPolicyDmaapConsumer consumer = new A1AdapterPolicyDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestCMNotifyDmaapConsumer.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestCMNotifyDmaapConsumer.java
new file mode 100644
index 000000000..122a6d40b
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestCMNotifyDmaapConsumer.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+
+public class TestCMNotifyDmaapConsumer {
+ private static final String cMNotifyInput = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIver\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n },\n" +
+ " \"Action\": \"nbrlist-change-notification\",\n" +
+ " \"Payload\": {\n" +
+ " \"fap-service-number-of-entries-changed\": 1,\n" +
+ " \"fap-service\": [{ \"alias\": \n" +
+ " \"Chn0001\", \"cid\": \"Chn0001\", \"lte-cell-number-of-entries\": 1,\n" +
+ " \"lte-ran-neighbor-list-in-use-lte-cell-changed\": \n" +
+ " [{ \"plmnid\": \"ran-1\", \"cid\": \"Chn0002\", \"phy-cell-id\": 4,\n" +
+ " \"pnf-name\": \"ncserver1\",\n" +
+ " \"blacklisted\": false }] }] }\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"nbrlist-change-notification\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}";
+
+
+ @Test
+ public void test() throws Exception {
+ Properties props = new Properties();
+
+ CMNotifyDmaapConsumer consumer = new CMNotifyDmaapConsumer();
+ InputStream propStr = TestCMNotifyDmaapConsumer.class.getResourceAsStream("/dmaap-consumer-cMNotify-1.properties");
+ props.load(propStr);
+ consumer.init(props, "src/test/resources/dmaap-consumer-1.properties");
+ consumer.processMsg(cMNotifyInput);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgNullMessage() throws Exception {
+ CMNotifyDmaapConsumer consumer = new CMNotifyDmaapConsumer();
+ consumer.processMsg(null);
+ }
+
+ @Test
+ public void testProcessMsgMissingBody() throws Exception {
+ String msg = "{\n" +
+ " \"bodyTest\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIver\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n },\n" +
+ " \"Action\": \"nbrlist-change-notification\",\n" +
+ " \"Payload\": {\n" +
+ " \"fap-service-number-of-entries-changed\": 1,\n" +
+ " \"fap-service\": [{ \"alias\": \n" +
+ " \"Chn0001\", \"cid\": \"Chn0001\", \"lte-cell-number-of-entries\": 1,\n" +
+ " \"lte-ran-neighbor-list-in-use-lte-cell-changed\": \n" +
+ " [{ \"plmnid\": \"ran-1\", \"cid\": \"Chn0002\", \"phy-cell-id\": 4,\n" +
+ " \"pnf-name\": \"ncserver1\",\n" +
+ " \"blacklisted\": false }] }] }\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"nbrlist-change-notification\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}";
+ CMNotifyDmaapConsumer consumer = new CMNotifyDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+ @Test
+ public void testProcessMsgInvalidRPC() throws Exception {
+ String msg = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIver\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n },\n" +
+ " \"Action\": \"nbrlist-change-notification\",\n" +
+ " \"Payload\": {\n" +
+ " \"fap-service-number-of-entries-changed\": 1,\n" +
+ " \"fap-service\": [{ \"alias\": \n" +
+ " \"Chn0001\", \"cid\": \"Chn0001\", \"lte-cell-number-of-entries\": 1,\n" +
+ " \"lte-ran-neighbor-list-in-use-lte-cell-changed\": \n" +
+ " [{ \"plmnid\": \"ran-1\", \"cid\": \"Chn0002\", \"phy-cell-id\": 4,\n" +
+ " \"pnf-name\": \"ncserver1\",\n" +
+ " \"blacklisted\": false }] }] }\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-nameTest\": \"nbrlist-change-notification\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}";
+
+ CMNotifyDmaapConsumer consumer = new CMNotifyDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDmaapListener.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDmaapListener.java
new file mode 100644
index 000000000..943ef0204
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDmaapListener.java
@@ -0,0 +1,52 @@
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.*;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TestDmaapListener {
+
+ private static final String DMAAP_LISTENER_PROPERTIES = "dmaap-listener.properties";
+ private static final String DMAAP_LISTENER_PROPERTIES_DIR = "src/test/resources";
+
+ private static final Logger LOG = LoggerFactory.getLogger(TestDmaapListener.class);
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @Test
+ public void test() {
+ Properties properties = new Properties();
+ String propFileName = DMAAP_LISTENER_PROPERTIES;
+ String propPath = null;
+ String propDir = DMAAP_LISTENER_PROPERTIES_DIR;
+
+ List<SdncDmaapConsumer> consumers = new LinkedList<>();
+
+
+ propPath = propDir + "/" + propFileName;
+
+ if (propPath != null) {
+ properties = DmaapListener.loadProperties(propPath, properties);
+
+ String subscriptionStr = properties.getProperty("subscriptions");
+
+ boolean threadsRunning = false;
+
+ LOG.debug("Dmaap subscriptions : " + subscriptionStr);
+
+ if (subscriptionStr != null) {
+ threadsRunning = DmaapListener.handleSubscriptions(subscriptionStr, propDir, properties, consumers);
+ }
+ }
+ }
+
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDummyDmaapConsumer.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDummyDmaapConsumer.java
new file mode 100644
index 000000000..47330c622
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDummyDmaapConsumer.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+public class TestDummyDmaapConsumer {
+ private static final String DMAAP_LISTENER_PROPERTIES = "dmaap-listener.properties";
+ private static final String DMAAP_LISTENER_PROPERTIES_DIR = "src/test/resources";
+
+ DummyDmaapConsumer consumer = new DummyDmaapConsumer();
+
+ @Test
+ public void testProcessMsg(){
+ consumer.processMsg(null);
+ }
+
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestOofPciPocDmaapConsumers.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestOofPciPocDmaapConsumers.java
new file mode 100644
index 000000000..cd2ea6eb0
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestOofPciPocDmaapConsumers.java
@@ -0,0 +1,314 @@
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Properties;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class TestOofPciPocDmaapConsumers {
+
+ private static final String pciChangesFromPolicyToSDNRInput = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIVer\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n" +
+ " },\n" +
+ " \"Action\": \"ModifyConfig\",\n" +
+ " \"Payload\": \"{\\\"Configurations\\\":[{\\\"data\\\":{\\\"FAPService\\\":{\\\"alias\\\":\\\"Chn0330\\\",\\\"X0005b9Lte\\\":{\\\"phyCellIdInUse\\\":6,\\\"pnfName\\\":\\\"ncserver23\\\"},\\\"CellConfig\\\":{\\\"LTE\\\":{\\\"RAN\\\":{\\\"Common\\\":{\\\"CellIdentity\\\":\\\"Chn0330\\\"}}}}}}},{\\\"data\\\":{\\\"FAPService\\\":{\\\"alias\\\":\\\"Chn0331\\\",\\\"X0005b9Lte\\\":{\\\"phyCellIdInUse\\\":7,\\\"pnfName\\\":\\\"ncserver23\\\"},\\\"CellConfig\\\":{\\\"LTE\\\":{\\\"RAN\\\":{\\\"Common\\\":{\\\"CellIdentity\\\":\\\"Chn0331\\\"}}}}}}}]}\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"modifyconfig\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}";
+
+ private static final String anrChangesFromPolicyToSDNRInput = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIVer\": \"1.0\",\n" +
+ " \"RequestID\": \"722ee65a-8afd-48df-bf57-c152ae45bacc\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n" +
+ " },\n" +
+ "\"Action\": \"ModifyConfigANR\",\n" +
+ " \"Payload\": \"{ \\\"Configurations\\\":[ { \\\"data\\\":{ \\\"FAPService\\\":{ \\\"alias\\\":\\\"Cell1\\\", \\\"CellConfig\\\":{ \\\"LTE\\\":{ \\\"RAN\\\":{ \\\"Common\\\":{ \\\"CellIdentity\\\":\\\"1\\\" }, \\\"NeighborListInUse\\\" : { \\\"LTECellNumberOfEntries\\\" : \\\"1\\\" , \\\"LTECell\\\" : [{ \\\"PLMNID\\\" :\\\"plmnid1\\\", \\\"CID\\\":\\\"Chn0001\\\", \\\"PhyCellID\\\":\\\"3\\\", \\\"PNFName\\\":\\\"ncserver01\\\", \\\"Blacklisted\\\":\\\"false\\\"}] } } } } } } } ] }\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"modifyconfiganr\",\n" +
+ " \"correlation-id\": \"722ee65a-8afd-48df-bf57-c152ae45bacc-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}\n" +
+ "";
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ /* ---------- PCI Changes DMAAP messages test cases ------------------- */
+
+ @Test
+ public void testPCIChangesDmaapRPCMessageBodyResponse() throws Exception {
+ Properties props = new Properties();
+
+ ObjectMapper oMapper = new ObjectMapper();
+ JsonNode pciChangesRootNode = oMapper.readTree(pciChangesFromPolicyToSDNRInput);
+ JsonNode body = pciChangesRootNode.get("body");
+ JsonNode input = body.get("input");
+ JsonNode payload = input.get("Payload");
+ String payloadText = payload.asText();
+ JsonNode configurationsJsonNode = oMapper.readTree(payloadText);
+
+ String rpcMsgbody = new OofPciPocDmaapConsumers(props).publish("src/main/resources/anr-pci-changes-from-policy-to-sdnr.vt", pciChangesFromPolicyToSDNRInput,configurationsJsonNode, true, false);
+
+ JsonNode rootNode;
+ try {
+ rootNode = oMapper.readTree(rpcMsgbody);
+ } catch (Exception e) {
+ throw new InvalidMessageException("Cannot parse json object", e);
+ }
+
+ assertTrue(rootNode.get("input").get("module-name") != null);
+ assertTrue(rootNode.get("input").get("rpc-name") != null);
+ assertTrue(rootNode.get("input").get("mode") != null);
+ assertTrue(rootNode.get("input").get("sli-parameter") != null);
+
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testPCIChangesDmaapProcessMsgNullMessage() throws Exception {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg(null);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testPCIChangesDmaapProcessMsgInvalidMessage() throws Exception {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg("test");
+ }
+
+ @Test
+ public void testPCIChangesDmaapProcessMsgMissingActionHeader() throws Exception {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg("{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIVer\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n" +
+ " },\n" +
+ " \"RenamedAction\": \"ModifyConfig\",\n" +
+ " \"Payload\": {\n" +
+ " \"Configurations \": {\n" +
+ " \"data \": {\n" +
+ " \"FAPService \": {\n" +
+ " \"alias\": \"Chn0330\",\n" +
+ " \"X0005b9Lte\": {\n" +
+ " \"phyCellIdInUse\": 6,\n" +
+ " \"pnfName\": \"ncserver23\"\n" +
+ " },\n" +
+ " \"CellConfig\": {\n" +
+ " \"LTE\": {\n" +
+ " \"RAN\": {\n" +
+ " \"Common\": {\n" +
+ " \"CellIdentity\": \"Chn0330\"\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ "\n" +
+ " }\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"modifyconfig\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}");
+ }
+
+ @Test
+ public void testPCIChangesDmaapProcessMsgInvalidPayloadConfigurations() throws Exception {
+ String msg = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIVer\": \"1.0\",\n" +
+ " \"RequestID\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n" +
+ " },\n" +
+ " \"Action\": \"ModifyConfig\",\n" +
+ " \"Payload\": {\n" +
+ " \"Configurations \": {\n" +
+ " \"data \": {\n" +
+ " \"FAPService \": {\n" +
+ " \"alias\": \"Chn0330\",\n" +
+ " \"X0005b9Lte\": {\n" +
+ " \"phyCellIdInUse\": 6,\n" +
+ " \"pnfName\": \"ncserver23\"\n" +
+ " },\n" +
+ " \"CellConfig\": {\n" +
+ " \"LTE\": {\n" +
+ " \"RAN\": {\n" +
+ " \"Common\": {\n" +
+ " \"CellIdentity\": \"Chn0330\"\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ " }\n" +
+ "\n" +
+ " }\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"modifyconfig\",\n" +
+ " \"correlation-id\": \"9d2d790e-a5f0-11e8-98d0-529269fb1459-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}";
+
+ try {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg(msg);
+
+ } catch (final InvalidMessageException e) {
+ final String errorMsg = "Configurations is not of Type Array. Could not read configuration changes";
+ assertEquals(errorMsg, e.getMessage());
+ }
+ }
+
+ /* ---------- PCI Changes DMAAP messages test cases ------------------- */
+
+ /* ---------- ANR Changes DMAAP messages test cases ------------------- */
+
+ @Test
+ public void testANRChangesDmaapRPCMessageBodyResponse() throws Exception {
+ Properties props = new Properties();
+
+ ObjectMapper oMapper = new ObjectMapper();
+ JsonNode anrChangesRootNode = oMapper.readTree(anrChangesFromPolicyToSDNRInput);
+ JsonNode body = anrChangesRootNode.get("body");
+ JsonNode input = body.get("input");
+ JsonNode payload = input.get("Payload");
+ String payloadText = payload.asText();
+ JsonNode configurationsJsonNode = oMapper.readTree(payloadText);
+ JsonNode configurations = configurationsJsonNode.get("Configurations");
+
+ for(JsonNode dataNode:configurations) {
+ String rpcMsgbody = new OofPciPocDmaapConsumers(props).publish("src/main/resources/anr-pci-changes-from-policy-to-sdnr.vt", anrChangesFromPolicyToSDNRInput,dataNode, false, true);
+
+ JsonNode rootNode;
+ try {
+ rootNode = oMapper.readTree(rpcMsgbody);
+ } catch (Exception e) {
+ throw new InvalidMessageException("Cannot parse json object", e);
+ }
+
+ assertTrue(rootNode.get("input").get("module-name") != null);
+ assertTrue(rootNode.get("input").get("rpc-name") != null);
+ assertTrue(rootNode.get("input").get("mode") != null);
+ assertTrue(rootNode.get("input").get("sli-parameter") != null);
+ }
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testANRChangesDmaapProcessMsgNullMessage() throws Exception {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg(null);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testANRChangesDmaapProcessMsgInvalidMessage() throws Exception {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg("test");
+ }
+
+ @Test
+ public void testANRChangesDmaapProcessMsgMissingActionHeader() throws Exception {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg("{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIVer\": \"1.0\",\n" +
+ " \"RequestID\": \"722ee65a-8afd-48df-bf57-c152ae45bacc\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n" +
+ " },\n" +
+ "\"NoAction\": \"ModifyConfigANR\",\n" +
+ " \"Payload\": \"{ \\\"Configurations\\\":[ { \\\"data\\\":{ \\\"FAPService\\\":{ \\\"alias\\\":\\\"Cell1\\\", \\\"CellConfig\\\":{ \\\"LTE\\\":{ \\\"RAN\\\":{ \\\"Common\\\":{ \\\"CellIdentity\\\":\\\"1\\\" }, \\\"NeighborListInUse\\\" : { \\\"LTECellNumberOfEntries\\\" : \\\"1\\\" , \\\"LTECell\\\" : [{ \\\"PLMNID\\\" :\\\"plmnid1\\\", \\\"CID\\\":\\\"Chn0001\\\", \\\"PhyCellID\\\":\\\"3\\\", \\\"PNFName\\\":\\\"ncserver01\\\", \\\"Blacklisted\\\":\\\"false\\\"}] } } } } } } } ] }\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"modifyconfiganr\",\n" +
+ " \"correlation-id\": \"722ee65a-8afd-48df-bf57-c152ae45bacc-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}\n" +
+ "");
+ }
+
+ @Test
+ public void testANRChangesDmaapProcessMsgInvalidPayloadConfigurations() throws Exception {
+ String msg = "{\n" +
+ " \"body\": {\n" +
+ " \"input\": {\n" +
+ " \"CommonHeader\": {\n" +
+ " \"TimeStamp\": \"2018-11-30T09:13:37.368Z\",\n" +
+ " \"APIVer\": \"1.0\",\n" +
+ " \"RequestID\": \"722ee65a-8afd-48df-bf57-c152ae45bacc\",\n" +
+ " \"SubRequestID\": \"1\",\n" +
+ " \"RequestTrack\": {},\n" +
+ " \"Flags\": {}\n" +
+ " },\n" +
+ "\"Action\": \"ModifyConfigANR\",\n" +
+ " \"Payload\": \"{ \\\"Configurations\\\":{ { \\\"data\\\":{ \\\"FAPService\\\":{ \\\"alias\\\":\\\"Cell1\\\", \\\"CellConfig\\\":{ \\\"LTE\\\":{ \\\"RAN\\\":{ \\\"Common\\\":{ \\\"CellIdentity\\\":\\\"1\\\" }, \\\"NeighborListInUse\\\" : { \\\"LTECellNumberOfEntries\\\" : \\\"1\\\" , \\\"LTECell\\\" : [{ \\\"PLMNID\\\" :\\\"plmnid1\\\", \\\"CID\\\":\\\"Chn0001\\\", \\\"PhyCellID\\\":\\\"3\\\", \\\"PNFName\\\":\\\"ncserver01\\\", \\\"Blacklisted\\\":\\\"false\\\"}} } } } } } } } ] }\"\n" +
+ " }\n" +
+ " },\n" +
+ " \"version\": \"1.0\",\n" +
+ " \"rpc-name\": \"modifyconfiganr\",\n" +
+ " \"correlation-id\": \"722ee65a-8afd-48df-bf57-c152ae45bacc-1\",\n" +
+ " \"type\": \"request\"\n" +
+ "}\n" +
+ "";
+
+ try {
+ OofPciPocDmaapConsumers consumer = new OofPciPocDmaapConsumers();
+ consumer.processMsg(msg);
+
+ } catch (final InvalidMessageException e) {
+ final String errorMsg = "Cannot parse payload value";
+ assertEquals(errorMsg, e.getMessage());
+ }
+ }
+
+ /* ---------- ANR Changes DMAAP messages test cases ------------------- */
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncDhcpEventConsumer.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncDhcpEventConsumer.java
new file mode 100644
index 000000000..04f098ade
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncDhcpEventConsumer.java
@@ -0,0 +1,139 @@
+/**
+ *
+ */
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.*;
+
+import java.io.InputStream;
+import java.net.URL;
+import java.sql.SQLException;
+import java.util.Properties;
+
+import javax.sql.rowset.CachedRowSet;
+
+import org.junit.After;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import ch.vorburger.mariadb4j.DB;
+import ch.vorburger.mariadb4j.DBConfigurationBuilder;
+
+/**
+ * @author dt5972
+ *
+ */
+public class TestSdncDhcpEventConsumer {
+
+ private static final Logger LOG = LoggerFactory.getLogger(TestSdncDhcpEventConsumer.class);
+
+
+ private static final String DHCP_MAP_TABLE = "CREATE TABLE `DHCP_MAP` (\n" +
+ " mac_addr varchar(80) NOT NULL,\n" +
+ " ip_addr varchar(80),\n" +
+ " PRIMARY KEY(`mac_addr`)\n" +
+ ")";
+
+
+
+ private static final String VALID_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
+ "\"macaddr\":\"fa:16:3e:8f:ea:68\"," +
+ "\"yiaddr\":\"10.3.0.2\"}";
+ private static final String SECOND_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
+ "\"macaddr\":\"fa:16:3e:8f:ea:68\"," +
+ "\"yiaddr\":\"10.3.0.3\"}";
+ private static final String MISSING_MSG_NAME_DHCP_EVENT = "{\"macaddr\":\"fa:16:3e:8f:ea:68\"," +
+ "\"yiaddr\":\"10.3.0.2\"}";
+ private static final String MISSING_MAC_ADDR_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
+ "\"yiaddr\":\"10.3.0.2\"}";
+ private static final String MISSING_IP_ADDR_DHCP_EVENT = "{\"msg_name\":\"DHCPACK\"," +
+ "\"macaddr\":\"fa:16:3e:8f:ea:68\"}";
+
+ private static final String GET_DHCP_MAPPING = "SELECT * FROM DHCP_MAP WHERE mac_addr = 'fa:16:3e:8f:ea:68'";
+
+
+ private static DBResourceManager dblibSvc;
+ private static DB db;
+
+ private static SdncDhcpEventConsumer consumer;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+
+ LOG.debug("Setting up DHCP event testing");
+
+ InputStream propStr = TestSdncDhcpEventConsumer.class.getResourceAsStream("/dblib.properties");
+
+ Properties props = new Properties();
+
+ props.load(propStr);
+
+
+ // Start MariaDB4j database
+
+ LOG.debug("Starting MariaDB instance");
+ DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder();
+ config.setPort(0); // 0 => autom. detect free port
+ db = DB.newEmbeddedDB(config.build());
+ db.start();
+
+
+ // Override jdbc URL and database name
+ props.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
+ props.setProperty("org.onap.ccsdk.sli.jdbc.url", config.getURL("test"));
+
+
+ // Create dblib connection
+
+ LOG.debug("Getting DBResourceManager instance");
+ dblibSvc = new DBResourceManager(props);
+
+ // Create DHCP_MAP table
+ dblibSvc.writeData(DHCP_MAP_TABLE, null, null);
+
+ consumer = new SdncDhcpEventConsumer();
+ consumer.setJdbcDataSource(dblibSvc);
+ LOG.debug("Setup complete");
+
+ }
+
+
+ @Test
+ public void testValid() throws InvalidMessageException, SQLException {
+ consumer.processMsg(VALID_DHCP_EVENT);
+ consumer.processMsg(SECOND_DHCP_EVENT);
+
+ CachedRowSet results = dblibSvc.getData(GET_DHCP_MAPPING, null, null);
+
+ if (!results.next()) {
+ fail("Test query ["+GET_DHCP_MAPPING+"] returned no data");
+ } else {
+ String ipAddr = results.getString("ip_addr");
+ if (!"10.3.0.3".equals(ipAddr)) {
+ fail("Expecting ipAddr to be 10.3.0.3, but was "+ipAddr);
+ }
+ }
+
+ }
+
+ @Test (expected = InvalidMessageException.class)
+ public void testMissingMsgName() throws InvalidMessageException {
+ consumer.processMsg(MISSING_MSG_NAME_DHCP_EVENT);
+ }
+
+ @Test (expected = InvalidMessageException.class)
+ public void testMissingMacAddress() throws InvalidMessageException {
+ consumer.processMsg(MISSING_MAC_ADDR_DHCP_EVENT);
+ }
+
+ @Test (expected = InvalidMessageException.class)
+ public void testMissingIpAddress() throws InvalidMessageException {
+ consumer.processMsg(MISSING_IP_ADDR_DHCP_EVENT);
+ }
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncEsrDmaapReceiver.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncEsrDmaapReceiver.java
new file mode 100644
index 000000000..623c96426
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncEsrDmaapReceiver.java
@@ -0,0 +1,140 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - CCSDK
+ * ================================================================================
+ * Copyright (C) 2018 Huawei Technologies Co., Ltd. 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.sli.northbound.dmaapclient;
+
+import org.apache.commons.io.FileUtils;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Properties;
+
+public class TestSdncEsrDmaapReceiver {
+ static String aaiInput = "{\"cambria.partition\":\"AAI\",\n" +
+ " \"event-header\":\n" +
+ " {\n" +
+ " \"severity\":\"NORMAL\",\n" +
+ " \"entity-type\":\"esr-thirdparty-sdnc\",\n" +
+ " \"top-entity-type\":\"esr-thirdparty-sdnc\",\n" +
+ " \"entity-link\":\"aai/v11/external-system/esr-thirdparty-sdnc-list/esr-thirdparty-sdnc/IP-WAN-Controller-1\",\n" +
+ " \"event-type\":\"AAI-EVENT\",\n" +
+ " \"domain\":\"dev\",\n" +
+ " \"action\":\"UPDATE\",\n" +
+ " \"sequence-number\":\"0\",\n" +
+ " \"id\":\"bf4df797-759a-4684-a63c-393b7d40ed55\",\n" +
+ " \"source-name\":\"postman\",\n" +
+ " \"version\":\"v11\",\n" +
+ " \"timestamp\":\"20180104-09:57:58:721\"\n" +
+ " },\n" +
+ " \"entity\":\n" +
+ " {\n" +
+ " \"thirdparty-sdnc-id\":\"IP-WAN-Controller-1\",\n" +
+ " \"relationship-list\":\n" +
+ " {\n" +
+ " \"relationship\":\n" +
+ " [\n" +
+ " {\n" +
+ " \"related-to\":\"pnf\",\n" +
+ " \"relationship-data\":\n" +
+ " [\n" +
+ " {\n" +
+ " \"relationship-value\":\"a8098c1a-f86e-11da-bd1a-00112444be1e\",\n" +
+ " \"relationship-key\":\"pnf.pnf-name\"\n" +
+ " }\n" +
+ " ],\n" +
+ " \"related-link\":\"aai/v11/network/pnfs/pnf/a8098c1a-f86e-11da-bd1a-00112444be1e\"\n" +
+ " }\n" +
+ " ]\n" +
+ " },\n" +
+ " \"resource-version\":\"1515059878654\",\n" +
+ " \"location\":\"Core\",\n" +
+ " \"product-name\":\"AC-WAN\",\n" +
+ " \"esr-system-info-list\":\n" +
+ " {\"esr-system-info\":\n" +
+ " [\n" +
+ " {\n" +
+ " \"esr-system-info-id\":\"IP-WAN-Controller-ESR-1\",\n" +
+ " \"system-type\":\"example-system-type-val-12078\",\n" +
+ " \"service-url\":\"https://182.2.61.24:18002\",\n" +
+ " \"ssl-cacert\":\"example-ssl-cacert-val-20589\",\n" +
+ " \"type\":\"WAN\",\n" +
+ " \"ssl-insecure\":true,\n" +
+ " \"system-status\":\"example-system-status-val-23435\",\n" +
+ " \"version\":\"V3R1\",\n" +
+ " \"passive\":true,\n" +
+ " \"password\":\"Admin@12345\",\n" +
+ " \"protocol\":\"RESTCONF\",\n" +
+ " \"ip-address\":\"182.2.61.24\",\n" +
+ " \"cloud-domain\":\"example-cloud-domain-val-76077\",\n" +
+ " \"user-name\":\"admin\",\n" +
+ " \"system-name\":\"IP-WAN-Controller\",\n" +
+ " \"port\":\"18002\",\n" +
+ " \"vendor\":\"IP-WAN\",\n" +
+ " \"resource-version\":\"1515059878666\",\n" +
+ " \"remote-path\":\"example-remotepath-val-5833\",\n" +
+ " \"default-tenant\":\"example-default-tenant-val-71148\"\n" +
+ " }\n" +
+ " ]\n" +
+ " }\n" +
+ " }\n" +
+ " }";
+
+ @Test
+ public void testProcessMsgInvalidEventType() throws Exception {
+ String DMAAPLISTENERROOT = "DMAAPLISTENERROOT";
+ File directory = new File("lib");
+
+ if (! directory.exists()){
+ directory.mkdir();
+ }
+
+ File source = new File("src/main/resources");
+ File dest = new File("lib/");
+ try {
+ FileUtils.copyDirectory(source, dest);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ Map<String, String> env = System.getenv();
+ Class<?> cl = env.getClass();
+ Field field = cl.getDeclaredField("m");
+ field.setAccessible(true);
+ Map<String, String> writableEnv = (Map<String, String>) field.get(env);
+ writableEnv.put(DMAAPLISTENERROOT, ".");
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to set environment variable", e);
+ }
+ Properties props = new Properties();
+ InputStream propStr = TestSdncEsrDmaapReceiver.class.getResourceAsStream("/dmaap-consumer-esrsysteminfo.properties");
+
+ props.load(propStr);
+
+ SdncAaiDmaapConsumer consumer = new SdncAaiDmaapConsumer();
+
+ consumer.init(props, "src/test/resources/dmaap-consumer-esrsysteminfo.properties");
+ consumer.processMsg(aaiInput);
+ }
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncJsonDmaapConsumer.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncJsonDmaapConsumer.java
new file mode 100644
index 000000000..620098cb7
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncJsonDmaapConsumer.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import org.junit.Test;
+
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+
+import java.util.Map;
+import java.util.Properties;
+
+public class TestSdncJsonDmaapConsumer {
+ private static final String DMAAP_LISTENER_PROPERTIES = "dmaap-listener.properties";
+ private static final String DMAAP_LISTENER_PROPERTIES_DIR = "src/test/resources";
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsg_shouldThrowException() throws Exception {
+ SdncFlatJsonDmaapConsumer consumer = new SdncFlatJsonDmaapConsumer();
+ consumer.processMsg(null);
+ }
+
+ @Test
+ public void testProcessMsgFieldMap() throws Exception {
+ SdncFlatJsonDmaapConsumer consumer = new SdncFlatJsonDmaapConsumer();
+
+ String DMAAPLISTENERROOT = "DMAAPLISTENERROOT";
+ File directory = new File("lib");
+
+ if (! directory.exists()){
+ directory.mkdir();
+ }
+
+ File file = new File("lib" + "/" + "input.map");
+ try{
+ FileWriter fw = new FileWriter(file.getAbsoluteFile());
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write("SDNC.endpoint=>http://localhost:8282/restconf/operations");
+ bw.close();
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+
+ try {
+ Map<String, String> env = System.getenv();
+ Class<?> cl = env.getClass();
+ Field field = cl.getDeclaredField("m");
+ field.setAccessible(true);
+ Map<String, String> writableEnv = (Map<String, String>) field.get(env);
+ writableEnv.put(DMAAPLISTENERROOT, ".");
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to set environment variable", e);
+ }
+
+ String msg = "{\n" +
+ " \"input\" : { \n" +
+ " }\n" +
+ "}";
+
+ InputStream propStr = TestSdncJsonDmaapConsumer.class.getResourceAsStream("/dmaap-consumer-pserver.properties");
+ Properties props = new Properties();
+
+ props.load(propStr);
+
+ consumer.init(props, "src/test/resources/dmaap-consumer-pserver.properties");
+ consumer.processMsg(msg);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgFieldMapNoSdncEndPoint() throws Exception {
+ SdncFlatJsonDmaapConsumer consumer = new SdncFlatJsonDmaapConsumer();
+
+ String DMAAPLISTENERROOT = "DMAAPLISTENERROOT";
+ File directory = new File("lib");
+
+ if (! directory.exists()){
+ directory.mkdir();
+ }
+
+ File file = new File("lib" + "/" + "input.map");
+ try{
+ FileWriter fw = new FileWriter(file.getAbsoluteFile());
+ BufferedWriter bw = new BufferedWriter(fw);
+ bw.write("SDNC");
+ bw.close();
+ }
+ catch (Exception e){
+ e.printStackTrace();
+ }
+
+ try {
+ Map<String, String> env = System.getenv();
+ Class<?> cl = env.getClass();
+ Field field = cl.getDeclaredField("m");
+ field.setAccessible(true);
+ Map<String, String> writableEnv = (Map<String, String>) field.get(env);
+ writableEnv.put(DMAAPLISTENERROOT, ".");
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to set environment variable", e);
+ }
+
+ String msg = "{\n" +
+ " \"input\" : { \n" +
+ " }\n" +
+ "}";
+
+ InputStream propStr = TestSdncJsonDmaapConsumer.class.getResourceAsStream("/dmaap-consumer-pserver.properties");
+ Properties props = new Properties();
+
+ props.load(propStr);
+
+ consumer.init(props, "src/test/resources/dmaap-consumer-pserver.properties");
+ consumer.processMsg(msg);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgFieldMapNoFieldMap() throws Exception {
+ SdncFlatJsonDmaapConsumer consumer = new SdncFlatJsonDmaapConsumer();
+
+ String msg = "{\n" +
+ " \"input\" : { \n" +
+ " }\n" +
+ "}";
+
+ consumer.processMsg(msg);
+ }
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncLcmDmaapConsumer.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncLcmDmaapConsumer.java
new file mode 100644
index 000000000..4073b5542
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncLcmDmaapConsumer.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class TestSdncLcmDmaapConsumer {
+ private static final String lcmInput =
+ "{\r\n" +
+ " \"version\": \"lcm-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"SDNC\",\r\n" +
+ " \"correlation-id\": \"lcm-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name\": \"upgrade-software\",\r\n" +
+ " \"type\": \"lcm-dmaap.type\",\r\n" +
+ " \"body\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"lcm-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"lcm-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"lcm-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"lcm-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"lcm-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"lcm-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"lcm-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"lcm-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"lcm-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+
+ @Test
+ public void test() throws Exception {
+ Properties props = new Properties();
+
+ SdncLcmDmaapConsumer consumer = new SdncLcmDmaapConsumer();
+ InputStream propStr = TestSdncLcmDmaapConsumer.class.getResourceAsStream("/dmaap-consumer-1.properties");
+ props.load(propStr);
+ consumer.init(props, "src/test/resources/dmaap-consumer-1.properties");
+ consumer.processMsg(lcmInput);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgNullMessage() throws Exception {
+ SdncLcmDmaapConsumer consumer = new SdncLcmDmaapConsumer();
+ consumer.processMsg(null);
+ }
+
+ @Test
+ public void testProcessMsgMissingBody() throws Exception {
+ String msg = "{\r\n" +
+ " \"version\": \"lcm-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"SDNC\",\r\n" +
+ " \"correlation-id\": \"lcm-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name\": \"upgrade-software\",\r\n" +
+ " \"type\": \"lcm-dmaap.type\",\r\n" +
+ " \"body1\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"lcm-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"lcm-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"lcm-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"lcm-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"lcm-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"lcm-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"lcm-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"lcm-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"lcm-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+ SdncLcmDmaapConsumer consumer = new SdncLcmDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+ @Test
+ public void testProcessMsgInvalidRPC() throws Exception {
+ String msg = "{\r\n" +
+ " \"version\": \"lcm-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"SDNC\",\r\n" +
+ " \"correlation-id\": \"lcm-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name1\": \"upgrade-software\",\r\n" +
+ " \"type\": \"lcm-dmaap.type\",\r\n" +
+ " \"body\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"lcm-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"lcm-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"lcm-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"lcm-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"lcm-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"lcm-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"lcm-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"lcm-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"lcm-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+ SdncLcmDmaapConsumer consumer = new SdncLcmDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+ @Test
+ public void testProcessMsgInvalidPartition() throws Exception {
+ String msg = "{\r\n" +
+ " \"version\": \"lcm-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"BAD\",\r\n" +
+ " \"correlation-id\": \"lcm-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name\": \"upgrade-software\",\r\n" +
+ " \"type\": \"lcm-dmaap.type\",\r\n" +
+ " \"body\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"lcm-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"lcm-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"lcm-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"lcm-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"lcm-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"lcm-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"lcm-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"lcm-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"lcm-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+
+ SdncLcmDmaapConsumer consumer = new SdncLcmDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncOdlConnection.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncOdlConnection.java
new file mode 100644
index 000000000..db24a4545
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncOdlConnection.java
@@ -0,0 +1,26 @@
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import org.junit.Test;
+
+import java.io.IOException;
+import java.net.ConnectException;
+
+public class TestSdncOdlConnection {
+
+ @Test
+ public void test() {
+
+ try {
+ SdncOdlConnection sdncOdlConnection = SdncOdlConnection.newInstance("https://127.0.0.1:8447/aai/v11/network/pnfs/pnf/a8098c1a-f86e-11da-bd1a-00112444be1e", "", "");
+ sdncOdlConnection.send("PUT", "application/json", "{\n" +
+ " \"input\" : { \n" +
+ " }\n" +
+ "}");
+ } catch (ConnectException e) {
+ //Connection exception
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncPserverDmaapReceiver.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncPserverDmaapReceiver.java
new file mode 100644
index 000000000..11201265d
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncPserverDmaapReceiver.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class TestSdncPserverDmaapReceiver {
+ private static final String aaiInput = "{\r\n" +
+ " \"cambria.partition\": \"AAI\",\r\n" +
+ " \"event-header\": {\r\n" +
+ " \"severity\": \"NORMAL\",\r\n" +
+ " \"entity-type\": \"pserver\",\r\n" +
+ " \"top-entity-type\": \"pserver\",\r\n" +
+ " \"entity-link\": \"https://aai.com:8443/aai/v11/cloud-infrastructure/pservers/pserver/a3d3d3d3/\",\r\n" +
+ " \"event-type\": \"AAI-EVENT\",\r\n" +
+ " \"domain\": \"e2e\",\r\n" +
+ " \"action\": \"UPDATE\",\r\n" +
+ " \"sequence-number\": \"0\",\r\n" +
+ " \"id\": \"20170415000111-1234\",\r\n" +
+ " \"source-name\": \"testclient\",\r\n" +
+ " \"version\": \"v11\",\r\n" +
+ " \"timestamp\": \"20170415-00:01:11:979\"\r\n" +
+ " },\r\n" +
+ " \"entity\": {\r\n" +
+ " \"hostname\": \"host1\",\r\n" +
+ " \"ptnii-equip-name\": \"lat111\",\r\n" +
+ " \"equip-type\": \"server\",\r\n" +
+ " \"equip-vendor\": \"HP\",\r\n" +
+ " \"equip-model\": \"model1\",\r\n" +
+ " \"fqdn\": \"l.global.net\",\r\n" +
+ " \"ipv4-oam-address\": \"12.12.12.12\",\r\n" +
+ " \"in-maint\": false,\r\n" +
+ " \"resource-version\": \"11111111111\",\r\n" +
+ " \"purpose\": \"Gamma\",\r\n" +
+ " \"relationship-list\": {\r\n" +
+ " \"relationship\": [\r\n" +
+ " {\r\n" +
+ " \"related-to\": \"complex\",\r\n" +
+ " \"relationship-data\": [\r\n" +
+ " {\r\n" +
+ " \"relationship-value\": \"L1L2L3\",\r\n" +
+ " \"relationship-key\": \"complex.physical-location-id\"\r\n" +
+ " }\r\n" +
+ " ],\r\n" +
+ " \"related-link\": \"https://aai.com:8443/aai/v11/cloud-infrastructure/complexes/complex/cmpl1\"\r\n" +
+ " }\r\n" +
+ " ]\r\n" +
+ " },\r\n" +
+ " \"p-interfaces\": {\r\n" +
+ " \"p-interface\": []\r\n" +
+ " },\r\n" +
+ " \"lag-interfaces\": {\r\n" +
+ " \"lag-interface\": []\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+ @Before
+ public void setUp() throws Exception {
+ }
+
+ @Test
+ public void test() throws Exception {
+ Properties props = new Properties();
+
+ String rpcMsgbody = new SdncAaiDmaapConsumer(props).publish("src/main/resources/template-pserver.vt", aaiInput);
+
+ ObjectMapper oMapper = new ObjectMapper();
+ JsonNode aaiRootNode;
+ try {
+ aaiRootNode = oMapper.readTree(rpcMsgbody);
+ } catch (Exception e) {
+ throw new InvalidMessageException("Cannot parse json object", e);
+ }
+
+ assertTrue(aaiRootNode.get("input").get("payload") != null);
+ assertTrue(aaiRootNode.get("input").get("common-header") != null);
+
+ }
+
+ @Test
+ public void testProcessMsgFieldMap() throws Exception {
+
+
+ String DMAAPLISTENERROOT = "DMAAPLISTENERROOT";
+ File directory = new File("lib");
+
+ if (! directory.exists()){
+ directory.mkdir();
+ }
+
+ File source = new File("src/main/resources");
+ File dest = new File("lib/");
+ try {
+ FileUtils.copyDirectory(source, dest);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ try {
+ Map<String, String> env = System.getenv();
+ Class<?> cl = env.getClass();
+ Field field = cl.getDeclaredField("m");
+ field.setAccessible(true);
+ Map<String, String> writableEnv = (Map<String, String>) field.get(env);
+ writableEnv.put(DMAAPLISTENERROOT, ".");
+ } catch (Exception e) {
+ throw new IllegalStateException("Failed to set environment variable", e);
+ }
+ Properties props = new Properties();
+
+ SdncAaiDmaapConsumer consumer = new SdncAaiDmaapConsumer();
+
+ InputStream propStr = TestSdncPserverDmaapReceiver.class.getResourceAsStream("/dmaap-consumer-pserver.properties");
+
+
+ props.load(propStr);
+
+ consumer.init(props, "src/test/resources/dmaap-consumer-pserver.properties");
+ consumer.processMsg(aaiInput);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgNullMessage() throws Exception {
+ Properties props = new Properties();
+
+ SdncAaiDmaapConsumer consumer = new SdncAaiDmaapConsumer();
+ consumer.processMsg(null);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgInvalidMessage() throws Exception {
+ Properties props = new Properties();
+
+ SdncAaiDmaapConsumer consumer = new SdncAaiDmaapConsumer();
+ consumer.processMsg("test");
+ }
+
+ @Test
+ public void testProcessMsgMissingEventHeader() throws Exception {
+ Properties props = new Properties();
+
+ SdncAaiDmaapConsumer consumer = new SdncAaiDmaapConsumer();
+ consumer.processMsg("{\n" +
+ " \"input\" : { \n" +
+ " }\n" +
+ "}");
+ }
+
+ @Test
+ public void testProcessMsgInvalidEventType() throws Exception {
+ Properties props = new Properties();
+
+ String msg = "{\"cambria.partition\": \"AAI\",\r\n" +
+ " \"event-header\": {\"event-type\": \"TEST-EVENT\"}}";
+
+ SdncAaiDmaapConsumer consumer = new SdncAaiDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+
+
+
+
+}
diff --git a/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncRANSliceDmaapConsumer.java b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncRANSliceDmaapConsumer.java
new file mode 100644
index 000000000..50c427ec1
--- /dev/null
+++ b/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncRANSliceDmaapConsumer.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2017. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+ * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
+ * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
+ * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
+ * Vestibulum commodo. Ut rhoncus gravida arcu.
+ */
+
+package org.onap.ccsdk.sli.northbound.dmaapclient;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.Properties;
+
+import org.apache.commons.io.FileUtils;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+public class TestSdncRANSliceDmaapConsumer {
+ private static final String ranSliceInput =
+ "{\r\n" +
+ " \"version\": \"ranSlice-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"SDNC\",\r\n" +
+ " \"correlation-id\": \"ranSlice-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name\": \"upgrade-software\",\r\n" +
+ " \"type\": \"ranSlice-dmaap.type\",\r\n" +
+ " \"body\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"ranSlice-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"ranSlice-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"ranSlice-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"ranSlice-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"ranSlice-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"ranSlice-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"ranSlice-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"ranSlice-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"ranSlice-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+
+ @Test
+ public void test() throws Exception {
+ Properties props = new Properties();
+
+ SdncRANSliceDmaapConsumer consumer = new SdncRANSliceDmaapConsumer();
+ InputStream propStr = TestSdncRANSliceDmaapConsumer.class.getResourceAsStream("/dmaap-consumer-1.properties");
+ props.load(propStr);
+ consumer.init(props, "src/test/resources/dmaap-consumer-1.properties");
+ consumer.processMsg(ranSliceInput);
+ }
+
+ @Test(expected = InvalidMessageException.class)
+ public void testProcessMsgNullMessage() throws Exception {
+ SdncRANSliceDmaapConsumer consumer = new SdncRANSliceDmaapConsumer();
+ consumer.processMsg(null);
+ }
+
+ @Test
+ public void testProcessMsgMissingBody() throws Exception {
+ String msg = "{\r\n" +
+ " \"version\": \"ranSlice-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"SDNC\",\r\n" +
+ " \"correlation-id\": \"ranSlice-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name\": \"upgrade-software\",\r\n" +
+ " \"type\": \"ranSlice-dmaap.type\",\r\n" +
+ " \"body1\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"ranSlice-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"ranSlice-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"ranSlice-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"ranSlice-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"ranSlice-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"ranSlice-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"ranSlice-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"ranSlice-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"ranSlice-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+ SdncRANSliceDmaapConsumer consumer = new SdncRANSliceDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+ @Test
+ public void testProcessMsgInvalidRPC() throws Exception {
+ String msg = "{\r\n" +
+ " \"version\": \"ranSlice-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"SDNC\",\r\n" +
+ " \"correlation-id\": \"ranSlice-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name1\": \"upgrade-software\",\r\n" +
+ " \"type\": \"ranSlice-dmaap.type\",\r\n" +
+ " \"body\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"ranSlice-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"ranSlice-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"ranSlice-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"ranSlice-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"ranSlice-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"ranSlice-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"ranSlice-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"ranSlice-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"ranSlice-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+ SdncRANSliceDmaapConsumer consumer = new SdncRANSliceDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+
+ @Test
+ public void testProcessMsgInvalidPartition() throws Exception {
+ String msg = "{\r\n" +
+ " \"version\": \"ranSlice-dmaap.version\",\r\n" +
+ " \"cambria.partition\": \"BAD\",\r\n" +
+ " \"correlation-id\": \"ranSlice-dmaap.correlation-id\",\r\n" +
+ " \"rpc-name\": \"upgrade-software\",\r\n" +
+ " \"type\": \"ranSlice-dmaap.type\",\r\n" +
+ " \"body\": {\r\n" +
+ " \"input\": {\r\n" +
+ " \"common-header\": {\r\n" +
+ " \"api-ver\": \"ranSlice-dmaap.api-ver\",\r\n" +
+ " \"flags\": {\r\n" +
+ " \"ttl\": \"ranSlice-dmaap.flags.mode\",\r\n" +
+ " \"force\": \"ranSlice-dmaap.flags.force\",\r\n" +
+ " \"mode\": \"ranSlice-dmaap.flags.mode\"\r\n" +
+ " },\r\n" +
+ " \"originator-id\": \"ranSlice-dmaap.originator-id\",\r\n" +
+ " \"request-id\": \"ranSlice-dmaap.request-id\",\r\n" +
+ " \"sub-request-id\": \"ranSlice-dmaap.sub-request-id\",\r\n" +
+ " \"timestamp\": \"ranSlice-dmaap.timestamp\"\r\n" +
+ " },\r\n" +
+ " \"payload\": \"ranSlice-dmaap.payload\"\r\n" +
+ " }\r\n" +
+ " }\r\n" +
+ "}";
+
+
+ SdncRANSliceDmaapConsumer consumer = new SdncRANSliceDmaapConsumer();
+ consumer.processMsg(msg);
+ }
+}