2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2020 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.util.ArrayList;
28 import java.util.Date;
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 {
75 Invocation.Builder invocationBuilder = sendRequest("pdps/statistics");
76 Response testResponse = invocationBuilder.get();
77 verifyResponse(testResponse);
81 public void testDbWithGroup() throws Exception {
83 Invocation.Builder invocationBuilder = sendRequest("pdps/statistics/defaultGroup");
84 Response testResponse = invocationBuilder.get();
85 verifyResponse(testResponse);
90 public void testDbWithSubGroup() throws Exception {
92 Invocation.Builder invocationBuilder = sendRequest("pdps/statistics/defaultGroup/apex");
93 Response testResponse = invocationBuilder.get();
94 verifyResponse(testResponse);
98 public void testDbWithPdp() throws Exception {
100 Invocation.Builder invocationBuilder = sendRequest("pdps/statistics/defaultGroup/apex/pdp1");
101 Response testResponse = invocationBuilder.get();
102 verifyResponse(testResponse);
106 public void testDbWithPdpLatest() throws Exception {
108 Invocation.Builder invocationBuilder = sendRequest("pdps/statistics/defaultGroup/apex/pdp1?recordCount=5");
109 Response testResponse = invocationBuilder.get();
110 verifyResponse(testResponse);
113 private void updateDistributionStatistics() {
114 PapStatisticsManager mgr = Registry.get(PapConstants.REG_STATISTICS_MANAGER, PapStatisticsManager.class);
116 mgr.updateTotalPdpCount();
117 mgr.updateTotalPdpGroupCount();
118 mgr.updateTotalPolicyDeployCount();
119 mgr.updatePolicyDeploySuccessCount();
120 mgr.updatePolicyDeployFailureCount();
121 mgr.updateTotalPolicyDownloadCount();
122 mgr.updatePolicyDownloadSuccessCount();
123 mgr.updatePolicyDownloadFailureCount();
126 private void setupEnv() {
127 PolicyModelsProviderFactoryWrapper modelProviderWrapper =
128 Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
130 try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
131 PdpStatistics pdpStatisticsRecord = new PdpStatistics();
132 pdpStatisticsRecord.setPdpGroupName("defaultGroup");
133 pdpStatisticsRecord.setPdpSubGroupName("apex");
134 pdpStatisticsRecord.setPdpInstanceId("pdp1");
135 pdpStatisticsRecord.setTimeStamp(new Date());
136 pdpStatisticsRecord.setPolicyDeployCount(1);
137 pdpStatisticsRecord.setPolicyDeployFailCount(0);
138 pdpStatisticsRecord.setPolicyDeploySuccessCount(1);
139 pdpStatisticsRecord.setPolicyExecutedCount(1);
140 pdpStatisticsRecord.setPolicyExecutedFailCount(0);
141 pdpStatisticsRecord.setPolicyExecutedSuccessCount(1);
142 recordList.add(pdpStatisticsRecord);
143 databaseProvider.createPdpStatistics(recordList);
144 } catch (final PfModelException exp) {
145 throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, exp.getMessage());
149 private void verifyResponse(Response testResponse) {
150 assertEquals(Response.Status.OK.getStatusCode(), testResponse.getStatus());
151 Map<String, Map<String, List<PdpStatistics>>> map =
152 testResponse.readEntity(new GenericType<Map<String, Map<String, List<PdpStatistics>>>>() {});
153 Map<String, List<PdpStatistics>> subMap = map.get("defaultGroup");
154 List<PdpStatistics> resRecord = subMap.get("apex");
155 assertEquals("pdp1", resRecord.get(0).getPdpInstanceId());
156 assertEquals("apex", resRecord.get(0).getPdpSubGroupName());
157 assertEquals("defaultGroup", resRecord.get(0).getPdpGroupName());