Code coverage and sonar fixes for PAP 29/138329/5
authoradheli.tavares <adheli.tavares@est.tech>
Fri, 21 Jun 2024 18:57:25 +0000 (19:57 +0100)
committeradheli.tavares <adheli.tavares@est.tech>
Mon, 1 Jul 2024 12:24:52 +0000 (13:24 +0100)
Issue-ID: POLICY-5058
Change-Id: I85efd6b0b2ac498959bbaf23ebe1b2ba6e1c320e
Signed-off-by: adheli.tavares <adheli.tavares@est.tech>
38 files changed:
main/src/main/java/org/onap/policy/pap/main/PolicyPapRuntimeException.java
main/src/main/java/org/onap/policy/pap/main/comm/PdpHeartbeatListener.java
main/src/main/java/org/onap/policy/pap/main/comm/PdpMessageGenerator.java
main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java
main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java
main/src/main/java/org/onap/policy/pap/main/config/WebSecurityConfig.java
main/src/main/java/org/onap/policy/pap/main/exception/ServiceExceptionHandler.java
main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeControllerV1.java
main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java
main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusControllerV1.java
main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusProvider.java
main/src/main/java/org/onap/policy/pap/main/service/PolicyAuditService.java
main/src/main/java/org/onap/policy/pap/main/service/PolicyStatusService.java
main/src/main/java/org/onap/policy/pap/main/service/ToscaServiceTemplateService.java
main/src/main/java/org/onap/policy/pap/main/startstop/PapDatabaseInitializer.java
main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
main/src/test/java/org/onap/policy/pap/main/comm/TimerManagerTest.java
main/src/test/java/org/onap/policy/pap/main/comm/msgdata/UpdateReqTest.java
main/src/test/java/org/onap/policy/pap/main/notification/PolicyNotifierTest.java
main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java
main/src/test/java/org/onap/policy/pap/main/rest/ProviderSuper.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupCreateOrUpdateProvider.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteProvider.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployProvider.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupHealthCheckProvider.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupStateChangeControllerV1.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditManager.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyStatusProvider.java
main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyUndeployerImpl.java
main/src/test/java/org/onap/policy/pap/main/rest/TestProviderBase.java
main/src/test/java/org/onap/policy/pap/main/rest/TestSessionData.java
main/src/test/java/org/onap/policy/pap/main/rest/e2e/End2EndBase.java
main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeployTest.java
main/src/test/java/org/onap/policy/pap/main/service/PolicyAuditServiceTest.java
main/src/test/java/org/onap/policy/pap/main/service/PolicyStatusServiceTest.java
main/src/test/java/org/onap/policy/pap/main/startstop/TestPapDatabaseInitializer.java [new file with mode: 0644]
main/src/test/resources/application-test-db.yaml [new file with mode: 0644]
main/src/test/resources/simpleDeploy/createGroupDuplicateSubGroups.json [new file with mode: 0644]

index 95b941f..b4b1cf9 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019, 2024 Nordix Foundation.
  *  Modifications Copyright (C) 2019 AT&T Intellectual Property.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
 
 package org.onap.policy.pap.main;
 
