2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
21 package org.openecomp.mso.bpmn.infrastructure;
\r
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
\r
24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
\r
25 import static com.github.tomakehurst.wiremock.client.WireMock.delete;
\r
26 import static com.github.tomakehurst.wiremock.client.WireMock.post;
\r
27 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
\r
28 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
\r
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;
\r
30 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIDeleteVfModule;
\r
31 import static org.openecomp.mso.bpmn.common.DeleteAAIVfModuleTest.MockAAIGenericVnfSearch;
\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;
\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;
\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteGenericVnf;
\r
35 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDeleteVfModuleId;
\r
36 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById;
\r
37 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;
\r
38 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithPriority;
\r
39 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;
\r
40 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;
\r
41 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetPserverByVnfId;
\r
42 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfsByVnfId;
\r
43 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;
\r
44 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;
\r
45 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;
\r
46 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutVfModuleIdNoResponse;
\r
47 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;
\r
48 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSetInMaintFlagByVnfId;
\r
49 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.MockGetServiceResourcesCatalogData;
\r
50 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;
\r
51 import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicyAbort;
\r
52 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;
\r
53 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;
\r
54 import static org.openecomp.mso.bpmn.mock.StubResponsePolicy.MockPolicySkip;
\r
56 import java.io.IOException;
\r
57 import java.util.HashMap;
\r
58 import java.util.Map;
\r
59 import java.util.UUID;
\r
61 import org.camunda.bpm.engine.test.Deployment;
\r
62 import org.junit.Ignore;
\r
63 import org.junit.Test;
\r
64 import org.openecomp.mso.bpmn.common.WorkflowTest;
\r
65 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;
\r
66 import org.openecomp.mso.bpmn.mock.FileUtil;
\r
69 * Unit test cases for UpdateVnfInfra.bpmn
\r
71 public class ReplaceVnfInfraTest extends WorkflowTest {
\r
73 private final CallbackSet callbacks = new CallbackSet();
\r
74 private static final String EOL = "\n";
\r
75 private final String vnfAdapterDeleteCallback =
\r
76 "<deleteVfModuleResponse>" + EOL +
\r
77 " <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +
\r
78 " <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +
\r
79 " <vfModuleDeleted>true</vfModuleDeleted>" + EOL +
\r
80 " <messageId>{{MESSAGE-ID}}</messageId>" + EOL +
\r
81 "</deleteVfModuleResponse>" + EOL;
\r
83 public ReplaceVnfInfraTest() throws IOException {
\r
84 callbacks.put("deactivate", FileUtil.readResourceFile(
\r
85 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r
86 callbacks.put("unassign", FileUtil.readResourceFile(
\r
87 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r
88 callbacks.put("vnfDelete", vnfAdapterDeleteCallback);
\r
89 callbacks.put("changeassign", FileUtil.readResourceFile(
\r
90 "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));
\r
91 callbacks.put("activate", FileUtil.readResourceFile(
\r
92 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));
\r
93 callbacks.put("query", FileUtil.readResourceFile(
\r
94 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));
\r
95 callbacks.put("vnfUpdate", FileUtil.readResourceFile(
\r
96 "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));
\r
100 * Sunny day scenario.
\r
102 * @throws Exception
\r
106 @Deployment(resources = {
\r
107 "process/ReplaceVnfInfra.bpmn",
\r
108 "subprocess/DoDeleteVfModule.bpmn",
\r
109 "subprocess/DoDeleteVnfAndModules.bpmn",
\r
110 "subprocess/DeleteAAIVfModule.bpmn",
\r
111 "subprocess/PrepareUpdateAAIVfModule.bpmn",
\r
112 "subprocess/ConfirmVolumeGroupTenant.bpmn",
\r
113 "subprocess/SDNCAdapterV1.bpmn",
\r
114 "subprocess/DoDeleteVnfAndModules.bpmn",
\r
115 "subprocess/GenericDeleteVnf.bpmn",
\r
116 "subprocess/DoDeleteVnf.bpmn",
\r
117 "subprocess/DoDeleteVfModule.bpmn",
\r
118 "subprocess/VnfAdapterRestV1.bpmn",
\r
119 "subprocess/UpdateAAIGenericVnf.bpmn",
\r
120 "subprocess/UpdateAAIVfModule.bpmn",
\r
121 "subprocess/GenericGetService.bpmn",
\r
122 "subprocess/GenericGetVnf.bpmn",
\r
123 "subprocess/GenericPutVnf.bpmn",
\r
124 "subprocess/DoCreateVnf.bpmn",
\r
125 "subprocess/GenerateVfModuleName.bpmn",
\r
126 "subprocess/DoCreateVfModule.bpmn",
\r
127 "subprocess/DoCreateVnfAndModules.bpmn",
\r
128 "subprocess/ConfirmVolumeGroupName.bpmn",
\r
129 "subprocess/CreateAAIVfModule.bpmn",
\r
130 "subprocess/CreateAAIVfModuleVolumeGroup.bpmn",
\r
131 "subprocess/CompleteMsoProcess.bpmn",
\r
132 "subprocess/FalloutHandler.bpmn",
\r
133 "subprocess/DoCreateVnfAndModulesRollback.bpmn",
\r
134 "subprocess/BuildingBlock/DecomposeService.bpmn",
\r
135 "subprocess/BuildingBlock/RainyDayHandler.bpmn",
\r
136 "subprocess/BuildingBlock/ManualHandling.bpmn"
\r
139 public void sunnyDay() throws Exception {
\r
142 MockAAIGenericVnfSearch();
\r
143 MockGetGenericVnfById("testVnfId123.*", "GenericFlows/getGenericVnfByNameResponse.xml");
\r
144 MockDeleteGenericVnf("testVnfId123", "testReVer123");
\r
145 mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r
146 mockSDNCAdapter(200);
\r
147 MockDoDeleteVfModule_SDNCSuccess();
\r
148 MockDoDeleteVfModule_DeleteVNFSuccess();
\r
149 MockAAIDeleteVfModule();
\r
151 MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");
\r
152 MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");
\r
153 //MockGetGenericVnfById_404("testVnfId");
\r
154 MockGetServiceResourcesCatalogData("995256d2-5a33-55df-13ab-12abad84e7ff", "1.0", "VIPR/getCatalogServiceResourcesDataForReplaceVnfInfra.json");
\r
155 //MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");
\r
156 //MockPutGenericVnf(".*");
\r
158 MockPatchGenericVnf("a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
159 MockPatchVfModuleId("a27ce5a9-29c4-4c22-a017-6615ac73c721", ".*");
\r
160 //mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
161 //mockVNFPut("skask", "/supercool", 202);
\r
162 //mockVNFPut("skask", "/lukewarm", 202);
\r
163 //MockVNFAdapterRestVfModule();
\r
164 //MockDBUpdateVfModule();
\r
165 //MockGetPserverByVnfId("skask", "AAI/AAI_pserverByVnfId.json", 200);
\r
166 //MockGetGenericVnfsByVnfId("skask", "AAI/AAI_genericVnfsByVnfId.json", 200);
\r
167 MockSetInMaintFlagByVnfId("skask", 200);
\r
170 //mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");
\r
171 //mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");
\r
173 String businessKey = UUID.randomUUID().toString();
\r
174 String updaetVnfRequest =
\r
175 FileUtil.readResourceFile("__files/InfrastructureFlows/ReplaceVnf_VID_request.json");
\r
177 Map<String, Object> variables = setupVariablesSunnyDayVID();
\r
180 TestAsyncResponse asyncResponse = invokeAsyncProcess("ReplaceVnfInfra",
\r
181 "v1", businessKey, updaetVnfRequest, variables);
\r
183 WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);
\r
185 String responseBody = response.getResponse();
\r
186 System.out.println("Workflow (Synch) Response:\n" + responseBody);
\r
188 //injectSDNCCallbacks(callbacks, "deactivate");
\r
189 //injectSDNCCallbacks(callbacks, "deactivate");
\r
190 injectVNFRestCallbacks(callbacks, "vnfDelete");
\r
191 //injectSDNCCallbacks(callbacks, "unassign");
\r
192 MockGetGenericVnfById("a27ce5a9-29c4-4c22-a017-6615ac73c721", "GenericFlows/getGenericVnfByNameResponse.xml");
\r
193 injectSDNCCallbacks(callbacks, "unassign");
\r
196 injectSDNCCallbacks(callbacks, "changeassign, query");
\r
197 injectVNFRestCallbacks(callbacks, "vnfUpdate");
\r
198 injectSDNCCallbacks(callbacks, "activate");
\r
199 injectSDNCCallbacks(callbacks, "changeassign, query");
\r
200 injectVNFRestCallbacks(callbacks, "vnfUpdate");
\r
201 injectSDNCCallbacks(callbacks, "activate");
\r
203 // TODO add appropriate assertions
\r
205 waitForProcessEnd(businessKey, 10000);
\r
206 checkVariable(businessKey, "ReplaceVfModuleInfraSuccessIndicator", true);
\r
212 private Map<String, Object> setupVariablesSunnyDayVID() {
\r
213 Map<String, Object> variables = new HashMap<String, Object>();
\r
215 // variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));
\r
217 //catch (Exception e) {
\r
220 //variables.put("mso-request-id", "testRequestId");
\r
221 variables.put("requestId", "testRequestId");
\r
222 variables.put("isDebugLogEnabled", "true");
\r
223 variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");
\r
224 variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");
\r
225 variables.put("vnfType", "vSAMP12");
\r
226 variables.put("serviceType", "MOG");
\r
232 public static void MockDoDeleteVfModule_SDNCSuccess() {
\r
233 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
234 .withRequestBody(containing("SvcAction>deactivate"))
\r
235 .willReturn(aResponse()
\r
237 .withHeader("Content-Type", "text/xml")
\r
238 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
239 stubFor(post(urlEqualTo("/SDNCAdapter"))
\r
240 .withRequestBody(containing("SvcAction>unassign"))
\r
241 .willReturn(aResponse()
\r
243 .withHeader("Content-Type", "text/xml")
\r
244 .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));
\r
248 public static void MockDoDeleteVfModule_DeleteVNFSuccess() {
\r
249 stubFor(delete(urlMatching("/vnfs/v1/vnfs/.*/vf-modules/.*"))
\r
250 .willReturn(aResponse()
\r
252 .withHeader("Content-Type", "application/xml")));
\r
253 stubFor(delete(urlMatching("/vnfs/v1/volume-groups/78987"))
\r
254 .willReturn(aResponse()
\r
256 .withHeader("Content-Type", "application/xml")));
\r