From b9cb00657207bb020c1802485c930b46621d4813 Mon Sep 17 00:00:00 2001 From: Tomasz Wrobel Date: Tue, 22 Sep 2020 15:19:03 +0200 Subject: Refactor, fix code formatting and add unittests -Refactor DmaapNode class -Add UT for DmaapNode -Refactor and fix code formatting in DmaapStreem class -Top up version to 1.5.2 Issue-ID: DCAEGEN2-2449 Signed-off-by: Tomasz Wrobel Change-Id: If6781f26bb6bfe2a645b0b0438157823670341a2 --- mod/bpgenerator/pom.xml | 2 +- .../common/blueprint/BlueprintHelper.java | 19 ++ .../models/blueprint/Properties.java | 46 ++-- .../models/dmaapbp/DmaapBlueprint.java | 17 +- .../models/dmaapbp/DmaapNode.java | 240 +++++++++++---------- .../models/dmaapbp/DmaapStreams.java | 151 ++++++------- .../models/dmaapbp/DmaapNodeTest.java | 201 +++++++++++++++++ mod/bpgenerator/version.properties | 2 +- 8 files changed, 462 insertions(+), 216 deletions(-) create mode 100644 mod/bpgenerator/src/test/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNodeTest.java diff --git a/mod/bpgenerator/pom.xml b/mod/bpgenerator/pom.xml index aaf9713..86009f3 100644 --- a/mod/bpgenerator/pom.xml +++ b/mod/bpgenerator/pom.xml @@ -29,7 +29,7 @@ org.onap.dcaegen2.platform.mod blueprint-generator - 1.5.1-SNAPSHOT + 1.5.2-SNAPSHOT UTF-8 ${project.basedir}/target/surefire-reports diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/common/blueprint/BlueprintHelper.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/common/blueprint/BlueprintHelper.java index 451988f..ef335a8 100644 --- a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/common/blueprint/BlueprintHelper.java +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/common/blueprint/BlueprintHelper.java @@ -27,6 +27,9 @@ import java.util.LinkedHashMap; @UtilityClass public class BlueprintHelper { + public static final String INTEGER_TYPE = "integer"; + public static final String BOOLEAN_TYPE = "boolean"; + public static LinkedHashMap createInputValue(String type, String description, Object defaultValue) { LinkedHashMap inputMap = new LinkedHashMap<>(); inputMap.put("type", type); @@ -35,7 +38,23 @@ public class BlueprintHelper { return inputMap; } + public static LinkedHashMap createIntegerInput(String description, Object defaultValue){ + return createInputValue(INTEGER_TYPE, description, defaultValue); + } + + public static LinkedHashMap createBooleanInput(String description, Object defaultValue){ + return createInputValue(BOOLEAN_TYPE, description, defaultValue); + } + public static String joinUnderscore(String firstValue, String secondValue){ return firstValue + "_" + secondValue; } + + public static boolean isDataRouterType(String type) { + return type.equals("data_router") || type.equals("data router"); + } + + public static boolean isMessageRouterType(String type) { + return type.equals("message_router") || type.equals("message router"); + } } diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java index d32d6f4..5693f86 100644 --- a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/blueprint/Properties.java @@ -20,6 +20,10 @@ package org.onap.blueprintgenerator.models.blueprint; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.createBooleanInput; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.createIntegerInput; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isMessageRouterType; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isDataRouterType; import static org.onap.blueprintgenerator.models.blueprint.tls.TlsConstants.USE_EXTERNAL_TLS_FIELD; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -31,7 +35,6 @@ import java.util.Map; import java.util.TreeMap; import lombok.Getter; import lombok.Setter; -import org.onap.blueprintgenerator.common.blueprint.BlueprintHelper; import org.onap.blueprintgenerator.models.blueprint.tls.ExternalCertificateParametersFactory; import org.onap.blueprintgenerator.models.blueprint.tls.ExternalTlsInfoFactory; import org.onap.blueprintgenerator.models.blueprint.tls.TlsInfo; @@ -42,6 +45,7 @@ import org.onap.blueprintgenerator.models.componentspec.Publishes; import org.onap.blueprintgenerator.models.componentspec.Subscribes; import org.onap.blueprintgenerator.models.dmaapbp.DmaapStreams; + @Getter @Setter @JsonInclude(value = Include.NON_NULL) @@ -102,7 +106,7 @@ public class Properties { GetInput replica = new GetInput(); replica.setBpInputName("replicas"); this.setReplicas(replica); - LinkedHashMap rep = BlueprintHelper.createInputValue("integer", "number of instances", 1); + LinkedHashMap rep = createIntegerInput("number of instances", 1); retInputs.put("replicas", rep); //set the dns name @@ -126,7 +130,7 @@ public class Properties { // set always_pull_image this.always_pull_image = new GetInput(); this.always_pull_image.setBpInputName("always_pull_image"); - LinkedHashMap inputAlwaysPullImage = BlueprintHelper.createInputValue("boolean", + LinkedHashMap inputAlwaysPullImage = createBooleanInput( "Set to true if the image should always be pulled", true); retInputs.put("always_pull_image", inputAlwaysPullImage); @@ -197,7 +201,7 @@ public class Properties { GetInput replica = new GetInput(); replica.setBpInputName("replicas"); this.setReplicas(replica); - LinkedHashMap rep = BlueprintHelper.createInputValue("integer", "number of instances", 1); + LinkedHashMap rep = createIntegerInput( "number of instances", 1); retInputs.put("replicas", rep); // //set the dns name @@ -221,18 +225,20 @@ public class Properties { //set the stream publishes ArrayList pubStreams = new ArrayList(); if (cs.getStreams().getPublishes() != null) { - for (Publishes p : cs.getStreams().getPublishes()) { - if (p.getType().equals("message_router") || p.getType().equals("message router")) { - String topic = p.getConfig_key() + "_topic"; + for (Publishes publishes : cs.getStreams().getPublishes()) { + if (isMessageRouterType(publishes.getType())) { + String topic = publishes.getConfig_key() + "_topic"; DmaapStreams mrStreams = new DmaapStreams(); retInputs = mrStreams - .createStreams(inps, cs, topic, p.getType(), p.getConfig_key(), p.getRoute(), 'p'); + .createStreams(inps, cs, topic, publishes.getType(), publishes.getConfig_key(), + publishes.getRoute(), 'p'); pubStreams.add(mrStreams); - } else if (p.getType().equals("data_router") || p.getType().equals("data router")) { - String feed = p.getConfig_key() + "_feed"; + } else if (isDataRouterType(publishes.getType())) { + String feed = publishes.getConfig_key() + "_feed"; DmaapStreams drStreams = new DmaapStreams(); retInputs = drStreams - .createStreams(inps, cs, feed, p.getType(), p.getConfig_key(), p.getRoute(), 'p'); + .createStreams(inps, cs, feed, publishes.getType(), publishes.getConfig_key(), + publishes.getRoute(), 'p'); pubStreams.add(drStreams); } } @@ -241,18 +247,20 @@ public class Properties { //set the stream subscribes ArrayList subStreams = new ArrayList(); if (cs.getStreams().getSubscribes() != null) { - for (Subscribes s : cs.getStreams().getSubscribes()) { - if (s.getType().equals("message_router") || s.getType().equals("message router")) { - String topic = s.getConfig_key() + "_topic"; + for (Subscribes subscribes : cs.getStreams().getSubscribes()) { + if (isMessageRouterType(subscribes.getType())) { + String topic = subscribes.getConfig_key() + "_topic"; DmaapStreams mrStreams = new DmaapStreams(); retInputs = mrStreams - .createStreams(inps, cs, topic, s.getType(), s.getConfig_key(), s.getRoute(), 's'); + .createStreams(inps, cs, topic, subscribes.getType(), subscribes.getConfig_key(), + subscribes.getRoute(), 's'); subStreams.add(mrStreams); - } else if (s.getType().equals("data_router") || s.getType().equals("data router")) { - String feed = s.getConfig_key() + "_feed"; + } else if (isDataRouterType(subscribes.getType())) { + String feed = subscribes.getConfig_key() + "_feed"; DmaapStreams drStreams = new DmaapStreams(); retInputs = drStreams - .createStreams(inps, cs, feed, s.getType(), s.getConfig_key(), s.getRoute(), 's'); + .createStreams(inps, cs, feed, subscribes.getType(), subscribes.getConfig_key(), + subscribes.getRoute(), 's'); subStreams.add(drStreams); } } @@ -280,7 +288,7 @@ public class Properties { useTLSFlag.setBpInputName("use_tls"); tlsInfo.setUseTls(useTLSFlag); this.setTls_info(tlsInfo); - LinkedHashMap useTlsFlagInput = BlueprintHelper.createInputValue("boolean", + LinkedHashMap useTlsFlagInput = createBooleanInput( "flag to indicate tls enable/disable", cs.getAuxilary().getTls_info().get("use_tls")); retInputs.put("use_tls", useTlsFlagInput); diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java index 2774abb..84c5fc5 100644 --- a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapBlueprint.java @@ -33,6 +33,8 @@ import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; import org.onap.blueprintgenerator.models.componentspec.Publishes; import org.onap.blueprintgenerator.models.componentspec.Subscribes; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isDataRouterType; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isMessageRouterType; import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.joinUnderscore; import static org.onap.blueprintgenerator.models.blueprint.Imports.createDmaapImports; import static org.onap.blueprintgenerator.models.blueprint.Imports.createImportsFromFile; @@ -74,12 +76,12 @@ public class DmaapBlueprint extends Blueprint { //go through the streams publishes if (componentSpec.getStreams().getPublishes() != null) { for (Publishes publisher : componentSpec.getStreams().getPublishes()) { - if (isMessageRouter(publisher.getType())) { + if (isMessageRouterType(publisher.getType())) { String topic = joinUnderscore(publisher.getConfig_key(), TOPIC); DmaapNode topicNode = new DmaapNode(); inps = topicNode.createTopicNode(componentSpec, inps, topic); nodeTemplate.put(topic, topicNode); - } else if (isDataRouter(publisher.getType())) { + } else if (isDataRouterType(publisher.getType())) { String feed = joinUnderscore(publisher.getConfig_key(), FEED); DmaapNode feedNode = new DmaapNode(); inps = feedNode.createFeedNode(componentSpec, inps, feed); @@ -90,12 +92,12 @@ public class DmaapBlueprint extends Blueprint { //go through the stream subscribes if (componentSpec.getStreams().getSubscribes() != null) { for (Subscribes subscriber : componentSpec.getStreams().getSubscribes()) { - if (isMessageRouter(subscriber.getType())) { + if (isMessageRouterType(subscriber.getType())) { String topic = joinUnderscore(subscriber.getConfig_key(), TOPIC); DmaapNode topicNode = new DmaapNode(); inps = topicNode.createTopicNode(componentSpec, inps, topic); nodeTemplate.put(topic, topicNode); - } else if (isDataRouter(subscriber.getType())) { + } else if (isDataRouterType(subscriber.getType())) { String feed = joinUnderscore(subscriber.getConfig_key(), FEED); DmaapNode feedNode = new DmaapNode(); inps = feedNode.createFeedNode(componentSpec, inps, feed); @@ -120,11 +122,4 @@ public class DmaapBlueprint extends Blueprint { return blueprint; } - private boolean isDataRouter(String type) { - return type.equals("data_router") || type.equals("data router"); - } - - private boolean isMessageRouter(String type) { - return type.equals("message_router") || type.equals("message router"); - } } diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java index 37d7d2d..e28e49a 100644 --- a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNode.java @@ -43,117 +43,135 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isDataRouterType; +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isMessageRouterType; + @JsonIgnoreProperties(ignoreUnknown = true) -@Getter @Setter -@EqualsAndHashCode(callSuper=false) +@Getter +@Setter +@EqualsAndHashCode(callSuper = false) @NoArgsConstructor -@JsonInclude(value=Include.NON_NULL) - -public class DmaapNode extends Node{ - - public TreeMap> createDmaapNode(ComponentSpec cs, TreeMap> inps, String override) { - TreeMap> retInputs = inps; - - //set the type - this.setType("dcae.nodes.ContainerizedServiceComponentUsingDmaap"); - - //create the interface - Interfaces inter = new Interfaces(); - retInputs = inter.createInterface(retInputs, cs); - TreeMap interfaces = new TreeMap(); - interfaces.put("cloudify.interfaces.lifecycle", inter); - this.setInterfaces(interfaces); - - //create and set the relationships - ArrayList> rets = new ArrayList(); - - //go through the streams publishes - if(cs.getStreams().getPublishes() != null) { - for(Publishes p: cs.getStreams().getPublishes()) { - LinkedHashMap pubRelations = new LinkedHashMap(); - if(p.getType().equals("message_router") || p.getType().equals("message router")) { - pubRelations.put("type", "ccsdk.relationships.publish_events"); - pubRelations.put("target", p.getConfig_key() + "_topic"); - } else if(p.getType().equals("data_router") || p.getType().equals("data router")) { - pubRelations.put("type", "ccsdk.relationships.publish_files"); - pubRelations.put("target", p.getConfig_key() + "_feed"); - } - rets.add(pubRelations); - } - } - //go through the stream subscribes - if(cs.getStreams().getSubscribes() != null) { - for(Subscribes s: cs.getStreams().getSubscribes()) { - LinkedHashMap subRelations = new LinkedHashMap(); - if(s.getType().equals("message_router") || s.getType().equals("message router")) { - subRelations.put("type", "ccsdk.relationships.subscribe_to_events"); - subRelations.put("target", s.getConfig_key() + "_topic"); - } else if(s.getType().equals("data_router") || s.getType().equals("data router")) { - subRelations.put("type", "ccsdk.relationships.subscribe_to_files"); - subRelations.put("target", s.getConfig_key() + "_feed"); - } - rets.add(subRelations); - } - } - - //add relationship for policy if exist - if(cs.getPolicyInfo() != null){ - ArrayList> policyRelationshipsList = PolicyNodeBuilder.getPolicyRelationships(cs); - rets.addAll(policyRelationshipsList); - } - - //add relationships and env_variables for pgaas dbs if exist - if(cs.getAuxilary().getDatabases() != null){ - ArrayList> pgaasRelationshipsList = PgaasNodeBuilder.getPgaasNodeRelationships(cs); - rets.addAll(pgaasRelationshipsList); - } - - this.setRelationships(rets); - - //create and set the properties - Properties props = new Properties(); - retInputs = props.createDmaapProperties(retInputs, cs, override); - this.setProperties(props); - - return retInputs; - } - public TreeMap> createFeedNode(ComponentSpec cs, TreeMap> inps, String name){ - TreeMap> retInputs = inps; - LinkedHashMap stringType = new LinkedHashMap(); - stringType.put("type", "string"); - - //set the type - this.setType("ccsdk.nodes.Feed"); - - //create and set the properties - Properties props = new Properties(); - GetInput topicInput = new GetInput(); - topicInput.setBpInputName(name + "_name"); - props.setFeed_name(topicInput); - //props.setUseExisting(true); - retInputs.put(name + "_name", stringType); - this.setProperties(props); - - return retInputs; - } - - public TreeMap> createTopicNode(ComponentSpec cs, TreeMap> inps, String name){ - TreeMap> retInputs = inps; - LinkedHashMap stringType = new LinkedHashMap(); - stringType.put("type", "string"); - - //set the type - this.setType("ccsdk.nodes.Topic"); - - //create and set the properties - Properties props = new Properties(); - GetInput topicInput = new GetInput(); - topicInput.setBpInputName(name + "_name"); - props.setTopic_name(topicInput); - //props.setUseExisting(true); - retInputs.put(name + "_name", stringType); - this.setProperties(props); - - return retInputs; - } +@JsonInclude(value = Include.NON_NULL) + +public class DmaapNode extends Node { + + public TreeMap> createDmaapNode(ComponentSpec componentSpec, + TreeMap> inps, String override) { + TreeMap> retInputs = inps; + + //set the type + this.setType("dcae.nodes.ContainerizedServiceComponentUsingDmaap"); + + //create the interface + Interfaces inter = new Interfaces(); + retInputs = inter.createInterface(retInputs, componentSpec); + TreeMap interfaces = new TreeMap<>(); + interfaces.put("cloudify.interfaces.lifecycle", inter); + this.setInterfaces(interfaces); + + //create and set the relationships + ArrayList> relationships = new ArrayList<>(); + + //go through the streams publishes + if (componentSpec.getStreams().getPublishes() != null) { + for (Publishes publishes : componentSpec.getStreams().getPublishes()) { + relationships.add(createTypeAndTargetPubRelations(publishes)); + } + } + //go through the stream subscribes + if (componentSpec.getStreams().getSubscribes() != null) { + for (Subscribes subscribes : componentSpec.getStreams().getSubscribes()) { + relationships.add(createTypeAndTargetSubRelations(subscribes)); + } + } + + //add relationship for policy if exist + if (componentSpec.getPolicyInfo() != null) { + ArrayList> policyRelationshipsList = PolicyNodeBuilder + .getPolicyRelationships(componentSpec); + relationships.addAll(policyRelationshipsList); + } + + //add relationships and env_variables for pgaas dbs if exist + if (componentSpec.getAuxilary().getDatabases() != null) { + ArrayList> pgaasRelationshipsList = PgaasNodeBuilder + .getPgaasNodeRelationships(componentSpec); + relationships.addAll(pgaasRelationshipsList); + } + + this.setRelationships(relationships); + + //create and set the properties + Properties props = new Properties(); + retInputs = props.createDmaapProperties(retInputs, componentSpec, override); + this.setProperties(props); + + return retInputs; + } + + public TreeMap> createFeedNode(ComponentSpec cs, + TreeMap> inps, String name) { + TreeMap> retInputs = inps; + LinkedHashMap stringType = new LinkedHashMap<>(); + stringType.put("type", "string"); + + //set the type + this.setType("ccsdk.nodes.Feed"); + + //create and set the properties + Properties props = new Properties(); + GetInput topicInput = new GetInput(); + topicInput.setBpInputName(name + "_name"); + props.setFeed_name(topicInput); + //props.setUseExisting(true); + retInputs.put(name + "_name", stringType); + this.setProperties(props); + + return retInputs; + } + + public TreeMap> createTopicNode(ComponentSpec cs, + TreeMap> inps, String name) { + TreeMap> retInputs = inps; + LinkedHashMap stringType = new LinkedHashMap<>(); + stringType.put("type", "string"); + + //set the type + this.setType("ccsdk.nodes.Topic"); + + //create and set the properties + Properties props = new Properties(); + GetInput topicInput = new GetInput(); + topicInput.setBpInputName(name + "_name"); + props.setTopic_name(topicInput); + //props.setUseExisting(true); + retInputs.put(name + "_name", stringType); + this.setProperties(props); + + return retInputs; + } + + private LinkedHashMap createTypeAndTargetPubRelations(Publishes publishes) { + LinkedHashMap pubRelations = new LinkedHashMap<>(); + if (isMessageRouterType(publishes.getType())) { + pubRelations.put("type", "ccsdk.relationships.publish_events"); + pubRelations.put("target", publishes.getConfig_key() + "_topic"); + } else if (isDataRouterType(publishes.getType())) { + pubRelations.put("type", "ccsdk.relationships.publish_files"); + pubRelations.put("target", publishes.getConfig_key() + "_feed"); + } + return pubRelations; + } + + private LinkedHashMap createTypeAndTargetSubRelations(Subscribes subscribes) { + LinkedHashMap subRelations = new LinkedHashMap<>(); + if (isMessageRouterType(subscribes.getType())) { + subRelations.put("type", "ccsdk.relationships.subscribe_to_events"); + subRelations.put("target", subscribes.getConfig_key() + "_topic"); + } else if (isDataRouterType(subscribes.getType())) { + subRelations.put("type", "ccsdk.relationships.subscribe_to_files"); + subRelations.put("target", subscribes.getConfig_key() + "_feed"); + } + return subRelations; + } } diff --git a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java index e2847d7..162337e 100644 --- a/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java +++ b/mod/bpgenerator/src/main/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapStreams.java @@ -33,72 +33,77 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; import lombok.Getter; import lombok.Setter; -@Getter @Setter -@JsonInclude(value=Include.NON_NULL) +import static org.onap.blueprintgenerator.common.blueprint.BlueprintHelper.isDataRouterType; + +@Getter +@Setter +@JsonInclude(value = Include.NON_NULL) public class DmaapStreams { - private String name; - private GetInput location; - private GetInput client_role; - private String type; - - private GetInput username; - private GetInput password; - //private GetInput delivery_url; - - private GetInput privileged; - private GetInput decompress; - - private String route; - private String scheme; - - public TreeMap> createStreams(TreeMap> inps, ComponentSpec cs, String name, String type, String key, String route, char o){ - TreeMap> retInputs = inps; - LinkedHashMap stringType = new LinkedHashMap(); - stringType.put("type", "string"); - - //set the name - this.setName(name); - - //set the type - this.setType(type); - - //set the location - GetInput location = new GetInput(); - location.setBpInputName(key + "_" + name + "_location"); - retInputs.put(key + "_" + name + "_location", stringType); - this.setLocation(location); - - //if its data router we need to add some more - if(type.equals("data_router") || type.equals("data router")) { - if(o == 's') { - //set the username - GetInput username = new GetInput(); - username.setBpInputName(key + "_" + name + "_username"); - this.setUsername(username); - retInputs.put(key + "_" + name + "_username", stringType); - - //set the password - GetInput password = new GetInput(); - password.setBpInputName(key + "_" + name + "_password"); - this.setPassword(password); - retInputs.put(key + "_" + name + "_password", stringType); - - //set privileged - GetInput priviliged = new GetInput(); - priviliged.setBpInputName(key + "_" + name + "_priviliged"); - this.setPrivileged(priviliged); - retInputs.put(key + "_" + name + "_priviliged", stringType); - - //set decompress - GetInput decompress = new GetInput(); - decompress.setBpInputName(key + "_" + name + "_decompress"); - this.setDecompress(decompress); - retInputs.put(key + "_" + name + "_decompress", stringType); - - this.setRoute(route); - this.setScheme("https"); - } + private String name; + private GetInput location; + private GetInput client_role; + private String type; + + private GetInput username; + private GetInput password; + //private GetInput delivery_url; + + private GetInput privileged; + private GetInput decompress; + + private String route; + private String scheme; + + public TreeMap> createStreams( + TreeMap> inps, ComponentSpec cs, String name, String type, String key, + String route, char o) { + TreeMap> retInputs = inps; + LinkedHashMap stringType = new LinkedHashMap(); + stringType.put("type", "string"); + + //set the name + this.setName(name); + + //set the type + this.setType(type); + + //set the location + GetInput location = new GetInput(); + location.setBpInputName(key + "_" + name + "_location"); + retInputs.put(key + "_" + name + "_location", stringType); + this.setLocation(location); + + //if its data router we need to add some more + if (isDataRouterType(type)) { + if ('s' == o) { + //set the username + GetInput username = new GetInput(); + username.setBpInputName(key + "_" + name + "_username"); + this.setUsername(username); + retInputs.put(key + "_" + name + "_username", stringType); + + //set the password + GetInput password = new GetInput(); + password.setBpInputName(key + "_" + name + "_password"); + this.setPassword(password); + retInputs.put(key + "_" + name + "_password", stringType); + + //set privileged + GetInput priviliged = new GetInput(); + priviliged.setBpInputName(key + "_" + name + "_priviliged"); + this.setPrivileged(priviliged); + retInputs.put(key + "_" + name + "_priviliged", stringType); + + //set decompress + GetInput decompress = new GetInput(); + decompress.setBpInputName(key + "_" + name + "_decompress"); + this.setDecompress(decompress); + retInputs.put(key + "_" + name + "_decompress", stringType); + + this.setRoute(route); + this.setScheme("https"); + } // //set the delivery url // GetInput delivery = new GetInput(); @@ -106,13 +111,13 @@ public class DmaapStreams { // this.setDelivery_url(delivery); // retInputs.put(name + "delivery_url", stringType); - } else { - //set the client role - GetInput client = new GetInput(); - client.setBpInputName(key + "_" + name + "_client_role"); - this.setClient_role(client); - retInputs.put(key + "_" + name + "_client_role", stringType); - } - return retInputs; - } + } else { + //set the client role + GetInput client = new GetInput(); + client.setBpInputName(key + "_" + name + "_client_role"); + this.setClient_role(client); + retInputs.put(key + "_" + name + "_client_role", stringType); + } + return retInputs; + } } diff --git a/mod/bpgenerator/src/test/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNodeTest.java b/mod/bpgenerator/src/test/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNodeTest.java new file mode 100644 index 0000000..684657c --- /dev/null +++ b/mod/bpgenerator/src/test/java/org/onap/blueprintgenerator/models/dmaapbp/DmaapNodeTest.java @@ -0,0 +1,201 @@ +/*============LICENSE_START======================================================= + org.onap.dcae + ================================================================================ + Copyright (c) 2020 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.blueprintgenerator.models.dmaapbp; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.when; + +import java.util.Map; +import java.util.TreeMap; +import org.junit.Test; +import org.onap.blueprintgenerator.core.TestComponentSpec; +import org.onap.blueprintgenerator.models.componentspec.Auxilary; +import org.onap.blueprintgenerator.models.componentspec.ComponentSpec; +import org.onap.blueprintgenerator.models.componentspec.Publishes; +import org.onap.blueprintgenerator.models.componentspec.Streams; +import org.onap.blueprintgenerator.models.componentspec.Subscribes; + +public class DmaapNodeTest { + + private static final String EXPECTED_DMAAP_NODE_TYPE = "dcae.nodes.ContainerizedServiceComponentUsingDmaap"; + + private static final String DATA_ROUTER_TYPE = "data_router"; + private static final String MESSAGE_ROUTER_TYPE = "message_router"; + + private static final String CONFIG_KEY = "Configkey"; + + private static final String SAMPLE_FORMAT = "Format"; + private static final String SAMPLE_VERSION = "1.0.0"; + private static final String SAMPLE_ROUTE = "SampleRoute"; + private static final String TYPE = "type"; + private static final String TARGET = "target"; + + + @Test + public void dmaapNodeShouldHaveExpectedNodeType() { + + ComponentSpec mockedComponentSpec = getSpiedComponentSpecWithoutRelationships(); + + DmaapNode dmaapNode = new DmaapNode(); + dmaapNode.createDmaapNode(mockedComponentSpec, new TreeMap<>(), ""); + + assertEquals(EXPECTED_DMAAP_NODE_TYPE, dmaapNode.getType()); + } + + @Test + public void createdDmaapNodeShouldHaveRelationshipWithTypeAndTargetForMessageRouterPublishes() { + ComponentSpec componentSpec = getSpiedComponentSpecWithoutRelationships(); + + Streams streams = new Streams(); + streams.setSubscribes(new Subscribes[0]); + streams.setPublishes(createSamplePublishes(MESSAGE_ROUTER_TYPE)); + + when(componentSpec.getStreams()).thenReturn(streams); + DmaapNode dmaapNode = new DmaapNode(); + dmaapNode.createDmaapNode(componentSpec, new TreeMap<>(), ""); + + Map relationship = dmaapNode.getRelationships().get(0); + + assertNotNull(relationship.get(TYPE)); + assertNotNull(relationship.get(TARGET)); + } + + @Test + public void createdDmaapNodeShouldHaveRelationshipWithTypeAndTargetForDataRouterPublishes() { + ComponentSpec componentSpec = getSpiedComponentSpecWithoutRelationships(); + + Streams streams = new Streams(); + streams.setSubscribes(new Subscribes[0]); + streams.setPublishes(createSamplePublishes(DATA_ROUTER_TYPE)); + + when(componentSpec.getStreams()).thenReturn(streams); + DmaapNode dmaapNode = new DmaapNode(); + dmaapNode.createDmaapNode(componentSpec, new TreeMap<>(), ""); + + Map relationship = dmaapNode.getRelationships().get(0); + + assertNotNull(relationship.get(TYPE)); + assertNotNull(relationship.get(TARGET)); + } + + @Test + public void createdDmaapNodeShouldHaveRelationshipWithTypeAndTargetForMessageRouterSubscribes() { + ComponentSpec componentSpec = getSpiedComponentSpecWithoutRelationships(); + + Streams streams = new Streams(); + streams.setSubscribes(createSampleSubscribes(MESSAGE_ROUTER_TYPE)); + streams.setPublishes(new Publishes[0]); + + when(componentSpec.getStreams()).thenReturn(streams); + DmaapNode dmaapNode = new DmaapNode(); + dmaapNode.createDmaapNode(componentSpec, new TreeMap<>(), ""); + + Map relationship = dmaapNode.getRelationships().get(0); + + assertNotNull(relationship.get(TYPE)); + assertNotNull(relationship.get(TARGET)); + } + + @Test + public void createdDmaapNodeShouldHaveRelationshipWithTypeAndTargetForDataRouterSubscribes() { + ComponentSpec componentSpec = getSpiedComponentSpecWithoutRelationships(); + + Streams streams = new Streams(); + streams.setSubscribes(createSampleSubscribes(DATA_ROUTER_TYPE)); + streams.setPublishes(new Publishes[0]); + + when(componentSpec.getStreams()).thenReturn(streams); + DmaapNode dmaapNode = new DmaapNode(); + dmaapNode.createDmaapNode(componentSpec, new TreeMap<>(), ""); + + Map relationship = dmaapNode.getRelationships().get(0); + + assertNotNull(relationship.get(TYPE)); + assertNotNull(relationship.get(TARGET)); + } + + @Test + public void createFeedNodeShouldSetFeedNodeType() { + ComponentSpec componentSpec = getSpiedComponentSpecWithoutRelationships(); + + DmaapNode dmaapNode = new DmaapNode(); + dmaapNode.createFeedNode(componentSpec, new TreeMap<>() ,""); + + assertTrue(dmaapNode.getType().endsWith("Feed")); + } + + @Test + public void createTopicNodeShouldSetTopicNodeType() { + + ComponentSpec componentSpec = getSpiedComponentSpecWithoutRelationships(); + + DmaapNode dmaapNode = new DmaapNode(); + dmaapNode.createTopicNode(componentSpec, new TreeMap<>() ,""); + + assertTrue(dmaapNode.getType().endsWith("Topic")); + } + + private Publishes[] createSamplePublishes(String type) { + Publishes publishes = new Publishes(); + + publishes.setType(type); + publishes.setConfig_key(CONFIG_KEY); + publishes.setFormat(SAMPLE_FORMAT); + publishes.setVersion(SAMPLE_VERSION); + publishes.setRoute(SAMPLE_ROUTE); + + return new Publishes[]{publishes}; + } + + private Subscribes[] createSampleSubscribes(String type) { + Subscribes subscribes = new Subscribes(); + + subscribes.setType(type); + subscribes.setConfig_key(CONFIG_KEY); + subscribes.setFormat(SAMPLE_FORMAT); + subscribes.setVersion(SAMPLE_VERSION); + subscribes.setRoute(SAMPLE_ROUTE); + + return new Subscribes[]{subscribes}; + } + + private ComponentSpec getSpiedComponentSpecWithoutRelationships() { + ComponentSpec baseComponentSpec = new ComponentSpec(); + baseComponentSpec.createComponentSpecFromString(new TestComponentSpec().getCs()); + ComponentSpec componentSpec = spy(baseComponentSpec); + + Streams streams = new Streams(); + streams.setSubscribes(new Subscribes[0]); + streams.setPublishes(new Publishes[0]); + when(componentSpec.getStreams()).thenReturn(streams); + + Auxilary auxilary = spy(baseComponentSpec.getAuxilary()); + when(auxilary.getDatabases()).thenReturn(null); + + when(componentSpec.getAuxilary()).thenReturn(auxilary); + when(componentSpec.getPolicyInfo()).thenReturn(null); + + return componentSpec; + + } +} diff --git a/mod/bpgenerator/version.properties b/mod/bpgenerator/version.properties index 303a703..3f9d877 100644 --- a/mod/bpgenerator/version.properties +++ b/mod/bpgenerator/version.properties @@ -1,6 +1,6 @@ major=1 minor=5 -patch=1 +patch=2 base_version=${major}.${minor}.${patch} release_version=${base_version} snapshot_version=${base_version}-SNAPSHOT -- cgit 1.2.3-korg