aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop
diff options
context:
space:
mode:
authordg5762 <dg5762@att.com>2020-02-12 16:28:22 -0600
committerdg5762 <dg5762@att.com>2020-02-13 11:18:05 -0600
commitbd3b962acb4ec6f8ae4c02c9364281295239fbd1 (patch)
tree0fd6f3254ca615b5ebabf5d687d467d7913b2fe5 /controlloop
parentf6e9e18cdcfaa8cb66e42bb851a8b67f630f25b7 (diff)
Add tests to AppcLcm to increase coverage
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
Diffstat (limited to 'controlloop')
-rw-r--r--controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmActorTest.java123
-rw-r--r--controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java61
-rw-r--r--controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java25
3 files changed, 202 insertions, 7 deletions
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
index 000000000..e1bc16292
--- /dev/null
+++ b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmActorTest.java
@@ -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);
+ }
+}
diff --git a/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java
index 5f436c2d4..25f8043f2 100644
--- a/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java
+++ b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java
@@ -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
diff --git a/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java
index 6611a9da2..5bd65eb74 100644
--- a/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java
+++ b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java
@@ -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