Add tests to AppcLcm to increase coverage 42/101642/4
authordg5762 <dg5762@att.com>
Wed, 12 Feb 2020 22:28:22 +0000 (16:28 -0600)
committerdg5762 <dg5762@att.com>
Thu, 13 Feb 2020 17:18:05 +0000 (11:18 -0600)
Add additional test cases to AppcLcm to increase jUnit test coverage
this includs adding the file AppcLcmActorTest.java. Minimum test
converage for the java files is over 80%.

Issue-ID: POLICY-2291
Signed-off-by: dg5762 <dg5762@att.com>
Change-Id: I26ed2b90f12f51568ceed843b65d2f119155391f

controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmActorTest.java [new file with mode: 0644]
controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java
controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java

diff --git a/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmActorTest.java b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmActorTest.java
new file mode 100644 (file)
index 0000000..e1bc162
--- /dev/null
@@ -0,0 +1,123 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * m2/appclcm
+ * ================================================================================
+ * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package appclcm;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+
+import java.util.Properties;
+import java.util.UUID;
+
+import org.drools.core.WorkingMemory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.policy.controlloop.ControlLoopEventStatus;
+import org.onap.policy.controlloop.ControlLoopTargetType;
+import org.onap.policy.controlloop.VirtualControlLoopEvent;
+import org.onap.policy.controlloop.policy.Policy;
+import org.onap.policy.controlloop.policy.Target;
+import org.onap.policy.controlloop.policy.TargetType;
+import org.onap.policy.drools.system.PolicyEngineConstants;
+import org.onap.policy.m2.appclcm.AppcLcmActor;
+import org.onap.policy.m2.appclcm.AppcLcmHealthCheckOperation;
+import org.onap.policy.m2.appclcm.AppcLcmOperation;
+import org.onap.policy.m2.base.Transaction;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AppcLcmActorTest {
+    private static Logger logger = LoggerFactory.getLogger(AppcLcmActorTest.class);
+
+    public static Policy policy;
+    public static VirtualControlLoopEvent event;
+    public static Transaction transaction;
+    public static AppcLcmHealthCheckOperation operation;
+    public static AppcLcmActor actor;
+
+    /**
+     * Class-level setup.
+     */
+    @BeforeClass
+    public static void setup() {
+        PolicyEngineConstants.getManager().configure(new Properties());
+        PolicyEngineConstants.getManager().start();
+
+        policy = new Policy();
+        policy.setActor("APPCLCM");
+        policy.setTarget(new Target(TargetType.VM));
+
+        event = new VirtualControlLoopEvent();
+        event.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+        event.setRequestId(UUID.randomUUID());
+        event.setTarget("vserver.vserver-name");
+        event.setTargetType(ControlLoopTargetType.VM);
+        event.getAai().put("vserver.is-closed-loop-disabled", "false");
+        event.getAai().put("complex.state", "NJ");
+        event.getAai().put("vserver.l-interface.interface-name", "89ee9ee6-1e96-4063-b690-aa5ca9f73b32");
+        event.getAai().put("vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address",
+            "135.144.3.49");
+        event.getAai().put("vserver.l-interface.l3-interface-ipv6-address-list.l3-inteface-ipv6-address", null);
+        event.getAai().put("vserver.in-maint", "N");
+        event.getAai().put("complex.city", "AAIDefault");
+        event.getAai().put("vserver.vserver-id", "aa7a24f9-8791-491f-b31a-c8ba5ad9e2aa");
+        event.getAai().put("vserver.l-interface.network-name", "vUSP_DPA3_OAM_3750");
+        event.getAai().put("vserver.vserver-name", "ctsf0002vm013");
+        event.getAai().put("generic-vnf.vnf-name", "ctsf0002v");
+        event.getAai().put("generic-vnf.vnf-id", "0f551f1b-e4e5-4ce2-84da-eda916e06e1c");
+        event.getAai().put("generic-vnf.service-id", "e433710f-9217-458d-a79d-1c7aff376d89");
+        event.getAai().put("vserver.selflink", "https://compute-aic.dpa3.cci.att.com:8774/v2/d0719b845a804b368f8ac0bba39e188b/servers/aa7a24f9-8791-491f-b31a-c8ba5ad9e2aa");
+        event.getAai().put("generic-vnf.vnf-type", "vUSP - vCTS");
+        event.getAai().put("tenant.tenant-id", "d0719b845a804b368f8ac0bba39e188b");
+        event.getAai().put("cloud-region.identity-url", "https://compute-aic.dpa3.cci.att.com:8774/");
+        event.getAai().put("vserver.prov-status", "PROV");
+        event.getAai().put("complex.physical-location-id", "LSLEILAA");
+
+        WorkingMemory wm = mock(WorkingMemory.class);
+        transaction = new Transaction(wm, "clvusptest", event.getRequestId(), null);
+
+        actor = new AppcLcmActor();
+    }
+
+    @AfterClass
+    public static void cleanup() {
+        transaction.cleanup();
+        PolicyEngineConstants.getManager().stop();
+    }
+
+    @Test
+    public void testGetName() {
+        assertEquals("APPCLCM", actor.getName());
+    }
+
+    @Test
+    public void testCreateOperation() {
+        policy.setRecipe("HEALTHCHECK");
+        policy.getTarget().setType(TargetType.VNF);
+        operation = (AppcLcmHealthCheckOperation) actor.createOperation(transaction, policy, event, 1);
+        assertTrue(operation instanceof AppcLcmHealthCheckOperation);
+
+        policy.setRecipe("");
+        AppcLcmOperation lcmOperation = (AppcLcmOperation) actor.createOperation(transaction, policy, event, 1);
+        assertTrue(lcmOperation instanceof AppcLcmOperation);
+    }
+}
index 5f436c2..25f8043 100644 (file)
@@ -23,7 +23,7 @@ package appclcm;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+
 import static org.mockito.Mockito.mock;
 
 import java.util.Properties;
