From 12700b07bf4850f7de97b69e9b2fcc96e0540b21 Mon Sep 17 00:00:00 2001 From: sebdet Date: Thu, 25 Apr 2019 12:24:45 +0200 Subject: [PATCH 1/1] Rework code for policy type Rework unit tests + test resources and code for policy type renaming Issue-ID: CLAMP-356 Change-Id: Id64c620b42347d6f5535523f33a0a04a54a60fa2 Signed-off-by: sebdet --- .../sdc/controller/installer/BlueprintParser.java | 2 +- .../clamp/clds/tosca/ToscaSchemaConstants.java | 2 +- .../controller/installer/BlueprintParserTest.java | 6 +++--- .../microservice/MicroServicePayloadTest.java | 2 +- .../resources/example/sdc/blueprint-dcae/tca.yaml | 2 +- .../example/sdc/blueprint-dcae/tca_2.yaml | 2 +- .../example/sdc/blueprint-dcae/tca_3.yaml | 2 +- .../example/sdc/expected-result/policy-data.yaml | 2 +- .../example/sdc/service-Vloadbalancerms-csar.csar | Bin 110668 -> 110734 bytes .../tosca/micro-service-policy-payload.json | 2 +- src/test/resources/tosca/tosca_example.yaml | 2 +- 11 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java index 5dcffd61..809904f2 100644 --- a/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java +++ b/src/main/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParser.java @@ -89,7 +89,7 @@ public class BlueprintParser { } String msName = theBiggestMicroServiceKey.toLowerCase().contains(HOLMES_PREFIX) ? HOLMES : TCA; return Collections - .singletonList(new MicroService(msName, "onap.policy.monitoring.cdap.tca.hi.lo.app", "", "", "")); + .singletonList(new MicroService(msName, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", "", "")); } String getName(Entry entry) { diff --git a/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java b/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java index f1344723..595b1805 100644 --- a/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java +++ b/src/main/java/org/onap/clamp/clds/tosca/ToscaSchemaConstants.java @@ -58,7 +58,7 @@ public class ToscaSchemaConstants { public static final String PATTERN = "pattern"; // Prefix for policy nodes - public static final String POLICY_NODE = "onap.policy."; + public static final String POLICY_NODE = "onap.policies."; // Prefix for data nodes public static final String POLICY_DATA = "onap.datatypes."; diff --git a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java index e86fb27d..211bb390 100644 --- a/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java +++ b/src/test/java/org/onap/clamp/clds/sdc/controller/installer/BlueprintParserTest.java @@ -163,8 +163,8 @@ public class BlueprintParserTest { @Test public void fallBackToOneMicroServiceTCATest() { - MicroService tcaMS = new MicroService(BlueprintParser.TCA, "onap.policy.monitoring.cdap.tca.hi.lo.app", "", "", - ""); + MicroService tcaMS = new MicroService(BlueprintParser.TCA, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", + "", ""); List expected = Collections.singletonList(tcaMS); List actual = new BlueprintParser().fallbackToOneMicroService(microServiceBlueprintOldStyleTCA); @@ -174,7 +174,7 @@ public class BlueprintParserTest { @Test public void fallBackToOneMicroServiceHolmesTest() { - MicroService holmesMS = new MicroService(BlueprintParser.HOLMES, "onap.policy.monitoring.cdap.tca.hi.lo.app", + MicroService holmesMS = new MicroService(BlueprintParser.HOLMES, "onap.policies.monitoring.cdap.tca.hi.lo.app", "", "", ""); List expected = Collections.singletonList(holmesMS); diff --git a/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java index c511f341..68925a91 100644 --- a/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java +++ b/src/test/java/org/onap/clamp/policy/microservice/MicroServicePayloadTest.java @@ -37,7 +37,7 @@ public class MicroServicePayloadTest { @Test public void testPayloadConstruction() throws IOException { - MicroServicePolicy policy = new MicroServicePolicy("testPolicy", "onap.policy.monitoring.cdap.tca.hi.lo.app", + MicroServicePolicy policy = new MicroServicePolicy("testPolicy", "onap.policies.monitoring.cdap.tca.hi.lo.app", ResourceFileUtil.getResourceAsString("tosca/tosca_example.yaml"), false, new HashSet<>()); policy.setProperties(JsonUtils.GSON.fromJson( ResourceFileUtil.getResourceAsString("tosca/micro-service-policy-properties.json"), JsonObject.class)); diff --git a/src/test/resources/example/sdc/blueprint-dcae/tca.yaml b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml index b2bf8bb9..edaa0be2 100644 --- a/src/test/resources/example/sdc/blueprint-dcae/tca.yaml +++ b/src/test/resources/example/sdc/blueprint-dcae/tca.yaml @@ -17,7 +17,7 @@ node_templates: properties: policy_id: get_input: policy_id - policy_type_id: onap.policy.monitoring.cdap.tca.hi.lo.app + policy_type_id: onap.policies.monitoring.cdap.tca.hi.lo.app cdap_host_host: type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure properties: diff --git a/src/test/resources/example/sdc/blueprint-dcae/tca_2.yaml b/src/test/resources/example/sdc/blueprint-dcae/tca_2.yaml index fb042575..c834b1b9 100644 --- a/src/test/resources/example/sdc/blueprint-dcae/tca_2.yaml +++ b/src/test/resources/example/sdc/blueprint-dcae/tca_2.yaml @@ -166,5 +166,5 @@ node_templates: properties: policy_id: get_input: policy_id - policy_type_id: onap.policy.monitoring.cdap.tca.hi.lo.app + policy_type_id: onap.policies.monitoring.cdap.tca.hi.lo.app diff --git a/src/test/resources/example/sdc/blueprint-dcae/tca_3.yaml b/src/test/resources/example/sdc/blueprint-dcae/tca_3.yaml index b2bf8bb9..edaa0be2 100644 --- a/src/test/resources/example/sdc/blueprint-dcae/tca_3.yaml +++ b/src/test/resources/example/sdc/blueprint-dcae/tca_3.yaml @@ -17,7 +17,7 @@ node_templates: properties: policy_id: get_input: policy_id - policy_type_id: onap.policy.monitoring.cdap.tca.hi.lo.app + policy_type_id: onap.policies.monitoring.cdap.tca.hi.lo.app cdap_host_host: type: dcae.nodes.StreamingAnalytics.SelectedCDAPInfrastructure properties: diff --git a/src/test/resources/example/sdc/expected-result/policy-data.yaml b/src/test/resources/example/sdc/expected-result/policy-data.yaml index 7f2c4847..2d315311 100644 --- a/src/test/resources/example/sdc/expected-result/policy-data.yaml +++ b/src/test/resources/example/sdc/expected-result/policy-data.yaml @@ -135,7 +135,7 @@ policy_types: tosca.policies.Monitoring: derived_from: tosca.policies.Root description: A base policy type for all policies that governs monitoring provisioning - onap.policy.monitoring.cdap.tca.hi.lo.app: + onap.policies.monitoring.cdap.tca.hi.lo.app: derived_from: tosca.policies.Monitoring version: 1.0.0 properties: diff --git a/src/test/resources/example/sdc/service-Vloadbalancerms-csar.csar b/src/test/resources/example/sdc/service-Vloadbalancerms-csar.csar index b5fe39d31499e7bf6ea45a394dd89b42e6f1b2a4..727ef16b7098f680acb982d71c0664064c2a8c7f 100755 GIT binary patch delta 9606 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