Fix config files to remove outdated configuration for hibernate
[policy/models.git] / models-provider / src / test / java / org / onap / policy / models / provider / revisionhierarchy / HierarchyFetchTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2020-2021, 2023-2024 Nordix Foundation.
4  *  Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
5  *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  * SPDX-License-Identifier: Apache-2.0
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.models.provider.revisionhierarchy;
24
25 import static org.assertj.core.api.Assertions.assertThatCode;
26 import static org.junit.Assert.assertEquals;
27
28 import java.util.Iterator;
29 import java.util.List;
30 import java.util.Map;
31 import org.junit.After;
32 import org.junit.BeforeClass;
33 import org.junit.Test;
34 import org.onap.policy.common.utils.coder.YamlJsonTranslator;
35 import org.onap.policy.common.utils.resources.TextFileUtils;
36 import org.onap.policy.models.base.PfModelException;
37 import org.onap.policy.models.provider.PolicyModelsProvider;
38 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
39 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
40 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
41 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
42 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
43
44 public class HierarchyFetchTest {
45
46     private static PolicyModelsProviderParameters parameters;
47
48     private PolicyModelsProvider databaseProvider;
49
50     @BeforeClass
51     public static void beforeSetupParameters() {
52         parameters = new PolicyModelsProviderParameters();
53         parameters.setDatabaseDriver("org.h2.Driver");
54         parameters.setDatabaseUrl("jdbc:h2:mem:HierarchyFetchTest");
55         parameters.setDatabaseUser("policy");
56         parameters.setDatabasePassword("P01icY");
57         parameters.setPersistenceUnit("ToscaConceptTest");
58     }
59
60     /**
61      * Closes the DB.
62      */
63     @After
64     public void tearDown() throws PfModelException {
65         if (databaseProvider != null) {
66             databaseProvider.close();
67         }
68     }
69
70     @Test
71     public void testMultipleVersions() throws Exception {
72         databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
73
74         ToscaServiceTemplate serviceTemplate = new YamlJsonTranslator().fromYaml(
75             TextFileUtils
76                 .getTextFileAsString("src/test/resources/servicetemplates/MultipleRevisionServiceTemplate.yaml"),
77             ToscaServiceTemplate.class);
78
79         assertThatCode(() -> {
80             databaseProvider.createPolicies(serviceTemplate);
81         }).doesNotThrowAnyException();
82
83         ToscaServiceTemplate fetchedServiceTemplate = databaseProvider.getPolicies(null, null);
84
85         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
86         assertLatestPolicyTypesAreReturned(fetchedServiceTemplate);
87         assertEquals(12, countReturnedPolicies(fetchedServiceTemplate));
88
89         fetchedServiceTemplate = databaseProvider.getPolicyTypes(null, null);
90         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
91         assertLatestPolicyTypesAreReturned(fetchedServiceTemplate);
92
93         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", null);
94         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
95         assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size());
96         ToscaPolicyType fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next();
97         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0",
98             "3.0.0", fetchedServiceTemplate, 3);
99
100         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.0.0");
101         assertOldDataTypesAreReturned(fetchedServiceTemplate);
102         assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size());
103         fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next();
104         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0",
105             "1.0.0", fetchedServiceTemplate, 1);
106
107         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.1.0");
108         assertOldDataTypesAreReturned(fetchedServiceTemplate);
109         assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size());
110         fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next();
111         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0",
112             "2.0.0", fetchedServiceTemplate, 1);
113
114         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0", "1.2.0");
115         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
116         assertEquals(1, fetchedServiceTemplate.getPolicyTypes().size());
117         fetchedPolicyType = fetchedServiceTemplate.getPolicyTypes().values().iterator().next();
118         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0",
119             "3.0.0", fetchedServiceTemplate, 1);
120
121         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", null);
122         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
123         assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size());
124         Iterator<ToscaPolicyType> fetchedPolicyTypeIterator =
125             fetchedServiceTemplate.getPolicyTypes().values().iterator();
126         fetchedPolicyType = fetchedPolicyTypeIterator.next();
127         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
128         fetchedPolicyType = fetchedPolicyTypeIterator.next();
129         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1",
130             "3.0.0", fetchedServiceTemplate, 3);
131
132         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", "1.0.0");
133         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
134         assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size());
135         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
136         fetchedPolicyType = fetchedPolicyTypeIterator.next();
137         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
138         fetchedPolicyType = fetchedPolicyTypeIterator.next();
139         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1",
140             "1.0.0", fetchedServiceTemplate, 1);
141
142         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", "1.1.0");
143         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
144         assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size());
145         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
146         fetchedPolicyType = fetchedPolicyTypeIterator.next();
147         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
148         fetchedPolicyType = fetchedPolicyTypeIterator.next();
149         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1",
150             "2.0.0", fetchedServiceTemplate, 1);
151
152         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1", "1.2.0");
153         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
154         assertEquals(2, fetchedServiceTemplate.getPolicyTypes().size());
155         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
156         fetchedPolicyType = fetchedPolicyTypeIterator.next();
157         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
158         fetchedPolicyType = fetchedPolicyTypeIterator.next();
159         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1",
160             "3.0.0", fetchedServiceTemplate, 1);
161
162         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", null);
163         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
164         assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size());
165         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
166         fetchedPolicyType = fetchedPolicyTypeIterator.next();
167         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
168         fetchedPolicyType = fetchedPolicyTypeIterator.next();
169         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
170         fetchedPolicyType = fetchedPolicyTypeIterator.next();
171         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2",
172             "3.0.0", fetchedServiceTemplate, 3);
173
174         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", "1.0.0");
175         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
176         assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size());
177         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
178         fetchedPolicyType = fetchedPolicyTypeIterator.next();
179         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
180         fetchedPolicyType = fetchedPolicyTypeIterator.next();
181         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
182         fetchedPolicyType = fetchedPolicyTypeIterator.next();
183         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2",
184             "1.0.0", fetchedServiceTemplate, 1);
185
186         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", "1.1.0");
187         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
188         assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size());
189         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
190         fetchedPolicyType = fetchedPolicyTypeIterator.next();
191         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
192         fetchedPolicyType = fetchedPolicyTypeIterator.next();
193         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
194         fetchedPolicyType = fetchedPolicyTypeIterator.next();
195         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2",
196             "2.0.0", fetchedServiceTemplate, 1);
197
198         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2", "1.2.0");
199         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
200         assertEquals(3, fetchedServiceTemplate.getPolicyTypes().size());
201         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
202         fetchedPolicyType = fetchedPolicyTypeIterator.next();
203         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
204         fetchedPolicyType = fetchedPolicyTypeIterator.next();
205         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
206         fetchedPolicyType = fetchedPolicyTypeIterator.next();
207         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2",
208             "3.0.0", fetchedServiceTemplate, 1);
209
210         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", null);
211         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
212         assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size());
213         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
214         fetchedPolicyType = fetchedPolicyTypeIterator.next();
215         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
216         fetchedPolicyType = fetchedPolicyTypeIterator.next();
217         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
218         fetchedPolicyType = fetchedPolicyTypeIterator.next();
219         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0");
220         fetchedPolicyType = fetchedPolicyTypeIterator.next();
221         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3",
222             "3.0.0", fetchedServiceTemplate, 3);
223
224         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", "1.0.0");
225         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
226         assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size());
227         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
228         fetchedPolicyType = fetchedPolicyTypeIterator.next();
229         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
230         fetchedPolicyType = fetchedPolicyTypeIterator.next();
231         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
232         fetchedPolicyType = fetchedPolicyTypeIterator.next();
233         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0");
234         fetchedPolicyType = fetchedPolicyTypeIterator.next();
235         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3",
236             "1.0.0", fetchedServiceTemplate, 1);
237
238         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", "1.1.0");
239         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
240         assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size());
241         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
242         fetchedPolicyType = fetchedPolicyTypeIterator.next();
243         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
244         fetchedPolicyType = fetchedPolicyTypeIterator.next();
245         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
246         fetchedPolicyType = fetchedPolicyTypeIterator.next();
247         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0");
248         fetchedPolicyType = fetchedPolicyTypeIterator.next();
249         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3",
250             "2.0.0", fetchedServiceTemplate, 1);
251
252         fetchedServiceTemplate = databaseProvider.getPolicies("onap.policies.PolicyLevel0.1.2.3", "1.2.0");
253         assertLatestDataTypesAreReturned(fetchedServiceTemplate);
254         assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size());
255         fetchedPolicyTypeIterator = fetchedServiceTemplate.getPolicyTypes().values().iterator();
256         fetchedPolicyType = fetchedPolicyTypeIterator.next();
257         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0", "3.0.0");
258         fetchedPolicyType = fetchedPolicyTypeIterator.next();
259         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1", "3.0.0");
260         fetchedPolicyType = fetchedPolicyTypeIterator.next();
261         checkNameVersion(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2", "3.0.0");
262         fetchedPolicyType = fetchedPolicyTypeIterator.next();
263         checkEqualsPolicyType(fetchedPolicyType, "onap.policies.PolicyTypeLevel0.1.2.3",
264             "3.0.0", fetchedServiceTemplate, 1);
265
266         databaseProvider.close();
267     }
268
269     private void checkNameVersion(ToscaPolicyType fetchedPolicyType, String name, String ver) {
270         assertEquals(name, fetchedPolicyType.getName());
271         assertEquals(ver, fetchedPolicyType.getVersion());
272     }
273
274     private void checkEqualsPolicyType(ToscaPolicyType fetchedPolicyType, String name, String ver,
275         ToscaServiceTemplate fetchedServiceTemplate, int policies) {
276         checkNameVersion(fetchedPolicyType, name, ver);
277         assertEquals(policies, countReturnedPolicies(fetchedServiceTemplate));
278     }
279
280     private void assertOldDataTypesAreReturned(final ToscaServiceTemplate fetchedServiceTemplate) {
281         assertEquals(6, fetchedServiceTemplate.getDataTypes().size());
282         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType0").getVersion());
283         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType1").getVersion());
284         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType2").getVersion());
285         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType3").getVersion());
286         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType4").getVersion());
287         assertEquals("3.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType5").getVersion());
288     }
289
290     private void assertLatestDataTypesAreReturned(final ToscaServiceTemplate fetchedServiceTemplate) {
291         assertEquals(7, fetchedServiceTemplate.getDataTypes().size());
292         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType0").getVersion());
293         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType1").getVersion());
294         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType2").getVersion());
295         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType3").getVersion());
296         assertEquals("1.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType4").getVersion());
297         assertEquals("3.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType5").getVersion());
298         assertEquals("2.0.0", fetchedServiceTemplate.getDataTypes().get("policy.data.DataType6").getVersion());
299     }
300
301     private void assertLatestPolicyTypesAreReturned(final ToscaServiceTemplate fetchedServiceTemplate) {
302         assertEquals(4, fetchedServiceTemplate.getPolicyTypes().size());
303
304         for (ToscaPolicyType policyType : fetchedServiceTemplate.getPolicyTypes().values()) {
305             assertEquals("3.0.0", policyType.getVersion());
306         }
307     }
308
309     private int countReturnedPolicies(final ToscaServiceTemplate fetchedServiceTemplate) {
310         List<Map<String, ToscaPolicy>> policyMapList = fetchedServiceTemplate.getToscaTopologyTemplate().getPolicies();
311
312         int totalPolicies = 0;
313         for (Map<String, ToscaPolicy> policyMap : policyMapList) {
314             totalPolicies += policyMap.size();
315         }
316
317         return totalPolicies;
318     }
319 }