2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.pap.main.notification;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertSame;
26 import static org.junit.Assert.assertTrue;
28 import java.util.Arrays;
29 import java.util.Collection;
30 import java.util.List;
31 import org.junit.Before;
32 import org.junit.Test;
33 import org.onap.policy.models.pap.concepts.PolicyStatus;
34 import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier;
36 public class PolicyTrackerDataTest {
38 private static final ToscaPolicyTypeIdentifier TYPE = new ToscaPolicyTypeIdentifier("my-type", "1.2.3");
39 private static final String PDP1 = "pdp-1";
40 private static final String PDP2 = "pdp-2";
41 private static final String PDP3 = "pdp-3";
42 private static final String PDP4 = "pdp-4";
43 private static final String PDP5 = "pdp-5";
44 private static final String PDP6 = "pdp-6";
46 private Collection<String> fullSet;
47 private PolicyTrackerData data;
51 fullSet = Arrays.asList(PDP1, PDP2, PDP3, PDP4, PDP5, PDP6);
52 data = new PolicyTrackerData(TYPE);
56 public void testPolicyTrackerData_testGetPolicyType() {
57 assertSame(TYPE, data.getPolicyType());
61 public void testIsComplete() {
62 assertTrue(data.isComplete());
64 data.addPdps(Arrays.asList(PDP1, PDP2));
65 assertFalse(data.isComplete());
68 assertFalse(data.isComplete());
71 assertTrue(data.isComplete());
75 public void testIsEmpty() {
76 assertTrue(data.isEmpty());
78 data.addPdps(Arrays.asList(PDP1, PDP2));
79 assertFalse(data.isEmpty());
82 assertFalse(data.isEmpty());
85 assertFalse(data.isEmpty());
88 assertFalse(data.isEmpty());
91 assertTrue(data.isEmpty());
95 public void testPutValuesInto() {
96 data.addPdps(fullSet);
101 PolicyStatus status = new PolicyStatus();
102 data.putValuesInto(status);
104 assertEquals(1, status.getSuccessCount());
105 assertEquals(2, status.getFailureCount());
106 assertEquals(3, status.getIncompleteCount());
110 public void testAddPdps_testSuccess_testFail() {
111 data.addPdps(Arrays.asList(PDP1, PDP2, PDP3, PDP4));
112 assertEquals("[0, 0, 4]", getCounts().toString());
115 assertEquals("[1, 0, 3]", getCounts().toString());
118 assertEquals("[2, 0, 2]", getCounts().toString());
122 assertEquals("[2, 0, 2]", getCounts().toString());
125 assertEquals("[2, 1, 1]", getCounts().toString());
129 assertEquals("[2, 1, 1]", getCounts().toString());
131 data.addPdps(Arrays.asList(PDP2, PDP3, PDP4, PDP5));
133 // PDP1 is still success
134 assertEquals("[1, 0, 4]", getCounts().toString());
138 public void testRemovePdps() {
139 data.addPdps(Arrays.asList(PDP1, PDP2, PDP3, PDP4, PDP5, PDP6));
144 assertFalse(data.removePdps(Arrays.asList(PDP1, PDP3, PDP5)));
145 assertEquals("[1, 1, 1]", getCounts().toString());
149 * Tests removePdps(), where nothing is removed from the "incomplete" set.
152 public void testRemovePdpsNoIncompleteRemove() {
153 assertFalse(data.removePdps(Arrays.asList(PDP1, PDP2)));
154 assertEquals("[0, 0, 0]", getCounts().toString());
158 * Tests removePdps(), where remaining incomplete items are removed.
161 public void testRemovePdpsAllComplete() {
162 data.addPdps(Arrays.asList(PDP1));
163 assertTrue(data.removePdps(Arrays.asList(PDP1)));
165 data.addPdps(Arrays.asList(PDP1, PDP2, PDP3));
166 assertFalse(data.removePdps(Arrays.asList(PDP1)));
167 assertTrue(data.removePdps(Arrays.asList(PDP2, PDP3)));
171 public void testRemovePdp() {
172 data.addPdps(Arrays.asList(PDP1, PDP2, PDP3, PDP4, PDP5, PDP6));
178 assertFalse(data.removePdp(PDP1));
179 assertEquals("[1, 2, 2]", getCounts().toString());
181 assertFalse(data.removePdp(PDP2));
182 assertEquals("[0, 2, 2]", getCounts().toString());
184 assertFalse(data.removePdp(PDP3));
185 assertEquals("[0, 1, 2]", getCounts().toString());
187 assertFalse(data.removePdp(PDP4));
188 assertEquals("[0, 0, 2]", getCounts().toString());
190 assertFalse(data.removePdp(PDP5));
191 assertEquals("[0, 0, 1]", getCounts().toString());
193 assertTrue(data.removePdp(PDP6));
194 assertEquals("[0, 0, 0]", getCounts().toString());
198 * Tests removePdps(), where nothing is removed from the "incomplete" set.
201 public void testRemovePdpNoIncompleteRemove() {
202 assertFalse(data.removePdp(PDP1));
203 assertEquals("[0, 0, 0]", getCounts().toString());
207 * Tests removePdps(), where remaining incomplete items are removed.
210 public void testRemovePdpAllComplete() {
211 data.addPdps(Arrays.asList(PDP1, PDP2));
212 assertFalse(data.removePdp(PDP1));
214 assertTrue(data.removePdp(PDP2));
218 public void testComplete() {
219 // attempt to remove a PDP that isn't in the data
220 assertFalse(data.success(PDP1));
222 // remove one that was incomplete
223 data.addPdps(Arrays.asList(PDP1));
224 assertTrue(data.success(PDP1));
226 // move from one set to the other
227 assertTrue(data.fail(PDP1));
229 // already in the correct set
230 assertFalse(data.fail(PDP1));
233 private List<Integer> getCounts() {
234 PolicyStatus status = new PolicyStatus();
235 data.putValuesInto(status);
237 return Arrays.asList(status.getSuccessCount(), status.getFailureCount(), status.getIncompleteCount());