2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2020-2021 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.pap.main.rest.e2e;
24 import static org.junit.Assert.assertEquals;
26 import java.net.HttpURLConnection;
27 import java.time.Instant;
28 import java.util.ArrayList;
29 import java.util.List;
31 import javax.ws.rs.client.Invocation;
32 import javax.ws.rs.core.GenericType;
33 import javax.ws.rs.core.Response;
34 import org.junit.Test;
35 import org.onap.policy.common.utils.services.Registry;
36 import org.onap.policy.models.base.PfModelException;
37 import org.onap.policy.models.base.PfModelRuntimeException;
38 import org.onap.policy.models.pdp.concepts.PdpStatistics;
39 import org.onap.policy.models.provider.PolicyModelsProvider;
40 import org.onap.policy.pap.main.PapConstants;
41 import org.onap.policy.pap.main.PolicyModelsProviderFactoryWrapper;
42 import org.onap.policy.pap.main.rest.PapStatisticsManager;
43 import org.onap.policy.pap.main.rest.StatisticsReport;
45 public class StatisticsTest extends End2EndBase {
46 private static final String STATISTICS_ENDPOINT = "statistics";
47 private List<PdpStatistics> recordList = new ArrayList<>();
51 public void test() throws Exception {
52 Invocation.Builder invocationBuilder = sendRequest(STATISTICS_ENDPOINT);
53 StatisticsReport report = invocationBuilder.get(StatisticsReport.class);
54 assertEquals(HttpURLConnection.HTTP_OK, report.getCode());
56 updateDistributionStatistics();
58 invocationBuilder = sendRequest(STATISTICS_ENDPOINT);
59 StatisticsReport report2 = invocationBuilder.get(StatisticsReport.class);
61 assertEquals(HttpURLConnection.HTTP_OK, report.getCode());
62 assertEquals(report.getTotalPdpCount() + 1, report2.getTotalPdpCount());
63 assertEquals(report.getTotalPdpGroupCount() + 1, report2.getTotalPdpGroupCount());
64 assertEquals(report.getTotalPolicyDeployCount() + 1, report2.getTotalPolicyDeployCount());
65 assertEquals(report.getPolicyDeploySuccessCount() + 1, report2.getPolicyDeploySuccessCount());
66 assertEquals(report.getPolicyDeployFailureCount() + 1, report2.getPolicyDeployFailureCount());
67 assertEquals(report.getTotalPolicyDownloadCount() + 1, report2.getTotalPolicyDownloadCount());
68 assertEquals(report.getPolicyDeploySuccessCount() + 1, report2.getPolicyDeploySuccessCount());
69 assertEquals(report.getPolicyDeployFailureCount() + 1, report2.getPolicyDeployFailureCount());
73 public void testDb() throws Exception {
74 verifyResponse("pdps/statistics");
78 public void testDbWithGroup() throws Exception {
79 verifyResponse("pdps/statistics/defaultGroup");
84 public void testDbWithSubGroup() throws Exception {
85 verifyResponse("pdps/statistics/defaultGroup/apex");
89 public void testDbWithPdp() throws Exception {
90 verifyResponse("pdps/statistics/defaultGroup/apex/pdp1");
94 public void testDbWithPdpLatest() throws Exception {
95 verifyResponse("pdps/statistics/defaultGroup/apex/pdp1?recordCount=5");
98 private void updateDistributionStatistics() {
99 PapStatisticsManager mgr = Registry.get(PapConstants.REG_STATISTICS_MANAGER, PapStatisticsManager.class);
101 mgr.updateTotalPdpCount();
102 mgr.updateTotalPdpGroupCount();
103 mgr.updateTotalPolicyDeployCount();
104 mgr.updatePolicyDeploySuccessCount();
105 mgr.updatePolicyDeployFailureCount();
106 mgr.updateTotalPolicyDownloadCount();
107 mgr.updatePolicyDownloadSuccessCount();
108 mgr.updatePolicyDownloadFailureCount();
111 private void setupEnv() {
112 PolicyModelsProviderFactoryWrapper modelProviderWrapper =
113 Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
115 try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
116 PdpStatistics pdpStatisticsRecord = new PdpStatistics();
117 pdpStatisticsRecord.setPdpGroupName("defaultGroup");
118 pdpStatisticsRecord.setPdpSubGroupName("apex");
119 pdpStatisticsRecord.setPdpInstanceId("pdp1");
120 pdpStatisticsRecord.setTimeStamp(Instant.now());
121 pdpStatisticsRecord.setPolicyDeployCount(1);
122 pdpStatisticsRecord.setPolicyDeployFailCount(0);
123 pdpStatisticsRecord.setPolicyDeploySuccessCount(1);
124 pdpStatisticsRecord.setPolicyExecutedCount(1);
125 pdpStatisticsRecord.setPolicyExecutedFailCount(0);
126 pdpStatisticsRecord.setPolicyExecutedSuccessCount(1);
127 recordList.add(pdpStatisticsRecord);
128 databaseProvider.createPdpStatistics(recordList);
129 } catch (final PfModelException exp) {
130 throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, exp.getMessage());
134 private void verifyResponse(String endpoint) throws Exception {
136 Invocation.Builder invocationBuilder = sendRequest(endpoint);
137 verifyResponse(invocationBuilder.get());
140 private void verifyResponse(Response testResponse) {
141 assertEquals(Response.Status.OK.getStatusCode(), testResponse.getStatus());
142 Map<String, Map<String, List<PdpStatistics>>> map =
143 testResponse.readEntity(new GenericType<Map<String, Map<String, List<PdpStatistics>>>>() {});
144 Map<String, List<PdpStatistics>> subMap = map.get("defaultGroup");
145 List<PdpStatistics> resRecord = subMap.get("apex");
146 assertEquals("pdp1", resRecord.get(0).getPdpInstanceId());
147 assertEquals("apex", resRecord.get(0).getPdpSubGroupName());
148 assertEquals("defaultGroup", resRecord.get(0).getPdpGroupName());