X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-provider%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fprovider%2Fimpl%2FPolicyToscaPersistenceTest.java;h=0cdc2ad492fbd2b58fc70619f26c0379e4b00a92;hb=88bcb550c2efd5e43ad3d256fe075a6bf7e90538;hp=bf48292fdfa74ad683d7c66b63e1199b1441b250;hpb=50bc153c11472d90aa0f2a8ca9d8afeab0efb010;p=policy%2Fmodels.git 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 bf48292fd..0cdc2ad49 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 @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2019-2020 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,17 +22,19 @@ 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; 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; @@ -40,9 +42,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; /** @@ -51,48 +52,34 @@ 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. * * @throws PfModelException on exceptions in the tests + * @throws CoderException on JSON encoding and decoding errors */ @Before - public void setupParameters() throws PfModelException { + 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 the standard coder. + * Set up standard coder. */ @Before public void setupStandardCoder() { @@ -105,26 +92,27 @@ 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 testToscaPolicyPersistence() throws Exception { + Set 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 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); + String yamlAsJsonString = new StandardCoder().encode(yamlObject); testJsonStringPolicyPersistence(yamlAsJsonString); } @@ -141,13 +129,55 @@ public class PolicyToscaPersistenceTest { assertNotNull(serviceTemplate); databaseProvider.createPolicies(serviceTemplate); + databaseProvider.updatePolicies(serviceTemplate); + + for (Map policyMap : serviceTemplate.getToscaTopologyTemplate().getPolicies()) { + for (ToscaPolicy policy : policyMap.values()) { + ToscaServiceTemplate gotToscaServiceTemplate = + databaseProvider.getPolicies(policy.getName(), policy.getVersion()); + + assertEquals(policy.getType(), gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0) + .get(policy.getName()).getType()); + + gotToscaServiceTemplate = databaseProvider.getFilteredPolicies(ToscaPolicyFilter.builder().build()); + + assertEquals(policy.getType(), + getToscaPolicyFromMapList(gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies(), + policy.getName()).getType()); + + gotToscaServiceTemplate = databaseProvider.getFilteredPolicies( + ToscaPolicyFilter.builder().name(policy.getName()).version(policy.getVersion()).build()); + + assertEquals(policy.getType(), gotToscaServiceTemplate.getToscaTopologyTemplate().getPolicies().get(0) + .get(policy.getName()).getType()); + } + } + } + + private ToscaPolicy getToscaPolicyFromMapList(List> toscaPolicyMapList, + String policyName) { + ToscaPolicy toscaPolicy = new ToscaPolicy(); + for (Map policyMap : toscaPolicyMapList) { + toscaPolicy = policyMap.get(policyName); + if (toscaPolicy != null) { + break; + } + } + return toscaPolicy; + } + + private void createPolicyTypes() throws CoderException, PfModelException, URISyntaxException { + Set policyTypeResources = ResourceUtils.getDirectoryContents("policytypes"); + + for (String policyTypeResource : policyTypeResources) { + Object yamlObject = new Yaml().load(ResourceUtils.getResourceAsString(policyTypeResource)); + String yamlAsJsonString = new StandardCoder().encode(yamlObject); + + ToscaServiceTemplate toscaServiceTemplatePolicyType = + standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); - 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()); + assertNotNull(toscaServiceTemplatePolicyType); + databaseProvider.createPolicyTypes(toscaServiceTemplatePolicyType); } } }