From fa9d764ef796f450f5f031a8c2a43ee60ab8b829 Mon Sep 17 00:00:00 2001 From: Dan Timoney Date: Tue, 3 Oct 2017 14:30:51 -0400 Subject: [PATCH] Add ueb-listener unit test Enhance ueb-listener unit test to verify TOSCA parse Change-Id: Iedc675ead3ef69e4fa7151c8c4c500990c0ee6a7 Issue-ID: CCSDK-106 Signed-off-by: Dan Timoney --- .../sli}/northbound/asdcapi/TestAsdcApiApi.java | 2 +- ueb-listener/pom.xml | 9 +++- .../sli/northbound/uebclient/SdncARModel.java | 14 ++--- .../sli/northbound/uebclient/SdncBaseModel.java | 60 ++++++++++----------- .../sli/northbound/uebclient/SdncServiceModel.java | 2 +- .../sli/northbound/uebclient/SdncUebCallback.java | 15 +++--- .../northbound/uebclient/SdncUebConfiguration.java | 17 +++--- .../sli/northbound/uebclient/SdncVFModel.java | 16 +++--- .../northbound/uebclient/TestSdncUebCallback.java | 35 ++++++++++-- ...t_resources_csars_service-NfodService-csar.csar | Bin 0 -> 38938 bytes ueb-listener/src/test/resources/log4j.properties | 30 +++++++++++ .../src/test/resources/ueb-listener.properties | 38 ++++++------- 12 files changed, 151 insertions(+), 87 deletions(-) rename asdcApi/provider/src/test/java/org/onap/{sdnc => ccsdk/sli}/northbound/asdcapi/TestAsdcApiApi.java (99%) create mode 100644 ueb-listener/src/test/resources/incoming/src_test_resources_csars_service-NfodService-csar.csar create mode 100644 ueb-listener/src/test/resources/log4j.properties diff --git a/asdcApi/provider/src/test/java/org/onap/sdnc/northbound/asdcapi/TestAsdcApiApi.java b/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/TestAsdcApiApi.java similarity index 99% rename from asdcApi/provider/src/test/java/org/onap/sdnc/northbound/asdcapi/TestAsdcApiApi.java rename to asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/TestAsdcApiApi.java index c78abc8f7..f65bbc045 100644 --- a/asdcApi/provider/src/test/java/org/onap/sdnc/northbound/asdcapi/TestAsdcApiApi.java +++ b/asdcApi/provider/src/test/java/org/onap/ccsdk/sli/northbound/asdcapi/TestAsdcApiApi.java @@ -19,7 +19,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.sdnc.northbound.asdcapi; +package org.onap.ccsdk.sli.northbound.asdcapi; import org.junit.Before; import org.junit.Test; diff --git a/ueb-listener/pom.xml b/ueb-listener/pom.xml index c00395d6e..68d8fc080 100755 --- a/ueb-listener/pom.xml +++ b/ueb-listener/pom.xml @@ -14,7 +14,8 @@ 0.1.0-SNAPSHOT - 1.1.7-SNAPSHOT + 1.1.32-SNAPSHOT + 1.1.34-SNAPSHOT 2.9.0.pr1 true /opt/app/ueb-listener @@ -31,6 +32,12 @@ ${sdc.client.version} compile + + org.openecomp.sdc.sdc-tosca + sdc-tosca + ${sdc.tosca.version} + compile + org.slf4j slf4j-api diff --git a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncARModel.java b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncARModel.java index 75b19cd2e..8d480a4d1 100644 --- a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncARModel.java +++ b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncARModel.java @@ -8,9 +8,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,24 +23,24 @@ package org.onap.ccsdk.sli.northbound.uebclient; import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames; -import org.openecomp.sdc.toscaparser.api.Metadata; import org.openecomp.sdc.toscaparser.api.NodeTemplate; +import org.openecomp.sdc.toscaparser.api.elements.Metadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SdncARModel extends SdncBaseModel { - + private static final Logger LOG = LoggerFactory .getLogger(SdncARModel.class); public SdncARModel(ISdcCsarHelper sdcCsarHelper, NodeTemplate nodeTemplate) { super(sdcCsarHelper, nodeTemplate); - + // extract metadata - Metadata metadata = nodeTemplate.getMetadata(); + Metadata metadata = nodeTemplate.getMetaData(); addParameter("type", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_TYPE)); - + // extract properties //addParameter("role", extractValue (sdcCsarHelper, nodeTemplate, SdcPropertyNames.PROPERTY_NAME_ROLE)); //addParameter("type", extractValue (nodeTemplate, SdcPropertyNames.PROPERTY_NAME_TYPE)); - wrong location, get from metadata diff --git a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncBaseModel.java b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncBaseModel.java index 32e51599e..6128f288b 100644 --- a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncBaseModel.java +++ b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncBaseModel.java @@ -8,9 +8,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -27,33 +27,33 @@ import java.util.Map; import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames; import org.openecomp.sdc.toscaparser.api.Group; -import org.openecomp.sdc.toscaparser.api.Metadata; import org.openecomp.sdc.toscaparser.api.NodeTemplate; +import org.openecomp.sdc.toscaparser.api.elements.Metadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SdncBaseModel { - + private static final Logger LOG = LoggerFactory .getLogger(SdncBaseModel.class); - + protected String customizationUUID = null; protected String invariantUUID = null; - protected String model_yaml = null; - protected String version = null; - + protected String model_yaml = null; + protected String version = null; + protected Map params = null; protected ISdcCsarHelper sdcCsarHelper = null; public SdncBaseModel() { - + } - + public SdncBaseModel(ISdcCsarHelper sdcCsarHelper, Metadata metadata) { params = new HashMap<>(); this.sdcCsarHelper = sdcCsarHelper; - + // extract service metadata invariantUUID = extractValue(metadata, SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID); addParameter("invariant_uuid",invariantUUID); @@ -70,11 +70,11 @@ public class SdncBaseModel { this.sdcCsarHelper = sdcCsarHelper; // extract nodeTemplate metadata - Metadata metadata = nodeTemplate.getMetadata(); + Metadata metadata = nodeTemplate.getMetaData(); customizationUUID = extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID); addParameter("invariant_uuid", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID)); addParameter("uuid", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_UUID)); - addParameter("version", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VERSION)); + addParameter("version", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VERSION)); } public SdncBaseModel(ISdcCsarHelper sdcCsarHelper, Group group) { @@ -86,9 +86,9 @@ public class SdncBaseModel { Metadata metadata = group.getMetadata(); //customizationUUID = extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VFMODULECUSTOMIZATIONUUID); - returning null customizationUUID = extractValue (metadata, "vfModuleModelCustomizationUUID"); - addParameter("invariant_uuid", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)); - addParameter("uuid", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID)); - addParameter("version", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELVERSION)); + addParameter("invariant_uuid", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELINVARIANTUUID)); + addParameter("uuid", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID)); + addParameter("version", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELVERSION)); } protected void addParameter (String name, String value) { @@ -102,26 +102,26 @@ public class SdncBaseModel { params.put(name, value); } } - + public static void addIntParameter (String name, String value, Map params) { if (value != null && !value.isEmpty()) { params.put(name, value); } } - + public static void addParameter (String name, String value, Map params) { if (value != null && !value.isEmpty()) { params.put(name, "\"" + value + "\""); } } - + protected String extractValue (Metadata metadata, String name) { String value = sdcCsarHelper.getMetadataPropertyValue(metadata, name); if (value != null) { return value; } else { return ""; - } + } } public static String extractValue (ISdcCsarHelper sdcCsarHelper, Metadata metadata, String name) { @@ -130,7 +130,7 @@ public class SdncBaseModel { return value; } else { return ""; - } + } } protected String extractValue (NodeTemplate nodeTemplate, String name) { @@ -241,19 +241,19 @@ public class SdncBaseModel { public void setCustomizationUUID(String customizationUUID) { this.customizationUUID = customizationUUID; } - + public String getSql(String tableName, String model_yaml) { - + StringBuilder sb = new StringBuilder(); sb.append("INSERT into " + tableName + " (customization_uuid, model_yaml, "); - + int paramCount = 0; for (String paramKey : params.keySet()) { paramCount++; sb.append(paramKey); if (paramCount < params.size()) sb.append(", "); } - + sb.append(") values (" + getCustomizationUUID() + ", \"" + model_yaml + "\", "); paramCount = 0; @@ -267,19 +267,19 @@ public class SdncBaseModel { sb.append(");"); return sb.toString(); } - + public static String getSql(String tableName, String keyName, String keyValue, String model_yaml, Map params) { - + StringBuilder sb = new StringBuilder(); sb.append("INSERT into " + tableName + " (" + keyName + ", "); - + int paramCount = 0; for (String paramKey : params.keySet()) { paramCount++; sb.append(paramKey); if (paramCount < params.size()) sb.append(", "); } - + sb.append(") values (" + keyValue + ", "); paramCount = 0; @@ -293,5 +293,5 @@ public class SdncBaseModel { sb.append(");"); return sb.toString(); } - + } diff --git a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncServiceModel.java b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncServiceModel.java index 3df27be6e..d3fd16791 100644 --- a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncServiceModel.java +++ b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncServiceModel.java @@ -23,7 +23,7 @@ package org.onap.ccsdk.sli.northbound.uebclient; import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames; -import org.openecomp.sdc.toscaparser.api.Metadata; +import org.openecomp.sdc.toscaparser.api.elements.Metadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebCallback.java b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebCallback.java index f00d73724..b3c96d9d8 100644 --- a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebCallback.java +++ b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebCallback.java @@ -74,8 +74,8 @@ import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException; import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames; import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory; import org.openecomp.sdc.toscaparser.api.Group; -import org.openecomp.sdc.toscaparser.api.Metadata; import org.openecomp.sdc.toscaparser.api.NodeTemplate; +import org.openecomp.sdc.toscaparser.api.elements.Metadata; import org.openecomp.sdc.utils.ArtifactTypeEnum; import org.openecomp.sdc.utils.DistributionActionResultEnum; import org.openecomp.sdc.utils.DistributionStatusEnum; @@ -238,6 +238,8 @@ public class SdncUebCallback implements INotificationCallback { File incomingDir = null; File archiveDir = null; + LOG.debug("IncomingDirName is {}", incomingDirName); + // Process service level artifacts List artifactList = data.getServiceArtifacts(); @@ -298,12 +300,15 @@ public class SdncUebCallback implements INotificationCallback { public void deployDownloadedFiles(File incomingDir, File archiveDir, INotificationData data) { if (incomingDir == null) { + LOG.debug("incomingDir is null - using {}", config.getIncomingDir()); incomingDir = new File(config.getIncomingDir()); if (!incomingDir.exists()) { incomingDir.mkdirs(); } + } else { + LOG.debug("incomingDir is not null - it is {}", incomingDir.getPath()); } if (archiveDir == null) { @@ -315,6 +320,7 @@ public class SdncUebCallback implements INotificationCallback { } String curFileName = ""; + LOG.debug("Scanning {} - {} for downloaded files", incomingDir.getPath(), incomingDir.toPath()); try (DirectoryStream stream = Files.newDirectoryStream(incomingDir.toPath())) { for (Path file: stream) { curFileName = file.toString(); @@ -533,7 +539,6 @@ public class SdncUebCallback implements INotificationCallback { sdcCsarHelper = factory.getSdcCsarHelper(spoolFile.getAbsolutePath()); } catch (SdcToscaParserException e) { LOG.error("Could not create SDC TOSCA Parser ", e); - factory.close(); return; } @@ -550,7 +555,6 @@ public class SdncUebCallback implements INotificationCallback { insertToscaData(serviceModel.getSql(model_yaml)); } catch (IOException e) { LOG.error("Could not insert Tosca YAML data into the SERVICE_MODEL table ", e); - factory.close(); return; } @@ -693,7 +697,7 @@ public class SdncUebCallback implements INotificationCallback { //String extcp_subnetpool_id = "\"" + SdncBaseModel.extractValue(sdcCsarHelper, match.getLeft(), SdcPropertyNames.PROPERTY_NAME_SUBNETPOOLID) + "\""; // need path to subnetpoolid // extract values from the right "VFC" Node - String vfcCustomizationUuid = "\"" + SdncBaseModel.extractValue(sdcCsarHelper, match.getRight().getMetadata(), "customization_uuid") + "\""; + String vfcCustomizationUuid = "\"" + SdncBaseModel.extractValue(sdcCsarHelper, match.getRight().getMetaData(), "customization_uuid") + "\""; SdncBaseModel.addParameter("vm_type", SdncBaseModel.extractValue(sdcCsarHelper, match.getRight(), SdcPropertyNames.PROPERTY_NAME_VMTYPE), mappingParams); SdncBaseModel.addIntParameter("ipv4_count", SdncBaseModel.extractValue(sdcCsarHelper, match.getRight(), SdcPropertyNames.PROPERTY_NAME_NETWORKASSIGNMENTS_IPV4SUBNETDEFAULTASSIGNMENTS_MINSUBNETSCOUNT), mappingParams); SdncBaseModel.addIntParameter("ipv6_count", SdncBaseModel.extractValue(sdcCsarHelper, match.getRight(), SdcPropertyNames.PROPERTY_NAME_NETWORKASSIGNMENTS_IPV6SUBNETDEFAULTASSIGNMENTS_MINSUBNETSCOUNT), mappingParams); @@ -712,8 +716,7 @@ public class SdncUebCallback implements INotificationCallback { } // VF loop - // Close ASDC TOSCA Parser factory - we are done processing this distribution - factory.close(); + if ((artifact != null) && (data != null)) { LOG.info("Update to SDN-C succeeded"); diff --git a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebConfiguration.java b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebConfiguration.java index d97abacbd..b49a66070 100644 --- a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebConfiguration.java +++ b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncUebConfiguration.java @@ -30,7 +30,6 @@ import java.util.List; import java.util.Properties; import org.openecomp.sdc.api.consumer.IConfiguration; -import org.openecomp.sdc.utils.ArtifactTypeEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -162,16 +161,8 @@ public class SdncUebConfiguration implements IConfiguration{ relevantArtifactTypes = new LinkedList<>(); for (String artifactType : artifactTypes) { - try { - if (ArtifactTypeEnum.valueOf(artifactType) != null) { - relevantArtifactTypes.add(artifactType); - } else { - LOG.warn("Skipping unrecognized artifact type {}", artifactType); - } - } catch (Exception e) { - LOG.warn("Caught exception validating artifact type {}", artifactType, e); - } + relevantArtifactTypes.add(artifactType); } @@ -282,7 +273,11 @@ public class SdncUebConfiguration implements IConfiguration{ @Override public boolean isFilterInEmptyResources() { - // TODO Auto-generated method stub + return false; + } + + @Override + public Boolean isUseHttpsWithDmaap() { return false; } diff --git a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncVFModel.java b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncVFModel.java index deed20cf4..fd71527de 100644 --- a/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncVFModel.java +++ b/ueb-listener/src/main/java/org/onap/ccsdk/sli/northbound/uebclient/SdncVFModel.java @@ -8,9 +8,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,13 +23,13 @@ package org.onap.ccsdk.sli.northbound.uebclient; import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper; import org.openecomp.sdc.tosca.parser.impl.SdcPropertyNames; -import org.openecomp.sdc.toscaparser.api.Metadata; import org.openecomp.sdc.toscaparser.api.NodeTemplate; +import org.openecomp.sdc.toscaparser.api.elements.Metadata; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class SdncVFModel extends SdncBaseModel { - + private static final Logger LOG = LoggerFactory .getLogger(SdncVFModel.class); @@ -38,11 +38,11 @@ public class SdncVFModel extends SdncBaseModel { super(sdcCsarHelper, nodeTemplate); // extract metadata - Metadata metadata = nodeTemplate.getMetadata(); + Metadata metadata = nodeTemplate.getMetaData(); addParameter("name", extractValue(metadata, SdcPropertyNames.PROPERTY_NAME_NAME)); - addParameter("vendor", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_RESOURCEVENDOR)); - addParameter("vendor_version", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_RESOURCEVENDORRELEASE)); - + addParameter("vendor", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_RESOURCEVENDOR)); + addParameter("vendor_version", extractValue (metadata, SdcPropertyNames.PROPERTY_NAME_RESOURCEVENDORRELEASE)); + // extract properties addParameter("ecomp_generated_naming", extractBooleanValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_VNFECOMPNAMING_ECOMPGENERATEDNAMING)); addParameter("naming_policy", extractValue(nodeTemplate, SdcPropertyNames.PROPERTY_NAME_VNFECOMPNAMING_NAMINGPOLICY)); diff --git a/ueb-listener/src/test/java/org/onap/ccsdk/sli/northbound/uebclient/TestSdncUebCallback.java b/ueb-listener/src/test/java/org/onap/ccsdk/sli/northbound/uebclient/TestSdncUebCallback.java index 93fadc989..609d12011 100644 --- a/ueb-listener/src/test/java/org/onap/ccsdk/sli/northbound/uebclient/TestSdncUebCallback.java +++ b/ueb-listener/src/test/java/org/onap/ccsdk/sli/northbound/uebclient/TestSdncUebCallback.java @@ -1,15 +1,25 @@ package org.onap.ccsdk.sli.northbound.uebclient; -import static org.junit.Assert.*; +import static org.mockito.Mockito.mock; + +import java.io.File; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openecomp.sdc.api.IDistributionClient; import org.openecomp.sdc.api.notification.INotificationData; - -import static org.mockito.Mockito.mock; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class TestSdncUebCallback { + + private static final Logger LOG = LoggerFactory + .getLogger(TestSdncUebCallback.class); SdncUebConfiguration config; @Before @@ -17,6 +27,25 @@ public class TestSdncUebCallback { config = new SdncUebConfiguration("src/test/resources"); } + @After + public void tearDown() throws Exception { + // Move anything in archive back to incoming + String curFileName = ""; + + Path incomingPath = new File(config.getIncomingDir()).toPath(); + File archiveDir = new File(config.getArchiveDir()); + try (DirectoryStream stream = Files.newDirectoryStream(archiveDir.toPath())) { + for (Path file: stream) { + Files.move(file, incomingPath.resolve(file.getFileName()), StandardCopyOption.REPLACE_EXISTING); + } + } catch (Exception x) { + // IOException can never be thrown by the iteration. + // In this snippet, it can only be thrown by newDirectoryStream. + LOG.warn("Cannot replace spool file {}", curFileName, x); + } + + } + @Test public void test() { diff --git a/ueb-listener/src/test/resources/incoming/src_test_resources_csars_service-NfodService-csar.csar b/ueb-listener/src/test/resources/incoming/src_test_resources_csars_service-NfodService-csar.csar new file mode 100644 index 0000000000000000000000000000000000000000..329076a15ebffe0d7550dbf0fbd0c9a7b7710267 GIT binary patch literal 38938 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ϑ#dwIrfZUBK8g*#9Q+pNwv4ZydqMS~i+Bv~P}JF|s!#m9 z+$EH{ln{;|9AwFWf*}InH%T!j9!p(-qdYoeNaHG(-9}{5pCf%-tmQ8!9^>ykek#PtqUKxNcPA>*f{R!N;1CMSZzG+4q-Va|q&k zazdd0!P^)>-ZEf2Za}e%9mEa-gTbKD!$bOb^EO!?;B2|+K_DYw|5nn#0EtFNXFp#l zt)Gsnl#z*+wxPYAv6Z&5g^3x${FQZC1ZcHhXP1z1Z zzE&~s7MK;F?HD_Jl$dNWyI^K>z-tdgnLvoY! zHMSybc9h(XLEfZ^)EaG*Ds{GE{7mDncV{Bur~yyuuUk4n|Ar9+es%S?;{0szLill!K%OrkC4V=m zKlp#;@T=#9Jl-Q^8#bx-@(#HFHutdobjV`|QZTtm7E!-pyJKj%9iQBBB}E{c6nteX z{)TD!=Xhj04|4NPa)CF=DfWNo@vECcZf3XYz^wQkoQ2~C)PMm50j=6NKsZ3#V-iTC F{{SyWDQo}$ literal 0 HcmV?d00001 diff --git a/ueb-listener/src/test/resources/log4j.properties b/ueb-listener/src/test/resources/log4j.properties new file mode 100644 index 000000000..71849c3db --- /dev/null +++ b/ueb-listener/src/test/resources/log4j.properties @@ -0,0 +1,30 @@ +### +# ============LICENSE_START======================================================= +# openECOMP : SDN-C +# ================================================================================ +# Copyright (C) 2017 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +### + +log4j.rootLogger=DEBUG,CONSOLE + +# CONSOLE is set to be a ConsoleAppender using a PatternLayout. +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.Threshold=DEBUG +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern=%p %d{yyyy-MM-dd HH:mm:ss.SSS Z} %c{1} - %m%n + + diff --git a/ueb-listener/src/test/resources/ueb-listener.properties b/ueb-listener/src/test/resources/ueb-listener.properties index 7855b2116..548cc4c45 100755 --- a/ueb-listener/src/test/resources/ueb-listener.properties +++ b/ueb-listener/src/test/resources/ueb-listener.properties @@ -1,19 +1,19 @@ -org.openecomp.sdnc.uebclient.asdc-address=localhost:1234 -org.openecomp.sdnc.uebclient.consumer-group=ccsdk1 -org.openecomp.sdnc.uebclient.consumer-id=localhost_ccsdk1 -org.openecomp.sdnc.uebclient.environment-name=UNITTEST -org.openecomp.sdnc.uebclient.password=123456 -org.openecomp.sdnc.uebclient.user=test -org.openecomp.sdnc.uebclient.sdnc-user=test -org.openecomp.sdnc.uebclient.sdnc-passwd=test -org.openecomp.sdnc.uebclient.asdc-api-base-url=http://localhost:8282/restconf/operations/ -org.openecomp.sdnc.uebclient.asdc-api-namespace=org:onap:ccsdk -org.openecomp.sdnc.uebclient.spool.incoming=src/test/resources/incoming -org.openecomp.sdnc.uebclient.spool.archive=src/test/resources/archive -org.openecomp.sdnc.uebclient.polling-interval=30 -org.openecomp.sdnc.uebclient.polling-timeout=15 -org.openecomp.sdnc.uebclient.relevant-artifact-types=YANG_XML,VF_LICENSE,TOSCA_TEMPLATE,TOSCA_CSAR,UCPE_LAYER_2_CONFIGURATION -org.openecomp.sdnc.uebclient.activate-server-tls-auth=false -org.openecomp.sdnc.uebclient.keystore-path= -org.openecomp.sdnc.uebclient.keystore-password= -org.openecomp.sdnc.uebclient.xslt-path-list=src/main/resources/removeNs.xslt,src/main/resources/normalizeTagNames.xslt +org.onap.ccsdk.sli.northbound.uebclient.asdc-address=localhost:1234 +org.onap.ccsdk.sli.northbound.uebclient.consumer-group=ccsdk1 +org.onap.ccsdk.sli.northbound.uebclient.consumer-id=localhost_ccsdk1 +org.onap.ccsdk.sli.northbound.uebclient.environment-name=UNITTEST +org.onap.ccsdk.sli.northbound.uebclient.password=123456 +org.onap.ccsdk.sli.northbound.uebclient.user=test +org.onap.ccsdk.sli.northbound.uebclient.sdnc-user=test +org.onap.ccsdk.sli.northbound.uebclient.sdnc-passwd=test +org.onap.ccsdk.sli.northbound.uebclient.asdc-api-base-url=http://localhost:8282/restconf/operations/ +org.onap.ccsdk.sli.northbound.uebclient.asdc-api-namespace=org:onap:ccsdk +org.onap.ccsdk.sli.northbound.uebclient.spool.incoming=src/test/resources/incoming +org.onap.ccsdk.sli.northbound.uebclient.spool.archive=src/test/resources/archive +org.onap.ccsdk.sli.northbound.uebclient.polling-interval=30 +org.onap.ccsdk.sli.northbound.uebclient.polling-timeout=15 +org.onap.ccsdk.sli.northbound.uebclient.relevant-artifact-types=YANG_XML,VF_LICENSE,TOSCA_TEMPLATE,TOSCA_CSAR,UCPE_LAYER_2_CONFIGURATION +org.onap.ccsdk.sli.northbound.uebclient.activate-server-tls-auth=false +org.onap.ccsdk.sli.northbound.uebclient.keystore-path= +org.onap.ccsdk.sli.northbound.uebclient.keystore-password= +org.onap.ccsdk.sli.northbound.uebclient.xslt-path-list= \ No newline at end of file -- 2.16.6