@@ -46,8 +46,9 @@ import org.onap.policy.controlloop.policy.Policy;
 import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.controlloop.policy.Target;
 import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.drools.m2.lock.LockAdjunct;
 import org.onap.policy.drools.system.PolicyEngineConstants;
+import org.onap.policy.guard.PolicyGuardResponse;
+import org.onap.policy.m2.appclcm.AppcLcmActor;
 import org.onap.policy.m2.appclcm.AppcLcmHealthCheckOperation;
 import org.onap.policy.m2.base.Transaction;
 import org.slf4j.Logger;
@@ -115,7 +116,8 @@ public class AppcLcmHealthCheckOperationTest {
 
         policy.setRecipe("HEALTHCHECK");
         policy.getTarget().setType(TargetType.VNF);
-        operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+        AppcLcmActor actor = new AppcLcmActor();
+        operation = (AppcLcmHealthCheckOperation) actor.createOperation(transaction, policy, event, 1);
 
         Object request = operation.getRequest();
         assertTrue(request instanceof AppcLcmDmaapWrapper);
@@ -278,4 +280,55 @@ public class AppcLcmHealthCheckOperationTest {
         operation.incomingMessage(healthCheckResp);
         assertEquals(operation.getResult(), PolicyResult.FAILURE_EXCEPTION);
     }
-}
+
+    @Test
+    public void testIncomingMessage() {
+        policy.setRecipe("HEALTHCHECK");
+        policy.getTarget().setType(TargetType.VNF);
+        operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+        //Submitting Policy Guard Response instead of AppcLcmDmaapWrapper
+        PolicyGuardResponse response = new PolicyGuardResponse("", UUID.randomUUID(), "");
+        operation.incomingMessage(response);
+
+        //Checking for Failure Code
+        String lcmRespJson = "{\"body\":{\"output\":{\"common-header\":{\"timestamp\":\"2017-08-25T21:06:23.037Z\","
+                + "\"api-ver\":\"5.00\",\"originator-id\":\"POLICY\","
+                + "\"request-id\":\"664be3d2-6c12-4f4b-a3e7-c349acced200\",\"sub-request-id\":\"1\",\"flags\":{}},"
+                + "\"status\":{\"code\":404,\"message\":\"VNF is unhealthy\"},\"payload\":\"\"}},\"version\":\"2.0\","
+                + "\"rpc-name\":\"health-check\",\"correlation-id\":\"664be3d2-6c12-4f4b-a3e7-c349acced200-1\","
+                + "\"type\":\"response\"}";
+        AppcLcmDmaapWrapper healthCheckResp = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+        operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+        operation.incomingMessage(healthCheckResp);
+        assertEquals(PolicyResult.FAILURE, operation.getResult());
+
+        //Checking code 300 Failure_Exception
+        lcmRespJson = "{\"body\":{\"output\":{\"common-header\":{\"timestamp\":\"2017-08-25T21:06:23.037Z\","
+                + "\"api-ver\":\"5.00\",\"originator-id\":\"POLICY\","
+                + "\"request-id\":\"664be3d2-6c12-4f4b-a3e7-c349acced200\",\"sub-request-id\":\"1\",\"flags\":{}},"
+                + "\"status\":{\"code\":300,\"message\":\"VNF is unhealthy\"},\"payload\":\"\"}},\"version\":\"2.0\","
+                + "\"rpc-name\":\"health-check\",\"correlation-id\":\"664be3d2-6c12-4f4b-a3e7-c349acced200-1\","
+                + "\"type\":\"response\"}";
+        healthCheckResp = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+        operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+        operation.incomingMessage(healthCheckResp);
+        assertEquals(PolicyResult.FAILURE_EXCEPTION, operation.getResult());
+
+        //Checking code 100 accepted does nothing to result
+        //Leaving the operation result as the initialized value of null
+        lcmRespJson = "{\"body\":{\"output\":{\"common-header\":{\"timestamp\":\"2017-08-25T21:06:23.037Z\","
+                + "\"api-ver\":\"5.00\",\"originator-id\":\"POLICY\","
+                + "\"request-id\":\"664be3d2-6c12-4f4b-a3e7-c349acced200\",\"sub-request-id\":\"1\",\"flags\":{}},"
+                + "\"status\":{\"code\":100,\"message\":\"VNF is unhealthy\"},\"payload\":\"\"}},\"version\":\"2.0\","
+                + "\"rpc-name\":\"health-check\",\"correlation-id\":\"664be3d2-6c12-4f4b-a3e7-c349acced200-1\","
+                + "\"type\":\"response\"}";
+        healthCheckResp = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+        operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+        operation.incomingMessage(healthCheckResp);
+        assertEquals(null, operation.getResult());
+    }
+}
\ No newline at end of file
index 6611a9d..5bd65eb 100644 (file)
@@ -25,7 +25,6 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 
 import java.util.HashMap;
