From 9dbc162db1f26e9b37641c73fff8fba0d4f23c81 Mon Sep 17 00:00:00 2001 From: "a.sreekumar" Date: Mon, 11 Apr 2022 11:18:04 +0100 Subject: Fix incorrect deployments counter on parallel execution Change-Id: I72bde10eae615e2c89ccc1a211c6385404b9b3c7 Issue-ID: POLICY-4088 Signed-off-by: a.sreekumar --- .../pap/main/notification/DeploymentStatus.java | 38 ++++++++++++++++------ .../policy/pap/main/comm/CommonRequestBase.java | 8 +++++ .../main/notification/DeploymentStatusTest.java | 2 +- .../pap/main/notification/PolicyNotifierTest.java | 5 ++- 4 files changed, 41 insertions(+), 12 deletions(-) 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 7a1aa107..24b75ab8 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 @@ -21,6 +21,7 @@ package org.onap.policy.pap.main.notification; +import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; import java.util.ArrayList; import java.util.HashMap; @@ -77,6 +78,10 @@ public class DeploymentStatus { private PolicyStatusService policyStatusService; + private Counter deploymentSuccessCounter; + private Counter unDeploymentSuccessCounter; + private Counter deploymentFailureCounter; + private Counter unDeploymentFailureCounter; /** * Constructs the object. @@ -85,6 +90,27 @@ public class DeploymentStatus { */ public DeploymentStatus(PolicyStatusService policyStatusService) { this.policyStatusService = policyStatusService; + initializeMetrics(); + } + + private void initializeMetrics() { + String counterName = "pap_" + PrometheusUtils.POLICY_DEPLOYMENTS_METRIC; + MeterRegistry meterRegistry = Registry.get(PapConstants.REG_METER_REGISTRY, MeterRegistry.class); + deploymentSuccessCounter = + Counter.builder(counterName).tags(PrometheusUtils.OPERATION_METRIC_LABEL, PrometheusUtils.DEPLOY_OPERATION, + PrometheusUtils.STATUS_METRIC_LABEL, State.SUCCESS.name()).register(meterRegistry); + + unDeploymentSuccessCounter = Counter.builder(counterName).tags(PrometheusUtils.OPERATION_METRIC_LABEL, + PrometheusUtils.UNDEPLOY_OPERATION, PrometheusUtils.STATUS_METRIC_LABEL, State.SUCCESS.name()) + .register(meterRegistry); + + deploymentFailureCounter = + Counter.builder(counterName).tags(PrometheusUtils.OPERATION_METRIC_LABEL, PrometheusUtils.DEPLOY_OPERATION, + PrometheusUtils.STATUS_METRIC_LABEL, State.FAILURE.name()).register(meterRegistry); + + unDeploymentFailureCounter = Counter.builder(counterName).tags(PrometheusUtils.OPERATION_METRIC_LABEL, + PrometheusUtils.UNDEPLOY_OPERATION, PrometheusUtils.STATUS_METRIC_LABEL, State.FAILURE.name()) + .register(meterRegistry); } /** @@ -178,20 +204,12 @@ public class DeploymentStatus { } private void updateMetrics() { - MeterRegistry meterRegistry = Registry.get(PapConstants.REG_METER_REGISTRY, MeterRegistry.class); - String counterName = "pap_" + PrometheusUtils.POLICY_DEPLOYMENTS_METRIC; recordMap.forEach((key, value) -> { if (value.getAction().equals(StatusAction.Action.UPDATED)) { if (value.getStatus().getState().equals(State.SUCCESS)) { - meterRegistry.counter(counterName, PrometheusUtils.OPERATION_METRIC_LABEL, - value.getStatus().isDeploy() ? PrometheusUtils.DEPLOY_OPERATION - : PrometheusUtils.UNDEPLOY_OPERATION, - PrometheusUtils.STATUS_METRIC_LABEL, State.SUCCESS.name()).increment(); + (value.getStatus().isDeploy() ? deploymentSuccessCounter : unDeploymentSuccessCounter).increment(); } else if (value.getStatus().getState().equals(State.FAILURE)) { - meterRegistry.counter(counterName, PrometheusUtils.OPERATION_METRIC_LABEL, - value.getStatus().isDeploy() ? PrometheusUtils.DEPLOY_OPERATION - : PrometheusUtils.UNDEPLOY_OPERATION, - PrometheusUtils.STATUS_METRIC_LABEL, State.FAILURE.name()).increment(); + (value.getStatus().isDeploy() ? deploymentFailureCounter : unDeploymentFailureCounter).increment(); } } }); 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 dd206062..4086b6a1 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 @@ -28,17 +28,20 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import java.util.Collections; import java.util.LinkedList; import java.util.Queue; import java.util.function.Consumer; import org.junit.Before; +import org.junit.BeforeClass; import org.mockito.ArgumentCaptor; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; import org.onap.policy.common.endpoints.listeners.RequestIdDispatcher; import org.onap.policy.common.endpoints.listeners.TypedMessageListener; +import org.onap.policy.common.utils.services.Registry; import org.onap.policy.models.pdp.concepts.PdpMessage; import org.onap.policy.models.pdp.concepts.PdpStateChange; import org.onap.policy.models.pdp.concepts.PdpStatus; @@ -86,6 +89,11 @@ public class CommonRequestBase { protected RequestParams reqParams; protected PdpModifyRequestMapParams mapParams; + @BeforeClass + public static void setupBeforeAll() { + Registry.registerOrReplace(PapConstants.REG_METER_REGISTRY, new SimpleMeterRegistry()); + } + /** * Sets up. * 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 cc1f74b4..306ec8cd 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 @@ -90,7 +90,7 @@ public class DeploymentStatusTest { */ @BeforeClass public static void setUpBeforeClass() { - Registry.register(PapConstants.REG_METER_REGISTRY, new SimpleMeterRegistry()); + Registry.registerOrReplace(PapConstants.REG_METER_REGISTRY, new SimpleMeterRegistry()); } /** 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 5fec269a..48e3f57e 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 @@ -31,6 +31,7 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; import java.util.Collections; import java.util.Set; import javax.ws.rs.core.Response.Status; @@ -41,11 +42,13 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; +import org.onap.policy.common.utils.services.Registry; import org.onap.policy.models.base.PfModelException; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.pap.concepts.PolicyNotification; import org.onap.policy.models.pap.concepts.PolicyStatus; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; +import org.onap.policy.pap.main.PapConstants; import org.onap.policy.pap.main.PolicyPapRuntimeException; import org.onap.policy.pap.main.comm.Publisher; import org.onap.policy.pap.main.comm.QueueToken; @@ -91,7 +94,7 @@ public class PolicyNotifierTest { public void setUp() { try { when(policyStatusService.getGroupPolicyStatus(anyString())).thenReturn(Collections.emptyList()); - + Registry.registerOrReplace(PapConstants.REG_METER_REGISTRY, new SimpleMeterRegistry()); notifier = new MyNotifier(publisher); } catch (PfModelException e) { -- cgit 1.2.3-korg