From b9ed86210c28d251c7503b9b0a5b543d957614e8 Mon Sep 17 00:00:00 2001 From: Rafal Wrzesniak Date: Thu, 30 Sep 2021 12:08:03 +0200 Subject: Adds handling CM provisioning messages Adds config, consumer and changes to run it in MountpointRegistrar Issue-ID: CCSDK-3464 Signed-off-by: Rafal Wrzesniak Change-Id: I800db7082dc4a84d73ac9e5dffd90c2f3c46ca82 --- .../test/TestDMaaPCMVESMsgConsumer.java | 82 +++++++++++++++++++ .../test/TestDMaaPVESMsgConsumerMain.java | 4 + .../test/TestProvisioningConfig.java | 95 ++++++++++++++++++++++ .../src/test/resources/msgs/cm_invalid.json | 49 +++++++++++ .../provider/src/test/resources/msgs/cm_valid.json | 49 +++++++++++ .../src/test/resources/msgs/not_a_json.json | 10 +++ 6 files changed, 289 insertions(+) create mode 100644 sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPCMVESMsgConsumer.java create mode 100644 sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestProvisioningConfig.java create mode 100644 sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_invalid.json create mode 100644 sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_valid.json create mode 100644 sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/not_a_json.json (limited to 'sdnr/wt/mountpoint-registrar/provider/src/test') diff --git a/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPCMVESMsgConsumer.java b/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPCMVESMsgConsumer.java new file mode 100644 index 000000000..0cd7f0228 --- /dev/null +++ b/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPCMVESMsgConsumer.java @@ -0,0 +1,82 @@ +/* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2021 Samsung Electronics 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========================================================================== + */ + +package org.onap.ccsdk.features.sdnr.wt.mountpointregistrar.test; + +import com.fasterxml.jackson.core.JsonProcessingException; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.mountpointregistrar.impl.DMaaPCMVESMsgConsumer; +import org.onap.ccsdk.features.sdnr.wt.mountpointregistrar.impl.InvalidMessageException; + +import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Paths; +import static org.junit.Assert.fail; + +public class TestDMaaPCMVESMsgConsumer { + + private static final String CONFIGURATION_FILE = "cm_test.properties"; + private DMaaPCMVESMsgConsumer dMaaPCMVESMsgConsumer; + private GeneralConfigForTest generalConfigForTest; + + @Before + public void setUp() throws Exception { + generalConfigForTest = new GeneralConfigForTest(CONFIGURATION_FILE); + dMaaPCMVESMsgConsumer = new DMaaPCMVESMsgConsumer(generalConfigForTest.getCfg()); + } + + @Test + public void processValidMsg() throws URISyntaxException, IOException { + File cmFileValid = new File(TestDMaaPCMVESMsgConsumer.class.getResource("/msgs/cm_valid.json").toURI()); + String cmEvent = readFileToString(cmFileValid); + try { + dMaaPCMVESMsgConsumer.processMsg(cmEvent); + } catch (Exception e) { + fail("Test fail with message: " + e.getMessage()); + } + } + + @Test(expected = InvalidMessageException.class) + public void processMsgThatMissesField() throws URISyntaxException, IOException, InvalidMessageException { + File cmFileInvalid = new File(TestDMaaPCMVESMsgConsumer.class.getResource("/msgs/cm_invalid.json").toURI()); + String cmEvent = readFileToString(cmFileInvalid); + dMaaPCMVESMsgConsumer.processMsg(cmEvent); + } + + @Test(expected = JsonProcessingException.class) + public void processMsgThatIsNotValidJson() throws URISyntaxException, IOException, InvalidMessageException { + File cmFileInvalid = new File(TestDMaaPCMVESMsgConsumer.class.getResource("/msgs/not_a_json.json").toURI()); + String cmEvent = readFileToString(cmFileInvalid); + dMaaPCMVESMsgConsumer.processMsg(cmEvent); + } + + private String readFileToString(File file) throws IOException { + StringBuilder fileContent = new StringBuilder(); + Files.lines(Paths.get(file.toURI())).forEach(fileContent::append); + return fileContent.toString(); + } + + @After + public void after() { + generalConfigForTest.close(); + } +} \ No newline at end of file diff --git a/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPVESMsgConsumerMain.java b/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPVESMsgConsumerMain.java index 11fb2f3b9..ecfb8d081 100644 --- a/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPVESMsgConsumerMain.java +++ b/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestDMaaPVESMsgConsumerMain.java @@ -109,9 +109,11 @@ public class TestDMaaPVESMsgConsumerMain { generalConfig = new GeneralConfig(configFileRepresentation); PNFRegistrationConfig pnfRegConfig = new PNFRegistrationConfig(configFileRepresentation); FaultConfig faultConfig = new FaultConfig(configFileRepresentation); + ProvisioningConfig provisioningConfig = new ProvisioningConfig(configFileRepresentation); configMap.put("pnfRegistration", pnfRegConfig); configMap.put("fault", faultConfig); + configMap.put("provisioning", provisioningConfig); } catch (Exception e) { System.out.println("Failed in preTest execution " + e.getMessage()); } @@ -126,9 +128,11 @@ public class TestDMaaPVESMsgConsumerMain { generalConfig = new GeneralConfig(configFileRepresentation); PNFRegistrationConfig pnfRegConfig = new PNFRegistrationConfig(configFileRepresentation); FaultConfig faultConfig = new FaultConfig(configFileRepresentation); + ProvisioningConfig provisioningConfig = new ProvisioningConfig(configFileRepresentation); configMap.put("pnfRegistration", pnfRegConfig); configMap.put("fault", faultConfig); + configMap.put("provisioning", provisioningConfig); } catch (Exception e) { System.out.println("Failed in preTest execution " + e.getMessage()); } diff --git a/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestProvisioningConfig.java b/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestProvisioningConfig.java new file mode 100644 index 000000000..42c204aec --- /dev/null +++ b/sdnr/wt/mountpoint-registrar/provider/src/test/java/org/onap/ccsdk/features/sdnr/wt/mountpointregistrar/test/TestProvisioningConfig.java @@ -0,0 +1,95 @@ +/* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2021 Samsung Electronics 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========================================================================== + */ + +package org.onap.ccsdk.features.sdnr.wt.mountpointregistrar.test; + +import static org.junit.Assert.assertEquals; +import com.google.common.io.Files; +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation; +import org.onap.ccsdk.features.sdnr.wt.mountpointregistrar.impl.ProvisioningConfig; + +public class TestProvisioningConfig { + + private static final String TESTCONFIG_CONTENT = "[provisioning]\n" + + "TransportType=HTTPNOAUTH\n" + + "Protocol=http\n" + + "username=username\n" + + "password=password\n" + + "host=onap-dmap:3904\n" + + "topic=unauthenticated.SEC_3GPP_PROVISIONING_OUTPUT\n" + + "contenttype=application/json\n" + + "group=myG\n" + + "id=C1\n" + + "timeout=20000\n" + + "limit=10000\n" + + "fetchPause=5000\n" + + "jersey.config.client.readTimeout=25000\n" + + "jersey.config.client.connectTimeout=25000\n" + + "jersey.config.client.proxy.uri=http://http-proxy\n" + + "jersey.config.client.proxy.username=proxy-user\n" + + "jersey.config.client.proxy.password=proxy-password\n" + + ""; + + private static final String TEMP_DIR = System.getProperty("java.io.tmpdir"); + private static File configFile; + + @Test + public void testConfigValuesAssignment() throws IOException { + configFile = new File(TEMP_DIR, "test.properties"); + Files.asCharSink(configFile, StandardCharsets.UTF_8).write(TESTCONFIG_CONTENT); + ConfigurationFileRepresentation cfg = new ConfigurationFileRepresentation(configFile); + ProvisioningConfig provisioningConfig = new ProvisioningConfig(cfg); + assertEquals("provisioning", provisioningConfig.getSectionName()); + assertEquals("HTTPNOAUTH", provisioningConfig.getTransportType()); + assertEquals("onap-dmap:3904", provisioningConfig.getHostPort()); + assertEquals("unauthenticated.SEC_3GPP_PROVISIONING_OUTPUT", provisioningConfig.getTopic()); + assertEquals("application/json", provisioningConfig.getContenttype()); + assertEquals("myG", provisioningConfig.getConsumerGroup()); + assertEquals("C1", provisioningConfig.getConsumerId()); + assertEquals("20000", provisioningConfig.getTimeout()); + assertEquals("10000", provisioningConfig.getLimit()); + assertEquals("5000", provisioningConfig.getFetchPause()); + assertEquals("http", provisioningConfig.getProtocol()); + assertEquals("username", provisioningConfig.getUsername()); + assertEquals("password", provisioningConfig.getPassword()); + assertEquals("25000", provisioningConfig.getClientReadTimeout()); + assertEquals("25000", provisioningConfig.getClientConnectTimeout()); + assertEquals("http://http-proxy", provisioningConfig.getHTTPProxyURI()); + assertEquals("proxy-user", provisioningConfig.getHTTPProxyUsername()); + assertEquals("proxy-password", provisioningConfig.getHTTPProxyPassword()); + } + + @After + public void cleanUp() { + if (configFile.exists()) { + System.out.println(String.format("File %s exists, deleting it", configFile.getName())); + configFile.delete(); + } + } + +} diff --git a/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_invalid.json b/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_invalid.json new file mode 100644 index 000000000..eefd58836 --- /dev/null +++ b/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_invalid.json @@ -0,0 +1,49 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.1", + "vesEventListenerVersion": "7.2", + "domain": "stndDefined", + "stndDefinedNamespace": "3GPP-Provisioning", + "eventId": "cm0004012", + "eventName": "ves_stdnDefined_3GPP-Provisioning", + "nfNamingCode": "NFNC", + "nfVendorName": "POC", + "nfcNamingCode": "NFC", + "priority": "Medium", + "reportingEntityId": "device_id_1732f1ad-53fd-4fd1-8b73-a677987d4e8f", + "reportingEntityName": "samsung-O-DU-1122", + "sequence": 0, + "sourceId": "src_device_id_1732f1ad-53fd-4fd1-8b73-a677987d4e8f", + "sourceName": "samsung-O-DU-1122", + "startEpochMicrosec": 1547037007722752, + "lastEpochMicrosec": 1547037028498530, + "timeZoneOffset": "UTC-05:30" + }, + "stndDefinedFields": { + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/Rel16/OpenAPI/provMnS.yaml#/components/schemas/NotifyMoiChanges", + "data": { + "href": "href1", + + + "eventTime": "2021-08-23T11:52:10.6Z", + "systemDN": "xyz", + "moiChanges": [ + { + "notificationId": 123, + "correlatedNotifications": [], + "additionalText": "AdditionalTextDetails", + "sourceIndicator": "MANAGEMENT_OPERATION", + "path":"https://samsung.com/3GPP/simulation/network-function/ves=1", + + "value": { + "pnf-registration": "true", + "faults-enabled": "true" + } + } + ] + }, + "stndDefinedFieldsVersion": "1.0" + } + } +} \ No newline at end of file diff --git a/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_valid.json b/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_valid.json new file mode 100644 index 000000000..fe9e4c278 --- /dev/null +++ b/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/cm_valid.json @@ -0,0 +1,49 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.1", + "vesEventListenerVersion": "7.2", + "domain": "stndDefined", + "stndDefinedNamespace": "3GPP-Provisioning", + "eventId": "cm0004012", + "eventName": "ves_stdnDefined_3GPP-Provisioning", + "nfNamingCode": "NFNC", + "nfVendorName": "POC", + "nfcNamingCode": "NFC", + "priority": "Medium", + "reportingEntityId": "device_id_1732f1ad-53fd-4fd1-8b73-a677987d4e8f", + "reportingEntityName": "samsung-O-DU-1122", + "sequence": 0, + "sourceId": "src_device_id_1732f1ad-53fd-4fd1-8b73-a677987d4e8f", + "sourceName": "samsung-O-DU-1122", + "startEpochMicrosec": 1547037007722752, + "lastEpochMicrosec": 1547037028498530, + "timeZoneOffset": "UTC-05:30" + }, + "stndDefinedFields": { + "schemaReference": "https://forge.3gpp.org/rep/sa5/MnS/blob/Rel16/OpenAPI/provMnS.yaml#/components/schemas/NotifyMoiChanges", + "data": { + "href": "href1", + "notificationId": 1, + "notificationType": "notifyMOIChanges", + "eventTime": "2021-08-23T11:52:10.6Z", + "systemDN": "xyz", + "moiChanges": [ + { + "notificationId": 123, + "correlatedNotifications": [], + "additionalText": "AdditionalTextDetails", + "sourceIndicator": "MANAGEMENT_OPERATION", + "path":"https://samsung.com/3GPP/simulation/network-function/ves=1", + "operation": "REPLACE", + "value": { + "pnf-registration": "true", + "faults-enabled": "true" + } + } + ] + }, + "stndDefinedFieldsVersion": "1.0" + } + } +} \ No newline at end of file diff --git a/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/not_a_json.json b/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/not_a_json.json new file mode 100644 index 000000000..b1526562e --- /dev/null +++ b/sdnr/wt/mountpoint-registrar/provider/src/test/resources/msgs/not_a_json.json @@ -0,0 +1,10 @@ +{ + "event": { + "commonEventHeader": { + "version": "4.1", + "vesEventListenerVersion": + "domain": "stndDefined", + "stndDefinedNamespace": "3GPP-Provisioning" + } + } +} \ No newline at end of file -- cgit 1.2.3-korg