Increase code coverage 96/102496/1
authorniranjana <niranjana.y60@wipro.com>
Thu, 27 Feb 2020 12:54:48 +0000 (18:24 +0530)
committerniranjana <niranjana.y60@wipro.com>
Thu, 27 Feb 2020 12:54:48 +0000 (18:24 +0530)
Issue-ID: DCAEGEN2-2023
Signed-off-by: niranjana <niranjana.y60@wipro.com>
Change-Id: Ifbc6817108fbbdfe21a4aa0f94cbb67c422c73c6

23 files changed:
src/main/java/org/onap/dcaegen2/services/sonhms/Application.java
src/main/java/org/onap/dcaegen2/services/sonhms/SonController.java
src/main/java/org/onap/dcaegen2/services/sonhms/controller/HealthCheck.java
src/main/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyDmaapClient.java
src/test/java/org/onap/dcaegen2/services/sonhms/ConfigurationTest.java
src/test/java/org/onap/dcaegen2/services/sonhms/EventHandlerTest.java
src/test/java/org/onap/dcaegen2/services/sonhms/HoMetricsComponentTest.java
src/test/java/org/onap/dcaegen2/services/sonhms/NewFmNotificationTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/NewPmNotificationTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/NewSdnrNotificationTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/TimerTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyNotificationCallbackDuplicate.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyNotificationCallbackTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/entity/FixedPciCellsTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/entity/PciUpdateTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/entity/PerformanceNotificationsTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/model/AnrInputTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/model/ClusterMapTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/model/FlagTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/model/StatusTest.java [new file with mode: 0644]
src/test/java/org/onap/dcaegen2/services/sonhms/restclient/CellInfoTest.java
src/test/java/org/onap/dcaegen2/services/sonhms/utils/SonHandlerRestTemplateTest.java [new file with mode: 0644]
src/test/resources/faultNotification.json [new file with mode: 0644]

index 71dabff..af98814 100644 (file)
@@ -94,6 +94,7 @@ public class Application {
             Thread.sleep(10000);
         } catch (InterruptedException e) {
             log.debug("InterruptedException : {}", e);
+            Thread.currentThread().interrupt();
         }
         log.info("after 10s sleep");
     }
