summaryrefslogtreecommitdiffstats
path: root/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test')
-rw-r--r--appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestConverter.java360
-rw-r--r--appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestHandler.java583
-rw-r--r--appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestValidator.java626
-rw-r--r--appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/workingstatemanager/TestWorkingStateManager.java110
-rw-r--r--appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/resources/org/openecomp/appc/default.properties107
5 files changed, 1786 insertions, 0 deletions
diff --git a/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestConverter.java b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestConverter.java
new file mode 100644
index 000000000..46875a269
--- /dev/null
+++ b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestConverter.java
@@ -0,0 +1,360 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 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 org.openecomp.appc.requesthandler;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import org.junit.Assert;
+import org.junit.Test;
+import org.openecomp.appc.domainmodel.lcm.*;
+import org.openecomp.appc.executor.objects.LCMCommandStatus;
+import org.openecomp.appc.requesthandler.conv.Converter;
+
+import javax.ws.rs.container.AsyncResponse;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.HashMap;
+
+
+public class TestConverter {
+ private String expectedJsonBodyStr ="{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}}";
+ private String expectedDmaapOutgoingMessageJsonStringTest ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"test\"}";
+ private String expectedDmaapOutgoingMessageJsonStringRollback ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"rollback\"}";
+ private String expectedDmaapOutgoingMessageJsonStringSnapshot ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"snapshot\"}";
+ private String expectedDmaapOutgoingMessageJsonStringAudit ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"audit\"}";
+ private String expectedDmaapOutgoingMessageJsonStringHealthCheck ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"health-check\"}";
+ private String expectedDmaapOutgoingMessageJsonStringLiveUpgrade ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"live-upgrade\"}";
+ private String expectedDmaapOutgoingMessageJsonStringLock ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"lock\"}";
+ private String expectedDmaapOutgoingMessageJsonStringModifyConfig ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"modify-config\"}";
+ private String expectedDmaapOutgoingMessageJsonStringSoftwareUpload ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"software-upload\"}";
+ private String expectedDmaapOutgoingMessageJsonStringStop ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"stop\"}";
+ private String expectedDmaapOutgoingMessageJsonStringSync ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"sync\"}";
+ private String expectedDmaapOutgoingMessageJsonStringTerminate ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"terminate\"}";
+ private String expectedDmaapOutgoingMessageJsonStringUnlock ="{\"body\":{\"output\":{\"common-header\":{\"api-ver\":\"2.0.0\",\"flags\":{},\"originator-id\":\"oid\",\"request-id\":\"reqid\",\"timestamp\":\"1970-01-01T00:00:01.000Z\"},\"status\":{\"code\":400,\"message\":\"SUCCESS - request has been processed successfully\"}}},\"cambria.partition\":\"MSO\",\"rpc-name\":\"unlock\"}";
+
+ @Test
+ public void convDateToZuluStringTest(){
+ String dateToZuluString = Converter.convDateToZuluString(new Date(0L));
+ Assert.assertEquals("1970-01-01T00:00:00.000Z", dateToZuluString);
+ }
+
+ @Test
+ public void convAsyncResponseToBuilderTestTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Test;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringTestTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Test;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringTest,jsonStr);
+ }
+
+ @Test
+ public void convPayloadObjectToJsonStringTest() throws JsonProcessingException, ParseException {
+ String jsonString = Converter.convPayloadObjectToJsonString("any valid JSON string value");
+ Assert.assertEquals("any valid JSON string value", jsonString);
+
+ HashMap<String, String> hashMap = new HashMap<>();
+ hashMap.put("key","value");
+ jsonString = Converter.convPayloadObjectToJsonString(hashMap);
+ Assert.assertEquals("{\"key\":\"value\"}", jsonString);
+ }
+
+ @Test
+ public void convAsyncResponseToBuilderRollbackTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Rollback;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringRollbackTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Rollback;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringRollback,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToBuilderSnapshotTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Snapshot;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringSnapshotTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Snapshot;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringSnapshot,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderAuditTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Audit;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringAuditTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Audit;
+ String rpcName = action.name().toLowerCase();
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringAudit,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderHealthCheckTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.HealthCheck;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringHealthCheckTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.HealthCheck;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringHealthCheck,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderLiveUpgradeTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.LiveUpgrade;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringLiveUpgradeTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.LiveUpgrade;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringLiveUpgrade,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderLockTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Lock;
+ String rpcName = convertActionNameToUrl(action.name());
+
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringLockTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Lock;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringLock,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderModifyConfigTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.ModifyConfig;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringModifyConfigTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.ModifyConfig;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringModifyConfig,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderSoftwareUploadTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.SoftwareUpload;
+ String rpcName = convertActionNameToUrl(action.name());
+
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringSoftwareUploadTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.SoftwareUpload;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringSoftwareUpload,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderStopTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Stop;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringStopTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Stop;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringStop,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderSync() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Sync;
+ String rpcName = convertActionNameToUrl(action.name());
+
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringSync() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Sync;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringSync,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderTerminateTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Sync;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringTerminateTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Terminate;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringTerminate,jsonStr);
+ }
+ @Test
+ public void convAsyncResponseToBuilderUnlockTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Unlock;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(action, rpcName, asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringUnlockTest() throws JsonProcessingException {
+ ResponseContext asyncResponse = buildAsyncResponse();
+ VNFOperation action = VNFOperation.Unlock;
+ String rpcName = convertActionNameToUrl(action.name());
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(action, rpcName, asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonStringUnlock,jsonStr);
+ }
+ /*@Test
+ public void convAsyncResponseToBuilderTest() throws JsonProcessingException {
+ AsyncResponse asyncResponse = buildAsyncResponse();
+ String jsonStr = Converter.convAsyncResponseToJsonStringBody(asyncResponse);
+ Assert.assertEquals(expectedJsonBodyStr,jsonStr);
+ }
+
+ @Test
+ public void convAsyncResponseToDmaapOutgoingMessageJsonStringTest() throws JsonProcessingException {
+ AsyncResponse asyncResponse = buildAsyncResponse();
+ String jsonStr = Converter.convAsyncResponseToDmaapOutgoingMessageJsonString(asyncResponse);
+ System.out.println("jsonStr = " + jsonStr);
+ Assert.assertEquals(expectedDmaapOutgoingMessageJsonString,jsonStr);
+ }*/
+
+
+ private ResponseContext buildAsyncResponse() {
+ ResponseContext asyncResponse = createResponseContextWithSubObjects();
+ asyncResponse.getStatus().setCode(LCMCommandStatus.SUCCESS.getResponseCode());
+ asyncResponse.getStatus().setMessage(LCMCommandStatus.SUCCESS.getResponseMessage());
+ asyncResponse.getCommonHeader().setOriginatorId("oid");
+ asyncResponse.getCommonHeader().setApiVer("2.0.0");
+ asyncResponse.getCommonHeader().setRequestId("reqid");
+ asyncResponse.getCommonHeader().setTimestamp(new Date(1000L));
+ asyncResponse.setPayload("any valid JSON string value. Json escape characters need to be added to make it a valid json string value");
+ return asyncResponse;
+ }
+
+ private ResponseContext createResponseContextWithSubObjects() {
+
+ ResponseContext responseContext = new ResponseContext();
+ CommonHeader commonHeader = new CommonHeader();
+ Flags flags = new Flags();
+ Status status = new Status();
+ responseContext.setCommonHeader(commonHeader);
+ responseContext.setStatus(status);
+ commonHeader.setFlags(flags);
+ return responseContext;
+ }
+
+ private String convertActionNameToUrl(String action) {
+ String regex = "([a-z])([A-Z]+)";
+ String replacement = "$1-$2";
+ return action.replaceAll(regex, replacement)
+ .toLowerCase();
+ }
+
+
+}
+
+
+
diff --git a/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestHandler.java b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestHandler.java
new file mode 100644
index 000000000..e4c1e92d3
--- /dev/null
+++ b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestHandler.java
@@ -0,0 +1,583 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 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 org.openecomp.appc.requesthandler;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Matchers;
+import org.mockito.Mockito;
+import org.openecomp.appc.domainmodel.lcm.*;
+import org.openecomp.appc.executor.CommandExecutor;
+import org.openecomp.appc.executor.UnstableVNFException;
+import org.openecomp.appc.executor.objects.CommandExecutorInput;
+import org.openecomp.appc.executor.objects.LCMCommandStatus;
+import org.openecomp.appc.lifecyclemanager.LifecycleManager;
+import org.openecomp.appc.lifecyclemanager.objects.LifecycleException;
+import org.openecomp.appc.lifecyclemanager.objects.NoTransitionDefinedException;
+import org.openecomp.appc.lockmanager.api.LockException;
+import org.openecomp.appc.lockmanager.api.LockManager;
+import org.openecomp.appc.messageadapter.MessageAdapter;
+import org.openecomp.appc.requesthandler.exceptions.*;
+import org.openecomp.appc.requesthandler.impl.RequestHandlerImpl;
+import org.openecomp.appc.requesthandler.impl.RequestValidatorImpl;
+import org.openecomp.appc.requesthandler.objects.RequestHandlerInput;
+import org.openecomp.appc.requesthandler.objects.RequestHandlerOutput;
+import org.openecomp.appc.transactionrecorder.TransactionRecorder;
+import org.openecomp.appc.transactionrecorder.objects.TransactionRecord;
+import org.openecomp.appc.workflow.WorkFlowManager;
+import org.openecomp.appc.workflow.objects.WorkflowExistsOutput;
+import org.openecomp.appc.workflow.objects.WorkflowRequest;
+import org.openecomp.appc.workingstatemanager.WorkingStateManager;
+import org.openecomp.appc.workingstatemanager.objects.VNFWorkingState;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import org.osgi.framework.FrameworkUtil;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.util.*;
+import static org.mockito.Matchers.*;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.mock;
+import static org.powermock.api.mockito.PowerMockito.when;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest( {WorkingStateManager.class,FrameworkUtil.class, TransactionRecorder.class, RequestHandlerImpl.class,RequestValidatorImpl.class, TransactionRecorder.class})
+public class TestRequestHandler {
+
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(TestRequestHandler.class);
+
+ private RequestHandlerImpl requestHandler;
+ private RequestValidatorImpl requestValidator;
+ private WorkFlowManager workflowManager;
+ private WorkingStateManager workingStateManager ;
+ private LockManager lockManager;
+
+ @Before
+ public void init() throws Exception {
+
+ requestHandler = new RequestHandlerImpl();
+ LifecycleManager lifecyclemanager= mock(LifecycleManager.class);
+ workflowManager= mock(WorkFlowManager.class);
+ CommandExecutor commandExecutor= mock(CommandExecutor.class);
+ MessageAdapter messageAdapter = mock(MessageAdapter.class);
+ workingStateManager = mock(WorkingStateManager.class);
+ lockManager = mock(LockManager.class);
+ TransactionRecorder transactionRecorder= mock(TransactionRecorder.class);
+
+ requestHandler.setWorkingStateManager(workingStateManager);
+ requestHandler.setMessageAdapter(messageAdapter);
+ requestValidator = mock(RequestValidatorImpl.class);
+ requestValidator.setLifecyclemanager(lifecyclemanager);
+ requestValidator.setWorkingStateManager(workingStateManager);
+ requestValidator.setWorkflowManager(workflowManager);
+ requestValidator.setLifecyclemanager(lifecyclemanager);
+ requestHandler.setCommandExecutor(commandExecutor);
+ requestHandler.setRequestValidator(requestValidator);
+ requestHandler.setLockManager(lockManager);
+ requestHandler.setTransactionRecorder(transactionRecorder);
+
+ doNothing().when(transactionRecorder).store((TransactionRecord) anyObject());
+// Mockito.when(commandExecutor.executeCommand((CommandExecutorInput)anyObject())).thenReturn(true);
+ Mockito.when(workingStateManager.isVNFStable("39")).thenReturn(true);
+ for(Integer i=130; i<=140 ; i++)
+ {
+ Mockito.when(workingStateManager.isVNFStable(i.toString())).thenReturn(true);
+ }
+ Mockito.when(workingStateManager.isVNFStable("39")).thenReturn(true);
+ Mockito.when(workingStateManager.isVNFStable("40")).thenReturn(true).thenReturn(false);
+ Mockito.when(workingStateManager.isVNFStable("38")).thenReturn(true).thenReturn(false);
+ Mockito.when(workingStateManager.isVNFStable("201")).thenReturn(true);
+ Mockito.when(workingStateManager.isVNFStable("202")).thenReturn(true).thenReturn(false);
+ Mockito.when(workingStateManager.isVNFStable("301")).thenReturn(true).thenReturn(false);
+ Mockito.when(workingStateManager.isVNFStable("302")).thenReturn(true).thenReturn(true);
+ Mockito.when(workingStateManager.isVNFStable("303")).thenReturn(true).thenReturn(true);
+ Mockito.when(workingStateManager.isVNFStable("309")).thenReturn(true).thenReturn(true);
+ Mockito.when(workingStateManager.isVNFStable("310")).thenReturn(true).thenReturn(true);
+ }
+
+ private void threadSleep(){
+ try {
+ Thread.sleep(5);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testNegativeFlowWithRequestingUsedVnfId() throws Exception {
+ logger.debug("=====================testNegativeFlowWithRequestingUsedVnfId=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input1 = this.getRequestHandlerInput("131", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ mockRuntimeContextAndVnfContext(input1);
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ PowerMockito.doThrow(new LockException(" ")).when(lockManager).acquireLock(Matchers.anyString(), Matchers.anyString(), Matchers.anyByte());
+ RequestHandlerOutput output1 = requestHandler.handleRequest(input1);
+ threadSleep ();
+ Assert.assertEquals(LCMCommandStatus.LOCKING_FAILURE.getResponseCode(), output1.getResponseContext().getStatus().getCode());
+ logger.debug("testNegativeFlowWithRequestingUsedVnfId");
+ logger.debug("=====================testNegativeFlowWithRequestingUsedVnfId=============================");
+ }
+
+ @Test
+ public void testInvalidVNFExceptionRequest() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("3009", VNFOperation.Configure, 0,false,originatorID, requestID, subRequestID,new Date());
+ PowerMockito.doThrow(new VNFNotFoundException(" ")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.VNF_NOT_FOUND.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void testLifecycleException() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("3009", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ PowerMockito.doThrow(new LifecycleException(new Exception(),"Configured","test event")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.ACTION_NOT_SUPPORTED.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+
+ @Test
+ public void testRequestExpiredException() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("3009", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ PowerMockito.doThrow(new RequestExpiredException("")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.EXPIRED_REQUEST.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void testWorkflowNotFoundException() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("3009", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ PowerMockito.doThrow(new WorkflowNotFoundException("Unable to find the DG","VNF-2.0.0.0", "Test")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.WORKFLOW_NOT_FOUND.getResponseCode(), output.getResponseContext().getStatus().getCode());}
+
+ @Test
+ public void testDGWorkflowNotFoundException() throws Exception {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest) anyObject())).thenReturn(new WorkflowExistsOutput(true, true));
+ RequestHandlerInput input = this.getRequestHandlerInput("3009", VNFOperation.Configure, 0, false, originatorID, requestID, subRequestID, new Date());
+ PowerMockito.doThrow(new DGWorkflowNotFoundException("Unable to find the DG", "VNF-2.0.0.0", "temp", "Test")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.DG_WORKFLOW_NOT_FOUND.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void testInvalidInputException() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID1 = UUID.randomUUID().toString();
+ String requestID1 = UUID.randomUUID().toString();
+ String subRequestID1 = UUID.randomUUID().toString();
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input1 = this.getRequestHandlerInput("3009", VNFOperation.Configure,0,false,originatorID1, requestID1, subRequestID1,new Date());
+ PowerMockito.doThrow(new InvalidInputException(" ")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output1 = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.INVALID_INPUT_PARAMETER.getResponseCode(), output1.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void testNoTransitionDefinedException() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("3010", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ PowerMockito.doThrow(new NoTransitionDefinedException("Invalid VNF State","Unstable","Test event")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.NO_TRANSITION_DEFINE.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void rejectInvalidRequest() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("3009", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ PowerMockito.doThrow(new VNFNotFoundException(" ")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.VNF_NOT_FOUND.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void testUnstableWorkingState() throws Exception {
+ logger.debug("=====================testUnstableWorkingState=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ Mockito.when(workingStateManager.isVNFStable("37")).thenReturn(true,false);
+ RequestHandlerInput input = this.getRequestHandlerInput("37", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ mockRuntimeContextAndVnfContext(input);
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(), output.getResponseContext().getStatus().getCode());
+
+ RequestHandlerInput input1 = this.getRequestHandlerInput("37", VNFOperation.Configure,1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ PowerMockito.doThrow(new LockException(" ")).when(lockManager).acquireLock(Matchers.anyString(), Matchers.anyString(), Matchers.anyByte());
+ mockRuntimeContextAndVnfContext(input1);
+ RequestHandlerOutput output1 = requestHandler.handleRequest(input1);
+
+ Assert.assertEquals(LCMCommandStatus.LOCKING_FAILURE.getResponseCode(), output1.getResponseContext().getStatus().getCode());
+ logger.debug("=====================testUnstableWorkingState=============================");
+ }
+
+ @Test
+ public void testOnRequestExecutionEndSuccessForWorkingState() throws Exception {
+ logger.debug("=====================testOnRequestExecutionEndSuccessForWorkingState=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input1 = this.getRequestHandlerInput("137", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ mockRuntimeContextAndVnfContext(input1);
+
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+
+
+ RequestHandlerOutput output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ threadSleep();
+
+ requestHandler.onRequestExecutionEnd(this.getAsyncResponse(true,LCMCommandStatus.SUCCESS,"137", "", "", ""),true);
+
+ input1 = this.getRequestHandlerInput("137", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ mockRuntimeContextAndVnfContext(input1);
+ output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ logger.debug("=====================testOnRequestExecutionEndSuccessForWorkingState=============================");
+ }
+
+ private void mockRuntimeContextAndVnfContext(RequestHandlerInput input1) throws Exception {
+ RuntimeContext runtimeContext = PowerMockito.mock(RuntimeContext.class);
+ VNFContext vnfContext = new VNFContext();
+ vnfContext.setType("SCP");
+ vnfContext.setId("137");
+ when(runtimeContext.getVnfContext()).thenReturn(vnfContext);
+ when(runtimeContext.getRequestContext()).thenReturn(input1.getRequestContext());
+ when(runtimeContext.getRpcName()).thenReturn(input1.getRpcName());
+
+
+ ResponseContext responseContext = new ResponseContext();
+ responseContext.setStatus(new Status());
+ responseContext.setAdditionalContext(new HashMap<String, String>(4));
+ responseContext.setCommonHeader(input1.getRequestContext().getCommonHeader());
+ runtimeContext.setResponseContext(responseContext);
+ when(runtimeContext.getResponseContext()).thenReturn(responseContext);
+ responseContext.setStatus(new Status());
+ runtimeContext.setResponseContext(responseContext);
+ PowerMockito.whenNew(RuntimeContext.class).withAnyArguments().thenReturn(runtimeContext);
+
+ }
+
+
+ @Test
+ public void testOnRequestExecutionEndFailureForWorkingState() throws Exception {
+ logger.debug("=====================testOnRequestExecutionEndFailureForWorkingState=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+
+ RequestHandlerInput input1 = this.getRequestHandlerInput("38", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ mockRuntimeContextAndVnfContext(input1);
+ RequestHandlerOutput output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ threadSleep();
+ requestHandler.onRequestExecutionEnd(this.getAsyncResponse(false,LCMCommandStatus.NO_TRANSITION_DEFINE,"38", "", "", ""),true);
+
+ input1 = this.getRequestHandlerInput("38", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ PowerMockito.doThrow(new UnstableVNFException(" ")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ mockRuntimeContextAndVnfContext(input1);
+ output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.UNSTABLE_VNF.getResponseCode(),output.getResponseContext().getStatus().getCode());
+
+ logger.debug("=====================testOnRequestExecutionEndFailureForWorkingState=============================");
+ }
+
+ @Test
+ public void testOnRequestExecutionEndTTLExpiredForWorkingState() throws Exception {
+ logger.debug("=====================testOnRequestExecutionEndFailureForWorkingState=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+
+ RequestHandlerInput input1 = this.getRequestHandlerInput("39", VNFOperation.Configure, 1,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ mockRuntimeContextAndVnfContext(input1);
+
+ RequestHandlerOutput output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ threadSleep();
+ input1 = this.getRequestHandlerInput("39", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ PowerMockito.doThrow(new LockException(" ")).when(lockManager).acquireLock(Matchers.anyString(), Matchers.anyString(), Matchers.anyByte());
+ output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.LOCKING_FAILURE.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ logger.debug("=====================testOnRequestExecutionEndFailureForWorkingState=============================");
+ }
+
+ @Test
+ public void testOnRequestTTLEndForWorkingState() throws Exception {
+ logger.debug("=====================testOnRequestTTLEndForWorkingState=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+
+ RequestHandlerInput input1 = this.getRequestHandlerInput("40", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ mockRuntimeContextAndVnfContext(input1);
+ RequestHandlerOutput output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ threadSleep();
+ RuntimeContext response = this.getAsyncResponse(false,LCMCommandStatus.EXPIRED_REQUEST_FAILURE,"40", "", "", "");
+ requestHandler.onRequestTTLEnd(response,true);
+ input1 = this.getRequestHandlerInput("40", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ PowerMockito.doThrow(new UnstableVNFException(" ")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.UNSTABLE_VNF.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ logger.debug("=====================testOnRequestTTLEndForWorkingState=============================");
+ }
+
+ @Test
+ public void testForceCommandExecution() throws Exception {
+ logger.debug("=====================testForceCommandExecution=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input1 = this.getRequestHandlerInput("138", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ mockRuntimeContextAndVnfContext(input1);
+
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ RequestHandlerOutput output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ threadSleep();
+ RuntimeContext response = this.getAsyncResponse(false,LCMCommandStatus.ACCEPTED,"138", "", "", "");
+ requestHandler.onRequestTTLEnd(response,true);
+ input1 = this.getRequestHandlerInput("138", VNFOperation.Configure, 1200,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ input1.getRequestContext().getCommonHeader().getFlags().setForce(true);
+ mockRuntimeContextAndVnfContext(input1);
+ output = requestHandler.handleRequest(input1);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(),output.getResponseContext().getStatus().getCode());
+ logger.debug("=====================testForceCommandExecution=============================");
+ }
+
+ @Test
+ public void testOnRequestExecutionEndSuccess() throws VNFNotFoundException {
+ logger.debug("=====================Positive TEST - On Request Execution End SUCCESS- Starts =============================");
+ Mockito.doReturn(true).when(workingStateManager).setWorkingState(anyString(),(VNFWorkingState) anyObject(), anyString(),anyBoolean());
+ requestHandler.onRequestExecutionEnd(this.getAsyncResponse(true,LCMCommandStatus.SUCCESS,"201", "", "", ""),true);
+ logger.debug("=====================Positive TEST - On Request Execution End SUCCESS- Ends =============================");
+ }
+
+ @Test
+ public void testOnRequestExecutionEndFailure() throws VNFNotFoundException {
+ logger.debug("=====================Positive TEST - On Request Execution End FAILURE- Starts =============================");
+ Mockito.doReturn(true).when(workingStateManager).setWorkingState(anyString(),(VNFWorkingState) anyObject(), anyString(),anyBoolean());
+ requestHandler.onRequestExecutionEnd(this.getAsyncResponse(false,LCMCommandStatus.DG_FAILURE,"202", "", "", ""),true);
+ logger.debug("=====================Positive TEST - On Request Execution End FAILURE- Ends =============================");
+ }
+
+ private RequestHandlerInput getRequestHandlerInput(String vnfID, VNFOperation action, int ttl, boolean force,String originatorId, String requestId, String subRequestId,Date timeStamp){
+ String API_VERSION= "2.0.0";
+ RequestHandlerInput input = new RequestHandlerInput();
+ RuntimeContext runtimeContext = createRuntimeContextWithSubObjects();
+ RequestContext requestContext = runtimeContext.getRequestContext();
+ input.setRequestContext(requestContext);
+ requestContext.getActionIdentifiers().setVnfId(vnfID);
+ requestContext.setAction(action);
+ input.setRpcName(convertActionNameToUrl(action.name()));
+ requestContext.getCommonHeader().setRequestId(requestId);
+ requestContext.getCommonHeader().setSubRequestId(subRequestId);
+ requestContext.getCommonHeader().setOriginatorId(originatorId);
+ requestContext.getCommonHeader().getFlags().setTtl(ttl);
+ requestContext.getCommonHeader().getFlags().setForce(force);
+ requestContext.getCommonHeader().setTimestamp(timeStamp);
+ requestContext.getCommonHeader().setApiVer(API_VERSION);
+ return input;
+ }
+
+ private RuntimeContext getAsyncResponse(boolean wfStatus, LCMCommandStatus commandStatus, String vnfId, String originatorId, String requestId, String subRequestId)
+ {
+ RuntimeContext output = createRuntimeContextWithSubObjects();
+
+
+ output.getRequestContext().getActionIdentifiers().setVnfId(vnfId);
+ output.getVnfContext().setId(vnfId);
+ output.getResponseContext().getCommonHeader().setApiVer("2.0.0");
+ output.getResponseContext().getCommonHeader().setTimestamp(new Date());
+ output.getResponseContext().getStatus().setCode(LCMCommandStatus.SUCCESS.getResponseCode());
+ output.setTimeStart(new Date());
+ output.getResponseContext().getCommonHeader().setOriginatorId(originatorId);
+ output.getResponseContext().getCommonHeader().setRequestId(requestId);
+ output.getResponseContext().getCommonHeader().setSubRequestId(subRequestId);
+
+ output.getVnfContext().setType("FIREWALL");
+ output.getRequestContext().setAction(VNFOperation.Configure);
+ output.setRpcName("configure");
+ output.getResponseContext().setPayload("");
+ return output;
+ }
+
+ @Test
+ public void rejectDuplicateRequest() throws Exception {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("301", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ mockRuntimeContextAndVnfContext(input);
+
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(), output.getResponseContext().getStatus().getCode());
+
+ input = this.getRequestHandlerInput("309", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+
+ PowerMockito.doThrow(new DuplicateRequestException(" ")).when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+ output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.DUPLICATE_REQUEST.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void removeRequestFromRegistryOnRequestCompletion() throws Exception {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("302", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ mockRuntimeContextAndVnfContext(input);
+
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(), output.getResponseContext().getStatus().getCode());
+
+ RuntimeContext asyncResponse = this.getAsyncResponse(true,LCMCommandStatus.SUCCESS,"302",originatorID,requestID,subRequestID);
+ requestHandler.onRequestExecutionEnd(asyncResponse,true);
+
+ input = this.getRequestHandlerInput("310", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ mockRuntimeContextAndVnfContext(input);
+ output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ @Test
+ public void removeRequestFromRegistryOnTTLExpiration() throws Exception {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+
+ PowerMockito.doNothing().when(requestValidator).validateRequest(Matchers.any(RuntimeContext.class));
+
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("303", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ mockRuntimeContextAndVnfContext(input);
+ RequestHandlerOutput output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(), output.getResponseContext().getStatus().getCode());
+
+ RuntimeContext asyncResponse = this.getAsyncResponse(true,LCMCommandStatus.ACCEPTED,"303",originatorID,requestID,subRequestID);
+ requestHandler.onRequestTTLEnd(asyncResponse,false);
+
+ output = requestHandler.handleRequest(input);
+ Assert.assertEquals(LCMCommandStatus.ACCEPTED.getResponseCode(), output.getResponseContext().getStatus().getCode());
+ }
+
+ /*@Test
+ public void getMetricserviceTest() throws Exception{
+ Method method = RequestHandlerImpl.class.getDeclaredMethod("getMetricservice", null);
+ method.setAccessible(true);
+ method.invoke(null, null);
+
+ }*/
+ @Test
+ public void onRequestExecutionStartTest() throws Exception{
+ Mockito.doReturn(true).when(workingStateManager).setWorkingState(anyString(),(VNFWorkingState) anyObject(), anyString(),anyBoolean());
+ requestHandler.onRequestExecutionStart("303",false, null, true);
+ Assert.assertNotNull(requestHandler);
+ }
+
+
+ private RuntimeContext createRuntimeContextWithSubObjects() {
+ RuntimeContext runtimeContext = new RuntimeContext();
+ RequestContext requestContext = new RequestContext();
+ runtimeContext.setRequestContext(requestContext);
+ ResponseContext responseContext = createResponseContextWithSuObjects();
+ runtimeContext.setResponseContext(responseContext);
+ CommonHeader commonHeader = new CommonHeader();
+ requestContext.setCommonHeader(commonHeader);
+ Flags flags = new Flags();
+ commonHeader.setFlags(flags);
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ requestContext.setActionIdentifiers(actionIdentifiers);
+ VNFContext vnfContext = new VNFContext();
+ runtimeContext.setVnfContext(vnfContext);
+ return runtimeContext;
+
+ }
+
+ private ResponseContext createResponseContextWithSuObjects(){
+ ResponseContext responseContext = new ResponseContext();
+ CommonHeader commonHeader = new CommonHeader();
+ Flags flags = new Flags();
+ Status status = new Status();
+ responseContext.setCommonHeader(commonHeader);
+ responseContext.setStatus(status);
+ commonHeader.setFlags(flags);
+ return responseContext;
+ }
+
+ private String convertActionNameToUrl(String action) {
+ String regex = "([a-z])([A-Z]+)";
+ String replacement = "$1-$2";
+ return action.replaceAll(regex, replacement)
+ .toLowerCase();
+ }
+}
+
diff --git a/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestValidator.java b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestValidator.java
new file mode 100644
index 000000000..6c287a580
--- /dev/null
+++ b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/requesthandler/TestRequestValidator.java
@@ -0,0 +1,626 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 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 org.openecomp.appc.requesthandler;
+
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+import org.openecomp.appc.domainmodel.lcm.*;
+import org.openecomp.appc.executor.UnstableVNFException;
+import org.openecomp.appc.lifecyclemanager.LifecycleManager;
+import org.openecomp.appc.lifecyclemanager.objects.LifecycleException;
+import org.openecomp.appc.lifecyclemanager.objects.NoTransitionDefinedException;
+import org.openecomp.appc.requesthandler.exceptions.*;
+import org.openecomp.appc.requesthandler.impl.RequestHandlerImpl;
+import org.openecomp.appc.requesthandler.impl.RequestValidatorImpl;
+import org.openecomp.appc.requesthandler.objects.RequestHandlerInput;
+import org.openecomp.appc.transactionrecorder.TransactionRecorder;
+import org.openecomp.appc.workflow.WorkFlowManager;
+import org.openecomp.appc.workflow.objects.WorkflowExistsOutput;
+import org.openecomp.appc.workflow.objects.WorkflowRequest;
+import org.openecomp.appc.workingstatemanager.WorkingStateManager;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import org.openecomp.sdnc.sli.SvcLogicContext;
+import org.openecomp.sdnc.sli.SvcLogicResource;
+import org.openecomp.sdnc.sli.aai.AAIService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.UUID;
+
+import static junit.framework.TestCase.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Matchers.*;
+
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest( {WorkingStateManager.class,FrameworkUtil.class, TransactionRecorder.class, RequestHandlerImpl.class,RequestValidatorImpl.class, TransactionRecorder.class})
+public class TestRequestValidator {
+
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(TestRequestHandler.class);
+
+ private static final String TTL_FLAG= "TTL";
+
+ private RequestValidatorImpl requestValidator;
+
+ AAIService aaiAdapter ;
+ LifecycleManager lifecyclemanager;
+ WorkFlowManager workflowManager;
+ WorkingStateManager workingStateManager ;
+// AppcDAOImpl dao ;
+
+ private final BundleContext bundleContext= Mockito.mock(BundleContext.class);
+ private final Bundle bundleService=Mockito.mock(Bundle.class);
+ private final ServiceReference sref=Mockito.mock(ServiceReference.class);
+
+
+
+ @Before
+ public void init() throws Exception {
+
+// dao = Mockito.mock(AppcDAOImpl.class);
+// PowerMockito.whenNew(AppcDAOImpl.class).withNoArguments().thenReturn(dao);
+// Mockito.doNothing().when(dao).storeTransactionRecord((TransactionRecord)anyObject());
+ // PowerMockito.when(dao.queryWorkflow(anyString(),anyString())).thenReturn(true);
+
+ // ***
+ AAIService aaiService = Mockito.mock(AAIService.class);;
+ PowerMockito.mockStatic(FrameworkUtil.class);
+ PowerMockito.when(FrameworkUtil.getBundle(AAIService.class)).thenReturn(bundleService);
+ PowerMockito.when(bundleService.getBundleContext()).thenReturn(bundleContext);
+ PowerMockito.when(bundleContext.getServiceReference(AAIService.class.getName())).thenReturn(sref);
+ PowerMockito.when(bundleContext.getService(sref)).thenReturn(aaiService);
+ PowerMockito.when(aaiService.query(anyString(),anyBoolean(),anyString(),anyString(),anyString(),anyString(),(SvcLogicContext)anyObject())).thenAnswer(new Answer<SvcLogicResource.QueryStatus>() {
+ @Override
+ public SvcLogicResource.QueryStatus answer(InvocationOnMock invocation) throws Throwable {
+ Object[] args = invocation.getArguments();
+ SvcLogicContext ctx =(SvcLogicContext)args[6];
+ String prefix = (String)args[4];
+ String key = (String)args[3];
+ if(key.contains("'28'")){
+ return SvcLogicResource.QueryStatus.FAILURE ;
+ }else if ( key.contains("'8'")) {
+ return SvcLogicResource.QueryStatus.NOT_FOUND ;
+ }else {
+ ctx.setAttribute(prefix + ".vnf-type", "FIREWALL");
+ ctx.setAttribute(prefix + ".orchestration-status", "Instantiated");
+ }
+ return SvcLogicResource.QueryStatus.SUCCESS ;
+ }
+ });
+ PowerMockito.when(aaiService.update(anyString(),anyString(),(Map)anyObject(),anyString(),(SvcLogicContext)anyObject())).thenReturn(SvcLogicResource.QueryStatus.SUCCESS);
+ //PowerMockito.when(requestHandler.getVnfdata(anyString(), anyString(), (SvcLogicContext)anyObject())).thenReturn()
+ // ***
+
+
+ aaiAdapter = Mockito.mock(AAIService.class);
+ lifecyclemanager= Mockito.mock(LifecycleManager.class);
+ workflowManager= Mockito.mock(WorkFlowManager.class);
+ workingStateManager = Mockito.mock(WorkingStateManager.class);
+
+ // transactionRecorder= spy(TransactionRecorder.class);
+ requestValidator = new RequestValidatorImpl();
+// requestValidator = Mockito.mock(RequestValidator.class);
+ requestValidator.setWorkflowManager(workflowManager);
+ requestValidator.setLifecyclemanager(lifecyclemanager);
+ requestValidator.setWorkingStateManager(workingStateManager);
+
+
+ /* Mockito.when(workingStateManager.isVNFStable("1")).thenReturn(true);
+ Mockito.when(aaiAdapter.requestGenericVnfData("1")).thenReturn(getGenericVnf("FIREWALL","INSTNATIATED"));*/
+ // Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(true);
+
+ /*PowerMockito.when(getAaiadapter().requestGenericVnfData("39")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("39")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("8")).thenThrow(new AAIAdapterException("404"));
+ Mockito.when(workingStateManager.isVNFStable("8")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("9")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("9")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("10")).thenReturn(getGenericVnf("WrongRouter","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("10")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("11")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("11")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("12")).thenReturn(getGenericVnf("FIREWALL","NOT_INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("12")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("13")).thenReturn(getGenericVnf("FIREWALL","TESTING"));
+ Mockito.when(workingStateManager.isVNFStable("13")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("14")).thenReturn(getGenericVnf("FIREWALL","REBUILDING"));
+ Mockito.when(workingStateManager.isVNFStable("14")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("26")).thenReturn(getGenericVnf("FIREWALL","NOT_INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("26")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("27")).thenReturn(getGenericVnf("FIREWALL","RESTARTING"));
+ Mockito.when(workingStateManager.isVNFStable("27")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("28")).thenThrow(new RuntimeException("AAI Down Excpetion"));
+ Mockito.when(workingStateManager.isVNFStable("28")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("35")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("35")).thenReturn(true);*/
+
+ /*for(Integer i=130; i<=140 ; i++)
+ {
+ PowerMockito.when(getAaiadapter().requestGenericVnfData(i.toString())).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable(i.toString())).thenReturn(true);
+ }
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("39")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("39")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("40")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("40")).thenReturn(true).thenReturn(false);
+
+
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("38")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("38")).thenReturn(true).thenReturn(false);
+
+
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("201")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED")).thenReturn(getGenericVnf("FIREWALL","CONFIGURED"));
+ Mockito.when(workingStateManager.isVNFStable("201")).thenReturn(true);
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("202")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED")).thenReturn(getGenericVnf("FIREWALL","ERROR"));
+ Mockito.when(workingStateManager.isVNFStable("202")).thenReturn(true).thenReturn(false);
+
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("301")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("301")).thenReturn(true).thenReturn(false);
+
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("302")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("302")).thenReturn(true).thenReturn(true);
+
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("303")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("303")).thenReturn(true).thenReturn(true);
+
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("309")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("309")).thenReturn(true).thenReturn(true);
+
+ PowerMockito.when(getAaiadapter().requestGenericVnfData("310")).thenReturn(getGenericVnf("FIREWALL","INSTANTIATED"));
+ Mockito.when(workingStateManager.isVNFStable("310")).thenReturn(true).thenReturn(true);*/
+ }
+ public AAIService getAaiadapter() {
+ return this.aaiAdapter;
+ }
+/* public GenericVnf getGenericVnf(String vnfType, String operationalState) {
+ GenericVnf genericVnf = new GenericVnf();
+ genericVnf.setVnfType(vnfType);
+ // genericVnf.setOperationalState(operationalState);
+ genericVnf.setOrchestrationStatus(operationalState);
+ return genericVnf;
+ }*/
+ private RequestHandlerInput getRequestHandlerInput(String vnfID, VNFOperation action, int ttl, boolean force, String originatorId, String requestId, String subRequestId, Date timeStamp){
+ String API_VERSION= "2.0.0";
+ RequestHandlerInput input = new RequestHandlerInput();
+ RuntimeContext runtimeContext = createRuntimeContextWithSubObjects();
+ RequestContext requestContext = runtimeContext.getRequestContext();
+ input.setRequestContext(requestContext);
+ requestContext.getActionIdentifiers().setVnfId(vnfID);
+ requestContext.setAction(action);
+ if (action != null) {
+ input.setRpcName(convertActionNameToUrl(action.name()));
+ }
+ else{
+ input.setRpcName(null);
+ }
+ requestContext.getCommonHeader().setRequestId(requestId);
+ requestContext.getCommonHeader().setSubRequestId(subRequestId);
+ requestContext.getCommonHeader().setOriginatorId(originatorId);
+ requestContext.getCommonHeader().getFlags().setTtl(ttl);
+ requestContext.getCommonHeader().getFlags().setForce(force);
+ requestContext.getCommonHeader().getTimeStamp();
+ requestContext.getCommonHeader().setApiVer(API_VERSION);
+ requestContext.getCommonHeader().setTimestamp(timeStamp);
+ return input;
+ }
+ @Test
+ public void testNullVnfID() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testNullVnfID=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput(null, VNFOperation.Configure, 30,
+ false, UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(InvalidInputException e ) {
+ ex = e;
+ }
+// assertEquals(new InvalidInputException("vnfID or command is null") ,ex);
+ assertNotNull(ex);
+ logger.debug("=====================testNullVnfID=============================");
+ }
+
+ @Test
+ public void testPositiveFlowWithConfigure() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testPositiveFlowWithConfigure=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ Mockito.when(workingStateManager.isVNFStable("1")).thenReturn(true);
+ RequestHandlerInput input = this.getRequestHandlerInput("1", VNFOperation.Configure, 30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNull(ex);
+ logger.debug("testPositiveFlowWithConfigure");
+ logger.debug("=====================testPositiveFlowWithConfigure=============================");
+ }
+
+ @Test
+ public void testVnfNotFound() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testVnfNotFound=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("8", VNFOperation.Configure, 30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testVnfNotFound=============================");
+ }
+
+
+
+ @Test
+ public void testNullCommand() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testNullCommand=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput("7", null,30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(InvalidInputException e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testNullCommand=============================");
+ }
+
+ @Test
+ public void testNullVnfIDAndCommand() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testNullVnfIDAndCommand=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ RequestHandlerInput input = this.getRequestHandlerInput(null, null,30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(InvalidInputException e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testNullVnfIDAndCommand=============================");
+ }
+
+ @Test
+ public void testWorkflowNotFound() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testWorkflowNotFound=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(false,false));
+ RequestHandlerInput input = this.getRequestHandlerInput("10", VNFOperation.Configure, 30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testWorkflowNotFound=============================");
+ }
+
+ @Test
+ public void testUnstableVnfWithConfigure() throws LifecycleException, NoTransitionDefinedException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testUnstableVnfWithConfigure=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(),anyString())).thenThrow( new NoTransitionDefinedException("","",""));
+
+ RequestHandlerInput input = this.getRequestHandlerInput("11", VNFOperation.Configure, 30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testUnstableVnfWithConfigure=============================");
+ }
+
+ @Test
+ public void testUnstableVnfWithTest() throws LifecycleException, NoTransitionDefinedException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testUnstableVnfWithTest=============================");
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(),anyString())).thenThrow( new NoTransitionDefinedException("","",""));
+ RequestHandlerInput input = this.getRequestHandlerInput("12", VNFOperation.Test,30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testUnstableVnfWithTest=============================");
+ }
+
+ @Test
+ public void testUnstableVnfWithStart() throws LifecycleException, NoTransitionDefinedException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testUnstableVnfWithStart=============================");
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(),anyString())).thenThrow( new NoTransitionDefinedException("","",""));
+
+ RequestHandlerInput input = this.getRequestHandlerInput("13", VNFOperation.Start,30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testUnstableVnfWithStart=============================");
+ }
+
+ @Test
+ public void testUnstableVnfWithTerminate() throws LifecycleException, NoTransitionDefinedException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testUnstableVnfWithTerminate=============================");
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(),anyString())).thenThrow( new NoTransitionDefinedException("","",""));
+ RequestHandlerInput input = this.getRequestHandlerInput("14", VNFOperation.Terminate,30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testUnstableVnfWithTerminate=============================");
+ }
+
+ @Test
+ public void testUnstableVnfWithRestart() throws LifecycleException, NoTransitionDefinedException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testUnstableVnfWithRestart=============================");
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(),anyString())).thenThrow( new NoTransitionDefinedException("","",""));
+
+ RequestHandlerInput input = this.getRequestHandlerInput("26", VNFOperation.Restart,30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testUnstableVnfWithRestart=============================");
+ }
+
+ @Test
+ public void testUnstableVnfWithRebuild() throws LifecycleException, NoTransitionDefinedException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testUnstableVnfWithRebuild=============================");
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(),anyString())).thenThrow( new NoTransitionDefinedException("","",""));
+
+ // Mockito.doReturn(this.getGenericVnf("Firewall", "NOT_INSTANTIATED")).when(getAaiadapter()).requestGenericVnfData("8");
+ RequestHandlerInput input = this.getRequestHandlerInput("27", VNFOperation.Rebuild,30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testUnstableVnfWithRebuild=============================");
+ }
+
+
+
+
+ @Test
+ public void testAAIDown() throws Exception {
+ logger.debug("=====================testAAIDown=============================");
+ // AAIAdapter aaiAdapter = Mockito.mock(AAIAdapterImpl.class);
+ // RequestHandler requestHandler=RequestHandlerSingleton.getRequestHandler(new WorkFlowManagerImpl(),aaiAdapter,new LifecycleManagerImpl());
+ // RequestHandler requestHandler = new RequestHandlerImpl(new WorkFlowManagerImpl(),aaiAdapter,new LifecycleManagerImpl());
+ RequestHandlerInput input = this.getRequestHandlerInput("28", VNFOperation.Configure, 30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ try {
+ requestValidator.validateRequest(runtimeContext);
+
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("=====================testAAIDown=============================");
+ }
+
+ @Test
+ public void testNegativeFlowWithTimeStamp() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ logger.debug("=====================testNegativeFlowWithTimeStamp=============================");
+ Date now = new Date();
+ Date past = new Date();
+ past.setTime(now.getTime() -1000000 );
+ RequestHandlerInput input = this.getRequestHandlerInput("35", VNFOperation.Configure, 30,
+ false,UUID.randomUUID().toString(),UUID.randomUUID().toString(),UUID.randomUUID().toString(),past);
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ logger.debug("testNegativeFlowWithTimeStamp");
+ logger.debug("=====================testNegativeFlowWithTimeStamp=============================");
+ }
+
+
+ @Test
+ public void rejectDuplicateRequest() throws NoTransitionDefinedException, LifecycleException, InvalidInputException, RequestExpiredException, UnstableVNFException, DuplicateRequestException, VNFNotFoundException, WorkflowNotFoundException,DGWorkflowNotFoundException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+
+ Mockito.when(workflowManager.workflowExists((WorkflowRequest)anyObject())).thenReturn(new WorkflowExistsOutput(true,true));
+ Mockito.when(workingStateManager.isVNFStable("301")).thenReturn(true);
+ Mockito.when(workingStateManager.isVNFStable("309")).thenReturn(true);
+ RequestHandlerInput input = this.getRequestHandlerInput("301", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+
+ RequestHandlerInput input1 = this.getRequestHandlerInput("309", VNFOperation.Configure,0,false,originatorID, requestID, subRequestID,new Date());
+ Exception ex =null;
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ RuntimeContext runtimeContext1 = putInputToRuntimeContext(input1);
+
+ try {
+ requestValidator.validateRequest(runtimeContext);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNull(ex);
+
+ try {
+ requestValidator.validateRequest(runtimeContext1);
+ }catch(Exception e ) {
+ ex = e;
+ }
+ assertNotNull(ex);
+ }
+
+ @Test
+ public void testLockOperation() throws RequestExpiredException, DuplicateRequestException, DGWorkflowNotFoundException, VNFNotFoundException, WorkflowNotFoundException, LifecycleException, UnstableVNFException, NoTransitionDefinedException, InvalidInputException {
+ Mockito.when(workingStateManager.isVNFStable("no-matter")).thenReturn(true);
+ testOperation("no-matter", VNFOperation.Lock);
+ }
+
+ @Test
+ public void testUnlockOperation() throws RequestExpiredException, DuplicateRequestException, DGWorkflowNotFoundException, VNFNotFoundException, WorkflowNotFoundException, LifecycleException, UnstableVNFException, NoTransitionDefinedException, InvalidInputException {
+ Mockito.when(workingStateManager.isVNFStable("no-matter")).thenReturn(true);
+ testOperation("no-matter", VNFOperation.Unlock);
+ }
+
+ @Test
+ public void testCheckLockOperation() throws RequestExpiredException, DuplicateRequestException, DGWorkflowNotFoundException, VNFNotFoundException, WorkflowNotFoundException, LifecycleException, UnstableVNFException, NoTransitionDefinedException, InvalidInputException {
+ Mockito.when(workingStateManager.isVNFStable("no-matter")).thenReturn(true);
+ testOperation("no-matter", VNFOperation.CheckLock);
+ }
+
+ @Test(expected = NoTransitionDefinedException.class)
+ public void testLockOperationNegative() throws RequestExpiredException, DuplicateRequestException, DGWorkflowNotFoundException, VNFNotFoundException, WorkflowNotFoundException, LifecycleException, UnstableVNFException, NoTransitionDefinedException, InvalidInputException {
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(), eq(VNFOperation.Lock.toString()))).thenThrow(new NoTransitionDefinedException("", "", ""));
+ Mockito.when(workingStateManager.isVNFStable("no-matter")).thenReturn(true);
+ testOperation("no-matter", VNFOperation.Lock);
+ }
+
+ @Test(expected = NoTransitionDefinedException.class)
+ public void testUnlockOperationNegative() throws RequestExpiredException, DuplicateRequestException, DGWorkflowNotFoundException, VNFNotFoundException, WorkflowNotFoundException, LifecycleException, UnstableVNFException, NoTransitionDefinedException, InvalidInputException {
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(), eq(VNFOperation.Unlock.toString()))).thenThrow(new NoTransitionDefinedException("", "", ""));
+ Mockito.when(workingStateManager.isVNFStable("no-matter")).thenReturn(true);
+ testOperation("no-matter", VNFOperation.Unlock);
+ }
+
+ @Test(expected = NoTransitionDefinedException.class)
+ public void testCheckLockOperationNegative() throws RequestExpiredException, DuplicateRequestException, DGWorkflowNotFoundException, VNFNotFoundException, WorkflowNotFoundException, LifecycleException, UnstableVNFException, NoTransitionDefinedException, InvalidInputException {
+ Mockito.when(lifecyclemanager.getNextState(anyString(), anyString(), eq(VNFOperation.CheckLock.toString()))).thenThrow(new NoTransitionDefinedException("", "", ""));
+ Mockito.when(workingStateManager.isVNFStable("no-matter")).thenReturn(true);
+ testOperation("no-matter", VNFOperation.CheckLock);
+ }
+
+ private void testOperation(String resource, VNFOperation operation) throws WorkflowNotFoundException, DuplicateRequestException, DGWorkflowNotFoundException, VNFNotFoundException, InvalidInputException, LifecycleException, UnstableVNFException, NoTransitionDefinedException, RequestExpiredException {
+ String originatorID = UUID.randomUUID().toString();
+ String requestID = UUID.randomUUID().toString();
+ String subRequestID = UUID.randomUUID().toString();
+
+ RequestHandlerInput input = this.getRequestHandlerInput(resource, operation, 0, false, originatorID, requestID, subRequestID, new Date());
+ RuntimeContext runtimeContext = putInputToRuntimeContext(input);
+ requestValidator.validateRequest(runtimeContext);
+ }
+
+
+ private RuntimeContext createRuntimeContextWithSubObjects() {
+ RuntimeContext runtimeContext = new RuntimeContext();
+ RequestContext requestContext = new RequestContext();
+ runtimeContext.setRequestContext(requestContext);
+ ResponseContext responseContext = createResponseContextWithSuObjects();
+ runtimeContext.setResponseContext(responseContext);
+ CommonHeader commonHeader = new CommonHeader();
+ requestContext.setCommonHeader(commonHeader);
+ Flags flags = new Flags();
+ commonHeader.setFlags(flags);
+ ActionIdentifiers actionIdentifiers = new ActionIdentifiers();
+ requestContext.setActionIdentifiers(actionIdentifiers);
+ VNFContext vnfContext = new VNFContext();
+ runtimeContext.setVnfContext(vnfContext);
+ return runtimeContext;
+
+ }
+
+ private ResponseContext createResponseContextWithSuObjects(){
+ ResponseContext responseContext = new ResponseContext();
+ CommonHeader commonHeader = new CommonHeader();
+ Flags flags = new Flags();
+ Status status = new Status();
+ responseContext.setCommonHeader(commonHeader);
+ responseContext.setStatus(status);
+ commonHeader.setFlags(flags);
+ return responseContext;
+ }
+
+ private String convertActionNameToUrl(String action) {
+ String regex = "([a-z])([A-Z]+)";
+ String replacement = "$1-$2";
+ return action.replaceAll(regex, replacement)
+ .toLowerCase();
+ }
+
+ private RuntimeContext putInputToRuntimeContext(RequestHandlerInput input) {
+ RuntimeContext runtimeContext = createRuntimeContextWithSubObjects();
+ runtimeContext.setRequestContext(input.getRequestContext());
+ runtimeContext.setRpcName(input.getRpcName());
+ runtimeContext.getVnfContext().setId(input.getRequestContext().getActionIdentifiers().getVnfId());
+ //runtimeContext.getRequestContext().getActionIdentifiers().setVnfId(input.getRequestContext().getActionIdentifiers().getVnfId());
+ return runtimeContext;
+
+ //String vnfID, VNFOperation action, int ttl, boolean force, String originatorId, String requestId, String subRequestId, Date timeStamp
+ }
+}
diff --git a/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/workingstatemanager/TestWorkingStateManager.java b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/workingstatemanager/TestWorkingStateManager.java
new file mode 100644
index 000000000..33028465b
--- /dev/null
+++ b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/java/org/openecomp/appc/workingstatemanager/TestWorkingStateManager.java
@@ -0,0 +1,110 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : APP-C
+ * ================================================================================
+ * Copyright (C) 2017 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 org.openecomp.appc.workingstatemanager;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openecomp.appc.configuration.ConfigurationFactory;
+import org.openecomp.appc.dao.util.AppcJdbcConnectionFactory;
+import org.openecomp.appc.workingstatemanager.impl.WorkingStateManagerImpl;
+import org.openecomp.appc.workingstatemanager.objects.VNFWorkingState;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+import java.util.UUID;
+
+
+
+public class TestWorkingStateManager {
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(TestWorkingStateManager.class);
+ WorkingStateManagerImpl workingStateManager;
+
+ @Before
+ public void init() throws Exception {
+ workingStateManager = new WorkingStateManagerImpl();
+ AppcJdbcConnectionFactory appcJdbcConnectionFactory = new AppcJdbcConnectionFactory();
+ String schema = "sdnctl";
+ appcJdbcConnectionFactory.setSchema(schema);
+ workingStateManager.setConnectionFactory(appcJdbcConnectionFactory);
+ String property = ConfigurationFactory.getConfiguration().getProperty(String.format("org.openecomp.appc.db.url.%s", schema));
+ logger.info(property+" will be used as connection URL to mySQL.");
+ logger.warn("you can set connection URL to other IP by adding -DmysqlIp=<MYSQL_IP> in VM Option");
+// System.getProperties().getProperty("mys")
+ }
+
+ @Test
+ // this test run on mysql you need to uncomment Ignore and to add -DmysqlIp=<MYSQL_IP> in VM Option, to make that test pass successfully.
+ @Ignore
+ public void testUpdateWorkingState() {
+ String vnfId = UUID.randomUUID().toString();
+ String myOwnerId = "myOwnerId";
+ String otherOwnerId = "otherOwnerId";
+ boolean vnfStable = workingStateManager.isVNFStable(vnfId);
+ logger.info("isVNFStable returns "+vnfStable+" for vnfId "+vnfId);
+
+ //set to unstable with force true
+ boolean updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, true);
+ Assert.assertTrue(updated);
+ Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
+
+ //negative test - try to set to any value by other ownerId when vnf state is UNSTABLE
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, otherOwnerId, false);
+ Assert.assertFalse(updated);
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, otherOwnerId, false);
+ Assert.assertFalse(updated);
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.STABLE, otherOwnerId, false);
+ Assert.assertFalse(updated);
+
+ //positive test - set with same ownerId and force false
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, false);
+ Assert.assertTrue(updated);
+ Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, myOwnerId, false);
+ Assert.assertTrue(updated);
+ Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.STABLE, myOwnerId, false);
+ Assert.assertTrue(updated);
+ Assert.assertTrue(workingStateManager.isVNFStable(vnfId));
+
+ //positive test - set with otherOwnerId and force false when VNF is stable
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, otherOwnerId, false);
+ Assert.assertTrue(updated);
+ Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
+
+ //negative test - try to set to any value by myOwnerId when vnf state is UNKNOWN
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, false);
+ Assert.assertFalse(updated);
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNKNOWN, myOwnerId, false);
+ Assert.assertFalse(updated);
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.STABLE, myOwnerId, false);
+ Assert.assertFalse(updated);
+
+ //positive test - try to set to any value by myOwnerId when vnf state is UNKNOWN but with force
+ updated = workingStateManager.setWorkingState(vnfId, VNFWorkingState.UNSTABLE, myOwnerId, true);
+ Assert.assertTrue(updated);
+ Assert.assertFalse(workingStateManager.isVNFStable(vnfId));
+ }
+
+
+}
diff --git a/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/resources/org/openecomp/appc/default.properties b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/resources/org/openecomp/appc/default.properties
new file mode 100644
index 000000000..2d75df419
--- /dev/null
+++ b/appc-dispatcher/appc-request-handler/appc-request-handler-core/src/test/resources/org/openecomp/appc/default.properties
@@ -0,0 +1,107 @@
+###
+# ============LICENSE_START=======================================================
+# openECOMP : APP-C
+# ================================================================================
+# Copyright (C) 2017 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=========================================================
+###
+
+# Define the name and path of any user-provided configuration (bootstrap) file that can be loaded to supply configuration options
+#org.openecomp.appc.bootstrap.file=executor-test.properties
+org.openecomp.appc.bootstrap.file=appc.properties
+org.openecomp.appc.bootstrap.path=/opt/openecomp/appc/data/properties,${user.home},.
+
+#
+# Certificate keystore and truststore
+#
+#org.openecomp.sdnc.sli.aai.ssl.trust=<jks_FILE_HERE>
+#org.openecomp.sdnc.sli.aai.ssl.trust.psswd=adminadmin
+#org.openecomp.sdnc.sli.aai.ssl.key=<p12_FILE_HERE>
+#org.openecomp.sdnc.sli.aai.ssl.key.psswd=adminadmin
+org.openecomp.sdnc.sli.aai.host.certificate.ignore=true
+org.openecomp.sdnc.sli.aai.certificate.trust.all=true
+
+#
+# Configuration file for A&AI Adapter
+#
+
+# OPEN SOURCE - EXTERNAL A&AI INSTANCE IN TEST ENVIRONMENT
+org.openecomp.sdnc.sli.aai.uri=https://10.0.1.1:8443
+
+org.openecomp.sdnc.sli.aai.path.query=/aai/v8/search/sdn-zone-query
+
+# service instance
+org.openecomp.sdnc.sli.aai.path.svcinst=/aai/v8/business/customers/customer/{customer-id}/service-subscriptions/service-subscription/{service-type}/service-instances
+org.openecomp.sdnc.sli.aai.path.svcinst.query=/aai/v8/search/generic-query?key=service-instance.service-instance-id:{svc-instance-id}&start-node-type=service-instance&include=service-instance
+
+# complex
+org.openecomp.sdnc.sli.aai.path.complexes=/aai/v8/cloud-infrastructure/complexes
+org.openecomp.sdnc.sli.aai.path.complex=/aai/v8/cloud-infrastructure/complexes/complex/{physical-location-id}
+
+# vservers
+org.openecomp.sdnc.sli.aai.path.vservers=/aai/v8/cloud-infrastructure/tenants/tenant/{tenant-id}/vservers
+org.openecomp.sdnc.sli.aai.path.vserver =/aai/v8/cloud-infrastructure/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}
+
+# generic-vnf
+org.openecomp.sdnc.sli.aai.path.generic.vnfs=/aai/v8/network/generic-vnfs/generic-vnf/
+org.openecomp.sdnc.sli.aai.path.generic.vnf=/aai/v8/network/generic-vnfs/generic-vnf/{vnf-id}
+
+#
+# Formatting
+#
+org.openecomp.sdnc.sli.aai.param.format=filter=%s:%s
+org.openecomp.sdnc.sli.aai.param.vnf_type=vnf-type
+org.openecomp.sdnc.sli.aai.param.physical.location.id=physical-location-id
+org.openecomp.sdnc.sli.aai.param.service.type=service-type
+
+
+org.openecomp.appc.logging.path=${user.home},etc,../etc,.
+org.openecomp.appc.logging.file=logback.xml
+
+org.openecomp.appc.db.url.%s", schema), "");
+org.openecomp.appc.db.user.%s", schema), "");
+org.openecomp.appc.db.pass.%s", schema), "");
+
+
+#Property below provided by appc.properties
+#dmaap.poolMembers=<DMAAP_IP>:3904
+
+dmaap.topic.read=APPC-TEST2
+dmaap.topic.write=APPC-TEST2
+#dmaap.topic.read.filter={"class":"Assigned","field":"request"}
+dmaap.topic.read.filter={"class": "And","filters": [{"class": "Assigned","field": "request"},{"class": "Unassigned","field": "response"}]}
+dmaap.client.name=APPC-TEST-CLIENT-REQ-HDLR-TEST
+dmaap.client.name.id=0
+#dmaap.client.key=random
+#dmaap.client.secret=random
+
+dmaap.threads.queuesize.min=1
+dmaap.threads.queuesize.max=1000
+dmaap.threads.poolsize.min=1
+dmaap.threads.poolsize.max=2
+
+#
+# This needs to be changed so that the action can be appended to the end of the URL path
+#
+#provider.urls.topology=https://admin:password@<IP_ADDRESS>:8443/restconf/operations/appc-provider:topology-service
+#provider.urls.topology=https://admin:password@<IP_ADDRESS>:8443/restconf/operations/appc-provider:
+
+mysqlIp=127.0.0.1
+org.openecomp.appc.db.url.sdnctl=jdbc:mysql://${mysqlIp}:3306/test
+org.openecomp.appc.db.user.sdnctl=test
+org.openecomp.appc.db.pass.sdnctl=123456
+
+org.openecomp.appc.workingstatemanager.maxAttempts=2