From bd3b962acb4ec6f8ae4c02c9364281295239fbd1 Mon Sep 17 00:00:00 2001 From: dg5762 Date: Wed, 12 Feb 2020 16:28:22 -0600 Subject: 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 Change-Id: I26ed2b90f12f51568ceed843b65d2f119155391f --- .../src/test/java/appclcm/AppcLcmActorTest.java | 123 +++++++++++++++++++++ .../appclcm/AppcLcmHealthCheckOperationTest.java | 61 +++++++++- .../test/java/appclcm/AppcLcmOperationTest.java | 25 ++++- 3 files changed, 202 insertions(+), 7 deletions(-) create mode 100644 controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmActorTest.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 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 -- cgit 1.2.3-korg