aboutsummaryrefslogtreecommitdiffstats
path: root/controlloop/m2/appclcm/src/test
diff options
context:
space:
mode:
authorStraubs, Ralph (rs8887) <rs8887@att.com>2019-11-19 04:11:23 -0600
committerStraubs, Ralph (rs8887) <rs8887@att.com>2020-01-10 03:20:23 -0600
commit3e05cb41202145e113853392e9837abf3f6ec12c (patch)
tree0c504018436c3933f563caa37c3ea0512c82181e /controlloop/m2/appclcm/src/test
parent927c7c177670a812a4a4139281ef84e85b520645 (diff)
Add m2 model, including the LCM application
Issue-ID: POLICY-1948 Change-Id: I18a5231d3102073c928a591c9e91b241b7093680 Signed-off-by: Straubs, Ralph (rs8887) <rs8887@att.com>
Diffstat (limited to 'controlloop/m2/appclcm/src/test')
-rw-r--r--controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java281
-rw-r--r--controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java708
-rw-r--r--controlloop/m2/appclcm/src/test/java/model/AppcLcmResponseCodeTest.java44
3 files changed, 1033 insertions, 0 deletions
diff --git a/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java
new file mode 100644
index 000000000..0748b6ee0
--- /dev/null
+++ b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmHealthCheckOperationTest.java
@@ -0,0 +1,281 @@
+/*-
+ * ============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.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+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.appclcm.AppcLcmDmaapWrapper;
+import org.onap.policy.appclcm.AppcLcmInput;
+import org.onap.policy.appclcm.util.Serialization;
+import org.onap.policy.controlloop.ControlLoopEventStatus;
+import org.onap.policy.controlloop.ControlLoopException;
+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.drools.m2.lock.LockAdjunct;
+import org.onap.policy.drools.system.PolicyEngineConstants;
+import org.onap.policy.m2.appclcm.AppcLcmHealthCheckOperation;
+import org.onap.policy.m2.base.Transaction;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AppcLcmHealthCheckOperationTest {
+ private static Logger logger = LoggerFactory.getLogger(AppcLcmHealthCheckOperationTest.class);
+
+ public static Policy policy;
+ public static VirtualControlLoopEvent event;
+ public static Transaction transaction;
+ public static AppcLcmHealthCheckOperation operation;
+
+ /**
+ * 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);
+
+ }
+
+ @AfterClass
+ public static void cleanup() {
+ transaction.cleanup();
+ PolicyEngineConstants.getManager().stop();
+ }
+
+ @Test
+ public void getVnfHealthCheckRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("health-check", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("HealthCheck", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertNotNull(appcRequest.getPayload());
+ assertTrue(appcRequest.getPayload().contains("host-ip-address"));
+
+ logger.info("health-check request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void incomingHealthCheckMessageHealthyStateTest() {
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ 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\":400,\"message\":\"HealthCheckSuccessful\"},"
+ + "\"payload\":\"{\\\"identifier\\\":\\\"scoperepresented\\\",\\\"state\\\":\\\"healthy\\\","
+ + "\\\"time\\\":\\\"01-01-1000:0000\\\"}\"}},\"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.incomingMessage(healthCheckResp);
+ assertEquals(operation.getResult(), PolicyResult.SUCCESS);
+ }
+
+ @Test
+ public void incomingHealthCheckMessageUnhealthyStateTest() {
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ 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\":400,\"message\":\"VNF is unhealthy\"},"
+ + "\"payload\":\"{\\\"identifier\\\":\\\"scoperepresented\\\",\\\"state\\\":\\\"unhealthy\\\","
+ + "\\\"info\\\":\\\"Systemthresholdexceededdetails\\\",\\\"fault\\\":{\\\"cpuOverall\\\":0.80,"
+ + "\\\"cpuThreshold\\\":0.45},\\\"time\\\":\\\"01-01-1000:0000\\\"}\"}},\"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.incomingMessage(healthCheckResp);
+ assertEquals(operation.getResult(), PolicyResult.FAILURE);
+ }
+
+ @Test
+ public void incomingHealthCheckMessageUnknownStateTest() {
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ 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\":400,\"message\":\"VNF is unhealthy\"},"
+ + "\"payload\":\"{\\\"identifier\\\":\\\"scoperepresented\\\",\\\"state\\\":\\\"unknown\\\","
+ + "\\\"info\\\":\\\"Systemthresholdexceededdetails\\\",\\\"fault\\\":{\\\"cpuOverall\\\":0.80,"
+ + "\\\"cpuThreshold\\\":0.45},\\\"time\\\":\\\"01-01-1000:0000\\\"}\"}},\"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.incomingMessage(healthCheckResp);
+ assertEquals(operation.getResult(), PolicyResult.FAILURE_EXCEPTION);
+ }
+
+ @Test
+ public void incomingHealthCheckMessageNoStateTest() {
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ 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\":400,\"message\":\"VNF is unhealthy\"},"
+ + "\"payload\":\"{\\\"identifier\\\":\\\"scoperepresented\\\","
+ + "\\\"info\\\":\\\"Systemthresholdexceededdetails\\\",\\\"fault\\\":{\\\"cpuOverall\\\":0.80,"
+ + "\\\"cpuThreshold\\\":0.45},\\\"time\\\":\\\"01-01-1000:0000\\\"}\"}},\"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.incomingMessage(healthCheckResp);
+ assertEquals(operation.getResult(), PolicyResult.FAILURE_EXCEPTION);
+ }
+
+ @Test
+ public void incomingHealthCheckMessageUnsuccessfulTest() {
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ 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\":401,\"message\":\"Could not complete HealthCheck\"},"
+ + "\"payload\":\"{\\\"identifier\\\":\\\"scoperepresented\\\","
+ + "\\\"info\\\":\\\"Systemthresholdexceededdetails\\\",\\\"fault\\\":{\\\"cpuOverall\\\":0.80,"
+ + "\\\"cpuThreshold\\\":0.45},\\\"time\\\":\\\"01-01-1000:0000\\\"}\"}},\"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.incomingMessage(healthCheckResp);
+ assertEquals(operation.getResult(), PolicyResult.FAILURE);
+ }
+
+ @Test
+ public void incomingHealthCheckMessageNoPayloadTest() {
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ 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\":400,\"message\":\"VNF is unhealthy\"}}},\"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.incomingMessage(healthCheckResp);
+ assertEquals(operation.getResult(), PolicyResult.FAILURE_EXCEPTION);
+ }
+
+ @Test
+ public void incomingHealthCheckMessageEmptyPayloadTest() {
+ policy.setRecipe("HEALTHCHECK");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmHealthCheckOperation(transaction, policy, event, 1);
+
+ 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\":400,\"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.incomingMessage(healthCheckResp);
+ assertEquals(operation.getResult(), PolicyResult.FAILURE_EXCEPTION);
+ }
+}
diff --git a/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java
new file mode 100644
index 000000000..0ddfb5b2c
--- /dev/null
+++ b/controlloop/m2/appclcm/src/test/java/appclcm/AppcLcmOperationTest.java
@@ -0,0 +1,708 @@
+/*-
+ * ============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.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;
+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.appclcm.AppcLcmDmaapWrapper;
+import org.onap.policy.appclcm.AppcLcmInput;
+import org.onap.policy.appclcm.util.Serialization;
+import org.onap.policy.controlloop.ControlLoopEventStatus;
+import org.onap.policy.controlloop.ControlLoopException;
+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.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;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AppcLcmOperationTest {
+ private static Logger logger = LoggerFactory.getLogger(AppcLcmOperationTest.class);
+
+ public static Policy policy;
+ public static VirtualControlLoopEvent event;
+ public static Transaction transaction;
+ public static AppcLcmOperation operation;
+
+ /**
+ * Class-level setup.
+ */
+ @BeforeClass
+ public static void start() {
+ 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);
+ }
+
+ @AfterClass
+ public static void cleanup() {
+ transaction.cleanup();
+ PolicyEngineConstants.getManager().stop();
+ }
+
+ @Test
+ public void getVmRestartRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("RESTART");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("restart", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Restart", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(event.getAai().get("vserver.vserver-id"), appcRequest.getActionIdentifiers().get("vserver-id"));
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vm restart request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVnfRestartRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("RESTART");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("restart", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Restart", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(appcRequest.getActionIdentifiers().get("vserver-id"), null);
+ assertNull(appcRequest.getPayload());
+
+ logger.info("vnf restart request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVmRebuildRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("REBUILD");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("rebuild", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Rebuild", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(event.getAai().get("vserver.vserver-id"), appcRequest.getActionIdentifiers().get("vserver-id"));
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vm rebuild request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVnfRebuildRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("REBUILD");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("rebuild", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Rebuild", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(appcRequest.getActionIdentifiers().get("vserver-id"), null);
+ assertNull(appcRequest.getPayload());
+
+ logger.info("vnf rebuild request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVmMigrateRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("MIGRATE");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("migrate", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Migrate", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(event.getAai().get("vserver.vserver-id"), appcRequest.getActionIdentifiers().get("vserver-id"));
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vm migrate request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVnfMigrateRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("MIGRATE");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("migrate", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Migrate", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(appcRequest.getActionIdentifiers().get("vserver-id"), null);
+ assertNull(appcRequest.getPayload());
+
+ logger.info("vnf migrate request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVmEvacuateRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("EVACUATE");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("evacuate", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Evacuate", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(event.getAai().get("vserver.vserver-id"), appcRequest.getActionIdentifiers().get("vserver-id"));
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vm evacuate request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVnfEvacuateRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("EVACUATE");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("evacuate", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Evacuate", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(appcRequest.getActionIdentifiers().get("vserver-id"), null);
+ assertNull(appcRequest.getPayload());
+
+ logger.info("vnf evacuate request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVmRebootRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("REBOOT");
+ policy.getTarget().setType(TargetType.VM);
+ policy.setPayload(new HashMap<String, String>());
+ policy.getPayload().put("type", "HARD");
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("reboot", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Reboot", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(event.getAai().get("vserver.vserver-id"), appcRequest.getActionIdentifiers().get("vserver-id"));
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vm reboot request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVnfRebootRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("REBOOT");
+ policy.getTarget().setType(TargetType.VNF);
+ policy.setPayload(new HashMap<String, String>());
+ policy.getPayload().put("type", "HARD");
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("reboot", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Reboot", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(appcRequest.getActionIdentifiers().get("vserver-id"), null);
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vnf reboot request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVnfStartRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("START");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("start", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Start", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(appcRequest.getActionIdentifiers().get("vserver-id"), null);
+ assertNull(appcRequest.getPayload());
+
+ logger.info("vnf start request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVmStartRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("START");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("start", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Start", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(event.getAai().get("vserver.vserver-id"), appcRequest.getActionIdentifiers().get("vserver-id"));
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vm start request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVnfStopRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("STOP");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+ assertEquals("stop", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Stop", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(appcRequest.getActionIdentifiers().get("vserver-id"), null);
+ assertNull(appcRequest.getPayload());
+
+ logger.info("vnf stop request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ @Test
+ public void getVmStopRequestTest() throws ControlLoopException {
+
+ policy.setRecipe("STOP");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ Object request = operation.getRequest();
+ assertTrue(request instanceof AppcLcmDmaapWrapper);
+
+ AppcLcmDmaapWrapper dmaapRequest = (AppcLcmDmaapWrapper) request;
+ assertEquals("request", dmaapRequest.getType());
+
+ assertEquals("stop", dmaapRequest.getRpcName());
+ assertNotNull(dmaapRequest.getBody());
+
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
+ assertNotNull(appcRequest.getCommonHeader());
+ assertEquals("2.00", appcRequest.getCommonHeader().getApiVer());
+ assertEquals("POLICY", appcRequest.getCommonHeader().getOriginatorId());
+ assertNotNull(appcRequest.getAction());
+ assertEquals("Stop", appcRequest.getAction());
+ assertNotNull(appcRequest.getActionIdentifiers());
+ assertEquals(event.getAai().get("generic-vnf.vnf-id"), appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertEquals(event.getAai().get("vserver.vserver-id"), appcRequest.getActionIdentifiers().get("vserver-id"));
+ assertNotNull(appcRequest.getPayload());
+
+ logger.info("vm stop request: {}", Serialization.gson.toJson(request, AppcLcmDmaapWrapper.class));
+
+ }
+
+ /* ===================================================================== */
+
+ /*
+ * these tests are for ensuring the incoming response messages process
+ * properly and translate to the expected policy result
+ */
+
+ @Test
+ public void incomingVmSuccessMessageTest() {
+ policy.setRecipe("RESTART");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ String lcmRespJson = "{\"version\": \"2.0\",\"rpc-name\": \"Restart\",\"correlation-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064-1\",\"type\": \"response\",\"body\": {\"output\": {\"status\": {\"code\": 400,\"message\": \"Restart Successful\"},\"common-header\": {\"timestamp\": \"2017-07-18T16:52:06.186Z\",\"api-ver\": \"2.01\",\"request-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064\",\"sub-request-id\": \"1\",\"flags\": {\"ttl\": 600}},\"payload\": \"{\\\"vm-id\\\":\\\"http://135.25.246.131:8774/v2/81fc2bc61f974de1b5a49e8c2ec090bb/servers/75dce20c-97f9-454d-abcc-aa904a33df5a\\\",\\\"tenant-id\\\":\\\"test2\\\"}\"}}}";
+ AppcLcmDmaapWrapper restartResponse = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+ operation.incomingMessage(restartResponse);
+ assertEquals(operation.getResult(), PolicyResult.SUCCESS);
+ }
+
+ @Test
+ public void incomingVnfSuccessMessageTest() {
+ policy.setRecipe("RESTART");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ String lcmRespJson = "{\"version\": \"2.0\",\"rpc-name\": \"Restart\",\"correlation-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064-1\",\"type\": \"response\",\"body\": {\"output\": {\"status\": {\"code\": 500,\"message\": \"Restart Successful\"},\"common-header\": {\"timestamp\": \"2017-07-18T16:52:06.186Z\",\"api-ver\": \"2.01\",\"request-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064\",\"sub-request-id\": \"1\",\"flags\": {\"ttl\": 600}},\"payload\": \"{\\\"vm-id\\\":\\\"http://135.25.246.131:8774/v2/81fc2bc61f974de1b5a49e8c2ec090bb/servers/75dce20c-97f9-454d-abcc-aa904a33df5a\\\",\\\"tenant-id\\\":\\\"test2\\\"}\"}}}";
+ AppcLcmDmaapWrapper restartResponse = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+ /* Send in several partial success messages */
+ for (int i = 0; i < 5; i++) {
+ operation.incomingMessage(restartResponse);
+ assertEquals(operation.getResult(), null);
+ }
+
+ /* Send in an operation success */
+ restartResponse.getBody().getOutput().getStatus().setCode(400);
+ operation.incomingMessage(restartResponse);
+ assertEquals(operation.getResult(), PolicyResult.SUCCESS);
+ }
+
+ @Test
+ public void incomingVmFailureMessageTest() {
+ policy.setRecipe("RESTART");
+ policy.getTarget().setType(TargetType.VM);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ String lcmRespJson = "{\"version\": \"2.0\",\"rpc-name\": \"Restart\",\"correlation-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064-1\",\"type\": \"response\",\"body\": {\"output\": {\"status\": {\"code\": 401,\"message\": \"Restart Successful\"},\"common-header\": {\"timestamp\": \"2017-07-18T16:52:06.186Z\",\"api-ver\": \"2.01\",\"request-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064\",\"sub-request-id\": \"1\",\"flags\": {\"ttl\": 600}},\"payload\": \"{\\\"vm-id\\\":\\\"http://135.25.246.131:8774/v2/81fc2bc61f974de1b5a49e8c2ec090bb/servers/75dce20c-97f9-454d-abcc-aa904a33df5a\\\",\\\"tenant-id\\\":\\\"test2\\\"}\"}}}";
+ AppcLcmDmaapWrapper restartResponse = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+ operation.incomingMessage(restartResponse);
+ assertEquals(operation.getResult(), PolicyResult.FAILURE);
+ }
+
+ @Test
+ public void incomingAllVnfFailureMessageTest() {
+ policy.setRecipe("RESTART");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ String lcmRespJson = "{\"version\": \"2.0\",\"rpc-name\": \"Restart\",\"correlation-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064-1\",\"type\": \"response\",\"body\": {\"output\": {\"status\": {\"code\": 501,\"message\": \"Restart Successful\"},\"common-header\": {\"timestamp\": \"2017-07-18T16:52:06.186Z\",\"api-ver\": \"2.01\",\"request-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064\",\"sub-request-id\": \"1\",\"flags\": {\"ttl\": 600}},\"payload\": \"{\\\"vm-id\\\":\\\"http://135.25.246.131:8774/v2/81fc2bc61f974de1b5a49e8c2ec090bb/servers/75dce20c-97f9-454d-abcc-aa904a33df5a\\\",\\\"tenant-id\\\":\\\"test2\\\"}\"}}}";
+ AppcLcmDmaapWrapper restartResponse = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+ /* Send in ALL failure messages */
+ for (int i = 0; i < 5; i++) {
+ operation.incomingMessage(restartResponse);
+ assertEquals(operation.getResult(), null);
+ }
+
+ /* Send in an operation failure */
+ restartResponse.getBody().getOutput().getStatus().setCode(401);
+ operation.incomingMessage(restartResponse);
+
+ /* Because every VM failed in the VNF, it should be failure result */
+ assertEquals(operation.getResult(), PolicyResult.FAILURE);
+ }
+
+ @Test
+ public void incomingPartialVnfFailureMessageTest() {
+ policy.setRecipe("RESTART");
+ policy.getTarget().setType(TargetType.VNF);
+ operation = new AppcLcmOperation(transaction, policy, event, 1);
+
+ String lcmRespJson = "{\"version\": \"2.0\",\"rpc-name\": \"Restart\",\"correlation-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064-1\",\"type\": \"response\",\"body\": {\"output\": {\"status\": {\"code\": 500,\"message\": \"Restart Successful\"},\"common-header\": {\"timestamp\": \"2017-07-18T16:52:06.186Z\",\"api-ver\": \"2.01\",\"request-id\": \"baf5ba32-6b8c-430c-a91b-02d2c0ba3064\",\"sub-request-id\": \"1\",\"flags\": {\"ttl\": 600}},\"payload\": \"{\\\"vm-id\\\":\\\"http://135.25.246.131:8774/v2/81fc2bc61f974de1b5a49e8c2ec090bb/servers/75dce20c-97f9-454d-abcc-aa904a33df5a\\\",\\\"tenant-id\\\":\\\"test2\\\"}\"}}}";
+ AppcLcmDmaapWrapper restartResponse = Serialization.gson.fromJson(lcmRespJson, AppcLcmDmaapWrapper.class);
+
+ /* Send in several partial success messages */
+ for (int i = 0; i < 5; i++) {
+ operation.incomingMessage(restartResponse);
+ assertEquals(operation.getResult(), null);
+ }
+
+ /* Change status to partial failure */
+ restartResponse.getBody().getOutput().getStatus().setCode(501);
+
+ /* Send in several partial failures messages */
+ for (int i = 0; i < 5; i++) {
+ operation.incomingMessage(restartResponse);
+ assertEquals(operation.getResult(), null);
+ }
+
+ /* Send in an operation failure */
+ restartResponse.getBody().getOutput().getStatus().setCode(401);
+ operation.incomingMessage(restartResponse);
+
+ /*
+ * Only a subset of VMs failed in the VNF so the
+ * result will be failure_exception
+ */
+ assertEquals(operation.getResult(), PolicyResult.FAILURE_EXCEPTION);
+ }
+
+ /* ===================================================================== */
+
+ /*
+ * these tests are for validating the A&AI subtag and target in an onset
+ */
+
+ @Test
+ public void validAaiSubtagTest() {
+ transaction.setNotificationMessage(null);
+ VirtualControlLoopEvent validEvent = new VirtualControlLoopEvent();
+ validEvent.setTarget("vserver.vserver-name");
+ validEvent.getAai().put(AppcLcmOperation.DCAE_CLOSEDLOOP_DISABLED_FIELD, "false");
+ validEvent.getAai().put(validEvent.getTarget(), "VM001");
+ assertTrue(AppcLcmOperation.isAaiValid(transaction, validEvent));
+ assertNull(transaction.getNotificationMessage());
+ }
+
+ @Test
+ public void noAaiSubtagTest() {
+ transaction.setNotificationMessage(null);
+ VirtualControlLoopEvent noAaiTag = new VirtualControlLoopEvent();
+ noAaiTag.setAai(null);
+ assertFalse(AppcLcmOperation.isAaiValid(transaction, noAaiTag));
+ assertEquals(transaction.getNotificationMessage(), "No A&AI Subtag");
+ }
+
+ @Test
+ public void noClosedLoopDisabledInAaiTest() {
+ transaction.setNotificationMessage(null);
+ VirtualControlLoopEvent invalidEvent = new VirtualControlLoopEvent();
+ assertFalse(AppcLcmOperation.isAaiValid(transaction, invalidEvent));
+ assertEquals(AppcLcmOperation.DCAE_CLOSEDLOOP_DISABLED_FIELD
+ + " information missing", transaction.getNotificationMessage());
+ }
+
+ @Test
+ public void closedLoopDisabledInAaiTest() {
+ transaction.setNotificationMessage(null);
+ VirtualControlLoopEvent invalidEvent = new VirtualControlLoopEvent();
+ invalidEvent.getAai().put(AppcLcmOperation.DCAE_CLOSEDLOOP_DISABLED_FIELD, "true");
+ assertFalse(AppcLcmOperation.isAaiValid(transaction, invalidEvent));
+ assertEquals(AppcLcmOperation.DCAE_CLOSEDLOOP_DISABLED_FIELD
+ + " is set to true", transaction.getNotificationMessage());
+ }
+
+ @Test
+ public void targetMismatchInAaiTest() {
+ transaction.setNotificationMessage(null);
+ VirtualControlLoopEvent validEvent = new VirtualControlLoopEvent();
+ validEvent.setTarget("vserver.vserver-name");
+ validEvent.getAai().put(AppcLcmOperation.DCAE_CLOSEDLOOP_DISABLED_FIELD, "false");
+ assertFalse(AppcLcmOperation.isAaiValid(transaction, validEvent));
+ assertEquals("target field invalid - must have corresponding AAI value",
+ transaction.getNotificationMessage());
+ }
+}
diff --git a/controlloop/m2/appclcm/src/test/java/model/AppcLcmResponseCodeTest.java b/controlloop/m2/appclcm/src/test/java/model/AppcLcmResponseCodeTest.java
new file mode 100644
index 000000000..fc3349253
--- /dev/null
+++ b/controlloop/m2/appclcm/src/test/java/model/AppcLcmResponseCodeTest.java
@@ -0,0 +1,44 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * 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 model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+import org.onap.policy.m2.appclcm.model.AppcLcmResponseCode;
+
+
+public class AppcLcmResponseCodeTest {
+
+ @Test
+ public void test() {
+ assertEquals(AppcLcmResponseCode.ACCEPTED, AppcLcmResponseCode.toResponseValue(100));
+ assertEquals(AppcLcmResponseCode.ERROR, AppcLcmResponseCode.toResponseValue(200));
+ assertEquals(AppcLcmResponseCode.REJECT, AppcLcmResponseCode.toResponseValue(300));
+ assertEquals(AppcLcmResponseCode.SUCCESS, AppcLcmResponseCode.toResponseValue(400));
+ assertEquals(AppcLcmResponseCode.FAILURE, AppcLcmResponseCode.toResponseValue(450));
+ assertEquals(AppcLcmResponseCode.PARTIAL_SUCCESS, AppcLcmResponseCode.toResponseValue(500));
+ assertEquals(AppcLcmResponseCode.PARTIAL_FAILURE, AppcLcmResponseCode.toResponseValue(501));
+ assertNull(AppcLcmResponseCode.toResponseValue(600));
+ }
+}