From: Jim Hahn Date: Thu, 25 Apr 2019 22:39:48 +0000 (-0400) Subject: Add copy constructor for PdpStatus X-Git-Tag: 3.0.2-ONAP^0 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=35b63d77bd8887fcc74f28b2d21f1c8faabc9df5;p=policy%2Fmodels.git Add copy constructor for PdpStatus Change-Id: Id818d3b16355ad3f3a96ff4456ec8e8062055f98 Issue-ID: POLICY-1645 Signed-off-by: Jim Hahn --- diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpResponseDetails.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpResponseDetails.java index c28d01a3e..6b5bd6cea 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpResponseDetails.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpResponseDetails.java @@ -22,6 +22,7 @@ package org.onap.policy.models.pdp.concepts; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; import org.onap.policy.models.pdp.enums.PdpResponseStatus; @@ -34,10 +35,22 @@ import org.onap.policy.models.pdp.enums.PdpResponseStatus; @Getter @Setter @ToString +@NoArgsConstructor public class PdpResponseDetails { // The responseTo field should match the original request id in the request. private String responseTo; private PdpResponseStatus responseStatus; private String responseMessage; + + /** + * Constructs the object, making a deep copy. + * + * @param source source from which to copy + */ + public PdpResponseDetails(PdpResponseDetails source) { + this.responseMessage = source.responseMessage; + this.responseStatus = source.responseStatus; + this.responseTo = source.responseTo; + } } diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatistics.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatistics.java index 36e8d00f8..1847eed77 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatistics.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatistics.java @@ -22,6 +22,7 @@ package org.onap.policy.models.pdp.concepts; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; @@ -33,6 +34,7 @@ import lombok.ToString; @Getter @Setter @ToString +@NoArgsConstructor public class PdpStatistics { private String pdpInstanceId; @@ -42,4 +44,19 @@ public class PdpStatistics { private long policyExecutedCount; private long policyExecutedSuccessCount; private long policyExecutedFailCount; + + /** + * Constructs the object, making a deep copy. + * + * @param source source from which to copy + */ + public PdpStatistics(PdpStatistics source) { + this.pdpInstanceId = source.pdpInstanceId; + this.policyDeployCount = source.policyDeployCount; + this.policyDeployFailCount = source.policyDeployFailCount; + this.policyDeploySuccessCount = source.policyDeploySuccessCount; + this.policyExecutedCount = source.policyExecutedCount; + this.policyExecutedFailCount = source.policyExecutedFailCount; + this.policyExecutedSuccessCount = source.policyExecutedSuccessCount; + } } diff --git a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java index 5858b6acd..3655aa796 100644 --- a/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java +++ b/models-pdp/src/main/java/org/onap/policy/models/pdp/concepts/PdpStatus.java @@ -25,6 +25,7 @@ import java.util.List; import lombok.Getter; import lombok.Setter; import lombok.ToString; +import org.onap.policy.models.base.PfUtils; import org.onap.policy.models.pdp.enums.PdpHealthStatus; import org.onap.policy.models.pdp.enums.PdpMessageType; import org.onap.policy.models.pdp.enums.PdpState; @@ -64,4 +65,24 @@ public class PdpStatus extends PdpMessage { public PdpStatus() { super(PdpMessageType.PDP_STATUS); } + + /** + * Constructs the object, making a deep copy. + * + * @param source source from which to copy + */ + public PdpStatus(PdpStatus source) { + super(source); + + this.pdpType = source.pdpType; + this.state = source.state; + this.healthy = source.healthy; + this.description = source.description; + this.supportedPolicyTypes = PfUtils.mapList(source.supportedPolicyTypes, ToscaPolicyTypeIdentifier::new); + this.policies = PfUtils.mapList(source.policies, ToscaPolicyIdentifier::new); + this.deploymentInstanceInfo = source.deploymentInstanceInfo; + this.properties = source.properties; + this.statistics = (source.statistics == null ? null : new PdpStatistics(source.statistics)); + this.response = (source.response == null ? null : new PdpResponseDetails(source.response)); + } } diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpResponseDetailsTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpResponseDetailsTest.java new file mode 100644 index 000000000..f21a0a5bb --- /dev/null +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpResponseDetailsTest.java @@ -0,0 +1,50 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.onap.policy.models.pdp.concepts.PdpMessageUtils.removeVariableFields; + +import org.junit.Test; +import org.onap.policy.models.pdp.enums.PdpResponseStatus; + +public class PdpResponseDetailsTest { + + @Test + public void testCopyConstructor() { + assertThatThrownBy(() -> new PdpResponseDetails(null)).isInstanceOf(NullPointerException.class); + + PdpResponseDetails orig = new PdpResponseDetails(); + + // verify with null values + assertEquals(removeVariableFields(orig.toString()), + removeVariableFields(new PdpResponseDetails(orig).toString())); + + // verify with all values + orig.setResponseMessage("my-message"); + orig.setResponseStatus(PdpResponseStatus.FAIL); + orig.setResponseTo("original-request-id"); + + assertEquals(removeVariableFields(orig.toString()), + removeVariableFields(new PdpResponseDetails(orig).toString())); + } +} diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpStatisticsTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpStatisticsTest.java new file mode 100644 index 000000000..08098cc28 --- /dev/null +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpStatisticsTest.java @@ -0,0 +1,53 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.onap.policy.models.pdp.concepts.PdpMessageUtils.removeVariableFields; + +import org.junit.Test; + +public class PdpStatisticsTest { + + @Test + public void testCopyConstructor() { + assertThatThrownBy(() -> new PdpStatistics(null)).isInstanceOf(NullPointerException.class); + + PdpStatistics orig = new PdpStatistics(); + + // verify with null values + assertEquals(removeVariableFields(orig.toString()), removeVariableFields(new PdpStatistics(orig).toString())); + + // verify with all values + orig.setPdpInstanceId("my-instance"); + + int count = 1; + orig.setPolicyDeployCount(count++); + orig.setPolicyDeployFailCount(count++); + orig.setPolicyDeploySuccessCount(count++); + orig.setPolicyExecutedCount(count++); + orig.setPolicyExecutedFailCount(count++); + orig.setPolicyExecutedSuccessCount(count++); + + assertEquals(removeVariableFields(orig.toString()), removeVariableFields(new PdpStatistics(orig).toString())); + } +} diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpStatusTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpStatusTest.java new file mode 100644 index 000000000..3284d95ff --- /dev/null +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/concepts/PdpStatusTest.java @@ -0,0 +1,73 @@ +/* + * ============LICENSE_START======================================================= + * ONAP Policy Models + * ================================================================================ + * Copyright (C) 2019 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.pdp.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.onap.policy.models.pdp.concepts.PdpMessageUtils.removeVariableFields; + +import java.util.Arrays; +import java.util.Collections; +import org.junit.Test; +import org.onap.policy.models.pdp.enums.PdpHealthStatus; +import org.onap.policy.models.pdp.enums.PdpState; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; + +public class PdpStatusTest { + + @Test + public void testCopyConstructor() { + assertThatThrownBy(() -> new PdpStatus(null)).isInstanceOf(NullPointerException.class); + + PdpStatus orig = new PdpStatus(); + + // verify with null values + orig.setSupportedPolicyTypes(Collections.emptyList()); + orig.setPolicies(Collections.emptyList()); + assertEquals(removeVariableFields(orig.toString()), removeVariableFields(new PdpStatus(orig).toString())); + + // verify with all values + orig.setDeploymentInstanceInfo("my-deployment"); + orig.setDescription("my-description"); + orig.setHealthy(PdpHealthStatus.NOT_HEALTHY); + orig.setName("my-name"); + orig.setPdpGroup("my-group"); + orig.setPdpSubgroup("my-subgroup"); + orig.setPdpType("my-type"); + orig.setPolicies(Arrays.asList(new ToscaPolicyIdentifier("policy-A", "1.0.0"))); + orig.setProperties("my-properties"); + + PdpResponseDetails resp = new PdpResponseDetails(); + resp.setResponseMessage("my-response"); + + orig.setResponse(resp); + orig.setState(PdpState.SAFE); + + PdpStatistics stats = new PdpStatistics(); + stats.setPdpInstanceId("my-pdp-id"); + + orig.setStatistics(stats); + orig.setSupportedPolicyTypes(Arrays.asList(new ToscaPolicyTypeIdentifier("type-A", "2.0.0"))); + + assertEquals(removeVariableFields(orig.toString()), removeVariableFields(new PdpStatus(orig).toString())); + } +}