From 8a2ddc31c576e4a8a39e01bfe1e0fe7631e6cdf2 Mon Sep 17 00:00:00 2001 From: "Berezin, Chaya" Date: Thu, 25 Jan 2018 17:36:54 +0200 Subject: [PATCH] Support CR type Issue-ID: SDC-965 Change-Id: Id87923f86ed402f7669a29f612aa3b1a9eb60832 Signed-off-by: Berezin, Chaya --- .../openecomp/sdc/tosca/parser/impl/SdcTypes.java | 4 +-- .../sdc/impl/SdcToscaParserBasicTest.java | 2 ++ .../sdc/impl/ToscaParserMetadataTest.java | 11 +++++++ .../sdc/impl/ToscaParserNodeTemplateTest.java | 33 +++++++++++++++++++++ .../csars/service-CrTestService-csar.csar | Bin 0 -> 32794 bytes 5 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/csars/service-CrTestService-csar.csar diff --git a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcTypes.java b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcTypes.java index 03d61a6..aeb4ee0 100644 --- a/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcTypes.java +++ b/src/main/java/org/openecomp/sdc/tosca/parser/impl/SdcTypes.java @@ -26,11 +26,11 @@ import java.util.stream.Collectors; public enum SdcTypes { - CP("CP"), VL("VL"), VF("VF"), VFC("VFC"), PNF("PNF"), SERVICE("Service"), CVFC("CVFC"), SERVICE_PROXY("Service Proxy"), CONFIGURATION("Configuration"); + CP("CP"), VL("VL"), VF("VF"), CR("CR"), VFC("VFC"), PNF("PNF"), SERVICE("Service"), CVFC("CVFC"), SERVICE_PROXY("Service Proxy"), CONFIGURATION("Configuration"); private String value; - private static List complexTypes = Arrays.asList(VF, PNF, SERVICE, CVFC).stream().map(SdcTypes::getValue).collect(Collectors.toList()); + private static List complexTypes = Arrays.asList(VF, PNF, CR, SERVICE, CVFC).stream().map(SdcTypes::getValue).collect(Collectors.toList()); private SdcTypes(String value) { this.value = value; diff --git a/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java b/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java index 74e52db..1695671 100644 --- a/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java +++ b/src/test/java/org/openecomp/sdc/impl/SdcToscaParserBasicTest.java @@ -35,6 +35,7 @@ public abstract class SdcToscaParserBasicTest { static ISdcCsarHelper resolveGetInputCsarQA; static ISdcCsarHelper resolveReqsCapsCsarQA; static ISdcCsarHelper portMirroring; + static ISdcCsarHelper csarHelperServiceWithCrs; static Map>> fdntCsarHelper_Data; @@ -57,6 +58,7 @@ public abstract class SdcToscaParserBasicTest { QAServiceForToscaParserTests = getCsarHelper("csars/service-ServiceForToscaParserTests-csar.csar"); resolveReqsCapsCsarQA = getCsarHelper("csars/service-sunny-flow2.csar"); portMirroring = getCsarHelper("csars/service-PortMirroring.csar"); + csarHelperServiceWithCrs = getCsarHelper("csars/service-CrTestService-csar.csar"); fdntCsarHelper_Data = new HashMap>>(){ { diff --git a/src/test/java/org/openecomp/sdc/impl/ToscaParserMetadataTest.java b/src/test/java/org/openecomp/sdc/impl/ToscaParserMetadataTest.java index 4e5c9bc..8af3db0 100644 --- a/src/test/java/org/openecomp/sdc/impl/ToscaParserMetadataTest.java +++ b/src/test/java/org/openecomp/sdc/impl/ToscaParserMetadataTest.java @@ -59,6 +59,17 @@ public class ToscaParserMetadataTest extends SdcToscaParserBasicTest { } //endregion + @Test + public void GetServiceNodeTemplateMetadataTypeCR() { + NodeTemplate nodeTemplate = csarHelperServiceWithCrs.getServiceNodeTemplateByNodeName("chaya best cr 0"); + Metadata nodeTemplateMetadata = csarHelperServiceWithCrs.getNodeTemplateMetadata(nodeTemplate); + assertNotNull(nodeTemplateMetadata); + assertEquals(nodeTemplateMetadata.getValue("resourceVendorModelNumber"), ""); + assertEquals(nodeTemplateMetadata.getValue("type"), "CR"); + assertEquals(nodeTemplateMetadata.getValue("name"), "chaya best cr"); + assertEquals(nodeTemplateMetadata.getValue("version"), "0.1"); + } + //region getConformanceLevel @Test public void testSunnyGetConformanceLevel() { diff --git a/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java b/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java index 7cb99e3..04675b4 100644 --- a/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java +++ b/src/test/java/org/openecomp/sdc/impl/ToscaParserNodeTemplateTest.java @@ -6,6 +6,8 @@ import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.util.*; import static org.hamcrest.CoreMatchers.is; + +import com.google.common.collect.ImmutableMap; import org.apache.commons.lang3.tuple.Pair; import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.openecomp.sdc.tosca.parser.impl.FilterType; @@ -934,6 +936,37 @@ public class ToscaParserNodeTemplateTest extends SdcToscaParserBasicTest { propertyAsObject = resolveGetInputCsarQA.getNodeTemplatePropertyAsObject(vfcs.get(0), "port_pd01_port_ip_requirements"); assertEquals( ((ArrayList)propertyAsObject).get(1), null); } + + @Test + public void testServiceNodeTemplateByCRType() { + List serviceCRList = csarHelperServiceWithCrs.getServiceNodeTemplateBySdcType(SdcTypes.CR); + assertNotNull(serviceCRList); + assertEquals(serviceCRList.size(), 2); + assertEquals(serviceCRList.get(0).getName(), "chaya best cr 1"); + assertEquals(serviceCRList.get(0).getType(), "org.openecomp.resource.cr.ChayaBestCr"); + assertEquals(serviceCRList.get(1).getName(), "chaya best cr 0"); + assertEquals(serviceCRList.get(1).getType(), "org.openecomp.resource.cr.ChayaBestCr"); + } + + @Test + public void testGetCPOfCRNodeTemplate() { + NodeTemplate nodeTemplate = csarHelperServiceWithCrs.getServiceNodeTemplateByNodeName("chaya best cr 0"); + List crCpChildren = csarHelperServiceWithCrs.getNodeTemplateBySdcType(nodeTemplate, SdcTypes.CP); + assertEquals(crCpChildren.get(0).getName(), "ContrailPort 0"); + assertEquals(crCpChildren.get(0).getMetaData().getValue("type"), SdcTypes.CP.name()); + } + + @Test + public void testServiceCRInstanceProps() { + List serviceCrList = csarHelperServiceWithCrs.getServiceNodeTemplateBySdcType(SdcTypes.CR); + assertNotNull(serviceCrList); + NodeTemplate crTemplate = serviceCrList.get(0); + assertNotNull(crTemplate); + assertEquals(crTemplate.getPropertyValue("nf_naming").toString(), ImmutableMap.of("ecomp_generated_naming", "true").toString()); + assertEquals(crTemplate.getPropertyValue("contrailport0_virtual_network"), "chaya"); + } + + } diff --git a/src/test/resources/csars/service-CrTestService-csar.csar b/src/test/resources/csars/service-CrTestService-csar.csar new file mode 100644 index 0000000000000000000000000000000000000000..445fd2b3282ead3328b031483b2fdaab2ca80b54 GIT binary patch literal 32794 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 toc~SU|2M?nGvM!)=1<{%`M4$ke*h+G^}qlC literal 0 HcmV?d00001 -- 2.16.6