summaryrefslogtreecommitdiffstats
path: root/northbound/dmaap-listener/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'northbound/dmaap-listener/src/test')
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientJdkTest.java100
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientTest.java97
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/SdncFlatJsonDmaapConsumerTest.java41
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestA1AdapterPolicyDmaapConsumer.java136
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestCMNotifyDmaapConsumer.java140
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDmaapListener.java52
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDummyDmaapConsumer.java26
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestOofPciPocDmaapConsumers.java314
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncDhcpEventConsumer.java139
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncEsrDmaapReceiver.java140
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncJsonDmaapConsumer.java138
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncLcmDmaapConsumer.java166
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncOdlConnection.java26
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncPserverDmaapReceiver.java186
-rw-r--r--northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncRANSliceDmaapConsumer.java166
-rw-r--r--northbound/dmaap-listener/src/test/resources/dblib.properties38
-rwxr-xr-xnorthbound/dmaap-listener/src/test/resources/dmaap-consumer-1.properties35
-rw-r--r--northbound/dmaap-listener/src/test/resources/dmaap-consumer-a1Adapter-policy-1.properties35
-rw-r--r--northbound/dmaap-listener/src/test/resources/dmaap-consumer-cMNotify-1.properties35
-rw-r--r--northbound/dmaap-listener/src/test/resources/dmaap-consumer-esrsysteminfo.properties34
-rw-r--r--northbound/dmaap-listener/src/test/resources/dmaap-consumer-generic-vnf.properties34
-rw-r--r--northbound/dmaap-listener/src/test/resources/dmaap-consumer-pserver.properties34
-rwxr-xr-xnorthbound/dmaap-listener/src/test/resources/dmaap-listener.preferredRoute.txt1
-rwxr-xr-xnorthbound/dmaap-listener/src/test/resources/dmaap-listener.properties1
24 files changed, 2114 insertions, 0 deletions
diff --git a/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientJdkTest.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientJdkTest.java
new file mode 100644
index 000000000..03f832801
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientTest.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/MessageRouterHttpClientTest.java
new file mode 100644
index 000000000..7567e2a9e
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/SdncFlatJsonDmaapConsumerTest.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/SdncFlatJsonDmaapConsumerTest.java
new file mode 100644
index 000000000..d1aee634d
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestA1AdapterPolicyDmaapConsumer.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestA1AdapterPolicyDmaapConsumer.java
new file mode 100644
index 000000000..8b7044f69
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestCMNotifyDmaapConsumer.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestCMNotifyDmaapConsumer.java
new file mode 100644
index 000000000..122a6d40b
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDmaapListener.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDmaapListener.java
new file mode 100644
index 000000000..943ef0204
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDummyDmaapConsumer.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestDummyDmaapConsumer.java
new file mode 100644
index 000000000..47330c622
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestOofPciPocDmaapConsumers.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestOofPciPocDmaapConsumers.java
new file mode 100644
index 000000000..cd2ea6eb0
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncDhcpEventConsumer.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncDhcpEventConsumer.java
new file mode 100644
index 000000000..04f098ade
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncEsrDmaapReceiver.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncEsrDmaapReceiver.java
new file mode 100644
index 000000000..623c96426
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncJsonDmaapConsumer.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncJsonDmaapConsumer.java
new file mode 100644
index 000000000..620098cb7
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncLcmDmaapConsumer.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncLcmDmaapConsumer.java
new file mode 100644
index 000000000..4073b5542
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncOdlConnection.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncOdlConnection.java
new file mode 100644
index 000000000..db24a4545
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncPserverDmaapReceiver.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncPserverDmaapReceiver.java
new file mode 100644
index 000000000..11201265d
--- /dev/null
+++ b/northbound/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/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncRANSliceDmaapConsumer.java b/northbound/dmaap-listener/src/test/java/org/onap/ccsdk/sli/northbound/dmaapclient/TestSdncRANSliceDmaapConsumer.java
new file mode 100644
index 000000000..50c427ec1
--- /dev/null
+++ b/northbound/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);
+ }
+}
diff --git a/northbound/dmaap-listener/src/test/resources/dblib.properties b/northbound/dmaap-listener/src/test/resources/dblib.properties
new file mode 100644
index 000000000..9506ac8d1
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dblib.properties
@@ -0,0 +1,38 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : SDN-C
+# ================================================================================
+# Copyright (C) 2017 AT&T Intellectual Property. All rights
+# reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+###
+
+# dblib.properrties
+org.onap.ccsdk.sli.dbtype=jdbc
+
+org.onap.ccsdk.sli.jdbc.hosts=sdnctldb01
+org.onap.ccsdk.sli.jdbc.url=jdbc:mysql://dbhost:3306/sdnctl
+org.onap.ccsdk.sli.jdbc.driver=org.mariadb.jdbc.Driver
+org.onap.ccsdk.sli.jdbc.database=sdnctl
+org.onap.ccsdk.sli.jdbc.user=sdnctl
+org.onap.ccsdk.sli.jdbc.password=gamma
+org.onap.ccsdk.sli.jdbc.connection.name=sdnctldb01
+org.onap.ccsdk.sli.jdbc.connection.timeout=50
+org.onap.ccsdk.sli.jdbc.request.timeout=100
+org.onap.ccsdk.sli.jdbc.limit.init=10
+org.onap.ccsdk.sli.jdbc.limit.min=10
+org.onap.ccsdk.sli.jdbc.limit.max=20
+org.onap.dblib.connection.recovery=false
+
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-consumer-1.properties b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-1.properties
new file mode 100755
index 000000000..ae83ef8c2
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-1.properties
@@ -0,0 +1,35 @@
+TransportType=HTTPAAF
+Latitude =40.397443
+Longitude =-74.135602
+Version =1.0
+ServiceName =localhost/events
+Environment =DEV
+Partner =
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =test
+password =test
+contenttype =application/json
+authKey=ABC123
+authDate=2016-05-10T13:13:50-0700
+host=localhost:3904
+topic=ccsdk-topic
+group=ccsdk-unittest
+id=ccsdk_unittest
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=src/test/resources/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=admin
+sdnc.odl.url-base=http://localhost:8282/restconf/operations
+
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-consumer-a1Adapter-policy-1.properties b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-a1Adapter-policy-1.properties
new file mode 100644
index 000000000..edb7c453e
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-a1Adapter-policy-1.properties
@@ -0,0 +1,35 @@
+TransportType=HTTPNOAUTH
+Latitude =50.000000
+Longitude =-100.000000
+Version =1.0
+ServiceName =message-router.onap:3904/events
+Environment =TEST
+Partner =
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =admin
+password =admin
+contenttype =application/json
+authKey=fs20cKwalJ6ry4kX:7Hqm6BDZK47IKxGRkOPFk33qMYs=
+authDate=2019-04-09T04:28:40-05:00
+host=message-router.onap:3904
+topic=A1-P
+group=users
+id=sdnc1
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/opt/onap/sdnc/data/properties/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+sdnc.odl.url-base=http://sdnc.onap:8282/restconf/operations
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-consumer-cMNotify-1.properties b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-cMNotify-1.properties
new file mode 100644
index 000000000..aae34a26f
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-cMNotify-1.properties
@@ -0,0 +1,35 @@
+TransportType=HTTPNOAUTH
+Latitude =50.000000
+Longitude =-100.000000
+Version =1.0
+ServiceName =message-router.onap:3904/events
+Environment =TEST
+Partner =
+routeOffer=MR1
+SubContextPath =/
+Protocol =http
+MethodType =GET
+username =admin
+password =admin
+contenttype =application/json
+authKey=fs20cKwalJ6ry4kX:7Hqm6BDZK47IKxGRkOPFk33qMYs=
+authDate=2019-04-09T04:28:40-05:00
+host=message-router.onap:3904
+topic=CM-NOTIFICATION
+group=users
+id=sdnc1
+timeout=15000
+limit=1000
+filter=
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=15000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=/opt/onap/sdnc/data/properties/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
+sdnc.odl.url-base=http://sdnc.onap:8282/restconf/operations
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-consumer-esrsysteminfo.properties b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-esrsysteminfo.properties
new file mode 100644
index 000000000..9f5cfe71f
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-esrsysteminfo.properties
@@ -0,0 +1,34 @@
+TransportType=DME2
+Latitude =47.778998
+Longitude =-122.182883
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.att.com/events
+Environment =TEST
+Partner =
+SubContextPath =/
+Protocol =https
+MethodType =GET
+username =test
+password =test
+contenttype =application/json
+authKey=ABC123
+authDate=2016-05-10T13:13:50-0700
+host=localhost:3904
+topic=AAI-EVENT
+group=pserver
+id=1
+timeout=20000
+limit=10000
+filter={"class":"Equals","field":"event-header.entity-type","value":"pserver"}
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=55000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=src/test/resources/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=admin
+sdnc.odl.url-base=http://localhost:8181/restconf/operations \ No newline at end of file
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-consumer-generic-vnf.properties b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-generic-vnf.properties
new file mode 100644
index 000000000..710a7c7c9
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-generic-vnf.properties
@@ -0,0 +1,34 @@
+TransportType=DME2
+Latitude =47.778998
+Longitude =-122.182883
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.att.com/events
+Environment =TEST
+Partner =
+SubContextPath =/
+Protocol =https
+MethodType =GET
+username =test
+password =test
+contenttype =application/json
+authKey=ABC123
+authDate=2016-05-10T13:13:50-0700
+host=localhost:3904
+topic=AAI-EVENT
+group=vnf
+id=1
+timeout=20000
+limit=10000
+filter={"class":"And","filters":[{"class":"Equals","field":"event-header.entity-type","value":"generic-vnf"},{"class":"Equals","field":"entity.vnf-type","value":"kvm-vpe"}]}
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=55000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=src/test/resources/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=admin
+sdnc.odl.url-base=http://localhost:8181/restconf/operations \ No newline at end of file
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-consumer-pserver.properties b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-pserver.properties
new file mode 100644
index 000000000..9f5cfe71f
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-consumer-pserver.properties
@@ -0,0 +1,34 @@
+TransportType=DME2
+Latitude =47.778998
+Longitude =-122.182883
+Version =1.0
+ServiceName =dmaap-v1.dev.dmaap.dt.saat.acsi.att.com/events
+Environment =TEST
+Partner =
+SubContextPath =/
+Protocol =https
+MethodType =GET
+username =test
+password =test
+contenttype =application/json
+authKey=ABC123
+authDate=2016-05-10T13:13:50-0700
+host=localhost:3904
+topic=AAI-EVENT
+group=pserver
+id=1
+timeout=20000
+limit=10000
+filter={"class":"Equals","field":"event-header.entity-type","value":"pserver"}
+AFT_DME2_EXCHANGE_REQUEST_HANDLERS=com.att.nsa.test.PreferredRouteRequestHandler
+AFT_DME2_EXCHANGE_REPLY_HANDLERS=com.att.nsa.test.PreferredRouteReplyHandler
+AFT_DME2_REQ_TRACE_ON=true
+AFT_ENVIRONMENT=AFTUAT
+AFT_DME2_EP_CONN_TIMEOUT=55000
+AFT_DME2_ROUNDTRIP_TIMEOUT_MS=240000
+AFT_DME2_EP_READ_TIMEOUT_MS=50000
+sessionstickinessrequired=NO
+DME2preferredRouterFilePath=src/test/resources/dmaap-listener.preferredRoute.txt
+sdnc.odl.user=admin
+sdnc.odl.password=admin
+sdnc.odl.url-base=http://localhost:8181/restconf/operations \ No newline at end of file
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-listener.preferredRoute.txt b/northbound/dmaap-listener/src/test/resources/dmaap-listener.preferredRoute.txt
new file mode 100755
index 000000000..88705f73b
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-listener.preferredRoute.txt
@@ -0,0 +1 @@
+preferredRouteKey=ABC123 \ No newline at end of file
diff --git a/northbound/dmaap-listener/src/test/resources/dmaap-listener.properties b/northbound/dmaap-listener/src/test/resources/dmaap-listener.properties
new file mode 100755
index 000000000..defef0b43
--- /dev/null
+++ b/northbound/dmaap-listener/src/test/resources/dmaap-listener.properties
@@ -0,0 +1 @@
+subscriptions=org.onap.ccsdk.sli.northbound.dmaapclient.DummyDmaapConsumer:dmaap-consumer-1.properties;org.onap.ccsdk.sli.northbound.dmaapclient.SdncAaiDmaapConsumer:dmaap-consumer-esrsysteminfo.properties \ No newline at end of file