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