Filter FM and PM events & change targetType to PNF 46/106346/2
authorNiranjana <niranjana.y60@wipro.com>
Tue, 21 Apr 2020 11:43:17 +0000 (17:13 +0530)
committerNiranjana <niranjana.y60@wipro.com>
Wed, 22 Apr 2020 07:57:30 +0000 (13:27 +0530)
Issue-ID: DCAEGEN2-2200
Signed-off-by: Niranjana <niranjana.y60@wipro.com>
Change-Id: Ib6479b5be8dfc0ce7f42395b5d048ada5d674ff3

pom.xml
src/main/docker/config/sonhms/config_all.json
src/main/java/org/onap/dcaegen2/services/sonhms/Configuration.java
src/main/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponent.java
src/main/java/org/onap/dcaegen2/services/sonhms/FaultNotificationComponent.java
src/main/java/org/onap/dcaegen2/services/sonhms/model/PolicyNotification.java
src/test/java/org/onap/dcaegen2/services/sonhms/DmaapNotificationsComponentTest.java
src/test/resources/pmNotification2.json [new file with mode: 0644]
src/test/resources/policy_notification.json
version.properties

diff --git a/pom.xml b/pom.xml
index 58de62c..9430cc0 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
  *  ============LICENSE_START=======================================================
  *  son-handler
  *  ================================================================================
- *   Copyright (C) 2019 Wipro Limited.
+ *   Copyright (C) 2019-2020 Wipro Limited.
  *   ==============================================================================
  *     Licensed under the Apache License, Version 2.0 (the "License");
  *     you may not use this file except in compliance with the License.
@@ -27,7 +27,7 @@
        <groupId>org.onap.dcaegen2.services.son-handler</groupId>
        <artifactId>son-handler</artifactId>
        <name>dcaegen2-services-son-handler</name>
-       <version>2.0.0-SNAPSHOT</version>
+       <version>2.0.1-SNAPSHOT</version>
 
        <!--parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>
                <version>2.0.4.RELEASE</version> </parent -->
index 29bb357..b6cb345 100644 (file)
@@ -92,6 +92,7 @@
     "sonhandler.policyNegativeAckThreshold": 3,
     "sonhandler.policyFixedPciTimeInterval": 300000,
     "sonhandler.pollingTimeout": 60,
+    "sonhandler.nfNamingCode": "RansimAgent",
     "service_calls": {
       "sdnr-getpnfname": [],
       "sdnr-getpci": [],
       }
     ]
   }
