2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019-2022 Nordix Foundation.
4 * Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
5 * Modifications Copyright (C) 2020 Bell Canada. 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 * SPDX-License-Identifier: Apache-2.0
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.models.provider.impl;
25 import static org.assertj.core.api.Assertions.assertThat;
26 import static org.assertj.core.api.Assertions.assertThatCode;
27 import static org.assertj.core.api.Assertions.assertThatThrownBy;
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.assertTrue;
32 import java.time.Instant;
33 import java.util.ArrayList;
34 import java.util.List;
36 import org.junit.After;
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.onap.policy.models.base.PfModelException;
40 import org.onap.policy.models.pap.concepts.PolicyAudit;
41 import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
42 import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
43 import org.onap.policy.models.pdp.concepts.Pdp;
44 import org.onap.policy.models.pdp.concepts.PdpGroup;
45 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
46 import org.onap.policy.models.pdp.concepts.PdpStatistics;
47 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
48 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
49 import org.onap.policy.models.pdp.enums.PdpState;
50 import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
51 import org.onap.policy.models.provider.PolicyModelsProvider;
52 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
53 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
54 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
55 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
56 import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter;
57 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
58 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeType;
59 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
60 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
61 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
62 import org.onap.policy.models.tosca.authorative.concepts.ToscaTopologyTemplate;
63 import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
66 * Test the database models provider implementation.
68 * @author Liam Fallon (liam.fallon@est.tech)
70 public class DatabasePolicyModelsProviderTest {
71 private static final String NAME = "name";
73 private static final String TEMPLATE_IS_NULL = "^serviceTemplate is marked .*on.*ull but is null$";
75 private static final String SUBGROUP_IS_NULL = "^pdpSubGroup is marked .*on.*ull but is null$";
77 private static final String GROUP_IS_NULL = "^pdpGroupName is marked .*on.*ull but is null$";
79 private static final String NAME_IS_NULL = "^name is marked .*on.*ull but is null$";
81 private static final String FILTER_IS_NULL = "^filter is marked .*on.*ull but is null$";
83 private static final String GROUP = "group";
85 private static final String VERSION_100 = "1.0.0";
87 private static final Instant TIMESTAMP = Instant.EPOCH;
89 private static final String ORDER = "DESC";
91 private PolicyModelsProviderParameters parameters;
93 private PolicyModelsProvider databaseProvider;
96 * Initialize parameters.
99 public void setupParameters() {
100 parameters = new PolicyModelsProviderParameters();
101 parameters.setDatabaseDriver("org.h2.Driver");
102 parameters.setDatabaseUrl("jdbc:h2:mem:DatabasePolicyModelsProviderTest");
103 parameters.setDatabaseUser("policy");
104 parameters.setDatabasePassword("P01icY");
105 parameters.setPersistenceUnit("ToscaConceptTest");
112 public void tearDown() throws PfModelException {
113 if (databaseProvider != null) {
114 databaseProvider.close();
119 public void testInitAndClose() throws Exception {
120 assertThatThrownBy(() -> {
121 new DatabasePolicyModelsProviderImpl(null);
122 }).hasMessageMatching("^parameters is marked .*on.*ull but is null$");
124 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
126 parameters.setDatabaseUrl("jdbc://www.acmecorp.nonexist");
128 databaseProvider.close();
129 databaseProvider.init();
131 databaseProvider.close();
133 parameters.setDatabaseUrl("jdbc:h2:mem:DatabasePolicyModelsProviderTest");
135 parameters.setPersistenceUnit("WileECoyote");
137 assertThatThrownBy(databaseProvider::init).hasMessageContaining("could not create Data Access Object (DAO)");
139 parameters.setPersistenceUnit("ToscaConceptTest");
141 databaseProvider.init();
142 databaseProvider.close();
144 assertThatThrownBy(() -> {
145 databaseProvider.init();
146 databaseProvider.init();
147 }).hasMessage("provider is already initialized");
149 databaseProvider.close();
151 databaseProvider.close();
155 public void testProviderMethodsNull() throws Exception {
157 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
159 assertThatThrownBy(() -> {
160 databaseProvider.getFilteredPolicyTypes(null);
161 }).hasMessageMatching(FILTER_IS_NULL);
163 assertThatThrownBy(() -> {
164 databaseProvider.getFilteredPolicyTypeList(null);
165 }).hasMessageMatching(FILTER_IS_NULL);
167 assertThatThrownBy(() -> {
168 databaseProvider.createPolicyTypes(null);
169 }).hasMessageMatching(TEMPLATE_IS_NULL);
171 assertThatThrownBy(() -> {
172 databaseProvider.updatePolicyTypes(null);
173 }).hasMessageMatching(TEMPLATE_IS_NULL);
175 assertThatThrownBy(() -> {
176 databaseProvider.deletePolicyType(null, null);
177 }).hasMessageMatching(NAME_IS_NULL);
179 assertThatThrownBy(() -> {
180 databaseProvider.deletePolicyType("aaa", null);
181 }).hasMessageMatching("^version is marked .*on.*ull but is null$");
183 assertThatThrownBy(() -> {
184 databaseProvider.deletePolicyType(null, "aaa");
185 }).hasMessageMatching(NAME_IS_NULL);
187 assertThatThrownBy(() -> {
188 databaseProvider.getFilteredPolicies(null);
189 }).hasMessageMatching(FILTER_IS_NULL);
191 assertThatThrownBy(() -> {
192 databaseProvider.getFilteredPolicyList(null);
193 }).hasMessageMatching(FILTER_IS_NULL);
195 assertThatThrownBy(() -> {
196 databaseProvider.createPolicies(null);
197 }).hasMessageMatching(TEMPLATE_IS_NULL);
199 assertThatThrownBy(() -> {
200 databaseProvider.updatePolicies(null);
201 }).hasMessageMatching(TEMPLATE_IS_NULL);
203 assertThatThrownBy(() -> {
204 databaseProvider.deletePolicy(null, null);
205 }).hasMessageMatching(NAME_IS_NULL);
207 assertThatThrownBy(() -> {
208 databaseProvider.deletePolicy(null, "aaa");
209 }).hasMessageMatching(NAME_IS_NULL);
211 assertThatThrownBy(() -> {
212 databaseProvider.deletePolicy("aaa", null);
213 }).hasMessageMatching("^version is marked .*on.*ull but is null$");
217 public void testProviderMethodsNullGroup() throws Exception {
219 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
221 assertThatThrownBy(() -> {
222 databaseProvider.getFilteredPdpGroups(null);
223 }).hasMessageMatching(FILTER_IS_NULL);
225 assertThatThrownBy(() -> {
226 databaseProvider.createPdpGroups(null);
227 }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
229 assertThatThrownBy(() -> {
230 databaseProvider.updatePdpGroups(null);
231 }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
233 assertThatThrownBy(() -> {
234 databaseProvider.updatePdpSubGroup(null, null);
235 }).hasMessageMatching(GROUP_IS_NULL);
237 assertThatThrownBy(() -> {
238 databaseProvider.updatePdpSubGroup(null, new PdpSubGroup());
239 }).hasMessageMatching(GROUP_IS_NULL);
241 assertThatThrownBy(() -> {
242 databaseProvider.updatePdpSubGroup(NAME, null);
243 }).hasMessageMatching(SUBGROUP_IS_NULL);
245 assertThatThrownBy(() -> {
246 databaseProvider.updatePdpSubGroup(NAME, new PdpSubGroup());
247 }).hasMessage("parameter \"localName\" is null");
249 assertThatThrownBy(() -> {
250 databaseProvider.updatePdp(null, null, null);
251 }).hasMessageMatching(GROUP_IS_NULL);
253 assertThatThrownBy(() -> {
254 databaseProvider.updatePdp(null, null, new Pdp());
255 }).hasMessageMatching(GROUP_IS_NULL);
257 assertThatThrownBy(() -> {
258 databaseProvider.updatePdp(null, "sub", null);
259 }).hasMessageMatching(GROUP_IS_NULL);
261 assertThatThrownBy(() -> {
262 databaseProvider.updatePdp(null, "sub", new Pdp());
263 }).hasMessageMatching(GROUP_IS_NULL);
265 assertThatThrownBy(() -> {
266 databaseProvider.updatePdp(NAME, null, null);
267 }).hasMessageMatching(SUBGROUP_IS_NULL);
269 assertThatThrownBy(() -> {
270 databaseProvider.updatePdp(NAME, null, new Pdp());
271 }).hasMessageMatching(SUBGROUP_IS_NULL);
273 assertThatThrownBy(() -> {
274 databaseProvider.updatePdp(NAME, "sub", null);
275 }).hasMessageMatching("^pdp is marked .*on.*ull but is null$");
277 assertThatThrownBy(() -> {
278 databaseProvider.updatePdp(NAME, "sub", new Pdp());
279 }).hasMessage("parameter \"localName\" is null");
281 assertThatThrownBy(() -> {
282 databaseProvider.deletePdpGroup(null);
283 }).hasMessageMatching(NAME_IS_NULL);
285 assertThatThrownBy(() -> {
286 databaseProvider.createPdpStatistics(null);
287 }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
289 assertThatThrownBy(() -> {
290 databaseProvider.updatePdpStatistics(null);
291 }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
293 assertThatThrownBy(() -> {
294 databaseProvider.deletePdpStatistics(null, TIMESTAMP);
295 }).hasMessageMatching(NAME_IS_NULL);
297 databaseProvider.close();
301 public void testProviderMethodsNotInit() throws Exception {
302 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
304 databaseProvider.close();
306 assertThatThrownBy(() -> {
307 databaseProvider.getPolicyTypes(NAME, "version");
308 }).hasMessage("policy models provider is not initilaized");
312 public void testProviderMethods() throws PfModelException {
313 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
315 assertThatThrownBy(() -> databaseProvider.getPolicyTypes(NAME, VERSION_100))
316 .hasMessage("service template not found in database");
318 assertTrue(databaseProvider.getPolicyTypeList(NAME, VERSION_100).isEmpty());
321 () -> databaseProvider.getFilteredPolicyTypes(ToscaEntityFilter.<ToscaPolicyType>builder().build()))
322 .hasMessage("service template not found in database");
324 assertTrue(databaseProvider.getFilteredPolicyTypeList(ToscaEntityFilter.<ToscaPolicyType>builder().build())
327 assertThatThrownBy(() -> {
328 databaseProvider.createPolicyTypes(new ToscaServiceTemplate());
329 }).hasMessage("no policy types specified on service template");
331 assertThatThrownBy(() -> {
332 databaseProvider.updatePolicyTypes(new ToscaServiceTemplate());
333 }).hasMessage("no policy types specified on service template");
335 assertThatThrownBy(() -> databaseProvider.deletePolicyType(NAME, VERSION_100))
336 .hasMessage("service template not found in database");
338 assertThatThrownBy(() -> databaseProvider.getPolicies(NAME, VERSION_100))
339 .hasMessage("service template not found in database");
341 assertTrue(databaseProvider.getPolicyList(NAME, VERSION_100).isEmpty());
344 () -> databaseProvider.getFilteredPolicies(ToscaTypedEntityFilter.<ToscaPolicy>builder().build()))
345 .hasMessage("service template not found in database");
347 assertTrue(databaseProvider.getFilteredPolicyList(ToscaTypedEntityFilter.<ToscaPolicy>builder().build())
350 assertThatThrownBy(() -> {
351 databaseProvider.createPolicies(new ToscaServiceTemplate());
352 }).hasMessage("topology template not specified on service template");
354 assertThatThrownBy(() -> {
355 databaseProvider.updatePolicies(new ToscaServiceTemplate());
356 }).hasMessage("topology template not specified on service template");
358 assertThatThrownBy(() -> databaseProvider.deletePolicy("Policy", "0.0.0").getToscaTopologyTemplate())
359 .hasMessage("service template not found in database");
361 assertEquals(0, databaseProvider.getPdpGroups(NAME).size());
362 assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size());
364 assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>()));
365 assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>()));
369 public void testProviderMethodsInGroups() throws PfModelException {
370 PdpGroup pdpGroup = new PdpGroup();
371 pdpGroup.setName(GROUP);
372 pdpGroup.setVersion("1.2.3");
373 pdpGroup.setPdpGroupState(PdpState.ACTIVE);
374 pdpGroup.setPdpSubgroups(new ArrayList<>());
375 List<PdpGroup> groupList = new ArrayList<>();
376 groupList.add(pdpGroup);
378 PdpSubGroup pdpSubGroup = new PdpSubGroup();
379 pdpSubGroup.setPdpType("type");
380 pdpSubGroup.setDesiredInstanceCount(123);
381 pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
382 pdpSubGroup.getSupportedPolicyTypes().add(new ToscaConceptIdentifier("type", "7.8.9"));
383 pdpGroup.getPdpSubgroups().add(pdpSubGroup);
386 pdp.setInstanceId("type-0");
387 pdp.setMessage("Hello");
388 pdp.setPdpState(PdpState.ACTIVE);
389 pdp.setHealthy(PdpHealthStatus.UNKNOWN);
390 pdpSubGroup.setPdpInstances(new ArrayList<>());
391 pdpSubGroup.getPdpInstances().add(pdp);
393 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
396 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
397 assertEquals(1, databaseProvider.getPdpGroups(GROUP).size());
399 pdpSubGroup.setDesiredInstanceCount(234);
400 databaseProvider.updatePdpSubGroup(GROUP, pdpSubGroup);
402 databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
404 assertEquals("Hello", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
405 .get(0).getMessage());
406 pdp.setMessage("Howdy");
407 databaseProvider.updatePdp(GROUP, "type", pdp);
408 assertEquals("Howdy", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
409 .get(0).getMessage());
411 assertThatThrownBy(() -> {
412 databaseProvider.deletePdpGroup(NAME);
413 }).hasMessage("delete of PDP group \"name:0.0.0\" failed, PDP group does not exist");
415 assertEquals(pdpGroup.getName(), databaseProvider.deletePdpGroup(GROUP).getName());
417 List<PdpStatistics> statisticsArrayList = makePdpStatisticsList();
419 assertThat(databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().build())).isEmpty();
420 assertThat(databaseProvider.createPdpStatistics(statisticsArrayList)).hasSize(1);
421 assertThat(databaseProvider.updatePdpStatistics(statisticsArrayList)).hasSize(1);
425 public void testProviderMethodsStatistics() throws PfModelException {
426 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
427 databaseProvider.createPdpStatistics(makePdpStatisticsList());
429 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().build()).get(0)
430 .getPdpInstanceId());
431 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(
432 PdpFilterParameters.builder().group(GROUP).build()).get(0).getPdpInstanceId());
433 assertEquals(0, databaseProvider.getFilteredPdpStatistics(
434 PdpFilterParameters.builder().group(GROUP).startTime(Instant.now()).build()).size());
435 assertEquals(NAME, databaseProvider
436 .getFilteredPdpStatistics(PdpFilterParameters.builder().group(GROUP).endTime(TIMESTAMP).build())
437 .get(0).getPdpInstanceId());
438 assertEquals(0, databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().group(GROUP)
439 .startTime(Instant.now()).endTime(Instant.now()).build()).size());
441 assertEquals(NAME, databaseProvider
442 .getFilteredPdpStatistics(PdpFilterParameters.builder().name(NAME).group(GROUP).build()).get(0)
443 .getPdpInstanceId());
444 assertEquals(0, databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().name(NAME).group(GROUP)
445 .startTime(Instant.now()).endTime(Instant.now()).build()).size());
448 databaseProvider.getFilteredPdpStatistics(
449 PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type").build())
450 .get(0).getPdpInstanceId());
452 assertEquals(0, databaseProvider.getFilteredPdpStatistics(
453 PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
454 .startTime(Instant.now()).endTime(Instant.now()).build()).size());
456 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(
457 PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
458 .sortOrder(ORDER).recordNum(1).build()).get(0).getPdpInstanceId());
459 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(
460 PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
461 .sortOrder(ORDER).recordNum(5).build()).get(0).getPdpInstanceId());
462 assertEquals(0, databaseProvider.getFilteredPdpStatistics(
463 PdpFilterParameters.builder().name(NAME).group(GROUP).subGroup("type")
464 .startTime(Instant.now()).endTime(Instant.now())
465 .sortOrder(ORDER).recordNum(5).build()).size());
467 assertEquals(NAME, databaseProvider.deletePdpStatistics(NAME, null).get(0).getPdpInstanceId());
468 assertThat(databaseProvider.getFilteredPdpStatistics(PdpFilterParameters.builder().build())).isEmpty();
470 assertThat(databaseProvider.getAllPolicyStatus()).isEmpty();
471 assertThat(databaseProvider.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion("MyPolicy", null)))
473 assertThat(databaseProvider.getGroupPolicyStatus(GROUP)).isEmpty();
474 assertThatCode(() -> databaseProvider.cudPolicyStatus(null, null, null))
475 .doesNotThrowAnyException();
477 databaseProvider.close();
481 public void testDeletePolicyDeployedInSubgroup() throws PfModelException {
482 List<ToscaConceptIdentifier> policies = new ArrayList<>();
484 policies.add(new ToscaConceptIdentifier("p0", "0.0.1"));
485 policies.add(new ToscaConceptIdentifier("p1", "0.0.1"));
487 List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
488 supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
490 PdpSubGroup subGroup = new PdpSubGroup();
491 subGroup.setPdpType("pdpType");
492 subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
493 subGroup.setPolicies(policies);
495 List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
496 pdpSubgroups.add(subGroup);
498 PdpGroup pdpGroup = new PdpGroup();
499 pdpGroup.setName("pdpGroup");
500 pdpGroup.setPdpGroupState(PdpState.PASSIVE);
501 pdpGroup.setPdpSubgroups(pdpSubgroups);
503 List<PdpGroup> pdpGroups = new ArrayList<>();
504 pdpGroups.add(pdpGroup);
506 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
508 databaseProvider.createPdpGroups(pdpGroups);
510 assertThatThrownBy(() -> databaseProvider.deletePolicy("p0", "0.0.1"))
511 .hasMessageContaining("policy is in use, it is deployed in PDP group pdpGroup subgroup pdpType");
513 assertThatThrownBy(() -> databaseProvider.deletePolicy("p3", "0.0.1"))
514 .hasMessageContaining("service template not found in database");
516 databaseProvider.close();
520 public void testDeletePolicyTypeSupportedInSubgroup() throws PfModelException {
521 List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
522 supportedPolicyTypes.add(new ToscaConceptIdentifier("pt1", "0.0.1"));
523 supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
525 PdpSubGroup subGroup = new PdpSubGroup();
526 subGroup.setPdpType("pdpType");
527 subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
529 List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
530 pdpSubgroups.add(subGroup);
532 PdpGroup pdpGroup = new PdpGroup();
533 pdpGroup.setName("pdpGroup");
534 pdpGroup.setPdpGroupState(PdpState.PASSIVE);
535 pdpGroup.setPdpSubgroups(pdpSubgroups);
537 List<PdpGroup> pdpGroups = new ArrayList<>();
538 pdpGroups.add(pdpGroup);
540 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
542 databaseProvider.createPdpGroups(pdpGroups);
544 assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt2", "0.0.1"))
545 .hasMessageContaining("policy type is in use, it is referenced in PDP group pdpGroup subgroup pdpType");
547 assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt0", "0.0.1"))
548 .hasMessageContaining("service template not found in database");
550 databaseProvider.close();
554 public void testCreateAuditRecords() throws PfModelException {
555 PolicyAudit audit = PolicyAudit.builder().action(AuditAction.DEPLOYMENT).pdpGroup(GROUP).pdpType(GROUP)
556 .policy(new ToscaConceptIdentifier(NAME, VERSION_100)).user("user").build();
558 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
560 databaseProvider.createAuditRecords(List.of(audit));
561 List<PolicyAudit> createdAudits = databaseProvider.getAuditRecords(AuditFilter.builder().recordNum(10).build());
562 assertThat(createdAudits).hasSize(1);
564 List<PolicyAudit> emptyList = databaseProvider
565 .getAuditRecords(AuditFilter.builder().action(AuditAction.UNDEPLOYMENT).recordNum(10).build());
566 assertThat(emptyList).isEmpty();
568 assertThatThrownBy(() -> databaseProvider.createAuditRecords(null))
569 .hasMessageContaining("audits is marked non-null but is null");
571 databaseProvider.close();
575 public void testToscaNodeTemplateHandling() throws PfModelException {
576 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
578 ToscaServiceTemplate serviceTemplate = makeNodeTemplate();
580 assertEquals("1.0.1",
581 databaseProvider.createToscaNodeTemplates(serviceTemplate).getToscaTopologyTemplate().getNodeTemplates()
582 .get("metadataSet1").getVersion());
583 assertEquals(1, databaseProvider.getNodeTemplateMetadataSets(null, null).size());
585 ToscaNodeTemplate nodeTemplate1 = serviceTemplate.getToscaTopologyTemplate().getNodeTemplates()
586 .get("metadataSet1");
587 nodeTemplate1.setMetadata(Map.of("dummyKey", "updatedValue"));
588 serviceTemplate.getToscaTopologyTemplate().setNodeTemplates(Map.of("metadataSet1:1.0.1", nodeTemplate1));
589 assertEquals("updatedValue", databaseProvider.updateToscaNodeTemplates(serviceTemplate)
590 .getToscaTopologyTemplate().getNodeTemplates().get("metadataSet1").getMetadata().get("dummyKey"));
592 assertThatThrownBy(() -> {
593 databaseProvider.deleteToscaNodeTemplate("invalidName", "1.0.1");
594 }).hasMessage("node template invalidName:1.0.1 not found");
596 databaseProvider.close();
599 private List<PdpStatistics> makePdpStatisticsList() {
600 PdpStatistics pdpStatistics = new PdpStatistics();
601 pdpStatistics.setPdpInstanceId(NAME);
602 pdpStatistics.setTimeStamp(TIMESTAMP);
603 pdpStatistics.setPdpGroupName(GROUP);
604 pdpStatistics.setPdpSubGroupName("type");
605 List<PdpStatistics> statisticsArrayList = List.of(pdpStatistics);
606 return statisticsArrayList;
609 private ToscaServiceTemplate makeNodeTemplate() {
610 ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate();
611 serviceTemplate.setToscaDefinitionsVersion("sample:1.1.0");
612 serviceTemplate.setToscaTopologyTemplate(new ToscaTopologyTemplate());
613 serviceTemplate.setNodeTypes(Map.of("org.onap.policy.metadataSet:1.0.0", new ToscaNodeType()));
614 ToscaNodeTemplate nodeTemplate1 = new ToscaNodeTemplate();
615 nodeTemplate1.setName("metadataSet1");
616 nodeTemplate1.setVersion("1.0.1");
617 nodeTemplate1.setType("org.onap.policy.metadataSet");
618 nodeTemplate1.setTypeVersion("1.0.0");
619 nodeTemplate1.setMetadata(Map.of("dummyKey", "dummyValue"));
621 serviceTemplate.getToscaTopologyTemplate().setNodeTemplates(Map.of("metadataSet1", nodeTemplate1));
623 return serviceTemplate;