+import java.io.Serial;
+
 /**
  * This runtime exception will be called if a runtime error occurs when using policy pap.
  *
  * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
  */
 public class PolicyPapRuntimeException extends RuntimeException {
+
+    @Serial
     private static final long serialVersionUID = -8507246953751956974L;
 
     /**
index 4e4709e..abf28d7 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019 Nordix Foundation.
+ *  Copyright (C) 2019, 2024 Nordix Foundation.
  *  Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
  *  Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
@@ -22,7 +22,6 @@
 
 package org.onap.policy.pap.main.comm;
 
-import lombok.AllArgsConstructor;
 import lombok.NoArgsConstructor;
 import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
 import org.onap.policy.common.endpoints.listeners.TypedMessageListener;
@@ -35,14 +34,17 @@ import org.springframework.stereotype.Component;
  *
  * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
  */
-@AllArgsConstructor
 @NoArgsConstructor
 @Component
 public class PdpHeartbeatListener implements TypedMessageListener<PdpStatus> {
 
-    @Autowired
     private PdpStatusMessageHandler pdpStatusMessageHandler;
 
+    @Autowired
+    public PdpHeartbeatListener(PdpStatusMessageHandler pdpStatusMessageHandler) {
+        this.pdpStatusMessageHandler = pdpStatusMessageHandler;
+    }
+
 
     @Override
     public void onTopicEvent(final CommInfrastructure infra, final String topic, final PdpStatus message) {
index 7bf6b80..af92e44 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021-2022 Nordix Foundation.
+ * Modifications Copyright (C) 2021-2022, 2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,7 +27,6 @@ import java.util.List;
 import lombok.Getter;
 import org.onap.policy.common.parameters.ParameterService;
 import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.pap.concepts.PolicyNotification;
 import org.onap.policy.models.pdp.concepts.PdpStateChange;
 import org.onap.policy.models.pdp.concepts.PdpSubGroup;
@@ -88,7 +87,7 @@ public class PdpMessageGenerator {
      * Constructs the object.
      *
      * @param includeHeartBeat if the heart beat interval is to be included in any
-     *        PDP-UPDATE messages
+     *                         PDP-UPDATE messages
      */
     public PdpMessageGenerator(boolean includeHeartBeat) {
         this.includeHeartBeat = includeHeartBeat;
@@ -112,9 +111,8 @@ public class PdpMessageGenerator {
     }
 
     protected PdpUpdate createPdpUpdateMessage(final String pdpGroupName, final PdpSubGroup subGroup,
-                    final String pdpInstanceId,
-                    final List<ToscaPolicy> policiesToBeDeployed,
-                    final List<ToscaConceptIdentifier> policiesToBeUndeployed) {
+                                               final String pdpInstanceId, final List<ToscaPolicy> policiesToBeDeployed,
+                                               final List<ToscaConceptIdentifier> policiesToBeUndeployed) {
 
         final var update = new PdpUpdate();
 
@@ -135,9 +133,8 @@ public class PdpMessageGenerator {
      *
      * @param subGroup PdpSubGroup to retrieve policies from
      * @return a list of ToscaPolicy
-     * @throws PfModelException the exception
      **/
-    public List<ToscaPolicy> getToscaPolicies(final PdpSubGroup subGroup) throws PfModelException {
+    public List<ToscaPolicy> getToscaPolicies(final PdpSubGroup subGroup) {
 
         final List<ToscaPolicy> policies = new LinkedList<>();
         for (final ToscaConceptIdentifier policyIdentifier : subGroup.getPolicies()) {
@@ -149,7 +146,7 @@ public class PdpMessageGenerator {
     }
 
     protected PdpStateChange createPdpStateChangeMessage(final String pdpGroupName, final PdpSubGroup subGroup,
-                    final String pdpInstanceId, final PdpState pdpState) {
+                                                         final String pdpInstanceId, final PdpState pdpState) {
 
         final var stateChange = new PdpStateChange();
         stateChange.setSource(PapConstants.PAP_NAME);
@@ -166,14 +163,14 @@ public class PdpMessageGenerator {
      * If group state=ACTIVE AND updateMsg has policiesToDeploy, then make sure deployment status is updated
      * If group state=PASSIVE, then delete any deployment information for a PDP.
      *
-     * @param pdpGroupName the group name
-     * @param pdpType the pdp type
+     * @param pdpGroupName  the group name
+     * @param pdpType       the pdp type
      * @param pdpInstanceId the pdp instance
-     * @param pdpState the new state as per the PDP_STATE_CHANGE change message
-     * @param policies list of policies as per the PDP_UPDATE message
+     * @param pdpState      the new state as per the PDP_STATE_CHANGE change message
+     * @param policies      list of policies as per the PDP_UPDATE message
      */
     protected void updateDeploymentStatus(final String pdpGroupName, final String pdpType, final String pdpInstanceId,
-        PdpState pdpState, List<ToscaPolicy> policies) {
+                                          PdpState pdpState, List<ToscaPolicy> policies) {
         var deploymentStatus = new DeploymentStatus(policyStatusService);
         deploymentStatus.loadByGroup(pdpGroupName);
         if (pdpState.equals(PdpState.PASSIVE)) {
index e23026b..1b8018b 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -89,7 +89,6 @@ public class PdpModifyRequestMap {
 
     /**
      * Used to undeploy policies from the system, when they cannot be deployed to a PDP.
-     *
      * <p/>
      * Note: The request map needs an undeployer during creation, and the undeployer
      * needs the request map when it's initialize method is called.
@@ -105,15 +104,15 @@ public class PdpModifyRequestMap {
     /**
      * Constructs the object.
      *
-     * @param pdpGroupService the pdpGroupService
-     * @param policyStatusService the policyStatusService
+     * @param pdpGroupService         the pdpGroupService
+     * @param policyStatusService     the policyStatusService
      * @param pdpStatusMessageHandler the pdpStatusMessageHandler
-     * @param policyUndeployer the policyUndeployer
-     * @param policyNotifier the policyNotifier
+     * @param policyUndeployer        the policyUndeployer
+     * @param policyNotifier          the policyNotifier
      */
     public PdpModifyRequestMap(PdpGroupService pdpGroupService, PolicyStatusService policyStatusService,
-        PdpStatusMessageHandler pdpStatusMessageHandler, PolicyUndeployer policyUndeployer,
-        PolicyNotifier policyNotifier) {
+                               PdpStatusMessageHandler pdpStatusMessageHandler, PolicyUndeployer policyUndeployer,
+                               PolicyNotifier policyNotifier) {
         this.pdpGroupService = pdpGroupService;
         this.policyStatusService = policyStatusService;
         this.pdpStatusMessageHandler = pdpStatusMessageHandler;
@@ -159,7 +158,7 @@ public class PdpModifyRequestMap {
     /**
      * Adds a pair of requests to the map.
      *
-     * @param update the UPDATE request or {@code null}
+     * @param update      the UPDATE request or {@code null}
      * @param stateChange the STATE-CHANGE request or {@code null}
      */
     public void addRequest(PdpUpdate update, PdpStateChange stateChange) {
@@ -189,11 +188,10 @@ public class PdpModifyRequestMap {
      * Adds an UPDATE request to the map.
      *
      * @param update the UPDATE request or {@code null}
-     * @return the new request (this should only be used by junit tests)
      */
-    public Request addRequest(PdpUpdate update) {
+    public void addRequest(PdpUpdate update) {
         if (update == null) {
-            return null;
+            return;
         }
 
         if (isBroadcast(update)) {
@@ -213,7 +211,6 @@ public class PdpModifyRequestMap {
         var request = new UpdateReq(reqparams, name, update);
 
         addSingleton(request);
-        return request;
     }
 
     /**
@@ -251,8 +248,7 @@ public class PdpModifyRequestMap {
      * Determines if a message is a broadcast message.
      *
      * @param message the message to examine
-     * @return {@code true} if the message is a broadcast message, {@code false} if
-     *         destined for a single PDP
+     * @return {@code true} if the message is a broadcast message, {@code false} if destined for a single PDP
      */
     private boolean isBroadcast(PdpMessage message) {
         return (message.getName() == null);
@@ -319,7 +315,7 @@ public class PdpModifyRequestMap {
      * Removes expired PDPs from a group.
      *
      * @param minAge minimum age for active PDPs
-     * @param group group from which expired PDPs should be removed
+     * @param group  group from which expired PDPs should be removed
      * @return the expired PDPs
      */
     private Set<String> removeFromGroup(Instant minAge, PdpGroup group) {
@@ -335,9 +331,9 @@ public class PdpModifyRequestMap {
      * Removes expired PDPs from a subgroup.
      *
      * @param minAge minimum age for active PDPs
-     * @param group group from which to attempt to remove the PDP
+     * @param group  group from which to attempt to remove the PDP
      * @param subgrp subgroup from which to attempt to remove the PDP
-     * @param pdps where to place the expired PDPs
+     * @param pdps   where to place the expired PDPs
      */
     private void removeFromSubgroup(Instant minAge, PdpGroup group, PdpSubGroup subgrp, Set<String> pdps) {
 
@@ -397,7 +393,7 @@ public class PdpModifyRequestMap {
 
             try {
                 logger.warn("undeploy policies from {}:{} that failed to deploy: {}", oldmsg.getPdpGroup(),
-                                oldmsg.getPdpSubgroup(), undeployPolicies);
+                    oldmsg.getPdpSubgroup(), undeployPolicies);
                 policyUndeployer.undeploy(oldmsg.getPdpGroup(), oldmsg.getPdpSubgroup(), undeployPolicies);
             } catch (PfModelException | RuntimeException e) {
                 logger.error("cannot undeploy policies {}", undeployPolicies, e);
index 1426d1c..068c10a 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019-2021,2023 Nordix Foundation.
+ *  Copyright (C) 2019-2021, 2023-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
  *  Modifications Copyright (C) 2021-2023 Bell Canada. All rights reserved.
  * ================================================================================
@@ -26,6 +26,7 @@ import java.sql.SQLIntegrityConstraintViolationException;
 import java.time.Instant;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -33,7 +34,6 @@ import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.pdp.concepts.Pdp;
 import org.onap.policy.models.pdp.concepts.PdpGroup;
 import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
@@ -83,7 +83,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
     /**
      * Constructs the object.
      *
-     * @param parameterGroup the parameterGroup
+     * @param parameterGroup  the parameterGroup
      * @param pdpGroupService the pdpGroupService
      */
     public PdpStatusMessageHandler(PapParameterGroup parameterGroup, PdpGroupService pdpGroupService) {
@@ -126,7 +126,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
                      * instead of an error level.
                      */
                     LOGGER.info("Failed updating PDP information for {} - may have been added by another PAP",
-                                    message.getName());
+                        message.getName());
                     LOGGER.trace("Failed updating PDP information for {}", message.getName(), exp);
                 } else {
                     LOGGER.error("Failed connecting to database provider", exp);
@@ -138,7 +138,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
     /**
      * Determines if the exception indicates a duplicate key.
      *
-     * @param thrown exception to check
+     * @param thrown         exception to check
      * @param exceptionClazz the class to check against
      * @return {@code true} if the exception occurred due to a duplicate key
      */
@@ -158,7 +158,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
         return false;
     }
 
-    private void handlePdpRegistration(final PdpStatus message) throws PfModelException, PolicyPapException {
+    private void handlePdpRegistration(final PdpStatus message) throws PolicyPapException {
         if (!findAndUpdatePdpGroup(message)) {
             final var errorMessage = "Failed to register PDP. No matching PdpGroup/SubGroup Found - ";
             LOGGER.debug("{}{}", errorMessage, message);
@@ -166,11 +166,10 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
         }
     }
 
-    private boolean findAndUpdatePdpGroup(final PdpStatus message)
-            throws PfModelException {
+    private boolean findAndUpdatePdpGroup(final PdpStatus message) {
         var pdpGroupFound = false;
         final PdpGroupFilter filter =
-                PdpGroupFilter.builder().name(message.getPdpGroup()).groupState(PdpState.ACTIVE).build();
+            PdpGroupFilter.builder().name(message.getPdpGroup()).groupState(PdpState.ACTIVE).build();
 
         final List<PdpGroup> pdpGroups = pdpGroupService.getFilteredPdpGroups(filter);
         if (!pdpGroups.isEmpty()) {
@@ -179,7 +178,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
         return pdpGroupFound;
     }
 
-    private boolean registerPdp(final PdpStatus message, final PdpGroup finalizedPdpGroup) throws PfModelException {
+    private boolean registerPdp(final PdpStatus message, final PdpGroup finalizedPdpGroup) {
         Optional<PdpSubGroup> subGroup;
         var pdpGroupFound = false;
         subGroup = findPdpSubGroup(message, finalizedPdpGroup);
@@ -187,7 +186,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
         if (subGroup.isPresent()) {
             policies = getToscaPolicies(subGroup.get());
             policiesToBeDeployed = policies.stream().collect(Collectors
-                    .toMap(ToscaPolicy::getIdentifier, policy -> policy));
+                .toMap(ToscaPolicy::getIdentifier, policy -> policy));
             policiesToBeUndeployed = null;
 
             LOGGER.debug("Found pdpGroup - {}, going for registration of PDP - {}", finalizedPdpGroup, message);
@@ -220,10 +219,10 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
         LOGGER.debug("Updated PdpSubGroup in DB - {} belonging to PdpGroup - {}", pdpSubGroup, pdpGroup.getName());
     }
 
-    private void handlePdpHeartbeat(final PdpStatus message) throws PfModelException {
+    private void handlePdpHeartbeat(final PdpStatus message) {
 
         final PdpGroupFilter filter =
-                PdpGroupFilter.builder().name(message.getPdpGroup()).groupState(PdpState.ACTIVE).build();
+            PdpGroupFilter.builder().name(message.getPdpGroup()).groupState(PdpState.ACTIVE).build();
         final List<PdpGroup> pdpGroups = pdpGroupService.getFilteredPdpGroups(filter);
         if (!pdpGroups.isEmpty()) {
             var pdpGroup = pdpGroups.get(0);
@@ -263,20 +262,20 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
     }
 
     private void processPdpDetails(final PdpStatus message, final PdpSubGroup pdpSubGroup, final Pdp pdpInstance,
-            final PdpGroup pdpGroup) throws PfModelException {
+                                   final PdpGroup pdpGroup) {
         // all policies
         policies = getToscaPolicies(pdpSubGroup);
 
         Map<ToscaConceptIdentifier, ToscaPolicy> policyMap =
-                        policies.stream().collect(Collectors.toMap(ToscaPolicy::getIdentifier, policy -> policy));
+            policies.stream().collect(Collectors.toMap(ToscaPolicy::getIdentifier, policy -> policy));
 
         // policies that the PDP already has (-) all
-        policiesToBeUndeployed = message.getPolicies().stream().filter(policyId -> !policyMap.containsKey(policyId))
-                        .collect(Collectors.toList());
+        policiesToBeUndeployed = message.getPolicies().stream()
+            .filter(policyId -> !policyMap.containsKey(policyId)).toList();
 
         // all (-) policies that the PDP already has
         policiesToBeDeployed = policyMap;
-        policiesToBeDeployed.keySet().removeAll(message.getPolicies());
+        message.getPolicies().forEach(policiesToBeDeployed.keySet()::remove);
 
         if (PdpState.TERMINATED.equals(message.getState())) {
             processPdpTermination(pdpSubGroup, pdpInstance, pdpGroup);
@@ -298,25 +297,25 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
         pdpGroupService.updatePdpSubGroup(pdpGroup.getName(), pdpSubGroup);
 
         LOGGER.debug("Deleted PdpInstance - {} belonging to PdpSubGroup - {} and PdpGroup - {}", pdpInstance,
-                pdpSubGroup, pdpGroup);
+            pdpSubGroup, pdpGroup);
     }
 
     private boolean validatePdpDetails(final PdpStatus message, final PdpGroup pdpGroup, final PdpSubGroup subGroup,
-            final Pdp pdpInstanceDetails) {
+                                       final Pdp pdpInstanceDetails) {
         /*
          * "EqualsBuilder" is a bit of a misnomer, as it uses containsAll() to check policies. Nevertheless, it does the
          * job and provides a convenient way to build a bunch of comparisons.
          */
         return new EqualsBuilder().append(message.getPdpGroup(), pdpGroup.getName())
-                .append(message.getPdpSubgroup(), subGroup.getPdpType())
-                .append(message.getPdpType(), subGroup.getPdpType())
-                .append(message.getState(), pdpInstanceDetails.getPdpState())
-                .append(message.getPolicies().containsAll(subGroup.getPolicies()), true)
-                .append(subGroup.getPolicies().containsAll(message.getPolicies()), true).build();
+            .append(message.getPdpSubgroup(), subGroup.getPdpType())
+            .append(message.getPdpType(), subGroup.getPdpType())
+            .append(message.getState(), pdpInstanceDetails.getPdpState())
+            .append(new HashSet<>(message.getPolicies()).containsAll(subGroup.getPolicies()), true)
+            .append(new HashSet<>(subGroup.getPolicies()).containsAll(message.getPolicies()), true).build();
     }
 
     private void updatePdpHealthStatus(final PdpStatus message, final PdpSubGroup pdpSubgroup, final Pdp pdpInstance,
-            final PdpGroup pdpGroup) {
+                                       final PdpGroup pdpGroup) {
         pdpInstance.setHealthy(message.getHealthy());
         pdpInstance.setMessage(message.getDescription());
         pdpInstance.setLastUpdate(Instant.now());
@@ -326,11 +325,11 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
     }
 
     private void sendPdpMessage(final String pdpGroupName, final PdpSubGroup subGroup, final String pdpInstanceId,
-            final PdpState pdpState) {
+                                final PdpState pdpState) {
         final List<ToscaPolicy> polsToBeDeployed = new LinkedList<>(policiesToBeDeployed.values());
         final var pdpUpdatemessage =
             createPdpUpdateMessage(pdpGroupName, subGroup, pdpInstanceId,
-                        polsToBeDeployed, policiesToBeUndeployed);
+                polsToBeDeployed, policiesToBeUndeployed);
         final var pdpStateChangeMessage =
             createPdpStateChangeMessage(pdpGroupName, subGroup, pdpInstanceId, pdpState);
         updateDeploymentStatus(pdpGroupName, subGroup.getPdpType(), pdpInstanceId, pdpStateChangeMessage.getState(),
index 181ea43..32b7ff8 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2021 Bell Canada. All rights reserved.
- *  Modifications Copyright (C) 2023 Nordix Foundation.
+ *  Modifications Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -44,7 +44,7 @@ public class WebSecurityConfig {
         http
             .httpBasic(Customizer.withDefaults())
             .authorizeHttpRequests(authorize -> authorize.anyRequest().authenticated())
-            .csrf(AbstractHttpConfigurer::disable);
+            .csrf(AbstractHttpConfigurer::disable); // NOSONAR
         return http.build();
     }
 }
index 58876fc..685d52f 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2022 Bell Canada. All rights reserved.
- *  Modifications Copyright (C) 2023 Nordix Foundation.
+ *  Modifications Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,7 +22,6 @@
 package org.onap.policy.pap.main.exception;
 
 import jakarta.ws.rs.core.Response;
-import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterThrowing;
 import org.aspectj.lang.annotation.Aspect;
 import org.onap.policy.models.base.PfModelRuntimeException;
@@ -37,13 +36,12 @@ public class ServiceExceptionHandler {
      * Handle any exceptions that are not already handled.
      * For e.g., runtime exceptions that could happen during SQL query execution related to data integrity etc.
      *
-     * @param joinPoint the point of execution
      * @param exception the exception
      */
     @AfterThrowing(pointcut = "execution(* org.onap.policy.pap.main.service.*.*(..))", throwing = "exception")
-    public void handleServiceException(JoinPoint joinPoint, RuntimeException exception) {
-        if (exception instanceof PfModelRuntimeException) {
-            throw (PfModelRuntimeException) exception;
+    public void handleServiceException(RuntimeException exception) {
+        if (exception instanceof PfModelRuntimeException pfModelException) {
+            throw pfModelException;
         } else {
             throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, exception.getMessage(), exception);
         }
@@ -55,11 +53,10 @@ public class ServiceExceptionHandler {
      * Autowiring these service classes can cause TransactionException.
      * For e.g., JDBC connection failure occurs and failed to open transaction at service level
      *
-     * @param joinPoint the point of execution
      * @param exception the exception
      */
     @AfterThrowing(pointcut = "execution(* org.onap.policy.pap.main.*.*.*(..))", throwing = "exception")
-    public void handleTransactionException(JoinPoint joinPoint, TransactionException exception) {
+    public void handleTransactionException(TransactionException exception) {
         throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, exception.getMessage(), exception);
     }
 }
index f63fc1d..bf6cf24 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019-2023 Nordix Foundation.
+ *  Copyright (C) 2019-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
  *  Modifications Copyright (C) 2021, 2023 Bell Canada. All rights reserved.
  * ================================================================================
@@ -53,13 +53,12 @@ public class PdpGroupStateChangeControllerV1 extends PapRestControllerV1 impleme
      *
      * @param requestId request ID used in ONAP logging
      * @param groupName name of the PDP group to be deleted
-     * @param state state of the PDP group
+     * @param state     state of the PDP group
      * @return a response
-     * @throws PfModelException Exception thrown by changeGroupState
      */
     @Override
-    public ResponseEntity<PdpGroupStateChangeResponse> changeGroupState(
-        String groupName, PdpState state, UUID requestId) {
+    public ResponseEntity<PdpGroupStateChangeResponse> changeGroupState(String groupName, PdpState state,
+                                                                        UUID requestId) {
         try {
             final Pair<HttpStatus, PdpGroupStateChangeResponse> pair = provider.changeGroupState(groupName, state);
             return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(pair.getLeft())), requestId)
index 648b56f..7b3b1b9 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019-2021, 2023 Nordix Foundation.
+ *  Copyright (C) 2019-2021, 2023-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
  *  Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
@@ -36,7 +36,6 @@ import org.onap.policy.pap.main.comm.PdpMessageGenerator;
 import org.onap.policy.pap.main.service.PdpGroupService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.stereotype.Service;
 
@@ -50,43 +49,39 @@ public class PdpGroupStateChangeProvider extends PdpMessageGenerator {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(PdpGroupStateChangeProvider.class);
 
-    @Autowired
-    private PdpGroupService pdpGroupService;
+    private final PdpGroupService pdpGroupService;
 
     /**
      * Constructs the object.
      */
-    public PdpGroupStateChangeProvider() {
+    public PdpGroupStateChangeProvider(PdpGroupService pdpGroupService) {
         super(false);
+        this.pdpGroupService = pdpGroupService;
     }
 
     /**
      * Changes state of a PDP group.
      *
-     * @param groupName name of the PDP group
+     * @param groupName     name of the PDP group
      * @param pdpGroupState state of the PDP group
      * @return a pair containing the status and the response
      * @throws PfModelException in case of errors
      */
     public Pair<HttpStatus, PdpGroupStateChangeResponse> changeGroupState(final String groupName,
-            final PdpState pdpGroupState) throws PfModelException {
+                                                                          final PdpState pdpGroupState)
+        throws PfModelException {
         synchronized (updateLock) {
             switch (pdpGroupState) {
-                case ACTIVE:
-                    handleActiveState(groupName);
-                    break;
-                case PASSIVE:
-                    handlePassiveState(groupName);
-                    break;
-                default:
-                    throw new PfModelException(Response.Status.BAD_REQUEST,
-                            "Only ACTIVE or PASSIVE state changes are allowed");
+                case ACTIVE -> handleActiveState(groupName);
+                case PASSIVE -> handlePassiveState(groupName);
+                default -> throw new PfModelException(Response.Status.BAD_REQUEST,
+                    "Only ACTIVE or PASSIVE state changes are allowed");
             }
             return Pair.of(HttpStatus.OK, new PdpGroupStateChangeResponse());
         }
     }
 
-    private void handleActiveState(final String groupName) throws PfModelException {
+    private void handleActiveState(final String groupName) {
         final List<PdpGroup> pdpGroups = pdpGroupService.getPdpGroups(groupName);
         if (!pdpGroups.isEmpty() && !PdpState.ACTIVE.equals(pdpGroups.get(0).getPdpGroupState())) {
             updatePdpGroupAndPdp(pdpGroups, PdpState.ACTIVE);
@@ -94,7 +89,7 @@ public class PdpGroupStateChangeProvider extends PdpMessageGenerator {
         }
     }
 
-    private void handlePassiveState(final String groupName) throws PfModelException {
+    private void handlePassiveState(final String groupName) {
         final List<PdpGroup> pdpGroups = pdpGroupService.getPdpGroups(groupName);
         if (!pdpGroups.isEmpty() && !PdpState.PASSIVE.equals(pdpGroups.get(0).getPdpGroupState())) {
             updatePdpGroupAndPdp(pdpGroups, PdpState.PASSIVE);
@@ -114,21 +109,21 @@ public class PdpGroupStateChangeProvider extends PdpMessageGenerator {
         LOGGER.debug("Updated PdpGroup and Pdp in DB - {} ", pdpGroups);
     }
 
-    private void sendPdpMessage(final PdpGroup pdpGroup, final PdpState pdpState) throws PfModelException {
+    private void sendPdpMessage(final PdpGroup pdpGroup, final PdpState pdpState) {
         String pdpGroupName = pdpGroup.getName();
         for (final PdpSubGroup subGroup : pdpGroup.getPdpSubgroups()) {
             List<ToscaPolicy> policies = getToscaPolicies(subGroup);
             for (final Pdp pdp : subGroup.getPdpInstances()) {
                 String pdpInstanceId = pdp.getInstanceId();
-                final var pdpUpdatemessage =
+                final var pdpUpdateMessage =
                     createPdpUpdateMessage(pdpGroup.getName(), subGroup, pdp.getInstanceId(),
-                                policies, null);
+                        policies, null);
                 final var pdpStateChangeMessage =
                     createPdpStateChangeMessage(pdpGroupName, subGroup, pdpInstanceId, pdpState);
                 updateDeploymentStatus(pdpGroupName, subGroup.getPdpType(), pdpInstanceId,
-                    pdpStateChangeMessage.getState(), pdpUpdatemessage.getPoliciesToBeDeployed());
-                requestMap.addRequest(pdpUpdatemessage, pdpStateChangeMessage);
-                LOGGER.debug("Sent PdpUpdate message - {}", pdpUpdatemessage);
+                    pdpStateChangeMessage.getState(), pdpUpdateMessage.getPoliciesToBeDeployed());
+                requestMap.addRequest(pdpUpdateMessage, pdpStateChangeMessage);
+                LOGGER.debug("Sent PdpUpdate message - {}", pdpUpdateMessage);
                 LOGGER.debug("Sent PdpStateChange message - {}", pdpStateChangeMessage);
             }
         }
index dfa4ae9..0a6f4b3 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021-2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021-2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,7 +26,6 @@ import com.google.re2j.PatternSyntaxException;
 import java.util.Collection;
 import java.util.UUID;
 import lombok.RequiredArgsConstructor;
-import org.onap.policy.models.base.PfModelRuntimeException;
 import org.onap.policy.models.pap.concepts.PolicyStatus;
 import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
@@ -58,7 +57,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
      * policies that match regex
      *
      * @param requestId request ID used in ONAP logging
-     * @param regex regex for a policy name
+     * @param regex     regex for a policy name
      * @return a response
      */
     @Override
@@ -74,11 +73,6 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
             }
             return makeListOrNotFoundResponse(requestId, result);
 
-        } catch (PfModelRuntimeException e) {
-            logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(
-                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
-                requestId).body(e.getErrorResponse().getErrorMessage());
         } catch (PatternSyntaxException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
             return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.BAD_REQUEST)), requestId)
@@ -94,21 +88,12 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
      */
     @Override
     public ResponseEntity<Object> queryDeployedPolicies(String name, UUID requestId) {
+        Collection<PolicyStatus> result = provider.getStatus(new ToscaConceptIdentifierOptVersion(name, null));
+        if (result.isEmpty()) {
+            return makeNotFoundResponse(requestId);
 
-        try {
-            Collection<PolicyStatus> result = provider.getStatus(new ToscaConceptIdentifierOptVersion(name, null));
-            if (result.isEmpty()) {
-                return makeNotFoundResponse(requestId);
-
-            } else {
-                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(result);
-            }
-
-        } catch (PfModelRuntimeException e) {
-            logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(
-                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
-                requestId).body(e.getErrorResponse().getErrorMessage());
+        } else {
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(result);
         }
     }
 
@@ -121,22 +106,13 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
      */
     @Override
     public ResponseEntity<Object> queryDeployedPolicy(String name, String version, UUID requestId) {
+        Collection<PolicyStatus> result = provider.getStatus(new ToscaConceptIdentifierOptVersion(name, version));
+        if (result.isEmpty()) {
+            return makeNotFoundResponse(requestId);
 
-        try {
-            Collection<PolicyStatus> result = provider.getStatus(new ToscaConceptIdentifierOptVersion(name, version));
-            if (result.isEmpty()) {
-                return makeNotFoundResponse(requestId);
-
-            } else {
-                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
-                    .body(result.iterator().next());
-            }
-
-        } catch (PfModelRuntimeException e) {
-            logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(
-                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
-                requestId).body(e.getErrorResponse().getErrorMessage());
+        } else {
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+                .body(result.iterator().next());
         }
     }
 
@@ -149,17 +125,8 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
      */
     @Override
     public ResponseEntity<Object> getStatusOfAllPolicies(UUID requestId) {
-
-        try {
-            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
-                .body(provider.getPolicyStatus());
-
-        } catch (PfModelRuntimeException e) {
-            logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(
-                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
-                requestId).body(e.getErrorResponse().getErrorMessage());
-        }
+        return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+            .body(provider.getPolicyStatus());
     }
 
     /**
@@ -167,16 +134,12 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
      * policies that match regex
      *
      * @param pdpGroupName name of the PdpGroup
-     * @param requestId request ID used in ONAP logging
-     * @param regex regex for a policy name
+     * @param requestId    request ID used in ONAP logging
+     * @param regex        regex for a policy name
      * @return a response
      */
     @Override
-    public ResponseEntity<Object> getStatusOfPoliciesByGroup(
-        String pdpGroupName,
-        UUID requestId,
-        String regex) {
-
+    public ResponseEntity<Object> getStatusOfPoliciesByGroup(String pdpGroupName, UUID requestId, String regex) {
         try {
             final Collection<PdpPolicyStatus> result;
             if (regex == null) {
@@ -188,11 +151,6 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
             }
             return makeListOrNotFoundResponse(requestId, result);
 
-        } catch (PfModelRuntimeException e) {
-            logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(
-                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
-                requestId).body(e.getErrorResponse().getErrorMessage());
         } catch (PatternSyntaxException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
             return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.BAD_REQUEST)), requestId)
@@ -204,32 +162,18 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
      * Queries status of all versions of a specific policy in a specific PdpGroup.
      *
      * @param pdpGroupName name of the PdpGroup
-     * @param policyName name of the Policy
-     * @param requestId request ID used in ONAP logging
+     * @param policyName   name of the Policy
+     * @param requestId    request ID used in ONAP logging
      * @return a response
      */
     @Override
-    public ResponseEntity<Object> getStatusOfPolicies(
-        String pdpGroupName,
-        String policyName,
-        UUID requestId) {
-
-        try {
-            Collection<PdpPolicyStatus> result =
-                provider.getPolicyStatus(pdpGroupName, new ToscaConceptIdentifierOptVersion(policyName, null));
-            if (result.isEmpty()) {
-                return makeNotFoundResponse(requestId);
-
-            } else {
-                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
-                    .body(result);
-            }
-
-        } catch (PfModelRuntimeException e) {
-            logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(
-                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
-                requestId).body(e.getErrorResponse().getErrorMessage());
+    public ResponseEntity<Object> getStatusOfPolicies(String pdpGroupName, String policyName, UUID requestId) {
+        Collection<PdpPolicyStatus> result =
+            provider.getPolicyStatus(pdpGroupName, new ToscaConceptIdentifierOptVersion(policyName, null));
+        if (result.isEmpty()) {
+            return makeNotFoundResponse(requestId);
+        } else {
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(result);
         }
     }
 
@@ -237,36 +181,24 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
     /**
      * Queries status of a specific version of a specific policy in a specific PdpGroup.
      *
-     * @param pdpGroupName name of the PdpGroup
-     * @param policyName name of the Policy
+     * @param pdpGroupName  name of the PdpGroup
+     * @param policyName    name of the Policy
      * @param policyVersion version of the Policy
-     * @param requestId request ID used in ONAP logging
+     * @param requestId     request ID used in ONAP logging
      * @return a response
      */
 
     @Override
-    public ResponseEntity<Object> getStatusOfPolicy(
-            String pdpGroupName,
-            String policyName,
-            String policyVersion,
-            UUID requestId) {
-
-        try {
-            Collection<PdpPolicyStatus> result = provider.getPolicyStatus(pdpGroupName,
-                new ToscaConceptIdentifierOptVersion(policyName, policyVersion));
-            if (result.isEmpty()) {
-                return makeNotFoundResponse(requestId);
-
-            } else {
-                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
-                    .body(result.iterator().next());
-            }
+    public ResponseEntity<Object> getStatusOfPolicy(String pdpGroupName, String policyName, String policyVersion,
+                                                    UUID requestId) {
+        Collection<PdpPolicyStatus> result = provider.getPolicyStatus(pdpGroupName,
+            new ToscaConceptIdentifierOptVersion(policyName, policyVersion));
+        if (result.isEmpty()) {
+            return makeNotFoundResponse(requestId);
 
-        } catch (PfModelRuntimeException e) {
-            logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(
-                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
-                requestId).body(e.getErrorResponse().getErrorMessage());
+        } else {
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+                .body(result.iterator().next());
         }
     }
 
@@ -278,7 +210,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 implements Pol
      */
     private ResponseEntity<Object> makeNotFoundResponse(final UUID requestId) {
         return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.NOT_FOUND)), requestId)
-                        .build();
+            .build();
     }
 
     private ResponseEntity<Object> makeRegexNotFoundResponse(UUID requestId) {
index 631c9c0..ac2c3c8 100644 (file)
@@ -4,7 +4,7 @@
  * ================================================================================
  * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
- * Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@ package org.onap.policy.pap.main.rest;
 import com.google.re2j.Pattern;
 import java.util.Collection;
 import java.util.List;
-import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import org.onap.policy.models.pap.concepts.PolicyStatus;
 import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
@@ -126,8 +125,8 @@ public class PolicyStatusProvider {
      * @return the deployment status of the policy
      */
     public Collection<PdpPolicyStatus> getPolicyStatus(String pdpGroupName, ToscaConceptIdentifierOptVersion policy) {
-        return policyStatusService.getAllPolicyStatus(policy).stream().filter(p -> p.getPdpGroup().equals(pdpGroupName))
-            .collect(Collectors.toList());
+        return policyStatusService.getAllPolicyStatus(policy).stream()
+            .filter(p -> p.getPdpGroup().equals(pdpGroupName)).toList();
     }
 
     /**
@@ -154,7 +153,6 @@ public class PolicyStatusProvider {
                     .getPolicy()
                     .getName();
                 return pattern.matcher(policyName).matches();
-            })
-            .collect(Collectors.toList());
+            }).toList();
     }
 }
index bd9f6bc..ce5fdc3 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2022 Bell Canada. All rights reserved.
- *  Modifications Copyright (C) 2023 Nordix Foundation.
+ *  Modifications Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@ import jakarta.ws.rs.core.Response;
 import java.time.Instant;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import org.onap.policy.common.parameters.BeanValidationResult;
@@ -55,7 +54,7 @@ public class PolicyAuditService {
      * @param audits list of policy audit
      */
     public void createAuditRecords(@NonNull final List<PolicyAudit> audits) {
-        List<JpaPolicyAudit> jpaAudits = audits.stream().map(JpaPolicyAudit::new).collect(Collectors.toList());
+        List<JpaPolicyAudit> jpaAudits = audits.stream().map(JpaPolicyAudit::new).toList();
 
         var result = new BeanValidationResult("createAuditRecords", jpaAudits);
 
@@ -186,6 +185,6 @@ public class PolicyAuditService {
     }
 
     private List<PolicyAudit> asPolicyAuditList(List<JpaPolicyAudit> jpaPolicyAuditList) {
-        return jpaPolicyAuditList.stream().map(JpaPolicyAudit::toAuthorative).collect(Collectors.toList());
+        return jpaPolicyAuditList.stream().map(JpaPolicyAudit::toAuthorative).toList();
     }
 }
index ac7830d..d4ade78 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2022 Bell Canada. All rights reserved.
- *  Modifications Copyright (C) 2023 Nordix Foundation.
+ *  Modifications Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +25,6 @@ import jakarta.ws.rs.core.Response;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.stream.Collectors;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import org.onap.policy.common.parameters.BeanValidationResult;
@@ -70,11 +69,9 @@ public class PolicyStatusService {
      * @return the policy status list found
      */
     public List<PdpPolicyStatus> getAllPolicyStatus(@NonNull ToscaConceptIdentifierOptVersion policy) {
-
         if (policy.getVersion() != null) {
             return asPolicyStatusList(policyStatusRepository
                 .findByKeyParentKeyNameAndKeyParentKeyVersion(policy.getName(), policy.getVersion()));
-
         } else {
             return asPolicyStatusList(policyStatusRepository.findByKeyParentKeyName(policy.getName()));
         }
@@ -84,11 +81,11 @@ public class PolicyStatusService {
      * Gets all status for a policy in a group.
      *
      * @param pdpGroup the group's name
-     * @param policy the policy
+     * @param policy   the policy
      * @return the policy status list found
      */
     public List<PdpPolicyStatus> getAllPolicyStatus(@NonNull String pdpGroup,
-        @NonNull ToscaConceptIdentifierOptVersion policy) {
+                                                    @NonNull ToscaConceptIdentifierOptVersion policy) {
         if (policy.getVersion() != null) {
             return asPolicyStatusList(policyStatusRepository.findByPdpGroupAndKeyParentKeyNameAndKeyParentKeyVersion(
                 pdpGroup, policy.getName(), policy.getVersion()));
@@ -106,7 +103,7 @@ public class PolicyStatusService {
      * @param deleteObjs the objects to delete
      */
     public void cudPolicyStatus(Collection<PdpPolicyStatus> createObjs, Collection<PdpPolicyStatus> updateObjs,
-        Collection<PdpPolicyStatus> deleteObjs) {
+                                Collection<PdpPolicyStatus> deleteObjs) {
         try {
             policyStatusRepository.deleteAll(fromAuthorativeStatus(deleteObjs, "deletePdpPolicyStatusList"));
             policyStatusRepository.saveAll(fromAuthorativeStatus(createObjs, "createPdpPolicyStatusList"));
@@ -121,7 +118,7 @@ public class PolicyStatusService {
      * Converts a collection of authorative policy status to a collection of JPA policy
      * status. Validates the resulting list.
      *
-     * @param objs authorative policy status to convert
+     * @param objs      authorative policy status to convert
      * @param fieldName name of the field containing the collection
      * @return a list of JPA policy status
      */
@@ -130,7 +127,7 @@ public class PolicyStatusService {
             return Collections.emptyList();
         }
 
-        List<JpaPdpPolicyStatus> jpas = objs.stream().map(JpaPdpPolicyStatus::new).collect(Collectors.toList());
+        List<JpaPdpPolicyStatus> jpas = objs.stream().map(JpaPdpPolicyStatus::new).toList();
 
         // validate the objects
         var result = new BeanValidationResult(fieldName, jpas);
@@ -148,6 +145,6 @@ public class PolicyStatusService {
     }
 
     private List<PdpPolicyStatus> asPolicyStatusList(List<JpaPdpPolicyStatus> jpaPdpPolicyStatusList) {
-        return jpaPdpPolicyStatusList.stream().map(JpaPdpPolicyStatus::toAuthorative).collect(Collectors.toList());
+        return jpaPdpPolicyStatusList.stream().map(JpaPdpPolicyStatus::toAuthorative).toList();
     }
 }
index 222f240..f992ebe 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2022 Bell Canada. All rights reserved.
- *  Modifications Copyright (C) 2022-2023 Nordix Foundation.
+ *  Modifications Copyright (C) 2022-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,7 +27,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.stream.Collectors;
 import lombok.RequiredArgsConstructor;
 import org.onap.policy.models.base.PfConceptKey;
 import org.onap.policy.models.base.PfModelException;
@@ -63,12 +62,11 @@ public class ToscaServiceTemplateService {
     /**
      * Get policies.
      *
-     * @param name the name of the policy to get, null to get all policies
+     * @param name    the name of the policy to get, null to get all policies
      * @param version the version of the policy to get, null to get all versions of a policy
      * @return the policies found
-     * @throws PfModelException on errors getting policies
      */
-    public List<ToscaPolicy> getPolicyList(final String name, final String version) throws PfModelException {
+    public List<ToscaPolicy> getPolicyList(final String name, final String version) {
 
         LOGGER.debug("->getPolicyList: name={}, version={}", name, version);
 
@@ -77,7 +75,7 @@ public class ToscaServiceTemplateService {
         try {
             List<Map<String, ToscaPolicy>> policies = getToscaServiceTemplate(name, version, "policy").toAuthorative()
                 .getToscaTopologyTemplate().getPolicies();
-            policyList = policies.stream().flatMap(policy -> policy.values().stream()).collect(Collectors.toList());
+            policyList = policies.stream().flatMap(policy -> policy.values().stream()).toList();
             populateMetadataSet(policyList);
         } catch (PfModelRuntimeException pfme) {
             return handlePfModelRuntimeException(pfme);
@@ -105,7 +103,7 @@ public class ToscaServiceTemplateService {
     /**
      * Get policy types.
      *
-     * @param name the name of the policy type to get, set to null to get all policy types
+     * @param name    the name of the policy type to get, set to null to get all policy types
      * @param version the version of the policy type to get, set to null to get all versions
      * @return the policy types found
      * @throws PfModelException on errors getting policy types
@@ -152,7 +150,8 @@ public class ToscaServiceTemplateService {
     }
 
     private JpaToscaServiceTemplate getToscaPolicies(final String name, final String version,
-        JpaToscaServiceTemplate dbServiceTemplate) throws PfModelException {
+                                                     JpaToscaServiceTemplate dbServiceTemplate)
+        throws PfModelException {
         if (!ToscaUtils.doPoliciesExist(dbServiceTemplate)) {
             throw new PfModelRuntimeException(Response.Status.NOT_FOUND,
                 "policies for " + name + ":" + version + " do not exist");
@@ -166,7 +165,8 @@ public class ToscaServiceTemplateService {
     }
 
     private JpaToscaServiceTemplate getToscaPolicyTypes(final String name, final String version,
-        JpaToscaServiceTemplate dbServiceTemplate) throws PfModelException {
+                                                        JpaToscaServiceTemplate dbServiceTemplate)
+        throws PfModelException {
         if (!ToscaUtils.doPolicyTypesExist(dbServiceTemplate)) {
             throw new PfModelRuntimeException(Response.Status.NOT_FOUND,
                 "policy types for " + name + ":" + version + " do not exist");
index 790d951..aeb1f18 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019, 2023 Nordix Foundation.
+ *  Copyright (C) 2019, 2023-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
  *  Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
@@ -34,7 +34,6 @@ import org.onap.policy.pap.main.PolicyPapException;
 import org.onap.policy.pap.main.service.PdpGroupService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.stereotype.Component;
@@ -52,8 +51,7 @@ public class PapDatabaseInitializer {
 
     private final StandardCoder standardCoder;
 
-    @Autowired
-    private PdpGroupService pdpGroupService;
+    private final PdpGroupService pdpGroupService;
 
     @Value("${group-config-file:PapDb.json}")
     private String groupConfigFile;
@@ -61,7 +59,8 @@ public class PapDatabaseInitializer {
     /**
      * Constructs the object.
      */
-    public PapDatabaseInitializer() {
+    public PapDatabaseInitializer(PdpGroupService pdpGroupService) {
+        this.pdpGroupService = pdpGroupService;
         standardCoder = new StandardCoder();
     }
 
index 7290be7..57fc5e9 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020-2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2020-2021, 2023-2024 Nordix Foundation.
  * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -438,13 +438,6 @@ class PdpModifyRequestMapTest extends CommonRequestBase {
         assertThatCode(map::removeExpiredPdps).doesNotThrowAnyException();
     }
 
-    @Test
-    void testRemoveExpiredPdps_DaoRtEx() {
-        when(pdpGroupService.getFilteredPdpGroups(any())).thenThrow(makeRuntimeException());
-
-        assertThatCode(map::removeExpiredPdps).doesNotThrowAnyException();
-    }
-
     @Test
     void testRemoveFromSubgroup() {
         PdpGroup group = makeGroup(MY_GROUP);
@@ -603,20 +596,6 @@ class PdpModifyRequestMapTest extends CommonRequestBase {
         assertEquals(2, map.nalloc);
     }
 
-    @Test
-    void testRequestCompleted_LastRequest() {
-        map.addRequest(change);
-
-        // invoke the method
-        invokeSuccessHandler();
-
-        verify(requests, never()).stopPublishing();
-
-        // requests should have been removed from the map so this should allocate another
-        map.addRequest(update);
-        assertEquals(2, map.nalloc);
-    }
-
     @Test
     void testRequestCompleted_NameMismatch() {
         // use a different name
@@ -790,7 +769,6 @@ class PdpModifyRequestMapTest extends CommonRequestBase {
         public MyMap(PdpModifyRequestMapParams params) {
             super(pdpGroupService, policyStatusService, responseHandler, undeployer, notifier);
             super.initialize(params);
-            ;
         }
 
         @Override
index 6d4ac02..67f3d36 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -51,13 +51,14 @@ class TimerManagerTest extends Threaded {
      * This is a field rather than a local variable to prevent checkstyle from complaining
      * about the distance between its assignment and its use.
      */
-    private long tcur;
+    private long tcur1;
 
     /**
      * Sets up.
      *
      * @throws Exception if an error occurs
      */
+    @Override
     @BeforeEach
     public void setUp() throws Exception {
         super.setUp();
@@ -65,13 +66,8 @@ class TimerManagerTest extends Threaded {
         mgr = new MyManager(MGR_NAME, MGR_TIMEOUT_MS);
     }
 
-    @AfterEach
-    public void tearDown() throws Exception {
-        super.tearDown();
-    }
-
     @Override
-    protected void stopThread() throws Exception {
+    protected void stopThread() {
         if (mgr != null) {
             mgr.stop();
             mgr.allowSleep(10);
@@ -149,26 +145,6 @@ class TimerManagerTest extends Threaded {
         mgr.awaitSleep();
     }
 
-    @Test
-    void testProcessTimer_StopWhileWaiting() throws Exception {
-        startThread(mgr);
-        mgr.register(NAME1, mgr::addToQueue);
-        mgr.awaitSleep();
-        mgr.allowSleep(1);
-
-        mgr.registerNewTime(NAME2, mgr::addToQueue);
-        mgr.awaitSleep();
-
-        mgr.stop();
-        mgr.allowSleep(1);
-
-        assertTrue(waitStop());
-
-        // should have stopped after processing the first timer
-        assertEquals(NAME1, mgr.pollTimer());
-        assertNull(mgr.pollTimer());
-    }
-
     @Test
     void testProcessTimer_CancelWhileWaiting() throws Exception {
         startThread(mgr);
@@ -220,7 +196,7 @@ class TimerManagerTest extends Threaded {
         mgr.register(NAME2, mgr::addToQueue);
         mgr.awaitSleep();
 
-        tcur = mgr.currentTimeMillis();
+        tcur1 = mgr.currentTimeMillis();
 
         mgr.allowSleep(1);
 
@@ -229,7 +205,7 @@ class TimerManagerTest extends Threaded {
         mgr.awaitSleep();
 
         long tcur2 = mgr.currentTimeMillis();
-        assertTrue(tcur2 >= tcur + MGR_TIMEOUT_MS);
+        assertTrue(tcur2 >= tcur1 + MGR_TIMEOUT_MS);
 
         assertEquals(NAME1, mgr.pollTimer());
         assertEquals(NAME2, mgr.pollTimer());
@@ -321,18 +297,15 @@ class TimerManagerTest extends Threaded {
          * current time when determining the expiration time, we have to temporarily
          * fiddle with {@link #curTime}, but we leave it unchanged when we're done.
          * Increases the {@link #offset} each time it's invoked.
-         *
-         * @return the new timer
          */
-        public Timer registerNewTime(String timerName, Consumer<String> action) {
+        public void registerNewTime(String timerName, Consumer<String> action) {
             synchronized (lockit) {
                 offset++;
 
                 curTime += offset;
-                Timer timer = super.register(timerName, action);
+                super.register(timerName, action);
                 curTime -= offset;
 
-                return timer;
             }
         }
 
index 7d62c7e..b5db301 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -74,7 +74,7 @@ class UpdateReqTest extends CommonRequestBase {
         response.setPdpSubgroup(update.getPdpSubgroup());
         response.setPolicies(
             update.getPoliciesToBeDeployed().stream().map(ToscaPolicy::getIdentifier)
-                .collect(Collectors.toList()));
+                .toList());
 
         data = new UpdateReq(reqParams, MY_REQ_NAME, update);
         data.setNotifier(notifier);
@@ -153,7 +153,7 @@ class UpdateReqTest extends CommonRequestBase {
         ArrayList<ToscaPolicy> policies = new ArrayList<>(update.getPoliciesToBeDeployed());
         policies.set(0, makePolicy(DIFFERENT, "10.0.0"));
 
-        response.setPolicies(policies.stream().map(ToscaPolicy::getIdentifier).collect(Collectors.toList()));
+        response.setPolicies(policies.stream().map(ToscaPolicy::getIdentifier).toList());
 
         assertEquals("policies do not match", data.checkResponse(response));
         verifyResponse();
@@ -243,7 +243,7 @@ class UpdateReqTest extends CommonRequestBase {
         policies = new ArrayList<>(update.getPoliciesToBeDeployed());
         List<ToscaConceptIdentifier> polsToUndep = policies.parallelStream()
             .map(ToscaPolicy::getIdentifier)
-            .collect(Collectors.toList());
+            .toList();
         msg2.setPoliciesToBeUndeployed(polsToUndep);
 
         assertTrue(data.reconfigure(msg2));
@@ -267,8 +267,7 @@ class UpdateReqTest extends CommonRequestBase {
         // some items in both undeploy and newMessage.deploy
         policies = new ArrayList<>(update.getPoliciesToBeDeployed());
         List<ToscaConceptIdentifier> polsToUndep2 = policies.parallelStream()
-            .map(ToscaPolicy::getIdentifier)
-            .collect(Collectors.toList());
+            .map(ToscaPolicy::getIdentifier).toList();
         data.getMessage().setPoliciesToBeUndeployed(polsToUndep2);
 
         List<ToscaPolicy> polsToDep2 = new LinkedList<>();
@@ -280,13 +279,12 @@ class UpdateReqTest extends CommonRequestBase {
 
         List<ToscaConceptIdentifier> dataPols2 = data.getMessage().getPoliciesToBeDeployed().stream()
             .map(ToscaPolicy::getIdentifier)
-            .collect(Collectors.toList());
+            .toList();
         assertThat(data.getMessage().getPoliciesToBeUndeployed())
             .doesNotContainAnyElementsOf(dataPols2);
 
         // some items only in undeploy
-        pols = policies.stream().map(ToscaPolicy::getIdentifier)
-            .collect(Collectors.toList());
+        pols = policies.stream().map(ToscaPolicy::getIdentifier).toList();
         msg2.setPoliciesToBeUndeployed(pols);
         data.getMessage().setPoliciesToBeUndeployed(new LinkedList<>());
         assertTrue(data.reconfigure(msg2));
index 69c7420..8196dd7 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2023-2024 Nordix Foundation.
  * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,6 +27,7 @@ import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.lenient;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -38,25 +39,23 @@ import java.util.Set;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
 import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.base.PfModelRuntimeException;
 import org.onap.policy.models.pap.concepts.PolicyNotification;
 import org.onap.policy.models.pap.concepts.PolicyStatus;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyPapRuntimeException;
 import org.onap.policy.pap.main.comm.Publisher;
 import org.onap.policy.pap.main.comm.QueueToken;
 import org.onap.policy.pap.main.service.PolicyStatusService;
 
-@RunWith(MockitoJUnitRunner.class)
+@ExtendWith(MockitoExtension.class)
 class PolicyNotifierTest {
     private static final String GROUP_A = "groupA";
     private static final String PDP1 = "pdp-1";
@@ -85,14 +84,9 @@ class PolicyNotifierTest {
     @BeforeEach
     public void setUp() {
         closeable = MockitoAnnotations.openMocks(this);
-        try {
-            when(policyStatusService.getGroupPolicyStatus(anyString())).thenReturn(Collections.emptyList());
-            Registry.registerOrReplace(PapConstants.REG_METER_REGISTRY, new SimpleMeterRegistry());
-            notifier = new MyNotifier(publisher);
-
-        } catch (PfModelException e) {
-            throw new PolicyPapRuntimeException(e);
-        }
+        lenient().when(policyStatusService.getGroupPolicyStatus(anyString())).thenReturn(Collections.emptyList());
+        Registry.registerOrReplace(PapConstants.REG_METER_REGISTRY, new SimpleMeterRegistry());
+        notifier = new MyNotifier(publisher);
     }
 
     @AfterEach
@@ -164,7 +158,7 @@ class PolicyNotifierTest {
 
     private class MyNotifier extends PolicyNotifier {
 
-        public MyNotifier(Publisher<PolicyNotification> publisher) throws PfModelException {
+        public MyNotifier(Publisher<PolicyNotification> publisher) {
             super(policyStatusService);
             super.setPublisher(publisher);
         }
index fe22cd8..f976d59 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019, 2023 Nordix Foundation.
+ *  Copyright (C) 2019, 2023-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
  *  Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
@@ -87,6 +87,8 @@ public abstract class CommonPapRestServer {
     private boolean activatorWasAlive;
     protected String httpsPrefix;
 
+    protected Client client;
+
     @LocalServerPort
     private int port;
 
@@ -134,6 +136,9 @@ public abstract class CommonPapRestServer {
     @AfterEach
     public void tearDown() {
         markActivator(activatorWasAlive);
+        if (client != null) {
+            client.close();
+        }
     }
 
     @AfterAll
@@ -181,6 +186,7 @@ public abstract class CommonPapRestServer {
         Object manager = ReflectionTestUtils.getField(papActivator, "serviceManager");
         AtomicBoolean running = (AtomicBoolean) ReflectionTestUtils
             .getField(Objects.requireNonNull(manager), "running");
+        assert running != null;
         running.set(wasAlive);
     }
 
@@ -193,8 +199,10 @@ public abstract class CommonPapRestServer {
      */
     protected void checkUnauthRequest(final String endpoint, Function<Invocation.Builder, Response> sender)
         throws Exception {
-        assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(),
-            sender.apply(sendNoAuthRequest(endpoint)).getStatus());
+        var resp = sender.apply(sendNoAuthRequest(endpoint));
+        assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), resp.getStatus());
+        resp.close();
+
     }
 
     /**
@@ -245,7 +253,7 @@ public abstract class CommonPapRestServer {
         sc.init(null, NetworkUtil.getAlwaysTrustingManager(), new SecureRandom());
         final ClientBuilder clientBuilder =
             ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier((host, session) -> true);
-        final Client client = clientBuilder.build();
+        client = clientBuilder.build();
 
         client.property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, "true");
         client.register((mediaType.equalsIgnoreCase(MediaType.APPLICATION_JSON) ? GsonMessageBodyHandler.class
index e5a8330..98ce403 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019-2022 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021-2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021-2024 Nordix Foundation.
  * Modifications Copyright (C) 2022-2023 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -102,7 +102,7 @@ public class ProviderSuper {
      * Configures DAO, captors, and various mocks.
      */
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
 
         Registry.newRegistry();
 
@@ -111,7 +111,7 @@ public class ProviderSuper {
         reqmap = mock(PdpModifyRequestMap.class);
 
         lockit = new Object();
-        policy1 = loadPolicy("policy.json");
+        policy1 = loadPolicy();
 
         meterRegistry = mock(MeterRegistry.class);
 
@@ -267,21 +267,19 @@ public class ProviderSuper {
     /**
      * Loads a policy.
      *
-     * @param fileName name of the file from which to load
      * @return a policy
      */
-    protected ToscaPolicy loadPolicy(String fileName) {
-        return loadFile(fileName, ToscaPolicy.class);
+    protected ToscaPolicy loadPolicy() {
+        return loadFile("policy.json", ToscaPolicy.class);
     }
 
     /**
      * Loads a policy type.
      *
-     * @param fileName name of the file from which to load
      * @return a policy type
      */
-    protected ToscaPolicyType loadPolicyType(String fileName) {
-        return loadFile(fileName, ToscaPolicyType.class);
+    protected ToscaPolicyType loadPolicyType() {
+        return loadFile("daoPolicyType.json", ToscaPolicyType.class);
     }
 
     /**
index 445a921..b96b53f 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP PAP
  * ================================================================================
- * Copyright (C) 2019-2021, 2023 Nordix Foundation.
+ * Copyright (C) 2019-2021, 2023-2024 Nordix Foundation.
  * Modifications Copyright (C) 2021 AT&T Intellectual Property.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
@@ -33,7 +33,6 @@ import static org.mockito.Mockito.when;
 
 import jakarta.ws.rs.core.Response.Status;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.TreeMap;
@@ -68,17 +67,19 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
 
     /**
      * Configures mocks and objects.
-     *
-     * @throws Exception if an error occurs
      */
     @BeforeEach
     @Override
-    public void setUp() throws Exception {
+    public void setUp() {
         super.setUp();
         prov = new PdpGroupCreateOrUpdateProvider();
         super.initialize(prov);
-        when(toscaService.getPolicyTypeList("typeA", "100.2.3"))
-            .thenReturn(Arrays.asList(loadPolicyType("daoPolicyType.json")));
+        try {
+            when(toscaService.getPolicyTypeList("typeA", "100.2.3"))
+                .thenReturn(Collections.singletonList(loadPolicyType()));
+        } catch (PfModelException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     @Test
@@ -90,7 +91,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     }
 
     @Test
-    void testCreateOrUpdateGroups_InvalidRequest() throws Exception {
+    void testCreateOrUpdateGroups_InvalidRequest() {
         assertThatThrownBy(() -> prov.createOrUpdateGroups(new PdpGroups())).isInstanceOf(PfModelException.class)
             .hasMessageContaining("is null");
 
@@ -98,7 +99,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     }
 
     @Test
-    void testCreateOrUpdate_Invalid() throws Exception {
+    void testCreateOrUpdate_Invalid() {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         groups.getGroups().get(0).setPdpGroupState(PdpState.TERMINATED);
 
@@ -123,18 +124,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     }
 
     @Test
-    void testAddGroup_Invalid() throws Exception {
-        PdpGroups groups = loadPdpGroups("createGroups.json");
-        groups.getGroups().get(0).setPdpGroupState(PdpState.TERMINATED);
-
-        assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
-            .hasMessageContaining("pdpGroupState");
-
-        assertNoGroupAction();
-    }
-
-    @Test
-    void testAddGroup_InvalidSubGroup() throws Exception {
+    void testAddGroup_InvalidSubGroup() {
         PdpGroups groups = loadPdpGroups("createGroups.json");
 
         groups.getGroups().get(0).getPdpSubgroups().get(0).getSupportedPolicyTypes().get(0).setVersion("99.99.99");
@@ -181,7 +171,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
 
         // DB group = new group
         PdpGroup group = new PdpGroup(groups.getGroups().get(0));
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -189,13 +179,13 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     }
 
     @Test
-    void testUpdateGroup_PropertiesChanged() throws Exception {
+    void testUpdateGroup_PropertiesChanged() {
         PdpGroups groups = loadPdpGroups("createGroups.json");
 
         PdpGroup group = new PdpGroup(groups.getGroups().get(0));
         group.setProperties(new TreeMap<>());
 
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
             .hasMessageContaining("properties");
@@ -209,7 +199,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
         group.setDescription("old description");
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -225,7 +215,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
         group.setPdpGroupState(PdpState.TEST);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -239,7 +229,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     void testUpdateGroup_NewSubGroup() throws Exception {
         PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
         PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -253,7 +243,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         // something different in this subgroup
         group.getPdpSubgroups().get(0).setDesiredInstanceCount(10);
@@ -267,7 +257,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     @Test
     void testUpdateGroup_notifyPdpsDelSubGroups() throws Exception {
         PdpGroup dbgroup = new PdpGroup(loadPdpGroups("createGroupsDelSub.json").getGroups().get(0));
-        when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+        when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(List.of(dbgroup));
 
         PdpGroups groups = loadPdpGroups("createGroups.json");
 
@@ -322,7 +312,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -334,7 +324,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         group.setDescription(null);
 
@@ -349,7 +339,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         newgrp.setDescription(null);
 
@@ -364,7 +354,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         newgrp.setDescription(group.getDescription() + "-changed");
 
@@ -378,7 +368,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     void testAddSubGroup() throws Exception {
         PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
         PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -404,7 +394,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
 
         PdpGroups groups = loadPdpGroups("createGroupsWildCard.json");
         PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -421,7 +411,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     void testAddSubGroup_ValidationPolicyTypeNotFound() throws Exception {
         PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
         PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         when(toscaService.getPolicyTypeList(any(), any())).thenReturn(Collections.emptyList());
 
@@ -432,7 +422,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     void testAddSubGroup_ValidationPolicyTypeDaoEx() throws Exception {
         PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
         PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         PfModelException exc = new PfModelException(Status.CONFLICT, EXPECTED_EXCEPTION);
         when(toscaService.getPolicyTypeList(any(), any())).thenThrow(exc);
@@ -445,7 +435,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup dbgroup = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+        when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(List.of(dbgroup));
 
         when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
             .thenReturn(loadPolicies("daoPolicyList.json")).thenReturn(loadPolicies("createGroupNewPolicy.json"));
@@ -461,11 +451,11 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     }
 
     @Test
-    void testUpdateSubGroup_Invalid() throws Exception {
+    void testUpdateSubGroup_Invalid() {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         // change properties
         newgrp.getPdpSubgroups().get(0).setProperties(new TreeMap<>());
@@ -481,7 +471,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         newgrp.getPdpSubgroups().get(0).getSupportedPolicyTypes()
             .add(new ToscaConceptIdentifier("typeX.*", "9.8.7"));
@@ -500,7 +490,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         newgrp.getPdpSubgroups().get(0).setDesiredInstanceCount(20);
 
@@ -515,7 +505,7 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         prov.createOrUpdateGroups(groups);
 
@@ -532,11 +522,11 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
     }
 
     @Test
-    void testValidateSubGroup_PropertiesMismatch() throws Exception {
+    void testValidateSubGroup_PropertiesMismatch() {
         PdpGroups groups = loadPdpGroups("createGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
         PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
 
         newgrp.setProperties(new TreeMap<>());
 
@@ -546,17 +536,17 @@ public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
         assertNoGroupAction();
     }
 
-    private void assertNoGroupAction() throws Exception {
+    private void assertNoGroupAction() {
         verify(pdpGroupService, never()).createPdpGroups(any());
         verify(pdpGroupService, never()).updatePdpGroups(any());
         verify(reqmap, never()).addRequest(any(), any());
     }
 
-    private void assertGroupUpdateOnly(PdpGroup group) throws Exception {
+    private void assertGroupUpdateOnly(PdpGroup group) {
         verify(pdpGroupService, never()).createPdpGroups(any());
         verify(reqmap, never()).addRequest(any(), any());
 
         List<PdpGroup> updates = getGroupUpdates();
-        assertEquals(Arrays.asList(group), updates);
+        assertEquals(Collections.singletonList(group), updates);
     }
 }
index aff3fa2..23a62f8 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020-2023 Nordix Foundation.
+ * Modifications Copyright (C) 2020-2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -78,12 +78,10 @@ public class TestPdpGroupDeleteProvider extends ProviderSuper {
 
     /**
      * Configures mocks and objects.
-     *
-     * @throws Exception if an error occurs
      */
     @BeforeEach
     @Override
-    public void setUp() throws Exception {
+    public void setUp() {
         super.setUp();
         prov = new MyProvider();
         super.initialize(prov);
@@ -187,7 +185,7 @@ public class TestPdpGroupDeleteProvider extends ProviderSuper {
     }
 
     @Test
-    void testUndeployPolicy_DaoEx() throws Exception {
+    void testUndeployPolicy_DaoEx() throws PfModelException {
         PfModelException exc = new PfModelException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
 
         prov = spy(prov);
@@ -197,7 +195,7 @@ public class TestPdpGroupDeleteProvider extends ProviderSuper {
     }
 
     @Test
-    void testUndeployPolicy_RtEx() throws Exception {
+    void testUndeployPolicy_RtEx() throws PfModelException {
         RuntimeException exc = new RuntimeException(EXPECTED_EXCEPTION);
 
         prov = spy(prov);
@@ -279,7 +277,7 @@ public class TestPdpGroupDeleteProvider extends ProviderSuper {
 
         @Override
         protected void processPolicy(SessionData data, ToscaConceptIdentifierOptVersion desiredPolicy)
-            throws PfModelException {
+            throws PfModelException { // NOSONAR
             // do nothing
         }
     }
index 0de4239..6b9ecaf 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019-2022 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2023-2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2023 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -80,19 +80,22 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
     /**
      * Configures mocks and objects.
      *
-     * @throws Exception if an error occurs
      */
     @Override
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
 
         super.setUp();
         prov = new PdpGroupDeployProvider();
         super.initialize(prov);
 
-        when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList2.json"));
-        when(toscaService.getPolicyTypeList("typeA", "100.2.3"))
-            .thenReturn(List.of(loadPolicyType("daoPolicyType.json")));
+        try {
+            when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList2.json"));
+            when(toscaService.getPolicyTypeList("typeA", "100.2.3"))
+                .thenReturn(List.of(loadPolicyType()));
+        } catch (PfModelException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     /**
@@ -229,7 +232,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
     }
 
     @Test
-    void testUpdateGroupPolicies_InvalidRequest() throws Exception {
+    void testUpdateGroupPolicies_InvalidRequest() {
         assertThatThrownBy(() -> prov.updateGroupPolicies(new DeploymentGroups(), DEFAULT_USER))
                 .isInstanceOf(PfModelException.class).hasMessageContaining("is null");
 
@@ -237,7 +240,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
     }
 
     @Test
-    void testUpdateGroup_UnknownGroup() throws Exception {
+    void testUpdateGroup_UnknownGroup() {
         PdpGroups groups = loadPdpGroups("deployGroups.json");
 
         String groupName = groups.getGroups().get(0).getName();
@@ -266,7 +269,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
     }
 
     @Test
-    void testUpdateGroup_NewSubGroup() throws Exception {
+    void testUpdateGroup_NewSubGroup() {
         PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
         PdpGroup group = loadPdpGroups("deployGroups.json").getGroups().get(0);
         when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
@@ -278,22 +281,6 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
         assertNoGroupAction();
     }
 
-    @Test
-    void testUpdateGroup_UpdatedSubGroup() throws Exception {
-        PdpGroups groups = loadPdpGroups("deployGroups.json");
-        PdpGroup newgrp = groups.getGroups().get(0);
-        PdpGroup group = new PdpGroup(newgrp);
-        when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(List.of(group));
-
-        // something different in this subgroup
-        group.getPdpSubgroups().get(0).getPolicies().add(new ToscaConceptIdentifier(POLICY2_NAME, POLICY2_VERSION));
-
-        prov.updateGroupPolicies(toDeploymentGroups(groups), DEFAULT_USER);
-
-        assertEquals(newgrp.toString(), group.toString());
-        assertGroupUpdate(group, group.getPdpSubgroups().get(0));
-    }
-
     @Test
     void testUpdateSubGroup_Invalid() throws Exception {
         PdpGroups groups = loadPdpGroups("deployGroups.json");
@@ -381,7 +368,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
     }
 
     @Test
-    void testUpdateSubGroup_PolicyVersionPrefixMismatch() throws Exception {
+    void testUpdateSubGroup_PolicyVersionPrefixMismatch() {
         PdpGroups groups = loadPdpGroups("deployGroups.json");
         PdpGroup newgrp = groups.getGroups().get(0);
 
@@ -530,7 +517,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
         assertGroup(getGroupUpdates(), GROUP1_NAME);
 
         List<PdpUpdate> requests = getUpdateRequests(1);
-        assertUpdate(requests, GROUP1_NAME, PDP2_TYPE, PDP2);
+        assertUpdate(requests, PDP2_TYPE, PDP2);
 
         // nothing is complete - notification should be empty
         checkEmptyNotification();
@@ -587,8 +574,8 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
         assertGroup(getGroupUpdates(), GROUP1_NAME);
 
         List<PdpUpdate> requests = getUpdateRequests(2);
-        assertUpdate(requests, GROUP1_NAME, PDP2_TYPE, PDP2);
-        assertUpdate(requests, GROUP1_NAME, PDP4_TYPE, PDP4);
+        assertUpdate(requests, PDP2_TYPE, PDP2);
+        assertUpdate(requests, PDP4_TYPE, PDP4);
 
         // nothing is complete - notification should be empty
         checkEmptyNotification();
@@ -624,11 +611,11 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
         verify(reqmap, never()).addRequest(any(PdpUpdate.class));
     }
 
-    protected void assertUpdate(List<PdpUpdate> updates, String groupName, String pdpType, String pdpName) {
+    protected void assertUpdate(List<PdpUpdate> updates, String pdpType, String pdpName) {
 
         PdpUpdate update = updates.remove(0);
 
-        assertEquals(groupName, update.getPdpGroup());
+        assertEquals(TestPdpGroupDeployProvider.GROUP1_NAME, update.getPdpGroup());
         assertEquals(pdpType, update.getPdpSubgroup());
         assertEquals(pdpName, update.getName());
         assertThat(update.getPoliciesToBeDeployed()).contains(policy1);
index dff023c..59aa6d2 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019, 2023 Nordix Foundation.
+ *  Copyright (C) 2019, 2023-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2020-2022 Bell Canada. All rights reserved.
  *  Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
@@ -65,7 +65,7 @@ class TestPdpGroupHealthCheckProvider {
      * Configures DAO and mocks.
      */
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
         autoCloseable = MockitoAnnotations.openMocks(this);
         Registry.newRegistry();
         groups = loadFile().getGroups();
index 0701bd9..6343d19 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2019, 2022-2023 Nordix Foundation.
+ *  Copyright (C) 2019, 2022-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@
 
 package org.onap.policy.pap.main.rest;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
@@ -55,12 +56,19 @@ class TestPdpGroupStateChangeControllerV1 extends CommonPapRestServer {
         assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
         assertNull(resp.getErrorDetails());
 
-        rawresp = invocationBuilder.put(Entity.json(""));
-        resp = rawresp.readEntity(PdpGroupStateChangeResponse.class);
-        assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
-        assertNull(resp.getErrorDetails());
-
         // verify it fails when no authorization info is included
         checkUnauthRequest(uri, req -> req.put(Entity.json("")));
+        rawresp.close();
+    }
+
+    @Test
+    void testChangeGroupState_Exception() throws Exception {
+        final String uri = GROUP_ENDPOINT + "/my-name?state=TEST";
+
+        final Invocation.Builder invocationBuilder = sendRequest(uri);
+        Response rawresp = invocationBuilder.put(Entity.json(""));
+        assertThat(rawresp.getStatusInfo().getStatusCode())
+            .isEqualTo(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
+        rawresp.close();
     }
 }
index 12b9b35..9fa5948 100644 (file)
@@ -1,6 +1,6 @@
 /*-
  * ============LICENSE_START=======================================================
- *  Copyright (C) 2021, 2023 Nordix Foundation.
+ *  Copyright (C) 2021, 2023-2024 Nordix Foundation.
  *  Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -46,11 +46,11 @@ public class TestPolicyAuditManager extends ProviderSuper {
     PolicyAuditManager auditManager;
 
     /**
-     * Setup the test variables.
+     * Set up the test variables.
      */
     @Override
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
         super.setUp();
         auditManager = new PolicyAuditManager(policyAuditService);
     }
@@ -77,9 +77,7 @@ public class TestPolicyAuditManager extends ProviderSuper {
     @Test
     void testSaveRecordsToDb_EmptyList() {
         assertThat(auditManager.getAuditRecords()).isEmpty();
-        ;
         auditManager.saveRecordsToDb();
-
         assertThatCode(() -> auditManager.saveRecordsToDb()).doesNotThrowAnyException();
     }
 
index 0455f3f..0eb4e7f 100644 (file)
@@ -4,7 +4,7 @@
  * ================================================================================
  * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
- * Modifications Copyright (C) 2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -73,11 +73,10 @@ public class TestPolicyStatusProvider extends ProviderSuper {
     /**
      * Configures mocks and objects.
      *
-     * @throws Exception if an error occurs
      */
     @Override
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
 
         super.setUp();
 
index ccd083c..ccd0fe4 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2023-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -74,11 +74,10 @@ public class TestPolicyUndeployerImpl extends ProviderSuper {
     /**
      * Configures mocks and objects.
      *
-     * @throws Exception if an error occurs
      */
     @Override
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
 
         super.setUp();
 
@@ -106,8 +105,12 @@ public class TestPolicyUndeployerImpl extends ProviderSuper {
 
         group.setPdpSubgroups(List.of(subgroup0, subgroup));
 
-        when(session.getGroup(MY_GROUP)).thenReturn(group);
-        when(session.getPolicy(any())).thenReturn(policy1);
+        try {
+            when(session.getGroup(MY_GROUP)).thenReturn(group);
+            when(session.getPolicy(any())).thenReturn(policy1);
+        } catch (PfModelException e) {
+            throw new RuntimeException(e);
+        }
 
         prov = new MyProvider();
     }
index 9a95590..70d25fd 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2023-2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -78,15 +78,18 @@ public class TestProviderBase extends ProviderSuper {
     /**
      * Configures mocks and objects.
      *
-     * @throws Exception if an error occurs
      */
     @Override
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
         super.setUp();
         prov = new MyProvider();
         super.initialize(prov);
-        when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
+        try {
+            when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
+        } catch (PfModelException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     @Test
@@ -101,13 +104,13 @@ public class TestProviderBase extends ProviderSuper {
 
         assertGroup(getGroupUpdates(), GROUP1_NAME);
 
-        assertUpdate(getUpdateRequests(1), GROUP1_NAME, PDP1_TYPE, PDP1);
+        assertUpdate(getUpdateRequests(1), PDP1_TYPE, PDP1);
 
         checkEmptyNotification();
     }
 
     @Test
-    void testProcess_PfRtEx() throws Exception {
+    void testProcess_PfRtEx() {
         PfModelRuntimeException ex = new PfModelRuntimeException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
         when(pdpGroupService.updatePdpGroups(any())).thenThrow(ex);
 
@@ -115,7 +118,7 @@ public class TestProviderBase extends ProviderSuper {
     }
 
     @Test
-    void testProcess_RuntimeEx() throws Exception {
+    void testProcess_RuntimeEx() {
         RuntimeException ex = new RuntimeException(EXPECTED_EXCEPTION);
         when(pdpGroupService.updatePdpGroups(any())).thenThrow(ex);
 
@@ -124,7 +127,7 @@ public class TestProviderBase extends ProviderSuper {
     }
 
     @Test
-    void testProcessPolicy_NoGroups() throws Exception {
+    void testProcessPolicy_NoGroups() {
         when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Collections.emptyList());
 
         SessionData session =
@@ -190,8 +193,8 @@ public class TestProviderBase extends ProviderSuper {
         assertGroup(getGroupUpdates(), GROUP1_NAME);
 
         List<PdpUpdate> requests = getUpdateRequests(2);
-        assertUpdate(requests, GROUP1_NAME, PDP2_TYPE, PDP2);
-        assertUpdate(requests, GROUP1_NAME, PDP4_TYPE, PDP4);
+        assertUpdate(requests, PDP2_TYPE, PDP2);
+        assertUpdate(requests, PDP4_TYPE, PDP4);
     }
 
     @Test
@@ -265,12 +268,12 @@ public class TestProviderBase extends ProviderSuper {
     }
 
 
-    protected void assertUpdate(List<PdpUpdate> updates, String groupName, String pdpType, String pdpName) {
+    protected void assertUpdate(List<PdpUpdate> updates, String pdpType, String pdpName) {
 
         PdpUpdate update = updates.remove(0);
 
         assertEquals(PapConstants.PAP_NAME, update.getSource());
-        assertEquals(groupName, update.getPdpGroup());
+        assertEquals(TestProviderBase.GROUP1_NAME, update.getPdpGroup());
         assertEquals(pdpType, update.getPdpSubgroup());
         assertEquals(pdpName, update.getName());
         assertTrue(update.getPoliciesToBeDeployed().contains(policy1));
index 82f3461..4434c0d 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021, 2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021, 2023-2024 Nordix Foundation.
  * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -86,11 +86,10 @@ class TestSessionData extends ProviderSuper {
     /**
      * Initializes mocks and a session.
      *
-     * @throws Exception if an error occurs
      */
     @Override
     @BeforeEach
-    public void setUp() throws Exception {
+    public void setUp() {
         super.setUp();
 
         ident = new ToscaConceptIdentifierOptVersion(POLICY_NAME, POLICY_VERSION);
@@ -104,7 +103,7 @@ class TestSessionData extends ProviderSuper {
 
     @Test
     void testGetPolicyType() throws Exception {
-        ToscaPolicyType policy1 = makePolicyType(POLICY_TYPE, POLICY_TYPE_VERSION);
+        ToscaPolicyType policy1 = makePolicyType();
         when(toscaService.getPolicyTypeList(POLICY_TYPE, POLICY_TYPE_VERSION)).thenReturn(List.of(policy1));
 
         assertSame(policy1, session.getPolicyType(type));
@@ -130,7 +129,7 @@ class TestSessionData extends ProviderSuper {
 
     @Test
     void testGetPolicy_NullVersion() throws Exception {
-        ToscaPolicy policy1 = makePolicy(POLICY_NAME, POLICY_VERSION);
+        ToscaPolicy policy1 = makePolicy();
         when(toscaService.getFilteredPolicyList(any())).thenReturn(List.of(policy1));
 
         ident.setVersion(null);
@@ -148,7 +147,7 @@ class TestSessionData extends ProviderSuper {
 
     @Test
     void testGetPolicy_MajorVersion() throws Exception {
-        ToscaPolicy policy1 = makePolicy(POLICY_NAME, POLICY_VERSION);
+        ToscaPolicy policy1 = makePolicy();
         when(toscaService.getFilteredPolicyList(any())).thenReturn(List.of(policy1));
 
         ident.setVersion("1");
@@ -166,7 +165,7 @@ class TestSessionData extends ProviderSuper {
 
     @Test
     void testGetPolicy_MajorMinorVersion() throws Exception {
-        ToscaPolicy policy1 = makePolicy(POLICY_NAME, POLICY_VERSION);
+        ToscaPolicy policy1 = makePolicy();
         when(toscaService.getFilteredPolicyList(any())).thenReturn(List.of(policy1));
 
         ident.setVersion(POLICY_VERSION);
@@ -322,20 +321,20 @@ class TestSessionData extends ProviderSuper {
         assertEquals(List.of(change1, change2, change3).toString(), lst.toString());
     }
 
-    private ToscaPolicyType makePolicyType(String name, String version) {
-        ToscaPolicyType type = new ToscaPolicyType();
+    private ToscaPolicyType makePolicyType() {
+        ToscaPolicyType newType = new ToscaPolicyType();
 
-        type.setName(name);
-        type.setVersion(version);
+        newType.setName(TestSessionData.POLICY_TYPE);
+        newType.setVersion(TestSessionData.POLICY_TYPE_VERSION);
 
-        return type;
+        return newType;
     }
 
-    private ToscaPolicy makePolicy(String name, String version) {
+    private ToscaPolicy makePolicy() {
         ToscaPolicy policy = new ToscaPolicy();
 
-        policy.setName(name);
-        policy.setVersion(version);
+        policy.setName(TestSessionData.POLICY_NAME);
+        policy.setVersion(TestSessionData.POLICY_VERSION);
 
         return policy;
     }
@@ -561,7 +560,7 @@ class TestSessionData extends ProviderSuper {
                 }
             };
 
-        ToscaPolicy policy = makePolicy(POLICY_NAME, POLICY_VERSION);
+        ToscaPolicy policy = makePolicy();
         policy.setType(POLICY_TYPE);
         policy.setTypeVersion(POLICY_TYPE_VERSION);
 
index 1aa40a2..4315cf3 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2019-2020, 2022-2023 Nordix Foundation.
+ * Modifications Copyright (C) 2019-2020, 2022-2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2023 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -130,9 +130,7 @@ public abstract class End2EndBase extends CommonPapRestServer {
      * @param yamlFile name of the YAML file specifying the data to be loaded
      */
     public void addToscaPolicies(final String yamlFile) {
-        final ToscaServiceTemplate serviceTemplate = loadYamlFile(yamlFile, ToscaServiceTemplate.class);
-        JpaToscaServiceTemplate jpaToscaServiceTemplate = mergeWithExistingTemplate(serviceTemplate);
-        serviceTemplateRepository.save(jpaToscaServiceTemplate);
+        addToscaPolicyTypes(yamlFile);
     }
 
     private JpaToscaServiceTemplate mergeWithExistingTemplate(ToscaServiceTemplate serviceTemplate) {
@@ -243,7 +241,7 @@ public abstract class End2EndBase extends CommonPapRestServer {
         }
     }
 
-    public class PolicyStatusRecords {
+    public static class PolicyStatusRecords {
         private List<PdpPolicyStatus> records;
     }
 }
index 5bc8dd0..7dbf5a0 100644 (file)
@@ -3,7 +3,7 @@
  * ONAP PAP
  * ================================================================================
  * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021-2023 Nordix Foundation.
+ * Modifications Copyright (C) 2021-2024 Nordix Foundation.
  * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -129,6 +129,7 @@ class PdpGroupDeployTest extends End2EndBase {
         resp = rawresp.readEntity(PdpGroupDeployResponse.class);
         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), rawresp.getStatus());
         assertTrue(resp.getErrorDetails().contains("unknown group"));
+        rawresp.close();
     }
 
     @Test
@@ -205,5 +206,6 @@ class PdpGroupDeployTest extends End2EndBase {
         assertNull(resp.getErrorDetails());
 
         assertThat(meterRegistry.counter(deploymentsCounterName, deploymentSuccessTag).count()).isEqualTo(2);
+        rawresp.close();
     }
 }
index 11f2045..8617c4e 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2022 Bell Canada. All rights reserved.
- *  Modifications Copyright (C) 2022-2023 Nordix Foundation.
+ *  Modifications Copyright (C) 2022-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -110,7 +110,7 @@ class PolicyAuditServiceTest extends CommonPapRestServer {
             NUMBER_RECORDS, null, null)).hasSize(2);
         assertThat(
             policyAuditService.getAuditRecords(GROUP_A, MY_POLICY.getName(), "9.9.9", NUMBER_RECORDS, null, null))
-                .isEmpty();
+            .isEmpty();
         assertThat(policyAuditService.getAuditRecords(GROUP_B, MY_POLICY.getName(), MY_POLICY.getVersion(),
             NUMBER_RECORDS, null, null)).isEmpty();
         assertThat(policyAuditService.getAuditRecords(GROUP_B, MY_POLICY2.getName(), MY_POLICY2.getVersion(),
@@ -119,10 +119,58 @@ class PolicyAuditServiceTest extends CommonPapRestServer {
             null, null)).hasSize(2);
         assertThat(
             policyAuditService.getAuditRecords(MY_POLICY.getName(), MY_POLICY.getVersion(), NUMBER_RECORDS, null, null))
-                .hasSize(2);
+            .hasSize(2);
 
     }
 
+    @Test
+    void testGetAuditRecords_ForCoverage() {
+        Instant startDate1 = Instant.now();
+
+        policyAuditService.createAuditRecords(generatePolicyAudits(startDate1, GROUP_A, MY_POLICY));
+        assertThat(policyAuditService.getAuditRecords(NUMBER_RECORDS, null, startDate1)).hasSize(1);
+        assertThat(policyAuditService.getAuditRecords(GROUP_A, NUMBER_RECORDS, null, startDate1)).hasSize(1);
+        assertThat(policyAuditService.getAuditRecords(GROUP_A, NUMBER_RECORDS, startDate1, null)).hasSize(1);
+
+        var listByPolicy = policyAuditService.getAuditRecords(GROUP_A, MY_POLICY.getName(), MY_POLICY.getVersion(),
+            NUMBER_RECORDS, startDate1, null);
+        assertThat(listByPolicy).hasSize(1);
+        listByPolicy = policyAuditService.getAuditRecords(MY_POLICY.getName(), MY_POLICY.getVersion(),
+            NUMBER_RECORDS, null, startDate1);
+        assertThat(listByPolicy).hasSize(1);
+
+        listByPolicy = policyAuditService.getAuditRecords(GROUP_A, MY_POLICY.getName(), MY_POLICY.getVersion(),
+            NUMBER_RECORDS, startDate1, null);
+        assertThat(listByPolicy).hasSize(1);
+        listByPolicy = policyAuditService.getAuditRecords(MY_POLICY.getName(), MY_POLICY.getVersion(),
+            NUMBER_RECORDS, startDate1, null);
+        assertThat(listByPolicy).hasSize(1);
+
+
+        listByPolicy = policyAuditService.getAuditRecords(MY_POLICY.getName(), MY_POLICY.getVersion(),
+            0, null, null);
+        assertThat(listByPolicy).hasSize(2);
+
+        listByPolicy = policyAuditService.getAuditRecords(GROUP_A, MY_POLICY.getName(), MY_POLICY.getVersion(),
+            NUMBER_RECORDS, null, startDate1);
+        assertThat(listByPolicy).hasSize(1);
+
+        listByPolicy = policyAuditService.getAuditRecords(GROUP_A, MY_POLICY.getName(), MY_POLICY.getVersion(),
+            NUMBER_RECORDS, startDate1, startDate1.plusSeconds(10));
+        assertThat(listByPolicy).hasSize(1);
+    }
+
+    @Test
+    void testPageable() {
+        Instant startDate1 = Instant.now();
+
+        policyAuditService.createAuditRecords(generatePolicyAudits(startDate1, GROUP_A, MY_POLICY));
+        policyAuditService.createAuditRecords(generatePolicyAudits(startDate1, GROUP_B, MY_POLICY2));
+
+        assertThat(policyAuditService.getAuditRecords(-1, null, null)).hasSize(4);
+        assertThat(policyAuditService.getAuditRecords(Integer.MAX_VALUE, null, null)).hasSize(4);
+    }
+
     private List<PolicyAudit> generatePolicyAudits(Instant date, String group, ToscaConceptIdentifier policy) {
         PolicyAudit deploy = PolicyAudit.builder().pdpGroup(group).pdpType("pdpType").policy(policy)
             .action(AuditAction.DEPLOYMENT).timestamp(date.truncatedTo(ChronoUnit.SECONDS)).build();
index ecdecf3..ba026d0 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * ============LICENSE_START=======================================================
  *  Copyright (C) 2022-2023 Bell Canada. All rights reserved.
- *  Modifications Copyright (C) 2022-2023 Nordix Foundation.
+ *  Modifications Copyright (C) 2022-2024 Nordix Foundation.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -25,7 +25,9 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
+import java.util.ArrayList;
 import java.util.List;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.onap.policy.models.base.PfModelRuntimeException;
@@ -49,6 +51,8 @@ class PolicyStatusServiceTest extends CommonPapRestServer {
 
     private PdpPolicyStatus.PdpPolicyStatusBuilder statusBuilder;
 
+    private List<PdpPolicyStatus> statusList = new ArrayList<>();
+
     /**
      * Setup before tests.
      *
@@ -64,14 +68,20 @@ class PolicyStatusServiceTest extends CommonPapRestServer {
             .policyType(policyType).state(PdpPolicyStatus.State.SUCCESS);
     }
 
+    @AfterEach
+    void after() {
+        if (!statusList.isEmpty()) {
+            policyStatusService.cudPolicyStatus(null, null, statusList);
+        }
+    }
+
     @Test
     void testGetAllPolicyStatus() {
         assertThat(policyStatusService.getAllPolicyStatus()).isEmpty();
 
-        var statusList = createStatusList();
+        statusList = createStatusList();
         policyStatusService.cudPolicyStatus(statusList, null, null);
         assertThat(policyStatusService.getAllPolicyStatus()).hasSize(5);
-        policyStatusService.cudPolicyStatus(null, null, statusList);
     }
 
     @Test
@@ -83,14 +93,14 @@ class PolicyStatusServiceTest extends CommonPapRestServer {
         assertThat(policyStatusService.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion("somePdp", null)))
             .isEmpty();
 
-        var statusList = createStatusList();
+        statusList = createStatusList();
         policyStatusService.cudPolicyStatus(statusList, null, null);
 
         assertThat(policyStatusService.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion(MY_POLICY))).hasSize(2);
-        assertThat(
-            policyStatusService.getAllPolicyStatus(new ToscaConceptIdentifierOptVersion(MY_POLICY.getName(), null)))
-                .hasSize(3);
-        policyStatusService.cudPolicyStatus(null, null, statusList);
+
+        var toscaConceptIdentifierOptVersion = new ToscaConceptIdentifierOptVersion(MY_POLICY.getName(), null);
+        assertThat(policyStatusService.getAllPolicyStatus(toscaConceptIdentifierOptVersion))
+            .hasSize(3);
     }
 
     @Test
@@ -101,10 +111,15 @@ class PolicyStatusServiceTest extends CommonPapRestServer {
 
         assertThat(policyStatusService.getGroupPolicyStatus("PdpGroup0")).isEmpty();
 
-        var statusList = createStatusList();
+        statusList = createStatusList();
         policyStatusService.cudPolicyStatus(statusList, null, null);
         assertThat(policyStatusService.getGroupPolicyStatus(GROUP_A)).hasSize(3);
-        policyStatusService.cudPolicyStatus(null, null, statusList);
+
+        assertThat(policyStatusService.getAllPolicyStatus(GROUP_A, new ToscaConceptIdentifierOptVersion(MY_POLICY)))
+            .hasSize(1);
+
+        var myOtherPolicy = new ToscaConceptIdentifierOptVersion("myOtherPolicy", null);
+        assertThat(policyStatusService.getAllPolicyStatus(GROUP_A, myOtherPolicy)).isEmpty();
     }
 
     @Test
diff --git a/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapDatabaseInitializer.java b/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapDatabaseInitializer.java
new file mode 100644 (file)
index 0000000..a8a73cb
--- /dev/null
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2024 Nordix Foundation.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.pap.main.startstop;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.onap.policy.common.utils.services.Registry;
+import org.onap.policy.pap.main.PolicyPapException;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.util.ReflectionTestUtils;
+
+@SpringBootTest
+@ActiveProfiles("test-db")
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
+class TestPapDatabaseInitializer {
+
+    @Autowired
+    private PapDatabaseInitializer papDatabaseInitializer;
+
+    @Autowired
+    private PdpGroupService pdpGroupService;
+
+    @BeforeAll
+    static void before() {
+        Registry.newRegistry();
+    }
+
+    @Order(1)
+    @Test
+    void testDatabaseCreated() {
+        assertNotNull(pdpGroupService.getPdpGroups());
+
+        assertDoesNotThrow(() -> papDatabaseInitializer.loadData());
+    }
+
+    @Order(2)
+    @Test
+    void testDatabase_Exception() {
+        ReflectionTestUtils.setField(papDatabaseInitializer, "groupConfigFile", "invalid.json");
+        assertThrows(PolicyPapException.class, () -> papDatabaseInitializer.loadData());
+
+
+        ReflectionTestUtils.setField(papDatabaseInitializer, "groupConfigFile", "simpleDeploy/emptyGroups.json");
+        assertThrows(PolicyPapException.class, () -> papDatabaseInitializer.loadData());
+
+        ReflectionTestUtils.setField(papDatabaseInitializer, "groupConfigFile",
+            "simpleDeploy/createGroupDuplicateSubGroups.json");
+        assertThrows(PolicyPapException.class, () -> papDatabaseInitializer.loadData());
+    }
+}
diff --git a/main/src/test/resources/application-test-db.yaml b/main/src/test/resources/application-test-db.yaml
new file mode 100644 (file)
index 0000000..725a3a7
--- /dev/null
@@ -0,0 +1,14 @@
+spring:
+  datasource:
+    url: jdbc:h2:mem:testdb
+    driverClassName: org.h2.Driver
+  jpa:
+    hibernate:
+      ddl-auto: create-drop
+      naming:
+        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+        implicit-strategy: org.onap.policy.common.spring.utils.CustomImplicitNamingStrategy
+    open-in-view: false
+
+pap:
+  name: "PapGroupDB"
diff --git a/main/src/test/resources/simpleDeploy/createGroupDuplicateSubGroups.json b/main/src/test/resources/simpleDeploy/createGroupDuplicateSubGroups.json
new file mode 100644 (file)
index 0000000..fa98b62
--- /dev/null
@@ -0,0 +1,53 @@
+{
+  "groups": [
+    {
+      "name": "groupA",
+      "version": "200.2.3",
+      "description": "my description",
+      "pdpGroupState": "ACTIVE",
+      "properties": {
+        "hello": "world"
+      },
+      "pdpSubgroups": [
+        {
+          "pdpType": "pdpTypeA",
+          "desiredInstanceCount": 1,
+          "properties": {
+            "abc": "def"
+          },
+          "supportedPolicyTypes": [
+            {
+              "name": "typeA",
+              "version": "100.2.3"
+            }
+          ],
+          "pdpInstances": [
+            {
+              "instanceId": "pdpA"
+            }
+          ],
+          "policies": []
+        },
+        {
+          "pdpType": "pdpTypeA",
+          "desiredInstanceCount": 1,
+          "properties": {
+            "abc": "def"
+          },
+          "supportedPolicyTypes": [
+            {
+              "name": "typeA",
+              "version": "100.2.3"
+            }
+          ],
+          "pdpInstances": [
+            {
+              "instanceId": "pdpA"
+            }
+          ],
+          "policies": []
+        }
+      ]
+    }
+  ]
+}