310f911096fdb1eead3899f333d3895347dd83cd
[policy/drools-pdp.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.policy.drools.activestandby;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
26
27 import java.util.Date;
28 import lombok.Getter;
29 import lombok.Setter;
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.onap.policy.drools.activestandby.DroolsPdp;
33 import org.onap.policy.drools.activestandby.DroolsPdpObject;
34
35 public class DroolsPdpObjectTest {
36     private static final String PDP_ID = "my-id";
37     private static final String PDP_ID2 = "my-id2";
38     private static final String SITE = "my-site";
39     private static final String SITE2 = "my-site2";
40     private static final int PRIORITY = 11;
41     private static final int PRIORITY2 = 12;
42
43     private MyPdp pdp;
44
45     @Before
46     public void setUp() {
47         pdp = makePdp(PDP_ID, SITE, PRIORITY);
48     }
49
50     @Test
51     public void testEqualsObject() {
52         // self
53         assertTrue(pdp.equals(pdp));
54
55         // same id
56         MyPdp pdp2 = new MyPdp();
57         pdp2.setPdpId(PDP_ID);
58         assertTrue(pdp.equals(pdp2));
59
60         // different id
61         pdp2.setPdpId(PDP_ID2);
62         assertFalse(pdp.equals(pdp2));
63
64         // different type of object
65         assertFalse(pdp.equals(""));
66     }
67
68     @Test
69     public void testNullSafeCompare() {
70         // self, when null
71         pdp.setSiteName(null);
72         assertEquals(0, pdp.comparePriority(pdp));
73
74         // both null
75         MyPdp pdp2 = makePdp(PDP_ID, null, PRIORITY);
76         assertEquals(0, pdp.comparePriority(pdp2));
77
78         // left null
79         pdp2 = makePdp(PDP_ID, SITE, PRIORITY);
80         assertEquals(-1, pdp.comparePriority(pdp2));
81
82         // right null - note: args are reversed
83         pdp2 = makePdp(PDP_ID, SITE, PRIORITY);
84         assertEquals(1, pdp2.comparePriority(pdp));
85     }
86
87     @Test
88     public void testComparePriorityDroolsPdp() {
89         // self
90         assertEquals(0, pdp.comparePriority(pdp));
91
92         // same
93         MyPdp pdp2 = makePdp(PDP_ID, SITE, PRIORITY);
94         assertEquals(0, pdp.comparePriority(pdp2));
95
96         // different site
97         pdp2 = makePdp(PDP_ID, SITE2, PRIORITY);
98         assertEquals(SITE.compareTo(SITE2), pdp.comparePriority(pdp2));
99
100         // different priority
101         pdp2 = makePdp(PDP_ID, SITE, PRIORITY2);
102         assertEquals(PRIORITY - PRIORITY2, pdp.comparePriority(pdp2));
103
104         // different id
105         pdp2 = makePdp(PDP_ID2, SITE, PRIORITY);
106         assertEquals(PDP_ID.compareTo(PDP_ID2), pdp.comparePriority(pdp2));
107     }
108
109     @Test
110     public void testComparePriorityDroolsPdpString() {
111         final int result = 1000;
112
113         // override other comparison method so we know if it's called
114         MyPdp pdp2 = new MyPdp() {
115             @Override
116             public int comparePriority(DroolsPdp other) {
117                 return result;
118             }
119         };
120
121         pdp2.setPdpId(PDP_ID);
122         pdp2.setSiteName(SITE2);
123         pdp2.setPriority(PRIORITY);
124
125         // should use overridden comparison method
126         assertEquals(result, pdp2.comparePriority(pdp, null));
127         assertEquals(result, pdp2.comparePriority(pdp, ""));
128
129         // should use normal comparison method
130         assertEquals(SITE2.compareTo(SITE), pdp2.comparePriority(pdp, SITE));
131     }
132
133     private MyPdp makePdp(String id, String site, int priority) {
134         MyPdp pdp2 = new MyPdp();
135
136         pdp2.setSiteName(site);
137         pdp2.setPdpId(id);
138         pdp2.setPriority(priority);
139
140         return pdp2;
141     }
142
143     @Getter
144     @Setter
145     private class MyPdp extends DroolsPdpObject {
146         private String pdpId;
147         private boolean designated;
148         private int priority;
149         private Date updatedDate;
150         private String siteName;
151         private Date designatedDate;
152     }
153 }