1 package org.openecomp.sdc.vendorsoftwareproduct.impl;
3 import static org.mockito.Mockito.doReturn;
4 import static org.mockito.Mockito.doThrow;
5 import static org.openecomp.sdc.generator.util.GeneratorConstants.ALLOWED_FLAVORS_PROPERTY;
6 import static org.openecomp.sdc.generator.util.GeneratorConstants.IMAGES_PROPERTY;
7 import static org.openecomp.sdc.generator.util.GeneratorConstants.PORT_NODE_TEMPLATE_ID_SUFFIX;
8 import static org.openecomp.sdc.tosca.services.ToscaConstants.BINDING_REQUIREMENT_ID;
9 import static org.openecomp.sdc.tosca.services.ToscaConstants.COUNT_PROPERTY_NAME;
10 import static org.openecomp.sdc.tosca.services.ToscaConstants.SERVICE_TEMPLATE_FILTER_PROPERTY_NAME;
11 import static org.openecomp.sdc.tosca.services.ToscaConstants.SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME;
12 import static org.openecomp.sdc.translator.services.heattotosca.Constants.GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME;
14 import org.junit.Assert;
15 import org.junit.Test;
16 import org.mockito.InjectMocks;
17 import org.mockito.Mock;
18 import org.mockito.MockitoAnnotations;
19 import org.mockito.Spy;
20 import org.openecomp.sdc.generator.core.utils.GeneratorUtils;
21 import org.openecomp.sdc.generator.datatypes.tosca.ComputeFlavor;
22 import org.openecomp.sdc.generator.datatypes.tosca.DeploymentFlavorModel;
23 import org.openecomp.sdc.generator.datatypes.tosca.LicenseFlavor;
24 import org.openecomp.sdc.generator.datatypes.tosca.MultiFlavorVfcImage;
25 import org.openecomp.sdc.generator.datatypes.tosca.VendorInfo;
26 import org.openecomp.sdc.generator.datatypes.tosca.VspModelInfo;
27 import org.openecomp.sdc.generator.util.GeneratorConstants;
28 import org.openecomp.sdc.tosca.datatypes.ToscaCapabilityType;
29 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
30 import org.openecomp.sdc.tosca.datatypes.ToscaRelationshipType;
31 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
32 import org.openecomp.sdc.tosca.datatypes.model.CapabilityDefinition;
33 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
34 import org.openecomp.sdc.tosca.datatypes.model.NodeType;
35 import org.openecomp.sdc.tosca.datatypes.model.PropertyDefinition;
36 import org.openecomp.sdc.tosca.datatypes.model.PropertyType;
37 import org.openecomp.sdc.tosca.datatypes.model.RequirementAssignment;
38 import org.openecomp.sdc.tosca.datatypes.model.RequirementDefinition;
39 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
40 import org.openecomp.sdc.tosca.datatypes.model.SubstitutionMapping;
41 import org.openecomp.sdc.tosca.services.ToscaConstants;
42 import org.openecomp.sdc.tosca.services.ToscaUtil;
43 import org.openecomp.sdc.tosca.services.impl.ToscaAnalyzerServiceImpl;
44 import org.openecomp.sdc.vendorsoftwareproduct.ManualVspToscaManager;
45 import org.openecomp.sdc.vendorsoftwareproduct.types.composition.Nic;
46 import org.openecomp.sdc.vendorsoftwareproduct.services.ManualVspDataCollectionService;
47 import org.openecomp.sdc.versioning.dao.types.Version;
49 import java.util.ArrayList;
50 import java.util.Arrays;
51 import java.util.HashMap;
52 import java.util.List;
54 import java.util.Optional;
56 public class ManualVspToscaManagerImplTest {
58 private static final String USER = "manualVspToscaTestUser";
59 private static final String INVALID_VSP_ID = "Invalid_Vsp_Id";
60 private static final String VSP_ID = "Vsp_Id_1";
61 private static final String VSP_VERSION = "1.0";
63 private static final String RELEASE_VENDOR = "Vendor-1";
64 private static final String COMPONENT_ID = "Component_id";
65 private static final String COMPONENT_NAME = "Component_name";
66 private static final String SP_PART_NUMBER_1 = "Part_number_123";
67 private static final String FEATURE_GROUP_ID_1 = "Feature_Group_id_1";
68 private static final String MANUFACTURER_REF_1 = "Manufacturer_Ref_1";
69 private static final String VENDOR_MODEL_1 = "Deployment_Flavor_Model_1";
70 private static final int NUM_CPUS_1 = 1;
71 private static final String DISK_SIZE_1 = "2 GB";
72 private static final String MEM_SIZE_1 = "8 GB";
74 private static final String SP_PART_NUMBER_2 = "Part_number_345";
75 private static final String FEATURE_GROUP_ID_2 = "Feature_Group_id_2";
76 private static final String MANUFACTURER_REF_2 = "Manufacturer_Ref_2";
77 private static final String VENDOR_MODEL_2 = "Deployment_Flavor_Model_2";
78 private static final int NUM_CPUS_2 = 4;
79 private static final String DISK_SIZE_2 = "3 GB";
80 private static final String MEM_SIZE_2 = "2 GB";
82 private static final String IMAGE_VERSION_1 = "3.16.1";
83 private static final String IMAGE_HASH_1 = "65edfgye3256hjutve";
84 private static final String IMAGE_FILE_NAME_1 = "image-file-name1";
85 private static final String IMAGE_VERSION_2 = "3.1.9";
86 private static final String IMAGE_HASH_2 = "84rtedfe3256hjutaw";
87 private static final String IMAGE_FILE_NAME_2 = "image-file-name1";
89 private ManualVspToscaManager manualVspToscaManager = new ManualVspToscaManagerImpl();
93 private ManualVspToscaManagerImpl manualVspToscaManagerMock;
96 private ManualVspDataCollectionService manualVspDataCollectionServiceMock;
99 private static List<String> supportedCapabilities = new ArrayList<>();
100 private static List<String> supportedRequirements = new ArrayList<>();
103 //TODO : Read from configuration
104 supportedCapabilities.addAll(Arrays.asList("host", "os", "endpoint", "scalable"));
105 supportedRequirements.addAll(Arrays.asList("link"));
109 public void testGatherVspInformationInvalidVsp() {
110 MockitoAnnotations.initMocks(this);
111 VspModelInfo expectedVspData = new VspModelInfo();
112 doThrow(new RuntimeException())
113 .when(manualVspDataCollectionServiceMock)
114 .getReleaseVendor(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER);
115 doThrow(new RuntimeException())
116 .when(manualVspDataCollectionServiceMock)
117 .getAllowedFlavors(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER);
118 doThrow(new RuntimeException())
119 .when(manualVspDataCollectionServiceMock)
120 .getVspComponentImages(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER);
121 doThrow(new RuntimeException())
122 .when(manualVspDataCollectionServiceMock)
123 .getVspComponents(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER);
124 doThrow(new RuntimeException())
125 .when(manualVspDataCollectionServiceMock)
126 .getVspComponentNics(INVALID_VSP_ID, Version.valueOf(VSP_VERSION), USER);
127 VspModelInfo vspModelInfo = manualVspToscaManagerMock.gatherVspInformation(INVALID_VSP_ID,
128 Version.valueOf(VSP_VERSION), USER);
129 Assert.assertEquals(expectedVspData, vspModelInfo);
134 public void testGatherVspInformationValidVsp() {
135 MockitoAnnotations.initMocks(this);
136 Map<String, DeploymentFlavorModel> deploymentFlavorData = getDeploymentFlavorData();
137 Map<String, List<Nic>> componentNics = getComponentNics();
138 Map<String, String> componentData = getComponentData();
139 Map<String, List<MultiFlavorVfcImage>> vfcImageData = getVfcImageData();
140 doReturn(Optional.of(RELEASE_VENDOR)).when(manualVspDataCollectionServiceMock)
141 .getReleaseVendor(VSP_ID, Version.valueOf(VSP_VERSION), USER);
142 doReturn(deploymentFlavorData).when(manualVspDataCollectionServiceMock)
143 .getAllowedFlavors(VSP_ID, Version.valueOf(VSP_VERSION), USER);
144 doReturn(vfcImageData).when(manualVspDataCollectionServiceMock)
145 .getVspComponentImages(VSP_ID, Version.valueOf(VSP_VERSION), USER);
146 doReturn(componentData).when(manualVspDataCollectionServiceMock)
147 .getVspComponents(VSP_ID, Version.valueOf(VSP_VERSION), USER);
148 doReturn(componentNics).when(manualVspDataCollectionServiceMock)
149 .getVspComponentNics(VSP_ID, Version.valueOf(VSP_VERSION), USER);
150 VspModelInfo vspModelInfo = manualVspToscaManagerMock.gatherVspInformation(VSP_ID,
151 Version.valueOf(VSP_VERSION), USER);
153 VspModelInfo expectedVspData = new VspModelInfo();
154 expectedVspData.setReleaseVendor(RELEASE_VENDOR);
155 expectedVspData.setComponents(getComponentData());
156 expectedVspData.setMultiFlavorVfcImages(getVfcImageData());
157 expectedVspData.setAllowedFlavors(getDeploymentFlavorData());
158 expectedVspData.setNics(getComponentNics());
160 Assert.assertEquals(expectedVspData, vspModelInfo);
164 public void testGenerateToscaInvalidVspId() {
165 VspModelInfo emptyVspCollectedData = new VspModelInfo();
166 ToscaServiceModel toscaServiceModel =
167 manualVspToscaManager.generateToscaModel(emptyVspCollectedData);
168 Assert.assertNotNull(toscaServiceModel);
169 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
170 //Service model should contain only the packed global types
171 Assert.assertEquals(19, toscaServiceModel.getServiceTemplates().size());
175 public void testGenerateToscaNoComponent() {
176 VspModelInfo vspCollectedData = new VspModelInfo();
177 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
178 vspCollectedData.setComponents(null);
179 vspCollectedData.setMultiFlavorVfcImages(null);
180 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
181 vspCollectedData.setNics(getComponentNics());
182 ToscaServiceModel toscaServiceModel =
183 manualVspToscaManager.generateToscaModel(vspCollectedData);
184 Assert.assertNotNull(toscaServiceModel);
185 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
186 //Service model should contain only the packed global types
187 Assert.assertEquals(19, toscaServiceModel.getServiceTemplates().size());
191 public void testGenerateToscaReleaseVendorNotPresent() {
192 VspModelInfo vspCollectedData = new VspModelInfo();
193 vspCollectedData.setComponents(getComponentData());
194 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
195 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
196 vspCollectedData.setNics(getComponentNics());
197 ToscaServiceModel toscaServiceModel =
198 manualVspToscaManager.generateToscaModel(vspCollectedData);
199 Assert.assertNotNull(toscaServiceModel);
200 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
201 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
202 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
203 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
204 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
205 Assert.assertNotNull(mainServiceTemplate);
206 Assert.assertNull(mainServiceTemplate.getMetadata().get("releaseVendor"));
210 public void testGenerateToscaNoImages() {
211 VspModelInfo vspCollectedData = new VspModelInfo();
212 vspCollectedData.setComponents(getComponentData());
213 vspCollectedData.setMultiFlavorVfcImages(null);
214 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
215 vspCollectedData.setNics(getComponentNics());
216 ToscaServiceModel toscaServiceModel =
217 manualVspToscaManager.generateToscaModel(vspCollectedData);
218 Assert.assertNotNull(toscaServiceModel);
219 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
220 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
221 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
222 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
223 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
224 Assert.assertNotNull(mainServiceTemplate);
225 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
226 Assert.assertNull(mainServiceTemplate.getTopology_template().getNode_templates()
227 .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX)
228 .getProperties().get(IMAGES_PROPERTY));
232 public void testGenerateToscaNoPorts() {
233 VspModelInfo vspCollectedData = new VspModelInfo();
234 vspCollectedData.setComponents(getComponentData());
235 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
236 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
237 vspCollectedData.setNics(null);
238 ToscaServiceModel toscaServiceModel =
239 manualVspToscaManager.generateToscaModel(vspCollectedData);
240 Assert.assertNotNull(toscaServiceModel);
241 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
242 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
243 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
244 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
245 String substitutionServiceTemplateFileName =
246 componentName + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX;
247 ServiceTemplate substitutionServiceTemplate =
248 serviceTemplates.get(substitutionServiceTemplateFileName);
249 Assert.assertNotNull(substitutionServiceTemplate);
250 //Only component node template should be present since there are no ports
251 Assert.assertEquals(1, substitutionServiceTemplate.getTopology_template().getNode_templates()
256 public void testGenerateToscaNoManufacturerRefNumAndFeatureGroup() {
257 VspModelInfo vspCollectedData = new VspModelInfo();
258 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
259 vspCollectedData.setComponents(getComponentData());
260 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
261 Map<String, DeploymentFlavorModel> deploymentFlavorData = getDeploymentFlavorData();
262 deploymentFlavorData.get(SP_PART_NUMBER_1).getVendor_info()
263 .setManufacturer_reference_number(null);
264 deploymentFlavorData.get(SP_PART_NUMBER_1).getLicense_flavor().setFeature_group_uuid(null);
265 vspCollectedData.setAllowedFlavors(deploymentFlavorData);
266 vspCollectedData.setNics(getComponentNics());
267 ToscaServiceModel toscaServiceModel =
268 manualVspToscaManager.generateToscaModel(vspCollectedData);
269 Assert.assertNotNull(toscaServiceModel);
270 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
271 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
272 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
273 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
274 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
275 Assert.assertNotNull(mainServiceTemplate);
276 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
277 Map<String, DeploymentFlavorModel> actualDeploymentFlavor = (Map<String, DeploymentFlavorModel>)
278 mainServiceTemplate.getTopology_template().getNode_templates()
279 .get(componentName + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX)
280 .getProperties().get(ALLOWED_FLAVORS_PROPERTY);
281 Assert.assertNull(actualDeploymentFlavor.get(SP_PART_NUMBER_1).getVendor_info()
282 .getManufacturer_reference_number());
283 Assert.assertNull(actualDeploymentFlavor.get(SP_PART_NUMBER_1).getLicense_flavor()
284 .getFeature_group_uuid());
288 public void testGenerateToscaNoDeploymentFlavor() {
289 VspModelInfo vspCollectedData = new VspModelInfo();
290 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
291 vspCollectedData.setComponents(getComponentData());
292 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
293 vspCollectedData.setAllowedFlavors(null);
294 vspCollectedData.setNics(getComponentNics());
295 ToscaServiceModel toscaServiceModel =
296 manualVspToscaManager.generateToscaModel(vspCollectedData);
297 Assert.assertNotNull(toscaServiceModel);
298 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
299 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
300 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
301 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
302 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
303 Assert.assertNotNull(mainServiceTemplate);
304 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
305 Assert.assertNull(mainServiceTemplate.getTopology_template().getNode_templates()
306 .get(componentName + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX)
311 public void testGenerateToscaCompleteData() {
312 VspModelInfo vspCollectedData = new VspModelInfo();
313 vspCollectedData.setReleaseVendor(RELEASE_VENDOR);
314 vspCollectedData.setComponents(getComponentData());
315 vspCollectedData.setMultiFlavorVfcImages(getVfcImageData());
316 vspCollectedData.setAllowedFlavors(getDeploymentFlavorData());
317 vspCollectedData.setNics(getComponentNics());
318 ToscaServiceModel toscaServiceModel =
319 manualVspToscaManager.generateToscaModel(vspCollectedData);
320 Assert.assertNotNull(toscaServiceModel);
321 Assert.assertNotNull(toscaServiceModel.getServiceTemplates());
322 Assert.assertEquals(22, toscaServiceModel.getServiceTemplates().size());
323 Map<String, ServiceTemplate> serviceTemplates = toscaServiceModel.getServiceTemplates();
324 String entryDefinitionServiceTemplate = toscaServiceModel.getEntryDefinitionServiceTemplate();
325 ServiceTemplate mainServiceTemplate = serviceTemplates.get(entryDefinitionServiceTemplate);
326 Assert.assertNotNull(mainServiceTemplate);
327 String componentName = vspCollectedData.getComponents().get(COMPONENT_ID);
328 Assert.assertNotNull(mainServiceTemplate.getTopology_template().getNode_templates()
329 .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX));
330 //Validate vnf configuration node template
331 validateVnfConfigurationNodeTemplate(mainServiceTemplate, componentName);
332 //Validate vnf node template
333 validateVnfNodeTemplate(mainServiceTemplate, componentName);
334 //Validate substitution service template
335 ServiceTemplate substitutionServiceTemplate = toscaServiceModel.getServiceTemplates()
336 .get(componentName + GeneratorConstants.TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX);
337 List<Nic> nics = vspCollectedData.getNics().get(COMPONENT_ID);
338 validateSubstitutionServiceTemplate(substitutionServiceTemplate, nics, componentName);
339 //Validate global substitution service template
340 ServiceTemplate globalSubstitutionServiceTemplate = toscaServiceModel.getServiceTemplates()
341 .get(ToscaUtil.getServiceTemplateFileName(GLOBAL_SUBSTITUTION_TYPES_TEMPLATE_NAME));
342 validateGlobalSubstitutionServiceTemplate(globalSubstitutionServiceTemplate, nics,
346 private void validateVnfConfigurationNodeTemplate(ServiceTemplate mainServiceTemplate,
347 String componentName) {
348 NodeTemplate vnfConfigNodeTemplate =
349 mainServiceTemplate.getTopology_template().getNode_templates()
350 .get(componentName + GeneratorConstants.VNF_CONFIG_NODE_TEMPLATE_ID_SUFFIX);
351 Assert.assertNotNull(vnfConfigNodeTemplate);
352 Assert.assertEquals(ToscaNodeType.VNF_CONFIG_NODE_TYPE, vnfConfigNodeTemplate.getType());
353 Map<String, DeploymentFlavorModel> allowedFlavors = (Map<String, DeploymentFlavorModel>)
354 vnfConfigNodeTemplate.getProperties().get(GeneratorConstants.ALLOWED_FLAVORS_PROPERTY);
355 Map<String, DeploymentFlavorModel> deploymentFlavorData = getDeploymentFlavorData();
356 Assert.assertNotNull(allowedFlavors);
357 Assert.assertEquals(deploymentFlavorData.size(), allowedFlavors.size());
358 Assert.assertEquals(deploymentFlavorData, allowedFlavors);
361 private void validateImagePropertyData(NodeTemplate vnfNodeTemplate, String componentName) {
362 Map<String, MultiFlavorVfcImage> vfcImages = (Map<String, MultiFlavorVfcImage>)
363 vnfNodeTemplate.getProperties().get(GeneratorConstants.IMAGES_PROPERTY);
364 Assert.assertNotNull(vfcImages);
365 Assert.assertEquals(2, vfcImages.size());
366 MultiFlavorVfcImage image1 = vfcImages.get(IMAGE_VERSION_1);
367 MultiFlavorVfcImage expectedImage1 = getImageData(IMAGE_VERSION_1, IMAGE_HASH_1,
368 IMAGE_FILE_NAME_1, "md5");
369 Assert.assertEquals(expectedImage1, image1);
370 MultiFlavorVfcImage image2 = vfcImages.get(IMAGE_VERSION_2);
371 MultiFlavorVfcImage expectedImage2 = getImageData(IMAGE_VERSION_2, IMAGE_HASH_2,
372 IMAGE_FILE_NAME_2, "md5");
373 Assert.assertEquals(expectedImage2, image2);
376 private void validateVnfNodeTemplate(ServiceTemplate mainServiceTemplate,
377 String componentName) {
378 NodeTemplate vnfNodeTemplate =
379 mainServiceTemplate.getTopology_template().getNode_templates()
380 .get(componentName + GeneratorConstants.VNF_NODE_TEMPLATE_ID_SUFFIX);
381 Assert.assertNotNull(vnfNodeTemplate);
382 Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE, vnfNodeTemplate.getType());
383 Assert.assertNotNull(vnfNodeTemplate.getDirectives());
384 Assert.assertEquals(true, vnfNodeTemplate.getDirectives().contains(ToscaConstants
385 .NODE_TEMPLATE_DIRECTIVE_SUBSTITUTABLE));
386 validateImagePropertyData(vnfNodeTemplate, componentName);
387 Map<String, Object> serviceTemplateFilterProperty = (Map<String, Object>) vnfNodeTemplate
388 .getProperties().get(SERVICE_TEMPLATE_FILTER_PROPERTY_NAME);
389 Assert.assertNotNull(serviceTemplateFilterProperty);
390 String substituteServiceTemplate = serviceTemplateFilterProperty
391 .get(SUBSTITUTE_SERVICE_TEMPLATE_PROPERTY_NAME).toString();
392 String expectedServiceTemplateName = componentName + GeneratorConstants
393 .TOSCA_SERVICE_TEMPLATE_FILE_NAME_SUFFIX;
394 Assert.assertEquals(expectedServiceTemplateName, substituteServiceTemplate);
395 int count = (int) serviceTemplateFilterProperty.get(COUNT_PROPERTY_NAME);
396 Assert.assertEquals(1, count);
399 private void validateSubstitutionServiceTemplate(ServiceTemplate substitutionServiceTemplate,
401 String componentName) {
402 Assert.assertNotNull(substitutionServiceTemplate);
403 int expectedNumberOfNodeTemplates = nics.size() + 1; //1 component node template
404 Map<String, NodeTemplate> substitutionNodeTemplates =
405 substitutionServiceTemplate.getTopology_template().getNode_templates();
406 Assert.assertEquals(expectedNumberOfNodeTemplates, substitutionNodeTemplates.size());
407 NodeTemplate componentNodeTemplate = substitutionNodeTemplates.get(componentName);
408 Assert.assertNotNull(componentNodeTemplate);
409 Assert.assertEquals(ToscaNodeType.VFC_NODE_TYPE_PREFIX + componentName, componentNodeTemplate
411 for (Nic nic : nics) {
412 String nicName = nic.getName();
413 NodeTemplate nicNodeTemplate =
414 substitutionNodeTemplates.get(nicName + PORT_NODE_TEMPLATE_ID_SUFFIX);
415 validateNicNodeTemplate(nicNodeTemplate, componentName);
417 SubstitutionMapping substitutionMappings =
418 substitutionServiceTemplate.getTopology_template().getSubstitution_mappings();
419 validateSubstitutionMappings(substitutionMappings, nics, componentName);
422 private void validateNicNodeTemplate(NodeTemplate nicNodeTemplate,
423 String componentName) {
424 Assert.assertNotNull(nicNodeTemplate);
425 Assert.assertEquals(ToscaNodeType.NETWORK_PORT, nicNodeTemplate.getType());
426 List<Map<String, RequirementAssignment>> nicNodeTemplateRequirements =
427 nicNodeTemplate.getRequirements();
428 Assert.assertNotNull(nicNodeTemplateRequirements);
429 Assert.assertEquals(1, nicNodeTemplateRequirements.size());
430 RequirementAssignment expectedRequirementAssignment = new RequirementAssignment();
431 expectedRequirementAssignment.setCapability(ToscaCapabilityType.NATIVE_NETWORK_BINDABLE);
432 expectedRequirementAssignment.setRelationship(ToscaRelationshipType.NATIVE_NETWORK_BINDS_TO);
433 expectedRequirementAssignment.setNode(componentName);
434 Assert.assertEquals(true, new ToscaAnalyzerServiceImpl()
435 .isRequirementExistInNodeTemplate(nicNodeTemplate, BINDING_REQUIREMENT_ID,
436 expectedRequirementAssignment));
439 private void validateSubstitutionMappings(SubstitutionMapping substitutionMappings,
441 String componentName) {
442 Assert.assertEquals(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE, substitutionMappings
444 Map<String, List<String>> capabilities = substitutionMappings.getCapabilities();
445 validateSubstitutionCapabilities(capabilities, componentName);
446 Map<String, List<String>> requirements = substitutionMappings.getRequirements();
447 validateSubstitutionRequirements(requirements, nics);
450 private void validateSubstitutionCapabilities(Map<String, List<String>> capabilities,
451 String componentName) {
452 List<String> SupportedCapabilities = supportedCapabilities;
453 Assert.assertEquals(SupportedCapabilities.size(), capabilities.size());
454 for (String capability : SupportedCapabilities) {
455 String expectedCapabilityId = capability + "_" + componentName;
456 Assert.assertEquals(true, capabilities.containsKey(expectedCapabilityId));
457 List<String> expectedCapabilityValue = new ArrayList<>(2);
458 expectedCapabilityValue.add(componentName);
459 expectedCapabilityValue.add(capability);
460 List<String> actualCapabilityValue = capabilities.get(expectedCapabilityId);
461 Assert.assertEquals(expectedCapabilityValue, actualCapabilityValue);
465 private void validateSubstitutionRequirements(Map<String, List<String>> requirements,
467 List<String> SupportedRequirements = supportedRequirements;
468 for(Nic nic : nics) {
469 String nicNodeTemplateId = nic.getName() + PORT_NODE_TEMPLATE_ID_SUFFIX;
470 for (String requirement : SupportedRequirements) {
471 String expectedRequirementId = requirement + "_" + nicNodeTemplateId;
472 Assert.assertEquals(true, requirements.containsKey(expectedRequirementId));
473 List<String> expectedRequirementValue = new ArrayList<>(2);
474 expectedRequirementValue.add(nicNodeTemplateId);
475 expectedRequirementValue.add(requirement);
476 List<String> actualRequirementValue = requirements.get(expectedRequirementId);
477 Assert.assertEquals(expectedRequirementValue, actualRequirementValue);
482 private void validateGlobalSubstitutionServiceTemplate(ServiceTemplate
483 globalSubstitutionServiceTemplate,
485 String componentName) {
486 Assert.assertNotNull(globalSubstitutionServiceTemplate);
487 Map<String, NodeType> nodeTypes = globalSubstitutionServiceTemplate.getNode_types();
488 Assert.assertEquals(1, nodeTypes.size());
489 NodeType deploymentFlavorNodeType =
490 nodeTypes.get(ToscaNodeType.MULTIDEPLOYMENTFLAVOR_NODE_TYPE);
491 Assert.assertNotNull(deploymentFlavorNodeType);
492 Map<String, PropertyDefinition> properties = deploymentFlavorNodeType.getProperties();
493 Assert.assertNotNull(properties);
494 PropertyDefinition numCpusProperty = properties.get(GeneratorConstants.NUM_CPUS);
495 Assert.assertNotNull(numCpusProperty);
496 Assert.assertEquals(PropertyType.INTEGER.getDisplayName(), numCpusProperty.getType());
497 Assert.assertEquals(true, numCpusProperty.getRequired());
499 PropertyDefinition diskSizeProperty = properties.get(GeneratorConstants.DISK_SIZE);
500 Assert.assertNotNull(diskSizeProperty);
501 Assert.assertEquals(PropertyType.SCALAR_UNIT_SIZE.getDisplayName(), diskSizeProperty.getType());
502 Assert.assertEquals(true, diskSizeProperty.getRequired());
504 PropertyDefinition memSizeProperty = properties.get(GeneratorConstants.MEM_SIZE);
505 Assert.assertNotNull(memSizeProperty);
506 Assert.assertEquals(PropertyType.SCALAR_UNIT_SIZE.getDisplayName(), memSizeProperty.getType());
507 Assert.assertEquals(true, memSizeProperty.getRequired());
509 List<Map<String, RequirementDefinition>> requirements =
510 deploymentFlavorNodeType.getRequirements();
511 List<String> SupportedRequirements = supportedRequirements;
512 for (Nic nic : nics) {
513 boolean found = false;
514 String nicNodeTemplateId = nic.getName() + PORT_NODE_TEMPLATE_ID_SUFFIX;
515 for (String requirementId : SupportedRequirements) {
516 String expectedRequirementId = requirementId + "_" + nicNodeTemplateId;
517 for (Map<String, RequirementDefinition> requirement : requirements) {
518 if (requirement.containsKey(expectedRequirementId)) {
524 Assert.assertEquals(true, found);
527 Map<String, CapabilityDefinition> capabilities = deploymentFlavorNodeType.getCapabilities();
528 List<String> SupportedCapabilities = supportedCapabilities;
529 for (String capabilityId : SupportedCapabilities) {
530 String expectedCapabilityId = capabilityId + "_" + componentName;
531 Assert.assertEquals (true, capabilities.containsKey(expectedCapabilityId));
535 private Map<String, String> getComponentData() {
536 Map<String, String> componentData = new HashMap<>();
537 componentData.put(COMPONENT_ID, COMPONENT_NAME);
538 return componentData;
541 private Map<String, List<MultiFlavorVfcImage>> getVfcImageData() {
542 Map<String, List<MultiFlavorVfcImage>> imageData = new HashMap<>();
543 List<MultiFlavorVfcImage> images = new ArrayList<>(2);
544 MultiFlavorVfcImage image1 = getImageData(IMAGE_VERSION_1, IMAGE_HASH_1, IMAGE_FILE_NAME_1,
546 MultiFlavorVfcImage image2 = getImageData(IMAGE_VERSION_2, IMAGE_HASH_2, IMAGE_FILE_NAME_2,
550 imageData.put(COMPONENT_ID, images);
554 private Map<String, DeploymentFlavorModel> getDeploymentFlavorData() {
555 Map<String, DeploymentFlavorModel> deploymentFlavorData = new HashMap<>();
556 ComputeFlavor computeFlavor1 = getComputeFlavorData(NUM_CPUS_1, DISK_SIZE_1, MEM_SIZE_1);
557 LicenseFlavor licenseFlavor1 = getLicenseFlavor(FEATURE_GROUP_ID_1);
558 VendorInfo vendorInfo1 = getVendorInfo(MANUFACTURER_REF_1, VENDOR_MODEL_1);
559 DeploymentFlavorModel deploymentFlavor1 = getDeploymentFlavorModel(SP_PART_NUMBER_1,
560 computeFlavor1, vendorInfo1, licenseFlavor1);
562 ComputeFlavor computeFlavor2 = getComputeFlavorData(NUM_CPUS_2, DISK_SIZE_2, MEM_SIZE_2);
563 LicenseFlavor licenseFlavor2 = getLicenseFlavor(FEATURE_GROUP_ID_2);
564 VendorInfo vendorInfo2 = getVendorInfo(MANUFACTURER_REF_2, VENDOR_MODEL_2);
566 DeploymentFlavorModel deploymentFlavor2 = getDeploymentFlavorModel(SP_PART_NUMBER_2,
567 computeFlavor2, vendorInfo2, licenseFlavor2);
569 deploymentFlavorData.put(SP_PART_NUMBER_1, deploymentFlavor1);
570 deploymentFlavorData.put(SP_PART_NUMBER_2, deploymentFlavor2);
571 return deploymentFlavorData;
574 private DeploymentFlavorModel getDeploymentFlavorModel(String spPartNumber, ComputeFlavor
575 computeFlavor, VendorInfo vendorInfo, LicenseFlavor licenseFlavor) {
576 DeploymentFlavorModel deploymentFlavor = new DeploymentFlavorModel();
577 deploymentFlavor.setSp_part_number(spPartNumber);
578 deploymentFlavor.setCompute_flavor(computeFlavor);
579 deploymentFlavor.setLicense_flavor(licenseFlavor);
580 deploymentFlavor.setVendor_info(vendorInfo);
581 return deploymentFlavor;
584 private ComputeFlavor getComputeFlavorData(int numCpus, String diskSize, String memSize ) {
585 ComputeFlavor computeFlavor = new ComputeFlavor();
586 computeFlavor.setNum_cpus(numCpus);
587 computeFlavor.setDisk_size(diskSize);
588 computeFlavor.setMem_size(memSize);
589 return computeFlavor;
592 private VendorInfo getVendorInfo(String manufacturerRefNumber, String deploymentFlavorModel) {
593 VendorInfo vendorInfo = new VendorInfo();
594 vendorInfo.setManufacturer_reference_number(manufacturerRefNumber);
595 vendorInfo.setVendor_model(deploymentFlavorModel);
599 private LicenseFlavor getLicenseFlavor(String featureGroupId) {
600 LicenseFlavor licenseFlavor = new LicenseFlavor();
601 licenseFlavor.setFeature_group_uuid(featureGroupId);
602 return licenseFlavor;
605 private MultiFlavorVfcImage getImageData(String imageVersion, String fileHash,
606 String fileName, String fileHashType) {
607 MultiFlavorVfcImage image = new MultiFlavorVfcImage();
608 image.setSoftware_version(imageVersion);
609 image.setFile_hash(fileHash);
610 image.setFile_hash_type(fileHashType);
611 image.setFile_name(fileName);
615 private Map<String, List<Nic>> getComponentNics() {
616 Map<String, List<Nic>> nicData = new HashMap<>();
617 List<Nic> nicList = new ArrayList<>(2);
618 Nic nic1 = new Nic();
619 nic1.setName("Nic_1");
621 Nic nic2 = new Nic();
622 nic2.setName("Nic_2");
626 nicData.put(COMPONENT_ID, nicList);