/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019-2020 Nordix Foundation.
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
package org.onap.policy.models.tosca.simple.serialization;
+import static org.assertj.core.api.Assertions.assertThatCode;
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.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.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
+import org.onap.policy.common.utils.coder.YamlJsonTranslator;
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.authorative.concepts.ToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
-import org.onap.policy.models.tosca.simple.serialization.ToscaServiceTemplateMessageBodyHandler;
+import org.onap.policy.models.tosca.utils.ToscaServiceTemplateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yaml.snakeyaml.Yaml;
*/
public class MonitoringPolicySerializationTest {
+ private static final String VERSION = "version";
+
+ private static final String YAML_VERSION = "tosca_simple_yaml_1_1_0";
+
+ private static final String DEFINITION_VERSION = "tosca_definitions_version";
+
+ private static final String TOPOLOGY_TEMPLATE = "topology_template";
+
+ private static final String TCA_POLICY = "tca_policy";
+
+ private static final String PROPERTIES2 = "properties";
+
+ private static final String POLICY_ID = "policy-id";
+
+ private static final String POLICIES = "policies";
+
+ private static final String POLICY3 = "onap.vfirewall.tca";
+
+ private static final String POLICY2 = "onap.scaleout.tca";
+
+ private static final String POLICY1 = "onap.restart.tca";
+
+ private static final String TYPE1 = "onap.policies.monitoring.cdap.tca.hi.lo.app";
+
+ private static final String METADATA = "metadata";
+
+ private static final String VERSION_100 = "1.0.0";
+
private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPolicySerializationTest.class);
private static final String VCPE_MON_INPUT_JSON = "policies/vCPE.policy.monitoring.input.tosca.json";
private static final String VFW_MON_INPUT_JSON = "policies/vFirewall.policy.monitoring.input.tosca.json";
private static final String VFW_MON_INPUT_YAML = "policies/vFirewall.policy.monitoring.input.tosca.yaml";
- private Gson gson;
-
- @Before
- public void setUp() {
- gson = new ToscaServiceTemplateMessageBodyHandler().getGson();
- }
+ private StandardCoder standardCoder = new StandardCoder();
+ private YamlJsonTranslator yamlJsonTranslator = new YamlJsonTranslator();
@Test
- public void testDeserialization() {
- try {
- // vCPE
- JpaToscaServiceTemplate serviceTemplateFromJson = deserializeMonitoringInputJson(VCPE_MON_INPUT_JSON);
- verifyVcpeMonitoringInputDeserialization(serviceTemplateFromJson);
- JpaToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(VCPE_MON_INPUT_YAML);
- assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0);
-
- // vDNS
- serviceTemplateFromJson = deserializeMonitoringInputJson(VDNS_MON_INPUT_JSON);
- verifyVdnsMonitoringInputDeserialization(serviceTemplateFromJson);
- serviceTemplateFromYaml = deserializeMonitoringInputYaml(VDNS_MON_INPUT_YAML);
- assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0);
-
- // vFirewall
- serviceTemplateFromJson = deserializeMonitoringInputJson(VFW_MON_INPUT_JSON);
- verifyVfwMonitoringInputDeserialization(serviceTemplateFromJson);
- serviceTemplateFromYaml = deserializeMonitoringInputYaml(VFW_MON_INPUT_YAML);
- assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0);
-
- } catch (Exception e) {
- fail("No exception should be thrown");
- }
+ public void testDeserialization() throws Exception {
+ String policyTypeInputJson =
+ ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml");
+ ToscaServiceTemplate plainPolicyTypes =
+ yamlJsonTranslator.fromYaml(policyTypeInputJson, ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate policyTypeServiceTemplate = new JpaToscaServiceTemplate();
+ policyTypeServiceTemplate.fromAuthorative(plainPolicyTypes);
+
+ // vCPE
+ JpaToscaServiceTemplate serviceTemplateFromJson = deserializeMonitoringInputJson(VCPE_MON_INPUT_JSON);
+ JpaToscaServiceTemplate mergedServiceTemplate =
+ ToscaServiceTemplateUtils.addFragment(policyTypeServiceTemplate, serviceTemplateFromJson);
+ verifyVcpeMonitoringInputDeserialization(mergedServiceTemplate);
+ JpaToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(VCPE_MON_INPUT_YAML);
+ assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0);
+
+ // vDNS
+ serviceTemplateFromJson = deserializeMonitoringInputJson(VDNS_MON_INPUT_JSON);
+ mergedServiceTemplate =
+ ToscaServiceTemplateUtils.addFragment(policyTypeServiceTemplate, serviceTemplateFromJson);
+ verifyVdnsMonitoringInputDeserialization(mergedServiceTemplate);
+ serviceTemplateFromYaml = deserializeMonitoringInputYaml(VDNS_MON_INPUT_YAML);
+ assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0);
+
+ // vFirewall
+ serviceTemplateFromJson = deserializeMonitoringInputJson(VFW_MON_INPUT_JSON);
+ mergedServiceTemplate =
+ ToscaServiceTemplateUtils.addFragment(policyTypeServiceTemplate, serviceTemplateFromJson);
+ verifyVfwMonitoringInputDeserialization(mergedServiceTemplate);
+ serviceTemplateFromYaml = deserializeMonitoringInputYaml(VFW_MON_INPUT_YAML);
+ assertTrue(serviceTemplateFromJson.compareTo(serviceTemplateFromYaml) == 0);
}
@Test
public void testSerialization() {
- try {
+ assertThatCode(() -> {
// vCPE
JpaToscaServiceTemplate serviceTemplate = deserializeMonitoringInputJson(VCPE_MON_INPUT_JSON);
String serializedServiceTemplate = serializeMonitoringServiceTemplate(serviceTemplate);
serializedServiceTemplate = serializeMonitoringServiceTemplate(serviceTemplate);
verifyVfwMonitoringOutputserialization(serializedServiceTemplate);
- } catch (Exception e) {
- LOGGER.warn("No exception should be thrown", e);
- fail("No exception should be thrown");
- }
+ }).as("No exception should be thrown").doesNotThrowAnyException();
}
- private JpaToscaServiceTemplate deserializeMonitoringInputJson(String resourcePath)
- throws JsonSyntaxException, IOException {
+ private JpaToscaServiceTemplate deserializeMonitoringInputJson(String resourcePath) throws Exception {
String policyJson = ResourceUtils.getResourceAsString(resourcePath);
- JpaToscaServiceTemplate serviceTemplate = gson.fromJson(policyJson, JpaToscaServiceTemplate.class);
- return serviceTemplate;
+ ToscaServiceTemplate serviceTemplate = standardCoder.decode(policyJson, ToscaServiceTemplate.class);
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
+ jpaToscaServiceTemplate.fromAuthorative(serviceTemplate);
+ return jpaToscaServiceTemplate;
}
- private JpaToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath)
- throws Exception {
+ private JpaToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath) throws Exception {
Yaml yaml = new Yaml();
String policyYaml = ResourceUtils.getResourceAsString(resourcePath);
Object yamlObject = yaml.load(policyYaml);
String yamlAsJsonString = new StandardCoder().encode(yamlObject);
- JpaToscaServiceTemplate serviceTemplate = gson.fromJson(yamlAsJsonString, JpaToscaServiceTemplate.class);
- return serviceTemplate;
+ ToscaServiceTemplate serviceTemplate = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class);
+
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate();
+ jpaToscaServiceTemplate.fromAuthorative(serviceTemplate);
+ return jpaToscaServiceTemplate;
}
- private String serializeMonitoringServiceTemplate(JpaToscaServiceTemplate serviceTemplate) {
- return gson.toJson(serviceTemplate);
+ private String serializeMonitoringServiceTemplate(JpaToscaServiceTemplate serviceTemplate) throws CoderException {
+ return standardCoder.encode(serviceTemplate.toAuthorative());
}
private void verifyVcpeMonitoringInputDeserialization(JpaToscaServiceTemplate serviceTemplate) {
assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid());
// Check tosca_definitions_version
- assertEquals("tosca_simple_yaml_1_0_0",
- serviceTemplate.getToscaDefinitionsVersion());
+ assertEquals(YAML_VERSION, serviceTemplate.getToscaDefinitionsVersion());
- Map<PfConceptKey, JpaToscaPolicy> policiesConceptMap = serviceTemplate.getTopologyTemplate()
- .getPolicies().getConceptMap();
+ Map<PfConceptKey, JpaToscaPolicy> policiesConceptMap =
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap();
// Check policies
assertTrue(policiesConceptMap.size() == 1);
- assertEquals("onap.restart.tca", policiesConceptMap.keySet().iterator().next().getName());
+ assertEquals(POLICY1, policiesConceptMap.keySet().iterator().next().getName());
assertEquals("onap.restart.tca:1.0.0",
- serviceTemplate.getTopologyTemplate().getPolicies().get("onap.restart.tca").getId());
+ serviceTemplate.getTopologyTemplate().getPolicies().get(POLICY1).getId());
JpaToscaPolicy 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());
+ assertTrue(policyVal.getMetadata().size() == 2);
+ assertEquals(POLICY_ID, policyVal.getMetadata().entrySet().iterator().next().getKey());
+ assertEquals(POLICY1, policyVal.getMetadata().entrySet().iterator().next().getValue());
// Check properties
assertTrue(policiesConceptMap.values().iterator().next().getProperties().size() == 1);
- assertEquals("tca_policy", policyVal.getProperties().keySet().iterator().next());
+ assertEquals(TCA_POLICY, policyVal.getProperties().keySet().iterator().next());
assertNotNull(policyVal.getProperties().values().iterator().next());
}
assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid());
// Check tosca_definitions_version
- assertEquals("tosca_simple_yaml_1_0_0",
- serviceTemplate.getToscaDefinitionsVersion());
+ assertEquals(YAML_VERSION, serviceTemplate.getToscaDefinitionsVersion());
- Map<PfConceptKey, JpaToscaPolicy> policiesConceptMap = serviceTemplate.getTopologyTemplate()
- .getPolicies().getConceptMap();
+ Map<PfConceptKey, JpaToscaPolicy> policiesConceptMap =
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap();
// Check policies
assertTrue(policiesConceptMap.size() == 1);
- assertEquals("onap.scaleout.tca", policiesConceptMap.keySet().iterator().next().getName());
+ assertEquals(POLICY2, policiesConceptMap.keySet().iterator().next().getName());
assertEquals("onap.scaleout.tca:1.0.0",
- serviceTemplate.getTopologyTemplate().getPolicies().get("onap.scaleout.tca").getId());
+ serviceTemplate.getTopologyTemplate().getPolicies().get(POLICY2).getId());
JpaToscaPolicy 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());
+ assertTrue(policyVal.getMetadata().size() == 2);
+ assertEquals(POLICY_ID, policyVal.getMetadata().entrySet().iterator().next().getKey());
+ assertEquals(POLICY2, policyVal.getMetadata().entrySet().iterator().next().getValue());
// Check properties
assertTrue(policiesConceptMap.values().iterator().next().getProperties().size() == 1);
- assertEquals("tca_policy", policyVal.getProperties().keySet().iterator().next());
+ assertEquals(TCA_POLICY, policyVal.getProperties().keySet().iterator().next());
assertNotNull(policyVal.getProperties().values().iterator().next());
}
assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid());
// Check tosca_definitions_version
- assertEquals("tosca_simple_yaml_1_0_0",
- serviceTemplate.getToscaDefinitionsVersion());
+ assertEquals(YAML_VERSION, serviceTemplate.getToscaDefinitionsVersion());
- Map<PfConceptKey, JpaToscaPolicy> policiesConceptMap = serviceTemplate.getTopologyTemplate()
- .getPolicies().getConceptMap();
+ Map<PfConceptKey, JpaToscaPolicy> policiesConceptMap =
+ serviceTemplate.getTopologyTemplate().getPolicies().getConceptMap();
// Check policies
assertTrue(policiesConceptMap.size() == 1);
- assertEquals("onap.vfirewall.tca", policiesConceptMap.keySet().iterator().next().getName());
+ assertEquals(POLICY3, policiesConceptMap.keySet().iterator().next().getName());
assertEquals("onap.vfirewall.tca:1.0.0",
- serviceTemplate.getTopologyTemplate().getPolicies().get("onap.vfirewall.tca").getId());
+ serviceTemplate.getTopologyTemplate().getPolicies().get(POLICY3).getId());
JpaToscaPolicy 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());
+ assertTrue(policyVal.getMetadata().size() == 2);
+ assertEquals(POLICY_ID, policyVal.getMetadata().entrySet().iterator().next().getKey());
+ assertEquals(POLICY3, policyVal.getMetadata().entrySet().iterator().next().getValue());
// Check properties
assertTrue(policiesConceptMap.values().iterator().next().getProperties().size() == 1);
- assertEquals("tca_policy", policyVal.getProperties().keySet().iterator().next());
+ 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();
+ JsonObject serviceTemplateJsonObject = JsonParser.parseString(serializedServiceTemplate).getAsJsonObject();
+ assertEquals(YAML_VERSION, serviceTemplateJsonObject.get(DEFINITION_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"));
+ assertNotNull(policy.get(POLICY1));
+ JsonObject policyVal = policy.get(POLICY1).getAsJsonObject();
+ assertEquals(TYPE1, policyVal.get("type").getAsString());
+ assertEquals(VERSION_100, policyVal.get(VERSION).getAsString());
+ assertEquals(POLICY1, policyVal.get(METADATA).getAsJsonObject().get(POLICY_ID).getAsString());
+ JsonObject properties = policyVal.get(PROPERTIES2).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();
+ JsonObject serviceTemplateJsonObject = JsonParser.parseString(serializedServiceTemplate).getAsJsonObject();
+ assertEquals(YAML_VERSION, serviceTemplateJsonObject.get(DEFINITION_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"));
+ assertNotNull(policy.get(POLICY2));
+ JsonObject policyVal = policy.get(POLICY2).getAsJsonObject();
+ assertEquals(TYPE1, policyVal.get("type").getAsString());
+ assertEquals(VERSION_100, policyVal.get(VERSION).getAsString());
+ assertEquals(POLICY2, policyVal.get(METADATA).getAsJsonObject().get(POLICY_ID).getAsString());
+ JsonObject properties = policyVal.get(PROPERTIES2).getAsJsonObject();
+ assertNotNull(properties.get(TCA_POLICY));
}
private void verifyVfwMonitoringOutputserialization(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();
+ JsonObject serviceTemplateJsonObject = JsonParser.parseString(serializedServiceTemplate).getAsJsonObject();
+ assertEquals(YAML_VERSION, serviceTemplateJsonObject.get(DEFINITION_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"));
+ assertNotNull(policy.get(POLICY3));
+ JsonObject policyVal = policy.get(POLICY3).getAsJsonObject();
+ assertEquals(TYPE1, policyVal.get("type").getAsString());
+ assertEquals(VERSION_100, policyVal.get(VERSION).getAsString());
+ assertEquals(POLICY3, policyVal.get(METADATA).getAsJsonObject().get(POLICY_ID).getAsString());
+ JsonObject properties = policyVal.get(PROPERTIES2).getAsJsonObject();
+ assertNotNull(properties.get(TCA_POLICY));
}
}