Test cascaded multiple revision gets
[policy/models.git] / models-provider / src / test / java / org / onap / policy / models / provider / revisionhierarchy / HierarchyFetchTest.java
index 2f36f9a..043968b 100644 (file)
 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.BeforeClass;
 import org.junit.Test;
@@ -31,6 +35,8 @@ import org.onap.policy.common.utils.resources.TextFileUtils;
 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 {
@@ -61,6 +67,269 @@ 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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(3, countReturnedPolicies(fetchedServiceTemplate));
+
+        fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.0.0");
+        assertOldDataTypesAreReturned(fetchedServiceTemplate);
+        assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size());
+        fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("1.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.1.0");
+        assertOldDataTypesAreReturned(fetchedServiceTemplate);
+        assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size());
+        fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("2.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.2.0");
+        assertLatestDataTypesAreReturned(fetchedServiceTemplate);
+        assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size());
+        fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", null);
+        assertLatestDataTypesAreReturned(fetchedServiceTemplate);
+        assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size());
+        Iterator<ToscaPolicyType> fetchedPolicyTypeIterator =
+            fetchedServiceTemplate.getPolicyTypes().values().iterator();
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(3, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("1.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("2.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", null);
+        assertLatestDataTypesAreReturned(fetchedServiceTemplate);
+        assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size());
+        fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(3, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("1.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("2.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2.3", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(3, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2.3", fetchedPolicyType.getName());
+        assertEquals("1.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2.3", fetchedPolicyType.getName());
+        assertEquals("2.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
+        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();
+        assertEquals("onap.policies.PolicyTypeLevel0", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        fetchedPolicyType = fetchedPolicyTypeIterator.next();
+        assertEquals("onap.policies.PolicyTypeLevel0.1.2.3", fetchedPolicyType.getName());
+        assertEquals("3.0.0", fetchedPolicyType.getVersion());
+        assertEquals(1, countReturnedPolicies(fetchedServiceTemplate));
+
         databaseProvider.close();
     }
+
+    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<Map<String, ToscaPolicy>> policyMapList = fetchedServiceTemplate.getToscaTopologyTemplate().getPolicies();
+
+        int totalPolicies = 0;
+        for (Map<String, ToscaPolicy> policyMap : policyMapList) {
+            totalPolicies += policyMap.size();
+        }
+
+        return totalPolicies;
+    }
 }