From e0194fbb1f8291ca0c23cc68840097b8d33670e5 Mon Sep 17 00:00:00 2001 From: koblosz Date: Tue, 22 May 2018 17:13:35 +0200 Subject: Refactor DmaapPropertyReader Issue-ID: DCAEGEN2-522 Signed-off-by: KOBLOSZ SANDRA Change-Id: I2d9928ff3ffeda0e204480f13e8c8bf91bddf912 --- .../java/org/onap/dcae/vestest/AnyNodeTest.java | 107 ++++++++++++++++++ .../onap/dcae/vestest/DmaapPropertyReaderTest.java | 121 +++++++++++++++++++++ .../onap/dcae/vestest/TestDmaapPropertyReader.java | 53 --------- .../resources/testFullDmaapConfig_channels.json | 13 +++ src/test/resources/testFullDmaapConfig_gen2.json | 24 ++++ src/test/resources/test_anynode_class.json | 9 ++ 6 files changed, 274 insertions(+), 53 deletions(-) create mode 100644 src/test/java/org/onap/dcae/vestest/AnyNodeTest.java create mode 100644 src/test/java/org/onap/dcae/vestest/DmaapPropertyReaderTest.java delete mode 100644 src/test/java/org/onap/dcae/vestest/TestDmaapPropertyReader.java create mode 100644 src/test/resources/testFullDmaapConfig_channels.json create mode 100644 src/test/resources/testFullDmaapConfig_gen2.json create mode 100644 src/test/resources/test_anynode_class.json (limited to 'src/test') diff --git a/src/test/java/org/onap/dcae/vestest/AnyNodeTest.java b/src/test/java/org/onap/dcae/vestest/AnyNodeTest.java new file mode 100644 index 00000000..1613465f --- /dev/null +++ b/src/test/java/org/onap/dcae/vestest/AnyNodeTest.java @@ -0,0 +1,107 @@ +/*- + * ============LICENSE_START======================================================= + * PROJECT + * ================================================================================ + * Copyright (C) 2018 Nokia Networks 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.dcae.vestest; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Sets; +import org.json.JSONObject; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.dcae.commonFunction.AnyNode; + +import java.io.IOException; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Created by koblosz on 07.06.18. + */ +public class AnyNodeTest { + + private static final String SAMPLE_JSON_FILEPATH = "src/test/resources/test_anynode_class.json"; + private static final Map EXPECTED_RAW_MAP = ImmutableMap.builder().put("a", 1).put("b", 2).build(); + private static final Set EXPECTED_JSON_KEYS = Sets.newHashSet("channels", "sampleStrList", "sampleNestedObject", "sampleInt", "sampleString", "sampleNull"); + private static AnyNode node; + + + @BeforeClass + public static void setUpClass() throws IOException { + node = AnyNode.parse(SAMPLE_JSON_FILEPATH); + } + + @Test(expected = IOException.class) + public void testShouldRethrowExceptionWhenFileNotFound() throws IOException { + AnyNode.parse("not/existng/path"); + } + + @Test + public void testShouldReturnJsonObjectKeySet() { + assertThat(node.getKeys()).containsOnlyElementsOf(EXPECTED_JSON_KEYS); + } + + @Test + public void testShouldGetElementAsString() { + assertThat(node.get("sampleStrList").get(0).asString()).isEqualTo("1"); + } + + @Test + public void testShouldGetElementAsInt() { + assertThat(node.get("sampleInt").asInt()).isSameAs(1); + } + + @Test + public void testWhenNullValuePresentShouldReturnJsonObjectNullAsString() { + assertThat(node.get("sampleNull").asString()).isSameAs(JSONObject.NULL.toString()); + } + + @Test + public void testShouldGetJsonObjectAsStringToObjectMap() { + assertThat(node.get("sampleNestedObject").asRawMap()).containsAllEntriesOf(EXPECTED_RAW_MAP); + } + + @Test + public void testShouldGetAsMap() { + assertThat(node.asMap().keySet()).containsOnlyElementsOf(EXPECTED_JSON_KEYS); + } + + @Test + public void testShouldGetAsList() { + assertThat(node.get("sampleStrList").asList().stream().map(AnyNode::asString).collect(Collectors.toList())).containsExactly("1", "2", "3", "4", "5"); + } + + @Test + public void testShouldGetAsOptional() { + assertThat(node.getAsOptional("absentKey")).isNotPresent(); + } + + @Test + public void testWhenChainMethodsShouldReturnValue() { + assertThat(node.get("channels").get(0).get("two").asString()).isEqualTo("number2"); + } + + + @Test(expected = ClassCastException.class) + public void whenInvokedOnJsonObjInsteadOfJsonArrShouldRaiseRuntimeEx() { + node.asList(); + } +} \ No newline at end of file diff --git a/src/test/java/org/onap/dcae/vestest/DmaapPropertyReaderTest.java b/src/test/java/org/onap/dcae/vestest/DmaapPropertyReaderTest.java new file mode 100644 index 00000000..eadf62f2 --- /dev/null +++ b/src/test/java/org/onap/dcae/vestest/DmaapPropertyReaderTest.java @@ -0,0 +1,121 @@ +/*- + * ============LICENSE_START======================================================= + * org.onap.dcaegen2.collectors.ves + * ================================================================================ + * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018 Nokia. 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.dcae.vestest; + +import com.google.common.collect.ImmutableMap; +import org.junit.Test; +import org.onap.dcae.commonFunction.DmaapPropertyReader; + +import java.net.MalformedURLException; +import java.util.Map; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +public class DmaapPropertyReaderTest { + + + private static final String legacyConfigFilePath = "src/test/resources/testDmaapConfig_ip.json"; + private static final String dmaapInputConfigFilePath = "src/test/resources/testDmaapConfig_gen2.json"; + private static final String fullDmaapConfigWithChannels = "src/test/resources/testFullDmaapConfig_channels.json"; + private static final String fullGen2DmaapConfig = "src/test/resources/testFullDmaapConfig_gen2.json"; + + private static final String FAULT_UEB_KEY_PREFIX = "sec_fault_ueb"; + private static final String VES_ALERT_SND_KEY_PREFIX = "ves-thresholdCrossingAlert-secondary"; + private static final String VES_FAULT_SECONDARY = "ves-fault-secondary"; + + private static final String FAULT_BASIC_AUTH_USERNAME_KEY = VES_FAULT_SECONDARY + ".basicAuthUsername"; + private static final String ALERT_BASIC_AUTH_PWD_KEY = VES_ALERT_SND_KEY_PREFIX + ".basicAuthPassword"; + + private static final String VES_ALERT_CAMBRIA_TOPIC_KEY = VES_ALERT_SND_KEY_PREFIX + ".cambria.topic"; + private static final String VES_ALERT_CAMBRIA_URL_KEY = VES_ALERT_SND_KEY_PREFIX + ".cambria.url"; + private static final String VES_FAULT_SND_CAMBRIA_URL_KEY = VES_FAULT_SECONDARY + ".cambria.url"; + private static final String VES_FAULT_SND_AUTH_PWD_KEY = VES_FAULT_SECONDARY + ".basicAuthPassword"; + private static final String VES_FAULT_SND_CAMBRIA_TOPIC_KEY = VES_FAULT_SECONDARY + ".cambria.topic"; + private static final String FAULT_UEB_CAMBRIA_HOSTS_KEY = FAULT_UEB_KEY_PREFIX + ".cambria.hosts"; + private static final String FAULT_UEB_CAMBRIA_TOPIC_KEY = FAULT_UEB_KEY_PREFIX + ".cambria.topic"; + private static final String VES_ALERT_SND_AUTH_USERNAME_KEY = VES_ALERT_SND_KEY_PREFIX + ".basicAuthUsername"; + + public static final String NULL_TOSTRING = "null"; + + private static final Map expectedCompleteGen2DmaapConfig = ImmutableMap.builder() + .put(ALERT_BASIC_AUTH_PWD_KEY, "SamplePassWD2") + .put(VES_ALERT_CAMBRIA_TOPIC_KEY, "DCAE-SE-COLLECTOR-EVENTS-DEV") + .put(FAULT_BASIC_AUTH_USERNAME_KEY, "sampleUsername") + .put(VES_ALERT_CAMBRIA_URL_KEY, "UEBHOST:3904") + .put(VES_FAULT_SND_CAMBRIA_URL_KEY, "UEBHOST:3904") + .put(VES_FAULT_SND_AUTH_PWD_KEY, "SamplePasswd") + .put(VES_FAULT_SND_CAMBRIA_TOPIC_KEY, "DCAE-SE-COLLECTOR-EVENTS-DEV") + .put(VES_ALERT_SND_AUTH_USERNAME_KEY, "sampleUsername2") + .build(); + + private static final Map expectedIncompleteGen2DmaapConfig = ImmutableMap.builder() + .put(VES_ALERT_SND_AUTH_USERNAME_KEY, NULL_TOSTRING) + .put(FAULT_BASIC_AUTH_USERNAME_KEY, NULL_TOSTRING) + .put(VES_ALERT_CAMBRIA_TOPIC_KEY, "DCAE-SE-COLLECTOR-EVENTS-DEV") + .put(VES_ALERT_CAMBRIA_URL_KEY, "UEBHOST:3904") + .put(VES_FAULT_SND_CAMBRIA_URL_KEY, "UEBHOST:3904") + .put(ALERT_BASIC_AUTH_PWD_KEY, NULL_TOSTRING) + .put(VES_FAULT_SND_AUTH_PWD_KEY, NULL_TOSTRING) + .put(VES_FAULT_SND_CAMBRIA_TOPIC_KEY, "DCAE-SE-COLLECTOR-EVENTS-DEV") + .build(); + + private static final Map expectedCompleteChannelsDmaapConfig = ImmutableMap.builder() + .put(FAULT_UEB_CAMBRIA_HOSTS_KEY, "uebsb91kcdc.it.att.com,uebsb92kcdc.it.att.com,uebsb93kcdc.it.att.com") + .put(FAULT_UEB_CAMBRIA_TOPIC_KEY, "DCAE-SE-COLLECTOR-EVENTS-DEV") + .put(FAULT_UEB_KEY_PREFIX + ".basicAuthPassword", "S0mEPassWD") + .put(FAULT_UEB_KEY_PREFIX + ".basicAuthUsername", "sampleUser") + .put(FAULT_UEB_KEY_PREFIX + ".cambria.url", "127.0.0.1:3904") + .build(); + + private static final Map expectedIncompleteChannelsDmaapConfig = ImmutableMap.builder() + .put(FAULT_UEB_CAMBRIA_HOSTS_KEY, "uebsb91kcdc.it.att.com,uebsb92kcdc.it.att.com,uebsb93kcdc.it.att.com") + .put(FAULT_UEB_CAMBRIA_TOPIC_KEY, "DCAE-SE-COLLECTOR-EVENTS-DEV") + .build(); + + @Test + public void testShouldCreateReaderWithAbsentParamsOmittedBasedOnChannelDmaapConfig() { + assertReaderPreservedAllEntriesAfterTransformation(legacyConfigFilePath, expectedIncompleteChannelsDmaapConfig); + } + + @Test + public void testShouldCreateReaderWithAbsentParamsOmittedBasedOnGen2DmaapConfig() { + assertReaderPreservedAllEntriesAfterTransformation(dmaapInputConfigFilePath, expectedIncompleteGen2DmaapConfig); + } + + @Test + public void shouldCreateReaderWithCompleteChannelDmaapConfig() { + assertReaderPreservedAllEntriesAfterTransformation(fullDmaapConfigWithChannels, expectedCompleteChannelsDmaapConfig); + } + + @Test + public void shouldCreateReaderWithCompleteGen2DmaapConfig() throws MalformedURLException { + assertReaderPreservedAllEntriesAfterTransformation(fullGen2DmaapConfig, expectedCompleteGen2DmaapConfig); + } + + private void assertReaderPreservedAllEntriesAfterTransformation(String dmaapConfigFilePath, Map expectedMap) { + DmaapPropertyReader reader = new DmaapPropertyReader(dmaapConfigFilePath); + + assertThat(reader.getDmaapProperties()).containsAllEntriesOf(expectedMap); + assertThat(expectedMap).containsAllEntriesOf(reader.getDmaapProperties()); + } + +} + diff --git a/src/test/java/org/onap/dcae/vestest/TestDmaapPropertyReader.java b/src/test/java/org/onap/dcae/vestest/TestDmaapPropertyReader.java deleted file mode 100644 index 1a7d9f7e..00000000 --- a/src/test/java/org/onap/dcae/vestest/TestDmaapPropertyReader.java +++ /dev/null @@ -1,53 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * org.onap.dcaegen2.collectors.ves - * ================================================================================ - * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. - * Copyright (C) 2018 Nokia. 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.dcae.vestest; - -import static org.junit.Assert.assertEquals; - -import java.util.HashMap; -import org.junit.Test; -import org.onap.dcae.commonFunction.DmaapPropertyReader; - -public class TestDmaapPropertyReader { - - @Test - public void shouldReadDMaaPHashes() { - DmaapPropertyReader dmaapPropertyReader = new DmaapPropertyReader("src/test/resources/testDmaapConfig_ip.json"); - HashMap dmaapHash = dmaapPropertyReader.dmaap_hash; - assertEquals(dmaapHash.get("sec_fault_ueb.cambria.hosts"), - "uebsb91kcdc.it.att.com,uebsb92kcdc.it.att.com,uebsb93kcdc.it.att.com"); - assertEquals(dmaapHash.get("sec_fault_ueb.cambria.topic"), "DCAE-SE-COLLECTOR-EVENTS-DEV"); - } - - @Test - public void shouldReadDMaaPHashesForSecondGeneration() { - DmaapPropertyReader dmaapPropertyReader = new DmaapPropertyReader( - "src/test/resources/testDmaapConfig_gen2.json"); - HashMap dmaapHash = dmaapPropertyReader.dmaap_hash; - assertEquals(dmaapHash.get("ves-thresholdCrossingAlert-secondary.cambria.topic"), - "DCAE-SE-COLLECTOR-EVENTS-DEV"); - assertEquals(dmaapHash.get("ves-thresholdCrossingAlert-secondary.cambria.url"), "UEBHOST:3904"); - assertEquals(dmaapHash.get("ves-fault-secondary.cambria.url"), "UEBHOST:3904"); - assertEquals(dmaapHash.get("ves-fault-secondary.cambria.topic"), "DCAE-SE-COLLECTOR-EVENTS-DEV"); - } - -} - diff --git a/src/test/resources/testFullDmaapConfig_channels.json b/src/test/resources/testFullDmaapConfig_channels.json new file mode 100644 index 00000000..e2bc0339 --- /dev/null +++ b/src/test/resources/testFullDmaapConfig_channels.json @@ -0,0 +1,13 @@ +{ + "channels": [ + { + "name": "sec_fault_ueb", + "cambria.url": "127.0.0.1:3904", + "cambria.hosts": "uebsb91kcdc.it.att.com,uebsb92kcdc.it.att.com,uebsb93kcdc.it.att.com", + "cambria.topic": "DCAE-SE-COLLECTOR-EVENTS-DEV", + "basicAuthPassword": "S0mEPassWD", + "basicAuthUsername": "sampleUser", + "stripHpId": "true" + } + ] +} \ No newline at end of file diff --git a/src/test/resources/testFullDmaapConfig_gen2.json b/src/test/resources/testFullDmaapConfig_gen2.json new file mode 100644 index 00000000..68804663 --- /dev/null +++ b/src/test/resources/testFullDmaapConfig_gen2.json @@ -0,0 +1,24 @@ +{ + "ves-fault-secondary": { + "aaf_username": "sampleUsername", + "dmaap_info": { + "topic_url": "http://UEBHOST:3904/events/DCAE-SE-COLLECTOR-EVENTS-DEV", + "location": "mtl5", + "client_id": null, + "client_role": null + }, + "type": "message_router", + "aaf_password": "SamplePasswd" + }, + "ves-thresholdCrossingAlert-secondary": { + "aaf_username": "sampleUsername2", + "dmaap_info": { + "topic_url": "http://UEBHOST:3904/events/DCAE-SE-COLLECTOR-EVENTS-DEV", + "location": "mtl5", + "client_id": null, + "client_role": null + }, + "type": "message_router", + "aaf_password": "SamplePassWD2" + } +} \ No newline at end of file diff --git a/src/test/resources/test_anynode_class.json b/src/test/resources/test_anynode_class.json new file mode 100644 index 00000000..0d349451 --- /dev/null +++ b/src/test/resources/test_anynode_class.json @@ -0,0 +1,9 @@ +{ + "channels": [{ + "one": "number1", "two": "number2", "three": "number3"}], + "sampleStrList": ["1", "2", "3", "4", "5"], + "sampleNestedObject": {"a": 1, "b": 2}, + "sampleInt": 1, + "sampleString": "str", + "sampleNull": null +} -- cgit 1.2.3-korg