From ada98e3bfe5906f238a058c4ef056603dd0dbe63 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Mon, 14 Oct 2019 11:34:15 -0400 Subject: [PATCH] Add PAP Policy Notification classes Added classes that PAP will use to publish to DMaaP to indicate policy status changes (i.e., added/removed from PDPs). Modified serialized name of the policy identified to match other uses (e.g., PAP REST API calls). Added policy type, per review comments. Change-Id: I66131fa9ae0b63081f239e7f402b7fea65c434a5 Issue-ID: POLICY-1841 Signed-off-by: Jim Hahn --- .../models/pap/concepts/PolicyNotification.java | 48 +++++++++++++++++ .../policy/models/pap/concepts/PolicyStatus.java | 60 +++++++++++++++++++++ .../pap/concepts/PolicyNotificationTest.java | 60 +++++++++++++++++++++ .../models/pap/concepts/PolicyStatusTest.java | 61 ++++++++++++++++++++++ 4 files changed, 229 insertions(+) create mode 100644 models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyNotification.java create mode 100644 models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyStatus.java create mode 100644 models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyNotificationTest.java create mode 100644 models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyStatusTest.java diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyNotification.java b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyNotification.java new file mode 100644 index 000000000..a9c22c463 --- /dev/null +++ b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyNotification.java @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * 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.pap.concepts; + +import com.google.gson.annotations.SerializedName; +import java.util.ArrayList; +import java.util.List; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +public class PolicyNotification { + + /** + * Status of policies that are being added to PDPs. + */ + @SerializedName("added-policies") + private List added = new ArrayList<>(); + + /** + * Status of policies that are being deleted from PDPs. + */ + @SerializedName("deleted-policies") + private List deleted = new ArrayList<>(); + + + public PolicyNotification(List added, List deleted) { + this.added = added; + this.deleted = deleted; + } +} diff --git a/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyStatus.java b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyStatus.java new file mode 100644 index 000000000..56d6c6909 --- /dev/null +++ b/models-pap/src/main/java/org/onap/policy/models/pap/concepts/PolicyStatus.java @@ -0,0 +1,60 @@ +/*- + * ============LICENSE_START======================================================= + * 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.pap.concepts; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; + +@Data +@NoArgsConstructor +public class PolicyStatus { + + @SerializedName("policy-type") + private ToscaPolicyTypeIdentifier policyType; + + @SerializedName("policy") + private ToscaPolicyIdentifier policy; + + /** + * Number of PDPs that have successfully added/deleted the policy. + */ + @SerializedName("success-count") + private int successCount = 0; + + /** + * Number of PDPs that were unable to add/delete the policy. + */ + @SerializedName("failure-count") + private int failureCount = 0; + + /** + * Number of PDPs that have not completed the add/delete operation. + */ + @SerializedName("incomplete-count") + private int incompleteCount = 0; + + + public PolicyStatus(ToscaPolicyTypeIdentifier policyType, ToscaPolicyIdentifier policy) { + this.policyType = policyType; + this.policy = policy; + } +} diff --git a/models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyNotificationTest.java b/models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyNotificationTest.java new file mode 100644 index 000000000..3c7b0cab6 --- /dev/null +++ b/models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyNotificationTest.java @@ -0,0 +1,60 @@ +/*- + * ============LICENSE_START======================================================= + * 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.pap.concepts; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; + +import java.util.Arrays; +import java.util.List; +import org.junit.Test; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; + +/** + * This only tests the methods that aren't already tested via TestModels. + */ +public class PolicyNotificationTest { + + @Test + public void test() throws CoderException { + PolicyStatus statusAdd1 = new PolicyStatus(); + statusAdd1.setSuccessCount(10); + PolicyStatus statusAdd2 = new PolicyStatus(); + statusAdd2.setFailureCount(20); + List add = Arrays.asList(statusAdd1, statusAdd2); + + PolicyStatus statusDel1 = new PolicyStatus(); + statusDel1.setIncompleteCount(30); + PolicyStatus statusDel2 = new PolicyStatus(); + List del = Arrays.asList(statusDel1, statusDel2); + + // test constructor with arguments + PolicyNotification notify = new PolicyNotification(add, del); + assertSame(add, notify.getAdded()); + assertSame(del, notify.getDeleted()); + + // encode & decode + StandardCoder coder = new StandardCoder(); + PolicyNotification notify2 = coder.decode(coder.encode(notify), PolicyNotification.class); + + // test equals() method (and verify encode/decode worked) + assertEquals(notify, notify2); + } +} diff --git a/models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyStatusTest.java b/models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyStatusTest.java new file mode 100644 index 000000000..0a00e7b60 --- /dev/null +++ b/models-pap/src/test/java/org/onap/policy/models/pap/concepts/PolicyStatusTest.java @@ -0,0 +1,61 @@ +/*- + * ============LICENSE_START======================================================= + * 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.pap.concepts; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; + +import org.junit.Test; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; + +/** + * This only tests the methods that aren't already tested via TestModels. + */ +public class PolicyStatusTest { + + @Test + public void test() throws CoderException { + ToscaPolicyTypeIdentifier type = new ToscaPolicyTypeIdentifier("my-type", "3.2.1"); + ToscaPolicyIdentifier policy = new ToscaPolicyIdentifier("my-name", "1.2.3"); + + // test constructor with arguments + PolicyStatus status = new PolicyStatus(type, policy); + assertSame(type, status.getPolicyType()); + assertSame(policy, status.getPolicy()); + + assertEquals(0, status.getSuccessCount()); + assertEquals(0, status.getFailureCount()); + assertEquals(0, status.getIncompleteCount()); + + // change values + status.setFailureCount(10); + status.setIncompleteCount(20); + status.setSuccessCount(30); + + // encode & decode + StandardCoder coder = new StandardCoder(); + PolicyStatus status2 = coder.decode(coder.encode(status), PolicyStatus.class); + + // test equals() method (and verify encode/decode worked) + assertEquals(status, status2); + } +} -- 2.16.6