2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2020 Nordix Foundation.
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.models.pdp.persistence.provider;
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.assertj.core.api.Assertions.assertThatThrownBy;
25 import static org.junit.Assert.assertEquals;
27 import java.util.ArrayList;
28 import java.util.Date;
29 import java.util.List;
30 import java.util.Properties;
31 import org.eclipse.persistence.config.PersistenceUnitProperties;
32 import org.junit.After;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.onap.policy.models.dao.DaoParameters;
36 import org.onap.policy.models.dao.PfDao;
37 import org.onap.policy.models.dao.PfDaoFactory;
38 import org.onap.policy.models.dao.impl.DefaultPfDao;
39 import org.onap.policy.models.pdp.concepts.PdpEngineWorkerStatistics;
40 import org.onap.policy.models.pdp.concepts.PdpStatistics;
42 public class PdpStatisticsProviderTest {
43 private static final String DAO_IS_NULL = "dao is marked @NonNull but is null";
44 private static final String LIST_IS_NULL = "pdpStatisticsList is marked @NonNull but is null";
45 private static final String GROUP0 = "group0";
46 private static final String NAME = "name";
47 private static final String GROUP = "group";
48 private static final String SUBGROUP = "subgroup";
49 private static final Date TIMESTAMP1 = new Date(1078884319);
50 private static final Date TIMESTAMP2 = new Date(1078884350);
51 private static final String ORDER = "DESC";
55 private ArrayList<PdpStatistics> pdpStatisticsTestList = new ArrayList<>();
56 private List<PdpEngineWorkerStatistics> engineStats = new ArrayList<>();
57 private String testListStr;
58 private String name1ListStr;
59 private String createdListStr;
65 public void setupDao() throws Exception {
66 final DaoParameters daoParameters = new DaoParameters();
67 daoParameters.setPluginClass(DefaultPfDao.class.getName());
69 daoParameters.setPersistenceUnit("ToscaConceptTest");
71 Properties jdbcProperties = new Properties();
72 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
73 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
75 // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB
76 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
77 jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:testdb");
79 daoParameters.setJdbcProperties(jdbcProperties);
81 pfDao = new PfDaoFactory().createPfDao(daoParameters);
82 pfDao.init(daoParameters);
84 PdpStatistics pdpStatistics = new PdpStatistics();
85 pdpStatistics.setPdpInstanceId(NAME);
86 pdpStatistics.setTimeStamp(TIMESTAMP1);
87 pdpStatistics.setPdpGroupName(GROUP);
88 pdpStatistics.setPdpSubGroupName(SUBGROUP);
89 pdpStatistics.setPolicyDeployCount(2);
90 pdpStatistics.setPolicyDeployFailCount(1);
91 pdpStatistics.setPolicyDeploySuccessCount(1);
92 pdpStatistics.setPolicyExecutedCount(2);
93 pdpStatistics.setPolicyExecutedFailCount(1);
94 pdpStatistics.setPolicyExecutedSuccessCount(1);
95 pdpStatistics.setEngineStats(engineStats);
96 pdpStatisticsTestList.add(pdpStatistics);
97 name1ListStr = pdpStatisticsTestList.toString();
99 PdpStatistics pdpStatistics2 = new PdpStatistics();
100 pdpStatistics2.setPdpInstanceId("name2");
101 pdpStatistics2.setTimeStamp(TIMESTAMP2);
102 pdpStatistics2.setPdpGroupName(GROUP);
103 pdpStatistics2.setPdpSubGroupName(SUBGROUP);
104 pdpStatistics2.setPolicyDeployCount(2);
105 pdpStatistics2.setPolicyDeployFailCount(1);
106 pdpStatistics2.setPolicyDeploySuccessCount(1);
107 pdpStatistics2.setPolicyExecutedCount(2);
108 pdpStatistics2.setPolicyExecutedFailCount(1);
109 pdpStatistics2.setPolicyExecutedSuccessCount(1);
110 pdpStatistics2.setEngineStats(engineStats);
111 pdpStatisticsTestList.add(pdpStatistics2);
112 testListStr = pdpStatisticsTestList.toString();
114 List<PdpStatistics> createdPdpStatisticsList;
115 createdPdpStatisticsList = new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsTestList);
116 createdListStr = createdPdpStatisticsList.toString();
117 assertEquals(createdListStr.replaceAll("\\s+", ""), testListStr.replaceAll("\\s+", ""));
122 public void teardown() {
127 public void testNotOkPdpStatistics() {
128 PdpStatistics pdpStatisticsErr = new PdpStatistics();
129 pdpStatisticsErr.setPdpInstanceId("NULL");
130 pdpStatisticsErr.setPdpGroupName(GROUP);
131 ArrayList<PdpStatistics> pdpStatisticsNullList = new ArrayList<>();
132 pdpStatisticsNullList.add(pdpStatisticsErr);
134 assertThatThrownBy(() -> {
135 new PdpStatisticsProvider().createPdpStatistics(pfDao, null);
136 }).hasMessage(LIST_IS_NULL);
138 assertThatThrownBy(() -> {
139 new PdpStatisticsProvider().updatePdpStatistics(pfDao, null);
140 }).hasMessage(LIST_IS_NULL);
142 assertThatThrownBy(() -> {
143 new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsNullList);
144 }).hasMessageContaining("pdp statictics \"NULL\" is not valid");
146 assertThatThrownBy(() -> {
147 new PdpStatisticsProvider().updatePdpStatistics(pfDao, pdpStatisticsNullList);
148 }).hasMessageContaining("pdp statistics \"NULL:0.0.0:0\" is not valid");
152 public void testGetPdpStatistics() throws Exception {
153 assertThatThrownBy(() -> {
154 new PdpStatisticsProvider().createPdpStatistics(null, null);
155 }).hasMessage(DAO_IS_NULL);
156 assertThatThrownBy(() -> {
157 new PdpStatisticsProvider().getPdpStatistics(null, null, null);
158 }).hasMessage(DAO_IS_NULL);
160 List<PdpStatistics> getPdpStatisticsList;
161 getPdpStatisticsList = new PdpStatisticsProvider().getPdpStatistics(pfDao, NAME, TIMESTAMP1);
162 assertThat(getPdpStatisticsList).hasSize(1);
163 String gotListStr = getPdpStatisticsList.toString();
164 assertEquals(name1ListStr.replaceAll("\\s+", ""), gotListStr.replaceAll("\\s+", ""));
167 getPdpStatisticsList = new PdpStatisticsProvider().getPdpStatistics(pfDao, null, TIMESTAMP1);
168 gotListStr = getPdpStatisticsList.toString();
169 assertEquals(testListStr.replaceAll("\\s+", ""), gotListStr.replaceAll("\\s+", ""));
173 public void testGetFilteredPdpStatistics() throws Exception {
174 assertThatThrownBy(() -> {
175 new PdpStatisticsProvider().getFilteredPdpStatistics(null, NAME, GROUP, SUBGROUP, TIMESTAMP1, TIMESTAMP2,
177 }).hasMessage(DAO_IS_NULL);
179 assertThatThrownBy(() -> {
180 new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, NAME, null, null, TIMESTAMP1, TIMESTAMP2, ORDER,
182 }).hasMessage("pdpGroupName is marked @NonNull but is null");
185 List<PdpStatistics> createdPdpStatisticsList;
186 createdPdpStatisticsList = new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsTestList);
187 createdListStr = createdPdpStatisticsList.toString();
188 assertEquals(createdListStr.replaceAll("\\s+", ""), testListStr.replaceAll("\\s+", ""));
190 List<PdpStatistics> getPdpStatisticsList;
191 getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, NAME, GROUP, null,
192 TIMESTAMP1, TIMESTAMP2, ORDER, 0);
193 assertThat(getPdpStatisticsList).hasSize(1);
194 getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, "name2", GROUP, null,
195 TIMESTAMP1, TIMESTAMP2, ORDER, 0);
196 assertThat(getPdpStatisticsList).hasSize(1);
197 getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, "name2", GROUP, SUBGROUP,
198 TIMESTAMP1, TIMESTAMP2, ORDER, 0);
199 assertThat(getPdpStatisticsList).hasSize(1);
203 public void testUpdatePdpStatistics() throws Exception {
204 assertThatThrownBy(() -> {
205 new PdpStatisticsProvider().updatePdpStatistics(null, null);
206 }).hasMessage(DAO_IS_NULL);
208 pdpStatisticsTestList.get(0).setPdpGroupName(GROUP0);
209 testListStr = pdpStatisticsTestList.toString();
210 List<PdpStatistics> updatePdpStatisticsList =
211 new PdpStatisticsProvider().updatePdpStatistics(pfDao, pdpStatisticsTestList);
212 String gotListStr = updatePdpStatisticsList.toString();
213 assertEquals(testListStr.replaceAll("\\s+", ""), gotListStr.replaceAll("\\s+", ""));
218 public void testDeletePdpStatistics() throws Exception {
219 assertThatThrownBy(() -> {
220 new PdpStatisticsProvider().deletePdpStatistics(null, null, null);
221 }).hasMessage(DAO_IS_NULL);
223 assertThatThrownBy(() -> {
224 new PdpStatisticsProvider().deletePdpStatistics(pfDao, null, null);
225 }).hasMessage("name is marked @NonNull but is null");
227 List<PdpStatistics> deletedPdpStatisticsList =
228 new PdpStatisticsProvider().deletePdpStatistics(pfDao, NAME, null);
229 String gotListStr = deletedPdpStatisticsList.toString();
230 assertEquals(name1ListStr.replaceAll("\\s+", ""), gotListStr.replaceAll("\\s+", ""));