aboutsummaryrefslogtreecommitdiffstats
path: root/models-pdp/src
diff options
context:
space:
mode:
Diffstat (limited to 'models-pdp/src')
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java89
-rw-r--r--models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java172
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java4
-rw-r--r--models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java280
4 files changed, 61 insertions, 484 deletions
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java
index 0ff60b90f..45e63e404 100644
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java
+++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatistics.java
@@ -4,6 +4,7 @@
* ================================================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -25,15 +26,19 @@ package org.onap.policy.models.pdp.persistence.concepts;
import java.io.Serializable;
import java.time.Instant;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
-import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
+import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import lombok.AllArgsConstructor;
@@ -42,13 +47,15 @@ import lombok.EqualsAndHashCode;
import lombok.NonNull;
import org.apache.commons.lang3.builder.CompareToBuilder;
import org.eclipse.persistence.annotations.Index;
-import org.onap.policy.common.parameters.annotations.NotNull;
+import org.onap.policy.common.parameters.BeanValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
+import org.onap.policy.common.parameters.annotations.Pattern;
import org.onap.policy.models.base.PfAuthorative;
import org.onap.policy.models.base.PfConcept;
-import org.onap.policy.models.base.PfGeneratedIdKey;
+import org.onap.policy.models.base.PfConceptKey;
import org.onap.policy.models.base.PfKey;
import org.onap.policy.models.base.PfUtils;
-import org.onap.policy.models.base.validation.annotations.VerifyKey;
+import org.onap.policy.models.base.Validated;
import org.onap.policy.models.pdp.concepts.PdpEngineWorkerStatistics;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
@@ -67,10 +74,24 @@ import org.onap.policy.models.pdp.concepts.PdpStatistics;
public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStatistics>, Serializable {
private static final long serialVersionUID = -7312974966820980659L;
- @EmbeddedId
- @VerifyKey
- @NotNull
- private PfGeneratedIdKey key;
+ @Id
+ @Column(name = "ID")
+ @GeneratedValue(strategy = GenerationType.TABLE, generator = "statisticsIdGen")
+ @TableGenerator(
+ name = "statisticsIdGen",
+ table = "sequence",
+ pkColumnName = "SEQ_NAME",
+ valueColumnName = "SEQ_COUNT",
+ pkColumnValue = "SEQ_GEN")
+ private Long generatedId;
+
+ @Column(name = "name", length = 120)
+ @Pattern(regexp = PfKey.NAME_REGEXP)
+ private String name;
+
+ @Column(name = "version", length = 20)
+ @Pattern(regexp = PfKey.VERSION_REGEXP)
+ private String version;
@Column(precision = 3)
@Temporal(TemporalType.TIMESTAMP)
@@ -116,16 +137,8 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
* The Default Constructor creates a {@link JpaPdpStatistics} object with a null key.
*/
public JpaPdpStatistics() {
- this(new PfGeneratedIdKey());
- }
-
- /**
- * The Key Constructor creates a {@link JpaPdpStatistics} object with the given concept key.
- *
- * @param key the key
- */
- public JpaPdpStatistics(@NonNull final PfGeneratedIdKey key) {
- this.key = new PfGeneratedIdKey(key);
+ this.setName(PfKey.NULL_KEY_NAME);
+ this.setVersion(PfKey.NULL_KEY_VERSION);
}
/**
@@ -135,7 +148,9 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
*/
public JpaPdpStatistics(@NonNull final JpaPdpStatistics copyConcept) {
super(copyConcept);
- this.key = new PfGeneratedIdKey(copyConcept.key);
+ this.name = copyConcept.name;
+ this.version = copyConcept.version;
+ this.generatedId = copyConcept.generatedId;
this.timeStamp = copyConcept.timeStamp;
this.pdpGroupName = copyConcept.pdpGroupName;
this.pdpSubGroupName = copyConcept.pdpSubGroupName;
@@ -174,7 +189,9 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
final JpaPdpStatistics other = (JpaPdpStatistics) otherConcept;
return new CompareToBuilder()
- .append(this.key, other.key)
+ .append(this.name, other.name)
+ .append(this.version, other.version)
+ .append(this.generatedId, other.generatedId)
.append(this.timeStamp, other.timeStamp)
.append(this.pdpGroupName, other.pdpGroupName)
.append(this.pdpSubGroupName, other.pdpSubGroupName)
@@ -192,8 +209,8 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
@Override
public PdpStatistics toAuthorative() {
var pdpStatistics = new PdpStatistics();
- pdpStatistics.setPdpInstanceId(key.getName());
- pdpStatistics.setGeneratedId(key.getGeneratedId());
+ pdpStatistics.setPdpInstanceId(name);
+ pdpStatistics.setGeneratedId(generatedId);
pdpStatistics.setTimeStamp(timeStamp.toInstant());
pdpStatistics.setPdpGroupName(pdpGroupName);
pdpStatistics.setPdpSubGroupName(pdpSubGroupName);
@@ -213,12 +230,11 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
@Override
public void fromAuthorative(@NonNull final PdpStatistics pdpStatistics) {
- if (pdpStatistics.getGeneratedId() == null) {
- this.setKey(new PfGeneratedIdKey(pdpStatistics.getPdpInstanceId(), PfKey.NULL_KEY_VERSION));
- } else {
- this.setKey(new PfGeneratedIdKey(pdpStatistics.getPdpInstanceId(),
- PfKey.NULL_KEY_VERSION, pdpStatistics.getGeneratedId()));
+ if (pdpStatistics.getGeneratedId() != null) {
+ this.setGeneratedId(pdpStatistics.getGeneratedId());
}
+ this.setName(pdpStatistics.getPdpInstanceId());
+ this.setVersion(PfKey.NULL_KEY_VERSION);
if (pdpStatistics.getTimeStamp() == null) {
this.setTimeStamp(Date.from(Instant.EPOCH));
} else {
@@ -241,12 +257,18 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
@Override
public List<PfKey> getKeys() {
- return getKey().getKeys();
+ final List<PfKey> keyList = new ArrayList<>();
+ keyList.add(getKey());
+ return keyList;
+ }
+
+ @Override
+ public PfKey getKey() {
+ return new PfConceptKey(name, version);
}
@Override
public void clean() {
- key.clean();
pdpGroupName = pdpGroupName.trim();
pdpSubGroupName = pdpSubGroupName.trim();
if (engineStats != null) {
@@ -255,4 +277,13 @@ public class JpaPdpStatistics extends PfConcept implements PfAuthorative<PdpStat
}
}
}
+
+ @Override
+ public BeanValidationResult validate(@NonNull String fieldName) {
+ BeanValidationResult result = super.validate(fieldName);
+ if (PfKey.NULL_KEY_NAME.equals(name)) {
+ result.addResult("name", name, ValidationStatus.INVALID, Validated.IS_NULL);
+ }
+ return result;
+ }
}
diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java
deleted file mode 100644
index 0b3f32cf5..000000000
--- a/models-pdp/src/main/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProvider.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP Policy Model
- * ================================================================================
- * Copyright (C) 2019-2021 Nordix Foundation.
- * Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.pdp.persistence.provider;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-import javax.ws.rs.core.Response;
-import lombok.NonNull;
-import org.onap.policy.common.parameters.BeanValidationResult;
-import org.onap.policy.models.base.PfGeneratedIdKey;
-import org.onap.policy.models.base.PfKey;
-import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.base.PfModelRuntimeException;
-import org.onap.policy.models.dao.PfDao;
-import org.onap.policy.models.dao.PfFilterParameters;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
-import org.onap.policy.models.pdp.persistence.concepts.JpaPdpStatistics;
-
-
-/**
- * This class provides the provision of information on PAP concepts in the database to callers.
- *
- * @author Ning Xi (ning.xi@est.tech)
- */
-public class PdpStatisticsProvider {
- private static final int DEFAULT_RECORD_COUNT = 10;
- private static final int MAX_RECORD_COUNT = 100;
-
- /**
- * Get filtered PDP statistics.
- *
- * @param dao the DAO to use to access the database
- * @param filterParams filter parameters
- * @return the PDP statistics found
- * @throws PfModelException on errors getting policies
- */
- public List<PdpStatistics> getFilteredPdpStatistics(@NonNull final PfDao dao,
- PdpFilterParameters filterParams) {
-
- if (filterParams.getRecordNum() <= 0) {
- filterParams.setRecordNum(DEFAULT_RECORD_COUNT);
-
- } else if (filterParams.getRecordNum() > MAX_RECORD_COUNT) {
- filterParams.setRecordNum(MAX_RECORD_COUNT);
- }
-
- return asPdpStatisticsList(dao.getFiltered(JpaPdpStatistics.class, filterParams));
- }
-
- /**
- * Creates PDP statistics.
- *
- * @param dao the DAO to use to access the database
- * @param pdpStatisticsList a specification of the PDP statistics to create
- * @return the PDP statistics created
- * @throws PfModelException on errors creating PDP statistics
- */
- public List<PdpStatistics> createPdpStatistics(@NonNull final PfDao dao,
- @NonNull final List<PdpStatistics> pdpStatisticsList) throws PfModelException {
- for (PdpStatistics pdpStatistics : pdpStatisticsList) {
- var jpaPdpStatistics = new JpaPdpStatistics();
- jpaPdpStatistics.fromAuthorative(pdpStatistics);
- BeanValidationResult validationResult = jpaPdpStatistics.validate("pdp statistics");
- if (!validationResult.isValid()) {
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult());
- }
-
- dao.create(jpaPdpStatistics);
- pdpStatistics.setGeneratedId(jpaPdpStatistics.getKey().getGeneratedId());
- }
-
- // Return the created PDP statistics
- List<PdpStatistics> pdpStatistics = new ArrayList<>(pdpStatisticsList.size());
-
- for (PdpStatistics pdpStatisticsItem : pdpStatisticsList) {
- var jpaPdpStatistics =
- dao.get(JpaPdpStatistics.class, new PfGeneratedIdKey(pdpStatisticsItem.getPdpInstanceId(),
- PfKey.NULL_KEY_VERSION, pdpStatisticsItem.getGeneratedId()));
- pdpStatistics.add(jpaPdpStatistics.toAuthorative());
- }
- return pdpStatistics;
- }
-
- /**
- * Updates PDP statistics.
- *
- * @param dao the DAO to use to access the database
- * @param pdpStatisticsList a specification of the PDP statistics to update
- * @return the PDP statistics updated
- * @throws PfModelException on errors updating PDP statistics
- */
- public List<PdpStatistics> updatePdpStatistics(@NonNull final PfDao dao,
- @NonNull final List<PdpStatistics> pdpStatisticsList) throws PfModelException {
-
- for (PdpStatistics pdpStatistics : pdpStatisticsList) {
- var jpaPdpStatistics = new JpaPdpStatistics();
- jpaPdpStatistics.fromAuthorative(pdpStatistics);
-
- BeanValidationResult validationResult = jpaPdpStatistics.validate("pdp statistics");
- if (!validationResult.isValid()) {
- throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, validationResult.getResult());
- }
-
- dao.update(jpaPdpStatistics);
- }
-
- // Return the created PDP statistics
- List<PdpStatistics> pdpStatistics = new ArrayList<>(pdpStatisticsList.size());
-
- for (PdpStatistics pdpStatisticsItem : pdpStatisticsList) {
- var jpaPdpStatistics =
- dao.get(JpaPdpStatistics.class, new PfGeneratedIdKey(pdpStatisticsItem.getPdpInstanceId(),
- PfKey.NULL_KEY_VERSION, pdpStatisticsItem.getGeneratedId()));
- pdpStatistics.add(jpaPdpStatistics.toAuthorative());
- }
-
- return pdpStatistics;
- }
-
- /**
- * Delete a PDP statistics.
- *
- * @param dao the DAO to use to access the database
- * @param name the name of the policy to get, null to get all PDP statistics
- * @param timestamp the timeStamp of statistics to delete, null to delete all statistics record of given PDP
- * @return the PDP statistics list deleted
- * @throws PfModelException on errors deleting PDP statistics
- */
- public List<PdpStatistics> deletePdpStatistics(@NonNull final PfDao dao, @NonNull final String name,
- final Instant timestamp) {
- List<PdpStatistics> pdpStatisticsListToDel = asPdpStatisticsList(dao.getFiltered(JpaPdpStatistics.class,
- PfFilterParameters.builder().name(name).startTime(timestamp).endTime(timestamp).build()));
-
- pdpStatisticsListToDel.stream().forEach(s -> dao.delete(JpaPdpStatistics.class,
- new PfGeneratedIdKey(s.getPdpInstanceId(), PfKey.NULL_KEY_VERSION, s.getGeneratedId())));
-
- return pdpStatisticsListToDel;
- }
-
- /**
- * Convert JPA PDP statistics list to an PDP statistics list.
- *
- * @param jpaPdpStatisticsList the list to convert
- * @return the PDP statistics list
- */
- private List<PdpStatistics> asPdpStatisticsList(List<JpaPdpStatistics> jpaPdpStatisticsList) {
- return jpaPdpStatisticsList.stream().map(JpaPdpStatistics::toAuthorative).collect(Collectors.toList());
- }
-}
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java
index 7c0522ff9..505e3f685 100644
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java
+++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/concepts/JpaPdpStatisticsTest.java
@@ -2,6 +2,7 @@
* ============LICENSE_START=======================================================
* Copyright (C) 2019-2021 Nordix Foundation.
* Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -31,7 +32,6 @@ import static org.junit.Assert.assertTrue;
import java.time.Instant;
import java.util.ArrayList;
import org.junit.Test;
-import org.onap.policy.models.base.PfGeneratedIdKey;
import org.onap.policy.models.pdp.concepts.PdpStatistics;
/**
@@ -41,14 +41,12 @@ public class JpaPdpStatisticsTest {
@Test
public void testConstructor() {
- assertThatThrownBy(() -> new JpaPdpStatistics((PfGeneratedIdKey) null)).hasMessageContaining("key");
assertThatThrownBy(() -> new JpaPdpStatistics((JpaPdpStatistics) null)).hasMessageContaining("copyConcept");
assertThatThrownBy(() -> new JpaPdpStatistics((PdpStatistics) null)).hasMessageContaining("authorativeConcept");
assertNotNull(new JpaPdpStatistics());
- assertNotNull(new JpaPdpStatistics(new PfGeneratedIdKey()));
PdpStatistics pdpStat = createPdpStatistics();
JpaPdpStatistics jpaPdpStat = new JpaPdpStatistics(createPdpStatistics());
diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java
deleted file mode 100644
index 90b85b5ae..000000000
--- a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpStatisticsProviderTest.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * Copyright (C) 2020-2021 Nordix Foundation.
- * Modifications Copyright (C) 2020-2021 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.models.pdp.persistence.provider;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
-import java.time.Instant;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-import org.eclipse.persistence.config.PersistenceUnitProperties;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.onap.policy.models.base.Validated;
-import org.onap.policy.models.dao.DaoParameters;
-import org.onap.policy.models.dao.PfDao;
-import org.onap.policy.models.dao.PfDaoFactory;
-import org.onap.policy.models.dao.impl.DefaultPfDao;
-import org.onap.policy.models.pdp.concepts.PdpEngineWorkerStatistics;
-import org.onap.policy.models.pdp.concepts.PdpStatistics;
-
-public class PdpStatisticsProviderTest {
- private static final String DAO_IS_NULL = "dao is marked .*ull but is null";
- private static final String LIST_IS_NULL = "pdpStatisticsList is marked .*ull but is null";
- private static final String GROUP0 = "group0";
- private static final String NAME = "name";
- private static final String GROUP = "group";
- private static final String SUBGROUP = "subgroup";
- private static final Instant TIMESTAMP1 = Instant.ofEpochSecond(1078884319);
- private static final Instant TIMESTAMP2 = Instant.ofEpochSecond(1078884350);
-
- private PfDao pfDao;
-
- private List<PdpEngineWorkerStatistics> engineStats = new ArrayList<>();
- private PdpStatistics pdpStatistics11;
- private PdpStatistics pdpStatistics12;
- private PdpStatistics pdpStatistics22;
- private PdpStatistics pdpStatistics31;
-
- // checkstyle complained about this as a local variable; had to make it a field
- private long genId;
-
- /**
- * Set up test Dao.
- */
- @Before
- public void setupDao() throws Exception {
- final DaoParameters daoParameters = new DaoParameters();
- daoParameters.setPluginClass(DefaultPfDao.class.getName());
-
- daoParameters.setPersistenceUnit("ToscaConceptTest");
-
- Properties jdbcProperties = new Properties();
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY");
-
- if (System.getProperty("USE-MARIADB") != null) {
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.mariadb.jdbc.Driver");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:mariadb://localhost:3306/policy");
- } else {
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver");
- jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:PdpStatisticsProviderTest");
- }
-
- daoParameters.setJdbcProperties(jdbcProperties);
-
- pfDao = new PfDaoFactory().createPfDao(daoParameters);
- pfDao.init(daoParameters);
-
- genId = 1;
-
- pdpStatistics11 = new PdpStatistics();
- pdpStatistics11.setPdpInstanceId(NAME);
- pdpStatistics11.setTimeStamp(TIMESTAMP1);
- pdpStatistics11.setGeneratedId(genId++);
- pdpStatistics11.setPdpGroupName(GROUP);
- pdpStatistics11.setPdpSubGroupName(SUBGROUP);
- pdpStatistics11.setPolicyDeployCount(2);
- pdpStatistics11.setPolicyDeployFailCount(1);
- pdpStatistics11.setPolicyDeploySuccessCount(1);
- pdpStatistics11.setPolicyExecutedCount(2);
- pdpStatistics11.setPolicyExecutedFailCount(1);
- pdpStatistics11.setPolicyExecutedSuccessCount(1);
- pdpStatistics11.setEngineStats(engineStats);
-
- pdpStatistics12 = new PdpStatistics();
- pdpStatistics12.setPdpInstanceId(NAME);
- pdpStatistics12.setTimeStamp(TIMESTAMP2);
- pdpStatistics12.setGeneratedId(genId++);
- pdpStatistics12.setPdpGroupName(GROUP);
- pdpStatistics12.setPdpSubGroupName(SUBGROUP);
- pdpStatistics12.setPolicyDeployCount(2);
- pdpStatistics12.setPolicyDeployFailCount(1);
- pdpStatistics12.setPolicyDeploySuccessCount(1);
- pdpStatistics12.setPolicyExecutedCount(2);
- pdpStatistics12.setPolicyExecutedFailCount(1);
- pdpStatistics12.setPolicyExecutedSuccessCount(1);
- pdpStatistics12.setEngineStats(engineStats);
-
- pdpStatistics22 = new PdpStatistics();
- pdpStatistics22.setPdpInstanceId("name2");
- pdpStatistics22.setTimeStamp(TIMESTAMP2);
- pdpStatistics22.setGeneratedId(genId++);
- pdpStatistics22.setPdpGroupName(GROUP);
- pdpStatistics22.setPdpSubGroupName(SUBGROUP);
- pdpStatistics22.setPolicyDeployCount(2);
- pdpStatistics22.setPolicyDeployFailCount(1);
- pdpStatistics22.setPolicyDeploySuccessCount(1);
- pdpStatistics22.setPolicyExecutedCount(2);
- pdpStatistics22.setPolicyExecutedFailCount(1);
- pdpStatistics22.setPolicyExecutedSuccessCount(1);
- pdpStatistics22.setEngineStats(engineStats);
-
- pdpStatistics31 = new PdpStatistics();
- pdpStatistics31.setPdpInstanceId("name3");
- pdpStatistics31.setTimeStamp(TIMESTAMP1);
- pdpStatistics31.setGeneratedId(genId++);
- pdpStatistics31.setPdpGroupName(GROUP);
- pdpStatistics31.setPdpSubGroupName(SUBGROUP);
- pdpStatistics31.setPolicyDeployCount(2);
- pdpStatistics31.setPolicyDeployFailCount(1);
- pdpStatistics31.setPolicyDeploySuccessCount(1);
- pdpStatistics31.setPolicyExecutedCount(2);
- pdpStatistics31.setPolicyExecutedFailCount(1);
- pdpStatistics31.setPolicyExecutedSuccessCount(1);
- pdpStatistics31.setEngineStats(engineStats);
-
- List<PdpStatistics> create = List.of(pdpStatistics11, pdpStatistics22, pdpStatistics31, pdpStatistics12);
- List<PdpStatistics> createdPdpStatisticsList = new PdpStatisticsProvider().createPdpStatistics(pfDao, create);
-
- // these should match AND be in the same order
- assertThat(createdPdpStatisticsList).isEqualTo(create);
- }
-
- @After
- public void teardown() {
- pfDao.close();
- }
-
- @Test
- public void testNotOkPdpStatistics() {
- PdpStatistics pdpStatisticsErr = new PdpStatistics();
- pdpStatisticsErr.setPdpInstanceId("NULL");
- pdpStatisticsErr.setPdpGroupName(GROUP);
- ArrayList<PdpStatistics> pdpStatisticsNullList = new ArrayList<>();
- pdpStatisticsNullList.add(pdpStatisticsErr);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().createPdpStatistics(pfDao, null);
- }).hasMessageMatching(LIST_IS_NULL);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().updatePdpStatistics(pfDao, null);
- }).hasMessageMatching(LIST_IS_NULL);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().createPdpStatistics(pfDao, pdpStatisticsNullList);
- }).hasMessageContaining("pdp statistics").hasMessageContaining("key")
- .hasMessageContaining(Validated.IS_A_NULL_KEY);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().updatePdpStatistics(pfDao, pdpStatisticsNullList);
- }).hasMessageContaining("pdp statistics").hasMessageContaining("key")
- .hasMessageContaining(Validated.IS_A_NULL_KEY);
- }
-
- @Test
- public void testGetFilteredPdpStatistics() throws Exception {
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().getFilteredPdpStatistics(null, PdpFilterParameters.builder().build());
- }).hasMessageMatching(DAO_IS_NULL);
-
- List<PdpStatistics> getPdpStatisticsList;
-
- // empty filter - should return everything
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics11, pdpStatistics12, pdpStatistics22, pdpStatistics31));
-
- // match on name - returns multiple records
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).group(GROUP).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics11, pdpStatistics12));
-
- // this name only has one record
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name("name2").group(GROUP).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics22));
-
- // match on subgroup
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao,
- PdpFilterParameters.builder().name("name2").group(GROUP).subGroup(SUBGROUP)
- .startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics22));
-
- // only request one record
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).recordNum(1).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics12));
-
- // request too many records
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).recordNum(10000).build());
- verifyEquals(getPdpStatisticsList, List.of(pdpStatistics11, pdpStatistics12));
-
- // group mismatch
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao, PdpFilterParameters
- .builder().name(NAME).group(GROUP0).startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- assertThat(getPdpStatisticsList).isEmpty();
-
- // subgroup mismatch
- getPdpStatisticsList = new PdpStatisticsProvider().getFilteredPdpStatistics(pfDao,
- PdpFilterParameters.builder().name("name2").group(GROUP).subGroup("subgroup2")
- .startTime(TIMESTAMP1).endTime(TIMESTAMP2).build());
- assertThat(getPdpStatisticsList).isEmpty();
- }
-
- @Test
- public void testUpdatePdpStatistics() throws Exception {
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().updatePdpStatistics(null, null);
- }).hasMessageMatching(DAO_IS_NULL);
-
- pdpStatistics11.setPdpGroupName(GROUP0);
- List<PdpStatistics> update = List.of(pdpStatistics11);
- List<PdpStatistics> updatePdpStatisticsList = new PdpStatisticsProvider().updatePdpStatistics(pfDao, update);
-
- // these should match AND be in the same order
- assertThat(updatePdpStatisticsList).isEqualTo(update);
- }
-
- @Test
- public void testDeletePdpStatistics() throws Exception {
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().deletePdpStatistics(null, null, null);
- }).hasMessageMatching(DAO_IS_NULL);
-
- assertThatThrownBy(() -> {
- new PdpStatisticsProvider().deletePdpStatistics(pfDao, null, null);
- }).hasMessageMatching("name is marked .*ull but is null");
-
- List<PdpStatistics> deletedPdpStatisticsList =
- new PdpStatisticsProvider().deletePdpStatistics(pfDao, NAME, null);
- verifyEquals(deletedPdpStatisticsList, List.of(pdpStatistics12, pdpStatistics11));
- }
-
- private void verifyEquals(List<PdpStatistics> list1, List<PdpStatistics> list2) {
- assertThat(sort(list1)).isEqualTo(sort(list2));
- }
-
- private List<PdpStatistics> sort(List<PdpStatistics> list1) {
- List<PdpStatistics> list2 = new ArrayList<>(list1);
- Collections.sort(list2, (stat1, stat2) -> stat1.getGeneratedId().compareTo(stat2.getGeneratedId()));
-
- return list2;
- }
-}