2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct.impl;
23 import org.mockito.InjectMocks;
24 import org.mockito.Mock;
25 import org.mockito.Spy;
26 import org.openecomp.sdc.vendorsoftwareproduct.ManualVspToscaManager;
27 import org.openecomp.sdc.vendorsoftwareproduct.services.ManualVspDataCollectionService;
29 public class ManualVspToscaManagerImplTest {
31 private static final String USER = "manualVspToscaTestUser";
32 private static final String INVALID_VSP_ID = "Invalid_Vsp_Id";
33 private static final String VSP_ID = "Vsp_Id_1";
34 private static final String VSP_VERSION = "1.0";
36 private static final String RELEASE_VENDOR = "Vendor-1";
37 private static final String COMPONENT_ID = "Component_id";
38 private static final String COMPONENT_NAME = "Component_name";
39 private static final String SP_PART_NUMBER_1 = "Part_number_123";
40 private static final String FEATURE_GROUP_ID_1 = "Feature_Group_id_1";
41 private static final String MANUFACTURER_REF_1 = "Manufacturer_Ref_1";
42 private static final String VENDOR_MODEL_1 = "Deployment_Flavor_Model_1";
43 private static final int NUM_CPUS_1 = 1;
44 private static final String DISK_SIZE_1 = "2 GB";
45 private static final String MEM_SIZE_1 = "8 GB";
47 private static final String SP_PART_NUMBER_2 = "Part_number_345";
48 private static final String FEATURE_GROUP_ID_2 = "Feature_Group_id_2";
49 private static final String MANUFACTURER_REF_2 = "Manufacturer_Ref_2";
50 private static final String VENDOR_MODEL_2 = "Deployment_Flavor_Model_2";
51 private static final int NUM_CPUS_2 = 4;
52 private static final String DISK_SIZE_2 = "3 GB";
53 private static final String MEM_SIZE_2 = "2 GB";
55 private static final String IMAGE_VERSION_1 = "3.16.1";
56 private static final String IMAGE_HASH_1 = "65edfgye3256hjutve";
57 private static final String IMAGE_FILE_NAME_1 = "image-file-name1";
58 private static final String IMAGE_VERSION_2 = "3.1.9";
59 private static final String IMAGE_HASH_2 = "84rtedfe3256hjutaw";
60 private static final String IMAGE_FILE_NAME_2 = "image-file-name1";
62 private ManualVspToscaManager manualVspToscaManager = new ManualVspToscaManagerImpl();
66 private ManualVspToscaManagerImpl manualVspToscaManagerMock;
69 private ManualVspDataCollectionService manualVspDataCollectionServiceMock;
73 public void testGatherVspInformationInvalidVsp() {
74 MockitoAnnotations.initMocks(this);
75 VspModelInfo expectedVspData = new VspModelInfo();
76 doThrow(new RuntimeException())
77 .when(manualVspDataCollectionServiceMock)
78 .getReleaseVendor(INVALID_VSP_ID, Version.valueOf(VSP_VERSION));
79 doThrow(new RuntimeException())
80 .when(manualVspDataCollectionServiceMock)
81 .getAllowedFlavors(INVALID_VSP_ID, Version.valueOf(VSP_VERSION));
82 doThrow(new RuntimeException())
83 .when(manualVspDataCollectionServiceMock)
84 .getVspComponentImages(INVALID_VSP_ID, Version.valueOf(VSP_VERSION));
85 doThrow(new RuntimeException())
86 .when(manualVspDataCollectionServiceMock)
87 .getVspComponents(INVALID_VSP_ID, Version.valueOf(VSP_VERSION));
88 doThrow(new RuntimeException())
89 .when(manualVspDataCollectionServiceMock)
90 .getVspComponentNics(INVALID_VSP_ID, Version.valueOf(VSP_VERSION));
91 VspModelInfo vspModelInfo = manualVspToscaManagerMock.gatherVspInformation(INVALID_VSP_ID,
92 Version.valueOf(VSP_VERSION));
93 Assert.assertEquals(expectedVspData, vspModelInfo);
98 public void testGatherVspInformationValidVsp() {
99 MockitoAnnotations.initMocks(this);
100 Map<String, DeploymentFlavorModel> deploymentFlavorData = getDeploymentFlavorData();
101 Map<String, List<Nic>> componentNics = getComponentNics();
102 Map<String, String> componentData = getComponentData();
103 Map<String, List<MultiFlavorVfcImage>> vfcImageData = getVfcImageData();
104 doReturn(Optional.of(RELEASE_VENDOR)).when(manualVspDataCollectionServiceMock)
105 .getReleaseVendor(VSP_ID, Version.valueOf(VSP_VERSION));
106 doReturn(deploymentFlavorData).when(manualVspDataCollectionServiceMock)
107 .getAllowedFlavors(VSP_ID, Version.valueOf(VSP_VERSION));
108 doReturn(vfcImageData).when(manualVspDataCollectionServiceMock)
109 .getVspComponentImages(VSP_ID, Version.valueOf(VSP_VERSION));
110 doReturn(componentData).when(manualVspDataCollectionServiceMock)
111 .getVspComponents(VSP_ID, Version.valueOf(VSP_VERSION));
112 doReturn(componentNics).when(manualVspDataCollectionServiceMock)
113 .getVspComponentNics(VSP_ID, Version.valueOf(VSP_VERSION));
114 VspModelInfo vspModelInfo = manualVspToscaManagerMock.gatherVspInformation(VSP_ID,
115 Version.valueOf(VSP_VERSION));
117 VspModelInfo expectedVspData = new VspModelInfo();
118 expectedVspData.setReleaseVendor(RELEASE_VENDOR);
119 expectedVspData.setComponents(getComponentData());
120 expectedVspData.setMultiFlavorVfcImages(getVfcImageData());
121 expectedVspData.setAllowedFlavors(getDeploymentFlavorData());
122 expectedVspData.setNics(getComponentNics());
124 Assert.assertEquals(expectedVspData, vspModelInfo);
128 public void testGenerateToscaInvalidVspId() {
129 VspModelInfo emptyVspCollectedData = new VspModelInfo();
130 ToscaServiceModel toscaServiceModel =
131 manualVspToscaManager.generateToscaModel(emptyVspCollectedData);
132 Assert.assertNotNull(toscaServiceModel);
133 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
134 //Service model should contain only the packed global types
135 Assert.assertEquals(19, toscaServiceModel.getServiceTemplates().size());
139 public void testGenerateToscaNoComponent() {
140 VspModelInfo vspCollectedData = new VspModelInfo();
141 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
142 vspCollectedData.setComponents(null);
143 vspCollectedData.setMultiFlavorVfcImages(null);
144 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
145 vspCollectedData.setNics(getComponentNics());
146 ToscaServiceModel toscaServiceModel =
147 manualVspToscaManager.generateToscaModel(vspCollectedData);
148 Assert.assertNotNull(toscaServiceModel);
149 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
150 //Service model should contain only the packed global types
151 Assert.assertEquals(19, toscaServiceModel.getServiceTemplates().size());
155 public void testGenerateToscaReleaseVendorNotPresent() {
156 VspModelInfo vspCollectedData = new VspModelInfo();
157 vspCollectedData.setComponents(getComponentData());
158 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
159 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
160 vspCollectedData.setNics(getComponentNics());
161 ToscaServiceModel toscaServiceModel =
162 manualVspToscaManager.generateToscaModel(vspCollectedData);
163 Assert.assertNotNull(toscaServiceModel);
164 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
165 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
166 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
167 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
168 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
169 Assert.assertNotNull(mainServiceTemplate);
170 Assert.assertNull(mainServiceTemplate.getMetadata().get("releaseVendor"));
174 public void testGenerateToscaNoImages() {
175 VspModelInfo vspCollectedData = new VspModelInfo();
176 vspCollectedData.setComponents(getComponentData());
177 vspCollectedData.setMultiFlavorVfcImages(null);
178 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
179 vspCollectedData.setNics(getComponentNics());
180 ToscaServiceModel toscaServiceModel =
181 manualVspToscaManager.generateToscaModel(vspCollectedData);
182 Assert.assertNotNull(toscaServiceModel);
183 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
184 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
185 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
186 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
187 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
188 Assert.assertNotNull(mainServiceTemplate);
189 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
190 Assert.assertNull(mainServiceTemplate.getTopology_template().getNode_templates()
191 .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX)
192 .getProperties().get(IMAGES_PROPERTY));
196 public void testGenerateToscaNoPorts() {
197 VspModelInfo vspCollectedData = new VspModelInfo();
198 vspCollectedData.setComponents(getComponentData());
199 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
200 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
201 vspCollectedData.setNics(null);
202 ToscaServiceModel toscaServiceModel =
203 manualVspToscaManager.generateToscaModel(vspCollectedData);
204 Assert.assertNotNull(toscaServiceModel);
205 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
206 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
207 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
208 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
209 String substitutionServiceTemplateFileName =
210 componentName + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX;
211 ServiceTemplate substitutionServiceTemplate =
212 serviceTemplates.get(substitutionServiceTemplateFileName);
213 Assert.assertNotNull(substitutionServiceTemplate);
214 //Only component node template should be present since there are no ports
215 Assert.assertEquals(1, substitutionServiceTemplate.getTopology_template().getNode_templates()
220 public void testGenerateToscaNoManufacturerRefNumAndFeatureGroup() {
221 VspModelInfo vspCollectedData = new VspModelInfo();
222 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
223 vspCollectedData.setComponents(getComponentData());
224 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
225 Map<String, DeploymentFlavorModel> deploymentFlavorData = getDeploymentFlavorData();
226 deploymentFlavorData.get(SP_PART_NUMBER_1).getVendor_info()
227 .setManufacturer_reference_number(null);
228 deploymentFlavorData.get(SP_PART_NUMBER_1).getLicense_flavor().setFeature_group_uuid(null);
229 vspCollectedData.setAllowedFlavors(deploymentFlavorData);
230 vspCollectedData.setNics(getComponentNics());
231 ToscaServiceModel toscaServiceModel =
232 manualVspToscaManager.generateToscaModel(vspCollectedData);
233 Assert.assertNotNull(toscaServiceModel);
234 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
235 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
236 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
237 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
238 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
239 Assert.assertNotNull(mainServiceTemplate);
240 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
241 Map<String, DeploymentFlavorModel> actualDeploymentFlavor = (Map<String, DeploymentFlavorModel>)
242 mainServiceTemplate.getTopology_template().getNode_templates()
243 .get(componentName + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX)
244 .getProperties().get(ALLOWED_FLAVORS_PROPERTY);
245 Assert.assertNull(actualDeploymentFlavor.get(SP_PART_NUMBER_1).getVendor_info()
246 .getManufacturer_reference_number());
247 Assert.assertNull(actualDeploymentFlavor.get(SP_PART_NUMBER_1).getLicense_flavor()
248 .getFeature_group_uuid());
252 public void testGenerateToscaNoDeploymentFlavor() {
253 VspModelInfo vspCollectedData = new VspModelInfo();
254 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
255 vspCollectedData.setComponents(getComponentData());
256 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
257 vspCollectedData.setAllowedFlavors(null);
258 vspCollectedData.setNics(getComponentNics());
259 ToscaServiceModel toscaServiceModel =
260 manualVspToscaManager.generateToscaModel(vspCollectedData);
261 Assert.assertNotNull(toscaServiceModel);
262 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
263 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
264 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
265 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
266 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
267 Assert.assertNotNull(mainServiceTemplate);
268 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
269 Assert.assertNull(mainServiceTemplate.getTopology_template().getNode_templates()
270 .get(componentName + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX)
275 public void testGenerateToscaCompleteData() {
276 VspModelInfo vspCollectedData = new VspModelInfo();
277 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
278 vspCollectedData.setComponents(getComponentData());
279 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
280 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
281 vspCollectedData.setNics(getComponentNics());
282 ToscaServiceModel toscaServiceModel =
283 manualVspToscaManager.generateToscaModel(vspCollectedData);
284 Assert.assertNotNull(toscaServiceModel);
285 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
286 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
287 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
288 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
289 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
290 Assert.assertNotNull(mainServiceTemplate);
291 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
292 Assert.assertNotNull(mainServiceTemplate.getTopology_template().getNode_templates()
293 .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX));
294 //Validate vnf configuration node template
295 validateVnfConfigurationNodeTemplate(mainServiceTemplate, componentName);
296 //Validate vnf node template
297 validateVnfNodeTemplate(mainServiceTemplate, componentName);
298 //Validate substitution service template
299 ServiceTemplate substitutionServiceTemplate = toscaServiceModel.getServiceTemplates()
300 .get(componentName + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX);
301 List<Nic> nics = vspCollectedData.getNics().get(COMPONENT_ID);
302 validateSubstitutionServiceTemplate(substitutionServiceTemplate, nics, componentName);
303 //Validate global substitution service template
304 ServiceTemplate globalSubstitutionServiceTemplate = toscaServiceModel.getServiceTemplates()
305 .get(ToscaUtil.getServiceTemplateFileName(GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME));
306 validateGlobalSubstitutionServiceTemplate(globalSubstitutionServiceTemplate, nics,
310 private void validateVnfConfigurationNodeTemplate(ServiceTemplate mainServiceTemplate,
311 String componentName) {
312 NodeTemplate vnfConfigNodeTemplate =
313 mainServiceTemplate.getTopology_template().getNode_templates()
314 .get(componentName + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX);
315 Assert.assertNotNull(vnfConfigNodeTemplate);
316 Assert.assertEquals(ToscaNodeType.VNF_CONFIG_NODE_TYPE, vnfConfigNodeTemplate.getType());
317 Map<String, DeploymentFlavorModel> allowedFlavors = (Map<String, DeploymentFlavorModel>)
318 vnfConfigNodeTemplate.getProperties().get(GeneratorConstants.ALLOWED_FLAVORS_PROPERTY);
319 Map<String, DeploymentFlavorModel> deploymentFlavorData = getDeploymentFlavorData();
320 Assert.assertNotNull(allowedFlavors);
321 Assert.assertEquals(deploymentFlavorData.size(), allowedFlavors.size());
322 Assert.assertEquals(deploymentFlavorData, allowedFlavors);
325 private void validateImagePropertyData(NodeTemplate vnfNodeTemplate, String componentName) {
326 Map<String, MultiFlavorVfcImage> vfcImages = (Map<String, MultiFlavorVfcImage>)
327 vnfNodeTemplate.getProperties().get(GeneratorConstants.IMAGES_PROPERTY);
328 Assert.assertNotNull(vfcImages);
329 Assert.assertEquals(2, vfcImages.size());
330 MultiFlavorVfcImage image1 = vfcImages.get(IMAGE_VERSION_1);
331 MultiFlavorVfcImage expectedImage1 = getImageData(IMAGE_VERSION_1, IMAGE_HASH_1,
332 IMAGE_FILE_NAME_1, "md5");
333 Assert.assertEquals(expectedImage1, image1);
334 MultiFlavorVfcImage image2 = vfcImages.get(IMAGE_VERSION_2);
335 MultiFlavorVfcImage expectedImage2 = getImageData(IMAGE_VERSION_2, IMAGE_HASH_2,
336 IMAGE_FILE_NAME_2, "md5");
337 Assert.assertEquals(expectedImage2, image2);
340 private void validateVnfNodeTemplate(ServiceTemplate mainServiceTemplate,
341 String componentName) {
342 NodeTemplate vnfNodeTemplate =
343 mainServiceTemplate.getTopology_template().getNode_templates()
344 .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX);
345 Assert.assertNotNull(vnfNodeTemplate);
346 Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE, vnfNodeTemplate.getType());
347 Assert.assertNotNull(vnfNodeTemplate.getDirectives());
348 Assert.assertEquals(true, vnfNodeTemplate.getDirectives().contains(ToscaConstants
349 .NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE));
350 validateImagePropertyData(vnfNodeTemplate, componentName);
351 Map<String, Object> serviceTemplateFilterProperty = (Map<String, Object>) vnfNodeTemplate
352 .getProperties().get(SERVICE_TEMPLATE_FILTER_PROPERTY_NAME);
353 Assert.assertNotNull(serviceTemplateFilterProperty);
354 String substituteServiceTemplate = serviceTemplateFilterProperty
355 .get(SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME).toString();
356 String expectedServiceTemplateName = componentName + GeneratorConstants
357 .TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX;
358 Assert.assertEquals(expectedServiceTemplateName, substituteServiceTemplate);
359 int count = (int) serviceTemplateFilterProperty.get(COUNT_PROPERTY_NAME);
360 Assert.assertEquals(1, count);
363 private void validateSubstitutionServiceTemplate(ServiceTemplate substitutionServiceTemplate,
365 String componentName) {
366 Assert.assertNotNull(substitutionServiceTemplate);
367 int expectedNumberOfNodeTemplates = nics.size() + 1; //1 component node template
368 Map<String, NodeTemplate> substitutionNodeTemplates =
369 substitutionServiceTemplate.getTopology_template().getNode_templates();
370 Assert.assertEquals(expectedNumberOfNodeTemplates, substitutionNodeTemplates.size());
371 NodeTemplate componentNodeTemplate = substitutionNodeTemplates.get(componentName);
372 Assert.assertNotNull(componentNodeTemplate);
373 Assert.assertEquals(ToscaNodeType.VFC_NODE_TYPE_PREFIX + componentName, componentNodeTemplate
375 for (Nic nic : nics) {
376 String nicName = nic.getName();
377 NodeTemplate nicNodeTemplate =
378 substitutionNodeTemplates.get(nicName + PORT_NODE_TEMPLATE_ID_SUFFIX);
379 validateNicNodeTemplate(nicNodeTemplate, componentName);
381 SubstitutionMapping substitutionMappings =
382 substitutionServiceTemplate.getTopology_template().getSubstitution_mappings();
383 validateSubstitutionMappings(substitutionMappings, nics, componentName);
386 private void validateNicNodeTemplate(NodeTemplate nicNodeTemplate,
387 String componentName) {
388 Assert.assertNotNull(nicNodeTemplate);
389 Assert.assertEquals(ToscaNodeType.NETWORK_PORT, nicNodeTemplate.getType());
390 List<Map<String, RequirementAssignment>> nicNodeTemplateRequirements =
391 nicNodeTemplate.getRequirements();
392 Assert.assertNotNull(nicNodeTemplateRequirements);
393 Assert.assertEquals(1, nicNodeTemplateRequirements.size());
394 RequirementAssignment expectedRequirementAssignment = new RequirementAssignment();
395 expectedRequirementAssignment.setCapability(ToscaCapabilityType.NATIVE_NETWORK_BINDABLE);
396 expectedRequirementAssignment.setRelationship(ToscaRelationshipType.NATIVE_NETWORK_BINDS_TO);
397 expectedRequirementAssignment.setNode(componentName);
398 Assert.assertEquals(true, new ToscaAnalyzerServiceImpl()
399 .isRequirementExistInNodeTemplate(nicNodeTemplate, BINDING_REQUIREMENT_ID,
400 expectedRequirementAssignment));
403 private void validateSubstitutionMappings(SubstitutionMapping substitutionMappings,
405 String componentName) {
406 Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE, substitutionMappings
408 Map<String, List<String>> capabilities = substitutionMappings.getCapabilities();
409 validateSubstitutionCapabilities(capabilities, componentName);
410 Map<String, List<String>> requirements = substitutionMappings.getRequirements();
411 validateSubstitutionRequirements(requirements, nics);
414 private void validateSubstitutionCapabilities(Map<String, List<String>> capabilities,
415 String componentName) {
416 List<String> supportedCapabilities = GeneratorUtils.supportedCapabilities;
417 Assert.assertEquals(supportedCapabilities.size(), capabilities.size());
418 for (String capability : supportedCapabilities) {
419 String expectedCapabilityId = capability + "_" + componentName;
420 Assert.assertEquals(true, capabilities.containsKey(expectedCapabilityId));
421 List<String> expectedCapabilityValue = new ArrayList<>(2);
422 expectedCapabilityValue.add(componentName);
423 expectedCapabilityValue.add(capability);
424 List<String> actualCapabilityValue = capabilities.get(expectedCapabilityId);
425 Assert.assertEquals(expectedCapabilityValue, actualCapabilityValue);
429 private void validateSubstitutionRequirements(Map<String, List<String>> requirements,
431 List<String> supportedRequirements = GeneratorUtils.supportedRequirements;
432 for(Nic nic : nics) {
433 String nicNodeTemplateId = nic.getName() + PORT_NODE_TEMPLATE_ID_SUFFIX;
434 for (String requirement : supportedRequirements) {
435 String expectedRequirementId = requirement + "_" + nicNodeTemplateId;
436 Assert.assertEquals(true, requirements.containsKey(expectedRequirementId));
437 List<String> expectedRequirementValue = new ArrayList<>(2);
438 expectedRequirementValue.add(nicNodeTemplateId);
439 expectedRequirementValue.add(requirement);
440 List<String> actualRequirementValue = requirements.get(expectedRequirementId);
441 Assert.assertEquals(expectedRequirementValue, actualRequirementValue);
446 private void validateGlobalSubstitutionServiceTemplate(ServiceTemplate
447 globalSubstitutionServiceTemplate,
449 String componentName) {
450 Assert.assertNotNull(globalSubstitutionServiceTemplate);
451 Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types();
452 Assert.assertEquals(1, nodeTypes.size());
453 NodeType deploymentFlavorNodeType =
454 nodeTypes.get(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE);
455 Assert.assertNotNull(deploymentFlavorNodeType);
456 Map<String, PropertyDefinition> properties = deploymentFlavorNodeType.getProperties();
457 Assert.assertNotNull(properties);
458 PropertyDefinition numCpusProperty = properties.get(GeneratorConstants.NUM_CPUS);
459 Assert.assertNotNull(numCpusProperty);
460 Assert.assertEquals(PropertyType.INTEGER.getDisplayName(), numCpusProperty.getType());
461 Assert.assertEquals(true, numCpusProperty.getRequired());
463 PropertyDefinition diskSizeProperty = properties.get(GeneratorConstants.DISK_SIZE);
464 Assert.assertNotNull(diskSizeProperty);
465 Assert.assertEquals(PropertyType.SCALAR_UNIT_SIZE.getDisplayName(), diskSizeProperty.getType());
466 Assert.assertEquals(true, diskSizeProperty.getRequired());
468 PropertyDefinition memSizeProperty = properties.get(GeneratorConstants.MEM_SIZE);
469 Assert.assertNotNull(memSizeProperty);
470 Assert.assertEquals(PropertyType.SCALAR_UNIT_SIZE.getDisplayName(), memSizeProperty.getType());
471 Assert.assertEquals(true, memSizeProperty.getRequired());
473 List<Map<String, RequirementDefinition>> requirements =
474 deploymentFlavorNodeType.getRequirements();
475 List<String> supportedRequirements = GeneratorUtils.supportedRequirements;
476 for (Nic nic : nics) {
477 boolean found = false;
478 String nicNodeTemplateId = nic.getName() + PORT_NODE_TEMPLATE_ID_SUFFIX;
479 for (String requirementId : supportedRequirements) {
480 String expectedRequirementId = requirementId + "_" + nicNodeTemplateId;
481 for (Map<String, RequirementDefinition> requirement : requirements) {
482 if (requirement.containsKey(expectedRequirementId)) {
488 Assert.assertEquals(true, found);
491 Map<String, CapabilityDefinition> capabilities = deploymentFlavorNodeType.getCapabilities();
492 List<String> supportedCapabilities = GeneratorUtils.supportedCapabilities;
493 for (String capabilityId : supportedCapabilities) {
494 String expectedCapabilityId = capabilityId + "_" + componentName;
495 Assert.assertEquals (true, capabilities.containsKey(expectedCapabilityId));
499 private Map<String, String> getComponentData() {
500 Map<String, String> componentData = new HashMap<>();
501 componentData.put(COMPONENT_ID, COMPONENT_NAME);
502 return componentData;
505 private Map<String, List<MultiFlavorVfcImage>> getVfcImageData() {
506 Map<String, List<MultiFlavorVfcImage>> imageData = new HashMap<>();
507 List<MultiFlavorVfcImage> images = new ArrayList<>(2);
508 MultiFlavorVfcImage image1 = getImageData(IMAGE_VERSION_1, IMAGE_HASH_1, IMAGE_FILE_NAME_1,
510 MultiFlavorVfcImage image2 = getImageData(IMAGE_VERSION_2, IMAGE_HASH_2, IMAGE_FILE_NAME_2,
514 imageData.put(COMPONENT_ID, images);
518 private Map<String, DeploymentFlavorModel> getDeploymentFlavorData() {
519 Map<String, DeploymentFlavorModel> deploymentFlavorData = new HashMap<>();
520 ComputeFlavor computeFlavor1 = getComputeFlavorData(NUM_CPUS_1, DISK_SIZE_1, MEM_SIZE_1);
521 LicenseFlavor licenseFlavor1 = getLicenseFlavor(FEATURE_GROUP_ID_1);
522 VendorInfo vendorInfo1 = getVendorInfo(MANUFACTURER_REF_1, VENDOR_MODEL_1);
523 DeploymentFlavorModel deploymentFlavor1 = getDeploymentFlavorModel(SP_PART_NUMBER_1,
524 computeFlavor1, vendorInfo1, licenseFlavor1);
526 ComputeFlavor computeFlavor2 = getComputeFlavorData(NUM_CPUS_2, DISK_SIZE_2, MEM_SIZE_2);
527 LicenseFlavor licenseFlavor2 = getLicenseFlavor(FEATURE_GROUP_ID_2);
528 VendorInfo vendorInfo2 = getVendorInfo(MANUFACTURER_REF_2, VENDOR_MODEL_2);
530 DeploymentFlavorModel deploymentFlavor2 = getDeploymentFlavorModel(SP_PART_NUMBER_2,
531 computeFlavor2, vendorInfo2, licenseFlavor2);
533 deploymentFlavorData.put(SP_PART_NUMBER_1, deploymentFlavor1);
534 deploymentFlavorData.put(SP_PART_NUMBER_2, deploymentFlavor2);
535 return deploymentFlavorData;
538 private DeploymentFlavorModel getDeploymentFlavorModel(String spPartNumber, ComputeFlavor
539 computeFlavor, VendorInfo vendorInfo, LicenseFlavor licenseFlavor) {
540 DeploymentFlavorModel deploymentFlavor = new DeploymentFlavorModel();
541 deploymentFlavor.setSp_part_number(spPartNumber);
542 deploymentFlavor.setCompute_flavor(computeFlavor);
543 deploymentFlavor.setLicense_flavor(licenseFlavor);
544 deploymentFlavor.setVendor_info(vendorInfo);
545 return deploymentFlavor;
548 private ComputeFlavor getComputeFlavorData(int numCpus, String diskSize, String memSize ) {
549 ComputeFlavor computeFlavor = new ComputeFlavor();
550 computeFlavor.setNum_cpus(numCpus);
551 computeFlavor.setDisk_size(diskSize);
552 computeFlavor.setMem_size(memSize);
553 return computeFlavor;
556 private VendorInfo getVendorInfo(String manufacturerRefNumber, String deploymentFlavorModel) {
557 VendorInfo vendorInfo = new VendorInfo();
558 vendorInfo.setManufacturer_reference_number(manufacturerRefNumber);
559 vendorInfo.setVendor_model(deploymentFlavorModel);
563 private LicenseFlavor getLicenseFlavor(String featureGroupId) {
564 LicenseFlavor licenseFlavor = new LicenseFlavor();
565 licenseFlavor.setFeature_group_uuid(featureGroupId);
566 return licenseFlavor;
569 private MultiFlavorVfcImage getImageData(String imageVersion, String fileHash,
570 String fileName, String fileHashType) {
571 MultiFlavorVfcImage image = new MultiFlavorVfcImage();
572 image.setSoftware_version(imageVersion);
573 image.setFile_hash(fileHash);
574 image.setFile_hash_type(fileHashType);
575 image.setFile_name(fileName);
579 private Map<String, List<Nic>> getComponentNics() {
580 Map<String, List<Nic>> nicData = new HashMap<>();
581 List<Nic> nicList = new ArrayList<>(2);
582 Nic nic1 = new Nic();
583 nic1.setName("Nic_1");
585 Nic nic2 = new Nic();
586 nic2.setName("Nic_2");
590 nicData.put(COMPONENT_ID, nicList);