X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-interactions%2Fmodel-actors%2Factor.appclcm%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fcontrolloop%2Factor%2Fappclcm%2FAppcLcmActorTest.java;h=3ac57603b3d10015b266e809e969697515822ac0;hb=c88676ec64c4c870252502bc1cfaa8990c8fd964;hp=e2bbb10dbdb8aa1aa2690b7e2b32c471721a3166;hpb=e4e7d15db6d2f79658e3a5f9e8326ea092afcfab;p=policy%2Fmodels.git diff --git a/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorTest.java b/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorTest.java index e2bbb10db..3ac57603b 100644 --- a/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorTest.java +++ b/models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmActorTest.java @@ -22,159 +22,12 @@ package org.onap.policy.controlloop.actor.appclcm; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import java.time.Instant; -import java.util.AbstractMap; -import java.util.HashMap; -import java.util.UUID; import java.util.stream.Collectors; -import org.junit.AfterClass; -import org.junit.BeforeClass; import org.junit.Test; -import org.onap.policy.appclcm.AppcLcmBody; -import org.onap.policy.appclcm.AppcLcmCommonHeader; -import org.onap.policy.appclcm.AppcLcmDmaapWrapper; -import org.onap.policy.appclcm.AppcLcmInput; -import org.onap.policy.appclcm.AppcLcmOutput; -import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance; -import org.onap.policy.controlloop.ControlLoopEventStatus; -import org.onap.policy.controlloop.ControlLoopOperation; -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.PolicyResult; -import org.onap.policy.controlloop.policy.Target; -import org.onap.policy.controlloop.policy.TargetType; -import org.onap.policy.simulators.Util; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class AppcLcmActorTest { - private static final String VNF01 = "vnf01"; - - private static final String VNF_ID_KEY = "vnf-id"; - - private static final String REJECT = "REJECT"; - - private static final String PARTIAL_FAILURE = "PARTIAL FAILURE"; - - private static final String FAILURE = "FAILURE"; - - private static final Logger logger = LoggerFactory.getLogger(AppcLcmActorTest.class); - - private static final VirtualControlLoopEvent onsetEvent; - private static final ControlLoopOperation operation; - private static final Policy policy; - private static final AppcLcmDmaapWrapper dmaapResponse; - - private static final String RECIPE_RESTART = "Restart"; - private static final String RECIPE_REBUILD = "Rebuild"; - private static final String RECIPE_MIGRATE = "Migrate"; - - static { - /* - * Construct an onset with an AAI subtag containing generic-vnf.vnf-id and a - * target type of VM. - */ - onsetEvent = new VirtualControlLoopEvent(); - onsetEvent.setClosedLoopControlName("closedLoopControlName-Test"); - onsetEvent.setRequestId(UUID.randomUUID()); - onsetEvent.setClosedLoopEventClient("tca.instance00001"); - onsetEvent.setTargetType(ControlLoopTargetType.VM); - onsetEvent.setTarget("generic-vnf.vnf-name"); - onsetEvent.setFrom("DCAE"); - onsetEvent.setClosedLoopAlarmStart(Instant.now()); - onsetEvent.setAai(new HashMap<>()); - onsetEvent.getAai().put("generic-vnf.vnf-name", "fw0001vm001fw001"); - onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET); - - /* Construct an operation with an APPC actor and restart operation. */ - operation = new ControlLoopOperation(); - operation.setActor("APPC"); - operation.setOperation(RECIPE_RESTART); - operation.setTarget("VM"); - operation.setEnd(Instant.now()); - operation.setSubRequestId("1"); - - /* Construct a policy specifying to restart vm. */ - policy = new Policy(); - policy.setName("Restart the VM"); - policy.setDescription("Upon getting the trigger event, restart the VM"); - policy.setActor("APPC"); - policy.setTarget(new Target(TargetType.VNF)); - policy.setRecipe(RECIPE_RESTART); - policy.setPayload(null); - policy.setRetry(2); - policy.setTimeout(300); - - /* A sample DMAAP request wrapper. */ - AppcLcmDmaapWrapper dmaapRequest = new AppcLcmDmaapWrapper(); - dmaapRequest.setCorrelationId(onsetEvent.getRequestId().toString() + "-" + "1"); - dmaapRequest.setRpcName(policy.getRecipe().toLowerCase()); - dmaapRequest.setType("request"); - - /* A sample DMAAP response wrapper */ - dmaapResponse = new AppcLcmDmaapWrapper(); - dmaapResponse.setCorrelationId(onsetEvent.getRequestId().toString() + "-" + "1"); - dmaapResponse.setRpcName(policy.getRecipe().toLowerCase()); - dmaapResponse.setType("response"); - - /* A sample APPC LCM request. */ - AppcLcmInput appcRequest = new AppcLcmInput(); - - /* The following code constructs a sample APPC LCM Request */ - appcRequest.setAction("restart"); - - HashMap actionIdentifiers = new HashMap<>(); - actionIdentifiers.put(VNF_ID_KEY, "trial-vnf-003"); - - appcRequest.setActionIdentifiers(actionIdentifiers); - - AppcLcmCommonHeader commonHeader = new AppcLcmCommonHeader(); - commonHeader.setRequestId(onsetEvent.getRequestId()); - commonHeader.setSubRequestId("1"); - commonHeader.setOriginatorId(onsetEvent.getRequestId().toString()); - - appcRequest.setCommonHeader(commonHeader); - - appcRequest.setPayload(null); - - AppcLcmBody appcBody = new AppcLcmBody(); - appcBody.setInput(appcRequest); - - dmaapRequest.setBody(appcBody); - - /* The following code constructs a sample APPC LCM Response */ - AppcLcmOutput appcResponse = new AppcLcmOutput(appcRequest); - appcResponse.getStatus().setCode(400); - appcResponse.getStatus().setMessage("Restart Successful"); - - appcBody.setOutput(appcResponse); - - dmaapResponse.setBody(appcBody); - } - - /** - * Set up before test class. - * - * @throws Exception if an error occurs - */ - @BeforeClass - public static void setUpSimulator() throws Exception { - Util.buildAaiSim(); - } - - /** - * Tear down after test class. - */ - @AfterClass - public static void tearDownSimulator() { - HttpServletServerFactoryInstance.getServerFactory().destroy(); - } - @Test public void testConstructor() { AppcLcmActor prov = new AppcLcmActor(); @@ -186,272 +39,4 @@ public class AppcLcmActorTest { assertEquals(expected.toString(), actual.toString()); } - - /** - * A test to construct an APPC LCM restart request. - */ - @Test - public void constructRestartRequestTest() { - - AppcLcmDmaapWrapper dmaapRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, policy, VNF01); - - /* The service provider must return a non null DMAAP request wrapper */ - assertNotNull(dmaapRequest); - - /* The DMAAP wrapper's type field must be request */ - assertEquals("request", dmaapRequest.getType()); - - /* The DMAAP wrapper's body field cannot be null */ - assertNotNull(dmaapRequest.getBody()); - - AppcLcmInput appcRequest = dmaapRequest.getBody().getInput(); - - /* A common header is required and cannot be null */ - assertNotNull(appcRequest.getCommonHeader()); - assertEquals(appcRequest.getCommonHeader().getRequestId(), onsetEvent.getRequestId()); - - /* An action is required and cannot be null */ - assertNotNull(appcRequest.getAction()); - assertEquals(RECIPE_RESTART, appcRequest.getAction()); - - /* Action Identifiers are required and cannot be null */ - assertNotNull(appcRequest.getActionIdentifiers()); - assertNotNull(appcRequest.getActionIdentifiers().get(VNF_ID_KEY)); - assertEquals(VNF01, appcRequest.getActionIdentifiers().get(VNF_ID_KEY)); - - logger.debug("APPC Request: \n" + appcRequest.toString()); - } - - /** - * A test to process a successful APPC restart response. - */ - @Test - public void processRestartResponseSuccessTest() { - AbstractMap.SimpleEntry result = - AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.SUCCESS, result.getKey()); - assertEquals("Restart Successful", result.getValue()); - } - - /** - * A test to assert that a null pointer exception is thrown if the APPC response body - * is null. - */ - @Test(expected = NullPointerException.class) - public void processNullBodyResponseTest() { - AppcLcmActor.processResponse(new AppcLcmDmaapWrapper()); - } - - /** - * A test to assert that a null pointer exception is thrown if the APPC response - * output is null. - */ - @Test(expected = NullPointerException.class) - public void processNullOutputResponseTest() { - AppcLcmDmaapWrapper dmaapWrapper = new AppcLcmDmaapWrapper(); - dmaapWrapper.setBody(new AppcLcmBody()); - AppcLcmActor.processResponse(dmaapWrapper); - } - - /** - * A test to map APPC response results to corresponding Policy results. - */ - @Test - public void appcToPolicyResultTest() { - - AbstractMap.SimpleEntry result; - - /* If APPC accepts, PolicyResult is null */ - dmaapResponse.getBody().getOutput().getStatus().setCode(100); - dmaapResponse.getBody().getOutput().getStatus().setMessage("ACCEPTED"); - result = AppcLcmActor.processResponse(dmaapResponse); - assertNull(result.getKey()); - - /* If APPC is successful, PolicyResult is success */ - dmaapResponse.getBody().getOutput().getStatus().setCode(400); - dmaapResponse.getBody().getOutput().getStatus().setMessage("SUCCESS"); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.SUCCESS, result.getKey()); - - /* If APPC returns an error, PolicyResult is failure exception */ - dmaapResponse.getBody().getOutput().getStatus().setCode(200); - dmaapResponse.getBody().getOutput().getStatus().setMessage("ERROR"); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - /* If APPC rejects, PolicyResult is failure exception */ - dmaapResponse.getBody().getOutput().getStatus().setCode(300); - dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - /* Test multiple reject codes */ - dmaapResponse.getBody().getOutput().getStatus().setCode(306); - dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - dmaapResponse.getBody().getOutput().getStatus().setCode(313); - dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - /* If APPC returns failure, PolicyResult is failure */ - dmaapResponse.getBody().getOutput().getStatus().setCode(401); - dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE, result.getKey()); - - /* Test multiple failure codes */ - dmaapResponse.getBody().getOutput().getStatus().setCode(406); - dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE, result.getKey()); - - dmaapResponse.getBody().getOutput().getStatus().setCode(450); - dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE, result.getKey()); - - /* If APPC returns partial success, PolicyResult is failure exception */ - dmaapResponse.getBody().getOutput().getStatus().setCode(500); - dmaapResponse.getBody().getOutput().getStatus().setMessage("PARTIAL SUCCESS"); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - /* If APPC returns partial failure, PolicyResult is failure exception */ - dmaapResponse.getBody().getOutput().getStatus().setCode(501); - dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - /* Test multiple partial failure codes */ - dmaapResponse.getBody().getOutput().getStatus().setCode(599); - dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - dmaapResponse.getBody().getOutput().getStatus().setCode(550); - dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - - /* If APPC code is unknown to Policy, PolicyResult is failure exception */ - dmaapResponse.getBody().getOutput().getStatus().setCode(700); - dmaapResponse.getBody().getOutput().getStatus().setMessage("UNKNOWN"); - result = AppcLcmActor.processResponse(dmaapResponse); - assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey()); - } - - /* - * This test exercises getters not exercised in other tests. - */ - @Test - public void testMethods() { - AppcLcmActor sp = new AppcLcmActor(); - - assertEquals("APPC", sp.actor()); - assertEquals(4, sp.recipes().size()); - assertEquals("VM", sp.recipeTargets(RECIPE_RESTART).get(0)); - assertEquals("vm-id", sp.recipePayloads(RECIPE_RESTART).get(0)); - } - - @Test - public void testPayloadNotPassedWhenNotSupportedByRecipe() { - // given - Policy migratePolicy = constructPolicyWithRecipe(RECIPE_MIGRATE); - Policy rebuildPolicy = constructPolicyWithRecipe(RECIPE_REBUILD); - Policy restartPolicy = constructPolicyWithRecipe(RECIPE_RESTART); - - // when - AppcLcmDmaapWrapper migrateRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, migratePolicy, VNF01); - AppcLcmDmaapWrapper rebuildRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, rebuildPolicy, VNF01); - AppcLcmDmaapWrapper restartRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, restartPolicy, VNF01); - - // then - assertNull(migrateRequest.getBody().getInput().getPayload()); - assertNull(rebuildRequest.getBody().getInput().getPayload()); - assertNull(restartRequest.getBody().getInput().getPayload()); - } - - @Test - public void testPayloadNotPassedWhenNotSuppliedOrEmpty() { - // given - Policy noPayloadPolicy = constructHealthCheckPolicyWithPayload(null); - Policy emptyPayloadPolicy = constructHealthCheckPolicyWithPayload(new HashMap<>()); - - // when - AppcLcmDmaapWrapper noPayloadRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, noPayloadPolicy, VNF01); - AppcLcmDmaapWrapper emptyPayloadRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, emptyPayloadPolicy, VNF01); - - // then - assertNull(noPayloadRequest.getBody().getInput().getPayload()); - assertNull(emptyPayloadRequest.getBody().getInput().getPayload()); - } - - @Test - public void testPayloadParsedProperlyForSinglePayloadParameter() { - // given - HashMap payload = new HashMap<>(); - payload.put("requestParameters", "{\"host-ip-address\":\"10.183.37.25\"}"); - Policy otherPolicy = constructHealthCheckPolicyWithPayload(payload); - - // when - AppcLcmDmaapWrapper dmaapRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, otherPolicy, VNF01); - - // then - assertEquals("{\"requestParameters\": {\"host-ip-address\":\"10.183.37.25\"}}", - dmaapRequest.getBody().getInput().getPayload()); - } - - @Test - public void testPayloadParsedProperlyForMultiplePayloadParameters() { - // given - HashMap payload = new HashMap<>(); - payload.put("requestParameters", "{\"host-ip-address\":\"10.183.37.25\"}"); - payload.put("configurationParameters", - "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\"," - + "\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\"," - + "\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]"); - Policy otherPolicy = constructHealthCheckPolicyWithPayload(payload); - - // when - AppcLcmDmaapWrapper dmaapRequest = - AppcLcmActor.constructRequest(onsetEvent, operation, otherPolicy, VNF01); - - // then - assertEquals(dmaapRequest.getBody().getInput().getPayload(), "{\"requestParameters\": " - + "{\"host-ip-address\":\"10.183.37.25\"}," + "\"configurationParameters\": " - + "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\"," - + "\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\"," - + "\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]" + "}"); - } - - private Policy constructHealthCheckPolicyWithPayload(HashMap payload) { - return constructHealthCheckPolicyWithPayloadAndRecipe(payload, "Health-Check"); - } - - private Policy constructPolicyWithRecipe(String recipe) { - return constructHealthCheckPolicyWithPayloadAndRecipe(null, recipe); - } - - private Policy constructHealthCheckPolicyWithPayloadAndRecipe(HashMap payload, String recipe) { - Policy otherPolicy = new Policy(); - otherPolicy.setName("Perform health check"); - otherPolicy.setDescription("Upon getting the trigger event, perform health check"); - otherPolicy.setActor("APPC"); - otherPolicy.setTarget(new Target(TargetType.VNF)); - otherPolicy.setRecipe(recipe); - otherPolicy.setPayload(payload); - otherPolicy.setRetry(2); - otherPolicy.setTimeout(300); - return otherPolicy; - } }