X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-provider%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fprovider%2Frevisionhierarchy%2FHierarchyFetchTest.java;h=015bbc552f8ba0016faeef35eae6f2b95c3a1dfd;hb=389c85c8e7213c10c17896f4c63d94e2b5e9d27a;hp=2f36f9a3c45781b533a0c784339e0e3b09ffe519;hpb=f98830a4ba01188538ca0b001143f7b573ecde77;p=policy%2Fmodels.git diff --git a/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java b/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java index 2f36f9a3c..015bbc552 100644 --- a/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java +++ b/models-provider/src/test/java/org/onap/policy/models/provider/revisionhierarchy/HierarchyFetchTest.java @@ -1,6 +1,8 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. + * Copyright (C) 2020-2021, 2023-2024 Nordix Foundation. + * Modifications Copyright (C) 2020 Bell Canada. All rights reserved. + * Modifications Copyright (C) 2021 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. @@ -21,36 +23,53 @@ package org.onap.policy.models.provider.revisionhierarchy; import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.Assert.assertEquals; -import java.util.Base64; - +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import org.junit.After; import org.junit.BeforeClass; import org.junit.Test; import org.onap.policy.common.utils.coder.YamlJsonTranslator; import org.onap.policy.common.utils.resources.TextFileUtils; +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.ToscaPolicyType; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; public class HierarchyFetchTest { private static PolicyModelsProviderParameters parameters; + private PolicyModelsProvider databaseProvider; + @BeforeClass public static void beforeSetupParameters() { parameters = new PolicyModelsProviderParameters(); parameters.setDatabaseDriver("org.h2.Driver"); - parameters.setDatabaseUrl("jdbc:h2:mem:testdb"); + parameters.setDatabaseUrl("jdbc:h2:mem:HierarchyFetchTest"); parameters.setDatabaseUser("policy"); - parameters.setDatabasePassword(Base64.getEncoder().encodeToString("P01icY".getBytes())); + parameters.setDatabasePassword("P01icY"); parameters.setPersistenceUnit("ToscaConceptTest"); } + /** + * Closes the DB. + */ + @After + public void tearDown() throws PfModelException { + if (databaseProvider != null) { + databaseProvider.close(); + } + } + @Test public void testMultipleVersions() throws Exception { - PolicyModelsProvider databaseProvider = - new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters); + databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters); ToscaServiceTemplate serviceTemplate = new YamlJsonTranslator().fromYaml( TextFileUtils @@ -61,6 +80,240 @@ public class HierarchyFetchTest { databaseProvider.createPolicies(serviceTemplate); }).doesNotThrowAnyException(); + ToscaServiceTemplate fetchedServiceTemplate = databaseProvider.getPolicies(null, null); + + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertLatestPolicyTypesAreReturned(fetchedServiceTemplate); + assertEquals(12, countReturnedPolicies(fetchedServiceTemplate)); + + fetchedServiceTemplate = databaseProvider.getPolicyTypes(null, null); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertLatestPolicyTypesAreReturned(fetchedServiceTemplate); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", null); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size()); + ToscaPolicyType fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", + "3.0.0", fetchedServiceTemplate, 3); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.0.0"); + assertOldDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", + "1.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.1.0"); + assertOldDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", + "2.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.2.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", + "3.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", null); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size()); + Iterator fetchedPolicyTypeIterator = + fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", + "3.0.0", fetchedServiceTemplate, 3); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", "1.0.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", + "1.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", "1.1.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", + "2.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", "1.2.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", + "3.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", null); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", + "3.0.0", fetchedServiceTemplate, 3); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", "1.0.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", + "1.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", "1.1.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", + "2.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", "1.2.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", + "3.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", null); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3", + "3.0.0", fetchedServiceTemplate, 3); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", "1.0.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3", + "1.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", "1.1.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3", + "2.0.0", fetchedServiceTemplate, 1); + + fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", "1.2.0"); + assertLatestDataTypesAreReturned(fetchedServiceTemplate); + assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size()); + fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator(); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0"); + fetchedPolicyType = fetchedPolicyTypeIterator.next(); + checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3", + "3.0.0", fetchedServiceTemplate, 1); + databaseProvider.close(); } + + private void checkNameVersion(ToscaPolicyType fetchedPolicyType, String name, String ver) { + assertEquals(name, fetchedPolicyType.getName()); + assertEquals(ver, fetchedPolicyType.getVersion()); + } + + private void checkEqualsPolicyType(ToscaPolicyType fetchedPolicyType, String name, String ver, + ToscaServiceTemplate fetchedServiceTemplate, int policies) { + checkNameVersion(fetchedPolicyType, name, ver); + assertEquals(policies, countReturnedPolicies(fetchedServiceTemplate)); + } + + private void assertOldDataTypesAreReturned(final ToscaServiceTemplate fetchedServiceTemplate) { + assertEquals(6, fetchedServiceTemplate.getDataTypes().size()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType0").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType1").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType2").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType3").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType4").getVersion()); + assertEquals("3.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType5").getVersion()); + } + + private void assertLatestDataTypesAreReturned(final ToscaServiceTemplate fetchedServiceTemplate) { + assertEquals(7, fetchedServiceTemplate.getDataTypes().size()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType0").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType1").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType2").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType3").getVersion()); + assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType4").getVersion()); + assertEquals("3.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType5").getVersion()); + assertEquals("2.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType6").getVersion()); + } + + private void assertLatestPolicyTypesAreReturned(final ToscaServiceTemplate fetchedServiceTemplate) { + assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size()); + + for (ToscaPolicyType policyType : fetchedServiceTemplate.getPolicyTypes().values()) { + assertEquals("3.0.0", policyType.getVersion()); + } + } + + private int countReturnedPolicies(final ToscaServiceTemplate fetchedServiceTemplate) { + List> policyMapList = fetchedServiceTemplate.getToscaTopologyTemplate().getPolicies(); + + int totalPolicies = 0; + for (Map policyMap : policyMapList) { + totalPolicies += policyMap.size(); + } + + return totalPolicies; + } }