From 282711996763df7e081f3e41f42f8d475f14625c Mon Sep 17 00:00:00 2001 From: krishnaa96 Date: Fri, 12 Apr 2019 19:56:25 +0530 Subject: Implement DMaaP message handling from policy Handling of dmaap response from policy implemented Blueprint updated for config policy fetch Fix sonar issues Change-Id: I7a8a54b5d62e5db94ea2bc2d28805d8f5680d579 Issue-ID: DCAEGEN2-1427 Signed-off-by: krishnaa96 --- .../services/sonhms/ConfigurationTest.java | 1 - .../sonhms/DmaapNotificationsComponentTest.java | 4 +- .../services/sonhms/PMNotificationHandlerTest.java | 15 +- .../sonhms/child/TestChildThreadUtils.java | 1 + .../sonhms/dmaap/PolicyDmaapClientTest.java | 152 +++++++++++++++++++++ .../services/sonhms/model/NotificationTest.java | 6 +- .../services/sonhms/model/PayloadTest.java | 2 +- 7 files changed, 168 insertions(+), 13 deletions(-) create mode 100644 src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClientTest.java (limited to 'src/test/java') diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java index 6fb72c3..68b94fb 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.hibernate.sql.ConditionFragment; import org.junit.Test; diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java index 5bf76b3..4b36b32 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java @@ -40,7 +40,7 @@ import org.mockito.Mock; import org.onap.dcaegen2.services.sonhms.dao.DmaapNotificationsRepository; import org.onap.dcaegen2.services.sonhms.dao.PerformanceNotificationsRepository; import org.onap.dcaegen2.services.sonhms.model.Notification; -import org.onap.dcaegen2.services.sonhms.model.PMNotification; +import org.onap.dcaegen2.services.sonhms.model.PmNotification; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; @@ -104,7 +104,7 @@ public class DmaapNotificationsComponentTest { .thenReturn(performanceNotificationsRepositoryMock); when(performanceNotificationsRepositoryMock.getPerformanceNotificationFromQueue()).thenReturn(pmNotificationString); - Either result = component.getPmNotifications(); + Either result = component.getPmNotifications(); assertTrue(result.isLeft()); assertNotNull(result.left().value()); diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/PMNotificationHandlerTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/PMNotificationHandlerTest.java index 9cae5b6..cbd0265 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/PMNotificationHandlerTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/PMNotificationHandlerTest.java @@ -40,7 +40,7 @@ import org.onap.dcaegen2.services.sonhms.dao.HandOverMetricsRepository; import org.onap.dcaegen2.services.sonhms.dmaap.PolicyDmaapClient; import org.onap.dcaegen2.services.sonhms.entity.HandOverMetrics; import org.onap.dcaegen2.services.sonhms.model.Flag; -import org.onap.dcaegen2.services.sonhms.model.PMNotification; +import org.onap.dcaegen2.services.sonhms.model.PmNotification; import org.onap.dcaegen2.services.sonhms.utils.BeanUtil; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; @@ -69,20 +69,20 @@ public class PMNotificationHandlerTest { private static String pmNotificationsString ; private static String pmNotificationsString1 ; - private static PMNotification pmNotification; - private static PMNotification pmNotification1; + private static PmNotification pmNotification; + private static PmNotification pmNotification1; @BeforeClass public static void setup() { pmNotificationsString=readFromFile("/pmNotification.json"); pmNotificationsString1=readFromFile("/pmNotification1.json"); ObjectMapper mapper = new ObjectMapper(); - pmNotification = new PMNotification(); - pmNotification1 = new PMNotification(); + pmNotification = new PmNotification(); + pmNotification1 = new PmNotification(); try { - pmNotification = mapper.readValue(pmNotificationsString, PMNotification.class); - pmNotification1 = mapper.readValue(pmNotificationsString1, PMNotification.class); + pmNotification = mapper.readValue(pmNotificationsString, PmNotification.class); + pmNotification1 = mapper.readValue(pmNotificationsString1, PmNotification.class); } catch(Exception e) { e.printStackTrace(); } @@ -98,6 +98,7 @@ public class PMNotificationHandlerTest { when(handOverMetricsRepositoryMock.save(new HandOverMetrics())).thenReturn(null); when(flagMock.getHolder()).thenReturn("NONE"); when(policyDmaapClient.sendNotificationToPolicy(Mockito.anyString())).thenReturn(true); + when(policyDmaapClient.handlePolicyResponse(Mockito.anyString())).thenReturn(true); assertTrue(pmNotificationHandler.handlePmNotifications(pmNotification, 50)); assertFalse(pmNotificationHandler.handlePmNotifications(null, 0)); assertTrue(pmNotificationHandler.handlePmNotifications(pmNotification1, 50)); diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java index 536f327..28940b3 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/child/TestChildThreadUtils.java @@ -187,6 +187,7 @@ public class TestChildThreadUtils { pciPairList.add(cell2); pciPairList.add(cell3); pnfsMap.put("pnf1", pciPairList); + when(policyDmaapClient.handlePolicyResponse(Mockito.anyString())).thenReturn(true); when(pnfUtils.getPnfs(async.getSolutions())).thenReturn(pnfsMap); List remNeighbors = new ArrayList<>(); remNeighbors.add("EXP006"); diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClientTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClientTest.java new file mode 100644 index 0000000..16f205f --- /dev/null +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClientTest.java @@ -0,0 +1,152 @@ +/******************************************************************************* + * ============LICENSE_START======================================================= + * son-handler + * ================================================================================ + * Copyright (C) 2019 Wipro Limited. + * ============================================================================== + * 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.dcaegen2.services.sonhms.dmaap; + +import static org.junit.Assert.*; + +import com.att.nsa.cambria.client.CambriaBatchingPublisher; +import com.att.nsa.cambria.client.CambriaConsumer; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.runners.MockitoJUnitRunner; +import org.onap.dcaegen2.services.sonhms.Configuration; +import org.onap.dcaegen2.services.sonhms.utils.ClusterUtilsTest; +import org.onap.dcaegen2.services.sonhms.utils.DmaapUtils; +import org.springframework.boot.test.context.SpringBootTest; + +@RunWith(MockitoJUnitRunner.class) +@SpringBootTest(classes = PolicyDmaapClient.class) +public class PolicyDmaapClientTest { + + @Mock + Configuration configurationMock; + + @Mock + DmaapUtils dmaapUtilsMock; + + @InjectMocks + PolicyDmaapClient policyDmaapClient; + + @Mock + CambriaConsumer policyResponseCambriaConsumerMock; + + @Mock + CambriaBatchingPublisher cambriaBatchingPublisherMock; + + @Mock + NotificationProducer notificationProducerMock; + + @Before + public void setup() { + policyDmaapClient = new PolicyDmaapClient(dmaapUtilsMock, configurationMock); + } + + @Test + public void handlePolicyResponseTest() { + + Map streamsSubscribes = new HashMap<>(); + Map topics = new HashMap<>(); + Map dmaapInfo = new HashMap<>(); + topics.put("topic_url", "https://message-router.onap.svc.cluster.local:3905/events/DCAE_CL_RSP"); + dmaapInfo.put("dmaap_info", topics); + streamsSubscribes.put("dcae_cl_response_topic", dmaapInfo); + System.out.println(streamsSubscribes); + String policyResponseString = readFromFile("/policy_response.json"); + List responseMsgs = new ArrayList<>(); + responseMsgs.add(policyResponseString); + Iterable msgs = () -> new Iterator() { + private int index = 0; + + @Override + public boolean hasNext() { + return responseMsgs.size() > index; + } + + @Override + public String next() { + return responseMsgs.get(index++); + } + }; + Mockito.when(configurationMock.getStreamsSubscribes()).thenReturn(streamsSubscribes); + Mockito.when(dmaapUtilsMock.buildConsumer(configurationMock, "DCAE_CL_RSP")).thenReturn(policyResponseCambriaConsumerMock); + try { + Mockito.when(policyResponseCambriaConsumerMock.fetch()).thenReturn(msgs); + } catch (IOException e) { + e.printStackTrace(); + } + assertTrue(policyDmaapClient.handlePolicyResponse("9d2d790e-a5f0-11e8-98d0-529269fb1459")); + } + + @Test + public void sendNotificationToPolicyTest() { + Map streamsPublishes = new HashMap<>(); + Map topics = new HashMap<>(); + Map dmaapInfo = new HashMap<>(); + topics.put("topic_url", "https://message-router.onap.svc.cluster.local:3905/events/DCAE_CL_OUTPUT"); + dmaapInfo.put("dmaap_info", topics); + streamsPublishes.put("CL_topic", dmaapInfo); + Mockito.when(configurationMock.getStreamsPublishes()).thenReturn(streamsPublishes); + Mockito.when(dmaapUtilsMock.buildPublisher(configurationMock, "DCAE_CL_OUTPUT")).thenReturn(cambriaBatchingPublisherMock); + try { + Mockito.when(cambriaBatchingPublisherMock.send("", "hello")).thenReturn(0); + } catch (IOException e) { + e.printStackTrace(); + } + assertTrue(policyDmaapClient.sendNotificationToPolicy("hello")); + + } + + private static String readFromFile(String file) { + String content = new String(); + try { + + InputStream is = ClusterUtilsTest.class.getResourceAsStream(file); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); + content = bufferedReader.readLine(); + String temp; + while ((temp = bufferedReader.readLine()) != null) { + content = content.concat(temp); + } + content = content.trim(); + bufferedReader.close(); + } catch (Exception e) { + e.printStackTrace(); + content = null; + } + return content; + } +} diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java index 12c4912..d4c7828 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/model/NotificationTest.java @@ -108,8 +108,10 @@ public class NotificationTest { } catch (IOException e) { e.printStackTrace(); } - - assertNotEquals(notif, notif1); + + Notification notif2 = new Notification("9d2d790e-a5f0-11e8-98d0-529269fb1459", "{}", "SDNR", "1.0.2", "NeighborListModified", payload) ; + assertEquals(notif2.getPayload(), notif.getPayload()); + assertNotEquals(notif, notif1); assertEquals(notif.getAction(), notif1.getAction()); assertEquals(notif.getAai().toString(), notif1.getAai().toString()); diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java index e89c8c3..537630c 100644 --- a/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java +++ b/src/test/java/org/onap/dcaegen2/services/sonhms/model/PayloadTest.java @@ -47,7 +47,7 @@ public class PayloadTest { Data data = new Data(fapService); - Configurations config = new Configurations(data); + Configurations config = new Configurations(data, null); ArrayList al = new ArrayList<>(); al.add(config); -- cgit 1.2.3-korg