diff options
author | Jim Hahn <jrh3@att.com> | 2019-10-24 13:05:09 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-10-24 13:05:09 +0000 |
commit | 215177cff14cb70d62f104abca9273c349bd118f (patch) | |
tree | 7be4481dfa34191818170ea664410f12daa36192 | |
parent | 633e52e39cc6ff05f6a72603de36109bfdfa636d (diff) | |
parent | 95fa0beded734eb3faab8a1d6595119edc71c85e (diff) |
Merge "Add PolicyPdpNotificationData for generating notifications"
2 files changed, 207 insertions, 0 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/notification/PolicyPdpNotificationData.java b/main/src/main/java/org/onap/policy/pap/main/notification/PolicyPdpNotificationData.java new file mode 100644 index 00000000..a65e46f2 --- /dev/null +++ b/main/src/main/java/org/onap/policy/pap/main/notification/PolicyPdpNotificationData.java @@ -0,0 +1,86 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP PAP + * ================================================================================ + * 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.pap.main.notification; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; +import lombok.Getter; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; + +/** + * Data used to track deploy/undeploy of a policy to PDPs. + */ +@Getter +public class PolicyPdpNotificationData { + private final ToscaPolicyIdentifier policyId; + private final ToscaPolicyTypeIdentifier policyType; + private final Set<String> pdps = new HashSet<>(); + + + /** + * Constructs the object. + * + * @param policyId ID of the policy being deployed/undeployed + * @param policyType type of the associated policy + */ + public PolicyPdpNotificationData(ToscaPolicyIdentifier policyId, ToscaPolicyTypeIdentifier policyType) { + this.policyId = policyId; + this.policyType = policyType; + } + + /** + * Determines if there are any PDPs in the data. + * + * @return {@code true} if the data contains at least one PDP, {@code false} otherwise + */ + public boolean isEmpty() { + return pdps.isEmpty(); + } + + /** + * Adds a PDP to the set of PDPs. + * + * @param pdp PDP to be added + */ + public void add(String pdp) { + pdps.add(pdp); + } + + /** + * Adds PDPs to the set of PDPs. + * + * @param pdps PDPs to be added + */ + public void addAll(Collection<String> pdps) { + this.pdps.addAll(pdps); + } + + /** + * Removes PDPs from the set of PDPs. + * + * @param pdps PDPs to be removed + */ + public void removeAll(Collection<String> pdps) { + this.pdps.removeAll(pdps); + } +} diff --git a/main/src/test/java/org/onap/policy/pap/main/notification/PolicyPdpNotificationDataTest.java b/main/src/test/java/org/onap/policy/pap/main/notification/PolicyPdpNotificationDataTest.java new file mode 100644 index 00000000..cd8b4d32 --- /dev/null +++ b/main/src/test/java/org/onap/policy/pap/main/notification/PolicyPdpNotificationDataTest.java @@ -0,0 +1,121 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP PAP + * ================================================================================ + * 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.pap.main.notification; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.Collections; +import java.util.TreeSet; +import org.junit.Before; +import org.junit.Test; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; + +/** + * Note: this wraps the PDPs in a TreeSet so that the content can be verified without + * worrying about order. + */ +public class PolicyPdpNotificationDataTest { + private static final String PDP1 = "pdp-1"; + private static final String PDP2 = "pdp-2"; + private static final String PDP3 = "pdp-3"; + private static final String PDP4 = "pdp-4"; + + private ToscaPolicyIdentifier policyId; + private ToscaPolicyTypeIdentifier policyType; + private PolicyPdpNotificationData data; + + /** + * Creates various objects, including {@link #data}. + */ + @Before + public void setUp() { + policyId = new ToscaPolicyIdentifier("my-id", "1.2.3"); + policyType = new ToscaPolicyTypeIdentifier("my-type", "3.2.1"); + + data = new PolicyPdpNotificationData(policyId, policyType); + } + + @Test + public void testPolicyPdpNotificationData() { + assertSame(policyId, data.getPolicyId()); + assertSame(policyType, data.getPolicyType()); + assertTrue(data.getPdps().isEmpty()); + } + + @Test + public void testIsEmpty() { + assertTrue(data.isEmpty()); + + data.add(PDP1); + assertFalse(data.isEmpty()); + + data.add(PDP2); + data.add(PDP3); + assertFalse(data.isEmpty()); + + data.removeAll(Arrays.asList(PDP1, PDP3)); + assertFalse(data.isEmpty()); + + data.removeAll(Arrays.asList(PDP2)); + assertTrue(data.isEmpty()); + } + + @Test + public void testAdd() { + data.add(PDP1); + assertEquals("[pdp-1]", new TreeSet<>(data.getPdps()).toString()); + + data.add(PDP3); + assertEquals("[pdp-1, pdp-3]", new TreeSet<>(data.getPdps()).toString()); + } + + @Test + public void testAddAll() { + // verify we can add an empty list + data.addAll(Collections.emptyList()); + assertTrue(data.getPdps().isEmpty()); + + // try a non-empty list + data.addAll(Arrays.asList(PDP1, PDP3)); + assertEquals("[pdp-1, pdp-3]", new TreeSet<>(data.getPdps()).toString()); + } + + @Test + public void testRemoveAll() { + // verify we can remove an empty list + data.removeAll(Collections.emptyList()); + assertTrue(data.getPdps().isEmpty()); + + // now test with non-empty lists + data.addAll(Arrays.asList(PDP1, PDP2, PDP3, PDP4)); + + data.removeAll(Arrays.asList(PDP1, PDP3)); + assertEquals("[pdp-2, pdp-4]", new TreeSet<>(data.getPdps()).toString()); + + data.removeAll(Arrays.asList(PDP2, PDP4)); + assertEquals("[]", new TreeSet<>(data.getPdps()).toString()); + } +} |