diff options
Diffstat (limited to 'mod/bpgenerator/onap')
5 files changed, 448 insertions, 69 deletions
diff --git a/mod/bpgenerator/onap/models/Test_Parameters.yml b/mod/bpgenerator/onap/models/Test_Parameters.yml index 5df73fb..b60258d 100644 --- a/mod/bpgenerator/onap/models/Test_Parameters.yml +++ b/mod/bpgenerator/onap/models/Test_Parameters.yml @@ -7,7 +7,7 @@ node_types: testParam1: type: map entry_schema: - - 'type: onap.datatypes.testParam1' + - 'type: onap.datatypes.testParam1' data_types: onap.datatypes.PolicySchemaTest: derived_from: tosca.nodes.Root @@ -20,4 +20,4 @@ data_types: PolicySchemaTest: type: map entry_schema: - - 'type: onap.datatypes.PolicySchemaTest' + - 'type: onap.datatypes.PolicySchemaTest' diff --git a/mod/bpgenerator/onap/pom.xml b/mod/bpgenerator/onap/pom.xml index 8379952..dc91f39 100644 --- a/mod/bpgenerator/onap/pom.xml +++ b/mod/bpgenerator/onap/pom.xml @@ -29,7 +29,7 @@ <modelVersion>4.0.0</modelVersion> <artifactId>blueprint-generator-onap</artifactId> - <version>1.7.1-SNAPSHOT</version> + <version>1.7.2-SNAPSHOT</version> <packaging>jar</packaging> <name>Onap</name> @@ -40,14 +40,14 @@ <parent> <groupId>org.onap.dcaegen2.platform.mod</groupId> <artifactId>blueprint-generator</artifactId> - <version>1.7.1-SNAPSHOT</version> + <version>1.7.2-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.onap.dcaegen2.platform.mod</groupId> <artifactId>blueprint-generator-common</artifactId> - <version>1.7.1-SNAPSHOT</version> + <version>1.7.2-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> 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<String, Dmaap> 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<String, Object> dmaapDataRouterResponse = - dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); - inputs = - (Map<String, LinkedHashMap<String, Object>>) 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<String, Object> dmaapDataRouterResponse = - dmaapService - .createDmaapMessageRouter(inputs, config, 'p', name, name, isDmaap); - inputs = - (Map<String, LinkedHashMap<String, Object>>) dmaapDataRouterResponse - .get("inputs"); - Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); - dmaap.setType(publishes.getType()); - streamPublishes.put(config, dmaap); - } - } - } - } - - Map<String, Dmaap> 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<String, Object> dmaapDataRouterResponse = - dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); - inputs = - (Map<String, LinkedHashMap<String, Object>>) 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<String, Object> dmaapDataRouterResponse = - dmaapService - .createDmaapMessageRouter(inputs, config, 's', name, name, isDmaap); - inputs = - (Map<String, LinkedHashMap<String, Object>>) dmaapDataRouterResponse - .get("inputs"); - Dmaap dmaap = (Dmaap) dmaapDataRouterResponse.get("dmaap"); - dmaap.setType(subscribes.getType()); - streamSubscribes.put(config, dmaap); - } - } - } - } + Map<String, Dmaap> streamPublishes = streamService.createStreamPublishes( + onapComponentSpec, blueprintHelperService, dmaapService, inputs, isDmaap); + Map<String, Dmaap> 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<String, Dmaap> createStreamPublishes( + OnapComponentSpec onapComponentSpec, + BlueprintHelperService blueprintHelperService, + DmaapService dmaapService, + Map<String, LinkedHashMap<String, Object>> inputs, + boolean isDmaap) { + + Map<String, Dmaap> 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<String, Object> dmaapDataRouterResponse = + dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); + inputs = + (Map<String, LinkedHashMap<String, Object>>) 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<String, Object> dmaapDataRouterResponse = + dmaapService + .createDmaapMessageRouter(inputs, config, 'p', name, name, isDmaap); + inputs = + (Map<String, LinkedHashMap<String, Object>>) 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<String, Dmaap> createStreamSubscribes( + OnapComponentSpec onapComponentSpec, + BlueprintHelperService blueprintHelperService, + DmaapService dmaapService, + Map<String, LinkedHashMap<String, Object>> inputs, + boolean isDmaap) { + + Map<String, Dmaap> 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<String, Object> dmaapDataRouterResponse = + dmaapService.createDmaapDataRouter(inputs, config, name, isDmaap); + inputs = + (Map<String, LinkedHashMap<String, Object>>) 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<String, Object> dmaapDataRouterResponse = + dmaapService + .createDmaapMessageRouter(inputs, config, 's', name, name, isDmaap); + inputs = + (Map<String, LinkedHashMap<String, Object>>) 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<String, Dmaap> 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<String, Dmaap> 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<String, Dmaap> streamPublishes = streamService.createStreamPublishes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map<String, Dmaap> expectedMap = createExpectedMap("_feed"); + + assertNotNull(streamPublishes); + assertEquals(expectedMap.size(), streamPublishes.size()); + for(Map.Entry<String, Dmaap> 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<String, Dmaap> streamPublishes = streamService.createStreamPublishes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map<String, Dmaap> expectedMap = createExpectedMap("_topic"); + + assertNotNull(streamPublishes); + assertEquals(expectedMap.size(), streamPublishes.size()); + for(Map.Entry<String, Dmaap> 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<String, Dmaap> 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<String, Dmaap> 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<String, Dmaap> streamSubscribes = streamService.createStreamSubscribes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map<String, Dmaap> expectedMap = createExpectedMap("_feed"); + + assertNotNull(streamSubscribes); + assertEquals(expectedMap.size(), streamSubscribes.size()); + for(Map.Entry<String, Dmaap> 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<String, Dmaap> streamSubscribes = streamService.createStreamSubscribes( + onapComponentSpecMock, + blueprintHelperServiceMock, + dmaapService, + createInputs(), + true); + + Map<String, Dmaap> expectedMap = createExpectedMap("_topic"); + + assertNotNull(streamSubscribes); + assertEquals(expectedMap.size(), streamSubscribes.size()); + for(Map.Entry<String, Dmaap> 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<String, Dmaap> createExpectedMap(String suffix) { + Map<String, Dmaap> expectedMap = new HashMap<>(); + Dmaap dmaap1 = new Dmaap(); + dmaap1.setType("t1"); + dmaap1.setDmaap_info("<<k1" + suffix + ">>"); + + Dmaap dmaap2 = new Dmaap(); + dmaap2.setType("t2"); + dmaap2.setDmaap_info("<<k2" + suffix + ">>"); + + Dmaap dmaap3 = new Dmaap(); + dmaap3.setType("t3"); + dmaap3.setDmaap_info("<<k3" + suffix + ">>"); + + 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<String, LinkedHashMap<String, Object>> createInputs(){ + LinkedHashMap<String, Object> map = new LinkedHashMap<>(); + map.put("key-1", "obj-1"); + + Map<String, LinkedHashMap<String, Object>> mapsMap = new HashMap<>(); + mapsMap.put("inputs", map); + return mapsMap; + } +} |