5dbad094d4973da8d1c04196971503ea6e5d2fac
[so.git] /
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\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
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\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
19  */\r
20 \r
21 package org.openecomp.mso.bpmn.infrastructure;\r
22 \r
23 import static org.junit.Assert.assertEquals;\r
24 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockAAIVfModule;\r
25 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockDBUpdateVfModule;\r
26 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfByIdWithDepth;\r
27 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetGenericVnfById_404;\r
28 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockGetServiceInstance;\r
29 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockNodeQueryServiceInstanceById;\r
30 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchGenericVnf;\r
31 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPatchVfModuleId;\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockPutGenericVnf;\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockSDNCAdapterVfModule;\r
34 import static org.openecomp.mso.bpmn.mock.StubResponseSDNCAdapter.mockSDNCAdapter;\r
35 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFPut;\r
36 import static org.openecomp.mso.bpmn.mock.StubResponseAAI.MockVNFAdapterRestVfModule;\r
37 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
38 \r
39 import java.io.IOException;\r
40 import java.util.HashMap;\r
41 import java.util.Map;\r
42 import java.util.UUID;\r
43 \r
44 import org.camunda.bpm.engine.test.Deployment;\r
45 import org.junit.Assert;\r
46 import org.junit.Ignore;\r
47 import org.junit.Test;\r
48 import org.openecomp.mso.bpmn.common.BPMNUtil;\r
49 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
50 import org.openecomp.mso.bpmn.core.domain.ModelInfo;\r
51 import org.openecomp.mso.bpmn.core.domain.ModuleResource;\r
52 import org.openecomp.mso.bpmn.core.domain.ServiceDecomposition;\r
53 import org.openecomp.mso.bpmn.core.domain.VnfResource;\r
54 import org.openecomp.mso.bpmn.mock.FileUtil;\r
55 \r
56 /**\r
57  * Unit Test for the DoUpdateVnfAndModules Flow\r
58  */\r
59 public class DoUpdateVnfAndModulesTest extends WorkflowTest {\r
60 \r
61     private final CallbackSet callbacks = new CallbackSet();\r
62 \r
63     public DoUpdateVnfAndModulesTest() throws IOException {\r
64 \r
65         callbacks.put("changeassign", FileUtil.readResourceFile(\r
66                 "__files/VfModularity/SDNCTopologyChangeAssignCallback.xml"));\r
67         callbacks.put("activate", FileUtil.readResourceFile(\r
68                 "__files/VfModularity/SDNCTopologyActivateCallback.xml"));\r
69         callbacks.put("query", FileUtil.readResourceFile(\r
70                 "__files/VfModularity/SDNCTopologyQueryCallback.xml"));\r
71         callbacks.put("vnfUpdate", FileUtil.readResourceFile(\r
72                 "__files/VfModularity/VNFAdapterRestUpdateCallback.xml"));\r
73     }\r
74 \r
75     @Test\r
76 \r
77     @Deployment(resources = {\r
78             "subprocess/SDNCAdapterV1.bpmn",\r
79             "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
80             "subprocess/DoUpdateVfModule.bpmn",\r
81             "subprocess/DoUpdateVnfAndModules.bpmn",\r
82             "subprocess/VnfAdapterRestV1.bpmn",\r
83             "subprocess/ConfirmVolumeGroupTenant.bpmn",\r
84             "subprocess/UpdateAAIVfModule.bpmn",\r
85             "subprocess/UpdateAAIGenericVnf.bpmn"})\r
86     public void testDoUpdateVnfAndModules_success() throws Exception {\r
87 \r
88         MockNodeQueryServiceInstanceById("MIS%2F1604%2F0026%2FSW_INTERNET", "GenericFlows/getSIUrlByIdVipr.xml");\r
89         MockGetServiceInstance("SDN-ETHERNET-INTERNET", "123456789", "MIS%252F1604%252F0026%252FSW_INTERNET", "GenericFlows/getServiceInstance.xml");\r
90         //MockGetGenericVnfById_404("testVnfId");\r
91         MockGetGenericVnfByIdWithDepth("skask", 1, "VfModularity/GenericVnf.xml");\r
92         MockPutGenericVnf(".*");\r
93         MockAAIVfModule();\r
94         MockPatchGenericVnf("skask");\r
95         MockPatchVfModuleId("skask", ".*");\r
96         mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
97         mockVNFPut("skask", "/supercool", 202);\r
98         mockVNFPut("skask", "/lukewarm", 202);\r
99         MockVNFAdapterRestVfModule();\r
100         MockDBUpdateVfModule();\r
101 \r
102         mockSDNCAdapter("VfModularity/StandardSDNCSynchResponse.xml");\r
103         mockUpdateRequestDB(200, "Database/DBUpdateResponse.xml");\r
104 \r
105         String businessKey = UUID.randomUUID().toString();\r
106         Map<String, Object> variables = new HashMap<>();\r
107         setVariablesSuccess(variables, "", "testRequestId123", "MIS%2F1604%2F0026%2FSW_INTERNET");\r
108         invokeSubProcess("DoUpdateVnfAndModules", businessKey, variables);\r
109 \r
110         injectSDNCCallbacks(callbacks, "changeassign, query");\r
111         injectVNFRestCallbacks(callbacks, "vnfUpdate");\r
112         injectSDNCCallbacks(callbacks, "activate");\r
113         injectSDNCCallbacks(callbacks, "changeassign, query");\r
114         injectVNFRestCallbacks(callbacks, "vnfUpdate");\r
115         injectSDNCCallbacks(callbacks, "activate");\r
116         waitForProcessEnd(businessKey, 10000);\r
117 \r
118         Assert.assertTrue(isProcessEnded(businessKey));\r
119         assertVariables("2", "200", null);\r
120 \r
121     }\r
122 \r
123 \r
124     private void assertVariables(String exModuleCount, String exVnfFound, String exWorkflowException) {\r
125 \r
126         String moduleCount = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_moduleCount");\r
127         String vnfFound = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "DUVAM_queryAAIVfModuleResponseCode");\r
128         String workflowException = BPMNUtil.getVariable(processEngineRule, "DoUpdateVnfAndModules", "SavedWorkflowException1");\r
129 \r
130         assertEquals(exModuleCount, moduleCount);\r
131         assertEquals(exVnfFound, vnfFound);\r
132         assertEquals(exWorkflowException, workflowException);\r
133     }\r
134 \r
135     private void setVariables(Map<String, String> variables, String request, String requestId, String siId) {\r
136         variables.put("isDebugLogEnabled", "true");\r
137         variables.put("bpmnRequest", request);\r
138         variables.put("msoRequestUdid", requestId);\r
139         variables.put("serviceInstanceId", siId);\r
140         variables.put("testVnfId", "testVnfId123");\r
141         variables.put("vnfType", "STMTN");\r
142 \r
143     }\r
144 \r
145     private void setVariablesSuccess(Map<String, Object> variables, String request, String requestId, String siId) {\r
146         variables.put("isDebugLogEnabled", "true");\r
147         variables.put("requestId", requestId);\r
148         variables.put("msoRequestId", requestId);\r
149         variables.put("serviceInstanceId", siId);\r
150         variables.put("disableRollback", "true");\r
151         //variables.put("testVnfId","testVnfId123");\r
152         variables.put("vnfType", "STMTN");\r
153         variables.put("vnfId", "skask");\r
154         variables.put("tenantId", "88a6ca3ee0394ade9403f075db23167e");\r
155         variables.put("lcpCloudRegionId", "mdt1");\r
156 \r
157         String serviceModelInfo = "{ " + "\"modelType\": \"service\"," +\r
158                 "\"modelInvariantUuid\": \"995256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
159                 "\"modelUuid\": \"ab6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
160                 "\"modelName\": \"ServicevSAMP12\"," +\r
161                 "\"modelVersion\": \"1.0\"," +\r
162                 "}";\r
163         variables.put("serviceModelInfo", serviceModelInfo);\r
164         variables.put("productFamilyId", "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb");\r
165         String vnfModelInfo = "{" + "\"modelType\": \"vnf\"," +\r
166                 "\"modelInvariantUuid\": \"ff5256d2-5a33-55df-13ab-12abad84e7ff\"," +\r
167                 "\"modelUuid\": \"fe6478e5-ea33-3346-ac12-ab121484a3fe\"," +\r
168                 "\"modelName\": \"vSAMP12\"," +\r
169                 "\"modelVersion\": \"1.0\"," +\r
170                 "\"modelCustomizationUuid\": \"MODEL-ID-1234\"" + "}";\r
171         variables.put("vnfModelInfo", vnfModelInfo);\r
172 \r
173         String cloudConfiguration = "{" + "\"cloudConfiguration\": { " +\r
174                 "\"lcpCloudRegionId\": \"mdt1\"," +\r
175                 "\"tenantId\": \"88a6ca3ee0394ade9403f075db23167e\"" + "}}";\r
176         variables.put("cloudConfiguration", cloudConfiguration);\r
177         variables.put("sdncVersion", "1702");\r
178         variables.put("globalSubscriberId", "subscriber123");\r
179         variables.put("asdcServiceModelVersion", "serviceVersion01");\r
180 \r
181         try {\r
182             VnfResource vr = new VnfResource();\r
183             ModelInfo mvr = new ModelInfo();\r
184             mvr.setModelName("vSAMP12");\r
185             mvr.setModelInstanceName("v123");\r
186             mvr.setModelInvariantUuid("extrovert");\r
187             mvr.setModelVersion("1.0");\r
188             mvr.setModelCustomizationUuid("MODEL-ID-1234");\r
189             vr.setModelInfo(mvr);\r
190             vr.constructVnfType("vnf1");\r
191             vr.setNfType("somenftype");\r
192             vr.setNfRole("somenfrole");\r
193             vr.setNfFunction("somenffunction");\r
194             vr.setNfNamingCode("somenamingcode");\r
195             ModuleResource mr = new ModuleResource();\r
196             ModelInfo mvmr = new ModelInfo();\r
197             mvmr.setModelInvariantUuid("introvert");\r
198             mvmr.setModelName("STMTN5MMSC21-MMSC::model-1-0");\r
199             mvmr.setModelVersion("1");\r
200             mvmr.setModelCustomizationUuid("MODEL-123");\r
201             mr.setModelInfo(mvmr);\r
202             mr.setIsBase(true);\r
203             mr.setVfModuleLabel("MODULELABEL");\r
204             vr.addVfModule(mr);\r
205             ModuleResource mr1 = new ModuleResource();\r
206             ModelInfo mvmr1 = new ModelInfo();\r
207             mvmr1.setModelInvariantUuid("extrovert");\r
208             mvmr1.setModelName("SECONDMODELNAME");\r
209             mvmr1.setModelVersion("1");\r
210             mvmr1.setModelCustomizationUuid("MODEL-123");\r
211             mr1.setModelInfo(mvmr1);\r
212             mr1.setIsBase(false);\r
213             mr1.setVfModuleLabel("MODULELABEL1");\r
214             vr.addVfModule(mr1);\r
215             variables.put("vnfResourceDecomposition", vr);\r
216             variables.put("isTest", true);\r
217         } catch (Exception e) {\r
218 \r
219         }\r
220 \r
221     }\r
222 \r
223 \r
224 }\r