diff options
Diffstat (limited to 'models-tosca/src/test')
6 files changed, 798 insertions, 37 deletions
diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java new file mode 100644 index 000000000..4dd55d562 --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/TestPojos.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import com.openpojo.reflection.filters.FilterPackageInfo; +import com.openpojo.validation.Validator; +import com.openpojo.validation.ValidatorBuilder; +import com.openpojo.validation.rule.impl.GetterMustExistRule; +import com.openpojo.validation.rule.impl.SetterMustExistRule; +import com.openpojo.validation.test.impl.GetterTester; +import com.openpojo.validation.test.impl.SetterTester; +import org.junit.Test; +import org.onap.policy.common.utils.validation.ToStringTester; + +/** + * Class to perform unit tests of all pojos + * + * @author Chenfei Gao (cgao@research.att.com) + * + */ +public class TestPojos { + + private static final String POJO_PACKAGE = "org.onap.policy.models.tosca.authorative.concepts"; + + @Test + public void testPojos() { + final Validator validator = ValidatorBuilder.create().with(new ToStringTester()) + .with(new SetterMustExistRule()).with(new GetterMustExistRule()).with(new SetterTester()) + .with(new GetterTester()).build(); + validator.validate(POJO_PACKAGE, new FilterPackageInfo()); + } +} diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapperTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapperTest.java new file mode 100644 index 000000000..bd6b26bb9 --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/mapping/PlainToscaServiceTemplateMapperTest.java @@ -0,0 +1,94 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP Policy Model + * ================================================================================ + * Copyright (C) 2019 AT&T 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.mapping; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; +import java.io.IOException; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.tosca.authorative.concepts.PlainToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; +import org.yaml.snakeyaml.Yaml; + +/** + * This class performs unit test of {@link PlainToscaServiceTemplateMapper}} + * + * @author Chenfei Gao (cgao@research.att.com) + */ +public class PlainToscaServiceTemplateMapperTest { + + private Gson defaultGson; + private PlainToscaServiceTemplateMapper mapper; + + @Before + public void setUp() { + defaultGson = new Gson(); + mapper = new PlainToscaServiceTemplateMapper(); + } + + @Test + public void testPlainToscaPolicies() throws JsonSyntaxException, IOException { + try { + String inputJson = ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"); + + PlainToscaServiceTemplate plainPolicies = defaultGson.fromJson(inputJson, PlainToscaServiceTemplate.class); + ToscaServiceTemplate internalPolicies = mapper.toToscaServiceTemplate(plainPolicies); + assertTrue(internalPolicies.validate(new PfValidationResult()).isValid()); + PlainToscaServiceTemplate plainPolicies2 = mapper.fromToscaServiceTemplate(internalPolicies); + assertTrue(plainPolicies.equals(plainPolicies2)); + + } catch (Exception e) { + fail("no exception should be thrown"); + } + } + + @Test + public void testPlainToscaPolicyTypes() throws JsonSyntaxException, IOException { + try { + Yaml yaml = new Yaml(); + String inputYaml = ResourceUtils.getResourceAsString( + "policytypes/onap.policy.monitoring.cdap.tca.hi.lo.app.yaml"); + Object yamlObject = yaml.load(inputYaml); + String yamlAsJsonString = defaultGson.toJson(yamlObject); + + PlainToscaServiceTemplate plainPolicyTypes = defaultGson.fromJson(yamlAsJsonString, + PlainToscaServiceTemplate.class); + ToscaServiceTemplate internalPolicyTypes = mapper.toToscaServiceTemplate(plainPolicyTypes); + assertTrue(internalPolicyTypes.validate(new PfValidationResult()).isValid()); + PlainToscaServiceTemplate plainPolicyTypes2 = mapper.fromToscaServiceTemplate(internalPolicyTypes); + ToscaServiceTemplate internalPolicyTypes2 = mapper.toToscaServiceTemplate(plainPolicyTypes2); + assertTrue(internalPolicyTypes2.validate(new PfValidationResult()).isValid()); + assertTrue(internalPolicyTypes.compareTo(internalPolicyTypes2) == 0); + + } catch (Exception e) { + fail("no exception should be thrown"); + } + + } +} diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTest.java index 807f33ed2..01c1377b9 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPolicyTest.java @@ -37,7 +37,7 @@ import org.onap.policy.models.base.PfValidationResult; import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; /** - * DAO test for ToscaDatatype. + * DAO test for ToscaPolicy. * * @author Liam Fallon (liam.fallon@est.tech) */ @@ -171,4 +171,4 @@ public class ToscaPolicyTest { assertEquals("resultIn is marked @NonNull but is null", exc.getMessage()); } } -} +}
\ No newline at end of file diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPropertyTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPropertyTest.java index a33da605e..0fcf96a89 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPropertyTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/ToscaPropertyTest.java @@ -99,8 +99,7 @@ public class ToscaPropertyTest { tp.setRequired(false); assertFalse(tp.isRequired()); - PfConceptKey tdefaultKey = new PfConceptKey("defaultKey", "0.0.1"); - tp.setDefaultValue(tdefaultKey); + tp.setDefaultValue("defaultKey"); tp.setStatus(ToscaProperty.Status.SUPPORTED); @@ -141,7 +140,7 @@ public class ToscaPropertyTest { assertFalse(tp.compareTo(otherDt) == 0); otherDt.setRequired(false); assertFalse(tp.compareTo(otherDt) == 0); - otherDt.setDefaultValue(tdefaultKey); + otherDt.setDefaultValue("defaultKey"); assertFalse(tp.compareTo(otherDt) == 0); otherDt.setStatus(ToscaProperty.Status.SUPPORTED); assertFalse(tp.compareTo(otherDt) == 0); @@ -168,7 +167,7 @@ public class ToscaPropertyTest { assertEquals("target is marked @NonNull but is null", exc.getMessage()); } - assertEquals(6, tp.getKeys().size()); + assertEquals(5, tp.getKeys().size()); assertEquals(2, new ToscaProperty().getKeys().size()); new ToscaProperty().clean(); @@ -197,12 +196,7 @@ public class ToscaPropertyTest { tp.setDefaultValue(null); assertTrue(tp.validate(new PfValidationResult()).isValid()); - tp.setDefaultValue(tdefaultKey); - assertTrue(tp.validate(new PfValidationResult()).isValid()); - - tp.setDefaultValue(PfConceptKey.getNullKey()); - assertFalse(tp.validate(new PfValidationResult()).isValid()); - tp.setDefaultValue(tdefaultKey); + tp.setDefaultValue("defaultKey"); assertTrue(tp.validate(new PfValidationResult()).isValid()); tp.getConstraints().add(null); diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java index 95f0ac971..e49156330 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicySerializationTest.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2019 AT&T 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. @@ -23,17 +24,22 @@ package org.onap.policy.models.tosca.simple.serialization; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; import java.io.IOException; - +import java.util.Map; import org.junit.Before; import org.junit.Test; import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.tosca.simple.concepts.ToscaPolicy; import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler; import org.slf4j.Logger; @@ -44,11 +50,19 @@ import org.yaml.snakeyaml.Yaml; * Test serialization of monitoring policies. * * @author Liam Fallon (liam.fallon@est.tech) + * @author Chenfei Gao (cgao@research.att.com) */ public class MonitoringPolicySerializationTest { - // Logger for this class + private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPolicySerializationTest.class); + private static final String VCPE_MONITORING_INPUT_JSON = "policies/vCPE.policy.monitoring.input.tosca.json"; + private static final String VCPE_MONITORING_INPUT_YAML = "policies/vCPE.policy.monitoring.input.tosca.yaml"; + private static final String VDNS_MONITORING_INPUT_JSON = "policies/vDNS.policy.monitoring.input.tosca.json"; + private static final String VDNS_MONITORING_INPUT_YAML = "policies/vDNS.policy.monitoring.input.tosca.yaml"; + private static final String VFW_MONITORING_INPUT_JSON = "policies/vFirewall.policy.monitoring.input.tosca.json"; + private static final String VFW_MONITORING_INPUT_YAML = "policies/vFirewall.policy.monitoring.input.tosca.yaml"; + private Gson gson; @Before @@ -57,48 +71,231 @@ public class MonitoringPolicySerializationTest { } @Test - public void testJsonDeserialization() throws JsonSyntaxException, IOException { - String vcpePolicyJson = ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.json"); + public void testDeserialization() { + try { + // vCPE + ToscaServiceTemplate serviceTemplateFromJson = deserializeMonitoringInputJson(VCPE_MONITORING_INPUT_JSON); + verifyVcpeMonitoringInputDeserialization(serviceTemplateFromJson); + ToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(VCPE_MONITORING_INPUT_YAML); + assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0); + + // vDNS + serviceTemplateFromJson = deserializeMonitoringInputJson(VDNS_MONITORING_INPUT_JSON); + verifyVdnsMonitoringInputDeserialization(serviceTemplateFromJson); + serviceTemplateFromYaml = deserializeMonitoringInputYaml(VDNS_MONITORING_INPUT_YAML); + assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0); + + // vFirewall + serviceTemplateFromJson = deserializeMonitoringInputJson(VFW_MONITORING_INPUT_JSON); + verifyVfwMonitoringInputDeserialization(serviceTemplateFromJson); + serviceTemplateFromYaml = deserializeMonitoringInputYaml(VFW_MONITORING_INPUT_YAML); + assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0); + + } catch (Exception e) { + fail("No exception should be thrown"); + } + } + + @Test + public void testSerialization() { + try { + // vCPE + ToscaServiceTemplate serviceTemplate = deserializeMonitoringInputJson(VCPE_MONITORING_INPUT_JSON); + String serializedServiceTemplate = serializeMonitoringServiceTemplate(serviceTemplate); + verifyVcpeMonitoringOutputserialization(serializedServiceTemplate); + + // vDNS + serviceTemplate = deserializeMonitoringInputJson(VDNS_MONITORING_INPUT_JSON); + serializedServiceTemplate = serializeMonitoringServiceTemplate(serviceTemplate); + verifyVdnsMonitoringOutputserialization(serializedServiceTemplate); + + // vFirewall + serviceTemplate = deserializeMonitoringInputJson(VFW_MONITORING_INPUT_JSON); + serializedServiceTemplate = serializeMonitoringServiceTemplate(serviceTemplate); + verifyVfwMonitoringOutputserialization(serializedServiceTemplate); + + } catch (Exception e) { + fail("No exception should be thrown"); + } + } + + private ToscaServiceTemplate deserializeMonitoringInputJson(String resourcePath) + throws JsonSyntaxException, IOException { - ToscaServiceTemplate serviceTemplate = gson.fromJson(vcpePolicyJson, ToscaServiceTemplate.class); + String policyJson = ResourceUtils.getResourceAsString(resourcePath); + ToscaServiceTemplate serviceTemplate = gson.fromJson(policyJson, ToscaServiceTemplate.class); + return serviceTemplate; + } + + private ToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath) + throws JsonSyntaxException, IOException { + + Yaml yaml = new Yaml(); + String policyYaml = ResourceUtils.getResourceAsString(resourcePath); + Object yamlObject = yaml.load(policyYaml); + String yamlAsJsonString = new Gson().toJson(yamlObject); + ToscaServiceTemplate serviceTemplate = gson.fromJson(yamlAsJsonString, ToscaServiceTemplate.class); + return serviceTemplate; + } + + private String serializeMonitoringServiceTemplate(ToscaServiceTemplate serviceTemplate) { + return gson.toJson(serviceTemplate); + } + + private void verifyVcpeMonitoringInputDeserialization(ToscaServiceTemplate serviceTemplate) { + + // Sanity check the entire structure assertNotNull(serviceTemplate); LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString()); assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid()); + // Check tosca_definitions_version + assertEquals("tosca_simple_yaml_1_0_0", + serviceTemplate.getToscaDefinitionsVersion()); + + Map<PfConceptKey, ToscaPolicy> policiesConceptMap = serviceTemplate.getTopologyTemplate() + .getPolicies().getConceptMap(); + + // Check policies + assertTrue(policiesConceptMap.size() == 1); + assertEquals("onap.restart.tca", policiesConceptMap.keySet().iterator().next().getName()); assertEquals("onap.restart.tca:1.0.0", serviceTemplate.getTopologyTemplate().getPolicies().get("onap.restart.tca").getId()); - String reserializedString = gson.toJson(serviceTemplate, ToscaServiceTemplate.class); - assertEquals(vcpePolicyJson.replaceAll("\\s+", ""), reserializedString.replaceAll("\\s+", "")); + ToscaPolicy policyVal = policiesConceptMap.values().iterator().next(); + + // Check metadata + assertTrue(policyVal.getMetadata().size() == 1); + assertEquals("policy-id", policyVal.getMetadata().entrySet().iterator().next().getKey()); + assertEquals("onap.restart.tca", policyVal.getMetadata().entrySet().iterator().next().getValue()); - ToscaServiceTemplate serviceTemplate2 = gson.fromJson(reserializedString, ToscaServiceTemplate.class); - assertNotNull(serviceTemplate2); - assertEquals(serviceTemplate, serviceTemplate2); + // Check properties + assertTrue(policiesConceptMap.values().iterator().next().getProperties().size() == 1); + assertEquals("tca_policy", policyVal.getProperties().keySet().iterator().next()); + assertNotNull(policyVal.getProperties().values().iterator().next()); } - @Test - public void testYamlDeserialization() throws JsonSyntaxException, IOException { - Yaml yaml = new Yaml(); + private void verifyVdnsMonitoringInputDeserialization(ToscaServiceTemplate serviceTemplate) { - String vcpePolicyYaml = ResourceUtils.getResourceAsString("policies/vCPE.policy.monitoring.input.tosca.yaml"); - Object yamlObject = yaml.load(vcpePolicyYaml); + // Sanity check the entire structure + assertNotNull(serviceTemplate); + LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString()); + assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid()); - String yamlAsJsonString = new GsonBuilder().setPrettyPrinting().create().toJson(yamlObject); + // Check tosca_definitions_version + assertEquals("tosca_simple_yaml_1_0_0", + serviceTemplate.getToscaDefinitionsVersion()); - ToscaServiceTemplate serviceTemplate = gson.fromJson(yamlAsJsonString, ToscaServiceTemplate.class); + Map<PfConceptKey, ToscaPolicy> policiesConceptMap = serviceTemplate.getTopologyTemplate() + .getPolicies().getConceptMap(); + + // Check policies + assertTrue(policiesConceptMap.size() == 1); + assertEquals("onap.scaleout.tca", policiesConceptMap.keySet().iterator().next().getName()); + assertEquals("onap.scaleout.tca:1.0.0", + serviceTemplate.getTopologyTemplate().getPolicies().get("onap.scaleout.tca").getId()); + ToscaPolicy policyVal = policiesConceptMap.values().iterator().next(); + + // Check metadata + assertTrue(policyVal.getMetadata().size() == 1); + assertEquals("policy-id", policyVal.getMetadata().entrySet().iterator().next().getKey()); + assertEquals("onap.scaleout.tca", policyVal.getMetadata().entrySet().iterator().next().getValue()); + + // Check properties + assertTrue(policiesConceptMap.values().iterator().next().getProperties().size() == 1); + assertEquals("tca_policy", policyVal.getProperties().keySet().iterator().next()); + assertNotNull(policyVal.getProperties().values().iterator().next()); + } + + private void verifyVfwMonitoringInputDeserialization(ToscaServiceTemplate serviceTemplate) { + + // Sanity check the entire structure assertNotNull(serviceTemplate); LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString()); assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid()); - assertEquals("onap.restart.tca:1.0.0", - serviceTemplate.getTopologyTemplate().getPolicies().get("onap.restart.tca").getId()); + // Check tosca_definitions_version + assertEquals("tosca_simple_yaml_1_0_0", + serviceTemplate.getToscaDefinitionsVersion()); + + Map<PfConceptKey, ToscaPolicy> policiesConceptMap = serviceTemplate.getTopologyTemplate() + .getPolicies().getConceptMap(); + + // Check policies + assertTrue(policiesConceptMap.size() == 1); + assertEquals("onap.vfirewall.tca", policiesConceptMap.keySet().iterator().next().getName()); + assertEquals("onap.vfirewall.tca:1.0.0", + serviceTemplate.getTopologyTemplate().getPolicies().get("onap.vfirewall.tca").getId()); + + ToscaPolicy policyVal = policiesConceptMap.values().iterator().next(); + + // Check metadata + assertTrue(policyVal.getMetadata().size() == 1); + assertEquals("policy-id", policyVal.getMetadata().entrySet().iterator().next().getKey()); + assertEquals("onap.vfirewall.tca", policyVal.getMetadata().entrySet().iterator().next().getValue()); + + // Check properties + assertTrue(policiesConceptMap.values().iterator().next().getProperties().size() == 1); + assertEquals("tca_policy", policyVal.getProperties().keySet().iterator().next()); + assertNotNull(policyVal.getProperties().values().iterator().next()); + } + + private void verifyVcpeMonitoringOutputserialization(String serializedServiceTemplate) { + + JsonObject serviceTemplateJsonObject = new JsonParser().parse(serializedServiceTemplate).getAsJsonObject(); + assertEquals("tosca_simple_yaml_1_0_0", serviceTemplateJsonObject.get("tosca_definitions_version") + .getAsString()); + JsonObject topologyTemplateJsonObject = serviceTemplateJsonObject.get("topology_template") + .getAsJsonObject(); + JsonArray policiesJsonArray = topologyTemplateJsonObject.get("policies").getAsJsonArray(); + assertTrue(policiesJsonArray.size() == 1); + JsonObject policy = policiesJsonArray.iterator().next().getAsJsonObject(); + assertNotNull(policy.get("onap.restart.tca")); + JsonObject policyVal = policy.get("onap.restart.tca").getAsJsonObject(); + assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app", policyVal.get("type").getAsString()); + assertEquals("1.0.0", policyVal.get("version").getAsString()); + assertEquals("onap.restart.tca", policyVal.get("metadata").getAsJsonObject().get("policy-id") + .getAsString()); + JsonObject properties = policyVal.get("properties").getAsJsonObject(); + assertNotNull(properties.get("tca_policy")); + } + + private void verifyVdnsMonitoringOutputserialization(String serializedServiceTemplate) { + + JsonObject serviceTemplateJsonObject = new JsonParser().parse(serializedServiceTemplate).getAsJsonObject(); + assertEquals("tosca_simple_yaml_1_0_0", serviceTemplateJsonObject.get("tosca_definitions_version") + .getAsString()); + JsonObject topologyTemplateJsonObject = serviceTemplateJsonObject.get("topology_template").getAsJsonObject(); + JsonArray policiesJsonArray = topologyTemplateJsonObject.get("policies").getAsJsonArray(); + assertTrue(policiesJsonArray.size() == 1); + JsonObject policy = policiesJsonArray.iterator().next().getAsJsonObject(); + assertNotNull(policy.get("onap.scaleout.tca")); + JsonObject policyVal = policy.get("onap.scaleout.tca").getAsJsonObject(); + assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app", policyVal.get("type").getAsString()); + assertEquals("1.0.0", policyVal.get("version").getAsString()); + assertEquals("onap.scaleout.tca", policyVal.get("metadata").getAsJsonObject().get("policy-id") + .getAsString()); + JsonObject properties = policyVal.get("properties").getAsJsonObject(); + assertNotNull(properties.get("tca_policy")); + } - String reserializedString = gson.toJson(serviceTemplate, ToscaServiceTemplate.class); - assertEquals(yamlAsJsonString.replaceAll("\\s+", ""), reserializedString.replaceAll("\\s+", "")); + private void verifyVfwMonitoringOutputserialization(String serializedServiceTemplate) { - ToscaServiceTemplate serviceTemplate2 = gson.fromJson(reserializedString, ToscaServiceTemplate.class); - assertNotNull(serviceTemplate2); - assertEquals(serviceTemplate, serviceTemplate2); + JsonObject serviceTemplateJsonObject = new JsonParser().parse(serializedServiceTemplate).getAsJsonObject(); + assertEquals("tosca_simple_yaml_1_0_0", serviceTemplateJsonObject.get("tosca_definitions_version") + .getAsString()); + JsonObject topologyTemplateJsonObject = serviceTemplateJsonObject.get("topology_template").getAsJsonObject(); + JsonArray policiesJsonArray = topologyTemplateJsonObject.get("policies").getAsJsonArray(); + assertTrue(policiesJsonArray.size() == 1); + JsonObject policy = policiesJsonArray.iterator().next().getAsJsonObject(); + assertNotNull(policy.get("onap.vfirewall.tca")); + JsonObject policyVal = policy.get("onap.vfirewall.tca").getAsJsonObject(); + assertEquals("onap.policy.monitoring.cdap.tca.hi.lo.app", policyVal.get("type").getAsString()); + assertEquals("1.0.0", policyVal.get("version").getAsString()); + assertEquals("onap.vfirewall.tca", policyVal.get("metadata").getAsJsonObject().get("policy-id") + .getAsString()); + JsonObject properties = policyVal.get("properties").getAsJsonObject(); + assertNotNull(properties.get("tca_policy")); } } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java new file mode 100644 index 000000000..c40b32e3c --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/serialization/MonitoringPolicyTypeSerializationTest.java @@ -0,0 +1,424 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2019 AT&T 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.simple.serialization; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; + +import java.io.IOException; +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfConceptKey; +import org.onap.policy.models.base.PfValidationResult; +import org.onap.policy.models.tosca.simple.concepts.ToscaConstraintLogicalString; +import org.onap.policy.models.tosca.simple.concepts.ToscaConstraintValidValues; +import org.onap.policy.models.tosca.simple.concepts.ToscaDataType; +import org.onap.policy.models.tosca.simple.concepts.ToscaEntrySchema; +import org.onap.policy.models.tosca.simple.concepts.ToscaPolicyType; +import org.onap.policy.models.tosca.simple.concepts.ToscaProperty; +import org.onap.policy.models.tosca.simple.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.yaml.snakeyaml.Yaml; + +/** + * Test serialization of monitoring policy types. + * + * @author Chenfei Gao (cgao@research.att.com) + */ +public class MonitoringPolicyTypeSerializationTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPolicyTypeSerializationTest.class); + + private static final String MONITORING_TCA_YAML = "policytypes/onap.policy.monitoring.cdap.tca.hi.lo.app.yaml"; + private static final String MONITORING_COLLECTORS_YAML = + "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml"; + + private Gson gson; + + @Before + public void setUp() { + gson = new ToscaServiceTemplateMessageBodyHandler().getGson(); + } + + @Test + public void testDeserialization() { + try { + // TCA + ToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML); + verifyTcaInputDeserialization(serviceTemplateFromYaml); + + // Collector + serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML); + verifyCollectorInputDeserialization(serviceTemplateFromYaml); + + } catch (Exception e) { + fail("No exception should be thrown"); + } + } + + @Test + public void testSerialization() { + try { + // TCA + ToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML); + String serializedServiceTemplate1 = serializeMonitoringServiceTemplate(serviceTemplateFromYaml); + ToscaServiceTemplate serviceTemplateFromJson = gson.fromJson(serializedServiceTemplate1, + ToscaServiceTemplate.class); + String serializedServiceTemplate2 = serializeMonitoringServiceTemplate(serviceTemplateFromJson); + assertEquals(serializedServiceTemplate1, serializedServiceTemplate2); + + // Collector + serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML); + serializedServiceTemplate1 = serializeMonitoringServiceTemplate(serviceTemplateFromYaml); + serviceTemplateFromJson = gson.fromJson(serializedServiceTemplate1, ToscaServiceTemplate.class); + serializedServiceTemplate2 = serializeMonitoringServiceTemplate(serviceTemplateFromJson); + assertEquals(serializedServiceTemplate1, serializedServiceTemplate2); + + } catch (Exception e) { + fail("No exception should be thrown"); + } + } + + private ToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath) + throws JsonSyntaxException, IOException { + + Yaml yaml = new Yaml(); + String policyTypeYaml = ResourceUtils.getResourceAsString(resourcePath); + Object yamlObject = yaml.load(policyTypeYaml); + String yamlAsJsonString = new Gson().toJson(yamlObject); + ToscaServiceTemplate serviceTemplate = gson.fromJson(yamlAsJsonString, ToscaServiceTemplate.class); + return serviceTemplate; + } + + private void verifyTcaInputDeserialization(ToscaServiceTemplate serviceTemplate) { + + // Sanity check the entire structure + assertNotNull(serviceTemplate); + LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString()); + assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid()); + + // Check tosca_definitions_version + assertEquals("tosca_simple_yaml_1_0_0", serviceTemplate.getToscaDefinitionsVersion()); + + // Check policy_types + Map<PfConceptKey, ToscaPolicyType> policyTypesConceptMap = serviceTemplate.getPolicyTypes().getConceptMap(); + assertTrue(policyTypesConceptMap.size() == 2); + Iterator<Entry<PfConceptKey, ToscaPolicyType>> policyTypesIter = policyTypesConceptMap.entrySet().iterator(); + + Entry<PfConceptKey, ToscaPolicyType> firstPolicyType = policyTypesIter.next(); + assertEquals("onap.policies.Monitoring", firstPolicyType.getKey().getName()); + assertEquals("1.0.0", firstPolicyType.getKey().getVersion()); + assertEquals("tosca.policies.Root", firstPolicyType.getValue().getDerivedFrom().getName()); + assertEquals("a base policy type for all policies that governs monitoring provisioning", + firstPolicyType.getValue().getDescription()); + + Entry<PfConceptKey, ToscaPolicyType> secondPolicyType = policyTypesIter.next(); + assertEquals("onap.policy.monitoring.cdap.tca.hi.lo.app", secondPolicyType.getKey().getName()); + assertEquals("1.0.0", secondPolicyType.getKey().getVersion()); + assertEquals("onap.policies.Monitoring", secondPolicyType.getValue().getDerivedFrom().getName()); + assertTrue(secondPolicyType.getValue().getProperties().size() == 1); + + ToscaProperty property = secondPolicyType.getValue().getProperties().iterator().next(); + assertEquals("onap.policy.monitoring.cdap.tca.hi.lo.app", property.getKey().getParentKeyName()); + assertEquals("1.0.0", property.getKey().getParentKeyVersion()); + assertEquals("tca_policy", property.getKey().getLocalName()); + assertEquals("map", property.getType().getName()); + assertEquals("TCA Policy JSON", property.getDescription()); + + ToscaEntrySchema entrySchema = property.getEntrySchema(); + assertEquals("map", entrySchema.getKey().getParentKeyName()); + assertEquals("1.0.0", entrySchema.getKey().getParentKeyVersion()); + assertEquals("entry_schema", entrySchema.getKey().getLocalName()); + assertEquals("onap.datatypes.monitoring.tca_policy", entrySchema.getType().getName()); + + // Check data_types + Map<PfConceptKey, ToscaDataType> dataTypesConceptMap = serviceTemplate.getDataTypes().getConceptMap(); + assertTrue(dataTypesConceptMap.size() == 3); + Iterator<Entry<PfConceptKey, ToscaDataType>> dataTypesIter = dataTypesConceptMap.entrySet().iterator(); + + Entry<PfConceptKey, ToscaDataType> firstDataType = dataTypesIter.next(); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataType.getKey().getName()); + ToscaDataType firstDataTypeVal = firstDataType.getValue(); + assertEquals("tosca.datatypes.Root", firstDataTypeVal.getDerivedFrom().getName()); + assertEquals("1.0.0", firstDataTypeVal.getDerivedFrom().getVersion()); + assertTrue(firstDataTypeVal.getProperties().size() == 6); + Iterator<ToscaProperty> firstDataTypePropertiesIter = firstDataTypeVal.getProperties().iterator(); + + ToscaProperty firstDataTypeFirstProperty = firstDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeFirstProperty.getKey() + .getParentKeyName()); + assertEquals("controlLoopSchemaType", firstDataTypeFirstProperty.getKey().getLocalName()); + assertEquals("string", firstDataTypeFirstProperty.getType().getName()); + assertTrue(firstDataTypeFirstProperty.isRequired()); + assertEquals("Specifies Control Loop Schema Type for the event Name e.g. VNF, VM", + firstDataTypeFirstProperty.getDescription()); + assertTrue(firstDataTypeFirstProperty.getConstraints().size() == 1); + assertEquals("valid_values", firstDataTypeFirstProperty.getConstraints().iterator().next().getKey() + .getLocalName()); + assertEquals("string", firstDataTypeFirstProperty.getConstraints().iterator().next().getKey() + .getParentKeyName()); + assertTrue(firstDataTypeFirstProperty.getConstraints().iterator().next() + instanceof ToscaConstraintValidValues); + assertTrue(((ToscaConstraintValidValues)(firstDataTypeFirstProperty.getConstraints().iterator().next())) + .getValidValues().size() == 2); + + ToscaProperty firstDataTypeSecondProperty = firstDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeSecondProperty.getKey() + .getParentKeyName()); + assertEquals("eventName", firstDataTypeSecondProperty.getKey().getLocalName()); + assertEquals("string", firstDataTypeSecondProperty.getType().getName()); + assertTrue(firstDataTypeSecondProperty.isRequired()); + assertEquals("Event name to which thresholds need to be applied", firstDataTypeSecondProperty + .getDescription()); + + ToscaProperty firstDataTypeThirdProperty = firstDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeThirdProperty.getKey() + .getParentKeyName()); + assertEquals("policyName", firstDataTypeThirdProperty.getKey().getLocalName()); + assertEquals("string", firstDataTypeThirdProperty.getType().getName()); + assertTrue(firstDataTypeThirdProperty.isRequired()); + assertEquals("TCA Policy Scope Name", firstDataTypeThirdProperty.getDescription()); + + ToscaProperty firstDataTypeFourthProperty = firstDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeFourthProperty.getKey() + .getParentKeyName()); + assertEquals("policyScope", firstDataTypeFourthProperty.getKey().getLocalName()); + assertEquals("string", firstDataTypeFourthProperty.getType().getName()); + assertTrue(firstDataTypeFourthProperty.isRequired()); + assertEquals("TCA Policy Scope", firstDataTypeFourthProperty.getDescription()); + + ToscaProperty firstDataTypeFifthProperty = firstDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeFifthProperty.getKey() + .getParentKeyName()); + assertEquals("policyVersion", firstDataTypeFifthProperty.getKey().getLocalName()); + assertEquals("string", firstDataTypeFifthProperty.getType().getName()); + assertTrue(firstDataTypeFifthProperty.isRequired()); + assertEquals("TCA Policy Scope Version", firstDataTypeFifthProperty.getDescription()); + + ToscaProperty firstDataTypeSixthProperty = firstDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", firstDataTypeSixthProperty.getKey() + .getParentKeyName()); + assertEquals("thresholds", firstDataTypeSixthProperty.getKey().getLocalName()); + assertEquals("list", firstDataTypeSixthProperty.getType().getName()); + assertTrue(firstDataTypeSixthProperty.isRequired()); + assertEquals("Thresholds associated with eventName", firstDataTypeSixthProperty.getDescription()); + assertNotNull(firstDataTypeSixthProperty.getEntrySchema()); + assertEquals("entry_schema", firstDataTypeSixthProperty.getEntrySchema().getKey().getLocalName()); + assertEquals("list", firstDataTypeSixthProperty.getEntrySchema().getKey().getParentKeyName()); + assertEquals("onap.datatypes.monitoring.thresholds", firstDataTypeSixthProperty.getEntrySchema().getType() + .getName()); + + Entry<PfConceptKey, ToscaDataType> secondDataType = dataTypesIter.next(); + assertEquals("onap.datatypes.monitoring.tca_policy", secondDataType.getKey().getName()); + ToscaDataType secondDataTypeVal = secondDataType.getValue(); + assertEquals("tosca.datatypes.Root", secondDataTypeVal.getDerivedFrom().getName()); + assertEquals("1.0.0", secondDataTypeVal.getDerivedFrom().getVersion()); + assertTrue(secondDataTypeVal.getProperties().size() == 2); + Iterator<ToscaProperty> secondDataTypePropertiesIter = secondDataTypeVal.getProperties().iterator(); + + ToscaProperty secondDataTypeFirstProperty = secondDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.tca_policy", secondDataTypeFirstProperty.getKey().getParentKeyName()); + assertEquals("domain", secondDataTypeFirstProperty.getKey().getLocalName()); + assertEquals("string", secondDataTypeFirstProperty.getType().getName()); + assertTrue(secondDataTypeFirstProperty.isRequired()); + assertEquals("Domain name to which TCA needs to be applied", secondDataTypeFirstProperty.getDescription()); + assertEquals("measurementsForVfScaling", secondDataTypeFirstProperty.getDefaultValue()); + assertTrue(secondDataTypeFirstProperty.getConstraints().size() == 1); + assertEquals("string", secondDataTypeFirstProperty.getConstraints().iterator().next().getKey() + .getParentKeyName()); + assertEquals("equal", secondDataTypeFirstProperty.getConstraints().iterator().next().getKey().getLocalName()); + assertTrue(secondDataTypeFirstProperty.getConstraints().iterator().next() + instanceof ToscaConstraintLogicalString); + assertEquals("measurementsForVfScaling", ((ToscaConstraintLogicalString)(secondDataTypeFirstProperty + .getConstraints().iterator().next())).getCompareToString()); + + ToscaProperty secondDataTypeSecondProperty = secondDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.tca_policy", secondDataTypeSecondProperty.getKey().getParentKeyName()); + assertEquals("metricsPerEventName", secondDataTypeSecondProperty.getKey().getLocalName()); + assertEquals("list", secondDataTypeSecondProperty.getType().getName()); + assertTrue(secondDataTypeSecondProperty.isRequired()); + assertEquals("Contains eventName and threshold details that need to be applied to given eventName", + secondDataTypeSecondProperty.getDescription()); + assertNotNull(secondDataTypeSecondProperty.getEntrySchema()); + assertEquals("list", secondDataTypeSecondProperty.getEntrySchema().getKey().getParentKeyName()); + assertEquals("onap.datatypes.monitoring.metricsPerEventName", + secondDataTypeSecondProperty.getEntrySchema().getType().getName()); + assertEquals("entry_schema", secondDataTypeSecondProperty.getEntrySchema().getKey().getLocalName()); + + Entry<PfConceptKey, ToscaDataType> thirdDataType = dataTypesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataType.getKey().getName()); + ToscaDataType thirdDataTypeVal = thirdDataType.getValue(); + assertEquals("tosca.datatypes.Root", thirdDataTypeVal.getDerivedFrom().getName()); + assertEquals("1.0.0", thirdDataTypeVal.getDerivedFrom().getVersion()); + assertTrue(thirdDataTypeVal.getProperties().size() == 7); + Iterator<ToscaProperty> thirdDataTypePropertiesIter = thirdDataTypeVal.getProperties().iterator(); + + ToscaProperty thirdDataTypeFirstProperty = thirdDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeFirstProperty.getKey().getParentKeyName()); + assertEquals("closedLoopControlName", thirdDataTypeFirstProperty.getKey().getLocalName()); + assertEquals("string", thirdDataTypeFirstProperty.getType().getName()); + assertTrue(thirdDataTypeFirstProperty.isRequired()); + assertEquals("Closed Loop Control Name associated with the threshold", thirdDataTypeFirstProperty + .getDescription()); + + ToscaProperty thirdDataTypeSecondProperty = thirdDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeSecondProperty.getKey().getParentKeyName()); + assertEquals("closedLoopEventStatus", thirdDataTypeSecondProperty.getKey().getLocalName()); + assertEquals("string", thirdDataTypeSecondProperty.getType().getName()); + assertTrue(thirdDataTypeSecondProperty.isRequired()); + assertEquals("Closed Loop Event Status of the threshold", thirdDataTypeSecondProperty.getDescription()); + assertNotNull(thirdDataTypeSecondProperty.getConstraints()); + assertTrue(thirdDataTypeSecondProperty.getConstraints().size() == 1); + assertEquals("string", thirdDataTypeSecondProperty.getConstraints().iterator().next().getKey() + .getParentKeyName()); + assertEquals("valid_values", thirdDataTypeSecondProperty.getConstraints().iterator().next().getKey() + .getLocalName()); + assertTrue(thirdDataTypeSecondProperty.getConstraints().iterator().next() + instanceof ToscaConstraintValidValues); + assertTrue(((ToscaConstraintValidValues)(thirdDataTypeSecondProperty.getConstraints().iterator().next())) + .getValidValues().size() == 2); + + ToscaProperty thirdDataTypeThirdProperty = thirdDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeThirdProperty.getKey().getParentKeyName()); + assertEquals("direction", thirdDataTypeThirdProperty.getKey().getLocalName()); + assertEquals("string", thirdDataTypeThirdProperty.getType().getName()); + assertTrue(thirdDataTypeThirdProperty.isRequired()); + assertEquals("Direction of the threshold", thirdDataTypeThirdProperty.getDescription()); + assertNotNull(thirdDataTypeThirdProperty.getConstraints()); + assertTrue(thirdDataTypeThirdProperty.getConstraints().size() == 1); + assertEquals("string", thirdDataTypeThirdProperty.getConstraints().iterator().next().getKey() + .getParentKeyName()); + assertEquals("valid_values", thirdDataTypeThirdProperty.getConstraints().iterator().next().getKey() + .getLocalName()); + assertTrue(((ToscaConstraintValidValues)(thirdDataTypeThirdProperty.getConstraints().iterator().next())) + .getValidValues().size() == 5); + + ToscaProperty thirdDataTypeFourthProperty = thirdDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeFourthProperty.getKey().getParentKeyName()); + assertEquals("fieldPath", thirdDataTypeFourthProperty.getKey().getLocalName()); + assertEquals("string", thirdDataTypeFourthProperty.getType().getName()); + assertTrue(thirdDataTypeFourthProperty.isRequired()); + assertEquals("Json field Path as per CEF message which needs to be analyzed for TCA", + thirdDataTypeFourthProperty.getDescription()); + assertNotNull(thirdDataTypeFourthProperty.getConstraints()); + assertTrue(thirdDataTypeFourthProperty.getConstraints().size() == 1); + assertEquals("string", thirdDataTypeFourthProperty.getConstraints().iterator().next().getKey() + .getParentKeyName()); + assertEquals("valid_values", thirdDataTypeFourthProperty.getConstraints().iterator().next().getKey() + .getLocalName()); + assertTrue(((ToscaConstraintValidValues)(thirdDataTypeFourthProperty.getConstraints().iterator().next())) + .getValidValues().size() == 43); + + ToscaProperty thirdDataTypeFifthProperty = thirdDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeFifthProperty.getKey().getParentKeyName()); + assertEquals("severity", thirdDataTypeFifthProperty.getKey().getLocalName()); + assertEquals("string", thirdDataTypeFifthProperty.getType().getName()); + assertTrue(thirdDataTypeFifthProperty.isRequired()); + assertEquals("Threshold Event Severity", thirdDataTypeFifthProperty.getDescription()); + assertNotNull(thirdDataTypeFifthProperty.getConstraints()); + assertTrue(thirdDataTypeFifthProperty.getConstraints().size() == 1); + assertEquals("string", thirdDataTypeFifthProperty.getConstraints().iterator().next().getKey() + .getParentKeyName()); + assertEquals("valid_values", thirdDataTypeFifthProperty.getConstraints().iterator().next().getKey() + .getLocalName()); + assertTrue(((ToscaConstraintValidValues)(thirdDataTypeFifthProperty.getConstraints().iterator().next())) + .getValidValues().size() == 5);; + + ToscaProperty thirdDataTypeSixthProperty = thirdDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeSixthProperty.getKey().getParentKeyName()); + assertEquals("thresholdValue", thirdDataTypeSixthProperty.getKey().getLocalName()); + assertEquals("integer", thirdDataTypeSixthProperty.getType().getName()); + assertTrue(thirdDataTypeSixthProperty.isRequired()); + assertEquals("Threshold value for the field Path inside CEF message", thirdDataTypeSixthProperty + .getDescription()); + + ToscaProperty thirdDataTypeSeventhProperty = thirdDataTypePropertiesIter.next(); + assertEquals("onap.datatypes.monitoring.thresholds", thirdDataTypeSeventhProperty.getKey().getParentKeyName()); + assertEquals("version", thirdDataTypeSeventhProperty.getKey().getLocalName()); + assertEquals("string", thirdDataTypeSeventhProperty.getType().getName()); + assertTrue(thirdDataTypeSeventhProperty.isRequired()); + assertEquals("Version number associated with the threshold", thirdDataTypeSeventhProperty.getDescription()); + } + + private void verifyCollectorInputDeserialization(ToscaServiceTemplate serviceTemplate) { + + // Sanity check the entire structure + assertNotNull(serviceTemplate); + LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString()); + assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid()); + + // Check tosca_definitions_version + assertEquals("tosca_simple_yaml_1_0_0", serviceTemplate.getToscaDefinitionsVersion()); + + // Check policy_types + Map<PfConceptKey, ToscaPolicyType> policyTypesConceptMap = serviceTemplate.getPolicyTypes().getConceptMap(); + assertTrue(policyTypesConceptMap.size() == 2); + Iterator<Entry<PfConceptKey, ToscaPolicyType>> policyTypesIter = policyTypesConceptMap.entrySet().iterator(); + + Entry<PfConceptKey, ToscaPolicyType> firstPolicyType = policyTypesIter.next(); + assertEquals("onap.policies.Monitoring", firstPolicyType.getKey().getName()); + assertEquals("1.0.0", firstPolicyType.getKey().getVersion()); + assertEquals("tosca.policies.Root", firstPolicyType.getValue().getDerivedFrom().getName()); + assertEquals("a base policy type for all policies that govern monitoring provision", + firstPolicyType.getValue().getDescription()); + + Entry<PfConceptKey, ToscaPolicyType> secondPolicyType = policyTypesIter.next(); + assertEquals("onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server", + secondPolicyType.getKey().getName()); + assertEquals("1.0.0", secondPolicyType.getKey().getVersion()); + assertEquals("policy.nodes.Root", secondPolicyType.getValue().getDerivedFrom().getName()); + assertTrue(secondPolicyType.getValue().getProperties().size() == 2); + + Iterator<ToscaProperty> propertiesIter = secondPolicyType.getValue().getProperties().iterator(); + + ToscaProperty firstProperty = propertiesIter.next(); + assertEquals("onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server", + firstProperty.getKey().getParentKeyName()); + assertEquals("1.0.0", firstProperty.getKey().getParentKeyVersion()); + assertEquals("buscontroller_feed_publishing_endpoint", firstProperty.getKey().getLocalName()); + assertEquals("string", firstProperty.getType().getName()); + assertEquals("DMAAP Bus Controller feed endpoint", firstProperty.getDescription()); + + ToscaProperty secondProperty = propertiesIter.next(); + assertEquals("onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server", + secondProperty.getKey().getParentKeyName()); + assertEquals("1.0.0", secondProperty.getKey().getParentKeyVersion()); + assertEquals("datafile.policy", secondProperty.getKey().getLocalName()); + assertEquals("string", secondProperty.getType().getName()); + assertEquals("datafile Policy JSON as string", secondProperty.getDescription()); + } + + private String serializeMonitoringServiceTemplate(ToscaServiceTemplate serviceTemplate) { + return gson.toJson(serviceTemplate); + } +}
\ No newline at end of file |