diff options
Diffstat (limited to 'models-provider/src')
6 files changed, 296 insertions, 411 deletions
diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/AuthorativeToscaProviderReferenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/AuthorativeToscaProviderReferenceTest.java new file mode 100644 index 000000000..57a4d8105 --- /dev/null +++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/AuthorativeToscaProviderReferenceTest.java @@ -0,0 +1,181 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019-2020 Nordix Foundation. + * Modifications 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.provider.impl; + +import static org.junit.Assert.assertEquals; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; + +import org.eclipse.persistence.config.PersistenceUnitProperties; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.models.base.PfModelException; +import org.onap.policy.models.dao.DaoParameters; +import org.onap.policy.models.dao.PfDao; +import org.onap.policy.models.dao.PfDaoFactory; +import org.onap.policy.models.dao.impl.DefaultPfDao; +import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityKey; +import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; +import org.onap.policy.models.tosca.authorative.provider.AuthorativeToscaProvider; +import org.yaml.snakeyaml.Yaml; + +/** + * Test of the {@link AuthorativeToscaProvider} class. + * + * @author Liam Fallon (liam.fallon@est.tech) + */ +public class AuthorativeToscaProviderReferenceTest { + private static PfDao pfDao; + private static final Gson gson = new GsonBuilder().setPrettyPrinting().create(); + + // @formatter:off + private static final String[] EXAMPLE_POLICY_TYPES = { + "onap.policies.controlloop.guard.Blacklist#1.0.0" + + "#policytypes/onap.policies.controlloop.guard.Blacklist.yaml", + "onap.policies.controlloop.guard.coordination.FirstBlocksSecond#1.0.0" + + "#policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml", + "onap.policies.controlloop.guard.FrequencyLimiter#1.0.0" + + "#policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml", + "onap.policies.controlloop.guard.MinMax#1.0.0" + + "#policytypes/onap.policies.controlloop.guard.MinMax.yaml", + "onap.policies.controlloop.operational.Common#1.0.0" + + "#policytypes/onap.policies.controlloop.operational.Common.yaml", + "onap.policies.controlloop.Operational#1.0.0" + + "#policytypes/onap.policies.controlloop.Operational.yaml", + "onap.policies.drools.Controller#1.0.0" + + "#policytypes/onap.policies.drools.Controller.yaml", + "onap.policies.monitoring.cdap.tca.hi.lo.app#1.0.0" + + "#policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml", + "onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server#1.0.0" + + "#policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml", + "onap.policies.Naming#1.0.0" + + "#policytypes/onap.policies.Naming.yaml", + "onap.policies.native.Apex#1.0.0" + + "#policytypes/onap.policies.native.Apex.yaml", + "onap.policies.native.Drools#1.0.0" + + "#policytypes/onap.policies.native.Drools.yaml", + "onap.policies.native.Xacml#1.0.0" + + "#policytypes/onap.policies.native.Xacml.yaml", + "onap.policies.optimization.resource.AffinityPolicy#1.0.0" + + "#policytypes/onap.policies.optimization.resource.AffinityPolicy.yaml", + "onap.policies.optimization.resource.DistancePolicy#1.0.0" + + "#policytypes/onap.policies.optimization.resource.DistancePolicy.yaml", + "onap.policies.optimization.resource.HpaPolicy#1.0.0" + + "#policytypes/onap.policies.optimization.resource.HpaPolicy.yaml", + "onap.policies.optimization.resource.OptimizationPolicy#1.0.0" + + "#policytypes/onap.policies.optimization.resource.OptimizationPolicy.yaml", + "onap.policies.optimization.resource.PciPolicy#1.0.0" + + "#policytypes/onap.policies.optimization.resource.PciPolicy.yaml", + "onap.policies.optimization.resource.Vim_fit#1.0.0" + + "#policytypes/onap.policies.optimization.resource.Vim_fit.yaml", + "onap.policies.optimization.resource.VnfPolicy#1.0.0" + + "#policytypes/onap.policies.optimization.resource.VnfPolicy.yaml", + "onap.policies.optimization.Resource#1.0.0" + + "#policytypes/onap.policies.optimization.Resource.yaml", + "onap.policies.optimization.service.QueryPolicy#1.0.0" + + "#policytypes/onap.policies.optimization.service.QueryPolicy.yaml", + "onap.policies.optimization.service.SubscriberPolicy#1.0.0" + + "#policytypes/onap.policies.optimization.service.SubscriberPolicy.yaml", + "onap.policies.optimization.Service#1.0.0" + + "#policytypes/onap.policies.optimization.Service.yaml", + "onap.policies.Optimization#1.0.0" + + "#policytypes/onap.policies.Optimization.yaml"}; + // @formatter:on + + private static final Map<ToscaEntityKey, ToscaServiceTemplate> policyTypeMap = new LinkedHashMap<>(); + + /** + * Set up the DAO towards the database. + * + * @throws Exception on database errors + */ + @BeforeClass + public static void beforeSetupDao() throws Exception { + final DaoParameters daoParameters = new DaoParameters(); + daoParameters.setPluginClass(DefaultPfDao.class.getName()); + + daoParameters.setPersistenceUnit("ToscaConceptTest"); + + Properties jdbcProperties = new Properties(); + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy"); + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY"); + + // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver"); + jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:testdb"); + + daoParameters.setJdbcProperties(jdbcProperties); + + pfDao = new PfDaoFactory().createPfDao(daoParameters); + pfDao.init(daoParameters); + } + + /** + * Populate the database. + * + * @throws PfModelException on database exceptions + */ + @BeforeClass + public static void beforeFillDatabase() throws PfModelException { + for (String policyTypeDataString : EXAMPLE_POLICY_TYPES) { + String[] policyTypeDataArray = policyTypeDataString.split("#"); + String policyTypeYamlDefinition = ResourceUtils.getResourceAsString(policyTypeDataArray[2]); + + Object yamlObject = new Yaml().load(policyTypeYamlDefinition); + String policyTypeJsonDefinition = gson.toJson(yamlObject); + + ToscaServiceTemplate serviceTemplate = gson.fromJson(policyTypeJsonDefinition, ToscaServiceTemplate.class); + policyTypeMap.put(new ToscaEntityKey(policyTypeDataArray[0], policyTypeDataArray[1]), serviceTemplate); + new AuthorativeToscaProvider().createPolicyTypes(pfDao, serviceTemplate); + } + } + + @AfterClass + public static void afterTeardown() { + pfDao.close(); + } + + @Test + public void testPolicyTypeRead() throws PfModelException { + for (Entry<ToscaEntityKey, ToscaServiceTemplate> policyTypeMapEntry : policyTypeMap.entrySet()) { + ToscaServiceTemplate serviceTemplate = new AuthorativeToscaProvider().getPolicyTypes(pfDao, + policyTypeMapEntry.getKey().getName(), policyTypeMapEntry.getKey().getVersion()); + + assertEquals(1, serviceTemplate.getPolicyTypes().size()); + + String originalJson = gson.toJson(policyTypeMapEntry.getValue()); + String databaseJson = gson.toJson(serviceTemplate); + + // TODO: This test has no chance of passing yet but must eventually pass to prove that the policy types + // TODO: that were retrieved are the same as the policy types that were stored + // assertEquals(originalJson, databaseJson); + } + } +} diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyGuardPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyGuardPersistenceTest.java index ef83ea669..83665b078 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyGuardPersistenceTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyGuardPersistenceTest.java @@ -22,10 +22,11 @@ package org.onap.policy.models.provider.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; +import java.net.URISyntaxException; import java.util.Base64; import java.util.Map; +import java.util.Set; import lombok.NonNull; @@ -42,8 +43,6 @@ import org.onap.policy.models.provider.PolicyModelsProviderParameters; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyInput; import org.onap.policy.models.tosca.legacy.concepts.LegacyGuardPolicyOutput; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; /** @@ -52,9 +51,6 @@ import org.yaml.snakeyaml.Yaml; * @author Liam Fallon (liam.fallon@est.tech) */ public class PolicyLegacyGuardPersistenceTest { - // Logger for this class - private static final Logger LOGGER = LoggerFactory.getLogger(PolicyLegacyGuardPersistenceTest.class); - private StandardCoder standardCoder; private PolicyModelsProvider databaseProvider; @@ -107,16 +103,11 @@ public class PolicyLegacyGuardPersistenceTest { } @Test - public void testPolicyPersistence() { - try { - for (int i = 0; i < policyInputResourceNames.length; i++) { - String policyInputString = ResourceUtils.getResourceAsString(policyInputResourceNames[i]); - String policyOutputString = ResourceUtils.getResourceAsString(policyOutputResourceNames[i]); - testJsonStringPolicyPersistence(policyInputString, policyOutputString); - } - } catch (Exception exc) { - LOGGER.warn("error processing policies", exc); - fail("test should not throw an exception"); + public void testPolicyPersistence() throws Exception { + for (int i = 0; i < policyInputResourceNames.length; i++) { + String policyInputString = ResourceUtils.getResourceAsString(policyInputResourceNames[i]); + String policyOutputString = ResourceUtils.getResourceAsString(policyOutputResourceNames[i]); + testJsonStringPolicyPersistence(policyInputString, policyOutputString); } } @@ -135,23 +126,19 @@ public class PolicyLegacyGuardPersistenceTest { Map<String, LegacyGuardPolicyOutput> createdGopm = databaseProvider.createGuardPolicy(gip); assertEquals(gip.getPolicyId(), createdGopm.keySet().iterator().next()); - assertEquals(gip.getContent(), - createdGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); + assertEquals(gip.getContent(), createdGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); Map<String, LegacyGuardPolicyOutput> gotGopm = databaseProvider.getGuardPolicy(gip.getPolicyId(), null); assertEquals(gip.getPolicyId(), gotGopm.keySet().iterator().next()); - assertEquals(gip.getContent(), - gotGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); + assertEquals(gip.getContent(), gotGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); Map<String, LegacyGuardPolicyOutput> updatedGopm = databaseProvider.updateGuardPolicy(gip); assertEquals(gip.getPolicyId(), updatedGopm.keySet().iterator().next()); - assertEquals(gip.getContent(), - updatedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); + assertEquals(gip.getContent(), updatedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); Map<String, LegacyGuardPolicyOutput> deletedGopm = databaseProvider.deleteGuardPolicy(gip.getPolicyId(), "1"); assertEquals(gip.getPolicyId(), deletedGopm.keySet().iterator().next()); - assertEquals(gip.getContent(), - deletedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); + assertEquals(gip.getContent(), deletedGopm.get(gip.getPolicyId()).getProperties().values().iterator().next()); String actualRetrievedJson = standardCoder.encode(gotGopm); @@ -159,24 +146,18 @@ public class PolicyLegacyGuardPersistenceTest { assertEquals(policyOutputString.replaceAll("\\s+", ""), actualRetrievedJson.replaceAll("\\s+", "")); } - private void createPolicyTypes() throws CoderException, PfModelException { - Object yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml")); - String yamlAsJsonString = new StandardCoder().encode(yamlObject); - - ToscaServiceTemplate toscaServiceTemplatePolicyType = - standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + private void createPolicyTypes() throws CoderException, PfModelException, URISyntaxException { + Set<String> policyTypeResources = ResourceUtils.getDirectoryContents("policytypes"); - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + for (String policyTyoeResource : policyTypeResources) { + Object yamlObject = new Yaml().load(ResourceUtils.getResourceAsString(policyTyoeResource)); + String yamlAsJsonString = new StandardCoder().encode(yamlObject); - yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.guard.MinMax.yaml")); - yamlAsJsonString = new StandardCoder().encode(yamlObject); + ToscaServiceTemplate toscaServiceTemplatePolicyType = + standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + assertNotNull(toscaServiceTemplatePolicyType); + databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + } } } diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java index e6ecf5ade..29e3b5a47 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyLegacyOperationalPersistenceTest.java @@ -22,9 +22,10 @@ package org.onap.policy.models.provider.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; +import java.net.URISyntaxException; import java.util.Base64; +import java.util.Set; import lombok.NonNull; @@ -40,8 +41,6 @@ import org.onap.policy.models.provider.PolicyModelsProviderFactory; import org.onap.policy.models.provider.PolicyModelsProviderParameters; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.legacy.concepts.LegacyOperationalPolicy; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; /** @@ -50,9 +49,6 @@ import org.yaml.snakeyaml.Yaml; * @author Liam Fallon (liam.fallon@est.tech) */ public class PolicyLegacyOperationalPersistenceTest { - // Logger for this class - private static final Logger LOGGER = LoggerFactory.getLogger(PolicyLegacyOperationalPersistenceTest.class); - private StandardCoder standardCoder; private PolicyModelsProvider databaseProvider; @@ -107,16 +103,11 @@ public class PolicyLegacyOperationalPersistenceTest { } @Test - public void testPolicyPersistence() { - try { - for (int i = 0; i < policyInputResourceNames.length; i++) { - String policyInputString = ResourceUtils.getResourceAsString(policyInputResourceNames[i]); - String policyOutputString = ResourceUtils.getResourceAsString(policyOutputResourceNames[i]); - testJsonStringPolicyPersistence(policyInputString, policyOutputString); - } - } catch (Exception exc) { - LOGGER.warn("error processing policies", exc); - fail("test should not throw an exception"); + public void testPolicyPersistence() throws Exception { + for (int i = 0; i < policyInputResourceNames.length; i++) { + String policyInputString = ResourceUtils.getResourceAsString(policyInputResourceNames[i]); + String policyOutputString = ResourceUtils.getResourceAsString(policyOutputResourceNames[i]); + testJsonStringPolicyPersistence(policyInputString, policyOutputString); } } @@ -154,16 +145,18 @@ public class PolicyLegacyOperationalPersistenceTest { "'")); } - private void createPolicyTypes() throws CoderException, PfModelException { + private void createPolicyTypes() throws CoderException, PfModelException, URISyntaxException { + Set<String> policyTypeResources = ResourceUtils.getDirectoryContents("policytypes"); - Object yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.Operational.yaml")); - String yamlAsJsonString = new StandardCoder().encode(yamlObject); + for (String policyTyoeResource : policyTypeResources) { + Object yamlObject = new Yaml().load(ResourceUtils.getResourceAsString(policyTyoeResource)); + String yamlAsJsonString = new StandardCoder().encode(yamlObject); - ToscaServiceTemplate toscaServiceTemplatePolicyType = - standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + ToscaServiceTemplate toscaServiceTemplatePolicyType = + standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + assertNotNull(toscaServiceTemplatePolicyType); + databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + } } } diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java deleted file mode 100644 index 8e0dcb31c..000000000 --- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyPersistenceTest.java +++ /dev/null @@ -1,229 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * 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.provider.impl; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; - -import com.google.gson.GsonBuilder; - -import java.util.Base64; -import java.util.List; -import java.util.Map; - -import lombok.NonNull; - -import org.junit.After; -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.PfModelException; -import org.onap.policy.models.provider.PolicyModelsProvider; -import org.onap.policy.models.provider.PolicyModelsProviderFactory; -import org.onap.policy.models.provider.PolicyModelsProviderParameters; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter; -import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.Yaml; - -/** - * Test persistence of monitoring policies to and from the database. - * - * @author Liam Fallon (liam.fallon@est.tech) - */ -public class PolicyPersistenceTest { - // Logger for this class - private static final Logger LOGGER = LoggerFactory.getLogger(PolicyPersistenceTest.class); - - private StandardCoder standardCoder; - - private PolicyModelsProvider databaseProvider; - - // @formatter:off - private String[] policyResourceNames = { - "policies/vCPE.policy.monitoring.input.tosca.json", - "policies/vCPE.policy.monitoring.input.tosca.yaml", - "policies/vCPE.policy.operational.input.tosca.yaml", - "policies/vDNS.policy.guard.frequency.input.tosca.json", - "policies/vDNS.policy.guard.frequency.input.tosca.yaml", - "policies/vDNS.policy.monitoring.input.tosca.json", - "policies/vDNS.policy.monitoring.input.tosca.yaml", - "policies/vDNS.policy.operational.input.tosca.yaml", - "policies/vFirewall.policy.monitoring.input.tosca.json", - "policies/vFirewall.policy.monitoring.input.tosca.yaml", - "policies/vFirewall.policy.operational.input.tosca.json", - "policies/vFirewall.policy.operational.input.tosca.yaml" - }; - // @formatter:on - - /** - * Initialize provider. - * - * @throws PfModelException on exceptions in the tests - * @throws CoderException on JSON encoding and decoding errors - */ - @Before - public void setupParameters() throws Exception { - // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB - - PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters(); - parameters.setDatabaseDriver("org.h2.Driver"); - parameters.setDatabaseUrl("jdbc:h2:mem:testdb"); - parameters.setDatabaseUser("policy"); - parameters.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes())); - parameters.setPersistenceUnit("ToscaConceptTest"); - - databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters); - - createPolicyTypes(); - } - - /** - * Set up GSON. - */ - @Before - public void setupGson() { - standardCoder = new StandardCoder(); - } - - @After - public void teardown() throws Exception { - databaseProvider.close(); - } - - @Test - public void testPolicyPersistence() { - try { - for (String policyResourceName : policyResourceNames) { - String policyString = ResourceUtils.getResourceAsString(policyResourceName); - - if (policyResourceName.endsWith("yaml")) { - testYamlStringPolicyPersistence(policyString); - } else { - testJsonStringPolicyPersistence(policyString); - } - } - } catch (Exception exc) { - LOGGER.warn("error processing policies", exc); - fail("test should not throw an exception"); - } - } - - private void testYamlStringPolicyPersistence(final String policyString) throws Exception { - Object yamlObject = new Yaml().load(policyString); - String yamlAsJsonString = new GsonBuilder().setPrettyPrinting().create().toJson(yamlObject); - - testJsonStringPolicyPersistence(yamlAsJsonString); - } - - /** - * Check persistence of a policy. - * - * @param policyString the policy as a string - * @throws Exception any exception thrown - */ - public void testJsonStringPolicyPersistence(@NonNull final String policyString) throws Exception { - ToscaServiceTemplate serviceTemplate = standardCoder.decode(policyString, ToscaServiceTemplate.class); - - assertNotNull(serviceTemplate); - - databaseProvider.createPolicies(serviceTemplate); - databaseProvider.updatePolicies(serviceTemplate); - - for (Map<String, ToscaPolicy> policyMap : serviceTemplate.getToscaTopologyTemplate().getPolicies()) { - for (ToscaPolicy policy : policyMap.values()) { - ToscaServiceTemplate gotToscaServiceTemplate = - databaseProvider.getPolicies(policy.getName(), policy.getVersion()); - - assertEquals(gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0) - .get(policy.getName()).getType(), policy.getType()); - - gotToscaServiceTemplate = databaseProvider.getFilteredPolicies(ToscaPolicyFilter.builder().build()); - - assertEquals(getToscaPolicyFromMapList( - gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies(), policy.getName()).getType(), - policy.getType()); - - gotToscaServiceTemplate = databaseProvider.getFilteredPolicies( - ToscaPolicyFilter.builder().name(policy.getName()).version(policy.getVersion()).build()); - - assertEquals(gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0) - .get(policy.getName()).getType(), policy.getType()); - } - } - } - - private ToscaPolicy getToscaPolicyFromMapList(List<Map<String, ToscaPolicy>> toscaPolicyMapList, - String policyName) { - ToscaPolicy toscaPolicy = new ToscaPolicy(); - for (Map<String, ToscaPolicy> policyMap: toscaPolicyMapList) { - if (policyMap.get(policyName) != null) { - toscaPolicy = policyMap.get(policyName); - break; - } - } - return toscaPolicy; - } - - private void createPolicyTypes() throws CoderException, PfModelException { - Object yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml")); - String yamlAsJsonString = new StandardCoder().encode(yamlObject); - - ToscaServiceTemplate toscaServiceTemplatePolicyType = - standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); - - yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.Operational.yaml")); - yamlAsJsonString = new StandardCoder().encode(yamlObject); - - toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); - - yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.operational.Common.yaml")); - yamlAsJsonString = new StandardCoder().encode(yamlObject); - - toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); - - yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml")); - yamlAsJsonString = new StandardCoder().encode(yamlObject); - - toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); - } -} diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java index 1aedcaf83..cfbbdb9d4 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyToscaPersistenceTest.java @@ -22,11 +22,14 @@ package org.onap.policy.models.provider.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; import com.google.gson.GsonBuilder; +import java.net.URISyntaxException; import java.util.Base64; +import java.util.List; +import java.util.Map; +import java.util.Set; import lombok.NonNull; @@ -41,9 +44,8 @@ import org.onap.policy.models.provider.PolicyModelsProvider; import org.onap.policy.models.provider.PolicyModelsProviderFactory; import org.onap.policy.models.provider.PolicyModelsProviderParameters; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyFilter; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; /** @@ -52,30 +54,10 @@ import org.yaml.snakeyaml.Yaml; * @author Liam Fallon (liam.fallon@est.tech) */ public class PolicyToscaPersistenceTest { - // Logger for this class - private static final Logger LOGGER = LoggerFactory.getLogger(PolicyToscaPersistenceTest.class); - private StandardCoder standardCoder; private PolicyModelsProvider databaseProvider; - // @formatter:off - private String[] policyResourceNames = { - "policies/vCPE.policy.monitoring.input.tosca.json", - "policies/vCPE.policy.monitoring.input.tosca.yaml", - "policies/vCPE.policy.operational.input.tosca.yaml", - "policies/vDNS.policy.guard.frequency.input.tosca.json", - "policies/vDNS.policy.guard.frequency.input.tosca.yaml", - "policies/vDNS.policy.monitoring.input.tosca.json", - "policies/vDNS.policy.monitoring.input.tosca.yaml", - "policies/vDNS.policy.operational.input.tosca.yaml", - "policies/vFirewall.policy.monitoring.input.tosca.json", - "policies/vFirewall.policy.monitoring.input.tosca.yaml", - "policies/vFirewall.policy.operational.input.tosca.json", - "policies/vFirewall.policy.operational.input.tosca.yaml" - }; - // @formatter:on - /** * Initialize provider. * @@ -84,6 +66,8 @@ public class PolicyToscaPersistenceTest { */ @Before public void setupParameters() throws Exception { + // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB + PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters(); parameters.setDatabaseDriver("org.h2.Driver"); parameters.setDatabaseUrl("jdbc:h2:mem:testdb"); @@ -97,7 +81,7 @@ public class PolicyToscaPersistenceTest { } /** - * Set up the standard coder. + * Set up standard coder. */ @Before public void setupStandardCoder() { @@ -110,20 +94,21 @@ public class PolicyToscaPersistenceTest { } @Test - public void testPolicyPersistence() { - try { - for (String policyResourceName : policyResourceNames) { - String policyString = ResourceUtils.getResourceAsString(policyResourceName); - - if (policyResourceName.endsWith("yaml")) { - testYamlStringPolicyPersistence(policyString); - } else { - testJsonStringPolicyPersistence(policyString); - } + public void testPolicyPersistence() throws Exception { + Set<String> policyResources = ResourceUtils.getDirectoryContents("policies"); + + for (String policyResource : policyResources) { + if (!policyResource.contains("\\.tosca\\.")) { + continue; + } + + String policyString = ResourceUtils.getResourceAsString(policyResource); + + if (policyResource.endsWith("yaml")) { + testYamlStringPolicyPersistence(policyString); + } else { + testJsonStringPolicyPersistence(policyString); } - } catch (Exception exc) { - LOGGER.warn("error processing policy types", exc); - fail("test should not throw an exception"); } } @@ -146,51 +131,54 @@ public class PolicyToscaPersistenceTest { assertNotNull(serviceTemplate); databaseProvider.createPolicies(serviceTemplate); + databaseProvider.updatePolicies(serviceTemplate); - for (String policyKey : serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).keySet()) { - ToscaPolicy incomingPolicy = serviceTemplate.getToscaTopologyTemplate().getPolicies().get(0).get(policyKey); - ToscaPolicy databasePolicy = - databaseProvider.getPolicies(incomingPolicy.getName(), incomingPolicy.getVersion()) - .getToscaTopologyTemplate().getPolicies().get(0).get(policyKey); - assertEquals(incomingPolicy.getType(), databasePolicy.getType()); - } - } + for (Map<String, ToscaPolicy> policyMap : serviceTemplate.getToscaTopologyTemplate().getPolicies()) { + for (ToscaPolicy policy : policyMap.values()) { + ToscaServiceTemplate gotToscaServiceTemplate = + databaseProvider.getPolicies(policy.getName(), policy.getVersion()); - private void createPolicyTypes() throws CoderException, PfModelException { - Object yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml")); - String yamlAsJsonString = new StandardCoder().encode(yamlObject); + assertEquals(gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0) + .get(policy.getName()).getType(), policy.getType()); - ToscaServiceTemplate toscaServiceTemplatePolicyType = - standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + gotToscaServiceTemplate = databaseProvider.getFilteredPolicies(ToscaPolicyFilter.builder().build()); - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + assertEquals(getToscaPolicyFromMapList(gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies(), + policy.getName()).getType(), policy.getType()); - yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.Operational.yaml")); - yamlAsJsonString = new StandardCoder().encode(yamlObject); + gotToscaServiceTemplate = databaseProvider.getFilteredPolicies( + ToscaPolicyFilter.builder().name(policy.getName()).version(policy.getVersion()).build()); - toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + assertEquals(gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0) + .get(policy.getName()).getType(), policy.getType()); + } + } + } - yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.operational.Common.yaml")); - yamlAsJsonString = new StandardCoder().encode(yamlObject); + private ToscaPolicy getToscaPolicyFromMapList(List<Map<String, ToscaPolicy>> toscaPolicyMapList, + String policyName) { + ToscaPolicy toscaPolicy = new ToscaPolicy(); + for (Map<String, ToscaPolicy> policyMap : toscaPolicyMapList) { + if (policyMap.get(policyName) != null) { + toscaPolicy = policyMap.get(policyName); + break; + } + } + return toscaPolicy; + } - toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + private void createPolicyTypes() throws CoderException, PfModelException, URISyntaxException { + Set<String> policyTypeResources = ResourceUtils.getDirectoryContents("policytypes"); - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); - yamlObject = new Yaml().load( - ResourceUtils.getResourceAsString("policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml")); - yamlAsJsonString = new StandardCoder().encode(yamlObject); + for (String policyTyoeResource : policyTypeResources) { + Object yamlObject = new Yaml().load(ResourceUtils.getResourceAsString(policyTyoeResource)); + String yamlAsJsonString = new StandardCoder().encode(yamlObject); - toscaServiceTemplatePolicyType = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + ToscaServiceTemplate toscaServiceTemplatePolicyType = + standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - assertNotNull(toscaServiceTemplatePolicyType); - databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + assertNotNull(toscaServiceTemplatePolicyType); + databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); + } } } diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyTypePersistenceTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyTypePersistenceTest.java index 75f21d2f8..fc8452b98 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyTypePersistenceTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/impl/PolicyTypePersistenceTest.java @@ -23,12 +23,12 @@ package org.onap.policy.models.provider.impl; 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.GsonBuilder; import java.util.Base64; import java.util.List; +import java.util.Set; import lombok.NonNull; @@ -44,8 +44,6 @@ import org.onap.policy.models.provider.PolicyModelsProviderParameters; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeFilter; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.yaml.snakeyaml.Yaml; /** @@ -54,35 +52,10 @@ import org.yaml.snakeyaml.Yaml; * @author Liam Fallon (liam.fallon@est.tech) */ public class PolicyTypePersistenceTest { - // Logger for this class - private static final Logger LOGGER = LoggerFactory.getLogger(PolicyTypePersistenceTest.class); - private StandardCoder standardCoder; private PolicyModelsProvider databaseProvider; - // @formatter:off - private String[] policyTypeResourceNames = { - "policytypes/onap.policies.controlloop.Operational.yaml", - "policytypes/onap.policies.optimization.resource.DistancePolicy.yaml", - "policytypes/onap.policies.optimization.resource.VnfPolicy.yaml", - "policytypes/onap.policies.optimization.resource.PciPolicy.yaml", - "policytypes/onap.policies.optimization.resource.OptimizationPolicy.yaml", - "policytypes/onap.policies.controlloop.guard.Blacklist.yaml", - "policytypes/onap.policies.monitoring.dcaegen2.collectors.datafile.datafile-app-server.yaml", - "policytypes/onap.policies.optimization.resource.HpaPolicy.yaml", - "policytypes/onap.policies.optimization.resource.Vim_fit.yaml", - "policytypes/onap.policies.optimization.service.SubscriberPolicy.yaml", - "policytypes/onap.policies.optimization.resource.AffinityPolicy.yaml", - "policytypes/onap.policies.optimization.service.QueryPolicy.yaml", - "policytypes/onap.policies.controlloop.guard.MinMax.yaml", - "policytypes/onap.policies.controlloop.guard.FrequencyLimiter.yaml", - "policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond.yaml", - "policytypes/onap.policies.Optimization.yaml", - "policytypes/onap.policies.monitoring.cdap.tca.hi.lo.app.yaml" - }; - // @formatter:on - /** * Initialize provider. * @@ -90,6 +63,8 @@ public class PolicyTypePersistenceTest { */ @Before public void setupParameters() throws PfModelException { + // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB + PolicyModelsProviderParameters parameters = new PolicyModelsProviderParameters(); parameters.setDatabaseDriver("org.h2.Driver"); parameters.setDatabaseUrl("jdbc:h2:mem:testdb"); @@ -101,10 +76,10 @@ public class PolicyTypePersistenceTest { } /** - * Set up GSON. + * Set up standard coder. */ @Before - public void setupGson() { + public void setupStandardCoder() { standardCoder = new StandardCoder(); } @@ -114,20 +89,12 @@ public class PolicyTypePersistenceTest { } @Test - public void testPolicyTypePersistence() { - try { - for (String policyTypeResourceName : policyTypeResourceNames) { - String policyTypeString = ResourceUtils.getResourceAsString(policyTypeResourceName); - - if (policyTypeResourceName.endsWith("yaml")) { - testYamlStringPolicyTypePersistence(policyTypeString); - } else { - testJsonStringPolicyTypePersistence(policyTypeString); - } - } - } catch (Exception exc) { - LOGGER.warn("error processing policy types", exc); - fail("test should not throw an exception"); + public void testPolicyTypePersistence() throws Exception { + Set<String> policyTypeDirectoryContents = ResourceUtils.getDirectoryContents("policytypes"); + + for (String policyTypeFilePath : policyTypeDirectoryContents) { + String policyTypeString = ResourceUtils.getResourceAsString(policyTypeFilePath); + testYamlStringPolicyTypePersistence(policyTypeString); } } @@ -150,7 +117,11 @@ public class PolicyTypePersistenceTest { assertNotNull(serviceTemplate); ToscaPolicyType inPolicyType = serviceTemplate.getPolicyTypes().values().iterator().next(); - databaseProvider.createPolicyTypes(serviceTemplate); + try { + databaseProvider.createPolicyTypes(serviceTemplate); + } catch (Exception e) { + e.printStackTrace(); + } databaseProvider.updatePolicyTypes(serviceTemplate); List<ToscaPolicyType> policyTypeList = @@ -172,7 +143,7 @@ public class PolicyTypePersistenceTest { assertTrue(policyTypeList.size() <= 3); assertEquals(inPolicyType.getName(), policyTypeList.get(0).getName()); - for (ToscaPolicyType policyType: databaseProvider.getPolicyTypeList(null, null)) { + for (ToscaPolicyType policyType : databaseProvider.getPolicyTypeList(null, null)) { databaseProvider.deletePolicyType(policyType.getName(), policyType.getVersion()); } } |