@@ -49,7 +48,6 @@ import org.onap.policy.controlloop.policy.Policy;
 import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.controlloop.policy.Target;
 import org.onap.policy.controlloop.policy.TargetType;
-import org.onap.policy.drools.m2.lock.LockAdjunct;
 import org.onap.policy.drools.system.PolicyEngineConstants;
 import org.onap.policy.m2.appclcm.AppcLcmOperation;
 import org.onap.policy.m2.base.Transaction;
@@ -705,4 +703,25 @@ public class AppcLcmOperationTest {
         assertEquals("target field invalid - must have corresponding AAI value",
                      transaction.getNotificationMessage());
     }
-}
+
+    @Test
+    public void testTimeout() {
+        policy.setRecipe("RESTART");
+        policy.getTarget().setType(TargetType.VNF);
+        operation = new AppcLcmOperation(transaction, policy, event, 1);
+        operation.timeout();
+        assertEquals(PolicyResult.FAILURE_TIMEOUT, operation.getResult());
+    }
+
+    @Test
+    public void testIncomingAbatedEvent() {
+        transaction.setNotificationMessage(null);
+        VirtualControlLoopEvent validEvent = new VirtualControlLoopEvent();
+        validEvent.setTarget("vserver.vserver-name");
+        validEvent.getAai().put(AppcLcmOperation.DCAE_CLOSEDLOOP_DISABLED_FIELD, "false");
+        validEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ABATED);
+        operation = new AppcLcmOperation(transaction, policy, event, 1);
+        operation.incomingMessage(validEvent);
+        assertEquals(PolicyResult.SUCCESS, operation.getResult());
+    }
+}
\ No newline at end of file