aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/pom.xml5
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/PapConstants.java3
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/PolicyModelsProviderFactoryWrapper.java63
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpHeartbeatListener.java16
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpMessageGenerator.java39
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java77
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java108
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/notification/DeploymentStatus.java19
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/notification/PolicyNotifier.java29
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/parameters/PapParameterGroup.java6
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/parameters/PdpModifyRequestMapParams.java14
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupHealthCheckProvider.java27
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryControllerV1.java19
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryProvider.java64
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java40
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditControllerV1.java29
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditManager.java16
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditProvider.java62
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java29
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusControllerV1.java17
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusProvider.java78
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/PolicyUndeployerImpl.java11
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java74
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java63
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java41
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java107
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/service/PdpGroupService.java27
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java46
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/service/PolicyAuditService.java15
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/service/ToscaServiceTemplateService.java14
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java59
-rw-r--r--main/src/main/java/org/onap/policy/pap/main/startstop/PapDatabaseInitializer.java33
-rw-r--r--main/src/main/resources/META-INF/persistence.xml67
-rw-r--r--main/src/main/resources/application.yaml10
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/CommonRequestBase.java12
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java47
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java41
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/notification/DeploymentStatusTest.java13
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/notification/PolicyNotifierTest.java27
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/parameters/TestPdpModifyRequestMapParams.java23
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java4
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/ProviderSuper.java49
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupCreateOrUpdateProvider.java1124
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteProvider.java19
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployProvider.java102
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupHealthCheckProvider.java20
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditManager.java5
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditProvider.java105
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyComponentsHealthCheckProvider.java17
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyStatusProvider.java10
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestProviderBase.java46
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/TestSessionData.java102
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/End2EndBase.java116
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupCreateOrUpdateTest.java15
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeleteTest.java18
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeployTest.java18
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupQueryTest.java14
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupStateChangeTest.java17
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyAuditTest.java39
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyStatusTest.java16
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/rest/e2e/StatisticsTest.java47
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/service/PdpGroupServiceTest.java37
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/service/PdpStatisticsServiceTest.java25
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/service/PolicyAuditServiceTest.java18
-rw-r--r--main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java9
-rw-r--r--main/src/test/resources/META-INF/persistence.xml68
-rw-r--r--main/src/test/resources/config/application.yaml8
-rw-r--r--packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml22
68 files changed, 1496 insertions, 2084 deletions
diff --git a/main/pom.xml b/main/pom.xml
index b19920e5..621fb45e 100644
--- a/main/pom.xml
+++ b/main/pom.xml
@@ -91,11 +91,6 @@
<version>${policy.models.version}</version>
</dependency>
<dependency>
- <groupId>org.onap.policy.models</groupId>
- <artifactId>policy-models-provider</artifactId>
- <version>${policy.models.version}</version>
- </dependency>
- <dependency>
<groupId>org.onap.policy.common</groupId>
<artifactId>utils-test</artifactId>
<version>${policy.common.version}</version>
diff --git a/main/src/main/java/org/onap/policy/pap/main/PapConstants.java b/main/src/main/java/org/onap/policy/pap/main/PapConstants.java
index f38a82e0..df43c69f 100644
--- a/main/src/main/java/org/onap/policy/pap/main/PapConstants.java
+++ b/main/src/main/java/org/onap/policy/pap/main/PapConstants.java
@@ -3,6 +3,7 @@
* ONAP PAP
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,8 +33,6 @@ public final class PapConstants {
public static final String REG_STATISTICS_MANAGER = "object:manager/statistics";
public static final String REG_PDP_MODIFY_LOCK = "lock:pdp";
public static final String REG_PDP_MODIFY_MAP = "object:pdp/modify/map";
- public static final String REG_POLICY_NOTIFIER = "object:policy/notifier";
- public static final String REG_PAP_DAO_FACTORY = "object:pap/dao/factory";
// topic names
public static final String TOPIC_POLICY_PDP_PAP = "POLICY-PDP-PAP";
diff --git a/main/src/main/java/org/onap/policy/pap/main/PolicyModelsProviderFactoryWrapper.java b/main/src/main/java/org/onap/policy/pap/main/PolicyModelsProviderFactoryWrapper.java
deleted file mode 100644
index 404b72d2..00000000
--- a/main/src/main/java/org/onap/policy/pap/main/PolicyModelsProviderFactoryWrapper.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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;
-
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.models.provider.PolicyModelsProviderFactory;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
-
-/**
- * Wraps a {@link PolicyModelsProviderFactoryWrapper}.
- */
-public class PolicyModelsProviderFactoryWrapper implements AutoCloseable {
- private final PolicyModelsProviderParameters params;
- private final PolicyModelsProviderFactory factory;
-
- /**
- * Constructs the object.
- *
- * @param params DAO configuration parameters
- */
- public PolicyModelsProviderFactoryWrapper(PolicyModelsProviderParameters params) {
- this.params = params;
- this.factory = new PolicyModelsProviderFactory();
- }
-
- @Override
- public void close() throws Exception {
- /*
- * PolicyModelsProviderFactory should, in theory, implement AutoCloseable so it
- * can close the entity manager factory and release all data. Since it doesn't
- * this method does nothing for now.
- */
- }
-
- /**
- * Creates a provider based on models-pap.
- *
- * @return a new provider
- * @throws PfModelException if an error occurs
- */
- public PolicyModelsProvider create() throws PfModelException {
- return factory.createPolicyModelsProvider(params);
- }
-}
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpHeartbeatListener.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpHeartbeatListener.java
index 15242a92..4e4709e9 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpHeartbeatListener.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpHeartbeatListener.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,10 +23,12 @@
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;
import org.onap.policy.models.pdp.concepts.PdpStatus;
-import org.onap.policy.pap.main.parameters.PdpParameters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
/**
* Listener for PDP Status messages which either represent registration or heart beat.
@@ -34,16 +36,16 @@ import org.onap.policy.pap.main.parameters.PdpParameters;
* @author Ram Krishna Verma (ram.krishna.verma@est.tech)
*/
@AllArgsConstructor
+@NoArgsConstructor
+@Component
public class PdpHeartbeatListener implements TypedMessageListener<PdpStatus> {
- private final PdpParameters params;
+ @Autowired
+ private PdpStatusMessageHandler pdpStatusMessageHandler;
- private final boolean savePdpStatistics;
@Override
public void onTopicEvent(final CommInfrastructure infra, final String topic, final PdpStatus message) {
-
- final var handler = new PdpStatusMessageHandler(params, savePdpStatistics);
- handler.handlePdpStatus(message);
+ pdpStatusMessageHandler.handlePdpStatus(message);
}
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpMessageGenerator.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpMessageGenerator.java
index 02609535..255b93e0 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpMessageGenerator.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpMessageGenerator.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,16 +32,17 @@ import org.onap.policy.models.pdp.concepts.PdpStateChange;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.notification.DeploymentStatus;
import org.onap.policy.pap.main.notification.PolicyNotifier;
import org.onap.policy.pap.main.parameters.PapParameterGroup;
+import org.onap.policy.pap.main.service.PolicyStatusService;
+import org.onap.policy.pap.main.service.ToscaServiceTemplateService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
@@ -66,15 +67,19 @@ public class PdpMessageGenerator {
protected PdpModifyRequestMap requestMap;
/**
- * Factory for PAP DAO.
- */
- protected PolicyModelsProviderFactoryWrapper modelProviderWrapper;
-
- /**
* Heart beat interval, in milliseconds, to pass to PDPs, or {@code null}.
*/
private Long heartBeatMs;
+ @Autowired
+ private ToscaServiceTemplateService toscaService;
+
+ @Autowired
+ private PolicyStatusService policyStatusService;
+
+ @Autowired
+ private PolicyNotifier policyNotifier;
+
/**
* Constructs the object.
*
@@ -90,7 +95,6 @@ public class PdpMessageGenerator {
*/
@EventListener(ApplicationReadyEvent.class)
public void initialize() {
- modelProviderWrapper = Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
updateLock = Registry.get(PapConstants.REG_PDP_MODIFY_LOCK, Object.class);
requestMap = Registry.get(PapConstants.REG_PDP_MODIFY_MAP, PdpModifyRequestMap.class);
@@ -126,16 +130,14 @@ public class PdpMessageGenerator {
* Method to return a list of policies.
*
* @param subGroup PdpSubGroup to retrieve policies from
- * @param databaseProvider PolicyModelsProvider used to retrieve list of policies
+ * @throws PfModelException the exception
* @returns a list of ToscaPolicy
**/
- public List<ToscaPolicy> getToscaPolicies(final PdpSubGroup subGroup,
- final PolicyModelsProvider databaseProvider)
- throws PfModelException {
+ public List<ToscaPolicy> getToscaPolicies(final PdpSubGroup subGroup) throws PfModelException {
final List<ToscaPolicy> policies = new LinkedList<>();
for (final ToscaConceptIdentifier policyIdentifier : subGroup.getPolicies()) {
- policies.addAll(databaseProvider.getPolicyList(policyIdentifier.getName(), policyIdentifier.getVersion()));
+ policies.addAll(toscaService.getPolicyList(policyIdentifier.getName(), policyIdentifier.getVersion()));
}
LOGGER.debug("Created ToscaPolicy list - {}", policies);
@@ -164,14 +166,12 @@ public class PdpMessageGenerator {
* @param pdpType the pdp type
* @param pdpInstanceId the pdp instance
* @param pdpState the new state as per the PDP_STATE_CHANGE change message
- * @param databaseProvider the database provider
* @param policies list of policies as per the PDP_UPDATE message
* @throws PfModelException the exception
*/
protected void updateDeploymentStatus(final String pdpGroupName, final String pdpType, final String pdpInstanceId,
- PdpState pdpState, final PolicyModelsProvider databaseProvider, List<ToscaPolicy> policies)
- throws PfModelException {
- var deploymentStatus = new DeploymentStatus(databaseProvider);
+ PdpState pdpState, List<ToscaPolicy> policies) {
+ var deploymentStatus = new DeploymentStatus(policyStatusService);
deploymentStatus.loadByGroup(pdpGroupName);
if (pdpState.equals(PdpState.PASSIVE)) {
deploymentStatus.deleteDeployment(pdpInstanceId);
@@ -183,7 +183,6 @@ public class PdpMessageGenerator {
}
var notification = new PolicyNotification();
deploymentStatus.flush(notification);
- PolicyNotifier notifier = Registry.get(PapConstants.REG_POLICY_NOTIFIER);
- notifier.publish(notification);
+ policyNotifier.publish(notification);
}
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java
index f231130a..e23026be 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpModifyRequestMap.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,7 +32,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import lombok.Setter;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pap.concepts.PolicyNotification;
import org.onap.policy.models.pdp.concepts.Pdp;
@@ -44,9 +43,7 @@ import org.onap.policy.models.pdp.concepts.PdpStatus;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.comm.msgdata.Request;
import org.onap.policy.pap.main.comm.msgdata.RequestListener;
import org.onap.policy.pap.main.comm.msgdata.StateChangeReq;
@@ -55,12 +52,16 @@ import org.onap.policy.pap.main.notification.DeploymentStatus;
import org.onap.policy.pap.main.notification.PolicyNotifier;
import org.onap.policy.pap.main.parameters.PdpModifyRequestMapParams;
import org.onap.policy.pap.main.parameters.RequestParams;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.onap.policy.pap.main.service.PolicyStatusService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
/**
* Maps a PDP name to requests that modify PDPs.
*/
+@Component
public class PdpModifyRequestMap {
private static final Logger logger = LoggerFactory.getLogger(PdpModifyRequestMap.class);
@@ -74,17 +75,12 @@ public class PdpModifyRequestMap {
/**
* PDP modification lock.
*/
- private final Object modifyLock;
+ private Object modifyLock;
/**
* The configuration parameters.
*/
- private final PdpModifyRequestMapParams params;
-
- /**
- * Factory for PAP DAO.
- */
- private final PolicyModelsProviderFactoryWrapper daoFactory;
+ private PdpModifyRequestMapParams params;
/**
* Used to notify when policy updates completes.
@@ -95,28 +91,46 @@ public class PdpModifyRequestMap {
* Used to undeploy policies from the system, when they cannot be deployed to a PDP.
*
* <p/>
- * Note: there's a "catch-22" here. The request map needs an undeployer, but the
- * undeployer needs the request map. Consequently, the request map is created first,
- * then the undeployer, and finally, this field is set.
+ * Note: The request map needs an undeployer during creation, and the undeployer
+ * needs the request map when it's initialize method is called.
*/
- @Setter
- private PolicyUndeployer policyUndeployer;
+ private final PolicyUndeployer policyUndeployer;
+
+ private final PdpGroupService pdpGroupService;
+ private final PolicyStatusService policyStatusService;
+
+ private final PdpStatusMessageHandler pdpStatusMessageHandler;
/**
* Constructs the object.
*
- * @param params configuration parameters
+ * @param pdpGroupService the pdpGroupService
+ * @param policyStatusService the policyStatusService
+ * @param pdpStatusMessageHandler the pdpStatusMessageHandler
+ * @param policyUndeployer the policyUndeployer
+ * @param policyNotifier the policyNotifier
+ */
+ public PdpModifyRequestMap(PdpGroupService pdpGroupService, PolicyStatusService policyStatusService,
+ PdpStatusMessageHandler pdpStatusMessageHandler, PolicyUndeployer policyUndeployer,
+ PolicyNotifier policyNotifier) {
+ this.pdpGroupService = pdpGroupService;
+ this.policyStatusService = policyStatusService;
+ this.pdpStatusMessageHandler = pdpStatusMessageHandler;
+ this.policyUndeployer = policyUndeployer;
+ this.policyNotifier = policyNotifier;
+ }
+
+ /**
+ * Initializes the requestMap.
*
- * @throws IllegalArgumentException if a required parameter is not set
+ * @param params the parameters.
*/
- public PdpModifyRequestMap(PdpModifyRequestMapParams params) {
+ public void initialize(PdpModifyRequestMapParams params) {
params.validate();
this.params = params;
this.modifyLock = params.getModifyLock();
- this.daoFactory = params.getDaoFactory();
- this.policyNotifier = params.getPolicyNotifier();
}
/**
@@ -267,13 +281,13 @@ public class PdpModifyRequestMap {
synchronized (modifyLock) {
logger.info("check for PDP records older than {}ms", params.getMaxPdpAgeMs());
- try (PolicyModelsProvider dao = daoFactory.create()) {
+ try {
PdpGroupFilter filter = PdpGroupFilter.builder().groupState(PdpState.ACTIVE).build();
- List<PdpGroup> groups = dao.getFilteredPdpGroups(filter);
+ List<PdpGroup> groups = pdpGroupService.getFilteredPdpGroups(filter);
List<PdpGroup> updates = new ArrayList<>(1);
- var status = new DeploymentStatus(dao);
+ var status = new DeploymentStatus(policyStatusService);
Instant minAge = Instant.now().minusMillis(params.getMaxPdpAgeMs());
@@ -287,7 +301,7 @@ public class PdpModifyRequestMap {
}
if (!updates.isEmpty()) {
- dao.updatePdpGroups(updates);
+ pdpGroupService.updatePdpGroups(updates);
var notification = new PolicyNotification();
status.flush(notification);
@@ -295,7 +309,7 @@ public class PdpModifyRequestMap {
policyNotifier.publish(notification);
}
- } catch (PfModelException | RuntimeException e) {
+ } catch (RuntimeException e) {
logger.warn("failed to remove expired PDPs", e);
}
}
@@ -353,14 +367,6 @@ public class PdpModifyRequestMap {
}
/**
- * Makes a handler for PDP responses.
- * @return a response handler
- */
- protected PdpStatusMessageHandler makePdpResponseHandler() {
- return new PdpStatusMessageHandler(params.getParams(), params.isSavePdpStatistics());
- }
-
- /**
* Listener for singleton request events.
*/
private class SingletonListener implements RequestListener {
@@ -419,8 +425,7 @@ public class PdpModifyRequestMap {
* Update PDP time stamps. Also send pdp-update and pdp-state-change, as
* necessary, if the response does not reflect what's in the DB.
*/
- var handler = makePdpResponseHandler();
- handler.handlePdpStatus(response);
+ pdpStatusMessageHandler.handlePdpStatus(response);
}
/**
diff --git a/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java b/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java
index fa90266d..070261db 100644
--- a/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java
+++ b/main/src/main/java/org/onap/policy/pap/main/comm/PdpStatusMessageHandler.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -43,13 +43,16 @@ import org.onap.policy.models.pdp.concepts.PdpStatistics;
import org.onap.policy.models.pdp.concepts.PdpStatus;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.PolicyPapException;
+import org.onap.policy.pap.main.parameters.PapParameterGroup;
import org.onap.policy.pap.main.parameters.PdpParameters;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.onap.policy.pap.main.service.PdpStatisticsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
/**
@@ -57,6 +60,8 @@ import org.slf4j.LoggerFactory;
*
* @author Ram Krishna Verma (ram.krishna.verma@est.tech)
*/
+
+@Component
public class PdpStatusMessageHandler extends PdpMessageGenerator {
private static final Logger LOGGER = LoggerFactory.getLogger(PdpStatusMessageHandler.class);
@@ -64,6 +69,10 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
private final boolean savePdpStatistics;
+ private final PdpGroupService pdpGroupService;
+
+ private final PdpStatisticsService pdpStatisticsService;
+
/**
* List to store policies present in db.
*/
@@ -82,13 +91,17 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
/**
* Constructs the object.
*
- * @param params PDP parameters
+ * @param parameterGroup the parameterGroup
+ * @param pdpGroupService the pdpGroupService
+ * @param pdpStatisticsService the pdpStatisticsService
*/
- public PdpStatusMessageHandler(PdpParameters params, boolean savePdpStatistics) {
+ public PdpStatusMessageHandler(PapParameterGroup parameterGroup, PdpGroupService pdpGroupService,
+ PdpStatisticsService pdpStatisticsService) {
super(true);
- super.initialize();
- this.params = params;
- this.savePdpStatistics = savePdpStatistics;
+ this.params = parameterGroup.getPdpParameters();
+ this.savePdpStatistics = parameterGroup.isSavePdpStatisticsInDb();
+ this.pdpGroupService = pdpGroupService;
+ this.pdpStatisticsService = pdpStatisticsService;
}
/**
@@ -109,11 +122,11 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
}
synchronized (updateLock) {
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
+ try {
if (message.getPdpSubgroup() == null) {
- handlePdpRegistration(message, databaseProvider);
+ handlePdpRegistration(message);
} else {
- handlePdpHeartbeat(message, databaseProvider);
+ handlePdpHeartbeat(message);
}
} catch (final PolicyPapException exp) {
LOGGER.error("Operation Failed", exp);
@@ -159,36 +172,34 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
return false;
}
- private void handlePdpRegistration(final PdpStatus message, final PolicyModelsProvider databaseProvider)
- throws PfModelException, PolicyPapException {
- if (!findAndUpdatePdpGroup(message, databaseProvider)) {
+ private void handlePdpRegistration(final PdpStatus message) throws PfModelException, PolicyPapException {
+ if (!findAndUpdatePdpGroup(message)) {
final var errorMessage = "Failed to register PDP. No matching PdpGroup/SubGroup Found - ";
LOGGER.debug("{}{}", errorMessage, message);
throw new PolicyPapException(errorMessage + message);
}
}
- private boolean findAndUpdatePdpGroup(final PdpStatus message, final PolicyModelsProvider databaseProvider)
+ private boolean findAndUpdatePdpGroup(final PdpStatus message)
throws PfModelException {
var pdpGroupFound = false;
final PdpGroupFilter filter =
PdpGroupFilter.builder().name(message.getPdpGroup()).groupState(PdpState.ACTIVE).build();
- final List<PdpGroup> pdpGroups = databaseProvider.getFilteredPdpGroups(filter);
+ final List<PdpGroup> pdpGroups = pdpGroupService.getFilteredPdpGroups(filter);
if (!pdpGroups.isEmpty()) {
- pdpGroupFound = registerPdp(message, databaseProvider, pdpGroups.get(0));
+ pdpGroupFound = registerPdp(message, pdpGroups.get(0));
}
return pdpGroupFound;
}
- private boolean registerPdp(final PdpStatus message, final PolicyModelsProvider databaseProvider,
- final PdpGroup finalizedPdpGroup) throws PfModelException {
+ private boolean registerPdp(final PdpStatus message, final PdpGroup finalizedPdpGroup) throws PfModelException {
Optional<PdpSubGroup> subGroup;
var pdpGroupFound = false;
subGroup = findPdpSubGroup(message, finalizedPdpGroup);
if (subGroup.isPresent()) {
- policies = getToscaPolicies(subGroup.get(), databaseProvider);
+ policies = getToscaPolicies(subGroup.get());
policiesToBeDeployed = policies.stream().collect(Collectors
.toMap(ToscaPolicy::getIdentifier, policy -> policy));
policiesToBeUndeployed = null;
@@ -196,18 +207,17 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
LOGGER.debug("Found pdpGroup - {}, going for registration of PDP - {}", finalizedPdpGroup, message);
Optional<Pdp> pdp = findPdpInstance(message, subGroup.get());
if (pdp.isPresent()) {
- updatePdpHealthStatus(message, subGroup.get(), pdp.get(), finalizedPdpGroup, databaseProvider);
+ updatePdpHealthStatus(message, subGroup.get(), pdp.get(), finalizedPdpGroup);
} else {
- updatePdpSubGroup(finalizedPdpGroup, subGroup.get(), message, databaseProvider);
+ updatePdpSubGroup(finalizedPdpGroup, subGroup.get(), message);
}
- sendPdpMessage(finalizedPdpGroup.getName(), subGroup.get(), message.getName(), null, databaseProvider);
+ sendPdpMessage(finalizedPdpGroup.getName(), subGroup.get(), message.getName(), null);
pdpGroupFound = true;
}
return pdpGroupFound;
}
- private void updatePdpSubGroup(final PdpGroup pdpGroup, final PdpSubGroup pdpSubGroup, final PdpStatus message,
- final PolicyModelsProvider databaseProvider) throws PfModelException {
+ private void updatePdpSubGroup(final PdpGroup pdpGroup, final PdpSubGroup pdpSubGroup, final PdpStatus message) {
final var pdpInstance = new Pdp();
pdpInstance.setInstanceId(message.getName());
@@ -219,27 +229,26 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
pdpSubGroup.setCurrentInstanceCount(pdpSubGroup.getCurrentInstanceCount() + 1);
- databaseProvider.updatePdpSubGroup(pdpGroup.getName(), pdpSubGroup);
+ pdpGroupService.updatePdpSubGroup(pdpGroup.getName(), pdpSubGroup);
LOGGER.debug("Updated PdpSubGroup in DB - {} belonging to PdpGroup - {}", pdpSubGroup, pdpGroup.getName());
}
- private void handlePdpHeartbeat(final PdpStatus message, final PolicyModelsProvider databaseProvider)
- throws PfModelException {
+ private void handlePdpHeartbeat(final PdpStatus message) throws PfModelException {
final PdpGroupFilter filter =
PdpGroupFilter.builder().name(message.getPdpGroup()).groupState(PdpState.ACTIVE).build();
- final List<PdpGroup> pdpGroups = databaseProvider.getFilteredPdpGroups(filter);
+ final List<PdpGroup> pdpGroups = pdpGroupService.getFilteredPdpGroups(filter);
if (!pdpGroups.isEmpty()) {
var pdpGroup = pdpGroups.get(0);
Optional<PdpSubGroup> pdpSubgroup = findPdpSubGroup(message, pdpGroup);
if (pdpSubgroup.isPresent()) {
Optional<Pdp> pdpInstance = findPdpInstance(message, pdpSubgroup.get());
if (pdpInstance.isPresent()) {
- processPdpDetails(message, pdpSubgroup.get(), pdpInstance.get(), pdpGroup, databaseProvider);
+ processPdpDetails(message, pdpSubgroup.get(), pdpInstance.get(), pdpGroup);
} else {
LOGGER.debug("PdpInstance not Found in DB. Sending Pdp for registration - {}", message);
- registerPdp(message, databaseProvider, pdpGroup);
+ registerPdp(message, pdpGroup);
}
}
}
@@ -268,10 +277,9 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
}
private void processPdpDetails(final PdpStatus message, final PdpSubGroup pdpSubGroup, final Pdp pdpInstance,
- final PdpGroup pdpGroup, final PolicyModelsProvider databaseProvider)
- throws PfModelException {
+ final PdpGroup pdpGroup) throws PfModelException {
// all policies
- policies = getToscaPolicies(pdpSubGroup, databaseProvider);
+ policies = getToscaPolicies(pdpSubGroup);
Map<ToscaConceptIdentifier, ToscaPolicy> policyMap =
policies.stream().collect(Collectors.toMap(ToscaPolicy::getIdentifier, policy -> policy));
@@ -285,13 +293,13 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
policiesToBeDeployed.keySet().removeAll(message.getPolicies());
if (PdpState.TERMINATED.equals(message.getState())) {
- processPdpTermination(pdpSubGroup, pdpInstance, pdpGroup, databaseProvider);
+ processPdpTermination(pdpSubGroup, pdpInstance, pdpGroup);
} else if (validatePdpDetails(message, pdpGroup, pdpSubGroup, pdpInstance)) {
LOGGER.debug("PdpInstance details are correct. Saving current state in DB - {}", pdpInstance);
- updatePdpHealthStatus(message, pdpSubGroup, pdpInstance, pdpGroup, databaseProvider);
+ updatePdpHealthStatus(message, pdpSubGroup, pdpInstance, pdpGroup);
if (savePdpStatistics) {
- processPdpStatistics(message, pdpSubGroup, pdpInstance, pdpGroup, databaseProvider);
+ processPdpStatistics(message, pdpSubGroup, pdpInstance, pdpGroup);
} else {
LOGGER.debug("Not processing PdpStatistics - {}", message.getStatistics());
}
@@ -299,28 +307,26 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
LOGGER.debug("PdpInstance details are not correct. Sending PdpUpdate message - {}", pdpInstance);
LOGGER.debug("Policy list in DB - {}. Policy list in heartbeat - {}", pdpSubGroup.getPolicies(),
message.getPolicies());
- updatePdpHealthStatus(message, pdpSubGroup, pdpInstance, pdpGroup, databaseProvider);
- sendPdpMessage(pdpGroup.getName(), pdpSubGroup, pdpInstance.getInstanceId(), pdpInstance.getPdpState(),
- databaseProvider);
+ updatePdpHealthStatus(message, pdpSubGroup, pdpInstance, pdpGroup);
+ sendPdpMessage(pdpGroup.getName(), pdpSubGroup, pdpInstance.getInstanceId(), pdpInstance.getPdpState());
}
}
private void processPdpStatistics(final PdpStatus message, final PdpSubGroup pdpSubGroup, final Pdp pdpInstance,
- final PdpGroup pdpGroup, final PolicyModelsProvider databaseProvider) throws PfModelException {
+ final PdpGroup pdpGroup) {
if (validatePdpStatisticsDetails(message, pdpInstance, pdpGroup, pdpSubGroup)) {
LOGGER.debug("PdpStatistics details are correct. Saving current statistics in DB - {}",
message.getStatistics());
- createPdpStatistics(message.getStatistics(), databaseProvider);
+ createPdpStatistics(message.getStatistics());
} else {
LOGGER.debug("PdpStatistics details are not correct - {}", message.getStatistics());
}
}
- private void processPdpTermination(final PdpSubGroup pdpSubGroup, final Pdp pdpInstance, final PdpGroup pdpGroup,
- final PolicyModelsProvider databaseProvider) throws PfModelException {
+ private void processPdpTermination(final PdpSubGroup pdpSubGroup, final Pdp pdpInstance, final PdpGroup pdpGroup) {
pdpSubGroup.getPdpInstances().remove(pdpInstance);
pdpSubGroup.setCurrentInstanceCount(pdpSubGroup.getCurrentInstanceCount() - 1);
- databaseProvider.updatePdpSubGroup(pdpGroup.getName(), pdpSubGroup);
+ pdpGroupService.updatePdpSubGroup(pdpGroup.getName(), pdpSubGroup);
LOGGER.debug("Deleted PdpInstance - {} belonging to PdpSubGroup - {} and PdpGroup - {}", pdpInstance,
pdpSubGroup, pdpGroup);
@@ -363,24 +369,22 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
}
private void updatePdpHealthStatus(final PdpStatus message, final PdpSubGroup pdpSubgroup, final Pdp pdpInstance,
- final PdpGroup pdpGroup, final PolicyModelsProvider databaseProvider) throws PfModelException {
+ final PdpGroup pdpGroup) {
pdpInstance.setHealthy(message.getHealthy());
pdpInstance.setMessage(message.getDescription());
pdpInstance.setLastUpdate(Instant.now());
- databaseProvider.updatePdp(pdpGroup.getName(), pdpSubgroup.getPdpType(), pdpInstance);
+ pdpGroupService.updatePdp(pdpGroup.getName(), pdpSubgroup.getPdpType(), pdpInstance);
LOGGER.debug("Updated Pdp in DB - {}", pdpInstance);
}
- private void createPdpStatistics(final PdpStatistics pdpStatistics, final PolicyModelsProvider databaseProvider)
- throws PfModelException {
- databaseProvider.createPdpStatistics(Arrays.asList(pdpStatistics));
+ private void createPdpStatistics(final PdpStatistics pdpStatistics) {
+ pdpStatisticsService.createPdpStatistics(Arrays.asList(pdpStatistics));
LOGGER.debug("Created PdpStatistics in DB - {}", pdpStatistics);
}
private void sendPdpMessage(final String pdpGroupName, final PdpSubGroup subGroup, final String pdpInstanceId,
- final PdpState pdpState, final PolicyModelsProvider databaseProvider)
- throws PfModelException {
+ final PdpState pdpState) {
final List<ToscaPolicy> polsToBeDeployed = new LinkedList<>(policiesToBeDeployed.values());
final var pdpUpdatemessage =
createPdpUpdateMessage(pdpGroupName, subGroup, pdpInstanceId,
@@ -388,7 +392,7 @@ public class PdpStatusMessageHandler extends PdpMessageGenerator {
final var pdpStateChangeMessage =
createPdpStateChangeMessage(pdpGroupName, subGroup, pdpInstanceId, pdpState);
updateDeploymentStatus(pdpGroupName, subGroup.getPdpType(), pdpInstanceId, pdpStateChangeMessage.getState(),
- databaseProvider, pdpUpdatemessage.getPoliciesToBeDeployed());
+ pdpUpdatemessage.getPoliciesToBeDeployed());
requestMap.addRequest(pdpUpdatemessage, pdpStateChangeMessage);
LOGGER.debug("Sent PdpUpdate message - {}", pdpUpdatemessage);
diff --git a/main/src/main/java/org/onap/policy/pap/main/notification/DeploymentStatus.java b/main/src/main/java/org/onap/policy/pap/main/notification/DeploymentStatus.java
index 087383f4..20e59339 100644
--- a/main/src/main/java/org/onap/policy/pap/main/notification/DeploymentStatus.java
+++ b/main/src/main/java/org/onap/policy/pap/main/notification/DeploymentStatus.java
@@ -3,6 +3,7 @@
* ONAP
* ================================================================================
* Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,13 +33,12 @@ import java.util.function.BiPredicate;
import java.util.stream.Collectors;
import lombok.AccessLevel;
import lombok.Getter;
-import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pap.concepts.PolicyNotification;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus.State;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.pap.main.notification.StatusAction.Action;
+import org.onap.policy.pap.main.service.PolicyStatusService;
/**
* Collection of Policy Deployment Status records. The sequence of method invocations
@@ -70,16 +70,16 @@ public class DeploymentStatus {
*/
private DeploymentTracker tracker = new DeploymentTracker();
- private PolicyModelsProvider provider;
+ private PolicyStatusService policyStatusService;
/**
* Constructs the object.
*
- * @param provider the provider to use to access the DB
+ * @param policyStatusService the policyStatusService
*/
- public DeploymentStatus(PolicyModelsProvider provider) {
- this.provider = provider;
+ public DeploymentStatus(PolicyStatusService policyStatusService) {
+ this.policyStatusService = policyStatusService;
}
/**
@@ -100,16 +100,15 @@ public class DeploymentStatus {
* Loads policy deployment status associated with the given PDP group.
*
* @param pdpGroup group whose records are to be loaded
- * @throws PfModelException if an error occurs
*/
- public void loadByGroup(String pdpGroup) throws PfModelException {
+ public void loadByGroup(String pdpGroup) {
if (pdpGroupLoaded.contains(pdpGroup)) {
return;
}
pdpGroupLoaded.add(pdpGroup);
- for (PdpPolicyStatus status : provider.getGroupPolicyStatus(pdpGroup)) {
+ for (PdpPolicyStatus status : policyStatusService.getGroupPolicyStatus(pdpGroup)) {
var status2 = new StatusAction(Action.UNCHANGED, status);
recordMap.put(new StatusKey(status), status2);
tracker.add(status2);
@@ -153,7 +152,7 @@ public class DeploymentStatus {
}
}
- provider.cudPolicyStatus(created, updated, deleted);
+ policyStatusService.cudPolicyStatus(created, updated, deleted);
/*
* update the records to indicate everything is now unchanged (i.e., matches what
diff --git a/main/src/main/java/org/onap/policy/pap/main/notification/PolicyNotifier.java b/main/src/main/java/org/onap/policy/pap/main/notification/PolicyNotifier.java
index 824d1dbd..14eb263a 100644
--- a/main/src/main/java/org/onap/policy/pap/main/notification/PolicyNotifier.java
+++ b/main/src/main/java/org/onap/policy/pap/main/notification/PolicyNotifier.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020-2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,30 +23,32 @@
package org.onap.policy.pap.main.notification;
import java.util.Set;
-import lombok.AllArgsConstructor;
-import org.onap.policy.models.base.PfModelException;
+import lombok.RequiredArgsConstructor;
+import lombok.Setter;
import org.onap.policy.models.pap.concepts.PolicyNotification;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.comm.Publisher;
import org.onap.policy.pap.main.comm.QueueToken;
+import org.onap.policy.pap.main.service.PolicyStatusService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
/**
* Notifier for completion of policy updates.
*/
-@AllArgsConstructor
+@RequiredArgsConstructor
+@Component
public class PolicyNotifier {
private static final Logger logger = LoggerFactory.getLogger(PolicyNotifier.class);
+ private final PolicyStatusService policyStatusService;
+
/**
* Notification publisher.
*/
- private final Publisher<PolicyNotification> publisher;
-
- private final PolicyModelsProviderFactoryWrapper daoFactory;
+ @Setter
+ private Publisher<PolicyNotification> publisher;
/**
* Processes a response from a PDP.
@@ -59,8 +62,8 @@ public class PolicyNotifier {
public synchronized void processResponse(String pdp, String pdpGroup, Set<ToscaConceptIdentifier> expectedPolicies,
Set<ToscaConceptIdentifier> actualPolicies) {
- try (PolicyModelsProvider dao = daoFactory.create()) {
- DeploymentStatus status = makeDeploymentTracker(dao);
+ try {
+ DeploymentStatus status = makeDeploymentTracker();
status.loadByGroup(pdpGroup);
status.completeDeploy(pdp, expectedPolicies, actualPolicies);
@@ -69,7 +72,7 @@ public class PolicyNotifier {
publish(notification);
- } catch (PfModelException | RuntimeException e) {
+ } catch (RuntimeException e) {
logger.warn("cannot update deployment status", e);
}
}
@@ -88,7 +91,7 @@ public class PolicyNotifier {
// the following methods may be overridden by junit tests
- protected DeploymentStatus makeDeploymentTracker(PolicyModelsProvider dao) {
- return new DeploymentStatus(dao);
+ protected DeploymentStatus makeDeploymentTracker() {
+ return new DeploymentStatus(policyStatusService);
}
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/parameters/PapParameterGroup.java b/main/src/main/java/org/onap/policy/pap/main/parameters/PapParameterGroup.java
index 4f08069f..6165d422 100644
--- a/main/src/main/java/org/onap/policy/pap/main/parameters/PapParameterGroup.java
+++ b/main/src/main/java/org/onap/policy/pap/main/parameters/PapParameterGroup.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,7 +32,6 @@ import org.onap.policy.common.parameters.annotations.NotBlank;
import org.onap.policy.common.parameters.annotations.NotNull;
import org.onap.policy.common.parameters.annotations.Valid;
import org.onap.policy.common.parameters.validation.ParameterGroupConstraint;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
@@ -51,9 +50,6 @@ public class PapParameterGroup extends ParameterGroupImpl {
@Valid
@ParameterGroupConstraint
private PdpParameters pdpParameters;
- @Valid
- @ParameterGroupConstraint
- private PolicyModelsProviderParameters databaseProviderParameters;
private boolean savePdpStatisticsInDb;
@Valid
@ParameterGroupConstraint
diff --git a/main/src/main/java/org/onap/policy/pap/main/parameters/PdpModifyRequestMapParams.java b/main/src/main/java/org/onap/policy/pap/main/parameters/PdpModifyRequestMapParams.java
index 4cf5ace8..bca00e87 100644
--- a/main/src/main/java/org/onap/policy/pap/main/parameters/PdpModifyRequestMapParams.java
+++ b/main/src/main/java/org/onap/policy/pap/main/parameters/PdpModifyRequestMapParams.java
@@ -3,7 +3,7 @@
* ONAP PAP
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,10 +26,8 @@ import lombok.Getter;
import org.onap.policy.common.endpoints.listeners.RequestIdDispatcher;
import org.onap.policy.models.pdp.concepts.PdpMessage;
import org.onap.policy.models.pdp.concepts.PdpStatus;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.comm.Publisher;
import org.onap.policy.pap.main.comm.TimerManager;
-import org.onap.policy.pap.main.notification.PolicyNotifier;
/**
@@ -45,8 +43,6 @@ public class PdpModifyRequestMapParams {
private PdpParameters params;
private TimerManager updateTimers;
private TimerManager stateChangeTimers;
- private PolicyModelsProviderFactoryWrapper daoFactory;
- private PolicyNotifier policyNotifier;
private boolean savePdpStatistics;
/**
@@ -80,13 +76,5 @@ public class PdpModifyRequestMapParams {
if (stateChangeTimers == null) {
throw new IllegalArgumentException("missing stateChangeTimers");
}
-
- if (daoFactory == null) {
- throw new IllegalArgumentException("missing DAO factory");
- }
-
- if (policyNotifier == null) {
- throw new IllegalArgumentException("missing policy notifier");
- }
}
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupHealthCheckProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupHealthCheckProvider.java
index 74a89046..6043909e 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupHealthCheckProvider.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupHealthCheckProvider.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,16 +24,14 @@ package org.onap.policy.pap.main.rest;
import java.util.ArrayList;
import java.util.List;
+import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.tuple.Pair;
-import org.onap.policy.common.utils.services.Registry;
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.PdpSubGroup;
import org.onap.policy.models.pdp.concepts.Pdps;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
+import org.onap.policy.pap.main.service.PdpGroupService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
@@ -45,10 +43,13 @@ import org.springframework.stereotype.Service;
* @author Ram Krishna Verma (ram.krishna.verma@est.tech)
*/
@Service
+@RequiredArgsConstructor
public class PdpGroupHealthCheckProvider {
private static final Logger LOGGER = LoggerFactory.getLogger(PdpGroupHealthCheckProvider.class);
+ private final PdpGroupService pdpGroupService;
+
/**
* Returns health status of all PDPs.
*
@@ -58,18 +59,14 @@ public class PdpGroupHealthCheckProvider {
public Pair<HttpStatus, Pdps> fetchPdpGroupHealthStatus() throws PfModelException {
final var pdps = new Pdps();
- final PolicyModelsProviderFactoryWrapper modelProviderWrapper =
- Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- final List<PdpGroup> groups = databaseProvider.getPdpGroups(null);
- final List<Pdp> pdpList = new ArrayList<>();
- for (final PdpGroup group : groups) {
- for (final PdpSubGroup subGroup : group.getPdpSubgroups()) {
- pdpList.addAll(subGroup.getPdpInstances());
- }
+ final List<PdpGroup> groups = pdpGroupService.getPdpGroups();
+ final List<Pdp> pdpList = new ArrayList<>();
+ for (final PdpGroup group : groups) {
+ for (final PdpSubGroup subGroup : group.getPdpSubgroups()) {
+ pdpList.addAll(subGroup.getPdpInstances());
}
- pdps.setPdpList(pdpList);
}
+ pdps.setPdpList(pdpList);
LOGGER.debug("PdpGroup HealthCheck Response - {}", pdps);
return Pair.of(HttpStatus.OK, pdps);
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryControllerV1.java
index 03a853ba..18a39333 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryControllerV1.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryControllerV1.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019,2021 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,9 +32,11 @@ import io.swagger.annotations.ExtensionProperty;
import io.swagger.annotations.ResponseHeader;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.tuple.Pair;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
@@ -52,7 +54,9 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
public class PdpGroupQueryControllerV1 extends PapRestControllerV1 {
- private final PdpGroupQueryProvider provider;
+ private static final Logger LOGGER = LoggerFactory.getLogger(PdpGroupQueryControllerV1.class);
+
+ private final PdpGroupService pdpGroupService;
/**
* Queries details of all PDP groups.
@@ -94,8 +98,11 @@ public class PdpGroupQueryControllerV1 extends PapRestControllerV1 {
required = false,
value = REQUEST_ID_NAME) final UUID requestId) throws PfModelException {
- final Pair<HttpStatus, PdpGroups> pair = provider.fetchPdpGroupDetails();
- return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(pair.getLeft())), requestId)
- .body(pair.getRight());
+ final var pdpGroups = new PdpGroups();
+ pdpGroups.setGroups(pdpGroupService.getPdpGroups());
+ LOGGER.debug("PdpGroup Query Response - {}", pdpGroups);
+
+ return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.OK)), requestId)
+ .body(pdpGroups);
}
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryProvider.java
deleted file mode 100644
index f1a22f50..00000000
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupQueryProvider.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
- * ================================================================================
- * 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.rest;
-
-import org.apache.commons.lang3.tuple.Pair;
-import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pdp.concepts.PdpGroups;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Service;
-
-/**
- * Provider for PAP component to query details of all PDP groups.
- *
- * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
- */
-@Service
-public class PdpGroupQueryProvider {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(PdpGroupQueryProvider.class);
-
- /**
- * Queries details of all PDP groups.
- *
- * @return a pair containing the status and the response
- * @throws PfModelException in case of errors
- */
- public Pair<HttpStatus, PdpGroups> fetchPdpGroupDetails() throws PfModelException {
-
- final var pdpGroups = new PdpGroups();
- final PolicyModelsProviderFactoryWrapper modelProviderWrapper =
- Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- pdpGroups.setGroups(databaseProvider.getPdpGroups(null));
- }
- LOGGER.debug("PdpGroup Query Response - {}", pdpGroups);
- return Pair.of(HttpStatus.OK, pdpGroups);
- }
-}
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java
index 5aaaf4ab..b1f7f665 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PdpGroupStateChangeProvider.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,11 +31,12 @@ import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
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;
@@ -49,6 +50,9 @@ public class PdpGroupStateChangeProvider extends PdpMessageGenerator {
private static final Logger LOGGER = LoggerFactory.getLogger(PdpGroupStateChangeProvider.class);
+ @Autowired
+ private PdpGroupService pdpGroupService;
+
/**
* Constructs the object.
*/
@@ -83,43 +87,37 @@ public class PdpGroupStateChangeProvider extends PdpMessageGenerator {
}
private void handleActiveState(final String groupName) throws PfModelException {
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- final List<PdpGroup> pdpGroups = databaseProvider.getPdpGroups(groupName);
- if (!pdpGroups.isEmpty() && !PdpState.ACTIVE.equals(pdpGroups.get(0).getPdpGroupState())) {
- updatePdpGroupAndPdp(databaseProvider, pdpGroups, PdpState.ACTIVE);
- sendPdpMessage(pdpGroups.get(0), PdpState.ACTIVE, databaseProvider);
- }
+ final List<PdpGroup> pdpGroups = pdpGroupService.getPdpGroups(groupName);
+ if (!pdpGroups.isEmpty() && !PdpState.ACTIVE.equals(pdpGroups.get(0).getPdpGroupState())) {
+ updatePdpGroupAndPdp(pdpGroups, PdpState.ACTIVE);
+ sendPdpMessage(pdpGroups.get(0), PdpState.ACTIVE);
}
}
private void handlePassiveState(final String groupName) throws PfModelException {
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- final List<PdpGroup> pdpGroups = databaseProvider.getPdpGroups(groupName);
- if (!pdpGroups.isEmpty() && !PdpState.PASSIVE.equals(pdpGroups.get(0).getPdpGroupState())) {
- updatePdpGroupAndPdp(databaseProvider, pdpGroups, PdpState.PASSIVE);
- sendPdpMessage(pdpGroups.get(0), PdpState.PASSIVE, databaseProvider);
- }
+ final List<PdpGroup> pdpGroups = pdpGroupService.getPdpGroups(groupName);
+ if (!pdpGroups.isEmpty() && !PdpState.PASSIVE.equals(pdpGroups.get(0).getPdpGroupState())) {
+ updatePdpGroupAndPdp(pdpGroups, PdpState.PASSIVE);
+ sendPdpMessage(pdpGroups.get(0), PdpState.PASSIVE);
}
}
- private void updatePdpGroupAndPdp(final PolicyModelsProvider databaseProvider, final List<PdpGroup> pdpGroups,
- final PdpState pdpState) throws PfModelException {
+ private void updatePdpGroupAndPdp(final List<PdpGroup> pdpGroups, final PdpState pdpState) {
pdpGroups.get(0).setPdpGroupState(pdpState);
for (final PdpSubGroup subGroup : pdpGroups.get(0).getPdpSubgroups()) {
for (final Pdp pdp : subGroup.getPdpInstances()) {
pdp.setPdpState(pdpState);
}
}
- databaseProvider.updatePdpGroups(pdpGroups);
+ pdpGroupService.updatePdpGroups(pdpGroups);
LOGGER.debug("Updated PdpGroup and Pdp in DB - {} ", pdpGroups);
}
- private void sendPdpMessage(final PdpGroup pdpGroup, final PdpState pdpState,
- final PolicyModelsProvider databaseProvider) throws PfModelException {
+ private void sendPdpMessage(final PdpGroup pdpGroup, final PdpState pdpState) throws PfModelException {
String pdpGroupName = pdpGroup.getName();
for (final PdpSubGroup subGroup : pdpGroup.getPdpSubgroups()) {
- List<ToscaPolicy> policies = getToscaPolicies(subGroup, databaseProvider);
+ List<ToscaPolicy> policies = getToscaPolicies(subGroup);
for (final Pdp pdp : subGroup.getPdpInstances()) {
String pdpInstanceId = pdp.getInstanceId();
final var pdpUpdatemessage =
@@ -128,7 +126,7 @@ public class PdpGroupStateChangeProvider extends PdpMessageGenerator {
final var pdpStateChangeMessage =
createPdpStateChangeMessage(pdpGroupName, subGroup, pdpInstanceId, pdpState);
updateDeploymentStatus(pdpGroupName, subGroup.getPdpType(), pdpInstanceId,
- pdpStateChangeMessage.getState(), databaseProvider, pdpUpdatemessage.getPoliciesToBeDeployed());
+ pdpStateChangeMessage.getState(), pdpUpdatemessage.getPoliciesToBeDeployed());
requestMap.addRequest(pdpUpdatemessage, pdpStateChangeMessage);
LOGGER.debug("Sent PdpUpdate message - {}", pdpUpdatemessage);
LOGGER.debug("Sent PdpStateChange message - {}", pdpStateChangeMessage);
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditControllerV1.java
index e195a79b..9eeef2be 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditControllerV1.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditControllerV1.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,7 +32,7 @@ import java.util.UUID;
import lombok.RequiredArgsConstructor;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
+import org.onap.policy.pap.main.service.PolicyAuditService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
@@ -53,7 +53,7 @@ public class PolicyAuditControllerV1 extends PapRestControllerV1 {
public static final String NO_AUDIT_RECORD_FOUND = "No records found matching the input parameters";
- private final PolicyAuditProvider provider;
+ private final PolicyAuditService policyAuditService;
/**
* Queries audit information of all policies.
@@ -111,9 +111,8 @@ public class PolicyAuditControllerV1 extends PapRestControllerV1 {
value = "endTime") final Long endTime)
throws PfModelException {
- return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
- .body(provider.getAuditRecords(AuditFilter.builder().recordNum(recordCount)
- .fromDate(convertEpochtoInstant(startTime)).toDate(convertEpochtoInstant(endTime)).build()));
+ return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(policyAuditService
+ .getAuditRecords(recordCount, convertEpochtoInstant(startTime), convertEpochtoInstant(endTime)));
}
/**
@@ -173,10 +172,8 @@ public class PolicyAuditControllerV1 extends PapRestControllerV1 {
value = "endTime") final Long endTime,
@ApiParam(value = "PDP Group Name") @PathVariable("pdpGroupName") String pdpGroupName) throws PfModelException {
- return makeOkOrNotFoundResponse(requestId,
- provider.getAuditRecords(
- AuditFilter.builder().recordNum(recordCount).fromDate((convertEpochtoInstant(startTime)))
- .toDate(convertEpochtoInstant(endTime)).pdpGroup(pdpGroupName).build()));
+ return makeOkOrNotFoundResponse(requestId, policyAuditService.getAuditRecords(pdpGroupName, recordCount,
+ convertEpochtoInstant(startTime), convertEpochtoInstant(endTime)));
}
/**
@@ -242,10 +239,8 @@ public class PolicyAuditControllerV1 extends PapRestControllerV1 {
@ApiParam(value = "Policy Version") @PathVariable(value = "policyVersion") String policyVersion)
throws PfModelException {
- return makeOkOrNotFoundResponse(requestId,
- provider.getAuditRecords(AuditFilter.builder().recordNum(recordCount)
- .fromDate(convertEpochtoInstant(startTime)).toDate(convertEpochtoInstant(endTime))
- .pdpGroup(pdpGroupName).name(policyName).version(policyVersion).build()));
+ return makeOkOrNotFoundResponse(requestId, policyAuditService.getAuditRecords(pdpGroupName, policyName,
+ policyVersion, recordCount, convertEpochtoInstant(startTime), convertEpochtoInstant(endTime)));
}
/**
@@ -310,10 +305,8 @@ public class PolicyAuditControllerV1 extends PapRestControllerV1 {
value = "Policy Version") @PathVariable(required = true, value = "policyVersion") String policyVersion)
throws PfModelException {
- return makeOkOrNotFoundResponse(requestId,
- provider
- .getAuditRecords(AuditFilter.builder().recordNum(recordCount).fromDate(convertEpochtoInstant(startTime))
- .toDate(convertEpochtoInstant(endTime)).name(policyName).version(policyVersion).build()));
+ return makeOkOrNotFoundResponse(requestId, policyAuditService.getAuditRecords(policyName, policyVersion,
+ recordCount, convertEpochtoInstant(startTime), convertEpochtoInstant(endTime)));
}
private ResponseEntity<Object> makeOkOrNotFoundResponse(UUID requestId, Collection<PolicyAudit> result) {
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditManager.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditManager.java
index c200bb13..f720d0ca 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditManager.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditManager.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,8 +29,8 @@ import lombok.AccessLevel;
import lombok.Getter;
import org.onap.policy.models.pap.concepts.PolicyAudit;
import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
+import org.onap.policy.pap.main.service.PolicyAuditService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,15 +49,18 @@ public class PolicyAuditManager {
@Getter(value = AccessLevel.PROTECTED)
private List<PolicyAudit> auditRecords = new ArrayList<>();
- private PolicyModelsProvider provider;
+ private PolicyAuditService policyAuditService;
/**
- * Default constructor.
+ * Constructs the object.
+ *
+ * @param policyAuditService the service
*/
- public PolicyAuditManager(PolicyModelsProvider provider) {
- this.provider = provider;
+ public PolicyAuditManager(PolicyAuditService policyAuditService) {
+ this.policyAuditService = policyAuditService;
}
+
/**
* Builds an audit object.
*
@@ -107,7 +111,7 @@ public class PolicyAuditManager {
if (!auditRecords.isEmpty()) {
logger.info("sending audit records to database: {}", auditRecords);
try {
- provider.createAuditRecords(auditRecords);
+ policyAuditService.createAuditRecords(auditRecords);
auditRecords.clear();
} catch (RuntimeException excpt) {
// not throwing the exception to not stop the main request.
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditProvider.java
deleted file mode 100644
index c3c77a4a..00000000
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyAuditProvider.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Bell Canada. All rights reserved.
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.pap.main.rest;
-
-import java.util.Collection;
-import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
-import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-
-/**
- * Provider for PAP component to query policy audit information.
- */
-@Service
-public class PolicyAuditProvider {
-
- /**
- * Factory for PAP DAO.
- */
- private PolicyModelsProviderFactoryWrapper daoFactory;
-
- @EventListener(ApplicationReadyEvent.class)
- public void initialize() {
- this.daoFactory = Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- }
-
- /**
- * Gets the audit record of all policies.
- *
- * @param auditFilter the filter for the query
- * @return the audit record of all policies
- * @throws PfModelException if a DB error occurs
- */
- public Collection<PolicyAudit> getAuditRecords(AuditFilter auditFilter)
- throws PfModelException {
- try (PolicyModelsProvider dao = daoFactory.create()) {
- return dao.getAuditRecords(auditFilter);
- }
- }
-}
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java
index 7a490166..d2a730eb 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyComponentsHealthCheckProvider.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2020 Nordix Foundation.
* Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2020-2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,6 +40,7 @@ import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
+import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.tuple.Pair;
import org.onap.policy.common.endpoints.http.client.HttpClient;
import org.onap.policy.common.endpoints.http.client.HttpClientConfigException;
@@ -47,20 +48,16 @@ import org.onap.policy.common.endpoints.http.client.HttpClientFactory;
import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance;
import org.onap.policy.common.endpoints.parameters.RestClientParameters;
import org.onap.policy.common.endpoints.report.HealthCheckReport;
-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.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpHealthStatus;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.parameters.PapParameterGroup;
+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.http.HttpStatus;
import org.springframework.stereotype.Service;
@@ -71,6 +68,7 @@ import org.springframework.stereotype.Service;
* @author Yehui Wang (yehui.wang@est.tech)
*/
@Service
+@RequiredArgsConstructor
public class PolicyComponentsHealthCheckProvider {
private static final Logger LOGGER = LoggerFactory.getLogger(PolicyComponentsHealthCheckProvider.class);
@@ -80,8 +78,9 @@ public class PolicyComponentsHealthCheckProvider {
private static List<HttpClient> clients = new ArrayList<>();
private ExecutorService clientHealthCheckExecutorService;
- @Autowired
- private PapParameterGroup papParameterGroup;
+ private final PapParameterGroup papParameterGroup;
+
+ private final PdpGroupService pdpGroupService;
@Value("${server.ssl.enabled:false}")
private boolean isHttps;
@@ -157,14 +156,14 @@ public class PolicyComponentsHealthCheckProvider {
// Check PDPs, read status from DB
try {
- List<PdpGroup> groups = fetchPdpGroups();
+ List<PdpGroup> groups = pdpGroupService.getPdpGroups();
Map<String, List<Pdp>> pdpListWithType = fetchPdpsHealthStatus(groups);
if (isHealthy && (!verifyNumberOfPdps(groups) || pdpListWithType.values().stream().flatMap(List::stream)
.anyMatch(pdp -> !PdpHealthStatus.HEALTHY.equals(pdp.getHealthy())))) {
isHealthy = false;
}
result.put(PapConstants.POLICY_PDPS, pdpListWithType);
- } catch (final PfModelException exp) {
+ } catch (final PfModelRuntimeException exp) {
result.put(PapConstants.POLICY_PDPS, exp.getErrorResponse());
isHealthy = false;
}
@@ -198,16 +197,6 @@ public class PolicyComponentsHealthCheckProvider {
return flag;
}
- private List<PdpGroup> fetchPdpGroups() throws PfModelException {
- List<PdpGroup> groups = new ArrayList<>();
- final PolicyModelsProviderFactoryWrapper modelProviderWrapper =
- Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- groups = databaseProvider.getPdpGroups(null);
- }
- return groups;
- }
-
private HealthCheckReport fetchPolicyComponentHealthStatus(HttpClient httpClient) {
HealthCheckReport clientReport;
try {
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusControllerV1.java
index 43227475..b0de1e7c 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusControllerV1.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusControllerV1.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -34,7 +34,6 @@ import io.swagger.annotations.ResponseHeader;
import java.util.Collection;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
-import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.pap.concepts.PolicyStatus;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
@@ -120,7 +119,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
}
return makeListOrNotFoundResponse(requestId, result);
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
logger.warn(GET_DEPLOYMENTS_FAILED, e);
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
@@ -183,7 +182,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(result);
}
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
logger.warn(GET_DEPLOYMENTS_FAILED, e);
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
@@ -244,7 +243,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
.body(result.iterator().next());
}
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
logger.warn(GET_DEPLOYMENTS_FAILED, e);
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
@@ -299,7 +298,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
.body(provider.getPolicyStatus());
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
logger.warn(GET_DEPLOYMENTS_FAILED, e);
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
@@ -365,7 +364,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
}
return makeListOrNotFoundResponse(requestId, result);
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
logger.warn(GET_DEPLOYMENTS_FAILED, e);
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
@@ -434,7 +433,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
.body(result);
}
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
logger.warn(GET_DEPLOYMENTS_FAILED, e);
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
@@ -502,7 +501,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
.body(result.iterator().next());
}
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
logger.warn(GET_DEPLOYMENTS_FAILED, e);
return addLoggingHeaders(
addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusProvider.java
index dd133a1a..631c9c03 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusProvider.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyStatusProvider.java
@@ -3,7 +3,7 @@
* ONAP
* ================================================================================
* Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -26,48 +26,30 @@ import com.google.re2j.Pattern;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
-import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelException;
+import lombok.RequiredArgsConstructor;
import org.onap.policy.models.pap.concepts.PolicyStatus;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
-import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.notification.DeploymentTracker;
-import org.springframework.boot.context.event.ApplicationReadyEvent;
-import org.springframework.context.event.EventListener;
+import org.onap.policy.pap.main.service.PolicyStatusService;
import org.springframework.stereotype.Service;
/**
* Provider for PAP component to query policy deployment status.
*/
@Service
+@RequiredArgsConstructor
public class PolicyStatusProvider {
- /**
- * Factory for PAP DAO.
- */
- private PolicyModelsProviderFactoryWrapper daoFactory;
-
- /**
- * Constructs the object. Loads all deployed policies into the internal cache.
- */
- @EventListener(ApplicationReadyEvent.class)
- public void initialize() {
- this.daoFactory = Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- }
+ private final PolicyStatusService policyStatusService;
/**
* Gets the deployment status of all policies.
*
* @return the deployment status of all policies
- * @throws PfModelException if a DB error occurs
*/
- public Collection<PolicyStatus> getStatus() throws PfModelException {
- try (PolicyModelsProvider dao = daoFactory.create()) {
- return accumulate(dao.getAllPolicyStatus());
- }
+ public Collection<PolicyStatus> getStatus() {
+ return accumulate(policyStatusService.getAllPolicyStatus());
}
/**
@@ -75,12 +57,9 @@ public class PolicyStatusProvider {
*
* @param policy policy of interest
* @return the deployment status of all policies
- * @throws PfModelException if a DB error occurs
*/
- public Collection<PolicyStatus> getStatus(ToscaConceptIdentifierOptVersion policy) throws PfModelException {
- try (PolicyModelsProvider dao = daoFactory.create()) {
- return accumulate(dao.getAllPolicyStatus(policy));
- }
+ public Collection<PolicyStatus> getStatus(ToscaConceptIdentifierOptVersion policy) {
+ return accumulate(policyStatusService.getAllPolicyStatus(policy));
}
/**
@@ -88,16 +67,12 @@ public class PolicyStatusProvider {
*
* @param patternString policy of interest
* @return the deployment status of all policies
- * @throws PfModelException if a DB error occurs
*/
- public Collection<PolicyStatus> getByRegex(String patternString) throws PfModelException {
+ public Collection<PolicyStatus> getByRegex(String patternString) {
// try to make pattern out of regex
final var pattern = Pattern.compile(patternString);
// get all the statuses
- final List<PdpPolicyStatus> policyStatuses;
- try (PolicyModelsProvider dao = daoFactory.create()) {
- policyStatuses = dao.getAllPolicyStatus();
- }
+ final List<PdpPolicyStatus> policyStatuses = policyStatusService.getAllPolicyStatus();
// filter out statuses with the wrong name
final Collection<PdpPolicyStatus> pdpPolicyStatuses = filterWithPattern(pattern, policyStatuses);
@@ -129,41 +104,30 @@ public class PolicyStatusProvider {
* Gets the status of all policies.
*
* @return the status of all policies
- * @throws PfModelException if a DB error occurs
*/
- public Collection<PdpPolicyStatus> getPolicyStatus() throws PfModelException {
- try (PolicyModelsProvider dao = daoFactory.create()) {
- return dao.getAllPolicyStatus();
- }
+ public Collection<PdpPolicyStatus> getPolicyStatus() {
+ return policyStatusService.getAllPolicyStatus();
}
/**
* Gets the status of policies in a PdpGroup.
*
* @param pdpGroupName the pdp group
- * @return the deployment status of policies
- * @throws PfModelException if a DB error occurs
*/
- public Collection<PdpPolicyStatus> getPolicyStatus(String pdpGroupName) throws PfModelException {
- try (PolicyModelsProvider dao = daoFactory.create()) {
- return dao.getGroupPolicyStatus(pdpGroupName);
- }
+ public Collection<PdpPolicyStatus> getPolicyStatus(String pdpGroupName) {
+ return policyStatusService.getGroupPolicyStatus(pdpGroupName);
}
/**
* Gets the status of a policy in a PdpGroup.
*
* @param pdpGroupName the pdp group
- * @param policy the policy
+ * @param policy the policy
* @return the deployment status of the policy
- * @throws PfModelException if a DB error occurs
*/
- public Collection<PdpPolicyStatus> getPolicyStatus(String pdpGroupName, ToscaConceptIdentifierOptVersion policy)
- throws PfModelException {
- try (PolicyModelsProvider dao = daoFactory.create()) {
- return dao.getAllPolicyStatus(policy).stream().filter(p -> p.getPdpGroup().equals(pdpGroupName))
- .collect(Collectors.toList());
- }
+ public Collection<PdpPolicyStatus> getPolicyStatus(String pdpGroupName, ToscaConceptIdentifierOptVersion policy) {
+ return policyStatusService.getAllPolicyStatus(policy).stream().filter(p -> p.getPdpGroup().equals(pdpGroupName))
+ .collect(Collectors.toList());
}
/**
@@ -172,10 +136,8 @@ public class PolicyStatusProvider {
* @param pdpGroupName the pdp group
* @param patternString regex
* @return the deployment status of policies
- * @throws PfModelException if a DB error occurs
*/
- public Collection<PdpPolicyStatus> getPolicyStatusByRegex(String pdpGroupName, String patternString)
- throws PfModelException {
+ public Collection<PdpPolicyStatus> getPolicyStatusByRegex(String pdpGroupName, String patternString) {
final var pattern = Pattern.compile(patternString);
// get all the statuses
final Collection<PdpPolicyStatus> policyStatuses = getPolicyStatus(pdpGroupName);
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyUndeployerImpl.java b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyUndeployerImpl.java
index ea55f815..004d4ada 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/PolicyUndeployerImpl.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/PolicyUndeployerImpl.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020-2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,20 +36,15 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.comm.PolicyUndeployer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
/**
* Implementation of policy undeployer.
*/
+@Component
public class PolicyUndeployerImpl extends ProviderBase implements PolicyUndeployer {
private static final Logger logger = LoggerFactory.getLogger(PolicyUndeployerImpl.class);
- /**
- * Constructs the object.
- */
- public PolicyUndeployerImpl() {
- super.initialize();
- }
-
@Override
public void undeploy(String group, String subgroup, Collection<ToscaConceptIdentifier> policies)
throws PfModelException {
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java b/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java
index ad6ff21e..c1c63c7f 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/ProviderBase.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020-2021 Nordix Foundation.
- * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020,2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,14 +32,17 @@ import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.comm.PdpModifyRequestMap;
import org.onap.policy.pap.main.notification.PolicyNotifier;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.onap.policy.pap.main.service.PolicyAuditService;
+import org.onap.policy.pap.main.service.PolicyStatusService;
+import org.onap.policy.pap.main.service.ToscaServiceTemplateService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
@@ -71,10 +74,63 @@ public abstract class ProviderBase {
*/
private PolicyNotifier notifier;
+ private ToscaServiceTemplateService toscaService;
+
+ private PdpGroupService pdpGroupService;
+
+ private PolicyStatusService policyStatusService;
+
+ private PolicyAuditService policyAuditService;
+
+ /**
+ * The setter method for injecting into Spring context.
+ *
+ * @param toscaService the toscaService to set
+ */
+ @Autowired
+ public final void setToscaService(ToscaServiceTemplateService toscaService) {
+ this.toscaService = toscaService;
+ }
+
+ /**
+ * The setter method for injecting into Spring context.
+ *
+ * @param pdpGroupService the pdpGroupService to set
+ */
+ @Autowired
+ public final void setPdpGroupService(PdpGroupService pdpGroupService) {
+ this.pdpGroupService = pdpGroupService;
+ }
+
/**
- * Factory for PAP DAO.
+ * The setter method for injecting into Spring context.
+ *
+ * @param policyStatusService the policyStatusService to set
+ */
+ @Autowired
+ public final void setPolicyStatusService(PolicyStatusService policyStatusService) {
+ this.policyStatusService = policyStatusService;
+ }
+
+ /**
+ * The setter method for injecting into Spring context.
+ *
+ * @param policyAuditService the policyAuditService to set
*/
- private PolicyModelsProviderFactoryWrapper daoFactory;
+ @Autowired
+ public final void setPolicyAuditService(PolicyAuditService policyAuditService) {
+ this.policyAuditService = policyAuditService;
+ }
+
+ /**
+ * The setter method for injecting into Spring context.
+ *
+ * @param policyNotifier the policyNotifier to set
+ */
+ @Autowired
+ public final void setPolicyNotifier(PolicyNotifier policyNotifier) {
+ this.notifier = policyNotifier;
+ }
/**
* Initializes the parameters..
@@ -83,8 +139,6 @@ public abstract class ProviderBase {
public void initialize() {
this.updateLock = Registry.get(PapConstants.REG_PDP_MODIFY_LOCK, Object.class);
this.requestMap = Registry.get(PapConstants.REG_PDP_MODIFY_MAP, PdpModifyRequestMap.class);
- this.daoFactory = Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- this.notifier = Registry.get(PapConstants.REG_POLICY_NOTIFIER, PolicyNotifier.class);
}
/**
@@ -102,15 +156,15 @@ public abstract class ProviderBase {
SessionData data;
var notif = new PolicyNotification();
- try (PolicyModelsProvider dao = daoFactory.create()) {
+ try {
- data = new SessionData(dao, user);
+ data = new SessionData(user, toscaService, pdpGroupService, policyStatusService, policyAuditService);
processor.accept(data, request);
// make all of the DB updates
data.updateDb(notif);
- } catch (PfModelException | PfModelRuntimeException e) {
+ } catch (PfModelRuntimeException e) {
throw e;
} catch (RuntimeException e) {
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java b/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java
index 32103159..2abce9b1 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/SessionData.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,7 +41,6 @@ import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
@@ -48,6 +48,10 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter.ToscaTypedEntityFilterBuilder;
import org.onap.policy.pap.main.notification.DeploymentStatus;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.onap.policy.pap.main.service.PolicyAuditService;
+import org.onap.policy.pap.main.service.PolicyStatusService;
+import org.onap.policy.pap.main.service.ToscaServiceTemplateService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -63,11 +67,6 @@ public class SessionData {
private static final Pattern VERSION_PREFIX_PAT = Pattern.compile("[^.]+(?:[.][^.]+)?");
/**
- * DB provider.
- */
- private final PolicyModelsProvider dao;
-
- /**
* Maps a group name to its group data. This accumulates the set of groups to be created and updated when the REST
* call completes.
*/
@@ -117,16 +116,25 @@ public class SessionData {
private PolicyAuditManager auditManager;
+ private ToscaServiceTemplateService toscaService;
+
+ private PdpGroupService pdpGroupService;
+
/**
* Constructs the object.
*
- * @param dao DAO provider
* @param user user triggering the request
- */
- public SessionData(PolicyModelsProvider dao, String user) {
- this.dao = dao;
- this.deployStatus = makeDeploymentStatus(dao);
- this.auditManager = makePolicyAuditManager(dao);
+ * @param policyAuditService the policyAuditService
+ * @param policyStatusService the policyStatusService
+ * @param pdpGroupService the pdpGroupService
+ * @param toscaService the toscaService
+ */
+ public SessionData(String user, ToscaServiceTemplateService toscaService, PdpGroupService pdpGroupService,
+ PolicyStatusService policyStatusService, PolicyAuditService policyAuditService) {
+ this.toscaService = toscaService;
+ this.pdpGroupService = pdpGroupService;
+ this.deployStatus = makeDeploymentStatus(policyStatusService);
+ this.auditManager = makePolicyAuditManager(policyAuditService);
this.user = user;
}
@@ -143,7 +151,7 @@ public class SessionData {
ToscaPolicyType type = typeCache.get(desiredType);
if (type == null) {
- List<ToscaPolicyType> lst = dao.getPolicyTypeList(desiredType.getName(), desiredType.getVersion());
+ List<ToscaPolicyType> lst = toscaService.getPolicyTypeList(desiredType.getName(), desiredType.getVersion());
if (lst.isEmpty()) {
return null;
}
@@ -168,10 +176,10 @@ public class SessionData {
ToscaPolicy policy = policyCache.get(desiredPolicy);
if (policy == null) {
ToscaTypedEntityFilterBuilder<ToscaPolicy> filterBuilder =
- ToscaTypedEntityFilter.<ToscaPolicy>builder().name(desiredPolicy.getName());
+ ToscaTypedEntityFilter.<ToscaPolicy>builder().name(desiredPolicy.getName());
setPolicyFilterVersion(filterBuilder, desiredPolicy.getVersion());
- List<ToscaPolicy> lst = dao.getFilteredPolicyList(filterBuilder.build());
+ List<ToscaPolicy> lst = toscaService.getFilteredPolicyList(filterBuilder.build());
if (lst.isEmpty()) {
return null;
}
@@ -336,7 +344,7 @@ public class SessionData {
GroupData data = groupCache.get(name);
if (data == null) {
- List<PdpGroup> lst = dao.getPdpGroups(name);
+ List<PdpGroup> lst = pdpGroupService.getPdpGroups(name);
if (lst.isEmpty()) {
logger.info("unknown group {}", name);
return null;
@@ -372,7 +380,7 @@ public class SessionData {
PdpGroupFilter filter = PdpGroupFilter.builder().policyTypeList(Collections.singletonList(type))
.groupState(PdpState.ACTIVE).build();
- List<PdpGroup> groups = dao.getFilteredPdpGroups(filter);
+ List<PdpGroup> groups = pdpGroupService.getFilteredPdpGroups(filter);
data = groups.stream().map(this::addGroup).collect(Collectors.toList());
type2groups.put(type, data);
@@ -423,17 +431,15 @@ public class SessionData {
* Update the DB with the changes.
*
* @param notification notification to which to add policy status
- *
- * @throws PfModelException if an error occurred
*/
- public void updateDb(PolicyNotification notification) throws PfModelException {
+ public void updateDb(PolicyNotification notification) {
// create new groups
List<GroupData> created = groupCache.values().stream().filter(GroupData::isNew).collect(Collectors.toList());
if (!created.isEmpty()) {
if (logger.isInfoEnabled()) {
created.forEach(group -> logger.info("creating DB group {}", group.getGroup().getName()));
}
- dao.createPdpGroups(created.stream().map(GroupData::getGroup).collect(Collectors.toList()));
+ pdpGroupService.createPdpGroups(created.stream().map(GroupData::getGroup).collect(Collectors.toList()));
}
// update existing groups
@@ -443,7 +449,7 @@ public class SessionData {
if (logger.isInfoEnabled()) {
updated.forEach(group -> logger.info("updating DB group {}", group.getGroup().getName()));
}
- dao.updatePdpGroups(updated.stream().map(GroupData::getGroup).collect(Collectors.toList()));
+ pdpGroupService.updatePdpGroups(updated.stream().map(GroupData::getGroup).collect(Collectors.toList()));
}
// send audits records to DB
@@ -457,11 +463,10 @@ public class SessionData {
* Deletes a group from the DB, immediately (i.e., without caching the request to be executed later).
*
* @param group the group to be deleted
- * @throws PfModelException if an error occurred
*/
- public void deleteGroupFromDb(PdpGroup group) throws PfModelException {
+ public void deleteGroupFromDb(PdpGroup group) {
logger.info("deleting DB group {}", group.getName());
- dao.deletePdpGroup(group.getName());
+ pdpGroupService.deletePdpGroup(group.getName());
}
/**
@@ -525,11 +530,11 @@ public class SessionData {
// these may be overridden by junit tests
- protected DeploymentStatus makeDeploymentStatus(PolicyModelsProvider dao) {
- return new DeploymentStatus(dao);
+ protected DeploymentStatus makeDeploymentStatus(PolicyStatusService policyStatusService) {
+ return new DeploymentStatus(policyStatusService);
}
- protected PolicyAuditManager makePolicyAuditManager(PolicyModelsProvider dao) {
- return new PolicyAuditManager(dao);
+ protected PolicyAuditManager makePolicyAuditManager(PolicyAuditService policyAuditService) {
+ return new PolicyAuditManager(policyAuditService);
}
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java
index 641e2ba9..f1251cbd 100644
--- a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java
+++ b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -35,9 +35,8 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
import lombok.RequiredArgsConstructor;
-import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
+import org.onap.policy.pap.main.service.PdpStatisticsService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -56,7 +55,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
public class StatisticsRestControllerV1 extends PapRestControllerV1 {
- private final StatisticsRestProvider provider;
+ private final PdpStatisticsService pdpStatisticsService;
/**
* get statistics of PAP.
@@ -77,15 +76,13 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
required = false,
value = REQUEST_ID_NAME) final UUID requestId) {
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
- .body(provider.fetchCurrentStatistics());
+ .body(pdpStatisticsService.fetchCurrentStatistics());
}
/**
* get all statistics of PDP groups.
*
- *
* @return a response
- * @throws PfModelException the exception
*/
@GetMapping("pdps/statistics")
@ApiOperation(value = "Fetch statistics for all PDP Groups and subgroups in the system",
@@ -126,10 +123,9 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
value = "startTime") final Long startTime,
@ApiParam(value = "End time in epoch timestamp") @RequestParam(
required = false,
- value = "endTime") final Long endTime) throws PfModelException {
- return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
- .body(provider.fetchDatabaseStatistics(PdpFilterParameters.builder().recordNum(recordCount)
- .startTime(convertEpochtoInstant(startTime)).endTime(convertEpochtoInstant(endTime)).build()));
+ value = "endTime") final Long endTime) {
+ return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(pdpStatisticsService
+ .fetchDatabaseStatistics(recordCount, convertEpochtoInstant(startTime), convertEpochtoInstant(endTime)));
}
/**
@@ -137,7 +133,6 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
*
* @param groupName name of the PDP group
* @return a response
- * @throws PfModelException the exception
*/
@GetMapping("pdps/statistics/{group}")
@ApiOperation(value = "Fetch current statistics for given PDP Group",
@@ -178,10 +173,10 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
value = "startTime") final Long startTime,
@ApiParam(value = "End time in epoch timestamp") @RequestParam(
required = false,
- value = "endTime") final Long endTime) throws PfModelException {
+ value = "endTime") final Long endTime) {
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
- .body(provider.fetchDatabaseStatistics(PdpFilterParameters.builder().group(groupName).recordNum(recordCount)
- .startTime(convertEpochtoInstant(startTime)).endTime(convertEpochtoInstant(endTime)).build()));
+ .body(pdpStatisticsService.fetchDatabaseStatistics(groupName, recordCount, convertEpochtoInstant(startTime),
+ convertEpochtoInstant(endTime)));
}
/**
@@ -190,7 +185,6 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
* @param groupName name of the PDP group
* @param subType type of the sub PDP group
* @return a response
- * @throws PfModelException the exception
*/
@GetMapping("pdps/statistics/{group}/{type}")
@ApiOperation(value = "Fetch statistics for the specified subgroup",
@@ -232,11 +226,10 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
value = "startTime") final Long startTime,
@ApiParam(value = "End time in epoch timestamp") @RequestParam(
required = false,
- value = "endTime") final Long endTime) throws PfModelException {
+ value = "endTime") final Long endTime) {
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
- .body(provider.fetchDatabaseStatistics(
- PdpFilterParameters.builder().group(groupName).subGroup(subType).recordNum(recordCount)
- .startTime(convertEpochtoInstant(startTime)).endTime(convertEpochtoInstant(endTime)).build()));
+ .body(pdpStatisticsService.fetchDatabaseStatistics(groupName, subType, recordCount,
+ convertEpochtoInstant(startTime), convertEpochtoInstant(endTime)));
}
/**
@@ -247,7 +240,6 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
* @param pdpName the name of the PDP
* @param recordCount the count of the query response, optional, default return all statistics stored
* @return a response
- * @throws PfModelException the exception
*/
@GetMapping("pdps/statistics/{group}/{type}/{pdp}")
@ApiOperation(value = "Fetch statistics for the specified pdp",
@@ -291,11 +283,10 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 {
value = "startTime") final Long startTime,
@ApiParam(value = "End time in epoch timestamp") @RequestParam(
required = false,
- value = "endTime") final Long endTime) throws PfModelException {
+ value = "endTime") final Long endTime) {
return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
- .body(provider.fetchDatabaseStatistics(
- PdpFilterParameters.builder().group(groupName).subGroup(subType).name(pdpName).recordNum(recordCount)
- .startTime(convertEpochtoInstant(startTime)).endTime(convertEpochtoInstant(endTime)).build()));
+ .body(pdpStatisticsService.fetchDatabaseStatistics(groupName, subType, pdpName, recordCount,
+ convertEpochtoInstant(startTime), convertEpochtoInstant(endTime)));
}
private Instant convertEpochtoInstant(Long epochSecond) {
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java
deleted file mode 100644
index 51f10fef..00000000
--- a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020-2021 Nordix Foundation.
- * Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
- * ================================================================================
- * 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.rest;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import javax.ws.rs.core.Response;
-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.pdp.concepts.PdpStatistics;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
-import org.onap.policy.pap.main.startstop.PapActivator;
-import org.springframework.stereotype.Service;
-
-/**
- * Class to fetch statistics of pap component.
- *
- * @author Ram Krishna Verma (ram.krishna.verma@est.tech)
- */
-@Service
-public class StatisticsRestProvider {
- private static final String GET_STATISTICS_ERR_MSG = "database query failed";
-
- /**
- * Returns the current statistics of pap component.
- *
- * @return Report containing statistics of pap component
- */
- public StatisticsReport fetchCurrentStatistics() {
- final var report = new StatisticsReport();
- report.setCode(Registry.get(PapConstants.REG_PAP_ACTIVATOR, PapActivator.class).isAlive() ? 200 : 500);
-
- PapStatisticsManager mgr = Registry.get(PapConstants.REG_STATISTICS_MANAGER, PapStatisticsManager.class);
- report.setTotalPdpCount(mgr.getTotalPdpCount());
- report.setTotalPdpGroupCount(mgr.getTotalPdpGroupCount());
- report.setTotalPolicyDownloadCount(mgr.getTotalPolicyDownloadCount());
- report.setPolicyDownloadSuccessCount(mgr.getPolicyDownloadSuccessCount());
- report.setPolicyDownloadFailureCount(mgr.getPolicyDownloadFailureCount());
- report.setTotalPolicyDeployCount(mgr.getTotalPolicyDeployCount());
- report.setPolicyDeploySuccessCount(mgr.getPolicyDeploySuccessCount());
- report.setPolicyDeployFailureCount(mgr.getPolicyDeployFailureCount());
-
- return report;
- }
-
- /**
- * Returns statistics of pdp component from database.
- *
- * @param filter record filter
- * @return Report containing statistics of pdp component
- * @throws PfModelException when database can not found
- */
- public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(PdpFilterParameters filter)
- throws PfModelException {
- final PolicyModelsProviderFactoryWrapper modelProviderWrapper =
- Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- return generatePdpStatistics(databaseProvider.getFilteredPdpStatistics(filter));
-
- } catch (final PfModelException exp) {
- throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, GET_STATISTICS_ERR_MSG);
- }
- }
-
- /**
- * generate the statistics of pap component by group/subgroup.
- *
- */
- private Map<String, Map<String, List<PdpStatistics>>> generatePdpStatistics(List<PdpStatistics> pdpStatisticsList) {
- Map<String, Map<String, List<PdpStatistics>>> groupMap = new HashMap<>();
- if (pdpStatisticsList != null) {
- pdpStatisticsList.stream().forEach(s -> {
- String curGroup = s.getPdpGroupName();
- String curSubGroup = s.getPdpSubGroupName();
- groupMap.computeIfAbsent(curGroup, curGroupMap -> new HashMap<>())
- .computeIfAbsent(curSubGroup, curSubGroupList -> new ArrayList<>()).add(s);
- });
- }
- return groupMap;
- }
-}
diff --git a/main/src/main/java/org/onap/policy/pap/main/service/PdpGroupService.java b/main/src/main/java/org/onap/policy/pap/main/service/PdpGroupService.java
index f3b1d6f9..5f0520ff 100644
--- a/main/src/main/java/org/onap/policy/pap/main/service/PdpGroupService.java
+++ b/main/src/main/java/org/onap/policy/pap/main/service/PdpGroupService.java
@@ -33,7 +33,6 @@ import org.onap.policy.models.base.PfReferenceKey;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroupFilter;
-import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.enums.PdpState;
import org.onap.policy.models.pdp.persistence.concepts.JpaPdp;
@@ -69,7 +68,7 @@ public class PdpGroupService {
* @param pdpGroup the name of group
* @return the PDP groups found
*/
- public List<PdpGroup> getPdpGroupByName(@NonNull String pdpGroup) {
+ public List<PdpGroup> getPdpGroups(@NonNull String pdpGroup) {
return asPdpGroups(pdpGroupRepository.findByKeyName(pdpGroup));
}
@@ -79,7 +78,7 @@ public class PdpGroupService {
* @param pdpState the state of pdpGroup
* @return the PDP groups found
*/
- public List<PdpGroup> getPdpGroupByState(@NonNull PdpState pdpState) {
+ public List<PdpGroup> getPdpGroups(@NonNull PdpState pdpState) {
return asPdpGroups(pdpGroupRepository.findByPdpGroupState(pdpState));
}
@@ -90,7 +89,7 @@ public class PdpGroupService {
* @param state the state of pdpGroup
* @return the PDP groups found
*/
- public List<PdpGroup> getPdpGroupByNameAndState(@NonNull String pdpGroup, @NonNull PdpState state) {
+ public List<PdpGroup> getPdpGroups(@NonNull String pdpGroup, @NonNull PdpState state) {
return asPdpGroups(pdpGroupRepository.findByKeyNameAndPdpGroupState(pdpGroup, state));
}
@@ -110,9 +109,21 @@ public class PdpGroupService {
* @param pdpGroups the PDP groups to create
* @return the PDP groups created
*/
- public PdpGroups savePdpGroups(@NonNull final List<PdpGroup> pdpGroups) {
+ public List<PdpGroup> createPdpGroups(@NonNull final List<PdpGroup> pdpGroups) {
+ return savePdpGroups(pdpGroups);
+ }
+
+ /**
+ * Updates PDP groups.
+ *
+ * @param pdpGroups the PDP groups to create
+ * @return the PDP groups created
+ */
+ public List<PdpGroup> updatePdpGroups(@NonNull final List<PdpGroup> pdpGroups) {
+ return savePdpGroups(pdpGroups);
+ }
- // Return the created PDP groups
+ private List<PdpGroup> savePdpGroups(final List<PdpGroup> pdpGroups) {
List<PdpGroup> returnPdpGroupList = new ArrayList<>();
for (PdpGroup pdpGroup : pdpGroups) {
@@ -131,9 +142,7 @@ public class PdpGroupService {
"Failed saving PdpGroup. " + exc.getMessage(), exc);
}
}
- PdpGroups returnPdpGroups = new PdpGroups();
- returnPdpGroups.setGroups(returnPdpGroupList);
- return returnPdpGroups;
+ return returnPdpGroupList;
}
/**
diff --git a/main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java b/main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java
index 79112cd2..c9a831ee 100644
--- a/main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java
+++ b/main/src/main/java/org/onap/policy/pap/main/service/PdpStatisticsService.java
@@ -26,17 +26,23 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
import javax.ws.rs.core.Response;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.utils.services.Registry;
import org.onap.policy.models.base.PfGeneratedIdKey;
import org.onap.policy.models.base.PfKey;
import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
import org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics;
+import org.onap.policy.pap.main.PapConstants;
import org.onap.policy.pap.main.repository.PdpStatisticsRepository;
+import org.onap.policy.pap.main.rest.PapStatisticsManager;
+import org.onap.policy.pap.main.rest.StatisticsReport;
+import org.onap.policy.pap.main.startstop.PapActivator;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
@@ -52,9 +58,33 @@ public class PdpStatisticsService {
private static final int DEFAULT_RECORD_COUNT = 10;
private static final int MAX_RECORD_COUNT = 100;
+ private AtomicLong generatedId = new AtomicLong();
+
private final PdpStatisticsRepository pdpStatisticsRepository;
/**
+ * Returns the current statistics of pap component.
+ *
+ * @return Report containing statistics of pap component
+ */
+ public StatisticsReport fetchCurrentStatistics() {
+ final var report = new StatisticsReport();
+ report.setCode(Registry.get(PapConstants.REG_PAP_ACTIVATOR, PapActivator.class).isAlive() ? 200 : 500);
+
+ PapStatisticsManager mgr = Registry.get(PapConstants.REG_STATISTICS_MANAGER, PapStatisticsManager.class);
+ report.setTotalPdpCount(mgr.getTotalPdpCount());
+ report.setTotalPdpGroupCount(mgr.getTotalPdpGroupCount());
+ report.setTotalPolicyDownloadCount(mgr.getTotalPolicyDownloadCount());
+ report.setPolicyDownloadSuccessCount(mgr.getPolicyDownloadSuccessCount());
+ report.setPolicyDownloadFailureCount(mgr.getPolicyDownloadFailureCount());
+ report.setTotalPolicyDeployCount(mgr.getTotalPolicyDeployCount());
+ report.setPolicyDeploySuccessCount(mgr.getPolicyDeploySuccessCount());
+ report.setPolicyDeployFailureCount(mgr.getPolicyDeployFailureCount());
+
+ return report;
+ }
+
+ /**
* Creates PDP statistics.
*
* @param pdpStatisticsList a specification of the PDP statistics to create
@@ -68,7 +98,9 @@ public class PdpStatisticsService {
if (!validationResult.isValid()) {
throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult());
}
- pdpStatisticsRepository.save(jpaPdpStatistics);
+ //TODO: Fix this as part of POLICY-3897
+ jpaPdpStatistics.getKey().setGeneratedId(generatedId.incrementAndGet());
+ pdpStatisticsRepository.saveAndFlush(jpaPdpStatistics);
pdpStatistics.setGeneratedId(jpaPdpStatistics.getKey().getGeneratedId());
}
@@ -95,8 +127,8 @@ public class PdpStatisticsService {
* @param endTime end time of the records to be returned
* @return pdpStatistics grouped by pdpGroup
*/
- public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(String pdpGroup, String pdpSubGroup,
- String pdp, int recordCount, Instant startTime, Instant endTime) {
+ public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(@NonNull String pdpGroup,
+ @NonNull String pdpSubGroup, @NonNull String pdp, int recordCount, Instant startTime, Instant endTime) {
Pageable recordSize = getRecordSize(recordCount);
if (startTime != null && endTime != null) {
@@ -128,8 +160,8 @@ public class PdpStatisticsService {
* @param endTime end time of the records to be returned
* @return pdpStatistics grouped by pdpGroup
*/
- public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(String pdpGroup, String pdpSubGroup,
- int recordCount, Instant startTime, Instant endTime) {
+ public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(@NonNull String pdpGroup,
+ @NonNull String pdpSubGroup, int recordCount, Instant startTime, Instant endTime) {
Pageable recordSize = getRecordSize(recordCount);
if (startTime != null && endTime != null) {
@@ -159,8 +191,8 @@ public class PdpStatisticsService {
* @param endTime end time of the records to be returned
* @return pdpStatistics grouped by pdpGroup
*/
- public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(String pdpGroup, int recordCount,
- Instant startTime, Instant endTime) {
+ public Map<String, Map<String, List<PdpStatistics>>> fetchDatabaseStatistics(@NonNull String pdpGroup,
+ int recordCount, Instant startTime, Instant endTime) {
Pageable recordSize = getRecordSize(recordCount);
if (startTime != null && endTime != null) {
diff --git a/main/src/main/java/org/onap/policy/pap/main/service/PolicyAuditService.java b/main/src/main/java/org/onap/policy/pap/main/service/PolicyAuditService.java
index d2926fa1..951a3cbd 100644
--- a/main/src/main/java/org/onap/policy/pap/main/service/PolicyAuditService.java
+++ b/main/src/main/java/org/onap/policy/pap/main/service/PolicyAuditService.java
@@ -23,6 +23,7 @@ package org.onap.policy.pap.main.service;
import java.time.Instant;
import java.util.Date;
import java.util.List;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
import javax.ws.rs.core.Response;
import lombok.NonNull;
@@ -46,6 +47,8 @@ public class PolicyAuditService {
private static final Integer DEFAULT_MAX_RECORDS = 100;
private static final Integer DEFAULT_MIN_RECORDS = 10;
+ private AtomicLong generatedId = new AtomicLong();
+
private final PolicyAuditRepository policyAuditRepository;
/**
@@ -61,12 +64,13 @@ public class PolicyAuditService {
var count = 0;
for (JpaPolicyAudit jpaAudit : jpaAudits) {
result.addResult(jpaAudit.validate(String.valueOf(count++)));
+ // TODO: Fix this as part of POLICY-3897
+ jpaAudit.getKey().setGeneratedId(generatedId.incrementAndGet());
}
if (!result.isValid()) {
throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, result.getResult());
}
-
policyAuditRepository.saveAll(jpaAudits);
}
@@ -103,7 +107,8 @@ public class PolicyAuditService {
* @param endTime end time of the records to be returned
* @return list of {@link PolicyAudit} records found
*/
- public List<PolicyAudit> getAuditRecords(String pdpGroup, int recordCount, Instant startTime, Instant endTime) {
+ public List<PolicyAudit> getAuditRecords(@NonNull String pdpGroup, int recordCount, Instant startTime,
+ Instant endTime) {
Pageable recordSize = getRecordSize(recordCount);
if (startTime != null && endTime != null) {
return asPolicyAuditList(policyAuditRepository.findByPdpGroupAndTimeStampBetween(pdpGroup,
@@ -130,8 +135,8 @@ public class PolicyAuditService {
* @param endTime end time of the records to be returned
* @return list of {@link PolicyAudit} records found
*/
- public List<PolicyAudit> getAuditRecords(String pdpGroup, String policyName, String policyVersion, int recordCount,
- Instant startTime, Instant endTime) {
+ public List<PolicyAudit> getAuditRecords(@NonNull String pdpGroup, @NonNull String policyName,
+ @NonNull String policyVersion, int recordCount, Instant startTime, Instant endTime) {
Pageable recordSize = getRecordSize(recordCount);
if (startTime != null && endTime != null) {
return asPolicyAuditList(policyAuditRepository.findByPdpGroupAndKeyNameAndKeyVersionAndTimeStampBetween(
@@ -160,7 +165,7 @@ public class PolicyAuditService {
* @param endTime end time of the records to be returned
* @return list of {@link PolicyAudit} records found
*/
- public List<PolicyAudit> getAuditRecords(String policyName, String policyVersion, int recordCount,
+ public List<PolicyAudit> getAuditRecords(@NonNull String policyName, @NonNull String policyVersion, int recordCount,
Instant startTime, Instant endTime) {
Pageable recordSize = getRecordSize(recordCount);
if (startTime != null && endTime != null) {
diff --git a/main/src/main/java/org/onap/policy/pap/main/service/ToscaServiceTemplateService.java b/main/src/main/java/org/onap/policy/pap/main/service/ToscaServiceTemplateService.java
index cebee1b5..e71045f6 100644
--- a/main/src/main/java/org/onap/policy/pap/main/service/ToscaServiceTemplateService.java
+++ b/main/src/main/java/org/onap/policy/pap/main/service/ToscaServiceTemplateService.java
@@ -34,6 +34,7 @@ import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.tosca.authorative.concepts.ToscaEntity;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider;
import org.onap.policy.models.tosca.utils.ToscaUtils;
@@ -82,6 +83,18 @@ public class ToscaServiceTemplateService {
}
/**
+ * Get filtered policies.
+ *
+ * @param filter the filter for the policies to get
+ * @return the policies found
+ * @throws PfModelException on errors getting policies
+ */
+ public List<ToscaPolicy> getFilteredPolicyList(ToscaTypedEntityFilter<ToscaPolicy> filter) throws PfModelException {
+ String version = ToscaTypedEntityFilter.LATEST_VERSION.equals(filter.getVersion()) ? null : filter.getVersion();
+ return filter.filter(getPolicyList(filter.getName(), version));
+ }
+
+ /**
* Get policy types.
*
* @param name the name of the policy type to get, set to null to get all policy types
@@ -172,4 +185,5 @@ public class ToscaServiceTemplateService {
throw pfme;
}
}
+
}
diff --git a/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java b/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java
index 94943706..00207220 100644
--- a/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java
+++ b/main/src/main/java/org/onap/policy/pap/main/startstop/PapActivator.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2019-2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,7 +40,6 @@ import org.onap.policy.models.pdp.concepts.PdpMessage;
import org.onap.policy.models.pdp.concepts.PdpStatus;
import org.onap.policy.models.pdp.enums.PdpMessageType;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.PolicyPapRuntimeException;
import org.onap.policy.pap.main.comm.PdpHeartbeatListener;
import org.onap.policy.pap.main.comm.PdpModifyRequestMap;
@@ -50,7 +49,6 @@ import org.onap.policy.pap.main.notification.PolicyNotifier;
import org.onap.policy.pap.main.parameters.PapParameterGroup;
import org.onap.policy.pap.main.parameters.PdpModifyRequestMapParams;
import org.onap.policy.pap.main.rest.PapStatisticsManager;
-import org.onap.policy.pap.main.rest.PolicyUndeployerImpl;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
@@ -89,16 +87,12 @@ public class PapActivator extends ServiceManagerContainer {
private final RequestIdDispatcher<PdpStatus> heartbeatReqIdDispatcher;
/**
- * Listener for anonymous {@link PdpStatus} messages either for registration or heartbeat.
- */
- private final PdpHeartbeatListener pdpHeartbeatListener;
-
- /**
* Instantiate the activator for policy pap as a complete service.
*
* @param papParameterGroup the parameters for the pap service
*/
- public PapActivator(PapParameterGroup papParameterGroup) {
+ public PapActivator(PapParameterGroup papParameterGroup, PolicyNotifier policyNotifier,
+ PdpHeartbeatListener pdpHeartbeatListener, PdpModifyRequestMap pdpModifyRequestMap) {
super("Policy PAP");
this.papParameterGroup = papParameterGroup;
TopicEndpointManager.getManager().addTopics(papParameterGroup.getTopicParameterGroup());
@@ -108,8 +102,6 @@ public class PapActivator extends ServiceManagerContainer {
this.heartbeatMsgDispatcher = new MessageTypeDispatcher(MSG_TYPE_NAMES);
this.responseReqIdDispatcher = new RequestIdDispatcher<>(PdpStatus.class, REQ_ID_NAMES);
this.heartbeatReqIdDispatcher = new RequestIdDispatcher<>(PdpStatus.class, REQ_ID_NAMES);
- this.pdpHeartbeatListener = new PdpHeartbeatListener(papParameterGroup.getPdpParameters(),
- papParameterGroup.isSavePdpStatisticsInDb());
} catch (final RuntimeException e) {
throw new PolicyPapRuntimeException(e);
@@ -123,24 +115,13 @@ public class PapActivator extends ServiceManagerContainer {
final AtomicReference<TimerManager> pdpUpdTimers = new AtomicReference<>();
final AtomicReference<TimerManager> pdpStChgTimers = new AtomicReference<>();
final AtomicReference<ScheduledExecutorService> pdpExpirationTimer = new AtomicReference<>();
- final AtomicReference<PolicyModelsProviderFactoryWrapper> daoFactory = new AtomicReference<>();
final AtomicReference<PdpModifyRequestMap> requestMap = new AtomicReference<>();
- final AtomicReference<PolicyNotifier> notifier = new AtomicReference<>();
// @formatter:off
addAction("PAP parameters",
() -> ParameterService.register(papParameterGroup),
() -> ParameterService.deregister(papParameterGroup.getName()));
- addAction("DAO Factory",
- () -> daoFactory.set(new PolicyModelsProviderFactoryWrapper(
- papParameterGroup.getDatabaseProviderParameters())),
- () -> daoFactory.get().close());
-
- addAction("DAO Factory registration",
- () -> Registry.register(PapConstants.REG_PAP_DAO_FACTORY, daoFactory.get()),
- () -> Registry.unregister(PapConstants.REG_PAP_DAO_FACTORY));
-
addAction("Pdp Heartbeat Listener",
() -> heartbeatReqIdDispatcher.register(pdpHeartbeatListener),
() -> heartbeatReqIdDispatcher.unregister(pdpHeartbeatListener));
@@ -184,14 +165,10 @@ public class PapActivator extends ServiceManagerContainer {
() -> {
notifyPub.set(new Publisher<>(PapConstants.TOPIC_POLICY_NOTIFICATION));
startThread(notifyPub.get());
- notifier.set(new PolicyNotifier(notifyPub.get(), daoFactory.get()));
+ policyNotifier.setPublisher(notifyPub.get());
},
() -> notifyPub.get().stop());
- addAction("Policy Notifier",
- () -> Registry.register(PapConstants.REG_POLICY_NOTIFIER, notifier.get()),
- () -> Registry.unregister(PapConstants.REG_POLICY_NOTIFIER));
-
addAction("PDP update timers",
() -> {
pdpUpdTimers.set(new TimerManager("update", pdpParams.getUpdateParameters().getMaxWaitMs()));
@@ -212,23 +189,19 @@ public class PapActivator extends ServiceManagerContainer {
addAction("PDP modification requests",
() -> {
- requestMap.set(new PdpModifyRequestMap(
- PdpModifyRequestMapParams.builder()
- .maxPdpAgeMs(MAX_MISSED_HEARTBEATS * pdpParams.getHeartBeatMs())
- .daoFactory(daoFactory.get())
- .modifyLock(pdpUpdateLock)
- .params(pdpParams)
- .policyNotifier(notifier.get())
- .pdpPublisher(pdpPub.get())
- .responseDispatcher(responseReqIdDispatcher)
- .stateChangeTimers(pdpStChgTimers.get())
- .updateTimers(pdpUpdTimers.get())
- .savePdpStatistics(papParameterGroup.isSavePdpStatisticsInDb())
- .build()));
+ pdpModifyRequestMap.initialize(
+ PdpModifyRequestMapParams.builder()
+ .maxPdpAgeMs(MAX_MISSED_HEARTBEATS * pdpParams.getHeartBeatMs())
+ .modifyLock(pdpUpdateLock)
+ .params(pdpParams)
+ .pdpPublisher(pdpPub.get())
+ .responseDispatcher(responseReqIdDispatcher)
+ .stateChangeTimers(pdpStChgTimers.get())
+ .updateTimers(pdpUpdTimers.get())
+ .savePdpStatistics(papParameterGroup.isSavePdpStatisticsInDb())
+ .build());
+ requestMap.set(pdpModifyRequestMap);
Registry.register(PapConstants.REG_PDP_MODIFY_MAP, requestMap.get());
-
- // now that it's registered, we can attach a "policy undeploy" provider
- requestMap.get().setPolicyUndeployer(new PolicyUndeployerImpl());
},
() -> Registry.unregister(PapConstants.REG_PDP_MODIFY_MAP));
diff --git a/main/src/main/java/org/onap/policy/pap/main/startstop/PapDatabaseInitializer.java b/main/src/main/java/org/onap/policy/pap/main/startstop/PapDatabaseInitializer.java
index 617cdf36..b2a42d9c 100644
--- a/main/src/main/java/org/onap/policy/pap/main/startstop/PapDatabaseInitializer.java
+++ b/main/src/main/java/org/onap/policy/pap/main/startstop/PapDatabaseInitializer.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,13 +28,10 @@ import org.onap.policy.common.parameters.ValidationResult;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
-import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
-import org.onap.policy.models.provider.PolicyModelsProviderFactory;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
import org.onap.policy.pap.main.PolicyPapException;
-import org.onap.policy.pap.main.parameters.PapParameterGroup;
+import org.onap.policy.pap.main.service.PdpGroupService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -54,10 +51,9 @@ public class PapDatabaseInitializer {
private static final Logger LOGGER = LoggerFactory.getLogger(PapDatabaseInitializer.class);
private final StandardCoder standardCoder;
- private final PolicyModelsProviderFactory factory;
@Autowired
- private PapParameterGroup papParameterGroup;
+ private PdpGroupService pdpGroupService;
@Value("${group-config-file:PapDb.json}")
private String groupConfigFile;
@@ -66,39 +62,34 @@ public class PapDatabaseInitializer {
* Constructs the object.
*/
public PapDatabaseInitializer() {
- factory = new PolicyModelsProviderFactory();
standardCoder = new StandardCoder();
}
/**
* Initializes database with group information.
*
- * @param policyModelsProviderParameters the database parameters
* @param groupsJson the group file path
* @throws PolicyPapException in case of errors.
*/
- private void initializePapDatabase(
- final PolicyModelsProviderParameters policyModelsProviderParameters,
- String groupsJson) throws PolicyPapException {
+ private void initializePapDatabase(String groupsJson) throws PolicyPapException {
- try (var databaseProvider =
- factory.createPolicyModelsProvider(policyModelsProviderParameters)) {
+ try {
final var originalJson = ResourceUtils.getResourceAsString(groupsJson);
final var pdpGroupsToCreate = standardCoder.decode(originalJson, PdpGroups.class);
- final List<PdpGroup> pdpGroupsFromDb = databaseProvider.getPdpGroups(
- pdpGroupsToCreate.getGroups().get(0).getName());
+ final List<PdpGroup> pdpGroupsFromDb =
+ pdpGroupService.getPdpGroups(pdpGroupsToCreate.getGroups().get(0).getName());
if (pdpGroupsFromDb.isEmpty()) {
ValidationResult result = pdpGroupsToCreate.validatePapRest();
if (!result.isValid()) {
throw new PolicyPapException(result.getResult());
}
- databaseProvider.createPdpGroups(pdpGroupsToCreate.getGroups());
+ pdpGroupService.createPdpGroups(pdpGroupsToCreate.getGroups());
LOGGER.info("Created initial pdpGroup in DB - {} from {}", pdpGroupsToCreate, groupsJson);
} else {
- LOGGER.info("Initial pdpGroup already exists in DB, skipping create - {} from {}",
- pdpGroupsFromDb, groupsJson);
+ LOGGER.info("Initial pdpGroup already exists in DB, skipping create - {} from {}", pdpGroupsFromDb,
+ groupsJson);
}
- } catch (final PfModelException | CoderException | RuntimeException exp) {
+ } catch (final CoderException | RuntimeException exp) {
throw new PolicyPapException(exp);
}
}
@@ -108,6 +99,6 @@ public class PapDatabaseInitializer {
*/
@PostConstruct
public void loadData() throws PolicyPapException {
- initializePapDatabase(papParameterGroup.getDatabaseProviderParameters(), groupConfigFile);
+ initializePapDatabase(groupConfigFile);
}
}
diff --git a/main/src/main/resources/META-INF/persistence.xml b/main/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index a9d61294..00000000
--- a/main/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2019-2021 Nordix Foundation.
- Modifications Copyright (C) 2021 AT&T Intellectual Property.
- Modification Copyright 2022. 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=========================================================
--->
-
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
- <persistence-unit name="PolicyDb" transaction-type="RESOURCE_LOCAL">
- <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-
- <class>org.onap.policy.models.base.PfConceptKey</class>
- <class>org.onap.policy.models.dao.converters.CDataConditioner</class>
- <class>org.onap.policy.models.dao.converters.Uuid2String</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdp</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpGroup</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpPolicyStatus</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpSubGroup</class>
- <class>org.onap.policy.models.pap.persistence.concepts.JpaPolicyAudit</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignment</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignments</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplates</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaParameter</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirement</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirements</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaTrigger</class>
-
- <properties>
- <property name="javax.persistence.schema-generation.database.action" value="none" />
- <property name="eclipselink.ddl-generation" value="none" />
- <property name="eclipselink.logging.level" value="WARNING" />
- </properties>
- </persistence-unit>
-</persistence>
diff --git a/main/src/main/resources/application.yaml b/main/src/main/resources/application.yaml
index 3d6cf0e7..d6111aa1 100644
--- a/main/src/main/resources/application.yaml
+++ b/main/src/main/resources/application.yaml
@@ -14,7 +14,7 @@ spring:
jpa:
properties:
hibernate:
- dialect: org.hibernate.dialect.MySQL5InnoDBDialect
+ dialect: org.hibernate.dialect.MariaDB103Dialect
hibernate:
ddl-auto: none
naming:
@@ -34,14 +34,6 @@ pap:
stateChangeParameters:
maxRetryCount: 1
maxWaitMs: 30000
- databaseProviderParameters:
- name: PolicyProviderParameterGroup
- implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl
- databaseDriver: org.mariadb.jdbc.Driver
- databaseUrl: jdbc:mariadb://mariadb:3306/policyadmin
- databaseUser: policy_user
- databasePassword: policy_user
- persistenceUnit: PolicyDb
savePdpStatisticsInDb: true
topicParameterGroup:
topicSources:
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/CommonRequestBase.java b/main/src/test/java/org/onap/policy/pap/main/comm/CommonRequestBase.java
index 0dc6636b..dd206062 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/CommonRequestBase.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/CommonRequestBase.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -43,10 +44,8 @@ import org.onap.policy.models.pdp.concepts.PdpStateChange;
import org.onap.policy.models.pdp.concepts.PdpStatus;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.comm.msgdata.RequestListener;
import org.onap.policy.pap.main.comm.msgdata.StateChangeReq;
import org.onap.policy.pap.main.comm.msgdata.UpdateReq;
@@ -84,8 +83,6 @@ public class CommonRequestBase {
protected TimerManager.Timer timer;
protected Queue<QueueToken<PdpMessage>> queue;
protected RequestListener listener;
- protected PolicyModelsProviderFactoryWrapper daoFactory;
- protected PolicyModelsProvider dao;
protected RequestParams reqParams;
protected PdpModifyRequestMapParams mapParams;
@@ -105,9 +102,6 @@ public class CommonRequestBase {
timer = mock(TimerManager.Timer.class);
queue = new LinkedList<>();
listener = mock(RequestListener.class);
- daoFactory = mock(PolicyModelsProviderFactoryWrapper.class);
- dao = mock(PolicyModelsProvider.class);
-
PdpParameters pdpParams = mock(PdpParameters.class);
doAnswer(new Answer<Object>() {
@@ -120,8 +114,6 @@ public class CommonRequestBase {
when(timers.register(any(), any())).thenReturn(timer);
- when(daoFactory.create()).thenReturn(dao);
-
PdpStateChangeParameters stateParams = mock(PdpStateChangeParameters.class);
when(stateParams.getMaxRetryCount()).thenReturn(RETRIES);
when(pdpParams.getStateChangeParameters()).thenReturn(stateParams);
@@ -134,7 +126,7 @@ public class CommonRequestBase {
.setResponseDispatcher(dispatcher).setTimers(timers);
mapParams = PdpModifyRequestMapParams.builder().modifyLock(lock).pdpPublisher(publisher)
- .policyNotifier(notifier).responseDispatcher(dispatcher).daoFactory(daoFactory)
+ .responseDispatcher(dispatcher)
.updateTimers(timers).stateChangeTimers(timers).params(pdpParams)
.maxPdpAgeMs(100).build();
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java
index 7ae4b370..34c20410 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpHeartbeatListenerTest.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020-2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,6 +31,7 @@ import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
import org.junit.Test;
import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
@@ -46,8 +47,10 @@ import org.onap.policy.models.pdp.enums.PdpState;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.parameters.CommonTestData;
+import org.onap.policy.pap.main.parameters.PapParameterGroup;
import org.onap.policy.pap.main.parameters.PdpParameters;
import org.onap.policy.pap.main.rest.e2e.End2EndBase;
+import org.springframework.beans.factory.annotation.Autowired;
/**
* Class to perform unit test of {@link PdpHeartbeatListener}.
@@ -65,12 +68,16 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
private static final String TOPIC = "my-topic";
private Instant timeStamp;
+
+ @Autowired
private PdpHeartbeatListener pdpHeartbeatListener;
@Test
public void testPdpHeartbeatListener() throws CoderException, PfModelException {
addGroups("PdpGroups.json");
- pdpHeartbeatListener = new PdpHeartbeatListener(new PdpParameters(), true);
+ PapParameterGroup parameterGroup = new PapParameterGroup();
+ parameterGroup.setPdpParameters(new PdpParameters());
+ parameterGroup.setSavePdpStatisticsInDb(true);
// Testing pdp registration success case
final PdpStatus status1 = new PdpStatus();
@@ -219,14 +226,14 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
List<ToscaPolicy> policies = new ArrayList<>();
policies.add(polA);
policies.add(polB);
- final CommonTestData testData = new CommonTestData();
- PdpParameters params = testData.getPapParameterGroup(1).getPdpParameters();
- List<ToscaConceptIdentifier> polsUndep = policies.stream().map(ToscaPolicy::getIdentifier)
- .collect(Collectors.toList());
- PdpStatusMessageHandler handler = new PdpStatusMessageHandler(params, true);
- PdpUpdate update10 = handler.createPdpUpdateMessage(
- status3.getPdpGroup(), new PdpSubGroup(), "pdp_2",
- policies, polsUndep);
+ final PapParameterGroup testGroup = new CommonTestData().getPapParameterGroup(1);
+ testGroup.setSavePdpStatisticsInDb(true);
+ List<ToscaConceptIdentifier> polsUndep =
+ policies.stream().map(ToscaPolicy::getIdentifier).collect(Collectors.toList());
+ PdpStatusMessageHandler handler = new PdpStatusMessageHandler(testGroup, pdpGroupService,
+ pdpStatisticsService);
+ PdpUpdate update10 =
+ handler.createPdpUpdateMessage(status3.getPdpGroup(), new PdpSubGroup(), "pdp_2", policies, polsUndep);
assertSame(update10.getPoliciesToBeDeployed(), policies);
assertSame(update10.getPoliciesToBeUndeployed(), polsUndep);
assertThat(update10.getPoliciesToBeDeployed()).isInstanceOf(List.class);
@@ -235,7 +242,9 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
@Test
public void testPdpStatistics() throws CoderException, PfModelException, ParseException {
addGroups("PdpGroups.json");
- pdpHeartbeatListener = new PdpHeartbeatListener(new PdpParameters(), true);
+ PapParameterGroup parameterGroup = new PapParameterGroup();
+ parameterGroup.setPdpParameters(new PdpParameters());
+ parameterGroup.setSavePdpStatisticsInDb(true);
timeStamp = Instant.parse("2021-02-12T17:48:01.029211400Z");
// init default pdp group
@@ -283,7 +292,7 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
pdpStatistics03.setTimeStamp(timeStamp);
status3.setStatistics(pdpStatistics03);
pdpHeartbeatListener.onTopicEvent(INFRA, TOPIC, status3);
- verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, null, 1);
+ verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, APEX_TYPE, 1);
// Testing pdp statistics failure having the pdpStatistics null in the heartbeat for already registered pdp
final PdpStatus status4 = new PdpStatus();
@@ -298,7 +307,7 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
status4.setPolicies(idents4);
status4.setStatistics(null);
pdpHeartbeatListener.onTopicEvent(INFRA, TOPIC, status4);
- verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, null, 1);
+ verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, APEX_TYPE, 1);
// Testing pdp statistics failure passing different pdpGroup, PdpSubGroup & pdpInstanceId
final PdpStatus status5 = new PdpStatus();
@@ -320,7 +329,7 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
status5.setStatistics(pdpStatistics05);
pdpHeartbeatListener.onTopicEvent(INFRA, TOPIC, status5);
- verifyPdpStatistics(null, DEFAULT_GROUP, null, 1);
+ verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, APEX_TYPE, 1);
// Test pdp statistics failure passing negative values
final PdpStatus status6 = new PdpStatus();
@@ -347,10 +356,12 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
status5.setStatistics(pdpStatistics06);
pdpHeartbeatListener.onTopicEvent(INFRA, TOPIC, status5);
- verifyPdpStatistics(null, DEFAULT_GROUP, null, 1);
+ verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, APEX_TYPE, 1);
// Test pdp statistics save disabled case, sending valid pdp status but count should still remain 1
- pdpHeartbeatListener = new PdpHeartbeatListener(new PdpParameters(), false);
+ parameterGroup = new PapParameterGroup();
+ parameterGroup.setPdpParameters(new PdpParameters());
+ parameterGroup.setSavePdpStatisticsInDb(false);
timeStamp = Instant.parse("2021-02-12T17:48:05.029211400Z");
final PdpStatus status7 = new PdpStatus();
status7.setName(PDP_NAME);
@@ -370,7 +381,7 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
pdpStatistics07.setTimeStamp(timeStamp);
status7.setStatistics(pdpStatistics07);
pdpHeartbeatListener.onTopicEvent(INFRA, TOPIC, status7);
- verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, null, 1);
+ verifyPdpStatistics(PDP_NAME, DEFAULT_GROUP, APEX_TYPE, 1);
}
@@ -389,7 +400,7 @@ public class PdpHeartbeatListenerTest extends End2EndBase {
private void verifyPdpStatistics(final String pdpInstanceId, final String pdpGroupName,
final String pdpSubGroupName, final int count) throws PfModelException {
- final List<PdpStatistics> fetchedPdpStatistics =
+ final Map<String, Map<String, List<PdpStatistics>>> fetchedPdpStatistics =
fetchPdpStatistics(pdpInstanceId, pdpGroupName, pdpSubGroupName);
assertEquals(count, fetchedPdpStatistics.size());
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java b/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
index e626d28d..6ff989cd 100644
--- a/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/comm/PdpModifyRequestMapTest.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020-2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -70,6 +71,8 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.pap.main.comm.msgdata.Request;
import org.onap.policy.pap.main.comm.msgdata.RequestListener;
import org.onap.policy.pap.main.parameters.PdpModifyRequestMapParams;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.onap.policy.pap.main.service.PolicyStatusService;
import org.powermock.reflect.Whitebox;
@RunWith(MockitoJUnitRunner.class)
@@ -105,6 +108,12 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
@Mock
private PdpStatusMessageHandler responseHandler;
+ @Mock
+ private PdpGroupService pdpGroupService;
+
+ @Mock
+ private PolicyStatusService policyStatusService;
+
private MyMap map;
private PdpUpdate update;
private PdpStateChange change;
@@ -135,14 +144,12 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
response.setPolicies(Collections.emptyList());
map = new MyMap(mapParams);
- map.setPolicyUndeployer(undeployer);
}
@Test
public void testPdpModifyRequestMap() {
assertSame(mapParams, Whitebox.getInternalState(map, "params"));
assertSame(lock, Whitebox.getInternalState(map, "modifyLock"));
- assertSame(daoFactory, Whitebox.getInternalState(map, "daoFactory"));
}
@Test
@@ -379,7 +386,7 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
Instant expired = Instant.now().minusSeconds(EXPIRED_SECONDS);
group2.getPdpSubgroups().get(0).getPdpInstances().forEach(pdp -> pdp.setLastUpdate(expired));
- when(dao.getFilteredPdpGroups(any())).thenReturn(List.of(group1, group2));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(List.of(group1, group2));
// run it
map.removeExpiredPdps();
@@ -407,25 +414,25 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
PdpGroup group1 = makeGroup(MY_GROUP);
group1.setPdpSubgroups(List.of(makeSubGroup(MY_SUBGROUP, PDP1)));
- when(dao.getFilteredPdpGroups(any())).thenReturn(List.of(group1));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(List.of(group1));
// run it
map.removeExpiredPdps();
- verify(dao, never()).updatePdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
verify(publisher, never()).enqueue(any());
}
@Test
public void testRemoveExpiredPdps_DaoEx() throws Exception {
- when(dao.getFilteredPdpGroups(any())).thenThrow(makeException());
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenThrow(makeRuntimeException());
assertThatCode(map::removeExpiredPdps).doesNotThrowAnyException();
}
@Test
public void testRemoveExpiredPdps_DaoRtEx() throws Exception {
- when(dao.getFilteredPdpGroups(any())).thenThrow(makeRuntimeException());
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenThrow(makeRuntimeException());
assertThatCode(map::removeExpiredPdps).doesNotThrowAnyException();
}
@@ -440,8 +447,7 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
List<Pdp> pdps = group.getPdpSubgroups().get(0).getPdpInstances();
pdps.get(0).setLastUpdate(expired);
pdps.get(2).setLastUpdate(expired);
-
- when(dao.getFilteredPdpGroups(any())).thenReturn(List.of(group));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(List.of(group));
// run it
map.removeExpiredPdps();
@@ -469,7 +475,10 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
@Test
public void testMakePdpRequests() {
// this should invoke the real method without throwing an exception
- new PdpModifyRequestMap(mapParams).addRequest(change);
+ PdpModifyRequestMap reqMap =
+ new PdpModifyRequestMap(pdpGroupService, policyStatusService, responseHandler, undeployer, notifier);
+ reqMap.initialize(mapParams);
+ reqMap.addRequest(change);
QueueToken<PdpMessage> token = queue.poll();
assertNotNull(token);
@@ -621,7 +630,7 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
assertEquals(1, map.nalloc);
// no updates
- verify(dao, never()).updatePdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
}
@Test
@@ -753,7 +762,7 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
* @throws Exception if an error occurred
*/
private List<PdpGroup> getGroupUpdates() throws Exception {
- verify(dao).updatePdpGroups(updateCaptor.capture());
+ verify(pdpGroupService).updatePdpGroups(updateCaptor.capture());
return copyList(updateCaptor.getValue());
}
@@ -777,7 +786,8 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
private int nalloc = 0;
public MyMap(PdpModifyRequestMapParams params) {
- super(params);
+ super(pdpGroupService, policyStatusService, responseHandler, undeployer, notifier);
+ super.initialize(params);;
}
@Override
@@ -785,10 +795,5 @@ public class PdpModifyRequestMapTest extends CommonRequestBase {
++nalloc;
return requests;
}
-
- @Override
- protected PdpStatusMessageHandler makePdpResponseHandler() {
- return responseHandler;
- }
}
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/notification/DeploymentStatusTest.java b/main/src/test/java/org/onap/policy/pap/main/notification/DeploymentStatusTest.java
index 8d7a8c15..3b7f7e16 100644
--- a/main/src/test/java/org/onap/policy/pap/main/notification/DeploymentStatusTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/notification/DeploymentStatusTest.java
@@ -3,6 +3,7 @@
* ONAP
* ================================================================================
* Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -45,9 +46,9 @@ import org.onap.policy.models.pap.concepts.PolicyStatus;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus.PdpPolicyStatusBuilder;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus.State;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.pap.main.notification.StatusAction.Action;
+import org.onap.policy.pap.main.service.PolicyStatusService;
@RunWith(MockitoJUnitRunner.class)
public class DeploymentStatusTest {
@@ -75,7 +76,7 @@ public class DeploymentStatusTest {
private ArgumentCaptor<List<PdpPolicyStatus>> deleted;
@Mock
- private PolicyModelsProvider provider;
+ private PolicyStatusService policyStatusService;
private DeploymentStatus tracker;
@@ -84,7 +85,7 @@ public class DeploymentStatusTest {
*/
@Before
public void setUp() {
- tracker = new DeploymentStatus(provider);
+ tracker = new DeploymentStatus(policyStatusService);
// @formatter:off
builder = PdpPolicyStatus.builder()
@@ -142,7 +143,7 @@ public class DeploymentStatusTest {
PdpPolicyStatus status2 = builder.policy(POLICY_B).build();
PdpPolicyStatus status3 = builder.policy(POLICY_A).pdpId(PDP_B).build();
- when(provider.getGroupPolicyStatus(GROUP_A)).thenReturn(List.of(status1, status2, status3));
+ when(policyStatusService.getGroupPolicyStatus(GROUP_A)).thenReturn(List.of(status1, status2, status3));
tracker.loadByGroup(GROUP_A);
@@ -156,7 +157,7 @@ public class DeploymentStatusTest {
// try again - should not reload
tracker.loadByGroup(GROUP_A);
- verify(provider).getGroupPolicyStatus(anyString());
+ verify(policyStatusService).getGroupPolicyStatus(anyString());
}
@Test
@@ -198,7 +199,7 @@ public class DeploymentStatusTest {
tracker.flush();
- verify(provider).cudPolicyStatus(created.capture(), updated.capture(), deleted.capture());
+ verify(policyStatusService).cudPolicyStatus(created.capture(), updated.capture(), deleted.capture());
assertThat(sort(created.getValue())).isEqualTo(List.of(create1, create2));
assertThat(sort(updated.getValue())).isEqualTo(List.of(update1, update2));
diff --git a/main/src/test/java/org/onap/policy/pap/main/notification/PolicyNotifierTest.java b/main/src/test/java/org/onap/policy/pap/main/notification/PolicyNotifierTest.java
index 9134985c..5fec269a 100644
--- a/main/src/test/java/org/onap/policy/pap/main/notification/PolicyNotifierTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/notification/PolicyNotifierTest.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -41,14 +42,14 @@ import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
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.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
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)
public class PolicyNotifierTest {
@@ -61,10 +62,7 @@ public class PolicyNotifierTest {
private Publisher<PolicyNotification> publisher;
@Mock
- private PolicyModelsProviderFactoryWrapper daoFactory;
-
- @Mock
- private PolicyModelsProvider dao;
+ private PolicyStatusService policyStatusService;
@Mock
private DeploymentStatus tracker;
@@ -92,8 +90,7 @@ public class PolicyNotifierTest {
@Before
public void setUp() {
try {
- when(daoFactory.create()).thenReturn(dao);
- when(dao.getGroupPolicyStatus(anyString())).thenReturn(Collections.emptyList());
+ when(policyStatusService.getGroupPolicyStatus(anyString())).thenReturn(Collections.emptyList());
notifier = new MyNotifier(publisher);
@@ -125,7 +122,8 @@ public class PolicyNotifierTest {
@Test
public void testProcessResponseString_Ex() throws PfModelException {
- doThrow(new PfModelException(Status.BAD_REQUEST, "expected exception")).when(tracker).loadByGroup(anyString());
+ doThrow(new PfModelRuntimeException(Status.BAD_REQUEST, "expected exception")).when(tracker)
+ .loadByGroup(anyString());
assertThatCode(() -> notifier.processResponse(PDP1, GROUP_A, Set.of(), Set.of())).doesNotThrowAnyException();
}
@@ -155,20 +153,23 @@ public class PolicyNotifierTest {
@Test
public void testMakeDeploymentTracker() throws PfModelException {
// make real object, which will invoke the real makeXxx() methods
- new PolicyNotifier(publisher, daoFactory).processResponse(PDP1, GROUP_A, Set.of(), Set.of());
+ PolicyNotifier policyNotifier = new PolicyNotifier(policyStatusService);
+ policyNotifier.setPublisher(publisher);
+ policyNotifier.processResponse(PDP1, GROUP_A, Set.of(), Set.of());
- verify(dao).getGroupPolicyStatus(GROUP_A);
+ verify(policyStatusService).getGroupPolicyStatus(GROUP_A);
}
private class MyNotifier extends PolicyNotifier {
public MyNotifier(Publisher<PolicyNotification> publisher) throws PfModelException {
- super(publisher, daoFactory);
+ super(policyStatusService);
+ super.setPublisher(publisher);
}
@Override
- protected DeploymentStatus makeDeploymentTracker(PolicyModelsProvider dao) {
+ protected DeploymentStatus makeDeploymentTracker() {
return tracker;
}
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPdpModifyRequestMapParams.java b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPdpModifyRequestMapParams.java
index b77c5544..c41915d2 100644
--- a/main/src/test/java/org/onap/policy/pap/main/parameters/TestPdpModifyRequestMapParams.java
+++ b/main/src/test/java/org/onap/policy/pap/main/parameters/TestPdpModifyRequestMapParams.java
@@ -3,6 +3,7 @@
* ONAP PAP
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,10 +32,8 @@ import org.junit.Test;
import org.onap.policy.common.endpoints.listeners.RequestIdDispatcher;
import org.onap.policy.models.pdp.concepts.PdpMessage;
import org.onap.policy.models.pdp.concepts.PdpStatus;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.comm.Publisher;
import org.onap.policy.pap.main.comm.TimerManager;
-import org.onap.policy.pap.main.notification.PolicyNotifier;
import org.onap.policy.pap.main.parameters.PdpModifyRequestMapParams.PdpModifyRequestMapParamsBuilder;
public class TestPdpModifyRequestMapParams {
@@ -46,8 +45,6 @@ public class TestPdpModifyRequestMapParams {
private PdpParameters pdpParams;
private TimerManager updTimers;
private TimerManager stateTimers;
- private PolicyModelsProviderFactoryWrapper dao;
- private PolicyNotifier notifier;
/**
* Sets up the objects and creates an empty {@link #builder}.
@@ -61,12 +58,10 @@ public class TestPdpModifyRequestMapParams {
pdpParams = mock(PdpParameters.class);
updTimers = mock(TimerManager.class);
stateTimers = mock(TimerManager.class);
- dao = mock(PolicyModelsProviderFactoryWrapper.class);
- notifier = mock(PolicyNotifier.class);
builder = PdpModifyRequestMapParams.builder().modifyLock(lock).pdpPublisher(pub).responseDispatcher(disp)
.params(pdpParams).stateChangeTimers(stateTimers).updateTimers(updTimers)
- .daoFactory(dao).policyNotifier(notifier).maxPdpAgeMs(MAX_PDP_AGE_MS);
+ .maxPdpAgeMs(MAX_PDP_AGE_MS);
}
@Test
@@ -79,8 +74,6 @@ public class TestPdpModifyRequestMapParams {
assertSame(pdpParams, params.getParams());
assertSame(updTimers, params.getUpdateTimers());
assertSame(stateTimers, params.getStateChangeTimers());
- assertSame(dao, params.getDaoFactory());
- assertSame(notifier, params.getPolicyNotifier());
}
@Test
@@ -133,16 +126,4 @@ public class TestPdpModifyRequestMapParams {
assertThatIllegalArgumentException().isThrownBy(() -> builder.updateTimers(null).build().validate())
.withMessageContaining("update");
}
-
- @Test
- public void testValidate_MissingDaoFactory() {
- assertThatIllegalArgumentException().isThrownBy(() -> builder.daoFactory(null).build().validate())
- .withMessageContaining("DAO");
- }
-
- @Test
- public void testValidate_MissingNotifier() {
- assertThatIllegalArgumentException().isThrownBy(() -> builder.policyNotifier(null).build().validate())
- .withMessageContaining("notifier");
- }
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java b/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java
index 9673c295..e42cfd21 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/CommonPapRestServer.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -111,7 +111,7 @@ public abstract class CommonPapRestServer {
@DynamicPropertySource
static void registerPgProperties(DynamicPropertyRegistry registry) {
- registry.add("pap.databaseProviderParameters.databaseUrl", () -> "jdbc:h2:mem:testdb" + CommonTestData.dbNum);
+ registry.add("spring.datasource.url", () -> "jdbc:h2:mem:testdb" + CommonTestData.dbNum);
registry.add("server.ssl.enabled", () -> "true");
registry.add("server.ssl.key-store", () -> keystore.getKeystoreName());
registry.add("server.ssl.key-store-password", () -> SelfSignedKeyStore.KEYSTORE_PASSWORD);
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/ProviderSuper.java b/main/src/test/java/org/onap/policy/pap/main/rest/ProviderSuper.java
index 26e44d80..153a2bfa 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/ProviderSuper.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/ProviderSuper.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2022 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -49,13 +50,15 @@ import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.comm.PdpModifyRequestMap;
import org.onap.policy.pap.main.notification.PolicyNotifier;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.onap.policy.pap.main.service.PolicyAuditService;
+import org.onap.policy.pap.main.service.PolicyStatusService;
+import org.onap.policy.pap.main.service.ToscaServiceTemplateService;
/**
* Super class for TestPdpGroupDeployProviderXxx classes.
@@ -65,11 +68,19 @@ public class ProviderSuper {
public static final String DEFAULT_USER = "PAP_TEST";
@Mock
- protected PolicyModelsProvider dao;
+ protected PdpGroupService pdpGroupService;
@Mock
- protected PolicyNotifier notifier;
+ protected PolicyStatusService policyStatusService;
+
+ @Mock
+ protected PolicyAuditService policyAuditService;
+ @Mock
+ protected ToscaServiceTemplateService toscaService;
+
+ @Mock
+ protected PolicyNotifier notifier;
/**
* Used to capture input to dao.updatePdpGroups() and dao.createPdpGroups().
@@ -79,7 +90,6 @@ public class ProviderSuper {
protected Object lockit;
protected PdpModifyRequestMap reqmap;
- protected PolicyModelsProviderFactoryWrapper daofact;
protected ToscaPolicy policy1;
protected PapStatisticsManager statsmanager;
@@ -96,26 +106,35 @@ public class ProviderSuper {
reqmap = mock(PdpModifyRequestMap.class);
lockit = new Object();
- daofact = mock(PolicyModelsProviderFactoryWrapper.class);
policy1 = loadPolicy("policy.json");
statsmanager = mock(PapStatisticsManager.class);
- when(daofact.create()).thenReturn(dao);
-
List<PdpGroup> groups = loadGroups("groups.json");
- when(dao.getFilteredPdpGroups(any())).thenReturn(groups);
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(groups);
- when(dao.createPdpGroups(any())).thenAnswer(answer -> answer.getArgument(0, List.class));
- when(dao.updatePdpGroups(any())).thenAnswer(answer -> answer.getArgument(0, List.class));
+ when(pdpGroupService.createPdpGroups(any())).thenAnswer(answer -> answer.getArgument(0, List.class));
+ when(pdpGroupService.updatePdpGroups(any())).thenAnswer(answer -> answer.getArgument(0, List.class));
Registry.register(PapConstants.REG_PDP_MODIFY_LOCK, lockit);
Registry.register(PapConstants.REG_PDP_MODIFY_MAP, reqmap);
- Registry.register(PapConstants.REG_PAP_DAO_FACTORY, daofact);
- Registry.register(PapConstants.REG_POLICY_NOTIFIER, notifier);
Registry.register(PapConstants.REG_STATISTICS_MANAGER, statsmanager);
}
+ /**
+ * Initialize services to the provider for tests.
+ *
+ * @param prov the provider
+ */
+ public void initialize(ProviderBase prov) {
+ prov.setPdpGroupService(pdpGroupService);
+ prov.setPolicyAuditService(policyAuditService);
+ prov.setPolicyStatusService(policyStatusService);
+ prov.setToscaService(toscaService);
+ prov.setPolicyNotifier(notifier);
+ prov.initialize();
+ }
+
protected void assertGroup(List<PdpGroup> groups, String name) {
PdpGroup group = groups.remove(0);
@@ -138,7 +157,7 @@ public class ProviderSuper {
* @throws Exception if an error occurred
*/
protected List<PdpGroup> getGroupCreates() throws Exception {
- verify(dao).createPdpGroups(updateCaptor.capture());
+ verify(pdpGroupService).createPdpGroups(updateCaptor.capture());
return copyList(updateCaptor.getValue());
}
@@ -150,7 +169,7 @@ public class ProviderSuper {
* @throws Exception if an error occurred
*/
protected List<PdpGroup> getGroupUpdates() throws Exception {
- verify(dao).updatePdpGroups(updateCaptor.capture());
+ verify(pdpGroupService).updatePdpGroups(updateCaptor.capture());
return copyList(updateCaptor.getValue());
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupCreateOrUpdateProvider.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupCreateOrUpdateProvider.java
index 9a0f5702..7666dc2a 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupCreateOrUpdateProvider.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupCreateOrUpdateProvider.java
@@ -1,563 +1,561 @@
-/*
- * ============LICENSE_START=======================================================
- * ONAP PAP
- * ================================================================================
- * Copyright (C) 2019-2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.pap.main.rest;
-
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.TreeMap;
-import javax.ws.rs.core.Response.Status;
-import org.assertj.core.api.Assertions;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pdp.concepts.PdpGroup;
-import org.onap.policy.models.pdp.concepts.PdpGroups;
-import org.onap.policy.models.pdp.concepts.PdpStateChange;
-import org.onap.policy.models.pdp.concepts.PdpSubGroup;
-import org.onap.policy.models.pdp.concepts.PdpUpdate;
-import org.onap.policy.models.pdp.enums.PdpState;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.pap.main.PapConstants;
-
-public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
- private static final String EXPECTED_EXCEPTION = "expected exception";
-
- private static final String PDP2 = "pdpB";
- private static final String PDP4 = "pdpD";
-
- private PdpGroupCreateOrUpdateProvider prov;
-
- @AfterClass
- public static void tearDownAfterClass() {
- Registry.newRegistry();
- }
-
- /**
- * Configures mocks and objects.
- *
- * @throws Exception if an error occurs
- */
- @Before
- @Override
- public void setUp() throws Exception {
-
- super.setUp();
-
- when(dao.getPolicyTypeList("typeA", "100.2.3")).thenReturn(Arrays.asList(loadPolicyType("daoPolicyType.json")));
-
- prov = new PdpGroupCreateOrUpdateProvider();
- prov.initialize();
- }
-
- @Test
- public void testCreateOrUpdateGroups() throws Exception {
- prov.createOrUpdateGroups(loadPdpGroups("emptyGroups.json"));
-
- // no groups, so no action should have been taken
- assertNoGroupAction();
- }
-
- @Test
- public void testCreateOrUpdateGroups_InvalidRequest() throws Exception {
- assertThatThrownBy(() -> prov.createOrUpdateGroups(new PdpGroups())).isInstanceOf(PfModelException.class)
- .hasMessageContaining("is null");
-
- assertNoGroupAction();
- }
-
- @Test
- public void testCreateOrUpdate_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
- public void testAddGroup() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup group = groups.getGroups().get(0);
- group.setPdpGroupState(PdpState.PASSIVE);
-
- prov.createOrUpdateGroups(groups);
-
- // should not have updated the state
- assertEquals(PdpState.PASSIVE, group.getPdpGroupState());
-
- assertSame(group, getGroupCreates().get(0));
- }
-
- @Test
- public 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
- public void testAddGroup_InvalidSubGroup() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
-
- groups.getGroups().get(0).getPdpSubgroups().get(0).getSupportedPolicyTypes().get(0).setVersion("99.99.99");
-
- assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
- .hasMessageContaining("unknown policy type");
-
- assertNoGroupAction();
- }
-
- @Test
- public void testValidateGroupOnly_NullState() {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- groups.getGroups().get(0).setPdpGroupState(null);
- Assertions.assertThatCode(() -> prov.createOrUpdateGroups(groups)).doesNotThrowAnyException();
- }
-
- @Test
- public void testValidateGroupOnly_Active() {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- groups.getGroups().get(0).setPdpGroupState(PdpState.ACTIVE);
- Assertions.assertThatCode(() -> prov.createOrUpdateGroups(groups)).doesNotThrowAnyException();
- }
-
- @Test
- public void testValidateGroupOnly_Passive() {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- groups.getGroups().get(0).setPdpGroupState(PdpState.PASSIVE);
- Assertions.assertThatCode(() -> prov.createOrUpdateGroups(groups)).doesNotThrowAnyException();
- }
-
- @Test
- public void testValidateGroupOnly_Invalid() {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- groups.getGroups().get(0).setPdpGroupState(PdpState.TERMINATED);
-
- assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
- .hasMessageContaining("pdpGroupState");
- }
-
- @Test
- public void testUpdateGroup() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
-
- // DB group = new group
- PdpGroup group = new PdpGroup(groups.getGroups().get(0));
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- assertNoGroupAction();
- }
-
- @Test
- public void testUpdateGroup_PropertiesChanged() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
-
- PdpGroup group = new PdpGroup(groups.getGroups().get(0));
- group.setProperties(new TreeMap<>());
-
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
- .hasMessageContaining("properties");
-
- assertNoGroupAction();
- }
-
- @Test
- public void testUpdateGroup_NewDescription() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- group.setDescription("old description");
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- assertGroupUpdateOnly(group);
-
- assertEquals("my description", group.getDescription());
- assertEquals(newgrp.toString(), group.toString());
- }
-
- @Test
- public void testUpdateGroup_NewState() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- group.setPdpGroupState(PdpState.TEST);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- assertGroupUpdateOnly(group);
-
- assertEquals(PdpState.ACTIVE, group.getPdpGroupState());
- assertEquals(newgrp.toString(), group.toString());
- }
-
- @Test
- public void testUpdateGroup_NewSubGroup() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
- PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- PdpGroup newgrp = groups.getGroups().get(0);
- assertEquals(newgrp.toString(), group.toString());
- assertGroupUpdateOnly(group);
- }
-
- @Test
- public void testUpdateGroup_UpdatedSubGroup() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- // something different in this subgroup
- group.getPdpSubgroups().get(0).setDesiredInstanceCount(10);
-
- prov.createOrUpdateGroups(groups);
-
- assertEquals(newgrp.toString(), group.toString());
- assertGroupUpdateOnly(group);
- }
-
- @Test
- public void testUpdateGroup_notifyPdpsDelSubGroups() throws Exception {
- PdpGroup dbgroup = new PdpGroup(loadPdpGroups("createGroupsDelSub.json").getGroups().get(0));
- when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
-
- PdpGroups groups = loadPdpGroups("createGroups.json");
-
- prov.createOrUpdateGroups(groups);
-
- // verify that DB group was updated
- List<PdpGroup> updates = getGroupUpdates();
- assertEquals(1, updates.size());
- dbgroup = updates.get(0);
-
- PdpGroup newgrp = groups.getGroups().get(0);
-
- Collections.sort(newgrp.getPdpSubgroups().get(0).getPolicies());
- Collections.sort(dbgroup.getPdpSubgroups().get(0).getPolicies());
-
- assertEquals(newgrp.toString(), dbgroup.toString());
-
- // no deployment notifications
- checkEmptyNotification();
-
- // this requires a PDP UPDATE message
- List<PdpUpdate> pdpUpdates = getUpdateRequests(2);
- assertEquals(2, pdpUpdates.size());
-
- PdpUpdate pdpUpdate = pdpUpdates.get(0);
- assertEquals(PapConstants.PAP_NAME, pdpUpdate.getSource());
- assertEquals(PDP2, pdpUpdate.getName());
- assertNull(pdpUpdate.getPdpGroup());
-
- pdpUpdate = pdpUpdates.get(1);
- assertEquals(PapConstants.PAP_NAME, pdpUpdate.getSource());
- assertEquals(PDP4, pdpUpdate.getName());
- assertNull(pdpUpdate.getPdpGroup());
-
- // it also requires a PDP STATE-CHANGE message
- List<PdpStateChange> changes = getStateChangeRequests(2);
- assertEquals(2, changes.size());
-
- PdpStateChange change = changes.get(0);
- assertEquals(PapConstants.PAP_NAME, change.getSource());
- assertEquals(PDP2, change.getName());
- assertEquals(PdpState.PASSIVE, change.getState());
-
- change = changes.get(1);
- assertEquals(PapConstants.PAP_NAME, change.getSource());
- assertEquals(PDP4, change.getName());
- assertEquals(PdpState.PASSIVE, change.getState());
- }
-
- @Test
- public void testUpdateField_Unchanged() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- assertNoGroupAction();
- }
-
- @Test
- public void testUpdateField_WasNull() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- group.setDescription(null);
-
- prov.createOrUpdateGroups(groups);
-
- assertEquals(newgrp.toString(), group.toString());
- assertGroupUpdateOnly(group);
- }
-
- @Test
- public void testUpdateField_NowNull() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- newgrp.setDescription(null);
-
- prov.createOrUpdateGroups(groups);
-
- assertEquals(newgrp.toString(), group.toString());
- assertGroupUpdateOnly(group);
- }
-
- @Test
- public void testUpdateField_Changed() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- newgrp.setDescription(group.getDescription() + "-changed");
-
- prov.createOrUpdateGroups(groups);
-
- assertEquals(newgrp.toString(), group.toString());
- assertGroupUpdateOnly(group);
- }
-
- @Test
- public void testAddSubGroup() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
- PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- PdpGroup newgrp = groups.getGroups().get(0);
-
- PdpSubGroup newsub = newgrp.getPdpSubgroups().get(1);
- newsub.setCurrentInstanceCount(0);
- newsub.setPdpInstances(new ArrayList<>(0));
-
- assertEquals(newgrp.toString(), group.toString());
- assertGroupUpdateOnly(group);
- }
-
- /**
- * Tests addSubgroup() when the new subgroup has a wild-card policy type.
- *
- * @throws Exception if an error occurs
- */
- @Test
- public void testAddSubGroupWildCardPolicyType() throws Exception {
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyListWildCard.json"));
- when(dao.getPolicyTypeList("some.*", "2.3.4")).thenReturn(Collections.emptyList());
-
- PdpGroups groups = loadPdpGroups("createGroupsWildCard.json");
- PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- PdpGroup newgrp = groups.getGroups().get(0);
-
- PdpSubGroup newsub = newgrp.getPdpSubgroups().get(1);
- newsub.setCurrentInstanceCount(0);
- newsub.setPdpInstances(new ArrayList<>(0));
-
- assertEquals(newgrp.toString(), group.toString());
- }
-
- @Test
- public void testAddSubGroup_ValidationPolicyTypeNotFound() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
- PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- when(dao.getPolicyTypeList(any(), any())).thenReturn(Collections.emptyList());
-
- assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).hasMessageContaining("unknown policy type");
- }
-
- @Test
- public void testAddSubGroup_ValidationPolicyTypeDaoEx() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
- PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- PfModelException exc = new PfModelException(Status.CONFLICT, EXPECTED_EXCEPTION);
- when(dao.getPolicyTypeList(any(), any())).thenThrow(exc);
-
- assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isSameAs(exc);
- }
-
- @Test
- public void testAddSubGroup_ValidateVersionPrefixMatch() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup dbgroup = new PdpGroup(newgrp);
- when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
-
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
- .thenReturn(loadPolicies("daoPolicyList.json")).thenReturn(loadPolicies("createGroupNewPolicy.json"));
-
- PdpGroups reqgroups = loadPdpGroups("createGroupsVersPrefix.json");
-
- prov.createOrUpdateGroups(reqgroups);
-
- Collections.sort(newgrp.getPdpSubgroups().get(0).getPolicies());
- Collections.sort(dbgroup.getPdpSubgroups().get(0).getPolicies());
-
- assertEquals(newgrp.toString(), dbgroup.toString());
- }
-
- @Test
- public void testUpdateSubGroup_Invalid() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- // change properties
- newgrp.getPdpSubgroups().get(0).setProperties(new TreeMap<>());
-
- assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
- .hasMessageContaining("properties");
-
- assertNoGroupAction();
- }
-
- @Test
- public void testUpdateSubGroup_SupportedPolicies() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- newgrp.getPdpSubgroups().get(0).getSupportedPolicyTypes()
- .add(new ToscaConceptIdentifier("typeX.*", "9.8.7"));
-
- // the group is updated with a new supported policy type in subgroup
- assertEquals(2, newgrp.getPdpSubgroups().get(0).getSupportedPolicyTypes().size());
- prov.createOrUpdateGroups(groups);
- // PdpGroup update doesn't allow supported policy type modifications
- // during pdp group update, the ones in db is maintained
- assertEquals(1, newgrp.getPdpSubgroups().get(0).getSupportedPolicyTypes().size());
- assertEquals(newgrp.toString(), group.toString());
- }
-
- @Test
- public void testUpdateSubGroup_DesiredCount() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- newgrp.getPdpSubgroups().get(0).setDesiredInstanceCount(20);
-
- prov.createOrUpdateGroups(groups);
-
- assertEquals(newgrp.toString(), group.toString());
- assertGroupUpdateOnly(group);
- }
-
- @Test
- public void testUpdateSubGroup_Unchanged() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- prov.createOrUpdateGroups(groups);
-
- Collections.sort(newgrp.getPdpSubgroups().get(0).getPolicies());
- Collections.sort(group.getPdpSubgroups().get(0).getPolicies());
-
- assertEquals(newgrp.toString(), group.toString());
-
- // no notifications
- checkEmptyNotification();
-
- // no group updates
- assertNoGroupAction();
- }
-
- @Test
- public void testValidateSubGroup_PropertiesMismatch() throws Exception {
- PdpGroups groups = loadPdpGroups("createGroups.json");
- PdpGroup newgrp = groups.getGroups().get(0);
- PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
-
- newgrp.setProperties(new TreeMap<>());
-
- assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
- .hasMessageContaining("properties");
-
- assertNoGroupAction();
- }
-
- private void assertNoGroupAction() throws Exception {
- verify(dao, never()).createPdpGroups(any());
- verify(dao, never()).updatePdpGroups(any());
- verify(reqmap, never()).addRequest(any(), any());
- }
-
- private void assertGroupUpdateOnly(PdpGroup group) throws Exception {
- verify(dao, never()).createPdpGroups(any());
- verify(reqmap, never()).addRequest(any(), any());
-
- List<PdpGroup> updates = getGroupUpdates();
- assertEquals(Arrays.asList(group), updates);
- }
-}
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP PAP
+ * ================================================================================
+ * Copyright (C) 2019-2021 Nordix Foundation.
+ * Modifications Copyright (C) 2021 AT&T Intellectual Property.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.pap.main.rest;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.TreeMap;
+import javax.ws.rs.core.Response.Status;
+import org.assertj.core.api.Assertions;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.policy.common.utils.services.Registry;
+import org.onap.policy.models.base.PfModelException;
+import org.onap.policy.models.pdp.concepts.PdpGroup;
+import org.onap.policy.models.pdp.concepts.PdpGroups;
+import org.onap.policy.models.pdp.concepts.PdpStateChange;
+import org.onap.policy.models.pdp.concepts.PdpSubGroup;
+import org.onap.policy.models.pdp.concepts.PdpUpdate;
+import org.onap.policy.models.pdp.enums.PdpState;
+import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
+import org.onap.policy.pap.main.PapConstants;
+
+public class TestPdpGroupCreateOrUpdateProvider extends ProviderSuper {
+ private static final String EXPECTED_EXCEPTION = "expected exception";
+
+ private static final String PDP2 = "pdpB";
+ private static final String PDP4 = "pdpD";
+
+ private PdpGroupCreateOrUpdateProvider prov;
+
+
+
+ @AfterClass
+ public static void tearDownAfterClass() {
+ Registry.newRegistry();
+ }
+
+ /**
+ * Configures mocks and objects.
+ *
+ * @throws Exception if an error occurs
+ */
+ @Before
+ @Override
+ public void setUp() throws Exception { super.setUp();
+ prov = new PdpGroupCreateOrUpdateProvider();
+ super.initialize(prov);
+ when(toscaService.getPolicyTypeList("typeA", "100.2.3"))
+ .thenReturn(Arrays.asList(loadPolicyType("daoPolicyType.json"))); }
+
+ @Test
+ public void testCreateOrUpdateGroups() throws Exception {
+ prov.createOrUpdateGroups(loadPdpGroups("emptyGroups.json"));
+
+ // no groups, so no action should have been taken
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testCreateOrUpdateGroups_InvalidRequest() throws Exception {
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(new PdpGroups())).isInstanceOf(PfModelException.class)
+ .hasMessageContaining("is null");
+
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testCreateOrUpdate_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
+ public void testAddGroup() throws Exception {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+ PdpGroup group = groups.getGroups().get(0);
+ group.setPdpGroupState(PdpState.PASSIVE);
+
+ prov.createOrUpdateGroups(groups);
+
+ // should not have updated the state
+ assertEquals(PdpState.PASSIVE, group.getPdpGroupState());
+
+ assertSame(group, getGroupCreates().get(0));
+ }
+
+ @Test
+ public 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
+ public void testAddGroup_InvalidSubGroup() throws Exception {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+
+ groups.getGroups().get(0).getPdpSubgroups().get(0).getSupportedPolicyTypes().get(0).setVersion("99.99.99");
+
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
+ .hasMessageContaining("unknown policy type");
+
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testValidateGroupOnly_NullState() {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+ groups.getGroups().get(0).setPdpGroupState(null);
+ Assertions.assertThatCode(() -> prov.createOrUpdateGroups(groups)).doesNotThrowAnyException();
+ }
+
+ @Test
+ public void testValidateGroupOnly_Active() {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+ groups.getGroups().get(0).setPdpGroupState(PdpState.ACTIVE);
+ Assertions.assertThatCode(() -> prov.createOrUpdateGroups(groups)).doesNotThrowAnyException();
+ }
+
+ @Test
+ public void testValidateGroupOnly_Passive() {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+ groups.getGroups().get(0).setPdpGroupState(PdpState.PASSIVE);
+ Assertions.assertThatCode(() -> prov.createOrUpdateGroups(groups)).doesNotThrowAnyException();
+ }
+
+ @Test
+ public void testValidateGroupOnly_Invalid() {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+ groups.getGroups().get(0).setPdpGroupState(PdpState.TERMINATED);
+
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
+ .hasMessageContaining("pdpGroupState");
+ }
+
+ @Test
+ public void testUpdateGroup() throws Exception {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+
+ // DB group = new group
+ PdpGroup group = new PdpGroup(groups.getGroups().get(0));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+
+ prov.createOrUpdateGroups(groups);
+
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testUpdateGroup_PropertiesChanged() throws Exception {
+ 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));
+
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
+ .hasMessageContaining("properties");
+
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testUpdateGroup_NewDescription() throws Exception {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+ PdpGroup newgrp = groups.getGroups().get(0);
+ PdpGroup group = new PdpGroup(newgrp);
+ group.setDescription("old description");
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+
+ prov.createOrUpdateGroups(groups);
+
+ assertGroupUpdateOnly(group);
+
+ assertEquals("my description", group.getDescription());
+ assertEquals(newgrp.toString(), group.toString());
+ }
+
+ @Test
+ public void testUpdateGroup_NewState() throws Exception {
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+ PdpGroup newgrp = groups.getGroups().get(0);
+ PdpGroup group = new PdpGroup(newgrp);
+ group.setPdpGroupState(PdpState.TEST);
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+
+ prov.createOrUpdateGroups(groups);
+
+ assertGroupUpdateOnly(group);
+
+ assertEquals(PdpState.ACTIVE, group.getPdpGroupState());
+ assertEquals(newgrp.toString(), group.toString());
+ }
+
+ @Test
+ public 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));
+
+ prov.createOrUpdateGroups(groups);
+
+ PdpGroup newgrp = groups.getGroups().get(0);
+ assertEquals(newgrp.toString(), group.toString());
+ assertGroupUpdateOnly(group);
+ }
+
+ @Test
+ public void testUpdateGroup_UpdatedSubGroup() throws Exception {
+ 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));
+
+ // something different in this subgroup
+ group.getPdpSubgroups().get(0).setDesiredInstanceCount(10);
+
+ prov.createOrUpdateGroups(groups);
+
+ assertEquals(newgrp.toString(), group.toString());
+ assertGroupUpdateOnly(group);
+ }
+
+ @Test
+ public void testUpdateGroup_notifyPdpsDelSubGroups() throws Exception {
+ PdpGroup dbgroup = new PdpGroup(loadPdpGroups("createGroupsDelSub.json").getGroups().get(0));
+ when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+
+ PdpGroups groups = loadPdpGroups("createGroups.json");
+
+ prov.createOrUpdateGroups(groups);
+
+ // verify that DB group was updated
+ List<PdpGroup> updates = getGroupUpdates();
+ assertEquals(1, updates.size());
+ dbgroup = updates.get(0);
+
+ PdpGroup newgrp = groups.getGroups().get(0);
+
+ Collections.sort(newgrp.getPdpSubgroups().get(0).getPolicies());
+ Collections.sort(dbgroup.getPdpSubgroups().get(0).getPolicies());
+
+ assertEquals(newgrp.toString(), dbgroup.toString());
+
+ // no deployment notifications
+ checkEmptyNotification();
+
+ // this requires a PDP UPDATE message
+ List<PdpUpdate> pdpUpdates = getUpdateRequests(2);
+ assertEquals(2, pdpUpdates.size());
+
+ PdpUpdate pdpUpdate = pdpUpdates.get(0);
+ assertEquals(PapConstants.PAP_NAME, pdpUpdate.getSource());
+ assertEquals(PDP2, pdpUpdate.getName());
+ assertNull(pdpUpdate.getPdpGroup());
+
+ pdpUpdate = pdpUpdates.get(1);
+ assertEquals(PapConstants.PAP_NAME, pdpUpdate.getSource());
+ assertEquals(PDP4, pdpUpdate.getName());
+ assertNull(pdpUpdate.getPdpGroup());
+
+ // it also requires a PDP STATE-CHANGE message
+ List<PdpStateChange> changes = getStateChangeRequests(2);
+ assertEquals(2, changes.size());
+
+ PdpStateChange change = changes.get(0);
+ assertEquals(PapConstants.PAP_NAME, change.getSource());
+ assertEquals(PDP2, change.getName());
+ assertEquals(PdpState.PASSIVE, change.getState());
+
+ change = changes.get(1);
+ assertEquals(PapConstants.PAP_NAME, change.getSource());
+ assertEquals(PDP4, change.getName());
+ assertEquals(PdpState.PASSIVE, change.getState());
+ }
+
+ @Test
+ public void testUpdateField_Unchanged() throws Exception {
+ 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));
+
+ prov.createOrUpdateGroups(groups);
+
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testUpdateField_WasNull() throws Exception {
+ 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));
+
+ group.setDescription(null);
+
+ prov.createOrUpdateGroups(groups);
+
+ assertEquals(newgrp.toString(), group.toString());
+ assertGroupUpdateOnly(group);
+ }
+
+ @Test
+ public void testUpdateField_NowNull() throws Exception {
+ 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));
+
+ newgrp.setDescription(null);
+
+ prov.createOrUpdateGroups(groups);
+
+ assertEquals(newgrp.toString(), group.toString());
+ assertGroupUpdateOnly(group);
+ }
+
+ @Test
+ public void testUpdateField_Changed() throws Exception {
+ 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));
+
+ newgrp.setDescription(group.getDescription() + "-changed");
+
+ prov.createOrUpdateGroups(groups);
+
+ assertEquals(newgrp.toString(), group.toString());
+ assertGroupUpdateOnly(group);
+ }
+
+ @Test
+ public 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));
+
+ prov.createOrUpdateGroups(groups);
+
+ PdpGroup newgrp = groups.getGroups().get(0);
+
+ PdpSubGroup newsub = newgrp.getPdpSubgroups().get(1);
+ newsub.setCurrentInstanceCount(0);
+ newsub.setPdpInstances(new ArrayList<>(0));
+
+ assertEquals(newgrp.toString(), group.toString());
+ assertGroupUpdateOnly(group);
+ }
+
+ /**
+ * Tests addSubgroup() when the new subgroup has a wild-card policy type.
+ *
+ * @throws Exception if an error occurs
+ */
+ @Test
+ public void testAddSubGroupWildCardPolicyType() throws Exception {
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyListWildCard.json"));
+ when(toscaService.getPolicyTypeList("some.*", "2.3.4")).thenReturn(Collections.emptyList());
+
+ PdpGroups groups = loadPdpGroups("createGroupsWildCard.json");
+ PdpGroup group = loadPdpGroups("createGroups.json").getGroups().get(0);
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+
+ prov.createOrUpdateGroups(groups);
+
+ PdpGroup newgrp = groups.getGroups().get(0);
+
+ PdpSubGroup newsub = newgrp.getPdpSubgroups().get(1);
+ newsub.setCurrentInstanceCount(0);
+ newsub.setPdpInstances(new ArrayList<>(0));
+
+ assertEquals(newgrp.toString(), group.toString());
+ }
+
+ @Test
+ public 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(toscaService.getPolicyTypeList(any(), any())).thenReturn(Collections.emptyList());
+
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).hasMessageContaining("unknown policy type");
+ }
+
+ @Test
+ public 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));
+
+ PfModelException exc = new PfModelException(Status.CONFLICT, EXPECTED_EXCEPTION);
+ when(toscaService.getPolicyTypeList(any(), any())).thenThrow(exc);
+
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isSameAs(exc);
+ }
+
+ @Test
+ public void testAddSubGroup_ValidateVersionPrefixMatch() throws Exception {
+ 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(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
+ .thenReturn(loadPolicies("daoPolicyList.json")).thenReturn(loadPolicies("createGroupNewPolicy.json"));
+
+ PdpGroups reqgroups = loadPdpGroups("createGroupsVersPrefix.json");
+
+ prov.createOrUpdateGroups(reqgroups);
+
+ Collections.sort(newgrp.getPdpSubgroups().get(0).getPolicies());
+ Collections.sort(dbgroup.getPdpSubgroups().get(0).getPolicies());
+
+ assertEquals(newgrp.toString(), dbgroup.toString());
+ }
+
+ @Test
+ public void testUpdateSubGroup_Invalid() throws Exception {
+ 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));
+
+ // change properties
+ newgrp.getPdpSubgroups().get(0).setProperties(new TreeMap<>());
+
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
+ .hasMessageContaining("properties");
+
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testUpdateSubGroup_SupportedPolicies() throws Exception {
+ 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));
+
+ newgrp.getPdpSubgroups().get(0).getSupportedPolicyTypes()
+ .add(new ToscaConceptIdentifier("typeX.*", "9.8.7"));
+
+ // the group is updated with a new supported policy type in subgroup
+ assertEquals(2, newgrp.getPdpSubgroups().get(0).getSupportedPolicyTypes().size());
+ prov.createOrUpdateGroups(groups);
+ // PdpGroup update doesn't allow supported policy type modifications
+ // during pdp group update, the ones in db is maintained
+ assertEquals(1, newgrp.getPdpSubgroups().get(0).getSupportedPolicyTypes().size());
+ assertEquals(newgrp.toString(), group.toString());
+ }
+
+ @Test
+ public void testUpdateSubGroup_DesiredCount() throws Exception {
+ 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));
+
+ newgrp.getPdpSubgroups().get(0).setDesiredInstanceCount(20);
+
+ prov.createOrUpdateGroups(groups);
+
+ assertEquals(newgrp.toString(), group.toString());
+ assertGroupUpdateOnly(group);
+ }
+
+ @Test
+ public void testUpdateSubGroup_Unchanged() throws Exception {
+ 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));
+
+ prov.createOrUpdateGroups(groups);
+
+ Collections.sort(newgrp.getPdpSubgroups().get(0).getPolicies());
+ Collections.sort(group.getPdpSubgroups().get(0).getPolicies());
+
+ assertEquals(newgrp.toString(), group.toString());
+
+ // no notifications
+ checkEmptyNotification();
+
+ // no group updates
+ assertNoGroupAction();
+ }
+
+ @Test
+ public void testValidateSubGroup_PropertiesMismatch() throws Exception {
+ 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));
+
+ newgrp.setProperties(new TreeMap<>());
+
+ assertThatThrownBy(() -> prov.createOrUpdateGroups(groups)).isInstanceOf(PfModelException.class)
+ .hasMessageContaining("properties");
+
+ assertNoGroupAction();
+ }
+
+ private void assertNoGroupAction() throws Exception {
+ verify(pdpGroupService, never()).createPdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
+ verify(reqmap, never()).addRequest(any(), any());
+ }
+
+ private void assertGroupUpdateOnly(PdpGroup group) throws Exception {
+ verify(pdpGroupService, never()).createPdpGroups(any());
+ verify(reqmap, never()).addRequest(any(), any());
+
+ List<PdpGroup> updates = getGroupUpdates();
+ assertEquals(Arrays.asList(group), updates);
+ }
+}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteProvider.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteProvider.java
index 3e9eda8a..449d48f2 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteProvider.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeleteProvider.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020-2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -47,6 +47,7 @@ import org.mockito.Captor;
import org.mockito.Mock;
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.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
@@ -84,14 +85,14 @@ public class TestPdpGroupDeleteProvider extends ProviderSuper {
@Before
@Override
public void setUp() throws Exception {
-
super.setUp();
+ prov = new MyProvider();
+ super.initialize(prov);
ident = policy1.getIdentifier();
optIdent = new ToscaConceptIdentifierOptVersion(ident.getName(), null);
fullIdent = new ToscaConceptIdentifierOptVersion(ident.getName(), ident.getVersion());
- prov = new MyProvider();
updater = prov.makeUpdater(session, policy1, fullIdent);
}
@@ -144,12 +145,12 @@ public class TestPdpGroupDeleteProvider extends ProviderSuper {
}
@Test
- public void testDeleteGroup_DaoEx() throws Exception {
+ public void testDeleteGroup_Ex() throws Exception {
PdpGroup group = loadGroup("deleteGroup.json");
when(session.getGroup(GROUP1_NAME)).thenReturn(group);
- PfModelException ex = new PfModelException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
+ PfModelRuntimeException ex = new PfModelRuntimeException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
doThrow(ex).when(session).deleteGroupFromDb(group);
assertThatThrownBy(() -> prov.deleteGroup(GROUP1_NAME)).isSameAs(ex);
@@ -162,15 +163,15 @@ public class TestPdpGroupDeleteProvider extends ProviderSuper {
*/
@Test
public void testUndeploy_Full() throws Exception {
- when(dao.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
PdpGroup group = loadGroup("undeploy.json");
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group));
- when(dao.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
PdpGroupDeleteProvider deleteProvider = new PdpGroupDeleteProvider();
- deleteProvider.initialize();
+ super.initialize(deleteProvider);
deleteProvider.undeploy(fullIdent, DEFAULT_USER);
// should have updated the old group
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployProvider.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployProvider.java
index 28e515f3..29c06f76 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployProvider.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupDeployProvider.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2022 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -89,12 +89,12 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
public void setUp() throws Exception {
super.setUp();
-
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList2.json"));
- when(dao.getPolicyTypeList("typeA", "100.2.3")).thenReturn(Arrays.asList(loadPolicyType("daoPolicyType.json")));
-
prov = new PdpGroupDeployProvider();
- prov.initialize();
+ super.initialize(prov);
+
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList2.json"));
+ when(toscaService.getPolicyTypeList("typeA", "100.2.3"))
+ .thenReturn(Arrays.asList(loadPolicyType("daoPolicyType.json")));
}
/**
@@ -105,14 +105,14 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroups groups = loadPdpGroups("deployGroups.json");
PdpGroup newgrp = groups.getGroups().get(0);
PdpGroup dbgroup = new PdpGroup(newgrp);
- when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+ when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
// add new policies
List<ToscaConceptIdentifier> policies = newgrp.getPdpSubgroups().get(0).getPolicies();
policies.add(new ToscaConceptIdentifier(POLICY2_NAME, POLICY2_VERSION));
policies.add(new ToscaConceptIdentifier(POLICY3_NAME, POLICY3_VERSION));
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
.thenReturn(loadPolicies("createGroupNewPolicy2.json")).thenReturn(loadPolicies("daoPolicyList.json"));
// add = POST
@@ -139,12 +139,12 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
policies.add(new ToscaConceptIdentifier(POLICY3_NAME, POLICY3_VERSION));
PdpGroup dbgroup = new PdpGroup(newgrp);
- when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+ when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
// policy that should be left
final ToscaConceptIdentifier policyId1 = policies.remove(0);
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
.thenReturn(loadPolicies("createGroupNewPolicy2.json")).thenReturn(loadPolicies("daoPolicyList.json"));
DeploymentGroups depgroups = toDeploymentGroups(groups);
@@ -173,7 +173,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
// put policy3 into db subgroup
subgrp.getPolicies().add(new ToscaConceptIdentifier(POLICY3_NAME, POLICY3_VERSION));
PdpGroup dbgroup = new PdpGroup(newgrp);
- when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+ when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
// now make the subgrp reflect our final expectation
subgrp.getPolicies().remove(1);
@@ -197,7 +197,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
DeploymentGroups depgroups = new DeploymentGroups();
depgroups.setGroups(Arrays.asList(depgroup));
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
.thenReturn(loadPolicies("daoPolicyList.json")).thenReturn(loadPolicies("createGroupNewPolicy2.json"));
prov.updateGroupPolicies(depgroups, DEFAULT_USER);
@@ -211,7 +211,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroups groups = loadPdpGroups("deployGroups.json");
PdpGroup newgrp = groups.getGroups().get(0);
PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
// something different in this subgroup
group.getPdpSubgroups().get(0).getPolicies().add(new ToscaConceptIdentifier(POLICY2_NAME, POLICY2_VERSION));
@@ -245,7 +245,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
String groupName = groups.getGroups().get(0).getName();
// group not found
- when(dao.getPdpGroups(groupName)).thenReturn(Collections.emptyList());
+ when(pdpGroupService.getPdpGroups(groupName)).thenReturn(Collections.emptyList());
assertThatThrownBy(() -> prov.updateGroupPolicies(toDeploymentGroups(groups), DEFAULT_USER))
.isInstanceOf(PfModelException.class).hasMessageContaining(groupName)
@@ -260,7 +260,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
// DB group = new group
PdpGroup group = new PdpGroup(groups.getGroups().get(0));
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
prov.updateGroupPolicies(toDeploymentGroups(groups), DEFAULT_USER);
@@ -271,7 +271,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
public void testUpdateGroup_NewSubGroup() throws Exception {
PdpGroups groups = loadPdpGroups("createGroupsNewSub.json");
PdpGroup group = loadPdpGroups("deployGroups.json").getGroups().get(0);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
assertThatThrownBy(() -> prov.updateGroupPolicies(toDeploymentGroups(groups), DEFAULT_USER))
.isInstanceOf(PfModelException.class).hasMessageContaining("pdpTypeB")
@@ -285,7 +285,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroups groups = loadPdpGroups("deployGroups.json");
PdpGroup newgrp = groups.getGroups().get(0);
PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
// something different in this subgroup
group.getPdpSubgroups().get(0).getPolicies().add(new ToscaConceptIdentifier(POLICY2_NAME, POLICY2_VERSION));
@@ -304,10 +304,10 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
// group has no policies yet
group.getPdpSubgroups().get(0).getPolicies().clear();
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
// unknown policy
- when(dao.getFilteredPolicyList(any())).thenReturn(Collections.emptyList());
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Collections.emptyList());
assertThatThrownBy(() -> prov.updateGroupPolicies(toDeploymentGroups(groups), DEFAULT_USER))
.isInstanceOf(PfModelException.class)
@@ -329,7 +329,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
newgrp.getPdpSubgroups().add(subgrp2);
PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
// add two new policies
ToscaConceptIdentifier policyId2 = new ToscaConceptIdentifier(POLICY2_NAME, POLICY2_VERSION);
@@ -338,7 +338,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
ToscaConceptIdentifier policyId3 = new ToscaConceptIdentifier(POLICY3_NAME, POLICY3_VERSION);
subgrp.getPolicies().add(policyId3);
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("createGroupNewPolicy.json"))
.thenReturn(loadPolicies("createGroupNewPolicy2.json")).thenReturn(loadPolicies("daoPolicyList.json"));
prov.updateGroupPolicies(toDeploymentGroups(groups), DEFAULT_USER);
@@ -361,7 +361,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroup newgrp = groups.getGroups().get(0);
PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
// use version prefix
PdpSubGroup subgrp = newgrp.getPdpSubgroups().get(0);
@@ -388,7 +388,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroup newgrp = groups.getGroups().get(0);
PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
// use incorrect version prefix
newgrp.getPdpSubgroups().get(0).getPolicies().get(0).setVersion("9");
@@ -404,7 +404,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroups dbgroups = loadPdpGroups("deployGroups.json");
PdpGroup newgrp = dbgroups.getGroups().get(0);
PdpGroup group = new PdpGroup(newgrp);
- when(dao.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
+ when(pdpGroupService.getPdpGroups(group.getName())).thenReturn(Arrays.asList(group));
prov.updateGroupPolicies(toDeploymentGroups(dbgroups), DEFAULT_USER);
@@ -425,13 +425,13 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroups dbgroups = loadPdpGroups("deployGroups.json");
PdpGroup newgrp = dbgroups.getGroups().get(0);
PdpGroup dbgroup = new PdpGroup(newgrp);
- when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+ when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
// arrange for DB policy version to be different
PdpSubGroup dbsubgrp = dbgroup.getPdpSubgroups().get(0);
dbsubgrp.getPolicies().get(0).setVersion("9.9.9");
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
assertThatThrownBy(() -> prov.updateGroupPolicies(toDeploymentGroups(dbgroups), DEFAULT_USER))
.isInstanceOf(PfModelException.class).hasMessageContaining("different version already deployed");
@@ -444,7 +444,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PdpGroups dbgroups = loadPdpGroups("deployGroups.json");
PdpGroup newgrp = dbgroups.getGroups().get(0);
PdpGroup dbgroup = new PdpGroup(newgrp);
- when(dao.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
+ when(pdpGroupService.getPdpGroups(dbgroup.getName())).thenReturn(Arrays.asList(dbgroup));
final DeploymentGroups groups = toDeploymentGroups(dbgroups);
@@ -456,7 +456,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
// DB has a different supported type
dbsubgrp.getSupportedPolicyTypes().get(0).setName("some-other-type");
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
assertThatThrownBy(() -> prov.updateGroupPolicies(groups, DEFAULT_USER)).isInstanceOf(PfModelException.class)
.hasMessageContaining(newgrp.getPdpSubgroups().get(0).getPolicies().get(0).getName())
@@ -515,9 +515,9 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
*/
@Test
public void testDeployPoliciesWildCard() throws Exception {
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("deployPoliciesWildCard.json"));
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyListWildCard.json"));
- when(dao.getPolicyTypeList(any(), any())).thenReturn(Collections.emptyList());
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("deployPoliciesWildCard.json"));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyListWildCard.json"));
+ when(toscaService.getPolicyTypeList(any(), any())).thenReturn(Collections.emptyList());
policy1.setName("policy.some");
policy1.setVersion(POLICY1_VERSION);
@@ -544,17 +544,9 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
}
@Test
- public void testDeploySimplePolicies_DaoEx() throws Exception {
- PfModelException exc = new PfModelException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
- when(dao.getFilteredPdpGroups(any())).thenThrow(exc);
-
- assertThatThrownBy(() -> prov.deployPolicies(loadRequest(), DEFAULT_USER)).isSameAs(exc);
- }
-
- @Test
- public void testDeploySimplePolicies_DaoPfRtEx() throws Exception {
+ public void testDeploySimplePolicies_PfRtEx() throws Exception {
PfModelRuntimeException exc = new PfModelRuntimeException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
- when(dao.getFilteredPdpGroups(any())).thenThrow(exc);
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenThrow(exc);
assertThatThrownBy(() -> prov.deployPolicies(loadRequest(), DEFAULT_USER)).isSameAs(exc);
}
@@ -562,7 +554,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
@Test
public void testDeploySimplePolicies_RuntimeEx() throws Exception {
RuntimeException exc = new RuntimeException(EXPECTED_EXCEPTION);
- when(dao.getFilteredPolicyList(any())).thenThrow(exc);
+ when(toscaService.getFilteredPolicyList(any())).thenThrow(exc);
assertThatThrownBy(() -> prov.deployPolicies(loadRequest(), DEFAULT_USER)).isInstanceOf(PfModelException.class)
.hasCause(exc);
@@ -570,7 +562,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
@Test
public void testDeploySimplePolicies_NoGroups() throws Exception {
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("emptyGroups.json"));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("emptyGroups.json"));
assertThatThrownBy(() -> prov.deployPolicies(loadRequest(), DEFAULT_USER)).isInstanceOf(PfModelException.class)
.hasMessage("policy not supported by any PDP group: policyA 1.2.3");
@@ -587,9 +579,9 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
PapStatisticsManager mgr = new PapStatisticsManager();
Registry.register(PapConstants.REG_STATISTICS_MANAGER, mgr);
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("deployPoliciesWildCard.json"));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("deployPoliciesWildCard.json"));
prov.deployPolicies(loadRequest("multiple_requests.json"), DEFAULT_USER);
- assertEquals(mgr.getTotalPolicyDeployCount(), 3);
+ assertEquals(3, mgr.getTotalPolicyDeployCount());
Registry.unregister(PapConstants.REG_STATISTICS_MANAGER);
Registry.register(PapConstants.REG_STATISTICS_MANAGER, statsmanager);
@@ -609,7 +601,7 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
* Last subgroup matches.
*/
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroupDao.json"));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroupDao.json"));
prov.deployPolicies(loadRequest(), DEFAULT_USER);
@@ -627,14 +619,14 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
public void testMakeUpdater_PolicyVersionMismatch() throws Exception {
// subgroup has a different version of the Policy
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroupDao_DiffVers.json"));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroupDao_DiffVers.json"));
PdpDeployPolicies req = loadRequest();
assertThatThrownBy(() -> prov.deployPolicies(req, DEFAULT_USER)).isInstanceOf(PfModelRuntimeException.class)
.hasMessageContaining("pdpTypeC").hasMessageContaining("different version already deployed");
- verify(dao, never()).createPdpGroups(any());
- verify(dao, never()).updatePdpGroups(any());
+ verify(pdpGroupService, never()).createPdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
verify(reqmap, never()).addRequest(any(PdpUpdate.class));
}
@@ -642,14 +634,14 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
public void testMakeUpdater_NoPdps() throws Exception {
// subgroup has no PDPs
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroup_NoPdpsDao.json"));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroup_NoPdpsDao.json"));
PdpDeployPolicies req = loadRequest();
assertThatThrownBy(() -> prov.deployPolicies(req, DEFAULT_USER)).isInstanceOf(PfModelRuntimeException.class)
.hasMessage("group " + GROUP1_NAME + " subgroup " + PDP1_TYPE + " has no active PDPs");
- verify(dao, never()).createPdpGroups(any());
- verify(dao, never()).updatePdpGroups(any());
+ verify(pdpGroupService, never()).createPdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
verify(reqmap, never()).addRequest(any(PdpUpdate.class));
}
@@ -664,13 +656,13 @@ public class TestPdpGroupDeployProvider extends ProviderSuper {
}
private void assertNoGroupAction() throws Exception {
- verify(dao, never()).createPdpGroups(any());
- verify(dao, never()).updatePdpGroups(any());
+ verify(pdpGroupService, never()).createPdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
verify(reqmap, never()).addRequest(any(), any());
}
private void assertGroupUpdate(PdpGroup group, PdpSubGroup subgrp) throws Exception {
- verify(dao, never()).createPdpGroups(any());
+ verify(pdpGroupService, never()).createPdpGroups(any());
assertEquals(0, getStateChangeRequests(1).size());
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupHealthCheckProvider.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupHealthCheckProvider.java
index b236c56b..0040beae 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupHealthCheckProvider.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPdpGroupHealthCheckProvider.java
@@ -1,7 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
- * Modifications Copyright (C) 2020-2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020-2022 Bell Canada. All rights reserved.
* Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,8 +23,6 @@
package org.onap.policy.pap.main.rest;
import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.File;
@@ -45,9 +43,7 @@ import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpSubGroup;
import org.onap.policy.models.pdp.concepts.Pdps;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
+import org.onap.policy.pap.main.service.PdpGroupService;
import org.springframework.http.HttpStatus;
/**
@@ -59,8 +55,7 @@ import org.springframework.http.HttpStatus;
public class TestPdpGroupHealthCheckProvider {
@Mock
- private PolicyModelsProvider dao;
- private PolicyModelsProviderFactoryWrapper daofact;
+ private PdpGroupService pdpGroupService;
private List<PdpGroup> groups;
private Coder coder = new StandardCoder();
@@ -71,19 +66,14 @@ public class TestPdpGroupHealthCheckProvider {
public void setUp() throws Exception {
Registry.newRegistry();
- daofact = mock(PolicyModelsProviderFactoryWrapper.class);
- when(daofact.create()).thenReturn(dao);
-
groups = loadFile("pdpGroup.json").getGroups();
- when(dao.getPdpGroups(any())).thenReturn(groups);
-
- Registry.register(PapConstants.REG_PAP_DAO_FACTORY, daofact);
+ when(pdpGroupService.getPdpGroups()).thenReturn(groups);
}
@Test
public void testFetchPdpGroupHealthStatus() throws Exception {
- final PdpGroupHealthCheckProvider provider = new PdpGroupHealthCheckProvider();
+ final PdpGroupHealthCheckProvider provider = new PdpGroupHealthCheckProvider(pdpGroupService);
final Pair<HttpStatus, Pdps> pair = provider.fetchPdpGroupHealthStatus();
assertEquals(HttpStatus.OK, pair.getLeft());
verifyPdps(pair.getRight().getPdpList(), groups);
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditManager.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditManager.java
index b33c0ef6..4f844fbc 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditManager.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditManager.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -52,7 +53,7 @@ public class TestPolicyAuditManager extends ProviderSuper {
@Before
public void setUp() throws Exception {
super.setUp();
- auditManager = new PolicyAuditManager(dao);
+ auditManager = new PolicyAuditManager(policyAuditService);
}
@AfterClass
@@ -88,7 +89,7 @@ public class TestPolicyAuditManager extends ProviderSuper {
assertThat(auditManager.getAuditRecords()).hasSize(1);
- doThrow(PfModelRuntimeException.class).when(dao).createAuditRecords(any());
+ doThrow(PfModelRuntimeException.class).when(policyAuditService).createAuditRecords(any());
auditManager.saveRecordsToDb();
assertThat(auditManager.getAuditRecords()).isNotEmpty();
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditProvider.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditProvider.java
deleted file mode 100644
index 51bea02a..00000000
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyAuditProvider.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2021 Bell Canada. All rights reserved.
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.pap.main.rest;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.when;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.List;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.pap.concepts.PolicyAudit;
-import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
-import org.onap.policy.models.pap.persistence.provider.PolicyAuditProvider.AuditFilter;
-import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-
-public class TestPolicyAuditProvider extends ProviderSuper {
- private static final String TEST_GROUP = "testGroup";
- private static final String TEST_PDP_TYPE = "testPdpType";
- private static final ToscaConceptIdentifier POLICY_A = new ToscaConceptIdentifier("PolicyA", "1.0.0");
- private static final ToscaConceptIdentifier POLICY_B = new ToscaConceptIdentifier("PolicyB", "2.0.0");
-
- private PolicyAuditProvider provider;
-
- @AfterClass
- public static void tearDownAfterClass() {
- Registry.newRegistry();
- }
-
- @Override
- @Before
- public void setUp() throws Exception {
-
- super.setUp();
- provider = new PolicyAuditProvider();
- provider.initialize();
- }
-
- @Test
- public void testGetAuditRecords() throws PfModelException {
-
- AuditFilter auditFilter = AuditFilter.builder().recordNum(5).fromDate(null).toDate(null).build();
-
- buildAuditRecords(auditFilter);
-
- List<PolicyAudit> result = new ArrayList<>(provider.getAuditRecords(auditFilter));
- validateAuditRecords(result, 2);
- }
-
- private void buildAuditRecords(AuditFilter auditFilter) {
- PolicyAudit audit1 = PolicyAudit.builder().auditId(123L).pdpGroup(TEST_GROUP).pdpType(TEST_PDP_TYPE)
- .policy(POLICY_A).action(AuditAction.DEPLOYMENT).timestamp(Instant.now()).user(DEFAULT_USER)
- .build();
-
- PolicyAudit audit2 = PolicyAudit.builder().auditId(456L).pdpGroup(TEST_GROUP).pdpType(TEST_PDP_TYPE)
- .policy(POLICY_B).action(AuditAction.UNDEPLOYMENT).timestamp(Instant.now()).user(DEFAULT_USER)
- .build();
-
- if (auditFilter.getName() == null) {
- when(dao.getAuditRecords(auditFilter)).thenReturn(List.of(audit1, audit2));
- } else {
- when(dao.getAuditRecords(auditFilter)).thenReturn(List.of(audit1));
- }
-
- }
-
- private void validateAuditRecords(List<PolicyAudit> result, int count) {
- assertThat(result).hasSize(count);
- for (PolicyAudit audit : result) {
- if (audit.getAuditId() == 123L) {
- assertThat(audit.getPdpGroup()).isEqualTo(TEST_GROUP);
- assertThat(audit.getPdpType()).isEqualTo(TEST_PDP_TYPE);
- assertThat(audit.getPolicy()).isEqualTo(POLICY_A);
- assertThat(audit.getAction()).isEqualTo(AuditAction.DEPLOYMENT);
- assertThat(audit.getUser()).isEqualTo(DEFAULT_USER);
- } else if (audit.getAuditId() == 456L) {
- assertThat(audit.getPdpGroup()).isEqualTo(TEST_GROUP);
- assertThat(audit.getPdpType()).isEqualTo(TEST_PDP_TYPE);
- assertThat(audit.getPolicy()).isEqualTo(POLICY_B);
- assertThat(audit.getAction()).isEqualTo(AuditAction.UNDEPLOYMENT);
- assertThat(audit.getUser()).isEqualTo(DEFAULT_USER);
- }
- }
- }
-}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyComponentsHealthCheckProvider.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyComponentsHealthCheckProvider.java
index 13deef40..04d4cf91 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyComponentsHealthCheckProvider.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyComponentsHealthCheckProvider.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2020 Nordix Foundation.
* Modifications Copyright (C) 2020-2021 AT&T Corp.
- * Modifications Copyright (C) 2020-2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2020-2022 Bell Canada. All rights reserved.
* ================================================================================
* 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 static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import java.io.File;
@@ -55,11 +54,10 @@ import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.enums.PdpHealthStatus;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
import org.onap.policy.pap.main.parameters.CommonTestData;
import org.onap.policy.pap.main.parameters.PapParameterGroup;
+import org.onap.policy.pap.main.service.PdpGroupService;
import org.onap.policy.pap.main.startstop.PapActivator;
import org.springframework.http.HttpStatus;
import org.springframework.test.util.ReflectionTestUtils;
@@ -73,10 +71,7 @@ public class TestPolicyComponentsHealthCheckProvider {
private static final String HEALTHY = "healthy";
@Mock
- private PolicyModelsProvider dao;
-
- @Mock
- private PolicyModelsProviderFactoryWrapper daofact;
+ private PdpGroupService pdpGroupService;
@Mock
private HttpClientFactory clientFactory;
@@ -116,11 +111,9 @@ public class TestPolicyComponentsHealthCheckProvider {
@Before
public void setUp() throws Exception {
groups = loadPdpGroupsFromFile().getGroups();
- when(dao.getPdpGroups(any())).thenReturn(groups);
+ when(pdpGroupService.getPdpGroups()).thenReturn(groups);
- when(daofact.create()).thenReturn(dao);
Registry.newRegistry();
- Registry.register(PapConstants.REG_PAP_DAO_FACTORY, daofact);
when(papActivator.isAlive()).thenReturn(true);
Registry.register(PapConstants.REG_PAP_ACTIVATOR, papActivator);
@@ -153,7 +146,7 @@ public class TestPolicyComponentsHealthCheckProvider {
clients.add(client2);
clients.add(client3);
PapParameterGroup papParameterGroup = ParameterService.get(PAP_GROUP_PARAMS_NAME);
- provider = new PolicyComponentsHealthCheckProvider();
+ provider = new PolicyComponentsHealthCheckProvider(papParameterGroup, pdpGroupService);
ReflectionTestUtils.setField(provider, "papParameterGroup", papParameterGroup);
provider.initializeClientHealthCheckExecutorService();
ReflectionTestUtils.setField(provider, "clients", clients);
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyStatusProvider.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyStatusProvider.java
index 8f09b7e3..1f2c08ed 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyStatusProvider.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestPolicyStatusProvider.java
@@ -3,7 +3,7 @@
* ONAP
* ================================================================================
* Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -59,7 +59,6 @@ public class TestPolicyStatusProvider extends ProviderSuper {
private PolicyStatusProvider prov;
-
@AfterClass
public static void tearDownAfterClass() {
Registry.newRegistry();
@@ -76,8 +75,7 @@ public class TestPolicyStatusProvider extends ProviderSuper {
super.setUp();
- prov = new PolicyStatusProvider();
- prov.initialize();
+ prov = new PolicyStatusProvider(policyStatusService);
}
@Test
@@ -242,7 +240,7 @@ public class TestPolicyStatusProvider extends ProviderSuper {
builder.deploy(true);
// @formatter:off
- when(dao.getAllPolicyStatus()).thenReturn(List.of(
+ when(policyStatusService.getAllPolicyStatus()).thenReturn(List.of(
builder.policy(POLICY_A).pdpId(PDP_A).build(),
builder.policy(POLICY_A).pdpId(PDP_B).build(),
notDeployed,
@@ -264,7 +262,7 @@ public class TestPolicyStatusProvider extends ProviderSuper {
ToscaConceptIdentifierOptVersion optIdent = new ToscaConceptIdentifierOptVersion(POLICY_A);
// @formatter:off
- when(dao.getAllPolicyStatus(optIdent)).thenReturn(List.of(
+ when(policyStatusService.getAllPolicyStatus(optIdent)).thenReturn(List.of(
builder.policy(POLICY_A).pdpId(PDP_A).build(),
notDeployed,
builder.policy(POLICY_A).pdpId(PDP_C).build()
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestProviderBase.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestProviderBase.java
index 5046181c..434863b5 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestProviderBase.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestProviderBase.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -71,7 +71,6 @@ public class TestProviderBase extends ProviderSuper {
private MyProvider prov;
-
@AfterClass
public static void tearDownAfterClass() {
Registry.newRegistry();
@@ -85,20 +84,16 @@ public class TestProviderBase extends ProviderSuper {
@Override
@Before
public void setUp() throws Exception {
-
super.setUp();
-
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
-
prov = new MyProvider();
- prov.initialize();
+ super.initialize(prov);
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"));
}
@Test
public void testProviderBase() {
assertSame(lockit, Whitebox.getInternalState(prov, "updateLock"));
assertSame(reqmap, Whitebox.getInternalState(prov, "requestMap"));
- assertSame(daofact, Whitebox.getInternalState(prov, "daoFactory"));
}
@Test
@@ -113,17 +108,9 @@ public class TestProviderBase extends ProviderSuper {
}
@Test
- public void testProcess_CreateEx() throws Exception {
- PfModelException ex = new PfModelException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
- when(daofact.create()).thenThrow(ex);
-
- assertThatThrownBy(() -> prov.process(loadEmptyRequest(), this::handle)).isSameAs(ex);
- }
-
- @Test
public void testProcess_PfRtEx() throws Exception {
PfModelRuntimeException ex = new PfModelRuntimeException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
- when(daofact.create()).thenThrow(ex);
+ when(pdpGroupService.updatePdpGroups(any())).thenThrow(ex);
assertThatThrownBy(() -> prov.process(loadEmptyRequest(), this::handle)).isSameAs(ex);
}
@@ -131,7 +118,7 @@ public class TestProviderBase extends ProviderSuper {
@Test
public void testProcess_RuntimeEx() throws Exception {
RuntimeException ex = new RuntimeException(EXPECTED_EXCEPTION);
- when(daofact.create()).thenThrow(ex);
+ when(pdpGroupService.updatePdpGroups(any())).thenThrow(ex);
assertThatThrownBy(() -> prov.process(loadEmptyRequest(), this::handle)).isInstanceOf(PfModelException.class)
.hasMessage("request failed").hasCause(ex);
@@ -139,19 +126,20 @@ public class TestProviderBase extends ProviderSuper {
@Test
public void testProcessPolicy_NoGroups() throws Exception {
- when(dao.getFilteredPdpGroups(any())).thenReturn(Collections.emptyList());
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Collections.emptyList());
- SessionData session = new SessionData(dao, DEFAULT_USER);
+ SessionData session =
+ new SessionData(DEFAULT_USER, toscaService, pdpGroupService, policyStatusService, policyAuditService);
ToscaConceptIdentifierOptVersion ident = new ToscaConceptIdentifierOptVersion(POLICY1_NAME, POLICY1_VERSION);
assertThatThrownBy(() -> prov.processPolicy(session, ident)).isInstanceOf(PfModelException.class)
- .hasMessage("policy not supported by any PDP group: policyA 1.2.3");
+ .hasMessage("policy not supported by any PDP group: policyA 1.2.3");
}
@Test
public void testGetPolicy() throws Exception {
PfModelException exc = new PfModelException(Status.CONFLICT, EXPECTED_EXCEPTION);
- when(dao.getFilteredPolicyList(any())).thenThrow(exc);
+ when(toscaService.getFilteredPolicyList(any())).thenThrow(exc);
ToscaConceptIdentifierOptVersion req = loadRequest();
assertThatThrownBy(() -> prov.process(req, this::handle)).isInstanceOf(PfModelRuntimeException.class)
@@ -160,7 +148,7 @@ public class TestProviderBase extends ProviderSuper {
@Test
public void testGetPolicy_NotFound() throws Exception {
- when(dao.getFilteredPolicyList(any())).thenReturn(Collections.emptyList());
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Collections.emptyList());
ToscaConceptIdentifierOptVersion req = loadRequest();
assertThatThrownBy(() -> prov.process(req, this::handle)).isInstanceOf(PfModelRuntimeException.class)
@@ -171,7 +159,7 @@ public class TestProviderBase extends ProviderSuper {
@Test
public void testGetGroup() throws Exception {
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("getGroupDao.json"))
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("getGroupDao.json"))
.thenReturn(loadGroups("groups.json"));
prov.process(loadRequest(), this::handle);
@@ -193,7 +181,7 @@ public class TestProviderBase extends ProviderSuper {
* Last subgroup matches.
*/
- when(dao.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroupDao.json"));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(loadGroups("upgradeGroupDao.json"));
prov.clear();
prov.add(false, true, false, true);
@@ -225,7 +213,7 @@ public class TestProviderBase extends ProviderSuper {
* Should generate updates to pdp1, pdp2, and pdp3.
*/
- when(dao.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"))
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(loadPolicies("daoPolicyList.json"))
.thenReturn(loadPolicies("upgradeGroupPolicy2.json"))
.thenReturn(loadPolicies("upgradeGroupPolicy3.json"))
.thenReturn(loadPolicies("upgradeGroupPolicy4.json"));
@@ -238,7 +226,7 @@ public class TestProviderBase extends ProviderSuper {
* request
*/
// @formatter:off
- when(dao.getFilteredPdpGroups(any()))
+ when(pdpGroupService.getFilteredPdpGroups(any()))
.thenReturn(groups1).thenReturn(groups1)
.thenReturn(groups2).thenReturn(groups2)
.thenReturn(groups1).thenReturn(groups1)
@@ -272,8 +260,8 @@ public class TestProviderBase extends ProviderSuper {
prov.process(loadRequest(), this::handle);
- verify(dao, never()).createPdpGroups(any());
- verify(dao, never()).updatePdpGroups(any());
+ verify(pdpGroupService, never()).createPdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
verify(reqmap, never()).addRequest(any(PdpUpdate.class));
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/TestSessionData.java b/main/src/test/java/org/onap/policy/pap/main/rest/TestSessionData.java
index 952a861d..ec79c03a 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/TestSessionData.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/TestSessionData.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -55,13 +56,13 @@ import org.onap.policy.models.pap.concepts.PolicyNotification;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpStateChange;
import org.onap.policy.models.pdp.concepts.PdpUpdate;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy;
import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyType;
import org.onap.policy.models.tosca.authorative.concepts.ToscaTypedEntityFilter;
import org.onap.policy.pap.main.notification.DeploymentStatus;
+import org.onap.policy.pap.main.service.PolicyStatusService;
public class TestSessionData extends ProviderSuper {
private static final String GROUP_NAME = "groupA";
@@ -99,13 +100,13 @@ public class TestSessionData extends ProviderSuper {
group1 = loadGroup("group1.json");
group2 = loadGroup("group2.json");
- session = new SessionData(dao, DEFAULT_USER);
+ session = new SessionData(DEFAULT_USER, toscaService, pdpGroupService, policyStatusService, policyAuditService);
}
@Test
public void testGetPolicyType() throws Exception {
ToscaPolicyType policy1 = makePolicyType(POLICY_TYPE, POLICY_TYPE_VERSION);
- when(dao.getPolicyTypeList(POLICY_TYPE, POLICY_TYPE_VERSION)).thenReturn(Arrays.asList(policy1));
+ when(toscaService.getPolicyTypeList(POLICY_TYPE, POLICY_TYPE_VERSION)).thenReturn(Arrays.asList(policy1));
assertSame(policy1, session.getPolicyType(type));
@@ -115,7 +116,7 @@ public class TestSessionData extends ProviderSuper {
@Test
public void testGetPolicyType_NotFound() throws Exception {
- when(dao.getPolicyTypeList(any(), any())).thenReturn(Collections.emptyList());
+ when(toscaService.getPolicyTypeList(any(), any())).thenReturn(Collections.emptyList());
assertNull(session.getPolicyType(type));
}
@@ -123,7 +124,7 @@ public class TestSessionData extends ProviderSuper {
@Test
public void testGetPolicyType_DaoEx() throws Exception {
PfModelException ex = new PfModelException(Status.INTERNAL_SERVER_ERROR, EXPECTED_EXCEPTION);
- when(dao.getPolicyTypeList(POLICY_TYPE, POLICY_TYPE_VERSION)).thenThrow(ex);
+ when(toscaService.getPolicyTypeList(POLICY_TYPE, POLICY_TYPE_VERSION)).thenThrow(ex);
assertThatThrownBy(() -> session.getPolicyType(type)).isSameAs(ex);
}
@@ -131,7 +132,7 @@ public class TestSessionData extends ProviderSuper {
@Test
public void testGetPolicy_NullVersion() throws Exception {
ToscaPolicy policy1 = makePolicy(POLICY_NAME, POLICY_VERSION);
- when(dao.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
ident.setVersion(null);
assertSame(policy1, session.getPolicy(ident));
@@ -143,13 +144,13 @@ public class TestSessionData extends ProviderSuper {
// retrieve a second time using full version - should use cache
assertSame(policy1, session.getPolicy(new ToscaConceptIdentifierOptVersion(policy1.getIdentifier())));
- verify(dao).getFilteredPolicyList(any());
+ verify(toscaService).getFilteredPolicyList(any());
}
@Test
public void testGetPolicy_MajorVersion() throws Exception {
ToscaPolicy policy1 = makePolicy(POLICY_NAME, POLICY_VERSION);
- when(dao.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
ident.setVersion("1");
assertSame(policy1, session.getPolicy(ident));
@@ -161,13 +162,13 @@ public class TestSessionData extends ProviderSuper {
// retrieve a second time using full version - should use cache
assertSame(policy1, session.getPolicy(new ToscaConceptIdentifierOptVersion(policy1.getIdentifier())));
- verify(dao).getFilteredPolicyList(any());
+ verify(toscaService).getFilteredPolicyList(any());
}
@Test
public void testGetPolicy_MajorMinorVersion() throws Exception {
ToscaPolicy policy1 = makePolicy(POLICY_NAME, POLICY_VERSION);
- when(dao.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy1));
ident.setVersion(POLICY_VERSION);
assertSame(policy1, session.getPolicy(ident));
@@ -179,12 +180,12 @@ public class TestSessionData extends ProviderSuper {
// retrieve a second time using full version - should use cache
assertSame(policy1, session.getPolicy(new ToscaConceptIdentifierOptVersion(policy1.getIdentifier())));
- verify(dao).getFilteredPolicyList(any());
+ verify(toscaService).getFilteredPolicyList(any());
}
@Test
public void testGetPolicy_NotFound() throws Exception {
- when(dao.getFilteredPolicyList(any())).thenReturn(Collections.emptyList());
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Collections.emptyList());
assertNull(session.getPolicy(ident));
}
@@ -192,7 +193,7 @@ public class TestSessionData extends ProviderSuper {
@Test
public void testGetPolicy_DaoEx() throws Exception {
PfModelException ex = new PfModelException(Status.INTERNAL_SERVER_ERROR, EXPECTED_EXCEPTION);
- when(dao.getFilteredPolicyList(any())).thenThrow(ex);
+ when(toscaService.getFilteredPolicyList(any())).thenThrow(ex);
assertThatThrownBy(() -> session.getPolicy(ident)).isSameAs(ex);
}
@@ -364,13 +365,13 @@ public class TestSessionData extends ProviderSuper {
assertTrue(session.isUnchanged());
// force the groups into the cache
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1, group2));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1, group2));
session.getActivePdpGroupsByPolicyType(type);
/*
* try group 1
*/
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1));
PdpGroup newgrp = new PdpGroup(group1);
session.update(newgrp);
assertFalse(session.isUnchanged());
@@ -383,7 +384,7 @@ public class TestSessionData extends ProviderSuper {
/*
* try group 2
*/
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group2));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group2));
newgrp = new PdpGroup(group2);
session.update(newgrp);
assertFalse(session.isUnchanged());
@@ -396,7 +397,7 @@ public class TestSessionData extends ProviderSuper {
@Test
public void testUpdate_NotInCache() throws Exception {
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1));
assertThatIllegalStateException().isThrownBy(() -> session.update(new PdpGroup(group1)))
.withMessage("group not cached: groupA");
@@ -404,49 +405,41 @@ public class TestSessionData extends ProviderSuper {
@Test
public void testGetGroup() throws Exception {
- when(dao.getPdpGroups(GROUP_NAME)).thenReturn(Arrays.asList(group1));
+ when(pdpGroupService.getPdpGroups(GROUP_NAME)).thenReturn(Arrays.asList(group1));
assertSame(group1, session.getGroup(GROUP_NAME));
- verify(dao).getPdpGroups(any());
+ verify(pdpGroupService).getPdpGroups(any(String.class));
// repeat
assertSame(group1, session.getGroup(GROUP_NAME));
// should not access dao again
- verify(dao, times(1)).getPdpGroups(any());
+ verify(pdpGroupService, times(1)).getPdpGroups(any(String.class));
}
@Test
public void testGetGroup_NotFound() throws Exception {
- when(dao.getPdpGroups(GROUP_NAME)).thenReturn(Collections.emptyList());
+ when(pdpGroupService.getPdpGroups(GROUP_NAME)).thenReturn(Collections.emptyList());
assertNull(session.getGroup(GROUP_NAME));
- verify(dao).getPdpGroups(any());
+ verify(pdpGroupService).getPdpGroups(any(String.class));
// repeat
assertNull(session.getGroup(GROUP_NAME));
// SHOULD access dao again
- verify(dao, times(2)).getPdpGroups(GROUP_NAME);
+ verify(pdpGroupService, times(2)).getPdpGroups(GROUP_NAME);
// find it this time
- when(dao.getPdpGroups(GROUP_NAME)).thenReturn(Arrays.asList(group1));
+ when(pdpGroupService.getPdpGroups(GROUP_NAME)).thenReturn(Arrays.asList(group1));
assertSame(group1, session.getGroup(GROUP_NAME));
- verify(dao, times(3)).getPdpGroups(GROUP_NAME);
- }
-
- @Test
- public void testGetGroup_DaoEx() throws Exception {
- PfModelException ex = new PfModelException(Status.BAD_REQUEST, EXPECTED_EXCEPTION);
- when(dao.getPdpGroups(GROUP_NAME)).thenThrow(ex);
-
- assertThatThrownBy(() -> session.getGroup(GROUP_NAME)).isSameAs(ex);
+ verify(pdpGroupService, times(3)).getPdpGroups(GROUP_NAME);
}
@Test
public void testGetActivePdpGroupsByPolicyType() throws Exception {
List<PdpGroup> groups = Arrays.asList(group1, group2);
- when(dao.getFilteredPdpGroups(any())).thenReturn(groups);
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(groups);
// repeat
assertEquals(groups, session.getActivePdpGroupsByPolicyType(type));
@@ -454,32 +447,32 @@ public class TestSessionData extends ProviderSuper {
assertEquals(groups, session.getActivePdpGroupsByPolicyType(type));
// only invoked once - should have used the cache for the rest
- verify(dao, times(1)).getFilteredPdpGroups(any());
+ verify(pdpGroupService, times(1)).getFilteredPdpGroups(any());
}
@Test
public void testAddGroup() throws Exception {
List<PdpGroup> groups = Arrays.asList(group1, group2);
- when(dao.getFilteredPdpGroups(any())).thenReturn(groups);
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(groups);
// query by each type
assertEquals(groups, session.getActivePdpGroupsByPolicyType(type));
assertEquals(groups, session.getActivePdpGroupsByPolicyType(type2));
// invoked once for each type
- verify(dao, times(2)).getFilteredPdpGroups(any());
+ verify(pdpGroupService, times(2)).getFilteredPdpGroups(any());
// repeat - should be no more invocations
assertEquals(groups, session.getActivePdpGroupsByPolicyType(type));
assertEquals(groups, session.getActivePdpGroupsByPolicyType(type2));
- verify(dao, times(2)).getFilteredPdpGroups(any());
+ verify(pdpGroupService, times(2)).getFilteredPdpGroups(any());
}
@Test
public void testUpdateDb() throws Exception {
// force the groups into the cache
PdpGroup group3 = loadGroup("group3.json");
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1, group2, group3));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1, group2, group3));
session.getActivePdpGroupsByPolicyType(type);
// create groups 4 & 5
@@ -490,7 +483,7 @@ public class TestSessionData extends ProviderSuper {
session.create(group5);
// update group 1
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1));
PdpGroup newgrp1 = new PdpGroup(group1);
session.update(newgrp1);
@@ -499,12 +492,12 @@ public class TestSessionData extends ProviderSuper {
session.update(newgrp1);
// update group 3
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group3));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group3));
PdpGroup newgrp3 = new PdpGroup(group3);
session.update(newgrp3);
// update group 5
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group5));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group5));
PdpGroup newgrp5 = new PdpGroup(group5);
session.update(newgrp5);
@@ -529,22 +522,22 @@ public class TestSessionData extends ProviderSuper {
@Test
public void testUpdateDb_Empty() throws Exception {
// force data into the cache
- when(dao.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1, group2));
+ when(pdpGroupService.getFilteredPdpGroups(any())).thenReturn(Arrays.asList(group1, group2));
session.getActivePdpGroupsByPolicyType(type);
PolicyNotification notif = new PolicyNotification();
session.updateDb(notif);
assertThat(notif.getAdded()).isEmpty();
- verify(dao, never()).createPdpGroups(any());
- verify(dao, never()).updatePdpGroups(any());
+ verify(pdpGroupService, never()).createPdpGroups(any());
+ verify(pdpGroupService, never()).updatePdpGroups(any());
}
@Test
public void testDeleteGroupFromDb() throws Exception {
session.deleteGroupFromDb(group1);
- verify(dao).deletePdpGroup(group1.getName());
+ verify(pdpGroupService).deletePdpGroup(group1.getName());
}
@Test
@@ -561,18 +554,19 @@ public class TestSessionData extends ProviderSuper {
DeploymentStatus status = mock(DeploymentStatus.class);
- session = new SessionData(dao, DEFAULT_USER) {
- @Override
- protected DeploymentStatus makeDeploymentStatus(PolicyModelsProvider dao) {
- return status;
- }
- };
+ session =
+ new SessionData(DEFAULT_USER, toscaService, pdpGroupService, policyStatusService, policyAuditService) {
+ @Override
+ protected DeploymentStatus makeDeploymentStatus(PolicyStatusService policyStatusService) {
+ return status;
+ }
+ };
ToscaPolicy policy = makePolicy(POLICY_NAME, POLICY_VERSION);
policy.setType(POLICY_TYPE);
policy.setTypeVersion(POLICY_TYPE_VERSION);
- when(dao.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy));
+ when(toscaService.getFilteredPolicyList(any())).thenReturn(Arrays.asList(policy));
ToscaConceptIdentifier policyId = new ToscaConceptIdentifier(POLICY_NAME, POLICY_VERSION);
List<String> pdps = Arrays.asList(PDP1, PDP2);
@@ -617,7 +611,7 @@ public class TestSessionData extends ProviderSuper {
@SuppressWarnings("unchecked")
ArgumentCaptor<ToscaTypedEntityFilter<ToscaPolicy>> captor =
ArgumentCaptor.forClass(ToscaTypedEntityFilter.class);
- verify(dao).getFilteredPolicyList(captor.capture());
+ verify(toscaService).getFilteredPolicyList(captor.capture());
return captor.getValue();
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/End2EndBase.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/End2EndBase.java
index e51aa776..9c9f36ad 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/End2EndBase.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/End2EndBase.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2019-2020 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,28 +27,32 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
import org.onap.policy.common.parameters.ValidationResult;
import org.onap.policy.common.utils.coder.Coder;
import org.onap.policy.common.utils.coder.CoderException;
import org.onap.policy.common.utils.coder.StandardCoder;
import org.onap.policy.common.utils.resources.ResourceUtils;
+import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfModelException;
import org.onap.policy.models.pdp.concepts.PdpGroup;
import org.onap.policy.models.pdp.concepts.PdpGroups;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
-import org.onap.policy.models.pdp.persistence.provider.PdpFilterParameters;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
+import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate;
import org.onap.policy.pap.main.PolicyPapRuntimeException;
-import org.onap.policy.pap.main.parameters.PapParameterGroup;
+import org.onap.policy.pap.main.repository.ToscaServiceTemplateRepository;
import org.onap.policy.pap.main.rest.CommonPapRestServer;
+import org.onap.policy.pap.main.service.PdpGroupService;
+import org.onap.policy.pap.main.service.PdpStatisticsService;
+import org.onap.policy.pap.main.service.PolicyStatusService;
+import org.onap.policy.pap.main.service.ToscaServiceTemplateService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
import org.yaml.snakeyaml.Yaml;
public abstract class End2EndBase extends CommonPapRestServer {
@@ -58,53 +62,24 @@ public abstract class End2EndBase extends CommonPapRestServer {
private static final Yaml yaml = new Yaml();
/**
- * DB connection. This is kept open until {@link #stop()} is invoked so that the in-memory DB is not destroyed.
- */
- private static PolicyModelsProvider dbConn;
-
- /**
- * DAO provider factory.
- */
- private static PolicyModelsProviderFactoryWrapper daoFactory;
-
- /**
* Context - should be initialized by setUp() method.
*/
protected End2EndContext context = null;
+ @Autowired
+ public PdpGroupService pdpGroupService;
- /**
- * Starts Main and connects to the DB.
- *
- * @throws Exception if an error occurs
- */
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- CommonPapRestServer.setUpBeforeClass();
-
- final PapParameterGroup params = new StandardCoder().decode(new File(CONFIG_FILE), PapParameterGroup.class);
- daoFactory = new PolicyModelsProviderFactoryWrapper(params.getDatabaseProviderParameters());
- dbConn = daoFactory.create();
- }
+ @Autowired
+ public PdpStatisticsService pdpStatisticsService;
- /**
- * Tears down.
- */
- @AfterClass
- public static void tearDownAfterClass() {
- try {
- dbConn.close();
- } catch (final PfModelException e) {
- logger.warn("failed to close the DB", e);
- }
+ @Autowired
+ private ToscaServiceTemplateRepository serviceTemplateRepository;
- try {
- daoFactory.close();
- } catch (final Exception e) {
- logger.warn("failed to close DAO factory", e);
- }
+ @Autowired
+ public PolicyStatusService policyStatusService;
- }
+ @Autowired
+ public ToscaServiceTemplateService toscaService;
/**
* Tears down.
@@ -130,9 +105,10 @@ public abstract class End2EndBase extends CommonPapRestServer {
* @param yamlFile name of the YAML file specifying the data to be loaded
* @throws PfModelException if a DAO error occurs
*/
- public static void addToscaPolicyTypes(final String yamlFile) throws PfModelException {
+ public void addToscaPolicyTypes(final String yamlFile) throws PfModelException {
final ToscaServiceTemplate serviceTemplate = loadYamlFile(yamlFile, ToscaServiceTemplate.class);
- dbConn.createPolicyTypes(serviceTemplate);
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = mergeWithExistingTemplate(serviceTemplate);
+ serviceTemplateRepository.save(jpaToscaServiceTemplate);
}
/**
@@ -141,9 +117,30 @@ public abstract class End2EndBase extends CommonPapRestServer {
* @param yamlFile name of the YAML file specifying the data to be loaded
* @throws PfModelException if a DAO error occurs
*/
- public static void addToscaPolicies(final String yamlFile) throws PfModelException {
+ public void addToscaPolicies(final String yamlFile) throws PfModelException {
final ToscaServiceTemplate serviceTemplate = loadYamlFile(yamlFile, ToscaServiceTemplate.class);
- dbConn.createPolicies(serviceTemplate);
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = mergeWithExistingTemplate(serviceTemplate);
+ serviceTemplateRepository.save(jpaToscaServiceTemplate);
+ }
+
+ private JpaToscaServiceTemplate mergeWithExistingTemplate(ToscaServiceTemplate serviceTemplate) {
+ JpaToscaServiceTemplate jpaToscaServiceTemplate = new JpaToscaServiceTemplate(serviceTemplate);
+ Optional<JpaToscaServiceTemplate> dbServiceTemplateOpt = serviceTemplateRepository
+ .findById(new PfConceptKey(JpaToscaServiceTemplate.DEFAULT_NAME, JpaToscaServiceTemplate.DEFAULT_VERSION));
+ if (!dbServiceTemplateOpt.isEmpty()) {
+ JpaToscaServiceTemplate dbServiceTemplate = dbServiceTemplateOpt.get();
+ if (dbServiceTemplate.getPolicyTypes() != null) {
+ jpaToscaServiceTemplate.setPolicyTypes(dbServiceTemplate.getPolicyTypes());
+ }
+ if (dbServiceTemplate.getDataTypes() != null) {
+ jpaToscaServiceTemplate.setDataTypes(dbServiceTemplate.getDataTypes());
+ }
+ if (dbServiceTemplate.getTopologyTemplate() != null) {
+ jpaToscaServiceTemplate.setTopologyTemplate(dbServiceTemplate.getTopologyTemplate());
+ }
+ }
+
+ return jpaToscaServiceTemplate;
}
/**
@@ -152,7 +149,7 @@ public abstract class End2EndBase extends CommonPapRestServer {
* @param jsonFile name of the JSON file specifying the data to be loaded
* @throws PfModelException if a DAO error occurs
*/
- public static void addGroups(final String jsonFile) throws PfModelException {
+ public void addGroups(final String jsonFile) throws PfModelException {
final PdpGroups groups = loadJsonFile(jsonFile, PdpGroups.class);
final ValidationResult result = groups.validatePapRest();
@@ -160,7 +157,7 @@ public abstract class End2EndBase extends CommonPapRestServer {
throw new PolicyPapRuntimeException("cannot init DB groups from " + jsonFile + ":\n" + result.getResult());
}
- dbConn.createPdpGroups(groups.getGroups());
+ pdpGroupService.createPdpGroups(groups.getGroups());
}
/**
@@ -169,8 +166,8 @@ public abstract class End2EndBase extends CommonPapRestServer {
* @param name name of the pdpGroup
* @throws PfModelException if a DAO error occurs
*/
- public static List<PdpGroup> fetchGroups(final String name) throws PfModelException {
- return dbConn.getPdpGroups(name);
+ public List<PdpGroup> fetchGroups(final String name) throws PfModelException {
+ return pdpGroupService.getPdpGroups(name);
}
/**
@@ -181,10 +178,9 @@ public abstract class End2EndBase extends CommonPapRestServer {
* @param subGroupName name of the pdpSubGroup
* @throws PfModelException if a DAO error occurs
*/
- public static List<PdpStatistics> fetchPdpStatistics(final String instanceId, final String groupName,
- final String subGroupName) throws PfModelException {
- return dbConn.getFilteredPdpStatistics(
- PdpFilterParameters.builder().name(instanceId).group(groupName).subGroup(subGroupName).build());
+ public Map<String, Map<String, List<PdpStatistics>>> fetchPdpStatistics(final String instanceId,
+ final String groupName, final String subGroupName) throws PfModelException {
+ return pdpStatisticsService.fetchDatabaseStatistics(groupName, subGroupName, instanceId, 100, null, null);
}
/**
@@ -193,9 +189,9 @@ public abstract class End2EndBase extends CommonPapRestServer {
* @param jsonFile name of the JSON file specifying the data to be loaded
* @throws PfModelException if a DAO error occurs
*/
- public static void addPdpPolicyStatus(final String jsonFile) throws PfModelException {
+ public void addPdpPolicyStatus(final String jsonFile) throws PfModelException {
final PolicyStatusRecords data = loadJsonFile(jsonFile, PolicyStatusRecords.class);
- dbConn.cudPolicyStatus(data.records, null, null);
+ policyStatusService.cudPolicyStatus(data.records, null, null);
}
/**
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupCreateOrUpdateTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupCreateOrUpdateTest.java
index dacee672..3f763863 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupCreateOrUpdateTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupCreateOrUpdateTest.java
@@ -3,6 +3,7 @@
* ONAP PAP
* ================================================================================
* Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,7 +32,6 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.junit.After;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.onap.policy.models.pap.concepts.PdpGroupUpdateResponse;
import org.onap.policy.models.pdp.concepts.PdpGroup;
@@ -49,23 +49,12 @@ public class PdpGroupCreateOrUpdateTest extends End2EndBase {
private static final String GROUP_ENDPOINT = "pdps";
/**
- * Starts Main and adds policies to the DB.
- *
- * @throws Exception if an error occurs
- */
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- End2EndBase.setUpBeforeClass();
-
- addToscaPolicyTypes("monitoring.policy-type.yaml");
- }
-
- /**
* Sets up.
*/
@Override
@Before
public void setUp() throws Exception {
+ addToscaPolicyTypes("monitoring.policy-type.yaml");
super.setUp();
context = new End2EndContext();
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeleteTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeleteTest.java
index 9b80bb7e..e3ad0044 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeleteTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeleteTest.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -33,7 +33,6 @@ import java.util.concurrent.TimeUnit;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.Response;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicFactories;
import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSink;
@@ -52,24 +51,13 @@ public class PdpGroupDeleteTest extends End2EndBase {
private static final String DELETE_POLICIES_ENDPOINT = "pdps/policies";
/**
- * Starts Main and adds policies to the DB.
- *
- * @throws Exception if an error occurs
- */
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- End2EndBase.setUpBeforeClass();
-
- addToscaPolicyTypes("monitoring.policy-type.yaml");
- addToscaPolicies("monitoring.policy.yaml");
- }
-
- /**
* Sets up.
*/
@Override
@Before
public void setUp() throws Exception {
+ addToscaPolicyTypes("monitoring.policy-type.yaml");
+ addToscaPolicies("monitoring.policy.yaml");
super.setUp();
context = new End2EndContext();
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeployTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeployTest.java
index 08974ed8..cdb1fa9d 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeployTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupDeployTest.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,7 +36,6 @@ import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicFactories;
import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSink;
@@ -59,24 +58,13 @@ public class PdpGroupDeployTest extends End2EndBase {
private static final String DEPLOY_SUBGROUP = "pdpTypeA";
/**
- * Starts Main and adds policies to the DB.
- *
- * @throws Exception if an error occurs
- */
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- End2EndBase.setUpBeforeClass();
-
- addToscaPolicyTypes("monitoring.policy-type.yaml");
- addToscaPolicies("monitoring.policy.yaml");
- }
-
- /**
* Sets up.
*/
@Override
@Before
public void setUp() throws Exception {
+ addToscaPolicyTypes("monitoring.policy-type.yaml");
+ addToscaPolicies("monitoring.policy.yaml");
super.setUp();
context = new End2EndContext();
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupQueryTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupQueryTest.java
index a0a40ce5..d6472ce1 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupQueryTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupQueryTest.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,7 +33,7 @@ import java.util.function.Predicate;
import java.util.stream.Collectors;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.Response;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
import org.onap.policy.models.pdp.concepts.Pdp;
import org.onap.policy.models.pdp.concepts.PdpGroup;
@@ -46,18 +47,19 @@ public class PdpGroupQueryTest extends End2EndBase {
private static final String GROUP_ENDPOINT = "pdps";
/**
- * Starts Main and adds policies to the DB.
+ * Sets up.
*
- * @throws Exception if an error occurs
+ * @throws Exception the exception
*/
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- End2EndBase.setUpBeforeClass();
+ @Override
+ @Before
+ public void setUp() throws Exception {
addToscaPolicyTypes("monitoring.policy-type.yaml");
addToscaPolicies("monitoring.policy.yaml");
addGroups("queryGroup.json");
+ super.setUp();
}
@Test
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupStateChangeTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupStateChangeTest.java
index df7fcc01..2fa7cfb4 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupStateChangeTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PdpGroupStateChangeTest.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2021 Nordix Foundation.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,7 +31,6 @@ import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.Response;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.onap.policy.models.pap.concepts.PdpGroupStateChangeResponse;
import org.onap.policy.models.pdp.concepts.PdpStatus;
@@ -47,24 +47,13 @@ public class PdpGroupStateChangeTest extends End2EndBase {
private static final String GROUP_ENDPOINT = "pdps/groups";
/**
- * Starts Main and adds policies to the DB.
- *
- * @throws Exception if an error occurs
- */
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- End2EndBase.setUpBeforeClass();
-
- addToscaPolicyTypes("monitoring.policy-type.yaml");
- addToscaPolicies("monitoring.policy.yaml");
- }
-
- /**
* Sets up.
*/
@Override
@Before
public void setUp() throws Exception {
+ addToscaPolicyTypes("monitoring.policy-type.yaml");
+ addToscaPolicies("monitoring.policy.yaml");
super.setUp();
context = new End2EndContext();
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyAuditTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyAuditTest.java
index d98a4ba3..b0a135d2 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyAuditTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyAuditTest.java
@@ -1,6 +1,6 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,18 +26,17 @@ import java.util.List;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-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.PolicyAudit;
import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
-import org.onap.policy.models.provider.PolicyModelsProvider;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
-import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
+import org.onap.policy.pap.main.repository.PolicyAuditRepository;
import org.onap.policy.pap.main.rest.PolicyAuditControllerV1;
+import org.onap.policy.pap.main.service.PolicyAuditService;
+import org.springframework.beans.factory.annotation.Autowired;
public class PolicyAuditTest extends End2EndBase {
private static final String TEST_GROUP = "testGroup";
@@ -54,6 +53,12 @@ public class PolicyAuditTest extends End2EndBase {
private static int BAD_REQUEST_STATUS_CODE = 400;
private static final String BAD_REQUEST_MSG = "NumberFormatException For";
+ @Autowired
+ private PolicyAuditService policyAuditService;
+
+ @Autowired
+ private PolicyAuditRepository policyAuditRepository;
+
@Override
@Before
public void setUp() throws Exception {
@@ -61,23 +66,31 @@ public class PolicyAuditTest extends End2EndBase {
setupEnv();
}
+ /**
+ * Teardown after tests.
+ */
+ @Override
+ @After
+ public void tearDown() {
+ policyAuditRepository.deleteAll();
+ super.tearDown();
+ }
+
private void setupEnv() {
List<PolicyAudit> recordList = new ArrayList<>();
Instant auditRecordTime = Instant.ofEpochSecond(1627392315L);
- PolicyModelsProviderFactoryWrapper modelProviderWrapper =
- Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- PolicyAudit audit1 = PolicyAudit.builder().auditId(123L).pdpGroup(TEST_GROUP).pdpType(TEST_PDP_TYPE)
+ try {
+ PolicyAudit audit1 = PolicyAudit.builder().pdpGroup(TEST_GROUP).pdpType(TEST_PDP_TYPE)
.policy(POLICY_A).action(AuditAction.DEPLOYMENT)
.timestamp(auditRecordTime).user(DEFAULT_USER).build();
- PolicyAudit audit2 = PolicyAudit.builder().auditId(456L).pdpGroup(TEST_GROUP).pdpType(TEST_PDP_TYPE)
+ PolicyAudit audit2 = PolicyAudit.builder().pdpGroup(TEST_GROUP).pdpType(TEST_PDP_TYPE)
.policy(POLICY_B).action(AuditAction.UNDEPLOYMENT)
.timestamp(auditRecordTime).user(DEFAULT_USER).build();
recordList.add(audit1);
recordList.add(audit2);
- databaseProvider.createAuditRecords(recordList);
- } catch (final PfModelException exp) {
+ policyAuditService.createAuditRecords(recordList);
+ } catch (Exception exp) {
throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, exp.getMessage());
}
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyStatusTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyStatusTest.java
index b44d4af7..121318f5 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyStatusTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/PolicyStatusTest.java
@@ -3,7 +3,7 @@
* ONAP PAP
* ================================================================================
* Copyright (C) 2019, 2021 AT&T Intellectual Property. All rights reserved.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,7 +28,7 @@ import java.util.List;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
import org.onap.policy.models.pap.concepts.PolicyStatus;
import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
@@ -41,15 +41,11 @@ public class PolicyStatusTest extends End2EndBase {
private static final String POLICY_STATUS_ENDPOINT = "policies/deployed";
private static final String POLICY_DEPLOYMENT_STATUS_ENDPOINT = "policies/status";
- /**
- * Starts Main and adds policies to the DB.
- *
- * @throws Exception if an error occurs
- */
- @BeforeClass
- public static void setUpBeforeClass() throws Exception {
- End2EndBase.setUpBeforeClass();
+ @Override
+ @Before
+ public void setUp() throws Exception {
addPdpPolicyStatus("policyStatus.json");
+ super.setUp();
}
@Test
diff --git a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/StatisticsTest.java b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/StatisticsTest.java
index 1331e458..876ea0fb 100644
--- a/main/src/test/java/org/onap/policy/pap/main/rest/e2e/StatisticsTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/rest/e2e/StatisticsTest.java
@@ -4,7 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2020-2021 Nordix Foundation.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -32,17 +32,12 @@ import java.util.Map;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
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.pdp.concepts.PdpStatistics;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.models.provider.PolicyModelsProviderFactory;
import org.onap.policy.pap.main.PapConstants;
-import org.onap.policy.pap.main.parameters.CommonTestData;
-import org.onap.policy.pap.main.parameters.PapParameterGroup;
import org.onap.policy.pap.main.rest.PapStatisticsManager;
import org.onap.policy.pap.main.rest.StatisticsReport;
@@ -52,6 +47,7 @@ public class StatisticsTest extends End2EndBase {
private static final String START_TIME_NAME = "startTime";
private static final long TIMESTAMP_SEC = 1562494272;
+ private static PdpStatistics pdpStatisticsRecord;
/**
* Adds a record to the DB.
@@ -60,25 +56,24 @@ public class StatisticsTest extends End2EndBase {
public static void setUpBeforeClass() throws Exception {
End2EndBase.setUpBeforeClass();
- PolicyModelsProviderFactory modelProviderWrapper = new PolicyModelsProviderFactory();
- PapParameterGroup parameterGroup = new CommonTestData().getPapParameterGroup(6969);
- try (PolicyModelsProvider databaseProvider =
- modelProviderWrapper.createPolicyModelsProvider(parameterGroup.getDatabaseProviderParameters())) {
- PdpStatistics pdpStatisticsRecord = new PdpStatistics();
- pdpStatisticsRecord.setPdpGroupName("defaultGroup");
- pdpStatisticsRecord.setPdpSubGroupName("apex");
- pdpStatisticsRecord.setPdpInstanceId("pdp1");
- pdpStatisticsRecord.setTimeStamp(Instant.ofEpochSecond(TIMESTAMP_SEC));
- pdpStatisticsRecord.setPolicyDeployCount(1);
- pdpStatisticsRecord.setPolicyDeployFailCount(0);
- pdpStatisticsRecord.setPolicyDeploySuccessCount(1);
- pdpStatisticsRecord.setPolicyExecutedCount(1);
- pdpStatisticsRecord.setPolicyExecutedFailCount(0);
- pdpStatisticsRecord.setPolicyExecutedSuccessCount(1);
- databaseProvider.createPdpStatistics(List.of(pdpStatisticsRecord));
- } catch (final PfModelException exp) {
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, exp.getMessage());
- }
+ pdpStatisticsRecord = new PdpStatistics();
+ pdpStatisticsRecord.setPdpGroupName("defaultGroup");
+ pdpStatisticsRecord.setPdpSubGroupName("apex");
+ pdpStatisticsRecord.setPdpInstanceId("pdp1");
+ pdpStatisticsRecord.setTimeStamp(Instant.ofEpochSecond(TIMESTAMP_SEC));
+ pdpStatisticsRecord.setPolicyDeployCount(1);
+ pdpStatisticsRecord.setPolicyDeployFailCount(0);
+ pdpStatisticsRecord.setPolicyDeploySuccessCount(1);
+ pdpStatisticsRecord.setPolicyExecutedCount(1);
+ pdpStatisticsRecord.setPolicyExecutedFailCount(0);
+ pdpStatisticsRecord.setPolicyExecutedSuccessCount(1);
+ }
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ pdpStatisticsService.createPdpStatistics(List.of(pdpStatisticsRecord));
}
@Test
diff --git a/main/src/test/java/org/onap/policy/pap/main/service/PdpGroupServiceTest.java b/main/src/test/java/org/onap/policy/pap/main/service/PdpGroupServiceTest.java
index e7090fcf..549eb96b 100644
--- a/main/src/test/java/org/onap/policy/pap/main/service/PdpGroupServiceTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/service/PdpGroupServiceTest.java
@@ -71,7 +71,7 @@ public class PdpGroupServiceTest extends CommonPapRestServer {
public void setUp() throws Exception {
super.setUp();
PdpGroups defaultGroup = coder.decode(ResourceUtils.getResourceAsString("e2e/PdpGroups.json"), PdpGroups.class);
- pdpGroupService.savePdpGroups(defaultGroup.getGroups());
+ pdpGroupService.createPdpGroups(defaultGroup.getGroups());
groupsToCreate = coder.decode(ResourceUtils.getResourceAsString("e2e/createGroups.json"), PdpGroups.class);
}
@@ -82,23 +82,23 @@ public class PdpGroupServiceTest extends CommonPapRestServer {
assertThat(pdpGroups).hasSize(1);
assertThat(pdpGroups.get(0).getName()).isEqualTo(DEFAULT_GROUP);
- pdpGroupService.savePdpGroups(groupsToCreate.getGroups());
+ pdpGroupService.createPdpGroups(groupsToCreate.getGroups());
assertThat(pdpGroupService.getPdpGroups()).hasSize(2);
- pdpGroups = pdpGroupService.getPdpGroupByName(CREATE_GROUPS);
+ pdpGroups = pdpGroupService.getPdpGroups(CREATE_GROUPS);
assertThat(pdpGroups).hasSize(1);
assertThat(pdpGroups.get(0).getName()).isEqualTo(CREATE_GROUPS);
- assertThat(pdpGroupService.getPdpGroupByState(PdpState.PASSIVE)).isEqualTo(pdpGroups);
+ assertThat(pdpGroupService.getPdpGroups(PdpState.PASSIVE)).isEqualTo(pdpGroups);
- List<PdpGroup> activePdpGroups = pdpGroupService.getPdpGroupByState(PdpState.ACTIVE);
+ List<PdpGroup> activePdpGroups = pdpGroupService.getPdpGroups(PdpState.ACTIVE);
assertThat(activePdpGroups).hasSize(1);
assertThat(activePdpGroups.get(0).getPdpSubgroups()).hasSize(3);
- assertThat(pdpGroupService.getPdpGroupByNameAndState(CREATE_GROUPS, PdpState.PASSIVE)).hasSize(1);
- assertThat(pdpGroupService.getPdpGroupByNameAndState("invalid-group", PdpState.PASSIVE)).hasSize(0);
- assertThat(pdpGroupService.getPdpGroupByNameAndState(DEFAULT_GROUP, PdpState.ACTIVE)).hasSize(1);
+ assertThat(pdpGroupService.getPdpGroups(CREATE_GROUPS, PdpState.PASSIVE)).hasSize(1);
+ assertThat(pdpGroupService.getPdpGroups("invalid-group", PdpState.PASSIVE)).hasSize(0);
+ assertThat(pdpGroupService.getPdpGroups(DEFAULT_GROUP, PdpState.ACTIVE)).hasSize(1);
PdpGroupFilter filter = PdpGroupFilter.builder()
.policyTypeList(
@@ -116,20 +116,21 @@ public class PdpGroupServiceTest extends CommonPapRestServer {
@Test
public void testPdpGroupsCrudFailure() {
- assertThatThrownBy(() -> pdpGroupService.getPdpGroupByState(null))
+ PdpState pdpState = null;
+ assertThatThrownBy(() -> pdpGroupService.getPdpGroups(pdpState))
.hasMessage(String.format(FIELD_IS_NULL, "pdpState"));
- pdpGroupService.savePdpGroups(groupsToCreate.getGroups());
+ pdpGroupService.createPdpGroups(groupsToCreate.getGroups());
assertThatThrownBy(() -> pdpGroupService.deletePdpGroup("invalid-group"))
.hasMessage("delete of PDP group \"invalid-group\" failed, PDP group does not exist");
assertThat(pdpGroupService.getPdpGroups()).hasSize(2);
- assertThatThrownBy(() -> pdpGroupService.savePdpGroups(null))
+ assertThatThrownBy(() -> pdpGroupService.createPdpGroups(null))
.hasMessage(String.format(FIELD_IS_NULL, "pdpGroups"));
PdpGroup invalidPdpGroup = new PdpGroup(groupsToCreate.getGroups().get(0));
invalidPdpGroup.setName("invalidPdpGroup");
invalidPdpGroup.setPdpGroupState(null);
- assertThatThrownBy(() -> pdpGroupService.savePdpGroups(List.of(invalidPdpGroup)))
+ assertThatThrownBy(() -> pdpGroupService.createPdpGroups(List.of(invalidPdpGroup)))
.hasMessageContaining("Failed saving PdpGroup.")
.hasMessageContaining("item \"pdpGroupState\" value \"null\" INVALID, is null");
pdpGroupService.deletePdpGroup(CREATE_GROUPS);
@@ -154,16 +155,16 @@ public class PdpGroupServiceTest extends CommonPapRestServer {
pdpGroupService.updatePdp(NAME, TYPE, new Pdp());
}).hasMessage(LOCALNAME_IS_NULL);
- pdpGroupService.savePdpGroups(groupsToCreate.getGroups());
+ pdpGroupService.createPdpGroups(groupsToCreate.getGroups());
assertThat(pdpGroupService.getPdpGroups()).hasSize(2);
- PdpGroup pdpGroup = pdpGroupService.getPdpGroupByName(CREATE_GROUPS).get(0);
+ PdpGroup pdpGroup = pdpGroupService.getPdpGroups(CREATE_GROUPS).get(0);
Pdp pdp = pdpGroup.getPdpSubgroups().get(0).getPdpInstances().get(0);
assertThat(pdp.getHealthy()).isEqualTo(PdpHealthStatus.HEALTHY);
// now update and test
pdp.setHealthy(PdpHealthStatus.NOT_HEALTHY);
pdpGroupService.updatePdp(CREATE_GROUPS, "pdpTypeA", pdp);
- PdpGroup updatGroup = pdpGroupService.getPdpGroupByName(CREATE_GROUPS).get(0);
+ PdpGroup updatGroup = pdpGroupService.getPdpGroups(CREATE_GROUPS).get(0);
assertThat(updatGroup.getPdpSubgroups().get(0).getPdpInstances().get(0).getHealthy())
.isEqualTo(PdpHealthStatus.NOT_HEALTHY);
pdpGroupService.deletePdpGroup(CREATE_GROUPS);
@@ -183,16 +184,16 @@ public class PdpGroupServiceTest extends CommonPapRestServer {
pdpGroupService.updatePdpSubGroup(NAME, new PdpSubGroup());
}).hasMessage(LOCALNAME_IS_NULL);
- pdpGroupService.savePdpGroups(groupsToCreate.getGroups());
+ pdpGroupService.createPdpGroups(groupsToCreate.getGroups());
assertThat(pdpGroupService.getPdpGroups()).hasSize(2);
- PdpGroup pdpGroup = pdpGroupService.getPdpGroupByName(CREATE_GROUPS).get(0);
+ PdpGroup pdpGroup = pdpGroupService.getPdpGroups(CREATE_GROUPS).get(0);
PdpSubGroup pdpSubGroup = pdpGroup.getPdpSubgroups().get(0);
assertThat(pdpSubGroup.getDesiredInstanceCount()).isEqualTo(2);
// now update and test
pdpSubGroup.setDesiredInstanceCount(1);
pdpGroupService.updatePdpSubGroup(CREATE_GROUPS, pdpSubGroup);
- PdpGroup updatGroup = pdpGroupService.getPdpGroupByName(CREATE_GROUPS).get(0);
+ PdpGroup updatGroup = pdpGroupService.getPdpGroups(CREATE_GROUPS).get(0);
assertThat(updatGroup.getPdpSubgroups().get(0).getDesiredInstanceCount()).isEqualTo(1);
pdpGroupService.deletePdpGroup(CREATE_GROUPS);
}
diff --git a/main/src/test/java/org/onap/policy/pap/main/service/PdpStatisticsServiceTest.java b/main/src/test/java/org/onap/policy/pap/main/service/PdpStatisticsServiceTest.java
index 86fd9b04..fc604cee 100644
--- a/main/src/test/java/org/onap/policy/pap/main/service/PdpStatisticsServiceTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/service/PdpStatisticsServiceTest.java
@@ -27,10 +27,12 @@ import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.onap.policy.models.base.Validated;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
+import org.onap.policy.pap.main.repository.PdpStatisticsRepository;
import org.onap.policy.pap.main.rest.CommonPapRestServer;
import org.springframework.beans.factory.annotation.Autowired;
@@ -49,6 +51,9 @@ public class PdpStatisticsServiceTest extends CommonPapRestServer {
@Autowired
private PdpStatisticsService pdpStatisticsService;
+ @Autowired
+ private PdpStatisticsRepository pdpStatisticsRepository;
+
private PdpStatistics pdpStatistics1;
private PdpStatistics pdpStatistics2;
private PdpStatistics pdpStatistics3;
@@ -63,10 +68,19 @@ public class PdpStatisticsServiceTest extends CommonPapRestServer {
@Before
public void setUp() throws Exception {
super.setUp();
- pdpStatistics1 = generatePdpStatistics(NAME1, TIMESTAMP1, 1L, GROUP, SUBGROUP);
- pdpStatistics2 = generatePdpStatistics("name2", TIMESTAMP1, 2L, GROUP, SUBGROUP);
- pdpStatistics3 = generatePdpStatistics(NAME1, TIMESTAMP2, 3L, GROUP, SUBGROUP);
- pdpStatistics4 = generatePdpStatistics(NAME3, TIMESTAMP2, 4L, GROUP0, SUBGROUP);
+ pdpStatistics1 = generatePdpStatistics(NAME1, TIMESTAMP1, GROUP, SUBGROUP);
+ pdpStatistics2 = generatePdpStatistics("name2", TIMESTAMP1, GROUP, SUBGROUP);
+ pdpStatistics3 = generatePdpStatistics(NAME1, TIMESTAMP2, GROUP, SUBGROUP);
+ pdpStatistics4 = generatePdpStatistics(NAME3, TIMESTAMP2, GROUP0, SUBGROUP);
+ }
+
+ /**
+ * Teardown after tests.
+ */
+ @Override
+ @After
+ public void tearDown() {
+ pdpStatisticsRepository.deleteAll();
}
@Test
@@ -167,12 +181,11 @@ public class PdpStatisticsServiceTest extends CommonPapRestServer {
assertThat(created.get(GROUP0).get(SUBGROUP)).isEqualTo(List.of(pdpStatistics4));
}
- private PdpStatistics generatePdpStatistics(String pdpInstanceId, Instant date, Long id, String group,
+ private PdpStatistics generatePdpStatistics(String pdpInstanceId, Instant date, String group,
String subgroup) {
PdpStatistics pdpStatistics11 = new PdpStatistics();
pdpStatistics11.setPdpInstanceId(pdpInstanceId);
pdpStatistics11.setTimeStamp(date);
- pdpStatistics11.setGeneratedId(id);
pdpStatistics11.setPdpGroupName(group);
pdpStatistics11.setPdpSubGroupName(subgroup);
pdpStatistics11.setPolicyDeployCount(2);
diff --git a/main/src/test/java/org/onap/policy/pap/main/service/PolicyAuditServiceTest.java b/main/src/test/java/org/onap/policy/pap/main/service/PolicyAuditServiceTest.java
index 980cdd1a..68044ad7 100644
--- a/main/src/test/java/org/onap/policy/pap/main/service/PolicyAuditServiceTest.java
+++ b/main/src/test/java/org/onap/policy/pap/main/service/PolicyAuditServiceTest.java
@@ -27,11 +27,13 @@ import static org.junit.Assert.assertThrows;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.List;
+import org.junit.After;
import org.junit.Test;
import org.onap.policy.models.base.PfModelRuntimeException;
import org.onap.policy.models.pap.concepts.PolicyAudit;
import org.onap.policy.models.pap.concepts.PolicyAudit.AuditAction;
import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
+import org.onap.policy.pap.main.repository.PolicyAuditRepository;
import org.onap.policy.pap.main.rest.CommonPapRestServer;
import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +49,18 @@ public class PolicyAuditServiceTest extends CommonPapRestServer {
@Autowired
private PolicyAuditService policyAuditService;
+ @Autowired
+ private PolicyAuditRepository policyAuditRepository;
+
+ /**
+ * Teardown after tests.
+ */
+ @Override
+ @After
+ public void tearDown() {
+ policyAuditRepository.deleteAll();
+ }
+
@Test
public void testCreateAuditRecordsSuccess() {
policyAuditService.createAuditRecords(generatePolicyAudits(Instant.now(), GROUP_A, MY_POLICY));
@@ -109,10 +123,10 @@ public class PolicyAuditServiceTest extends CommonPapRestServer {
}
private List<PolicyAudit> generatePolicyAudits(Instant date, String group, ToscaConceptIdentifier policy) {
- PolicyAudit deploy = PolicyAudit.builder().pdpGroup(group).pdpType("pdpType").policy(policy).auditId(1L)
+ PolicyAudit deploy = PolicyAudit.builder().pdpGroup(group).pdpType("pdpType").policy(policy)
.action(AuditAction.DEPLOYMENT).timestamp(date.truncatedTo(ChronoUnit.SECONDS)).build();
- PolicyAudit undeploy = PolicyAudit.builder().pdpGroup(group).pdpType("pdpType").policy(policy).auditId(2L)
+ PolicyAudit undeploy = PolicyAudit.builder().pdpGroup(group).pdpType("pdpType").policy(policy)
.action(AuditAction.UNDEPLOYMENT).timestamp(date.plusSeconds(1).truncatedTo(ChronoUnit.SECONDS)).build();
return List.of(deploy, undeploy);
diff --git a/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java b/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java
index 1a1415a5..2204392a 100644
--- a/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java
+++ b/main/src/test/java/org/onap/policy/pap/main/startstop/TestPapActivator.java
@@ -2,7 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
* Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property.
- * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
+ * Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -41,6 +41,7 @@ import org.onap.policy.common.utils.network.NetworkUtil;
import org.onap.policy.common.utils.services.Registry;
import org.onap.policy.pap.main.PapConstants;
import org.onap.policy.pap.main.PolicyPapException;
+import org.onap.policy.pap.main.comm.PdpHeartbeatListener;
import org.onap.policy.pap.main.comm.PdpModifyRequestMap;
import org.onap.policy.pap.main.notification.PolicyNotifier;
import org.onap.policy.pap.main.parameters.CommonTestData;
@@ -91,7 +92,9 @@ public class TestPapActivator {
final PapParameterGroup parGroup = new CommonTestData().getPapParameterGroup(6969);
- activator = new PapActivator(parGroup);
+ activator = new PapActivator(parGroup, new PolicyNotifier(null), new PdpHeartbeatListener(),
+ new PdpModifyRequestMap(null, null, null, null, null));
+
}
/**
@@ -118,7 +121,6 @@ public class TestPapActivator {
assertNotNull(Registry.get(PapConstants.REG_PDP_MODIFY_LOCK, Object.class));
assertNotNull(Registry.get(PapConstants.REG_STATISTICS_MANAGER, PapStatisticsManager.class));
assertNotNull(Registry.get(PapConstants.REG_PDP_MODIFY_MAP, PdpModifyRequestMap.class));
- assertNotNull(Registry.get(PapConstants.REG_POLICY_NOTIFIER, PolicyNotifier.class));
// repeat - should throw an exception
assertThatIllegalStateException().isThrownBy(() -> activator.start());
@@ -136,7 +138,6 @@ public class TestPapActivator {
assertNull(Registry.getOrDefault(PapConstants.REG_PDP_MODIFY_LOCK, Object.class, null));
assertNull(Registry.getOrDefault(PapConstants.REG_STATISTICS_MANAGER, PapStatisticsManager.class, null));
assertNull(Registry.getOrDefault(PapConstants.REG_PDP_MODIFY_MAP, PdpModifyRequestMap.class, null));
- assertNull(Registry.getOrDefault(PapConstants.REG_POLICY_NOTIFIER, PolicyNotifier.class, null));
// repeat - should throw an exception
assertThatIllegalStateException().isThrownBy(() -> activator.stop());
diff --git a/main/src/test/resources/META-INF/persistence.xml b/main/src/test/resources/META-INF/persistence.xml
deleted file mode 100644
index 2e44a069..00000000
--- a/main/src/test/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ============LICENSE_START=======================================================
- Copyright (C) 2019-2022 Nordix Foundation.
- Modifications Copyright (C) 2021 AT&T Intellectual Property.
- Modifications Copyright (C) 2022 Bell Canada.
- ================================================================================
- 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=========================================================
--->
-
-<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
- <persistence-unit name="ToscaConceptTest" transaction-type="RESOURCE_LOCAL">
- <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
-
- <class>org.onap.policy.models.base.PfConceptKey</class>
- <class>org.onap.policy.models.dao.converters.CDataConditioner</class>
- <class>org.onap.policy.models.dao.converters.Uuid2String</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdp</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpGroup</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpPolicyStatus</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics</class>
- <class>org.onap.policy.models.pdp.persistence.concepts.JpaPdpSubGroup</class>
- <class>org.onap.policy.models.pap.persistence.concepts.JpaPolicyAudit</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignment</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityAssignments</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaCapabilityTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaDataTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplate</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTemplates</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaNodeTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaParameter</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicies</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicy</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaPolicyTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaProperty</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipType</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRelationshipTypes</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirement</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaRequirements</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaTopologyTemplate</class>
- <class>org.onap.policy.models.tosca.simple.concepts.JpaToscaTrigger</class>
-
- <properties>
- <property name="javax.persistence.schema-generation.database.action" value="create" />
- <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
- <property name="eclipselink.ddl-generation.output-mode" value="database" />
- <property name="eclipselink.logging.level" value="INFO" />
- </properties>
- </persistence-unit>
-</persistence>
diff --git a/main/src/test/resources/config/application.yaml b/main/src/test/resources/config/application.yaml
index 06d153bb..b9579db1 100644
--- a/main/src/test/resources/config/application.yaml
+++ b/main/src/test/resources/config/application.yaml
@@ -33,14 +33,6 @@ pap:
maxWaitMs: 3000
heartBeatMs: 6000
maxMessageAgeMs: 20000
- databaseProviderParameters:
- name: PolicyModelsProviderParameters
- implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl
- databaseDriver: org.h2.Driver
- databaseUrl: jdbc:h2:mem:testdb0
- databaseUser: policy
- databasePassword: UDAxaWNZ
- persistenceUnit: ToscaConceptTest
savePdpStatisticsInDb: true
topicParameterGroup:
topicSources:
diff --git a/packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml b/packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml
index f38e67b6..9bfb5c09 100644
--- a/packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml
+++ b/packages/policy-pap-tarball/src/main/resources/etc/papParameters.yaml
@@ -6,6 +6,20 @@ spring:
http:
converters:
preferred-json-mapper: gson
+ datasource:
+ url: jdbc:mariadb://mariadb:3306/policyadmin
+ driverClassName: org.mariadb.jdbc.Driver
+ username: policy_user
+ password: policy_user
+ jpa:
+ properties:
+ hibernate:
+ dialect: org.hibernate.dialect.MariaDB103Dialect
+ hibernate:
+ ddl-auto: none
+ naming:
+ physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
+ implicit-strategy: org.onap.policy.pap.main.CustomImplicitNamingStrategy
server:
port: 6969
@@ -22,14 +36,6 @@ pap:
stateChangeParameters:
maxRetryCount: 1
maxWaitMs: 30000
- databaseProviderParameters:
- name: PolicyProviderParameterGroup
- implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl
- databaseDriver: org.mariadb.jdbc.Driver
- databaseUrl: jdbc:mariadb://mariadb:3306/policyadmin
- databaseUser: policy_user
- databasePassword: policy_user
- persistenceUnit: PolicyDb
savePdpStatisticsInDb: false
topicParameterGroup:
topicSources: