From 52b5f5276add6116a14ba671c35ff9d87c140421 Mon Sep 17 00:00:00 2001 From: Tomasz Wrobel Date: Fri, 15 Jan 2021 14:34:18 +0100 Subject: Add Native Kafka streams support in bp-generator Issue-ID: DCAEGEN2-1179 Signed-off-by: Tomasz Wrobel Change-Id: I541dca959707a41c56205e20c9f5a56ccec5ca41 --- .../service/common/StreamServiceTest.java | 63 ++++++----- .../common/kafka/KafkaStreamServiceTest.java | 125 +++++++++++++++++++++ .../service/common/kafka/KafkaStreamTest.java | 98 ++++++++++++++++ 3 files changed, 257 insertions(+), 29 deletions(-) create mode 100644 mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamServiceTest.java create mode 100644 mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamTest.java (limited to 'mod/bpgenerator/onap/src/test/java/org') diff --git a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/StreamServiceTest.java b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/StreamServiceTest.java index 09bb176..fe93f5f 100644 --- a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/StreamServiceTest.java +++ b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/StreamServiceTest.java @@ -35,6 +35,7 @@ import java.util.LinkedHashMap; import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.onap.blueprintgenerator.model.common.BaseStream; import org.onap.blueprintgenerator.model.common.Dmaap; import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec; import org.onap.blueprintgenerator.model.componentspec.common.Publishes; @@ -66,7 +67,7 @@ class StreamServiceTest { void whenStreamsIsNullCreateStreamPublishesShouldReturnEmptyMap() { when(onapComponentSpecMock.getStreams()).thenReturn(null); - Map streamPublishes = streamService.createStreamPublishes( + Map streamPublishes = streamService.createStreamPublishes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapServiceMock, @@ -81,7 +82,7 @@ class StreamServiceTest { when(streamsMock.getPublishes()).thenReturn(null); when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); - Map streamPublishes = streamService.createStreamPublishes( + Map streamPublishes = streamService.createStreamPublishes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapServiceMock, @@ -99,21 +100,22 @@ class StreamServiceTest { DmaapService dmaapService = new DmaapService(); - Map streamPublishes = streamService.createStreamPublishes( + Map streamPublishes = streamService.createStreamPublishes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapService, createInputs(), true); - Map expectedMap = createExpectedMap("_feed"); + Map expectedMap = createExpectedMap("_feed"); assertNotNull(streamPublishes); assertEquals(expectedMap.size(), streamPublishes.size()); - for(Map.Entry entry : expectedMap.entrySet()) { + for (Map.Entry entry : expectedMap.entrySet()) { assertTrue(streamPublishes.containsKey(entry.getKey())); - assertTrue(streamPublishes.get(entry.getKey()).getType().equals(entry.getValue().getType())); - assertTrue(streamPublishes.get(entry.getKey()).getDmaap_info().equals(entry.getValue().getDmaap_info())); + assertEquals(streamPublishes.get(entry.getKey()).getType(), entry.getValue().getType()); + assertEquals(((Dmaap) streamPublishes.get(entry.getKey())).getDmaap_info(), + ((Dmaap) entry.getValue()).getDmaap_info()); } } @@ -125,21 +127,22 @@ class StreamServiceTest { DmaapService dmaapService = new DmaapService(); - Map streamPublishes = streamService.createStreamPublishes( + Map streamPublishes = streamService.createStreamPublishes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapService, createInputs(), true); - Map expectedMap = createExpectedMap("_topic"); + Map expectedMap = createExpectedMap("_topic"); assertNotNull(streamPublishes); assertEquals(expectedMap.size(), streamPublishes.size()); - for(Map.Entry entry : expectedMap.entrySet()) { + for (Map.Entry entry : expectedMap.entrySet()) { assertTrue(streamPublishes.containsKey(entry.getKey())); - assertTrue(streamPublishes.get(entry.getKey()).getType().equals(entry.getValue().getType())); - assertTrue(streamPublishes.get(entry.getKey()).getDmaap_info().equals(entry.getValue().getDmaap_info())); + assertEquals(streamPublishes.get(entry.getKey()).getType(), entry.getValue().getType()); + assertEquals(((Dmaap) streamPublishes.get(entry.getKey())).getDmaap_info(), + ((Dmaap) entry.getValue()).getDmaap_info()); } } @@ -147,7 +150,7 @@ class StreamServiceTest { void whenStreamsIsNullCreateStreamSubscribesShouldReturnEmptyMap() { when(onapComponentSpecMock.getStreams()).thenReturn(null); - Map streamSubscribes = streamService.createStreamSubscribes( + Map streamSubscribes = streamService.createStreamSubscribes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapServiceMock, @@ -162,7 +165,7 @@ class StreamServiceTest { when(streamsMock.getPublishes()).thenReturn(null); when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); - Map streamSubscribes = streamService.createStreamSubscribes( + Map streamSubscribes = streamService.createStreamSubscribes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapServiceMock, @@ -180,21 +183,22 @@ class StreamServiceTest { DmaapService dmaapService = new DmaapService(); - Map streamSubscribes = streamService.createStreamSubscribes( + Map streamSubscribes = streamService.createStreamSubscribes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapService, createInputs(), true); - Map expectedMap = createExpectedMap("_feed"); + Map expectedMap = createExpectedMap("_feed"); assertNotNull(streamSubscribes); assertEquals(expectedMap.size(), streamSubscribes.size()); - for(Map.Entry entry : expectedMap.entrySet()) { + for (Map.Entry entry : expectedMap.entrySet()) { assertTrue(streamSubscribes.containsKey(entry.getKey())); - assertTrue(streamSubscribes.get(entry.getKey()).getType().equals(entry.getValue().getType())); - assertTrue(streamSubscribes.get(entry.getKey()).getDmaap_info().equals(entry.getValue().getDmaap_info())); + assertEquals(streamSubscribes.get(entry.getKey()).getType(), entry.getValue().getType()); + assertEquals(((Dmaap) streamSubscribes.get(entry.getKey())).getDmaap_info(), + ((Dmaap) entry.getValue()).getDmaap_info()); } } @@ -206,26 +210,27 @@ class StreamServiceTest { DmaapService dmaapService = new DmaapService(); - Map streamSubscribes = streamService.createStreamSubscribes( + Map streamSubscribes = streamService.createStreamSubscribes( onapComponentSpecMock, blueprintHelperServiceMock, dmaapService, createInputs(), true); - Map expectedMap = createExpectedMap("_topic"); + Map expectedMap = createExpectedMap("_topic"); assertNotNull(streamSubscribes); assertEquals(expectedMap.size(), streamSubscribes.size()); - for(Map.Entry entry : expectedMap.entrySet()) { + for (Map.Entry entry : expectedMap.entrySet()) { assertTrue(streamSubscribes.containsKey(entry.getKey())); - assertTrue(streamSubscribes.get(entry.getKey()).getType().equals(entry.getValue().getType())); - assertTrue(streamSubscribes.get(entry.getKey()).getDmaap_info().equals(entry.getValue().getDmaap_info())); + assertEquals(streamSubscribes.get(entry.getKey()).getType(), entry.getValue().getType()); + assertEquals(((Dmaap) streamSubscribes.get(entry.getKey())).getDmaap_info(), + ((Dmaap) entry.getValue()).getDmaap_info()); } } - private Map createExpectedMap(String suffix) { - Map expectedMap = new HashMap<>(); + private Map createExpectedMap(String suffix) { + Map expectedMap = new HashMap<>(); Dmaap dmaap1 = new Dmaap(); dmaap1.setType("t1"); dmaap1.setDmaap_info("<>"); @@ -260,21 +265,21 @@ class StreamServiceTest { return new Subscribes[]{sub1, sub2, sub3}; } - private Publishes createPublishes(String key, String type){ + private Publishes createPublishes(String key, String type) { Publishes publishes = new Publishes(); publishes.setConfig_key(key); publishes.setType(type); return publishes; } - private Subscribes createSubscribes(String key, String type){ + private Subscribes createSubscribes(String key, String type) { Subscribes subscribes = new Subscribes(); subscribes.setConfig_key(key); subscribes.setType(type); return subscribes; } - private Map> createInputs(){ + private Map> createInputs() { LinkedHashMap map = new LinkedHashMap<>(); map.put("key-1", "obj-1"); diff --git a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamServiceTest.java b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamServiceTest.java new file mode 100644 index 0000000..cad3b71 --- /dev/null +++ b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamServiceTest.java @@ -0,0 +1,125 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2021 Nokia 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.blueprintgenerator.service.common.kafka; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.LinkedHashMap; +import java.util.Map; +import org.junit.Test; + +import org.junit.runner.RunWith; +import org.onap.blueprintgenerator.service.base.BlueprintHelperService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = {KafkaStreamService.class, BlueprintHelperService.class}, + initializers = ConfigFileApplicationContextInitializer.class) +public class KafkaStreamServiceTest { + + private static final String TEST_STREAM_NAME = "test_stream_name"; + private static final String PUBLISH_URL_SUFFIX = "_publish_url"; + private static final String SUBSCRIBE_URL_SUFFIX = "_subscribe_url"; + private static final String DEFAULT_KEY = "default"; + private static final String KAFKA_TYPE = "kafka"; + + @Autowired + private KafkaStreamService kafkaStreamService; + + @Test + public void createCorrectStreamCommonInputs() { + + Map> publishInputs = kafkaStreamService + .createStreamPublishInputs("test_stream_name"); + + LinkedHashMap kafka_bootstrap_servers = publishInputs.get("kafka_bootstrap_servers"); + LinkedHashMap kafka_username = publishInputs.get("kafka_username"); + LinkedHashMap kafka_password = publishInputs.get("kafka_password"); + + assertNotNull(kafka_bootstrap_servers); + assertNotNull(kafka_username); + assertNotNull(kafka_password); + + assertNotNull(kafka_bootstrap_servers.get(DEFAULT_KEY)); + assertNotNull(kafka_username.get(DEFAULT_KEY)); + assertNotNull(kafka_password.get(DEFAULT_KEY)); + } + + @Test + public void createCorrectStreamPublishInput() { + Map> publishInputs = kafkaStreamService + .createStreamPublishInputs(TEST_STREAM_NAME); + + LinkedHashMap kafka_stream_name = publishInputs.get(TEST_STREAM_NAME + PUBLISH_URL_SUFFIX); + + assertNotNull(kafka_stream_name); + + assertNotNull(kafka_stream_name.get(DEFAULT_KEY)); + } + + @Test + public void createCorrectStreamSubscribeInput() { + Map> publishInputs = kafkaStreamService + .createStreamSubscribeInputs(TEST_STREAM_NAME); + + LinkedHashMap kafka_stream_name = publishInputs.get(TEST_STREAM_NAME + SUBSCRIBE_URL_SUFFIX); + + assertNotNull(kafka_stream_name); + + assertNotNull(kafka_stream_name.get(DEFAULT_KEY)); + } + + @Test + public void createCorrectPublishAppConfig() { + Map appPropertiesPublish = kafkaStreamService + .createAppPropertiesPublish(TEST_STREAM_NAME); + + KafkaStream kafkaStream = appPropertiesPublish.get(TEST_STREAM_NAME); + + assertEquals(KAFKA_TYPE, kafkaStream.getType()); + assertNotNull(kafkaStream.getAafCredential()); + assertNotNull(kafkaStream.getKafkaInfo()); + assertTrue(kafkaStream.getKafkaInfo().toString().contains(TEST_STREAM_NAME + PUBLISH_URL_SUFFIX)); + + } + + @Test + public void createCorrectSubscribeAppConfig() { + Map appPropertiesSubscribe = kafkaStreamService + .createAppPropertiesSubscribe(TEST_STREAM_NAME); + + KafkaStream kafkaStream = appPropertiesSubscribe.get(TEST_STREAM_NAME); + + assertEquals(KAFKA_TYPE, kafkaStream.getType()); + assertNotNull(kafkaStream.getAafCredential()); + assertNotNull(kafkaStream.getKafkaInfo()); + assertTrue(kafkaStream.getKafkaInfo().toString().contains(TEST_STREAM_NAME + SUBSCRIBE_URL_SUFFIX)); + + } +} diff --git a/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamTest.java b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamTest.java new file mode 100644 index 0000000..2ba2274 --- /dev/null +++ b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamTest.java @@ -0,0 +1,98 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2021 Nokia 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.blueprintgenerator.service.common.kafka; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import org.junit.Before; +import org.junit.Test; + +public class KafkaStreamTest { + + private final static String TEST_TOPIC_NAME = "test_topic"; + private static final String GET_INPUT_KAFKA_USERNAME = "{\"get_input\":\"kafka_username\"}"; + private static final String GET_INPUT_KAFKA_PASSWORD = "{\"get_input\":\"kafka_password\"}"; + private static final String AAF_USERNAME = "username"; + private static final String AAF_PASSWORD = "password"; + private static final String AAF_CREDENTIAL_NODE = "aaf_credentials"; + private static final String KAFKA_TYPE_NODE = "type"; + private static final String EXPECTED_KAFKA_TYPE = "\"kafka\""; + private static final String KAFKA_BOOTSTRAP_SERVERS = "bootstrap_servers"; + private static final String KAFKA_TOPIC_NAME = "topic_name"; + private static final String EXPECTED_GET_INPUT_TOPIC = "{\"get_input\":\"" + TEST_TOPIC_NAME + "\"}"; + private static final String EXPECTED_GET_INPUT_BOOTSTRAP_SERVERS = "{\"get_input\":\"kafka_bootstrap_servers\"}"; + private static final String KAFKA_INFO_NODE = "kafka_info"; + + private KafkaStream kafkaStream; + private ObjectMapper mapper = new ObjectMapper(); + + @Before + public void setUp() { + kafkaStream = new KafkaStream(TEST_TOPIC_NAME); + } + + @Test + public void kafkaStreamHasCorrectAafCredential() throws IOException { + + String kafkaStreamJson = mapper.writeValueAsString(kafkaStream); + + JsonNode kafkaStreamNode = mapper.readTree(kafkaStreamJson); + JsonNode aafCredential = kafkaStreamNode.get(AAF_CREDENTIAL_NODE); + + assertNotNull(aafCredential); + assertEquals(GET_INPUT_KAFKA_USERNAME, aafCredential.get(AAF_USERNAME).toString()); + assertEquals(GET_INPUT_KAFKA_PASSWORD, aafCredential.get(AAF_PASSWORD).toString()); + } + + @Test + public void kafkaStreamHasCorrectKafkaInfo() throws IOException { + + String kafkaStreamJson = mapper.writeValueAsString(kafkaStream); + + JsonNode kafkaStreamNode = mapper.readTree(kafkaStreamJson); + JsonNode kafkaInfo = kafkaStreamNode.get(KAFKA_INFO_NODE); + + assertNotNull(kafkaInfo); + assertEquals(EXPECTED_GET_INPUT_BOOTSTRAP_SERVERS, kafkaInfo.get(KAFKA_BOOTSTRAP_SERVERS).toString()); + assertEquals(EXPECTED_GET_INPUT_TOPIC, kafkaInfo.get(KAFKA_TOPIC_NAME).toString()); + + } + + @Test + public void kafkaStreamHasCorrectType() throws IOException { + + String kafkaStreamJson = mapper.writeValueAsString(kafkaStream); + + JsonNode kafkaStreamNode = mapper.readTree(kafkaStreamJson); + JsonNode kafkaType = kafkaStreamNode.get(KAFKA_TYPE_NODE); + + assertNotNull(kafkaType); + assertEquals(EXPECTED_KAFKA_TYPE, kafkaType.toString()); + } + +} -- cgit 1.2.3-korg