2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019-2021 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;
35 import org.junit.After;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.onap.policy.models.base.PfModelException;
39 import org.onap.policy.models.pap.concepts.PolicyAudit;
40 import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
41 import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
42 import org.onap.policy.models.pdp.concepts.Pdp;
43 import org.onap.policy.models.pdp.concepts.PdpGroup;
44 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
45 import org.onap.policy.models.pdp.concepts.PdpStatistics;
46 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
47 import org.onap.policy.models.pdp.enums.PdpHealthStatus;
48 import org.onap.policy.models.pdp.enums.PdpState;
49 import org.onap.policy.models.provider.PolicyModelsProvider;
50 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
51 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
52 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
53 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
54 import org.onap.policy.models.tosca.authorative.concepts.ToscaEntityFilter;
55 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
56 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
57 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
58 import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
61 * Test the database models provider implementation.
63 * @author Liam Fallon (liam.fallon@est.tech)
65 public class DatabasePolicyModelsProviderTest {
66 private static final String NAME = "name";
68 private static final String TEMPLATE_IS_NULL = "^serviceTemplate is marked .*on.*ull but is null$";
70 private static final String SUBGROUP_IS_NULL = "^pdpSubGroup is marked .*on.*ull but is null$";
72 private static final String GROUP_IS_NULL = "^pdpGroupName is marked .*on.*ull but is null$";
74 private static final String NAME_IS_NULL = "^name is marked .*on.*ull but is null$";
76 private static final String FILTER_IS_NULL = "^filter is marked .*on.*ull but is null$";
78 private static final String GROUP = "group";
80 private static final String VERSION_100 = "1.0.0";
82 private static final Instant TIMESTAMP = Instant.EPOCH;
84 private static final String ORDER = "DESC";
86 private PolicyModelsProviderParameters parameters;
88 private PolicyModelsProvider databaseProvider;
91 * Initialize parameters.
94 public void setupParameters() {
95 parameters = new PolicyModelsProviderParameters();
96 parameters.setDatabaseDriver("org.h2.Driver");
97 parameters.setDatabaseUrl("jdbc:h2:mem:DatabasePolicyModelsProviderTest");
98 parameters.setDatabaseUser("policy");
99 parameters.setDatabasePassword("P01icY");
100 parameters.setPersistenceUnit("ToscaConceptTest");
107 public void tearDown() throws PfModelException {
108 if (databaseProvider != null) {
109 databaseProvider.close();
114 public void testInitAndClose() throws Exception {
115 assertThatThrownBy(() -> {
116 new DatabasePolicyModelsProviderImpl(null);
117 }).hasMessageMatching("^parameters is marked .*on.*ull but is null$");
119 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
121 parameters.setDatabaseUrl("jdbc://www.acmecorp.nonexist");
123 databaseProvider.close();
124 databaseProvider.init();
126 databaseProvider.close();
128 parameters.setDatabaseUrl("jdbc:h2:mem:DatabasePolicyModelsProviderTest");
130 parameters.setPersistenceUnit("WileECoyote");
132 assertThatThrownBy(databaseProvider::init).hasMessageContaining("could not create Data Access Object (DAO)");
134 parameters.setPersistenceUnit("ToscaConceptTest");
136 databaseProvider.init();
137 databaseProvider.close();
139 assertThatThrownBy(() -> {
140 databaseProvider.init();
141 databaseProvider.init();
142 }).hasMessage("provider is already initialized");
144 databaseProvider.close();
146 databaseProvider.close();
150 public void testProviderMethodsNull() throws Exception {
152 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
154 assertThatThrownBy(() -> {
155 databaseProvider.getFilteredPolicyTypes(null);
156 }).hasMessageMatching(FILTER_IS_NULL);
158 assertThatThrownBy(() -> {
159 databaseProvider.getFilteredPolicyTypeList(null);
160 }).hasMessageMatching(FILTER_IS_NULL);
162 assertThatThrownBy(() -> {
163 databaseProvider.createPolicyTypes(null);
164 }).hasMessageMatching(TEMPLATE_IS_NULL);
166 assertThatThrownBy(() -> {
167 databaseProvider.updatePolicyTypes(null);
168 }).hasMessageMatching(TEMPLATE_IS_NULL);
170 assertThatThrownBy(() -> {
171 databaseProvider.deletePolicyType(null, null);
172 }).hasMessageMatching(NAME_IS_NULL);
174 assertThatThrownBy(() -> {
175 databaseProvider.deletePolicyType("aaa", null);
176 }).hasMessageMatching("^version is marked .*on.*ull but is null$");
178 assertThatThrownBy(() -> {
179 databaseProvider.deletePolicyType(null, "aaa");
180 }).hasMessageMatching(NAME_IS_NULL);
182 assertThatThrownBy(() -> {
183 databaseProvider.getFilteredPolicies(null);
184 }).hasMessageMatching(FILTER_IS_NULL);
186 assertThatThrownBy(() -> {
187 databaseProvider.getFilteredPolicyList(null);
188 }).hasMessageMatching(FILTER_IS_NULL);
190 assertThatThrownBy(() -> {
191 databaseProvider.createPolicies(null);
192 }).hasMessageMatching(TEMPLATE_IS_NULL);
194 assertThatThrownBy(() -> {
195 databaseProvider.updatePolicies(null);
196 }).hasMessageMatching(TEMPLATE_IS_NULL);
198 assertThatThrownBy(() -> {
199 databaseProvider.deletePolicy(null, null);
200 }).hasMessageMatching(NAME_IS_NULL);
202 assertThatThrownBy(() -> {
203 databaseProvider.deletePolicy(null, "aaa");
204 }).hasMessageMatching(NAME_IS_NULL);
206 assertThatThrownBy(() -> {
207 databaseProvider.deletePolicy("aaa", null);
208 }).hasMessageMatching("^version is marked .*on.*ull but is null$");
212 public void testProviderMethodsNullGroup() throws Exception {
214 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
216 assertThatThrownBy(() -> {
217 databaseProvider.getFilteredPdpGroups(null);
218 }).hasMessageMatching(FILTER_IS_NULL);
220 assertThatThrownBy(() -> {
221 databaseProvider.createPdpGroups(null);
222 }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
224 assertThatThrownBy(() -> {
225 databaseProvider.updatePdpGroups(null);
226 }).hasMessageMatching("^pdpGroups is marked .*on.*ull but is null$");
228 assertThatThrownBy(() -> {
229 databaseProvider.updatePdpSubGroup(null, null);
230 }).hasMessageMatching(GROUP_IS_NULL);
232 assertThatThrownBy(() -> {
233 databaseProvider.updatePdpSubGroup(null, new PdpSubGroup());
234 }).hasMessageMatching(GROUP_IS_NULL);
236 assertThatThrownBy(() -> {
237 databaseProvider.updatePdpSubGroup(NAME, null);
238 }).hasMessageMatching(SUBGROUP_IS_NULL);
240 assertThatThrownBy(() -> {
241 databaseProvider.updatePdpSubGroup(NAME, new PdpSubGroup());
242 }).hasMessage("parameter \"localName\" is null");
244 assertThatThrownBy(() -> {
245 databaseProvider.updatePdp(null, null, null);
246 }).hasMessageMatching(GROUP_IS_NULL);
248 assertThatThrownBy(() -> {
249 databaseProvider.updatePdp(null, null, new Pdp());
250 }).hasMessageMatching(GROUP_IS_NULL);
252 assertThatThrownBy(() -> {
253 databaseProvider.updatePdp(null, "sub", null);
254 }).hasMessageMatching(GROUP_IS_NULL);
256 assertThatThrownBy(() -> {
257 databaseProvider.updatePdp(null, "sub", new Pdp());
258 }).hasMessageMatching(GROUP_IS_NULL);
260 assertThatThrownBy(() -> {
261 databaseProvider.updatePdp(NAME, null, null);
262 }).hasMessageMatching(SUBGROUP_IS_NULL);
264 assertThatThrownBy(() -> {
265 databaseProvider.updatePdp(NAME, null, new Pdp());
266 }).hasMessageMatching(SUBGROUP_IS_NULL);
268 assertThatThrownBy(() -> {
269 databaseProvider.updatePdp(NAME, "sub", null);
270 }).hasMessageMatching("^pdp is marked .*on.*ull but is null$");
272 assertThatThrownBy(() -> {
273 databaseProvider.updatePdp(NAME, "sub", new Pdp());
274 }).hasMessage("parameter \"localName\" is null");
276 assertThatThrownBy(() -> {
277 databaseProvider.deletePdpGroup(null);
278 }).hasMessageMatching(NAME_IS_NULL);
280 assertThatThrownBy(() -> {
281 databaseProvider.getFilteredPdpStatistics(NAME, null, "sub", TIMESTAMP, TIMESTAMP, ORDER, 0);
282 }).hasMessageMatching(GROUP_IS_NULL);
284 assertThatThrownBy(() -> {
285 databaseProvider.createPdpStatistics(null);
286 }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
288 assertThatThrownBy(() -> {
289 databaseProvider.updatePdpStatistics(null);
290 }).hasMessageMatching("^pdpStatisticsList is marked .*on.*ull but is null$");
292 assertThatThrownBy(() -> {
293 databaseProvider.deletePdpStatistics(null, TIMESTAMP);
294 }).hasMessageMatching(NAME_IS_NULL);
296 databaseProvider.close();
300 public void testProviderMethodsNotInit() throws Exception {
301 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
303 databaseProvider.close();
305 assertThatThrownBy(() -> {
306 databaseProvider.getPolicyTypes(NAME, "version");
307 }).hasMessage("policy models provider is not initilaized");
311 public void testProviderMethods() throws PfModelException {
312 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
314 assertThatThrownBy(() -> databaseProvider.getPolicyTypes(NAME, VERSION_100))
315 .hasMessage("service template not found in database");
317 assertTrue(databaseProvider.getPolicyTypeList(NAME, VERSION_100).isEmpty());
320 () -> databaseProvider.getFilteredPolicyTypes(ToscaEntityFilter.<ToscaPolicyType>builder().build()))
321 .hasMessage("service template not found in database");
323 assertTrue(databaseProvider.getFilteredPolicyTypeList(ToscaEntityFilter.<ToscaPolicyType>builder().build())
326 assertThatThrownBy(() -> {
327 databaseProvider.createPolicyTypes(new ToscaServiceTemplate());
328 }).hasMessage("no policy types specified on service template");
330 assertThatThrownBy(() -> {
331 databaseProvider.updatePolicyTypes(new ToscaServiceTemplate());
332 }).hasMessage("no policy types specified on service template");
334 assertThatThrownBy(() -> databaseProvider.deletePolicyType(NAME, VERSION_100))
335 .hasMessage("service template not found in database");
337 assertThatThrownBy(() -> databaseProvider.getPolicies(NAME, VERSION_100))
338 .hasMessage("service template not found in database");
340 assertTrue(databaseProvider.getPolicyList(NAME, VERSION_100).isEmpty());
343 () -> databaseProvider.getFilteredPolicies(ToscaTypedEntityFilter.<ToscaPolicy>builder().build()))
344 .hasMessage("service template not found in database");
346 assertTrue(databaseProvider.getFilteredPolicyList(ToscaTypedEntityFilter.<ToscaPolicy>builder().build())
349 assertThatThrownBy(() -> {
350 databaseProvider.createPolicies(new ToscaServiceTemplate());
351 }).hasMessage("topology template not specified on service template");
353 assertThatThrownBy(() -> {
354 databaseProvider.updatePolicies(new ToscaServiceTemplate());
355 }).hasMessage("topology template not specified on service template");
357 assertThatThrownBy(() -> databaseProvider.deletePolicy("Policy", "0.0.0").getToscaTopologyTemplate())
358 .hasMessage("service template not found in database");
360 assertEquals(0, databaseProvider.getPdpGroups(NAME).size());
361 assertEquals(0, databaseProvider.getFilteredPdpGroups(PdpGroupFilter.builder().build()).size());
363 assertNotNull(databaseProvider.createPdpGroups(new ArrayList<>()));
364 assertNotNull(databaseProvider.updatePdpGroups(new ArrayList<>()));
368 public void testProviderMethodsInGroups() throws PfModelException {
369 PdpGroup pdpGroup = new PdpGroup();
370 pdpGroup.setName(GROUP);
371 pdpGroup.setVersion("1.2.3");
372 pdpGroup.setPdpGroupState(PdpState.ACTIVE);
373 pdpGroup.setPdpSubgroups(new ArrayList<>());
374 List<PdpGroup> groupList = new ArrayList<>();
375 groupList.add(pdpGroup);
377 PdpSubGroup pdpSubGroup = new PdpSubGroup();
378 pdpSubGroup.setPdpType("type");
379 pdpSubGroup.setDesiredInstanceCount(123);
380 pdpSubGroup.setSupportedPolicyTypes(new ArrayList<>());
381 pdpSubGroup.getSupportedPolicyTypes().add(new ToscaConceptIdentifier("type", "7.8.9"));
382 pdpGroup.getPdpSubgroups().add(pdpSubGroup);
385 pdp.setInstanceId("type-0");
386 pdp.setMessage("Hello");
387 pdp.setPdpState(PdpState.ACTIVE);
388 pdp.setHealthy(PdpHealthStatus.UNKNOWN);
389 pdpSubGroup.setPdpInstances(new ArrayList<>());
390 pdpSubGroup.getPdpInstances().add(pdp);
392 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
395 databaseProvider.createPdpGroups(groupList).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
396 assertEquals(1, databaseProvider.getPdpGroups(GROUP).size());
398 pdpSubGroup.setDesiredInstanceCount(234);
399 databaseProvider.updatePdpSubGroup(GROUP, pdpSubGroup);
401 databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getDesiredInstanceCount());
403 assertEquals("Hello", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
404 .get(0).getMessage());
405 pdp.setMessage("Howdy");
406 databaseProvider.updatePdp(GROUP, "type", pdp);
407 assertEquals("Howdy", databaseProvider.getPdpGroups(GROUP).get(0).getPdpSubgroups().get(0).getPdpInstances()
408 .get(0).getMessage());
410 assertThatThrownBy(() -> {
411 databaseProvider.deletePdpGroup(NAME);
412 }).hasMessage("delete of PDP group \"name:0.0.0\" failed, PDP group does not exist");
414 assertEquals(pdpGroup.getName(), databaseProvider.deletePdpGroup(GROUP).getName());
416 List<PdpStatistics> statisticsArrayList = makePdpStatisticsList();
418 assertThat(databaseProvider.getPdpStatistics(null, null)).isEmpty();
419 assertThat(databaseProvider.createPdpStatistics(statisticsArrayList)).hasSize(1);
420 assertThat(databaseProvider.updatePdpStatistics(statisticsArrayList)).hasSize(1);
424 public void testProviderMethodsStatistics() throws PfModelException {
425 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
426 databaseProvider.createPdpStatistics(makePdpStatisticsList());
428 assertEquals(NAME, databaseProvider.getPdpStatistics(null, null).get(0).getPdpInstanceId());
429 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
430 null, null, ORDER, 0).get(0).getPdpInstanceId());
431 assertEquals(0, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
432 Instant.now(), null, ORDER, 0).size());
433 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(null, GROUP, null,
434 null, TIMESTAMP, ORDER, 0).get(0).getPdpInstanceId());
436 databaseProvider.getFilteredPdpStatistics(null, GROUP, null, Instant.now(),
437 Instant.now(), ORDER, 0).size());
439 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, null, null,
440 null, ORDER, 0).get(0).getPdpInstanceId());
442 databaseProvider.getFilteredPdpStatistics(NAME, GROUP, null, Instant.now(), Instant.now(),
445 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
446 null, null, ORDER, 0).get(0).getPdpInstanceId());
448 assertEquals(0, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
449 Instant.now(), Instant.now(), ORDER, 0).size());
451 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
452 null, null, ORDER, 1).get(0).getPdpInstanceId());
453 assertEquals(NAME, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
454 null, null, ORDER, 5).get(0).getPdpInstanceId());
455 assertEquals(0, databaseProvider.getFilteredPdpStatistics(NAME, GROUP, "type",
456 Instant.now(), Instant.now(), ORDER, 5).size());
458 assertEquals(NAME, databaseProvider.deletePdpStatistics(NAME, null).get(0).getPdpInstanceId());
459 assertEquals(0, databaseProvider.getPdpStatistics(null, null).size());
461 assertThat(databaseProvider.getAllPolicyStatus()).isEmpty();
462 assertThat(databaseProvider.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion("MyPolicy", null)))
464 assertThat(databaseProvider.getGroupPolicyStatus(GROUP)).isEmpty();
465 assertThatCode(() -> databaseProvider.cudPolicyStatus(null, null, null))
466 .doesNotThrowAnyException();
468 databaseProvider.close();
472 public void testDeletePolicyDeployedInSubgroup() throws PfModelException {
473 List<ToscaConceptIdentifier> policies = new ArrayList<>();
475 policies.add(new ToscaConceptIdentifier("p0", "0.0.1"));
476 policies.add(new ToscaConceptIdentifier("p1", "0.0.1"));
478 List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
479 supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
481 PdpSubGroup subGroup = new PdpSubGroup();
482 subGroup.setPdpType("pdpType");
483 subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
484 subGroup.setPolicies(policies);
486 List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
487 pdpSubgroups.add(subGroup);
489 PdpGroup pdpGroup = new PdpGroup();
490 pdpGroup.setName("pdpGroup");
491 pdpGroup.setPdpGroupState(PdpState.PASSIVE);
492 pdpGroup.setPdpSubgroups(pdpSubgroups);
494 List<PdpGroup> pdpGroups = new ArrayList<>();
495 pdpGroups.add(pdpGroup);
497 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
499 databaseProvider.createPdpGroups(pdpGroups);
501 assertThatThrownBy(() -> databaseProvider.deletePolicy("p0", "0.0.1"))
502 .hasMessageContaining("policy is in use, it is deployed in PDP group pdpGroup subgroup pdpType");
504 assertThatThrownBy(() -> databaseProvider.deletePolicy("p3", "0.0.1"))
505 .hasMessageContaining("service template not found in database");
507 databaseProvider.close();
511 public void testDeletePolicyTypeSupportedInSubgroup() throws PfModelException {
512 List<ToscaConceptIdentifier> supportedPolicyTypes = new ArrayList<>();
513 supportedPolicyTypes.add(new ToscaConceptIdentifier("pt1", "0.0.1"));
514 supportedPolicyTypes.add(new ToscaConceptIdentifier("pt2", "0.0.1"));
516 PdpSubGroup subGroup = new PdpSubGroup();
517 subGroup.setPdpType("pdpType");
518 subGroup.setSupportedPolicyTypes(supportedPolicyTypes);
520 List<PdpSubGroup> pdpSubgroups = new ArrayList<>();
521 pdpSubgroups.add(subGroup);
523 PdpGroup pdpGroup = new PdpGroup();
524 pdpGroup.setName("pdpGroup");
525 pdpGroup.setPdpGroupState(PdpState.PASSIVE);
526 pdpGroup.setPdpSubgroups(pdpSubgroups);
528 List<PdpGroup> pdpGroups = new ArrayList<>();
529 pdpGroups.add(pdpGroup);
531 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
533 databaseProvider.createPdpGroups(pdpGroups);
535 assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt2", "0.0.1"))
536 .hasMessageContaining("policy type is in use, it is referenced in PDP group pdpGroup subgroup pdpType");
538 assertThatThrownBy(() -> databaseProvider.deletePolicyType("pt0", "0.0.1"))
539 .hasMessageContaining("service template not found in database");
541 databaseProvider.close();
545 public void testCreateAuditRecords() throws PfModelException {
546 PolicyAudit audit = PolicyAudit.builder().action(AuditAction.DEPLOYMENT).pdpGroup(GROUP).pdpType(GROUP)
547 .policy(new ToscaConceptIdentifier(NAME, VERSION_100)).user("user").build();
549 databaseProvider = new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters);
551 databaseProvider.createAuditRecords(List.of(audit));
552 List<PolicyAudit> createdAudits = databaseProvider.getAuditRecords(null, 10);
553 assertThat(createdAudits).hasSize(1);
555 createdAudits = databaseProvider.getAuditRecords(AuditFilter.builder().build(), 10);
556 assertThat(createdAudits).hasSize(1);
558 List<PolicyAudit> emptyList =
559 databaseProvider.getAuditRecords(AuditFilter.builder().action(AuditAction.UNDEPLOYMENT).build(), 10);
560 assertThat(emptyList).isEmpty();
562 assertThatThrownBy(() -> databaseProvider.createAuditRecords(null))
563 .hasMessageContaining("audits is marked non-null but is null");
565 assertThatThrownBy(() -> databaseProvider.getAuditRecords(null, null))
566 .hasMessageContaining("numRecords is marked non-null but is null");
568 databaseProvider.close();
571 private List<PdpStatistics> makePdpStatisticsList() {
572 PdpStatistics pdpStatistics = new PdpStatistics();
573 pdpStatistics.setPdpInstanceId(NAME);
574 pdpStatistics.setTimeStamp(TIMESTAMP);
575 pdpStatistics.setPdpGroupName(GROUP);
576 pdpStatistics.setPdpSubGroupName("type");
577 List<PdpStatistics> statisticsArrayList = List.of(pdpStatistics);
578 return statisticsArrayList;