6213cae1fdeb7ff2392e6d84a926fef39ca874bd
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021 Nordix Foundation.
4  *  Modifications Copyright (C) 2021-2022 Bell Canada. All rights reserved.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.service.engine.main;
23
24 import static org.junit.Assert.assertEquals;
25
26 import io.prometheus.client.CollectorRegistry;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.onap.policy.common.utils.resources.PrometheusUtils;
30
31 public class ApexPolicyStatisticsManagerTest {
32
33     private ApexPolicyStatisticsManager statisticsManager;
34
35     /**
36      * Starts the statisticsManager object for tests.
37      */
38     @Before
39     public void setup() {
40         statisticsManager = new ApexPolicyStatisticsManager();
41     }
42
43     @Test
44     public void testUpdatePolicyDeployCounter() {
45         statisticsManager.updatePolicyDeployCounter(false);
46         assertDeploys(1, 0, 1);
47
48         statisticsManager.updatePolicyDeployCounter(true);
49         statisticsManager.updatePolicyDeployCounter(true);
50         assertDeploys(3, 2, 1);
51         checkDeploymentsMetrics("deploy");
52     }
53
54     @Test
55     public void testUpdatePolicyExecutedCounter() {
56         statisticsManager.updatePolicyExecutedCounter(true);
57         assertExecuted(1, 1, 0);
58
59         statisticsManager.updatePolicyExecutedCounter(false);
60         assertExecuted(2, 1, 1);
61     }
62
63     @Test
64     public void testUpdatePolicyUndeployCounter() {
65         statisticsManager.updatePolicyUndeployCounter(false);
66         assertUndeploys(1, 0, 1);
67
68         statisticsManager.updatePolicyUndeployCounter(true);
69         assertUndeploys(2, 1, 1);
70         checkDeploymentsMetrics("undeploy");
71     }
72
73     private void assertDeploys(long count, long success, long fail) {
74         assertEquals(count, statisticsManager.getPolicyDeployCount());
75         assertEquals(success, statisticsManager.getPolicyDeploySuccessCount());
76         assertEquals(fail, statisticsManager.getPolicyDeployFailCount());
77     }
78
79     private void assertUndeploys(long count, long success, long fail) {
80         assertEquals(count, statisticsManager.getPolicyUndeployCount());
81         assertEquals(success, statisticsManager.getPolicyUndeploySuccessCount());
82         assertEquals(fail, statisticsManager.getPolicyUndeployFailCount());
83     }
84
85     private void assertExecuted(long count, long success, long fail) {
86         assertEquals(count, statisticsManager.getPolicyExecutedCount());
87         assertEquals(success, statisticsManager.getPolicyExecutedSuccessCount());
88         assertEquals(fail, statisticsManager.getPolicyExecutedFailCount());
89     }
90
91     private void checkDeploymentsMetrics(String operation) {
92         final var defaultRegistry = CollectorRegistry.defaultRegistry;
93         Double totalCount = defaultRegistry.getSampleValue("pdpa_policy_deployments_total",
94             new String[]{"operation", "status"}, new String[]{operation, "TOTAL"});
95         Double successCount = defaultRegistry.getSampleValue("pdpa_policy_deployments_total",
96             new String[]{"operation", "status"}, new String[]{operation, "SUCCESS"});
97         Double failCount = defaultRegistry.getSampleValue("pdpa_policy_deployments_total",
98             new String[]{"operation", "status"}, new String[]{operation, "FAIL"});
99
100         if (PrometheusUtils.DEPLOY_OPERATION.equals(operation)) {
101             assertEquals(totalCount.intValue(), statisticsManager.getPolicyDeployCount());
102             assertEquals(successCount.intValue(), statisticsManager.getPolicyDeploySuccessCount());
103             assertEquals(failCount.intValue(), statisticsManager.getPolicyDeployFailCount());
104         } else if (PrometheusUtils.UNDEPLOY_OPERATION.equals(operation)) {
105             assertEquals(totalCount.intValue(), statisticsManager.getPolicyUndeployCount());
106             assertEquals(successCount.intValue(), statisticsManager.getPolicyUndeploySuccessCount());
107             assertEquals(failCount.intValue(), statisticsManager.getPolicyUndeployFailCount());
108         }
109     }
110 }