/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019-2020 Nordix Foundation.
- * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019-2020, 2024 Nordix Foundation.
+ * Copyright (C) 2019-2020,2022 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.
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.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
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.JpaToscaConstraintLogical;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintValidValues;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType;
-import org.onap.policy.models.tosca.simple.concepts.JpaToscaEntrySchema;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
private static final String THRESHOLDS = "onap.datatypes.monitoring.thresholds";
- private static final String TCA = "onap.datatypes.monitoring.tca_policy";
+ private static final String TCA_V1 = "onap.datatypes.monitoring.tca_policy";
+ private static final String TCA_V2 = "list";
private static final String METRICS = "onap.datatypes.monitoring.metricsPerEventName";
- private static final String VERSION_100 = "1.0.0";
-
private static final String VERSION_000 = "0.0.0";
+ private static final String VERSION_100 = "1.0.0";
+ private static final String VERSION_200 = "2.0.0";
private static final Logger LOGGER = LoggerFactory.getLogger(MonitoringPolicyTypeSerializationTest.class);
- private static final String MONITORING_TCA_YAML = "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml";
+ private static final String MONITORING_TCA_YAML = "policytypes/onap.policies.monitoring.tcagen2.yaml";
+ private static final String MONITORING_TCA_V2_YAML = "policytypes/onap.policies.monitoring.tcagen2.v2.yaml";
+
private static final String MONITORING_COLLECTORS_YAML =
"policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml";
@Test
public void testDeserialization() throws Exception {
- // TCA
+ // TCA v1
JpaToscaServiceTemplate serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML);
- verifyTcaInputDeserialization(serviceTemplateFromYaml);
+ verifyTcaInputDeserialization(serviceTemplateFromYaml, VERSION_100, TCA_V1);
+
+ // TCA v2
+ serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_V2_YAML);
+ verifyTcaInputDeserialization(serviceTemplateFromYaml, VERSION_200, TCA_V2);
// Collector
serviceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML);
@Test
public void testSerialization() throws Exception {
- // TCA
+ // TCA v1
JpaToscaServiceTemplate tcaServiceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_YAML);
String serializedServiceTemplateTca = serializeMonitoringServiceTemplate(tcaServiceTemplateFromYaml);
String serializedServiceTemplateTcaOut = serializeMonitoringServiceTemplate(serviceTemplateFromJsonTca);
assertEquals(serializedServiceTemplateTca, serializedServiceTemplateTcaOut);
+ // TCA v2
+ tcaServiceTemplateFromYaml = deserializeMonitoringInputYaml(MONITORING_TCA_V2_YAML);
+ serializedServiceTemplateTca = serializeMonitoringServiceTemplate(tcaServiceTemplateFromYaml);
+
+ toscaServiceTemplateFromJsonTca =
+ coder.decode(serializedServiceTemplateTca, ToscaServiceTemplate.class);
+
+ serviceTemplateFromJsonTca = new JpaToscaServiceTemplate();
+ serviceTemplateFromJsonTca.fromAuthorative(toscaServiceTemplateFromJsonTca);
+ serializedServiceTemplateTcaOut = serializeMonitoringServiceTemplate(serviceTemplateFromJsonTca);
+ assertEquals(serializedServiceTemplateTca, serializedServiceTemplateTcaOut);
+
// Collector
JpaToscaServiceTemplate collectorServiceTemplateFromYaml =
deserializeMonitoringInputYaml(MONITORING_COLLECTORS_YAML);
}
private JpaToscaServiceTemplate deserializeMonitoringInputYaml(String resourcePath) throws Exception {
-
Yaml yaml = new Yaml();
String policyTypeYaml = ResourceUtils.getResourceAsString(resourcePath);
Object yamlObject = yaml.load(policyTypeYaml);
return jpaToscaServiceTemplate;
}
- private void verifyTcaInputDeserialization(JpaToscaServiceTemplate serviceTemplate) {
+ private void verifyTcaInputDeserialization(JpaToscaServiceTemplate serviceTemplate, String version, String tca) {
// Sanity check the entire structure
assertNotNull(serviceTemplate);
- LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString());
- assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid());
+ LOGGER.info(serviceTemplate.validate("").toString());
+ assertTrue(serviceTemplate.validate("").isValid());
// Check tosca_definitions_version
- assertEquals("tosca_simple_yaml_1_0_0", serviceTemplate.getToscaDefinitionsVersion());
+ assertEquals("tosca_simple_yaml_1_1_0", serviceTemplate.getToscaDefinitionsVersion());
// Check policy_types
Map<PfConceptKey, JpaToscaPolicyType> policyTypesConceptMap = serviceTemplate.getPolicyTypes().getConceptMap();
- assertTrue(policyTypesConceptMap.size() == 2);
+ assertEquals(2, policyTypesConceptMap.size());
Iterator<Entry<PfConceptKey, JpaToscaPolicyType>> policyTypesIter = policyTypesConceptMap.entrySet().iterator();
Entry<PfConceptKey, JpaToscaPolicyType> firstPolicyType = policyTypesIter.next();
firstPolicyType.getValue().getDescription());
Entry<PfConceptKey, JpaToscaPolicyType> secondPolicyType = policyTypesIter.next();
- assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app", secondPolicyType.getKey().getName());
- assertEquals(VERSION_100, secondPolicyType.getKey().getVersion());
+ assertEquals("onap.policies.monitoring.tcagen2", secondPolicyType.getKey().getName());
+ assertEquals(version, secondPolicyType.getKey().getVersion());
assertEquals(MONITORING, secondPolicyType.getValue().getDerivedFrom().getName());
- assertTrue(secondPolicyType.getValue().getProperties().size() == 1);
+ assertEquals(1, secondPolicyType.getValue().getProperties().size());
JpaToscaProperty property = secondPolicyType.getValue().getProperties().values().iterator().next();
- assertEquals("onap.policies.monitoring.cdap.tca.hi.lo.app", property.getKey().getParentKeyName());
- assertEquals(VERSION_100, property.getKey().getParentKeyVersion());
- assertEquals("tca_policy", property.getKey().getLocalName());
- assertEquals("map", property.getType().getName());
+ assertEquals("onap.policies.monitoring.tcagen2", property.getKey().getParentKeyName());
+ assertEquals(version, property.getKey().getParentKeyVersion());
+ assertEquals("tca.policy", property.getKey().getLocalName());
+ assertEquals(tca, property.getType().getName());
assertEquals("TCA Policy JSON", property.getDescription());
- JpaToscaEntrySchema entrySchema = property.getEntrySchema();
- assertEquals(TCA, entrySchema.getType().getName());
-
// Check data_types
Map<PfConceptKey, JpaToscaDataType> dataTypesConceptMap = serviceTemplate.getDataTypes().getConceptMap();
- assertTrue(dataTypesConceptMap.size() == 3);
+ assertEquals(3, dataTypesConceptMap.size());
Iterator<Entry<PfConceptKey, JpaToscaDataType>> dataTypesIter = dataTypesConceptMap.entrySet().iterator();
Entry<PfConceptKey, JpaToscaDataType> firstDataType = dataTypesIter.next();
JpaToscaDataType firstDataTypeVal = firstDataType.getValue();
assertEquals(DATATYPE_ROOT, firstDataTypeVal.getDerivedFrom().getName());
assertEquals(VERSION_000, firstDataTypeVal.getDerivedFrom().getVersion());
- assertTrue(firstDataTypeVal.getProperties().size() == 6);
+ assertEquals(6, firstDataTypeVal.getProperties().size());
Iterator<JpaToscaProperty> firstDataTypePropertiesIter = firstDataTypeVal.getProperties().values().iterator();
JpaToscaProperty firstDataTypeFirstProperty = firstDataTypePropertiesIter.next();
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(1, firstDataTypeFirstProperty.getConstraints().size());
assertEquals("org.onap.policy.models.tosca.simple.concepts.JpaToscaConstraintValidValues",
firstDataTypeFirstProperty.getConstraints().iterator().next().getClass().getName());
- assertTrue(((JpaToscaConstraintValidValues) (firstDataTypeFirstProperty.getConstraints().iterator().next()))
- .getValidValues().size() == 2);
+ assertEquals(2,
+ ((JpaToscaConstraintValidValues) (firstDataTypeFirstProperty.getConstraints().iterator().next()))
+ .getValidValues().size());
JpaToscaProperty firstDataTypeSecondProperty = firstDataTypePropertiesIter.next();
assertEquals(METRICS, firstDataTypeSecondProperty.getKey().getParentKeyName());
assertEquals(THRESHOLDS, firstDataTypeSixthProperty.getEntrySchema().getType().getName());
Entry<PfConceptKey, JpaToscaDataType> secondDataType = dataTypesIter.next();
- assertEquals(TCA, secondDataType.getKey().getName());
+ assertEquals(TCA_V1, secondDataType.getKey().getName());
JpaToscaDataType secondDataTypeVal = secondDataType.getValue();
assertEquals(DATATYPE_ROOT, secondDataTypeVal.getDerivedFrom().getName());
assertEquals(VERSION_000, secondDataTypeVal.getDerivedFrom().getVersion());
- assertTrue(secondDataTypeVal.getProperties().size() == 2);
+ assertEquals(2, secondDataTypeVal.getProperties().size());
Iterator<JpaToscaProperty> secondDataTypePropertiesIter = secondDataTypeVal.getProperties().values().iterator();
JpaToscaProperty secondDataTypeFirstProperty = secondDataTypePropertiesIter.next();
- assertEquals(TCA, secondDataTypeFirstProperty.getKey().getParentKeyName());
+ assertEquals(TCA_V1, secondDataTypeFirstProperty.getKey().getParentKeyName());
assertEquals("domain", secondDataTypeFirstProperty.getKey().getLocalName());
assertEquals(STRING_TEXT, 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(1, secondDataTypeFirstProperty.getConstraints().size());
assertTrue(secondDataTypeFirstProperty.getConstraints().iterator().next() instanceof JpaToscaConstraintLogical);
assertEquals("measurementsForVfScaling",
((JpaToscaConstraintLogical) (secondDataTypeFirstProperty.getConstraints().iterator().next()))
.getCompareTo());
JpaToscaProperty secondDataTypeSecondProperty = secondDataTypePropertiesIter.next();
- assertEquals(TCA, secondDataTypeSecondProperty.getKey().getParentKeyName());
+ assertEquals(TCA_V1, secondDataTypeSecondProperty.getKey().getParentKeyName());
assertEquals("metricsPerEventName", secondDataTypeSecondProperty.getKey().getLocalName());
assertEquals("list", secondDataTypeSecondProperty.getType().getName());
assertTrue(secondDataTypeSecondProperty.isRequired());
JpaToscaDataType thirdDataTypeVal = thirdDataType.getValue();
assertEquals(DATATYPE_ROOT, thirdDataTypeVal.getDerivedFrom().getName());
assertEquals(VERSION_000, thirdDataTypeVal.getDerivedFrom().getVersion());
- assertTrue(thirdDataTypeVal.getProperties().size() == 7);
+ assertEquals(7, thirdDataTypeVal.getProperties().size());
Iterator<JpaToscaProperty> thirdDataTypePropertiesIter = thirdDataTypeVal.getProperties().values().iterator();
JpaToscaProperty thirdDataTypeFirstProperty = thirdDataTypePropertiesIter.next();
assertTrue(thirdDataTypeSecondProperty.isRequired());
assertEquals("Closed Loop Event Status of the threshold", thirdDataTypeSecondProperty.getDescription());
assertNotNull(thirdDataTypeSecondProperty.getConstraints());
- assertTrue(thirdDataTypeSecondProperty.getConstraints().size() == 1);
+ assertEquals(1, thirdDataTypeSecondProperty.getConstraints().size());
assertEquals("JpaToscaConstraintValidValues(validValues=[ONSET, ABATED])",
thirdDataTypeSecondProperty.getConstraints().iterator().next().toString());
assertTrue(thirdDataTypeSecondProperty.getConstraints().iterator()
.next() instanceof JpaToscaConstraintValidValues);
- assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeSecondProperty.getConstraints().iterator().next()))
- .getValidValues().size() == 2);
+ assertEquals(2,
+ ((JpaToscaConstraintValidValues) (thirdDataTypeSecondProperty.getConstraints().iterator().next()))
+ .getValidValues().size());
JpaToscaProperty thirdDataTypeThirdProperty = thirdDataTypePropertiesIter.next();
assertEquals(THRESHOLDS, thirdDataTypeThirdProperty.getKey().getParentKeyName());
assertTrue(thirdDataTypeThirdProperty.isRequired());
assertEquals("Direction of the threshold", thirdDataTypeThirdProperty.getDescription());
assertNotNull(thirdDataTypeThirdProperty.getConstraints());
- assertTrue(thirdDataTypeThirdProperty.getConstraints().size() == 1);
+ assertEquals(1, thirdDataTypeThirdProperty.getConstraints().size());
assertEquals(
"JpaToscaConstraintValidValues(validValues=[LESS, LESS_OR_EQUAL, GREATER, GREATER_OR_EQUAL, EQUAL])",
thirdDataTypeThirdProperty.getConstraints().iterator().next().toString());
- assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeThirdProperty.getConstraints().iterator().next()))
- .getValidValues().size() == 5);
+ assertEquals(5,
+ ((JpaToscaConstraintValidValues) (thirdDataTypeThirdProperty.getConstraints().iterator().next()))
+ .getValidValues().size());
JpaToscaProperty thirdDataTypeFourthProperty = thirdDataTypePropertiesIter.next();
assertEquals(THRESHOLDS, thirdDataTypeFourthProperty.getKey().getParentKeyName());
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);
- assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeFourthProperty.getConstraints().iterator().next()))
- .getValidValues().size() == 43);
+ assertEquals(1, thirdDataTypeFourthProperty.getConstraints().size());
+ assertEquals(43,
+ ((JpaToscaConstraintValidValues) (thirdDataTypeFourthProperty.getConstraints().iterator().next()))
+ .getValidValues().size());
JpaToscaProperty thirdDataTypeFifthProperty = thirdDataTypePropertiesIter.next();
assertEquals(THRESHOLDS, thirdDataTypeFifthProperty.getKey().getParentKeyName());
assertTrue(thirdDataTypeFifthProperty.isRequired());
assertEquals("Threshold Event Severity", thirdDataTypeFifthProperty.getDescription());
assertNotNull(thirdDataTypeFifthProperty.getConstraints());
- assertTrue(thirdDataTypeFifthProperty.getConstraints().size() == 1);
+ assertEquals(1, thirdDataTypeFifthProperty.getConstraints().size());
assertEquals("JpaToscaConstraintValidValues(validValues=[CRITICAL, MAJOR, MINOR, WARNING, NORMAL])",
thirdDataTypeFifthProperty.getConstraints().iterator().next().toString());
- assertTrue(((JpaToscaConstraintValidValues) (thirdDataTypeFifthProperty.getConstraints().iterator().next()))
- .getValidValues().size() == 5);
- ;
+ assertEquals(5,
+ ((JpaToscaConstraintValidValues) (thirdDataTypeFifthProperty.getConstraints().iterator().next()))
+ .getValidValues().size());
JpaToscaProperty thirdDataTypeSixthProperty = thirdDataTypePropertiesIter.next();
assertEquals(THRESHOLDS, thirdDataTypeSixthProperty.getKey().getParentKeyName());
// Sanity check the entire structure
assertNotNull(serviceTemplate);
- LOGGER.info(serviceTemplate.validate(new PfValidationResult()).toString());
- assertTrue(serviceTemplate.validate(new PfValidationResult()).isValid());
+ LOGGER.info(serviceTemplate.validate("").toString());
+ assertTrue(serviceTemplate.validate("").isValid());
// Check tosca_definitions_version
- assertEquals("tosca_simple_yaml_1_0_0", serviceTemplate.getToscaDefinitionsVersion());
+ assertEquals("tosca_simple_yaml_1_1_0", serviceTemplate.getToscaDefinitionsVersion());
// Check policy_types
Map<PfConceptKey, JpaToscaPolicyType> policyTypesConceptMap = serviceTemplate.getPolicyTypes().getConceptMap();
- assertTrue(policyTypesConceptMap.size() == 2);
+ assertEquals(2, policyTypesConceptMap.size());
Iterator<Entry<PfConceptKey, JpaToscaPolicyType>> policyTypesIter = policyTypesConceptMap.entrySet().iterator();
Entry<PfConceptKey, JpaToscaPolicyType> firstPolicyType = policyTypesIter.next();
assertEquals(DCAE, secondPolicyType.getKey().getName());
assertEquals(VERSION_100, secondPolicyType.getKey().getVersion());
assertEquals("onap.policies.Monitoring", secondPolicyType.getValue().getDerivedFrom().getName());
- assertTrue(secondPolicyType.getValue().getProperties().size() == 2);
+ assertEquals(2, secondPolicyType.getValue().getProperties().size());
Iterator<JpaToscaProperty> propertiesIter = secondPolicyType.getValue().getProperties().values().iterator();
assertEquals(VERSION_100, firstProperty.getKey().getParentKeyVersion());
assertEquals("buscontroller_feed_publishing_endpoint", firstProperty.getKey().getLocalName());
assertEquals(STRING_TEXT, firstProperty.getType().getName());
- assertEquals("DMAAP Bus Controller feed endpoint", firstProperty.getDescription());
+ assertEquals("Bus Controller feed endpoint", firstProperty.getDescription());
JpaToscaProperty secondProperty = propertiesIter.next();
assertEquals(DCAE, secondProperty.getKey().getParentKeyName());