From 6558bd6870e650dbd6232ab129dc82aebe5f8fba Mon Sep 17 00:00:00 2001 From: Joanna Jeremicz Date: Fri, 15 Jan 2021 09:56:54 +0100 Subject: Refactor AppConfigService with tests - Refactor AppConfigService - Bump bpgenerator version to 1.7.2 Issue-ID: DCAEGEN2-1179 Signed-off-by: Joanna Jeremicz Change-Id: Iae52bda14f928db102d4c3466ba97f948ca98727 --- .../service/common/AppConfigService.java | 73 +----- .../service/common/StreamService.java | 149 +++++++++++ .../service/common/StreamServiceTest.java | 285 +++++++++++++++++++++ 3 files changed, 443 insertions(+), 64 deletions(-) create mode 100644 mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/StreamService.java create mode 100644 mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/StreamServiceTest.java (limited to 'mod/bpgenerator/onap/src') diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/AppConfigService.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/AppConfigService.java index 7c87af7..f0d0e50 100644 --- a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/AppConfigService.java +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/AppConfigService.java @@ -5,6 +5,8 @@ * * ================================================================================ * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. * * ================================================================================ + * * Modifications Copyright (c) 2021 Nokia + * * ================================================================================ * * 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 @@ -55,6 +57,9 @@ public class AppConfigService { @Autowired private BlueprintHelperService blueprintHelperService; + @Autowired + private StreamService streamService; + /** * Creates Inputs section under App Config with Publishes, Subscribes, Parameters sections by * checking Datarouter/MessageRouter/override/Dmaap values @@ -77,70 +82,10 @@ public class AppConfigService { Calls[] call = new Calls[0]; appconfig.setService_calls(call); - Map streamPublishes = new TreeMap<>(); - if (onapComponentSpec.getStreams() != null) { - if (onapComponentSpec.getStreams().getPublishes() != null) { - for (Publishes publishes : onapComponentSpec.getStreams().getPublishes()) { - if (blueprintHelperService.isDataRouterType(publishes.getType())) { - String config = publishes.getConfig_key(); - String name = config + Constants._FEED; - Map dmaapDataRouterResponse = - dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); - inputs = - (Map>) dmaapDataRouterResponse - .get("inputs"); - Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); - dmaap.setType(publishes.getType()); - streamPublishes.put(config, dmaap); - } else if (blueprintHelperService.isMessageRouterType(publishes.getType())) { - String config = publishes.getConfig_key(); - String name = config + Constants._TOPIC; - Map dmaapDataRouterResponse = - dmaapService - .createDmaapMessageRouter(inputs, config, 'p', name, name, isDmaap); - inputs = - (Map>) dmaapDataRouterResponse - .get("inputs"); - Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); - dmaap.setType(publishes.getType()); - streamPublishes.put(config, dmaap); - } - } - } - } - - Map streamSubscribes = new TreeMap<>(); - - if (onapComponentSpec.getStreams() != null) { - if (onapComponentSpec.getStreams().getSubscribes() != null) { - for (Subscribes subscribes : onapComponentSpec.getStreams().getSubscribes()) { - if (blueprintHelperService.isDataRouterType(subscribes.getType())) { - String config = subscribes.getConfig_key(); - String name = config + Constants._FEED; - Map dmaapDataRouterResponse = - dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); - inputs = - (Map>) dmaapDataRouterResponse - .get("inputs"); - Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); - dmaap.setType(subscribes.getType()); - streamSubscribes.put(config, dmaap); - } else if (blueprintHelperService.isMessageRouterType(subscribes.getType())) { - String config = subscribes.getConfig_key(); - String name = config + Constants._TOPIC; - Map dmaapDataRouterResponse = - dmaapService - .createDmaapMessageRouter(inputs, config, 's', name, name, isDmaap); - inputs = - (Map>) dmaapDataRouterResponse - .get("inputs"); - Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); - dmaap.setType(subscribes.getType()); - streamSubscribes.put(config, dmaap); - } - } - } - } + Map streamPublishes = streamService.createStreamPublishes( + onapComponentSpec, blueprintHelperService, dmaapService, inputs, isDmaap); + Map streamSubscribes = streamService.createStreamSubscribes( + onapComponentSpec, blueprintHelperService, dmaapService, inputs, isDmaap); appconfig.setStreams_publishes(streamPublishes); appconfig.setStreams_subscribes(streamSubscribes); diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/StreamService.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/StreamService.java new file mode 100644 index 0000000..bd4cf87 --- /dev/null +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/StreamService.java @@ -0,0 +1,149 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2020 AT&T Intellectual Property. All rights reserved. + * * ================================================================================ + * * Modifications Copyright (c) 2021 Nokia + * * ================================================================================ + * * 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; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.TreeMap; +import org.onap.blueprintgenerator.constants.Constants; +import org.onap.blueprintgenerator.model.common.Dmaap; +import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec; +import org.onap.blueprintgenerator.model.componentspec.common.Publishes; +import org.onap.blueprintgenerator.model.componentspec.common.Subscribes; +import org.onap.blueprintgenerator.service.base.BlueprintHelperService; +import org.springframework.stereotype.Service; + +/** + * @author : Joanna Jeremicz + * @date 01/15/2021 Application: ONAP - Blueprint Generator Common ONAP Service + * to create publishes and subscribes streams + */ +@Service("streamService") +public class StreamService { + + /** + * Creates publishes stream for given Inputs and ComponentSpec + * + * @param onapComponentSpec Onap Component Specification + * @param blueprintHelperService Blueprint Helper Service + * @param dmaapService Dmaap Service + * @param inputs Inputs + * @param isDmaap Dmaap Argument + * @return + */ + public Map createStreamPublishes( + OnapComponentSpec onapComponentSpec, + BlueprintHelperService blueprintHelperService, + DmaapService dmaapService, + Map> inputs, + boolean isDmaap) { + + Map streamPublishes = new TreeMap<>(); + if (onapComponentSpec.getStreams() == null || onapComponentSpec.getStreams().getPublishes() == null) { + return streamPublishes; + } + + for (Publishes publishes : onapComponentSpec.getStreams().getPublishes()) { + if (blueprintHelperService.isDataRouterType(publishes.getType())) { + String config = publishes.getConfig_key(); + String name = config + Constants._FEED; + Map dmaapDataRouterResponse = + dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); + inputs = + (Map>) dmaapDataRouterResponse + .get("inputs"); + Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); + dmaap.setType(publishes.getType()); + streamPublishes.put(config, dmaap); + } else if (blueprintHelperService.isMessageRouterType(publishes.getType())) { + String config = publishes.getConfig_key(); + String name = config + Constants._TOPIC; + Map dmaapDataRouterResponse = + dmaapService + .createDmaapMessageRouter(inputs, config, 'p', name, name, isDmaap); + inputs = + (Map>) dmaapDataRouterResponse + .get("inputs"); + Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); + dmaap.setType(publishes.getType()); + streamPublishes.put(config, dmaap); + } + } + return streamPublishes; + } + + /** + * Creates subscribes stream for given Inputs and ComponentSpec + * + * @param onapComponentSpec Onap Component Specification + * @param blueprintHelperService Blueprint Helper Service + * @param dmaapService Dmaap Service + * @param inputs Inputs + * @param isDmaap Dmaap Argument + * @return + */ + public Map createStreamSubscribes( + OnapComponentSpec onapComponentSpec, + BlueprintHelperService blueprintHelperService, + DmaapService dmaapService, + Map> inputs, + boolean isDmaap) { + + Map streamSubscribes = new TreeMap<>(); + if (onapComponentSpec.getStreams() == null || onapComponentSpec.getStreams().getSubscribes() == null) { + return streamSubscribes; + } + + for (Subscribes subscribes : onapComponentSpec.getStreams().getSubscribes()) { + if (blueprintHelperService.isDataRouterType(subscribes.getType())) { + String config = subscribes.getConfig_key(); + String name = config + Constants._FEED; + Map dmaapDataRouterResponse = + dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); + inputs = + (Map>) dmaapDataRouterResponse + .get("inputs"); + Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); + dmaap.setType(subscribes.getType()); + streamSubscribes.put(config, dmaap); + } else if (blueprintHelperService.isMessageRouterType(subscribes.getType())) { + String config = subscribes.getConfig_key(); + String name = config + Constants._TOPIC; + Map dmaapDataRouterResponse = + dmaapService + .createDmaapMessageRouter(inputs, config, 's', name, name, isDmaap); + inputs = + (Map>) dmaapDataRouterResponse + .get("inputs"); + Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); + dmaap.setType(subscribes.getType()); + streamSubscribes.put(config, dmaap); + } + } + return streamSubscribes; + } + +} 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 new file mode 100644 index 0000000..09bb176 --- /dev/null +++ b/mod/bpgenerator/onap/src/test/java/org/onap/blueprintgenerator/service/common/StreamServiceTest.java @@ -0,0 +1,285 @@ +/* + * + * * ============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; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; +import static org.junit.Assert.assertEquals; + +import java.util.HashMap; +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.Dmaap; +import org.onap.blueprintgenerator.model.componentspec.OnapComponentSpec; +import org.onap.blueprintgenerator.model.componentspec.common.Publishes; +import org.onap.blueprintgenerator.model.componentspec.common.Streams; +import org.onap.blueprintgenerator.model.componentspec.common.Subscribes; +import org.onap.blueprintgenerator.service.base.BlueprintHelperService; + +class StreamServiceTest { + + private StreamService streamService; + + OnapComponentSpec onapComponentSpecMock; + BlueprintHelperService blueprintHelperServiceMock; + DmaapService dmaapServiceMock; + + Streams streamsMock; + + @BeforeEach + public void setup() { + streamService = new StreamService(); + onapComponentSpecMock = mock(OnapComponentSpec.class); + blueprintHelperServiceMock = mock(BlueprintHelperService.class); + dmaapServiceMock = mock(DmaapService.class); + + streamsMock = mock(Streams.class); + } + + @Test + void whenStreamsIsNullCreateStreamPublishesShouldReturnEmptyMap() { + when(onapComponentSpecMock.getStreams()).thenReturn(null); + + Map streamPublishes = streamService.createStreamPublishes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapServiceMock, + createInputs(), + true); + + assertTrue(streamPublishes.isEmpty()); + } + + @Test + void whenPublishesIsNullCreateStreamPublishesShouldReturnEmptyMap() { + when(streamsMock.getPublishes()).thenReturn(null); + when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); + + Map streamPublishes = streamService.createStreamPublishes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapServiceMock, + createInputs(), + true); + + assertTrue(streamPublishes.isEmpty()); + } + + @Test + void whenPublishesIsNotEmptyDRCreateStreamPublishesShouldReturnNonEmptyMap() { + when(streamsMock.getPublishes()).thenReturn(createPublishesArray()); + when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); + when(blueprintHelperServiceMock.isDataRouterType(anyString())).thenReturn(true); + + DmaapService dmaapService = new DmaapService(); + + Map streamPublishes = streamService.createStreamPublishes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map expectedMap = createExpectedMap("_feed"); + + assertNotNull(streamPublishes); + assertEquals(expectedMap.size(), streamPublishes.size()); + 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())); + } + } + + @Test + void whenPublishesIsNotEmptyMRCreateStreamPublishesShouldReturnNonEmptyMap() { + when(streamsMock.getPublishes()).thenReturn(createPublishesArray()); + when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); + when(blueprintHelperServiceMock.isMessageRouterType(anyString())).thenReturn(true); + + DmaapService dmaapService = new DmaapService(); + + Map streamPublishes = streamService.createStreamPublishes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map expectedMap = createExpectedMap("_topic"); + + assertNotNull(streamPublishes); + assertEquals(expectedMap.size(), streamPublishes.size()); + 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())); + } + } + + @Test + void whenStreamsIsNullCreateStreamSubscribesShouldReturnEmptyMap() { + when(onapComponentSpecMock.getStreams()).thenReturn(null); + + Map streamSubscribes = streamService.createStreamSubscribes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapServiceMock, + createInputs(), + true); + + assertTrue(streamSubscribes.isEmpty()); + } + + @Test + void whenSubscribesIsNullCreateStreamSubscribesShouldReturnEmptyMap() { + when(streamsMock.getPublishes()).thenReturn(null); + when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); + + Map streamSubscribes = streamService.createStreamSubscribes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapServiceMock, + createInputs(), + true); + + assertTrue(streamSubscribes.isEmpty()); + } + + @Test + void whenSubscribesIsNotEmptyDRCreateStreamSubscribesShouldReturnNonEmptyMap() { + when(streamsMock.getSubscribes()).thenReturn(createSubscribesArray()); + when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); + when(blueprintHelperServiceMock.isDataRouterType(anyString())).thenReturn(true); + + DmaapService dmaapService = new DmaapService(); + + Map streamSubscribes = streamService.createStreamSubscribes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map expectedMap = createExpectedMap("_feed"); + + assertNotNull(streamSubscribes); + assertEquals(expectedMap.size(), streamSubscribes.size()); + 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())); + } + } + + @Test + void whenSubscribesIsNotEmptyMRCreateStreamSubscribesShouldReturnNonEmptyMap() { + when(streamsMock.getSubscribes()).thenReturn(createSubscribesArray()); + when(onapComponentSpecMock.getStreams()).thenReturn(streamsMock); + when(blueprintHelperServiceMock.isMessageRouterType(anyString())).thenReturn(true); + + DmaapService dmaapService = new DmaapService(); + + Map streamSubscribes = streamService.createStreamSubscribes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map expectedMap = createExpectedMap("_topic"); + + assertNotNull(streamSubscribes); + assertEquals(expectedMap.size(), streamSubscribes.size()); + 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())); + } + } + + private Map createExpectedMap(String suffix) { + Map expectedMap = new HashMap<>(); + Dmaap dmaap1 = new Dmaap(); + dmaap1.setType("t1"); + dmaap1.setDmaap_info("<>"); + + Dmaap dmaap2 = new Dmaap(); + dmaap2.setType("t2"); + dmaap2.setDmaap_info("<>"); + + Dmaap dmaap3 = new Dmaap(); + dmaap3.setType("t3"); + dmaap3.setDmaap_info("<>"); + + expectedMap.put("k1", dmaap1); + expectedMap.put("k2", dmaap2); + expectedMap.put("k3", dmaap3); + return expectedMap; + } + + private Publishes[] createPublishesArray() { + Publishes pub1 = createPublishes("k1", "t1"); + Publishes pub2 = createPublishes("k2", "t2"); + Publishes pub3 = createPublishes("k3", "t3"); + + return new Publishes[]{pub1, pub2, pub3}; + } + + private Subscribes[] createSubscribesArray() { + Subscribes sub1 = createSubscribes("k1", "t1"); + Subscribes sub2 = createSubscribes("k2", "t2"); + Subscribes sub3 = createSubscribes("k3", "t3"); + + return new Subscribes[]{sub1, sub2, sub3}; + } + + 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){ + Subscribes subscribes = new Subscribes(); + subscribes.setConfig_key(key); + subscribes.setType(type); + return subscribes; + } + + private Map> createInputs(){ + LinkedHashMap map = new LinkedHashMap<>(); + map.put("key-1", "obj-1"); + + Map> mapsMap = new HashMap<>(); + mapsMap.put("inputs", map); + return mapsMap; + } +} -- cgit 1.2.3-korg