-}
\ No newline at end of file
+}
index 13c86b6..563491c 100644 (file)
@@ -73,6 +73,7 @@ public class Configuration {
     private int policyRespTimer;
     private int policyNegativeAckThreshold;
     private long policyFixedPciTimeInterval;
+    private String nfNamingCode;
 
     public int getPoorCountThreshold() {
         return poorCountThreshold;
@@ -367,6 +368,14 @@ public class Configuration {
        public void setPolicyFixedPciTimeInterval(long policyFixedPciTimeInterval) {
                this.policyFixedPciTimeInterval = policyFixedPciTimeInterval;
        }
+       
+       public String getNfNamingCode() {
+               return nfNamingCode;
+       }
+
+       public void setNfNamingCode(String nfNamingCode) {
+               this.nfNamingCode = nfNamingCode;
+       }
 
        @Override
     public String toString() {
@@ -382,7 +391,7 @@ public class Configuration {
                 + ", badThreshold=" + badThreshold + ", poorThreshold=" + poorThreshold + ", poorCountThreshold="
                 + poorCountThreshold + ", badCountThreshold=" + badCountThreshold + ", oofTriggerCountTimer="
                 + oofTriggerCountTimer + ", oofTriggerCountThreshold=" + oofTriggerCountThreshold + ", policyRespTimer="
-                + policyRespTimer + ", policyNegativeAckThreshold=" + policyNegativeAckThreshold + ", policyFixedPciTimeInterval="+ policyFixedPciTimeInterval + "]";
+                + policyRespTimer + ", policyNegativeAckThreshold=" + policyNegativeAckThreshold + ", policyFixedPciTimeInterval="+ policyFixedPciTimeInterval + ", nfNamingCode="+nfNamingCode+"]";
     }
 
     /**
@@ -441,6 +450,7 @@ public class Configuration {
         policyRespTimer = jsonObject.get("sonhandler.policyRespTimer").getAsInt();
         policyNegativeAckThreshold = jsonObject.get("sonhandler.policyNegativeAckThreshold").getAsInt();
         policyFixedPciTimeInterval = jsonObject.get("sonhandler.policyFixedPciTimeInterval").getAsLong();
+        nfNamingCode = jsonObject.get("sonhandler.nfNamingCode").getAsString();
 
         log.info("configuration from CBS {}", this);
 
@@ -448,4 +458,4 @@ public class Configuration {
 
 
 
-}
\ No newline at end of file
+}
index a5d8ba7..5fbb4dc 100644 (file)
@@ -2,7 +2,7 @@
  *  ============LICENSE_START=======================================================
  *  son-handler
  *  ================================================================================
- *   Copyright (C) 2019 Wipro Limited.
+ *   Copyright (C) 2019-2020 Wipro Limited.
  *   ==============================================================================
  *     Licensed under the Apache License, Version 2.0 (the "License");
  *     you may not use this file except in compliance with the License.
@@ -26,6 +26,8 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import fj.data.Either;
 
 import java.io.IOException;
+
+import org.json.JSONObject;
 import org.onap.dcaegen2.services.sonhms.dao.DmaapNotificationsRepository;
 import org.onap.dcaegen2.services.sonhms.dao.PerformanceNotificationsRepository;
 import org.onap.dcaegen2.services.sonhms.model.Notification;
@@ -35,51 +37,59 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class DmaapNotificationsComponent {
-    
-    private static Logger log = LoggerFactory.getLogger(DmaapNotificationsComponent.class);
-    
-    /**
-     * Get sdnr notifications.
-     */
-    public Either<Notification, Integer> getSdnrNotifications() {
-        DmaapNotificationsRepository dmaapNotificationsRepository = BeanUtil
-                .getBean(DmaapNotificationsRepository.class);
-        String notificationString = dmaapNotificationsRepository.getNotificationFromQueue();
-        if (notificationString == null) {
-            return Either.right(404);
-        }
-        ObjectMapper mapper = new ObjectMapper();
 
-        Notification notification = new Notification();
-        try {
-            notification = mapper.readValue(notificationString, Notification.class);
-            return Either.left(notification);
-        } catch (IOException e) {
-            log.error("Exception in parsing notification", notificationString, e);
-            return Either.right(400);
-        }
-    }
-    
-    /**
-     * Get pm notifications.
-     */
-    public Either<PmNotification,Integer> getPmNotifications() {
-        PerformanceNotificationsRepository pmNotificationRepository =
-                BeanUtil.getBean(PerformanceNotificationsRepository.class);
-        String pmNotificationString = pmNotificationRepository.getPerformanceNotificationFromQueue();
-        if (pmNotificationString == null) {
-            return Either.right(404);
-        }
-        ObjectMapper mapper = new ObjectMapper();        
-        PmNotification pmNotification = new PmNotification();
-        
-        try {
-            pmNotification = mapper.readValue(pmNotificationString, PmNotification.class);
-            return Either.left(pmNotification);
-        } catch (IOException e)  {
-            log.error("Exception in parsing pm notification ",pmNotificationString,e);
-            return Either.right(400);
-        }
-    }
+       private static Logger log = LoggerFactory.getLogger(DmaapNotificationsComponent.class);
+
+       /**
+        * Get sdnr notifications.
+        */
+       public Either<Notification, Integer> getSdnrNotifications() {
+               DmaapNotificationsRepository dmaapNotificationsRepository = BeanUtil
+                               .getBean(DmaapNotificationsRepository.class);
+               String notificationString = dmaapNotificationsRepository.getNotificationFromQueue();
+               if (notificationString == null) {
+                       return Either.right(404);
+               }
+               ObjectMapper mapper = new ObjectMapper();
+
+               Notification notification = new Notification();
+               try { 
+                       notification = mapper.readValue(notificationString, Notification.class);
+                       return Either.left(notification);
+               } catch (IOException e) {
+                       log.error("Exception in parsing notification", notificationString, e);
+                       return Either.right(400);
+               }
+       }
+
+       /**
+        * Get pm notifications.
+        */
+       public Either<PmNotification, Integer> getPmNotifications() {
+               PerformanceNotificationsRepository pmNotificationRepository = BeanUtil
+                               .getBean(PerformanceNotificationsRepository.class);
+               String pmNotificationString = pmNotificationRepository.getPerformanceNotificationFromQueue();
+               if (pmNotificationString == null) {
+                       return Either.right(404);
+               }
+               try {
+                       JSONObject obj = new JSONObject(pmNotificationString);
+                        Configuration configuration = Configuration.getInstance();
+                       String configNfNamingCode = configuration.getNfNamingCode();
+                       String nfNamingCode = obj.getJSONObject("event").getJSONObject("commonEventHeader")
+                                       .getString("nfNamingCode");
+                       if (!nfNamingCode.equalsIgnoreCase(configNfNamingCode)) {
+                               return Either.right(404);
+                       }
+                       ObjectMapper mapper = new ObjectMapper();
+                       PmNotification pmNotification = new PmNotification();
+                       pmNotification = mapper.readValue(pmNotificationString, PmNotification.class);
+                       return Either.left(pmNotification);
+               } catch (Exception e) {
+                       log.error("Exception in parsing pm notification ", pmNotificationString, e);
+                       return Either.right(400);
+               }
+       }
 
 }
+
index d1bf351..9f889da 100644 (file)
@@ -2,7 +2,7 @@
  *  ============LICENSE_START=======================================================
  *  son-handler
  *  ================================================================================
- *   Copyright (C) 2019 Wipro Limited.
+ *   Copyright (C) 2019-2020 Wipro Limited.
  *   ==============================================================================
  *     Licensed under the Apache License, Version 2.0 (the "License");
  *     you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.json.JSONObject;
 import org.onap.dcaegen2.services.sonhms.dao.FaultNotificationsRepository;
 import org.onap.dcaegen2.services.sonhms.utils.BeanUtil;
 import org.slf4j.Logger;
@@ -36,35 +37,40 @@ import org.slf4j.LoggerFactory;
 
 public class FaultNotificationComponent {
 
-    private static Logger log = LoggerFactory.getLogger(FaultNotificationComponent.class);
+       private static Logger log = LoggerFactory.getLogger(FaultNotificationComponent.class);
 
-    /**
-     * Get fault notifications.
-     */
-    public Either<List<FaultEvent>, Integer> getFaultNotifications() {
-        FaultNotificationsRepository faultNotificationsRepository = BeanUtil
-                .getBean(FaultNotificationsRepository.class);
-        String notificationString = faultNotificationsRepository.getFaultNotificationFromQueue();
-        log.info("get fault notifications method");
-        if (notificationString == null) {
-            return Either.right(404);
-        }
-        ObjectMapper mapper = new ObjectMapper();
-        FaultEvent faultEvent = new FaultEvent();
-        List<FaultEvent> faultEvents = new ArrayList<>();
-        try {
-            faultEvent = mapper.readValue(notificationString, FaultEvent.class);
-            log.info("Parsing FM notification");
-
-        } catch (IOException e) {
-            log.error("Exception in parsing Notification {}", e);
-            return Either.right(400);
-        }
-
-        faultEvents.add(faultEvent);
-
-        return Either.left(faultEvents);
-
-    }
+       /**
+        * Get fault notifications.
+        */
+       public Either<List<FaultEvent>, Integer> getFaultNotifications() {
+               FaultNotificationsRepository faultNotificationsRepository = BeanUtil
+                               .getBean(FaultNotificationsRepository.class);
+               String notificationString = faultNotificationsRepository.getFaultNotificationFromQueue();
+               log.info("get fault notifications method");
+               if (notificationString == null) {
+                       return Either.right(404);
+               }
+               try {
+                       JSONObject obj = new JSONObject(notificationString);
+                        Configuration configuration = Configuration.getInstance();
+                       String configNfNamingCode = configuration.getNfNamingCode();
+                       String nfNamingCode = obj.getJSONObject("event").getJSONObject("commonEventHeader")
+                                       .getString("nfNamingCode");
+                       if (!nfNamingCode.equalsIgnoreCase(configNfNamingCode)) {
+                               return Either.right(404);
+                       }
+                       ObjectMapper mapper = new ObjectMapper();
+                       FaultEvent faultEvent = new FaultEvent();
+                       List<FaultEvent> faultEvents = new ArrayList<>();
+                       faultEvent = mapper.readValue(notificationString, FaultEvent.class);
+                       log.info("Parsing FM notification");
+                       faultEvents.add(faultEvent);
+                       return Either.left(faultEvents);
+               } catch (Exception e) {
+                       log.error("Exception in parsing Notification {}", e);
+                       return Either.right(400);
+               }
+       }
 
 }
+
index 16f7518..972b1f4 100644 (file)
@@ -2,7 +2,7 @@
  *  ============LICENSE_START=======================================================
  *  son-handler
  *  ================================================================================
- *   Copyright (C) 2019 Wipro Limited.
+ *   Copyright (C) 2019-2020 Wipro Limited.
  *   ==============================================================================
  *     Licensed under the Apache License, Version 2.0 (the "License");
  *     you may not use this file except in compliance with the License.
@@ -75,7 +75,7 @@ public class PolicyNotification {
         this.version = "1.0.2";
         this.action = action;
         this.target = "generic-vnf.vnf-id";
-        this.targetType = "VNF";
+        this.targetType = "PNF";
         this.aai = new HashMap<>();
         aai.put("generic-vnf.is-closed-loop-disabled", "false");
         aai.put("generic-vnf.prov-status", "ACTIVE");
index 4b36b32..4a3fb42 100644 (file)
@@ -2,7 +2,7 @@
  *  ============LICENSE_START=======================================================
  *  son-handler
  *  ================================================================================
- *   Copyright (C) 2019 Wipro Limited.
+ *   Copyright (C) 2019-2020 Wipro Limited.
  *   ==============================================================================
  *     Licensed under the Apache License, Version 2.0 (the "License");
  *     you may not use this file except in compliance with the License.
@@ -37,6 +37,7 @@ import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 import org.onap.dcaegen2.services.sonhms.dao.DmaapNotificationsRepository;
 import org.onap.dcaegen2.services.sonhms.dao.PerformanceNotificationsRepository;
 import org.onap.dcaegen2.services.sonhms.model.Notification;
@@ -51,29 +52,33 @@ import org.springframework.test.context.junit4.SpringRunner;
 
 @RunWith(PowerMockRunner.class)
 @PowerMockRunnerDelegate(SpringRunner.class)
-@PrepareForTest({ BeanUtil.class })
+@PrepareForTest({ BeanUtil.class, Configuration.class })
 @SpringBootTest(classes = DmaapNotificationsComponentTest.class)
 
 public class DmaapNotificationsComponentTest {
 
        @Mock
        DmaapNotificationsRepository dmaapNotificationsRepositoryMock;
-       
+
        @Mock
        PerformanceNotificationsRepository performanceNotificationsRepositoryMock;
 
+       @Mock
+       Configuration configurationMock;
+
        @InjectMocks
        DmaapNotificationsComponent component;
 
        static String notificationString;
        static String pmNotificationString;
-
+       static String pmNotificationString2;
 
        @BeforeClass
        public static void setupTest() {
 
                notificationString = readFromFile("/notification1.json");
-               pmNotificationString=readFromFile("/pmNotification.json");
+               pmNotificationString = readFromFile("/pmNotification.json");
+               pmNotificationString2 = readFromFile("/pmNotification2.json");
 
        }
 
@@ -84,38 +89,56 @@ public class DmaapNotificationsComponentTest {
                                .thenReturn(dmaapNotificationsRepositoryMock);
                when(dmaapNotificationsRepositoryMock.getNotificationFromQueue()).thenReturn(notificationString);
 
-
                Either<Notification, Integer> result = component.getSdnrNotifications();
-               //assertTrue(result.isLeft());
+               // assertTrue(result.isLeft());
                assertNotNull(result.left().value());
-               
+
                when(dmaapNotificationsRepositoryMock.getNotificationFromQueue()).thenReturn("notification");
 
-        result = component.getSdnrNotifications();
-        int resultRight = result.right().value();
-        assertEquals(400, resultRight);
-               
+               result = component.getSdnrNotifications();
+               int resultRight = result.right().value();
+               assertEquals(400, resultRight);
+
        }
-       
+
        @Test
        public void getPmNotificationsTest() {
-           PowerMockito.mockStatic(BeanUtil.class);
-        PowerMockito.when(BeanUtil.getBean(PerformanceNotificationsRepository.class))
-                .thenReturn(performanceNotificationsRepositoryMock);
-        when(performanceNotificationsRepositoryMock.getPerformanceNotificationFromQueue()).thenReturn(pmNotificationString);
-        
-        Either<PmNotification,Integer> result = component.getPmNotifications();
-        assertTrue(result.isLeft());
-        assertNotNull(result.left().value());
-        
-        when(performanceNotificationsRepositoryMock.getPerformanceNotificationFromQueue()).thenReturn("pmNotification");
-        result = component.getPmNotifications();
-        int res= result.right().value();
-        assertEquals(400,res);
-        
+               PowerMockito.mockStatic(BeanUtil.class);
+               PowerMockito.when(BeanUtil.getBean(PerformanceNotificationsRepository.class))
+                               .thenReturn(performanceNotificationsRepositoryMock);
+               when(performanceNotificationsRepositoryMock.getPerformanceNotificationFromQueue())
+                               .thenReturn(pmNotificationString);
+               PowerMockito.mockStatic(Configuration.class);
+               PowerMockito.when(Configuration.getInstance()).thenReturn(configurationMock);
+               when(configurationMock.getNfNamingCode()).thenReturn("RansimAgent");
+               Either<PmNotification, Integer> result = component.getPmNotifications();
+               assertTrue(result.isLeft());
+               assertNotNull(result.left().value());
+               when(performanceNotificationsRepositoryMock.getPerformanceNotificationFromQueue()).thenReturn("pmNotification");
+               result = component.getPmNotifications();
+               int res = result.right().value();
+               assertEquals(400, res);
+
+       }
+
+       @Test
+       public void getPmNotificationsORanNotifTest() {
+               PowerMockito.mockStatic(BeanUtil.class);
+               PowerMockito.when(BeanUtil.getBean(PerformanceNotificationsRepository.class))
+                               .thenReturn(performanceNotificationsRepositoryMock);
+               PowerMockito.mockStatic(Configuration.class);
+               PowerMockito.when(Configuration.getInstance()).thenReturn(configurationMock);
+               when(configurationMock.getNfNamingCode()).thenReturn("RansimAgent");
+               when(performanceNotificationsRepositoryMock.getPerformanceNotificationFromQueue())
+                               .thenReturn(pmNotificationString2);
+               Either<PmNotification, Integer> result = component.getPmNotifications();
+               result = component.getPmNotifications();
+               int res = result.right().value();
+               assertEquals(404, res);
+
        }
 
-       private static String readFromFile(String file) { 
+       private static String readFromFile(String file) {
                String content = new String();
                try {
 
@@ -135,3 +158,4 @@ public class DmaapNotificationsComponentTest {
        }
 
 }
+
diff --git a/src/test/resources/pmNotification2.json b/src/test/resources/pmNotification2.json
new file mode 100644 (file)
index 0000000..b55f489
--- /dev/null
@@ -0,0 +1,45 @@
+ {
+   "event":{
+      "commonEventHeader":{
+         "version":"4.0.1",
+         "domain":"measurement",
+         "eventName":"Measurement_RansimAgent-Wipro_HandoffMetric",
+         "eventId":"measurement000001",
+         "sequence":0,
+         "priority":"Normal",
+         "reportingEntityId":"cc305d54-75b4-431b-adb2-eb6b9e541234",
+         "reportingEntityName":"ncserver1",
+         "sourceId":"de305d54-75b4-431b-adb2-eb6b9e546456",
+         "sourceName":"Chn0002",
+         "startEpochMicrosec":1551772223000000,
+         "lastEpochMicrosec":1551790542000000,
+         "nfNamingCode":"SDN",
+         "nfVendorName":"Wipro",
+         "vesEventListenerVersion":"7.0.1",
+         "timeZoneOffset":"UTC-05:30"
+      },
+      "measurementFields":{
+         "measurementInterval":180,
+         "measurementFieldsVersion":"4.0",
+         "additionalMeasurements":[
+            {
+               "hashMap":{
+                  "networkId":"plmnid1",
+                  "InterEnbOutAtt_X2HO":"300",
+                  "InterEnbOutSucc_X2HO":"100"
+               },
+               "name":"Chn0004"
+            },
+            {
+               "hashMap":{
+                 "networkId":"plmnid1",
+                  "InterEnbOutAtt_X2HO":"250",
+                  "InterEnbOutSucc_X2HO":"100"
+               },
+               "name":"Chn0001"
+            }
+         ]
+      }
+   }
+}
index 35fe06c..767c024 100644 (file)
@@ -3,7 +3,7 @@
        "closedLoopAlarmStart": 1542445563201,
        "closedLoopEventClient": "microservice.PCI",
        "closedLoopEventStatus": "ONSET",
-       "target_type": "VNF",
+       "target_type": "PNF",
        "target": "generic-vnf.vnf-id",
        "requestID": "a4130fd5-2291-4a83-8992-04e4c9f32731",
        "from": "PCIMS",
index 3aceb23..4d7ae66 100644 (file)
@@ -2,7 +2,7 @@
 #  ============LICENSE_START=======================================================
 #  son-handler
 #  ================================================================================
-#   Copyright (C) 2019 Wipro Limited.
+#   Copyright (C) 2019-2020 Wipro Limited.
 #   ==============================================================================
 #     Licensed under the Apache License, Version 2.0 (the "License");
 #     you may not use this file except in compliance with the License.
@@ -20,7 +20,7 @@
 ###############################################################################
 major=2
 minor=0
-patch=0
+patch=1
 base_version=${major}.${minor}.${patch}
 release_version=${base_version}
 snapshot_version=${base_version}-SNAPSHOT