Update totalPoliciesCount statistic
[policy/xacml-pdp.git] / main / src / test / java / org / onap / policy / pdpx / main / rest / TestXacmlPdpRestServer.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.pdpx.main.rest;
22
23 import static org.junit.Assert.assertEquals;
24
25 import javax.ws.rs.client.Invocation;
26 import org.junit.Test;
27 import org.onap.policy.common.endpoints.report.HealthCheckReport;
28 import org.onap.policy.pdpx.main.CommonRest;
29 import org.onap.policy.pdpx.main.rest.model.StatisticsReport;
30 import org.slf4j.Logger;
31 import org.slf4j.LoggerFactory;
32
33 /**
34  * Class to perform unit test of {@link XacmlPdpRestServer}.
35  *
36  */
37 public class TestXacmlPdpRestServer extends CommonRest {
38
39     private static final Logger LOGGER = LoggerFactory.getLogger(TestXacmlPdpRestServer.class);
40     private static final String NOT_ALIVE = "not alive";
41     private static final String ALIVE = "alive";
42     private static final String SELF = "self";
43     private static final String NAME = "Policy Xacml PDP";
44     private static final String HEALTHCHECK_ENDPOINT = "healthcheck";
45     private static final String STATISTICS_ENDPOINT = "statistics";
46
47     private int nupdates = 0;
48
49     @Test
50     public void testHealthCheckSuccess() throws Exception {
51         LOGGER.info("***************************** Running testHealthCheckSuccess *****************************");
52         final Invocation.Builder invocationBuilder = sendHttpsRequest(HEALTHCHECK_ENDPOINT);
53         final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
54         LOGGER.info("test1HealthCheckSuccess health report {}", report);
55         validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
56     }
57
58     @Test
59     public void testHealthCheckFailure() throws Exception {
60         LOGGER.info("***************************** Running testHealthCheckFailure *****************************");
61
62         markActivatorDead();
63
64         final Invocation.Builder invocationBuilder = sendHttpsRequest(HEALTHCHECK_ENDPOINT);
65         final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
66         LOGGER.info("testHealthCheckFailure health report {}", report);
67         validateHealthCheckReport(NAME, SELF, false, 500, NOT_ALIVE, report);
68     }
69
70     @Test
71     public void testHttpsHealthCheckSuccess() throws Exception {
72         LOGGER.info("***************************** Running testHttpsHealthCheckSuccess *****************************");
73         final Invocation.Builder invocationBuilder = sendHttpsRequest(HEALTHCHECK_ENDPOINT);
74         final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
75         LOGGER.info("testHttpsHealthCheckSuccess health report {}", report);
76         validateHealthCheckReport(NAME, SELF, true, 200, ALIVE, report);
77     }
78
79     @Test
80     public void testStatistics_200() throws Exception {
81         LOGGER.info("***************************** Running testStatistics_200 *****************************");
82         Invocation.Builder invocationBuilder = sendHttpsRequest(STATISTICS_ENDPOINT);
83         StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
84         LOGGER.info("testStatistics_200 health report {}", report);
85         validateStatisticsReport(report, 0, 200);
86         updateXacmlPdpStatistics();
87         invocationBuilder = sendHttpsRequest(STATISTICS_ENDPOINT);
88         report = invocationBuilder.get(StatisticsReport.class);
89         LOGGER.info("testStatistics_200 health report {}", report);
90         validateStatisticsReport(report, 1, 200);
91     }
92
93     @Test
94     public void testStatistics_500() throws Exception {
95         LOGGER.info("***************************** Running testStatistics_500 *****************************");
96
97         markActivatorDead();
98
99         final Invocation.Builder invocationBuilder = sendHttpsRequest(STATISTICS_ENDPOINT);
100         final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
101         LOGGER.info("testStatistics_500 health report {}", report);
102         validateStatisticsReport(report, 0, 500);
103     }
104
105     @Test
106     public void testHttpsStatistic() throws Exception {
107         LOGGER.info("***************************** Running testHttpsStatistic *****************************");
108         final Invocation.Builder invocationBuilder = sendHttpsRequest(STATISTICS_ENDPOINT);
109         final StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
110         LOGGER.info("testHttpsStatistic health report {}", report);
111         validateStatisticsReport(report, 0, 200);
112     }
113
114     private void updateXacmlPdpStatistics() {
115         XacmlPdpStatisticsManager stats = XacmlPdpStatisticsManager.getCurrent();
116         ++nupdates;
117         stats.setTotalPolicyCount(nupdates);
118         stats.setTotalPolicyTypesCount(nupdates);
119         stats.updatePermitDecisionsCount();
120         stats.updateDenyDecisionsCount();
121         stats.updateIndeterminantDecisionsCount();
122         stats.updateNotApplicableDecisionsCount();
123     }
124
125     private void validateStatisticsReport(final StatisticsReport report, final int count, final int code) {
126         assertEquals(code, report.getCode());
127         assertEquals(count, report.getTotalPoliciesCount());
128         assertEquals(count, report.getTotalPolicyTypesCount());
129         assertEquals(count, report.getPermitDecisionsCount());
130         assertEquals(count, report.getDenyDecisionsCount());
131         assertEquals(count, report.getIndeterminantDecisionsCount());
132         assertEquals(count, report.getNotApplicableDecisionsCount());
133     }
134
135     private void validateHealthCheckReport(final String name, final String url, final boolean healthy, final int code,
136                     final String message, final HealthCheckReport report) {
137         assertEquals(name, report.getName());
138         assertEquals(url, report.getUrl());
139         assertEquals(healthy, report.isHealthy());
140         assertEquals(code, report.getCode());
141         assertEquals(message, report.getMessage());
142     }
143 }