X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=openecomp-be%2Flib%2Fopenecomp-tosca-lib%2Fsrc%2Ftest%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Ftosca%2Fdatatypes%2FToscaModelTest.java;h=4ad4d2b53ed1d16e7897bdad021d59786eb8409f;hb=bdeb28f273da2494d7eeabbb5329222dfd168e3b;hp=3938d8f427175aa5839ae2bfc348ba121d367697;hpb=6d7284b5bcbbf6f57b843c5f30a50e9387b5ece8;p=sdc.git diff --git a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java index 3938d8f427..4ad4d2b53e 100644 --- a/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java +++ b/openecomp-be/lib/openecomp-tosca-lib/src/test/java/org/openecomp/sdc/tosca/datatypes/ToscaModelTest.java @@ -29,11 +29,11 @@ import org.onap.sdc.tosca.datatypes.model.ArtifactType; import org.onap.sdc.tosca.datatypes.model.AttributeDefinition; import org.onap.sdc.tosca.datatypes.model.CapabilityAssignment; import org.onap.sdc.tosca.datatypes.model.CapabilityDefinition; +import org.onap.sdc.tosca.datatypes.model.CapabilityFilter; import org.onap.sdc.tosca.datatypes.model.Constraint; import org.onap.sdc.tosca.datatypes.model.Directive; import org.onap.sdc.tosca.datatypes.model.Implementation; import org.onap.sdc.tosca.datatypes.model.Import; -import org.onap.sdc.tosca.datatypes.model.InterfaceDefinition; import org.onap.sdc.tosca.datatypes.model.InterfaceDefinitionTemplate; import org.onap.sdc.tosca.datatypes.model.InterfaceDefinitionType; import org.onap.sdc.tosca.datatypes.model.InterfaceType; @@ -51,6 +51,7 @@ import org.onap.sdc.tosca.datatypes.model.RequirementDefinition; import org.onap.sdc.tosca.datatypes.model.ServiceTemplate; import org.onap.sdc.tosca.datatypes.model.SubstitutionMapping; import org.onap.sdc.tosca.datatypes.model.TopologyTemplate; +import org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignmentExt; import org.onap.sdc.tosca.datatypes.model.heatextend.ParameterDefinitionExt; import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; import org.onap.sdc.tosca.services.YamlUtil; @@ -63,6 +64,9 @@ public class ToscaModelTest { public static final String FIRST_NODE_TEMPLATE = "firstNodeTemplate"; public static final String REQ1 = "req1"; public static final String REQ2 = "req2"; + public static final String SERVICE_FILTER_TOSCA_ID = "{get_input=inParam1}"; + public static final String VMD_NAME = "vmdName"; + public static final String DIRECTOR = "director"; private YamlUtil yamlUtil = new YamlUtil(); private ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); private static final String INTERFACE_ID = "inter_1"; @@ -82,6 +86,8 @@ public class ToscaModelTest { private static final String DEPENDENCY_NAME = "script1.sh"; private static final String STRING_TYPE = "string"; private static final String ST_WITH_SERVICE_FILTER = "/serviceTemplateWithServiceFilter.yaml"; + private static final String SUBSTITUTION_MAPPING = "/serviceTemplateWithSubstitutionMapping.yaml"; + private static final String SUBSTITUTION_MAPPING_WITH_FILTER = "/substitutionMappingWithFilter.yaml"; @Test public void testServiceTemplateJavaToYaml() { @@ -90,6 +96,7 @@ public class ToscaModelTest { metadata.put("Template_author", "OPENECOMP"); metadata.put(ToscaConstants.ST_METADATA_TEMPLATE_NAME, "Test"); metadata.put("Template_version", "1.0.0"); + serviceTemplate.setMetadata(metadata); serviceTemplate.setTosca_definitions_version("tosca_simple_yaml_1_0_0"); serviceTemplate.setDescription("testing desc tosca service template"); @@ -174,13 +181,13 @@ public class ToscaModelTest { nodeType.setRequirements(reqList); - Map capsDef = new HashMap<>(); CapabilityDefinition capdef = new CapabilityDefinition(); capdef.setType("tosca.cap"); List vvSource = new ArrayList<>(); vvSource.add("node1"); vvSource.add("node2"); capdef.setValid_source_types(vvSource); + Map capsDef = new HashMap<>(); capsDef.put("cap1", capdef); nodeType.setCapabilities(capsDef); @@ -190,7 +197,6 @@ public class ToscaModelTest { TopologyTemplate topologyTemplate = new TopologyTemplate(); topologyTemplate.setDescription("topologi template descroption"); - Map inputs = new HashMap<>(); ParameterDefinition paramDef = new ParameterDefinition(); paramDef.setType(PropertyType.STRING.getDisplayName()); paramDef.setDescription("desc"); @@ -205,10 +211,10 @@ public class ToscaModelTest { paramConstraint.add(paramConst1); paramConstraint.add(paramConst2); paramDef.setConstraints(paramConstraint); + Map inputs = new HashMap<>(); inputs.put("inParam1", paramDef); topologyTemplate.setInputs(inputs); - Map nodeTemplates = new HashMap<>(); NodeTemplate nodeTemplate = new NodeTemplate(); nodeTemplate.setType("nodeTypeRef"); List directives = new ArrayList<>(); @@ -222,6 +228,7 @@ public class ToscaModelTest { Map nodeTemplateAtts = new HashMap<>(); nodeTemplateAtts.put("att1", "att1Val"); nodeTemplateAtts.put("att2", "{ get_input: my_mysql_rootpw }"); + Map nodeTemplates = new HashMap<>(); nodeTemplate.setAttributes(nodeTemplateAtts); @@ -233,7 +240,6 @@ public class ToscaModelTest { reqAssOccurrences[0] = 1; reqAssOccurrences[1] = 2; reqAssignment1.setOccurrences(reqAssOccurrences); - NodeFilter reqNodeFilter = new NodeFilter(); List propConstraint1 = new ArrayList<>(); Constraint propConst1 = new Constraint(); propConst1.setGreater_or_equal(9); @@ -250,6 +256,7 @@ public class ToscaModelTest { propsMap.put("propName1", propConstraint1); propsMap.put("propName2", propConstraint2); nodeFilterProp.add(propsMap); + NodeFilter reqNodeFilter = new NodeFilter(); reqNodeFilter.setProperties(nodeFilterProp); reqAssignment1.setNode_filter(reqNodeFilter); @@ -265,7 +272,6 @@ public class ToscaModelTest { nodeTemplate.getRequirements().add(nodeTemplateRequirement1); nodeTemplate.getRequirements().add(nodeTemplateRequirement2); - Map nodeTemplateCapability = new HashMap<>(); CapabilityAssignment capAss = new CapabilityAssignment(); Map capProps = new HashMap<>(); capProps.put("num_cpus", "{ get_input: cpus }"); @@ -273,10 +279,10 @@ public class ToscaModelTest { Map capAtts = new HashMap<>(); capAtts.put("num_cpus", "66"); capAss.setAttributes(capAtts); + Map nodeTemplateCapability = new HashMap<>(); nodeTemplateCapability.put("cap1", capAss); nodeTemplate.setCapabilities(nodeTemplateCapability); - NodeFilter nodeTemplateNodeFilter = new NodeFilter(); List>> nodeFilterProp2 = new ArrayList<>(); Map> propsMap2 = new HashMap<>(); Constraint c1 = new Constraint(); @@ -285,6 +291,7 @@ public class ToscaModelTest { consList.add(c1); propsMap2.put("test1", consList); nodeFilterProp2.add(propsMap2); + NodeFilter nodeTemplateNodeFilter = new NodeFilter(); nodeTemplateNodeFilter.setProperties(nodeFilterProp2); nodeTemplate.setNode_filter(nodeTemplateNodeFilter); nodeTemplates.put("firatNodeTemplate", nodeTemplate); @@ -293,10 +300,10 @@ public class ToscaModelTest { SubstitutionMapping subMap = new SubstitutionMapping(); subMap.setNode_type("myNodeType.node"); Map> mapCapabilities = new HashMap<>(); - List NodeCap = new ArrayList<>(); - NodeCap.add("database"); - NodeCap.add("database_endpoint"); - mapCapabilities.put("database_endpoint", NodeCap); + List nodeCap = new ArrayList<>(); + nodeCap.add("database"); + nodeCap.add("database_endpoint"); + mapCapabilities.put("database_endpoint", nodeCap); subMap.setCapabilities(mapCapabilities); topologyTemplate.setSubstitution_mappings(subMap); serviceTemplate.setTopology_template(topologyTemplate); @@ -309,8 +316,7 @@ public class ToscaModelTest { @Test public void testYamlToServiceTemplateObj() throws IOException { - ServiceTemplate serviceTemplateFromYaml = - getServiceTemplate(BASE_DIR + ST); + ServiceTemplate serviceTemplateFromYaml = getServiceTemplate(BASE_DIR + ST); Assert.assertNotNull(serviceTemplateFromYaml); } @@ -321,7 +327,7 @@ public class ToscaModelTest { InterfaceType expectedInterfaceType = createInterfaceType(); - Map interfaceTypes = DataModelUtil.getInterfaceTypes(serviceTemplateWithOperation); + Map interfaceTypes = serviceTemplateWithOperation.getNormalizeInterfaceTypes(); Assert.assertEquals(1, interfaceTypes.size()); InterfaceType actualInterfaceType = interfaceTypes.get(INTERFACE_ID); Assert.assertEquals(expectedInterfaceType, actualInterfaceType); @@ -334,9 +340,10 @@ public class ToscaModelTest { ServiceTemplate serviceTemplateWithOperation = getServiceTemplate(BASE_DIR + ST_WITH_OPERATIONS); OperationDefinition operationDefinition = createOperationDefinition(); - - DataModelUtil.addInterfaceOperation(serviceTemplateWithInterface, INTERFACE_ID, OPERATION_START, - operationDefinition); + InterfaceType normalizeInterfaceType = + serviceTemplateWithInterface.getNormalizeInterfaceTypes().get(INTERFACE_ID); + normalizeInterfaceType.addOperation(OPERATION_START, operationDefinition); + serviceTemplateWithInterface.addInterfaceType(INTERFACE_ID, normalizeInterfaceType); String expectedServiceTemplate = yamlUtil.objectToYaml(serviceTemplateWithOperation); String actualServiceTemplate = yamlUtil.objectToYaml(serviceTemplateWithInterface); Assert.assertEquals(expectedServiceTemplate, actualServiceTemplate); @@ -348,7 +355,7 @@ public class ToscaModelTest { ServiceTemplate serviceTemplateWithOperation = getServiceTemplate(BASE_DIR + ST_WITH_OPERATIONS); InterfaceType interfaceType = createInterfaceType(); - Optional interfaceAsObj = DataModelUtil.convertInterfaceTypeToObj(interfaceType); + Optional interfaceAsObj = interfaceType.convertInterfaceTypeToToscaObj(); Assert.assertTrue(interfaceAsObj.isPresent()); Map interfaceTypes = new HashMap<>(); @@ -363,14 +370,10 @@ public class ToscaModelTest { @Test public void testObjToInterfaceTypeConversion() throws IOException, ReflectiveOperationException { ServiceTemplate serviceTemplateWithOperation = getServiceTemplate(BASE_DIR + ST_WITH_OPERATIONS); - Map interfaceTypes = serviceTemplateWithOperation.getInterface_types(); - Object interfaceObj = interfaceTypes.get(INTERFACE_ID); - Optional actualInterfaceType = - DataModelUtil.convertObjToInterfaceType(INTERFACE_ID, interfaceObj); - - Assert.assertTrue(actualInterfaceType.isPresent()); + Map interfaceTypes = serviceTemplateWithOperation.getNormalizeInterfaceTypes(); + InterfaceType actualInterfaceType = interfaceTypes.get(INTERFACE_ID); InterfaceType expectedInterfaceType = createInterfaceType(); - Assert.assertEquals(expectedInterfaceType, actualInterfaceType.get()); + Assert.assertEquals(expectedInterfaceType, actualInterfaceType); } @Test @@ -380,33 +383,22 @@ public class ToscaModelTest { Map interfaces = nodeTypeWithInterface.getInterfaces(); Object interfaceObj = interfaces.get(INTERFACE_ID); - Optional actualInterfaceDefinition = DataModelUtil - .convertObjToInterfaceDefinition( - INTERFACE_ID, interfaceObj, - InterfaceDefinitionType.class); - - Assert.assertTrue(actualInterfaceDefinition.isPresent()); - + InterfaceDefinitionType actualInterfaceDefinition = new InterfaceDefinitionType(interfaceObj); InterfaceDefinitionType expectedInterfaceDefinitionType = createInterfaceDefinitionType(); - Assert.assertEquals(expectedInterfaceDefinitionType, actualInterfaceDefinition.get()); + Assert.assertEquals(expectedInterfaceDefinitionType, actualInterfaceDefinition); } @Test - public void testObjToInterfaceDefinitionTemplateConversion() throws IOException, ReflectiveOperationException { + public void testObjToInterfaceDefinitionTemplateConversion() throws IOException { ServiceTemplate serviceTemplateWithInterfaceDef = getServiceTemplate(BASE_DIR + ST_WITH_INTERFACE_DEF); NodeTemplate nodeTemplateWithInterface = DataModelUtil.getNodeTemplate(serviceTemplateWithInterfaceDef, NODE_TEMPLATE_ID); Map interfaces = nodeTemplateWithInterface.getInterfaces(); Object interfaceObj = interfaces.get(INTERFACE_ID); - Optional actualInterfaceDefinition = DataModelUtil - .convertObjToInterfaceDefinition( - INTERFACE_ID, interfaceObj, - InterfaceDefinitionTemplate.class); - - Assert.assertTrue(actualInterfaceDefinition.isPresent()); + InterfaceDefinitionTemplate actualInterfaceDefinition = new InterfaceDefinitionTemplate(interfaceObj); InterfaceDefinitionTemplate expectedInterfaceDefinitionTemplate = createInterfaceDefinitionTemplate(); - Assert.assertEquals(expectedInterfaceDefinitionTemplate, actualInterfaceDefinition.get()); + Assert.assertEquals(expectedInterfaceDefinitionTemplate, actualInterfaceDefinition); } @Test @@ -434,18 +426,67 @@ public class ToscaModelTest { DataModelUtil.getNodeTemplateRequirements(firstNodeTemplate); Object req1 = nodeTemplateRequirements.get(REQ1); - Assert.assertEquals(true, req1 instanceof org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment); - Assert.assertNotNull(((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment)req1).getService_filter()); + Assert.assertTrue(req1 instanceof RequirementAssignmentExt); + Assert.assertNotNull(((RequirementAssignmentExt) req1).getService_filter()); + List>> properties = + ((RequirementAssignmentExt) req1).getService_filter().getProperties(); + Assert.assertNotNull(properties); + List vmdNameConstrain = properties.get(0).get(VMD_NAME); + Assert.assertNotNull(vmdNameConstrain); + Assert.assertNotNull(vmdNameConstrain.get(0).getEqual()); + + List> capabilities = + ((RequirementAssignmentExt) req1).getService_filter().getCapabilities(); + Assert.assertNotNull(capabilities); + CapabilityFilter capabilityFilter = capabilities.get(0).get(DIRECTOR); + Assert.assertNotNull(capabilityFilter); + Assert.assertNotNull(capabilityFilter.getProperties()); + Object req2 = nodeTemplateRequirements.get(REQ2); - Assert.assertEquals(true, req2 instanceof org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment); - Assert.assertNotNull(((org.onap.sdc.tosca.datatypes.model.extension.RequirementAssignment)req2).getService_filter()); + Assert.assertTrue(req2 instanceof RequirementAssignmentExt); + Assert.assertNotNull(((RequirementAssignmentExt) req2).getService_filter()); + Object toscaId = ((RequirementAssignmentExt) req2).getService_filter().getTosca_id(); + Assert.assertNotNull(toscaId); + Assert.assertEquals(SERVICE_FILTER_TOSCA_ID, toscaId.toString()); + String serviceTemplateYaml = toscaExtensionYamlUtil.objectToYaml(serviceTemplateWithServiceFilter); Assert.assertNotNull(serviceTemplateYaml); } + @Test + public void testSubstitutionMapping() throws IOException { + final ServiceTemplate serviceTemplate = getServiceTemplateExt(BASE_DIR + SUBSTITUTION_MAPPING); + final SubstitutionMapping substitutionMappings = DataModelUtil.getSubstitutionMappings(serviceTemplate); + Assert.assertEquals("myNodeType.node", substitutionMappings.getNode_type()); + Assert.assertNotNull(substitutionMappings.getCapabilities()); + Assert.assertEquals(1,substitutionMappings.getCapabilities().size()); + Assert.assertNotNull(substitutionMappings.getRequirements()); + Assert.assertEquals(1,substitutionMappings.getRequirements().size()); + Assert.assertNull(substitutionMappings.getSubstitution_filter()); + } + + @Test + public void testSubstitutionMappingWithFilter() throws IOException { + final ServiceTemplate serviceTemplate = getServiceTemplateExt(BASE_DIR + SUBSTITUTION_MAPPING_WITH_FILTER); + + final SubstitutionMapping substitutionMappings = DataModelUtil.getSubstitutionMappings(serviceTemplate); + Assert.assertEquals("myNodeType.node", substitutionMappings.getNode_type()); + Assert.assertNotNull(substitutionMappings.getCapabilities()); + Assert.assertEquals(1,substitutionMappings.getCapabilities().size()); + Assert.assertNotNull(substitutionMappings.getRequirements()); + Assert.assertEquals(1,substitutionMappings.getRequirements().size()); + final NodeFilter substitutionFilter = substitutionMappings.getSubstitution_filter(); + Assert.assertNotNull(substitutionFilter); + Assert.assertNotNull(substitutionFilter.getProperties()); + Assert.assertEquals(2,substitutionFilter.getProperties().size()); + final List vendorFilter = substitutionFilter.getProperties().get(0).get("vendor"); + Assert.assertNotNull(vendorFilter); + Assert.assertNotNull(vendorFilter.get(0).getEqual()); + } + private ServiceTemplate getServiceTemplate(String inputPath) throws IOException { try (InputStream yamlFile = yamlUtil.loadYamlFileIs(inputPath)) { return yamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);