index 3c7d6ac..54f9b8f 100644 (file)
@@ -39,7 +39,7 @@ public class SonController {
     SonRequestsComponent pciRequestsComponent;
 
     @RequestMapping(value = "/callbackUrl", method = RequestMethod.POST)
-    String callBackUrl(@RequestBody AsyncResponseBody callback) {
+    public String callBackUrl(@RequestBody AsyncResponseBody callback) {
         log.debug("received request to callback url");
         String async = callback.toString();
         log.debug("AsyncResponseBody{}", async);
index 322c113..4a7f8ce 100644 (file)
@@ -30,7 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 public class HealthCheck {
     @RequestMapping(value = "/healthcheck", method = RequestMethod.GET)
-    ResponseEntity<HttpStatus> healthCheck() {
+    public ResponseEntity<HttpStatus> healthCheck() {
         return new ResponseEntity<>(HttpStatus.OK);
     }
 }
index 1a8456f..0a9d329 100644 (file)
@@ -103,9 +103,9 @@ public class PolicyDmaapClient {
                         int status = payloadObject.getConfiguration().get(0).getStatus().getCode();
                         String statusToString = Integer.toString(status);
                         log.info("response from policy, status code {}", statusToString);
+                        return true;
 
                     }
-                    return true;
                 }
             } catch (IOException e) {
                 log.info("caught io exception while fetching policy response");
index 8fb4087..ed023e2 100644 (file)
@@ -72,6 +72,8 @@ public class ConfigurationTest {
         configuration.setPollingTimeout(100);
         configuration.setConfigDbService("sdnrService");
         configuration.setSourceId("sourceId");
+        configuration.setPolicyNegativeAckThreshold(3);
+        configuration.setPolicyFixedPciTimeInterval(5000);
         assertEquals(60, configuration.getBufferTime());
         assertEquals("/callbackUrl", configuration.getCallbackUrl());
         assertEquals("cg", configuration.getCg());
@@ -103,5 +105,7 @@ public class ConfigurationTest {
         assertEquals(3, configuration.getPoorCountThreshold());
         assertEquals(subscribes, configuration.getStreamsSubscribes());
         assertEquals(subscribes, configuration.getStreamsPublishes());
+        assertEquals(3,configuration.getPolicyNegativeAckThreshold());
+        assertEquals(5000, configuration.getPolicyFixedPciTimeInterval());
     }
 }
index 8f161a7..0972661 100644 (file)
@@ -46,8 +46,15 @@ import org.mockito.runners.MockitoJUnitRunner;
 import org.onap.dcaegen2.services.sonhms.child.Graph;
 import org.onap.dcaegen2.services.sonhms.entity.ClusterDetails;
 import org.onap.dcaegen2.services.sonhms.exceptions.ConfigDbNotFoundException;
+import org.onap.dcaegen2.services.sonhms.model.CellPciPair;
 import org.onap.dcaegen2.services.sonhms.model.FapServiceList;
+import org.onap.dcaegen2.services.sonhms.model.LteNeighborListInUseLteCell;
+import org.onap.dcaegen2.services.sonhms.model.NeighborListInUse;
 import org.onap.dcaegen2.services.sonhms.model.Notification;
+import org.onap.dcaegen2.services.sonhms.model.NotificationCellConfig;
+import org.onap.dcaegen2.services.sonhms.model.NotificationLte;
+import org.onap.dcaegen2.services.sonhms.model.NotificationRan;
+import org.onap.dcaegen2.services.sonhms.model.X0005b9Lte;
 import org.onap.dcaegen2.services.sonhms.utils.ClusterUtils;
 import org.onap.dcaegen2.services.sonhms.utils.ClusterUtilsTest;
 import org.onap.dcaegen2.services.sonhms.utils.ThreadUtils;
@@ -68,7 +75,7 @@ public class EventHandlerTest {
     
     private static Notification notification;
     private static List<ClusterDetails> clusterDetails = new ArrayList<>();
-    
+    private static FaultEvent faultEvent;
     @InjectMocks
     EventHandler eventHandler;
     
@@ -76,15 +83,20 @@ public class EventHandlerTest {
     public void setup() {
         
         notification = new Notification();
+        faultEvent = new FaultEvent();
+
         String notificationString = readFromFile("/notification3.json");
         String clusterInfo1 = readFromFile("/clusterInfo1.json");
         String clusterInfo2 = readFromFile("/clusterInfo2.json");
         String clusterInfo3 = readFromFile("/clusterInfo3.json");
         String clusterInfo4 = readFromFile("/clusterInfo4.json");
+        String faultInfo = readFromFile("/faultNotification.json");
         ObjectMapper mapper = new ObjectMapper();
         
         try {
             notification = mapper.readValue(notificationString, Notification.class);
+            faultEvent = mapper.readValue(faultInfo, FaultEvent.class);
+
         } catch (IOException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
@@ -98,7 +110,7 @@ public class EventHandlerTest {
   
     }
     
-    @Test
+    @Test 
     public void handleSdnrNotificationTest() {
         
         String clusterInfo7 = readFromFile("/clusterInfo7.json");
@@ -130,7 +142,160 @@ public class EventHandlerTest {
         
         
     }
-    
+
+       @Test
+       public void handleMatchingCellsTest() {
+
+               FapServiceList fapServiceList = notification.getPayload().getRadioAccess().getFapServiceList().get(0);
+               Map<FapServiceList, String> cellsinCluster = new HashMap<>();
+               cellsinCluster.put(fapServiceList, "value1");
+               String clusterInfo = readFromFile("/clusterInfo7.json");
+               Graph cluster = new Graph(clusterInfo);
+               NotificationToClusterMapping mapping = new NotificationToClusterMapping();
+               List<FapServiceList> newCells = new ArrayList<>();
+               newCells.add(notification.getPayload().getRadioAccess().getFapServiceList().get(0));
+               mapping.setCellsinCluster(cellsinCluster);
+               mapping.setNewCells(newCells);
+               Either<Graph, Integer> existingCluster = Either.right(404);
+               Either<ClusterDetails, Integer> clusterDetail = Either.right(404);
+
+               Mockito.when(clusterutilsMock.getAllClusters()).thenReturn(clusterDetails);
+               Mockito.when(clusterutilsMock.getClustersForNotification(notification, clusterDetails)).thenReturn(mapping);
+               Mockito.when(clusterutilsMock.getClusterForCell(Mockito.any(), Mockito.any())).thenReturn(existingCluster);
+               Mockito.when(threadUtilsMock.createNewThread(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(),
+                               Mockito.anyString())).thenReturn(true);
+               Mockito.when(clusterutilsMock.getClusterDetailsFromClusterId(Mockito.any(), Mockito.any()))
+                               .thenReturn(clusterDetail);
+
+               try {
+                       Mockito.when(clusterutilsMock.createCluster(Mockito.any())).thenReturn(cluster);
+               } catch (ConfigDbNotFoundException e1) {
+                       e1.printStackTrace();
+               }
+               Assert.assertEquals(true, eventHandler.handleSdnrNotification(notification));
+
+       }
+
+       @Test
+       public void handleFaultNotificationTest() {
+               List<FaultEvent> fmNotification = new ArrayList<FaultEvent>();
+               fmNotification.add(faultEvent);
+               Map<String, String> cellsinCluster = new HashMap<String, String>();
+               cellsinCluster.put("45", "0");
+               cellsinCluster.put("46", "1");
+               List<String> newCells = new ArrayList<>();
+               newCells.add(notification.getPayload().getRadioAccess().getFapServiceList().get(0).toString());
+               FaultNotificationtoClusterMapping faultNotificationtoClusterMapping = new FaultNotificationtoClusterMapping();
+               faultNotificationtoClusterMapping.setCellsinCluster(cellsinCluster);
+               faultNotificationtoClusterMapping.setNewCells(newCells);
+               Mockito.when(clusterutilsMock.getAllClusters()).thenReturn(clusterDetails);
+               Mockito.when(clusterutilsMock.getClustersForFmNotification(Mockito.any(), Mockito.any()))
+                               .thenReturn(faultNotificationtoClusterMapping);
+               HashMap<CellPciPair, ArrayList<CellPciPair>> clusterMap = new HashMap<CellPciPair, ArrayList<CellPciPair>>();
+               ArrayList<CellPciPair> cellPciPairList = new ArrayList<CellPciPair>();
+               CellPciPair cellPciPair = new CellPciPair();
+               cellPciPair.setCellId("45");
+               cellPciPair.setPhysicalCellId(310);
+               cellPciPairList.add(cellPciPair);
+               clusterMap.put(cellPciPair, cellPciPairList);
+
+               try {
+                       Mockito.when(clusterutilsMock.findClusterMap(Mockito.any())).thenReturn(clusterMap);
+               } catch (ConfigDbNotFoundException e) {
+                       e.printStackTrace();
+               }
+
+               HashMap<Long, String> childStatus = new HashMap<Long, String>();
+               childStatus.put((long) 1, "triggeredOof");
+               ArrayList<Integer> collisionConfusionCount = new ArrayList<Integer>();
+               collisionConfusionCount.add(1);
+               collisionConfusionCount.add(2);
+               HashMap<String, ArrayList<Integer>> collisionConfusionMap = new HashMap<String, ArrayList<Integer>>();
+               collisionConfusionMap.put("45", collisionConfusionCount);
+               Graph graph = new Graph();
+               graph.setCollisionConfusionMap(collisionConfusionMap);
+               ClusterDetails clusterDetails = new ClusterDetails();
+               clusterDetails.setChildThreadId(1);
+               Either<ClusterDetails, Integer> clusterDetail = Either.right(404);
+               Mockito.when(clusterutilsMock.getClusterDetailsFromClusterId(Mockito.any(), Mockito.any()))
+                               .thenReturn(clusterDetail);
+               Either<Graph, Integer> existingCluster = Either.left(graph);
+               Mockito.when(clusterutilsMock.getClusterForFmCell(Mockito.any(), Mockito.any())).thenReturn(existingCluster);
+
+               try {
+                       Mockito.when(clusterutilsMock.findClusterMap(Mockito.any())).thenReturn(clusterMap);
+                       Mockito.when(clusterutilsMock.createCluster(Mockito.any())).thenReturn(graph);
+                       Mockito.when(clusterutilsMock.modifyCluster(Mockito.any(), Mockito.any())).thenReturn(graph);
+                       Mockito.when(clusterutilsMock.getClusterForCell(Mockito.any(), Mockito.any())).thenReturn(existingCluster);
+
+               } catch (ConfigDbNotFoundException e) {
+                       e.printStackTrace();
+               }
+
+               Assert.assertEquals(true, eventHandler.handleFaultNotification(fmNotification));
+
+       }
+
+       @Test
+       public void handleFaultNotificationtest() {
+
+               List<FaultEvent> fmNotification = new ArrayList<FaultEvent>();
+               fmNotification.add(faultEvent);
+               Map<String, String> cellsinCluster = new HashMap<String, String>();
+               cellsinCluster.put("45", "0");
+               cellsinCluster.put("46", "1");
+               List<String> newCells = new ArrayList<>();
+               newCells.add(notification.getPayload().getRadioAccess().getFapServiceList().get(0).toString());
+               FaultNotificationtoClusterMapping faultNotificationtoClusterMapping = new FaultNotificationtoClusterMapping();
+               faultNotificationtoClusterMapping.setCellsinCluster(cellsinCluster);
+               faultNotificationtoClusterMapping.setNewCells(newCells);
+               Mockito.when(clusterutilsMock.getAllClusters()).thenReturn(clusterDetails);
+               Mockito.when(clusterutilsMock.getClustersForFmNotification(Mockito.any(), Mockito.any()))
+                               .thenReturn(faultNotificationtoClusterMapping);
+               HashMap<CellPciPair, ArrayList<CellPciPair>> clusterMap = new HashMap<CellPciPair, ArrayList<CellPciPair>>();
+               ArrayList<CellPciPair> cellPciPairList = new ArrayList<CellPciPair>();
+               CellPciPair cellPciPair = new CellPciPair();
+               cellPciPair.setCellId("45");
+               cellPciPair.setPhysicalCellId(310);
+               cellPciPairList.add(cellPciPair);
+               clusterMap.put(cellPciPair, cellPciPairList);
+
+               try {
+                       Mockito.when(clusterutilsMock.findClusterMap(Mockito.any())).thenReturn(clusterMap);
+               } catch (ConfigDbNotFoundException e) {
+                       e.printStackTrace();
+               }
+
+               ArrayList<Integer> collisionConfusionCount = new ArrayList<Integer>();
+               collisionConfusionCount.add(1);
+               collisionConfusionCount.add(2);
+               HashMap<String, ArrayList<Integer>> collisionConfusionMap = new HashMap<String, ArrayList<Integer>>();
+               collisionConfusionMap.put("45", collisionConfusionCount);
+               Graph graph = new Graph();
+               graph.setCollisionConfusionMap(collisionConfusionMap);
+               ClusterDetails clusterDetails = new ClusterDetails();
+               clusterDetails.setChildThreadId((long) 1);
+               Either<ClusterDetails, Integer> clusterDetail = Either.right(404);
+
+               Mockito.when(clusterutilsMock.getClusterDetailsFromClusterId(Mockito.any(), Mockito.any()))
+                               .thenReturn(clusterDetail);
+               Either<Graph, Integer> existingCluster = Either.right(404);
+               Mockito.when(clusterutilsMock.getClusterForFmCell(Mockito.any(), Mockito.any())).thenReturn(existingCluster);
+
+               try {
+                       Mockito.when(clusterutilsMock.findClusterMap(Mockito.any())).thenReturn(clusterMap);
+                       Mockito.when(clusterutilsMock.createCluster(Mockito.any())).thenReturn(graph);
+                       Mockito.when(clusterutilsMock.modifyCluster(Mockito.any(), Mockito.any())).thenReturn(graph);
+                       Mockito.when(clusterutilsMock.getClusterForCell(Mockito.any(), Mockito.any())).thenReturn(existingCluster);
+
+               } catch (ConfigDbNotFoundException e) {
+                       e.printStackTrace();
+               }
+
+               Assert.assertEquals(true, eventHandler.handleFaultNotification(fmNotification));
+
+       }
+
     private static String readFromFile(String file) {
         String content  = new String();
         try {
index 4bc4a33..56f1fba 100644 (file)
@@ -99,6 +99,14 @@ public class HoMetricsComponentTest {
         when(handOverMetricsRepositoryMock.findAll()).thenReturn(null);
         assertTrue(hoMetricsComponent.getAll().isRight());
     }
+
+       @Test
+       public void update() {
+               PowerMockito.mockStatic(BeanUtil.class);
+               PowerMockito.when(BeanUtil.getBean(HandOverMetricsRepository.class)).thenReturn(handOverMetricsRepositoryMock);
+               assertEquals(true, hoMetricsComponent.update("HODetails", "12"));
+       }
+
     private static String readFromFile(String file) { 
         String content = new String();
         try {
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/NewFmNotificationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/NewFmNotificationTest.java
new file mode 100644 (file)
index 0000000..ba4dc45
--- /dev/null
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ *  ============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;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class NewFmNotificationTest {
+
+       @Test
+       public void test() {
+               NewFmNotification newFmNotification = new NewFmNotification(true);
+               newFmNotification.setNewNotif(true);
+               assertTrue(newFmNotification.getNewNotif());
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/NewPmNotificationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/NewPmNotificationTest.java
new file mode 100644 (file)
index 0000000..1bb581c
--- /dev/null
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ *  ============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;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class NewPmNotificationTest {
+
+       @Test
+       public void test() {
+               NewPmNotification newPmNotification = new NewPmNotification();
+               newPmNotification.setNewNotif(true);
+               assertTrue(newPmNotification.getNewNotif());
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/NewSdnrNotificationTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/NewSdnrNotificationTest.java
new file mode 100644 (file)
index 0000000..48398f7
--- /dev/null
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ *  ============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;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class NewSdnrNotificationTest {
+
+       @Test
+       public void test() {
+
+               NewSdnrNotification newSdnrNotification = new NewSdnrNotification();
+               newSdnrNotification.setNewNotif(true);
+               assertTrue(newSdnrNotification.getNewNotif());
+
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/TimerTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/TimerTest.java
new file mode 100644 (file)
index 0000000..34df573
--- /dev/null
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ *  ============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;
+
+import static org.junit.Assert.*;
+
+import java.sql.Timestamp;
+
+import org.junit.Test;
+
+public class TimerTest {
+
+       @Test
+       public void test() {
+               Timestamp timestamp = null;
+               Timer timer = new Timer();
+               timer.setCount(2);
+               timer.setCurrentTime(timestamp);
+               timer.setIsTimer(true);
+               timer.setStartTime(timestamp);
+               assertEquals(2, timer.getCount());
+               assertEquals(timestamp, timer.getCurrentTime());
+               assertEquals(timestamp, timer.getStartTime());
+               assertEquals(true, timer.getIsTimer());
+
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyNotificationCallbackDuplicate.java b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyNotificationCallbackDuplicate.java
new file mode 100644 (file)
index 0000000..7d3edf6
--- /dev/null
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ *  ============LICENSE_START=======================================================
+ *  son-handler
+ *  ================================================================================
+ *   Copyright (C) 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.
+ *     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 com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.util.List;
+
+import org.onap.dcaegen2.services.sonhms.Configuration;
+import org.onap.dcaegen2.services.sonhms.dao.FixedPciCellsRepository;
+import org.onap.dcaegen2.services.sonhms.dao.PciUpdateRepository;
+import org.onap.dcaegen2.services.sonhms.entity.FixedPciCells;
+import org.onap.dcaegen2.services.sonhms.model.Configurations;
+import org.onap.dcaegen2.services.sonhms.model.Payload;
+import org.onap.dcaegen2.services.sonhms.model.PolicyNotification;
+import org.onap.dcaegen2.services.sonhms.utils.BeanUtil;
+import org.slf4j.Logger;
+
+public class PolicyNotificationCallbackDuplicate extends NotificationCallback {
+
+       private static final Logger log = org.slf4j.LoggerFactory.getLogger(PolicyNotificationCallback.class);
+
+       @Override
+       public void activateCallBack(String msg) {
+               handlePolicyNotification(msg);
+       }
+
+       private static FixedPciCells cell;
+
+       public FixedPciCells returnResult() {
+               return cell;
+       }
+       
+       public void setDefaultResult() {
+               cell =null;;
+       }
+
+       private void handlePolicyNotification(String msg) {
+               PciUpdateRepository pciUpdateRepository = BeanUtil.getBean(PciUpdateRepository.class);
+               Configuration configuration = Configuration.getInstance();
+               try {
+                       ObjectMapper mapper = new ObjectMapper();
+                       PolicyNotification policyResponse = mapper.readValue(msg, PolicyNotification.class);
+                       String payload = policyResponse.getPayload();
+                       Payload payloadObject = mapper.readValue(payload, Payload.class);
+                       List<Configurations> configurationList = payloadObject.getConfiguration();
+                       for (Configurations config : configurationList) {
+                               int status = config.getStatus().getCode();
+                               if (status != 200) {
+                                       String cellId = config.getData().getFapservice().getAlias();
+                                       int negativeAckCount = pciUpdateRepository.getNegativeAckCountforCellId(cellId);
+                                       if (negativeAckCount > configuration.getPolicyNegativeAckThreshold()) {
+                                               long fixedPci = pciUpdateRepository.getOldPciforCellId(cellId);
+                                               FixedPciCellsRepository fixedPciCellsRepository = BeanUtil
+                                                               .getBean(FixedPciCellsRepository.class);
+                                               FixedPciCells fixedPciCells = new FixedPciCells();
+                                               fixedPciCells.setCellId(cellId);
+                                               fixedPciCells.setFixedPci(fixedPci);
+                                               cell = fixedPciCellsRepository.save(fixedPciCells);
+                                               pciUpdateRepository.deleterecordforCellId(cellId);
+                                       } else {
+
+                                               pciUpdateRepository.increaseNegativeAckCountforCellId(++negativeAckCount, cellId);
+                                       }
+                               } else {
+
+                                       String cellId = config.getData().getFapservice().getAlias();
+                                       pciUpdateRepository.deleterecordforCellId(cellId);
+                               }
+
+                               String statusToString = Integer.toString(status);
+                               log.info("Handled response from policy, status code {}", statusToString);
+                       }
+               } catch (IOException e) {
+                       log.info("caught io exception while fetching policy response");
+
+               }
+       }
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyNotificationCallbackTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/dmaap/PolicyNotificationCallbackTest.java
new file mode 100644 (file)
index 0000000..8e2b0e9
--- /dev/null
@@ -0,0 +1,147 @@
+
+/*******************************************************************************
+ *  ============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.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.onap.dcaegen2.services.sonhms.Configuration;
+import org.onap.dcaegen2.services.sonhms.dao.FixedPciCellsRepository;
+import org.onap.dcaegen2.services.sonhms.dao.PciUpdateRepository;
+import org.onap.dcaegen2.services.sonhms.entity.FixedPciCells;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.onap.dcaegen2.services.sonhms.utils.BeanUtil;
+
+@RunWith(PowerMockRunner.class)
+@PowerMockRunnerDelegate(SpringRunner.class)
+@SpringBootTest(classes = PolicyNotificationCallbackDuplicate.class)
+@PrepareForTest({ BeanUtil.class, PolicyNotificationCallbackDuplicate.class, Configuration.class })
+public class PolicyNotificationCallbackTest {
+
+       @Mock
+       PciUpdateRepository pciUpdateRepositoryMock;
+       @Mock
+       FixedPciCellsRepository fixedPciCellsRepositoryMock;
+
+       @Test
+       public void policyNotificationCallbackTest() {
+               PolicyNotificationCallbackDuplicate policyCallBackMock = PowerMockito
+                               .spy(new PolicyNotificationCallbackDuplicate());
+               PowerMockito.mockStatic(BeanUtil.class);
+
+               Configuration configuration = Configuration.getInstance();
+               configuration = Configuration.getInstance();
+               configuration.setBufferTime(60);
+               configuration.setCallbackUrl("/callbackUrl");
+               List<String> list = new ArrayList<String>();
+               list.add("server");
+               configuration.setDmaapServers(list);
+               configuration.setCg("cg");
+               configuration.setCid("cid");
+               configuration.setMaximumClusters(5);
+               configuration.setMinCollision(5);
+               configuration.setMinConfusion(5);
+               configuration.setNumSolutions(1);
+               configuration.setOofService("oofService");
+               configuration.setPollingInterval(30);
+               configuration.setPollingTimeout(100);
+               configuration.setConfigDbService("sdnrService");
+               configuration.setSourceId("sourceId");
+               configuration.setPolicyNegativeAckThreshold(3);
+
+               PowerMockito.mockStatic(Configuration.class);
+
+               Mockito.when(Configuration.getInstance()).thenReturn(configuration);
+
+               PowerMockito.when(BeanUtil.getBean(PciUpdateRepository.class)).thenReturn(pciUpdateRepositoryMock);
+               Mockito.when(pciUpdateRepositoryMock.getNegativeAckCountforCellId(Mockito.any())).thenReturn(5);
+               Mockito.when(pciUpdateRepositoryMock.getOldPciforCellId(Mockito.any())).thenReturn((long) 9);
+               PowerMockito.when(BeanUtil.getBean(FixedPciCellsRepository.class)).thenReturn(fixedPciCellsRepositoryMock);
+
+               String positivePolicyNotification = "{\"closedLoopControlName\":null,\"closedLoopAlarmStart\":0,\"closedLoopEventClient\":null,\"closedLoopEventStatus\":null,\"target\":null,\"from\":null,\"version\":null,\"policyName\":null,\"policyVersion\":null,\"payload\":\"{\\\"Configurations\\\":[{\\\"data\\\":{\\\"FAPService\\\":{\\\"alias\\\":\\\"Chn0001\\\",\\\"X0005b9Lte\\\":{\\\"phyCellIdInUse\\\":999,\\\"pnfName\\\":\\\"ncsServer-1\\\"},\\\"CellConfig\\\":{\\\"LTE\\\":{\\\"RAN\\\":{\\\"Common\\\":{\\\"CellIdentity\\\":\\\"Chn0001\\\"},\\\"NeighborListInUse\\\":null}}}}},\\\"Status\\\":{\\\"Code\\\":200,\\\"Value\\\":\\\"fail\\\"}}]}\",\"target_type\":null,\"requestID\":null,\"AAI\":null,\"Action\":null}";
+               policyCallBackMock.activateCallBack(positivePolicyNotification);
+               assertNull(policyCallBackMock.returnResult());
+
+       }
+
+       public void negativePolicyNotificationCallbackTest() {
+
+               PolicyNotificationCallbackDuplicate policyCallBackMock = PowerMockito
+                               .spy(new PolicyNotificationCallbackDuplicate());
+
+               PowerMockito.mockStatic(BeanUtil.class);
+
+               Configuration configuration = Configuration.getInstance();
+
+               configuration = Configuration.getInstance();
+               configuration.setBufferTime(60);
+               configuration.setCallbackUrl("/callbackUrl");
+               List<String> list = new ArrayList<String>();
+               list.add("server");
+               configuration.setDmaapServers(list);
+               configuration.setCg("cg");
+               configuration.setCid("cid");
+               configuration.setMaximumClusters(5);
+               configuration.setMinCollision(5);
+               configuration.setMinConfusion(5);
+               configuration.setNumSolutions(1);
+               configuration.setOofService("oofService");
+               configuration.setPollingInterval(30);
+               configuration.setPollingTimeout(100);
+               configuration.setConfigDbService("sdnrService");
+               configuration.setSourceId("sourceId");
+               configuration.setPolicyNegativeAckThreshold(3);
+
+               PowerMockito.mockStatic(Configuration.class);
+
+               Mockito.when(Configuration.getInstance()).thenReturn(configuration);
+
+               PowerMockito.when(BeanUtil.getBean(PciUpdateRepository.class)).thenReturn(pciUpdateRepositoryMock);
+               Mockito.when(pciUpdateRepositoryMock.getOldPciforCellId(Mockito.any())).thenReturn((long) 9);
+               PowerMockito.when(BeanUtil.getBean(FixedPciCellsRepository.class)).thenReturn(fixedPciCellsRepositoryMock);
+
+               Mockito.when(pciUpdateRepositoryMock.getNegativeAckCountforCellId(Mockito.any())).thenReturn(2);
+               String negativePolicyNotificationNegCount = "{\"closedLoopControlName\":null,\"closedLoopAlarmStart\":0,\"closedLoopEventClient\":null,\"closedLoopEventStatus\":null,\"target\":null,\"from\":null,\"version\":null,\"policyName\":null,\"policyVersion\":null,\"payload\":\"{\\\"Configurations\\\":[{\\\"data\\\":{\\\"FAPService\\\":{\\\"alias\\\":\\\"Chn0001\\\",\\\"X0005b9Lte\\\":{\\\"phyCellIdInUse\\\":999,\\\"pnfName\\\":\\\"ncsServer-1\\\"},\\\"CellConfig\\\":{\\\"LTE\\\":{\\\"RAN\\\":{\\\"Common\\\":{\\\"CellIdentity\\\":\\\"Chn0001\\\"},\\\"NeighborListInUse\\\":null}}}}},\\\"Status\\\":{\\\"Code\\\":400,\\\"Value\\\":\\\"fail\\\"}}]}\",\"target_type\":null,\"requestID\":null,\"AAI\":null,\"Action\":null}";
+               policyCallBackMock.activateCallBack(negativePolicyNotificationNegCount);
+               assertNull(policyCallBackMock.returnResult());
+
+               Mockito.when(pciUpdateRepositoryMock.getNegativeAckCountforCellId(Mockito.any())).thenReturn(7);
+               Mockito.when(fixedPciCellsRepositoryMock.save(Mockito.any())).thenReturn(new FixedPciCells());
+               String negativePolicyNotification = "{\"closedLoopControlName\":null,\"closedLoopAlarmStart\":0,\"closedLoopEventClient\":null,\"closedLoopEventStatus\":null,\"target\":null,\"from\":null,\"version\":null,\"policyName\":null,\"policyVersion\":null,\"payload\":\"{\\\"Configurations\\\":[{\\\"data\\\":{\\\"FAPService\\\":{\\\"alias\\\":\\\"Chn0001\\\",\\\"X0005b9Lte\\\":{\\\"phyCellIdInUse\\\":999,\\\"pnfName\\\":\\\"ncsServer-1\\\"},\\\"CellConfig\\\":{\\\"LTE\\\":{\\\"RAN\\\":{\\\"Common\\\":{\\\"CellIdentity\\\":\\\"Chn0001\\\"},\\\"NeighborListInUse\\\":null}}}}},\\\"Status\\\":{\\\"Code\\\":400,\\\"Value\\\":\\\"fail\\\"}}]}\",\"target_type\":null,\"requestID\":null,\"AAI\":null,\"Action\":null}";
+               policyCallBackMock.activateCallBack(negativePolicyNotification);
+               assertNotNull(policyCallBackMock.returnResult());
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/entity/FixedPciCellsTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/entity/FixedPciCellsTest.java
new file mode 100644 (file)
index 0000000..b278ee9
--- /dev/null
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ *  ============LICENSE_START=======================================================
+ *  son-handler
+ *  ================================================================================
+ *   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.
+ *     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.entity;
+
+import static org.junit.Assert.*;
+
+import java.sql.Timestamp;
+
+import org.junit.Test;
+
+public class FixedPciCellsTest {
+
+       private Timestamp createdAt;
+
+       @Test
+       public void test() {
+               FixedPciCells fixedPciCells = new FixedPciCells();
+               fixedPciCells.setCellId("Chn0001");
+               fixedPciCells.setFixedPci(5000);
+               fixedPciCells.setCreatedAt(createdAt);
+               assertEquals("Chn0001", fixedPciCells.getCellId());
+               assertEquals(5000, fixedPciCells.getFixedPci());
+               assertEquals(createdAt, fixedPciCells.getCreatedAt());
+
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/entity/PciUpdateTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/entity/PciUpdateTest.java
new file mode 100644 (file)
index 0000000..b66e2ec
--- /dev/null
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ *  ============LICENSE_START=======================================================
+ *  son-handler
+ *  ================================================================================
+ *   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.
+ *     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.entity;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class PciUpdateTest {
+
+       @Test
+       public void test() {
+
+               PciUpdate pciUpdate = new PciUpdate();
+               pciUpdate.setCellId("Chn0001");
+               pciUpdate.setNewPci(5000);
+               pciUpdate.setOldPci(3000);
+               pciUpdate.setNegativeAckCount(3);
+
+               assertEquals("Chn0001", pciUpdate.getCellId());
+               assertEquals(5000, pciUpdate.getNewPci());
+               assertEquals(3000, pciUpdate.getOldPci());
+               assertEquals(3, pciUpdate.getNegativeAckCount());
+
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/entity/PerformanceNotificationsTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/entity/PerformanceNotificationsTest.java
new file mode 100644 (file)
index 0000000..4e82eaf
--- /dev/null
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ *  ============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.entity;
+
+import static org.junit.Assert.*;
+
+import java.sql.Timestamp;
+
+import org.junit.Test;
+
+public class PerformanceNotificationsTest {
+    private Timestamp createdAt;
+
+       @Test
+       public void test() {
+               
+                PerformanceNotifications performanceNotifications = new PerformanceNotifications();
+                performanceNotifications.setNotification("notification");
+                performanceNotifications.setCreatedAt(createdAt);
+            assertEquals("notification", performanceNotifications.getNotification());
+            assertEquals(createdAt, performanceNotifications.getCreatedAt());  }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/AnrInputTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/AnrInputTest.java
new file mode 100644 (file)
index 0000000..b319c12
--- /dev/null
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ *  ============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.model;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+
+import org.junit.Test;
+
+public class AnrInputTest {
+
+       @Test
+       public void test() {
+               
+               AnrInput anrInput = new AnrInput();
+               anrInput.setCellId("20");
+               ArrayList<String> removeableNeighbors = new ArrayList<String>();
+               anrInput.setRemoveableNeighbors(removeableNeighbors);
+        assertEquals("20", anrInput.getCellId());
+        assertEquals(removeableNeighbors,anrInput.getRemoveableNeighbors());
+               
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/ClusterMapTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/ClusterMapTest.java
new file mode 100644 (file)
index 0000000..c9b8019
--- /dev/null
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ *  ============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.model;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+
+import org.junit.Test;
+
+public class ClusterMapTest {
+
+       @Test
+       public void test() {
+
+               ClusterMap clusterMap = new ClusterMap();
+               CellPciPair cellPciPair = new CellPciPair();
+               cellPciPair.setCellId("45");
+               cellPciPair.setPhysicalCellId(310);
+               ArrayList<CellPciPair> cellPciPairList = new ArrayList<CellPciPair>();
+               cellPciPairList.add(cellPciPair);
+
+               clusterMap.setCell(cellPciPair);
+               clusterMap.setNeighbourList(cellPciPairList);
+               assertEquals(cellPciPair, clusterMap.getCell());
+               assertEquals(cellPciPairList, clusterMap.getNeighbourList());
+
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/FlagTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/FlagTest.java
new file mode 100644 (file)
index 0000000..e5fa3a4
--- /dev/null
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ *  ============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.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class FlagTest {
+
+       @Test
+       public void test() {
+     Flag flag = new Flag();
+     flag.setHolder("Holder");
+     flag.setNumChilds(2);
+     assertEquals("Holder",flag.getHolder());
+     assertEquals(2,flag.getNumChilds());
+     
+       }
+
+}
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/model/StatusTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/model/StatusTest.java
new file mode 100644 (file)
index 0000000..c81c065
--- /dev/null
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ *  ============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.model;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class StatusTest {
+
+       @Test
+       public void test() {
+
+               Status status = new Status();
+               status.setCode(200);
+               status.setValue("success");
+               assertEquals(200,status.getCode());
+               assertEquals("success",status.getValue());
+       }
+
+}
index 9f21f8d..674965c 100644 (file)
@@ -28,18 +28,18 @@ import java.util.List;
 
 import org.junit.Test;
 
-
 public class CellInfoTest {
-    @Test
-    public void cellInfoTest() {
-        List<String> cellIdLists = new ArrayList<>();
-        cellIdLists.add("cell1");
-
-        CellInfo cellInfo = new CellInfo();
-        cellInfo.setNetworkId("NTWK001");
-        cellInfo.setCellIdList(cellIdLists);
-        assertEquals("NTWK001", cellInfo.getNetworkId());
-        assertEquals(cellIdLists, cellInfo.getCellIdList());
-
-    }
+       @Test
+       public void cellInfoTest() {
+               List<String> cellIdLists = new ArrayList<>();
+               cellIdLists.add("cell1");
+               CellInfo cellInfo = new CellInfo();
+               cellInfo.setNetworkId("NTWK001");
+               cellInfo.setCellIdList(cellIdLists);
+               cellInfo.setFixedPCICells(cellIdLists);
+               assertEquals("NTWK001", cellInfo.getNetworkId());
+               assertEquals(cellIdLists, cellInfo.getCellIdList());
+               assertEquals(cellIdLists, cellInfo.getFixedPCICells());
+
+       }
 }
diff --git a/src/test/java/org/onap/dcaegen2/services/sonhms/utils/SonHandlerRestTemplateTest.java b/src/test/java/org/onap/dcaegen2/services/sonhms/utils/SonHandlerRestTemplateTest.java
new file mode 100644 (file)
index 0000000..a1c9472
--- /dev/null
@@ -0,0 +1,149 @@
+
+
+/*******************************************************************************
+ *  ============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.utils;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.modules.junit4.PowerMockRunnerDelegate;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.web.client.RestTemplate;
+
+@RunWith(PowerMockRunner.class)
+@PowerMockRunnerDelegate(SpringRunner.class)
+@PrepareForTest({ BeanUtil.class })
+@SpringBootTest(classes = SonHandlerRestTemplate.class)
+public class SonHandlerRestTemplateTest {
+
+       @Mock
+       RestTemplate restTemplatemock;
+       
+       @InjectMocks
+       SonHandlerRestTemplate sonHandlerRestTemplate; 
+       
+       @SuppressWarnings({ "static-access", "unchecked", "rawtypes" })
+       @Test
+       public void sendPostRequestTest() { 
+
+       PowerMockito.mockStatic(BeanUtil.class);
+       PowerMockito.when(BeanUtil.getBean(RestTemplate.class)).thenReturn(restTemplatemock);
+       ParameterizedTypeReference<String> responseType = null;
+       HttpHeaders headers = new HttpHeaders();
+       headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+       headers.setContentType(MediaType.APPLICATION_JSON);
+       String requestUrl = "Url"; String requestBody = null;  
+       HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+       when(restTemplatemock.exchange(requestUrl, HttpMethod.POST,requestEntity,responseType)).thenReturn(new ResponseEntity(HttpStatus.OK)); 
+       ResponseEntity<String> resp = sonHandlerRestTemplate.sendPostRequest(requestUrl,requestBody,responseType);
+       assertEquals(resp.getStatusCode(), HttpStatus.OK);  
+
+       }
+       
+       @SuppressWarnings({ "static-access", "rawtypes", "unchecked" })
+       @Test
+       public void sendPostRequestTest2() { 
+
+       ParameterizedTypeReference<String> responseType = null;
+       HttpHeaders headers = new HttpHeaders();
+       headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+       headers.setContentType(MediaType.APPLICATION_JSON);
+       String requestUrl = "Url"; String requestBody = null;  
+       HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+       when(restTemplatemock.exchange(requestUrl, HttpMethod.POST,requestEntity,responseType)).thenReturn(new ResponseEntity(HttpStatus.NOT_FOUND));        
+       ResponseEntity<String> resp = sonHandlerRestTemplate.sendPostRequest(requestUrl,requestBody,responseType);
+       assertEquals(resp.getStatusCode(), HttpStatus.NOT_FOUND);  
+
+       }  
+       
+       @SuppressWarnings({ "static-access", "unchecked", "rawtypes" })
+       @Test
+       public void sendGetRequest() { 
+               
+                   HttpHeaders headers = new HttpHeaders();
+               headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+               HttpEntity<Void> requestEntity = new HttpEntity<>(headers); 
+               ParameterizedTypeReference<String> responseType = null;
+               String requestUrl = "Url";  
+               PowerMockito.mockStatic(BeanUtil.class);
+               PowerMockito.when(BeanUtil.getBean(RestTemplate.class)).thenReturn(restTemplatemock);
+               when(restTemplatemock.exchange(requestUrl, HttpMethod.GET,requestEntity,responseType)).thenReturn(new ResponseEntity(HttpStatus.OK));
+               ResponseEntity<String> resp = sonHandlerRestTemplate.sendGetRequest(requestUrl,responseType);        
+               assertEquals(resp.getStatusCode(), HttpStatus.OK); 
+               
+       }
+
+       @SuppressWarnings({ "static-access", "rawtypes", "unchecked" })
+       @Test
+       public void sendGetRequest2() {     
+               
+                   HttpHeaders headers = new HttpHeaders();
+               headers.setAccept(Collections.singletonList(MediaType.TEXT_PLAIN));
+               headers.setContentType(MediaType.APPLICATION_JSON);
+               headers.add("Authorization", "Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==");
+               String requestBody = "RequestBody"; 
+               HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers);
+               ParameterizedTypeReference<String> responseType = null;
+               String requestUrl = "Url";  
+               PowerMockito.mockStatic(BeanUtil.class);
+               PowerMockito.when(BeanUtil.getBean(RestTemplate.class)).thenReturn(restTemplatemock);
+               when(restTemplatemock.exchange(requestUrl, HttpMethod.POST,requestEntity,responseType)).thenReturn(new ResponseEntity(HttpStatus.OK));
+               ResponseEntity<String> resp = sonHandlerRestTemplate.sendGetRequest(requestUrl,requestBody,responseType);
+               assertEquals(resp.getStatusCode(), HttpStatus.OK); 
+               
+       }
+         
+       @SuppressWarnings({ "static-access", "rawtypes", "unchecked" })
+       @Test
+       public void sendPostRequestToOof() { 
+               
+           HttpHeaders headers = new HttpHeaders();
+        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        headers.add("Authorization", "Basic cGNpX3Rlc3Q6cGNpX3Rlc3Rwd2Q=");  
+        String requestUrl = null; String requestBody = null;  
+        HttpEntity<Object> requestEntity = new HttpEntity<>(requestBody, headers); 
+        ParameterizedTypeReference<String> responseType = null;
+           PowerMockito.mockStatic(BeanUtil.class);
+           PowerMockito.when(BeanUtil.getBean(RestTemplate.class)).thenReturn(restTemplatemock);
+           when(restTemplatemock.exchange(requestUrl, HttpMethod.POST,requestEntity,responseType)).thenReturn(new ResponseEntity(HttpStatus.NOT_FOUND));
+           ResponseEntity<String> resp = sonHandlerRestTemplate.sendPostRequestToOof(requestUrl,requestBody,responseType);
+           assertEquals(resp.getStatusCode(), HttpStatus.NOT_FOUND); 
+          
+       }
+}
diff --git a/src/test/resources/faultNotification.json b/src/test/resources/faultNotification.json
new file mode 100644 (file)
index 0000000..803302a
--- /dev/null
@@ -0,0 +1,35 @@
+{
+      "event":{
+         "commonEventHeader":{
+            "version":"4.0.1",
+            "vesEventListenerVersion":"7.0.1",
+            "domain":"fault",
+            "eventName":"Fault_RansimAgent-Wipro_RanPCIProblem",
+            "eventId":"fault000001",
+            "sequence":1,
+            "priority":"High",
+            "reportingEntityId":"de305d54-75b4-431b-adb2-eb6b9e546014",
+            "reportingEntityName":"ncserver1",
+            "sourceId":"cc305d54-75b4-431b-adb2-eb6b9e541234",
+            "sourceName":"Chn0001",
+            "startEpochMicrosec":1451772223000000,
+            "lastEpochMicrosec":1451772403000000,
+            "timeZoneOffset":"UTC-05:30",
+            "nfNamingCode":"RansimAgent",
+            "nfVendorName":"Wipro"
+         },
+         "faultFields":{
+            "faultFieldsVersion":"4.0",
+            "alarmCondition":"RanPciCollisionConfusionOccurred",
+            "eventSourceType":"other",
+            "specificProblem":"Collision",
+            "eventSeverity":"CRITICAL",
+            "vfStatus":"Active",
+            "alarmAdditionalInformation":{
+               "networkId":"NTWK005",
+               "collisions":"2",
+               "confusions":"0"
+            }
+         }
+      }
+   }