b9b643e4776ea24b97e7f59202de7dc125f387df
[policy/apex-pdp.git] / model / event-model / src / test / java / org / onap / policy / apex / model / eventmodel / concepts / EventsTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  *  Modifications Copyright (C) 2019 Nordix Foundation.
5  * ================================================================================
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  * SPDX-License-Identifier: Apache-2.0
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.apex.model.eventmodel.concepts;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertFalse;
26 import static org.junit.Assert.assertNotEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertTrue;
29
30 import java.util.TreeMap;
31 import java.util.TreeSet;
32
33 import org.junit.Test;
34 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
35 import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
36 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
37 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
38 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult;
39 import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
40 import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
41 import org.onap.policy.apex.model.eventmodel.concepts.AxField;
42
43 /**
44  * Test events.
45  * @author Liam Fallon (liam.fallon@ericsson.com)
46  */
47 public class EventsTest {
48
49     @Test
50     public void testEvents() {
51         final TreeMap<String, AxField> parameterMap = new TreeMap<>();
52         final TreeMap<String, AxField> parameterMapEmpty = new TreeMap<>();
53
54         assertNotNull(new AxEvent());
55         assertNotNull(new AxEvent(new AxArtifactKey()));
56         assertNotNull(new AxEvent(new AxArtifactKey(), "namespace"));
57         assertNotNull(new AxEvent(new AxArtifactKey(), "namespace", "source", "target"));
58         assertNotNull(new AxEvent(new AxArtifactKey(), "namespace", "source", "target"));
59         assertNotNull(new AxEvent(new AxArtifactKey(), "namespace", "source", "target", parameterMap));
60
61         final AxEvent event = new AxEvent();
62
63         final AxArtifactKey eventKey = new AxArtifactKey("EventName", "0.0.1");
64         event.setKey(eventKey);
65         assertEquals("EventName:0.0.1", event.getKey().getId());
66         assertEquals("EventName:0.0.1", event.getKeys().get(0).getId());
67
68         event.setNameSpace("namespace");
69         assertEquals("namespace", event.getNameSpace());
70
71         event.setSource("source");
72         assertEquals("source", event.getSource());
73
74         event.setTarget("target");
75         assertEquals("target", event.getTarget());
76
77         event.setParameterMap(parameterMap);
78         assertEquals(0, event.getParameterMap().size());
79
80         final AxField eventField =
81                 new AxField(new AxReferenceKey(eventKey, "Field0"), new AxArtifactKey("Field0Schema", "0.0.1"));
82         event.getParameterMap().put(eventField.getKey().getLocalName(), eventField);
83         assertEquals(1, event.getParameterMap().size());
84
85         final AxField eventFieldBadParent =
86                 new AxField(new AxReferenceKey(new AxArtifactKey("OtherEvent", "0.0.01"), "Field0"),
87                         new AxArtifactKey("Field0Schema", "0.0.1"));
88
89         final AxArtifactKey newEventKey = new AxArtifactKey("NewEventName", "0.0.1");
90         event.setKey(newEventKey);
91         assertEquals("NewEventName:0.0.1", event.getKey().getId());
92         assertEquals("NewEventName:0.0.1", event.getKeys().get(0).getId());
93         assertEquals("NewEventName:0.0.1",
94                 event.getParameterMap().get("Field0").getKey().getParentArtifactKey().getId());
95         event.setKey(eventKey);
96         assertEquals("EventName:0.0.1", event.getKey().getId());
97         assertEquals("EventName:0.0.1", event.getKeys().get(0).getId());
98
99         assertTrue("Field0", event.getFields().contains(eventField));
100         assertTrue(event.hasFields(new TreeSet<AxField>(parameterMap.values())));
101
102         AxValidationResult result = new AxValidationResult();
103         result = event.validate(result);
104         assertEquals(AxValidationResult.ValidationResult.VALID, result.getValidationResult());
105
106         event.setKey(AxArtifactKey.getNullKey());
107         result = new AxValidationResult();
108         result = event.validate(result);
109         assertEquals(ValidationResult.INVALID, result.getValidationResult());
110
111         event.setKey(eventKey);
112         result = new AxValidationResult();
113         result = event.validate(result);
114         assertEquals(ValidationResult.VALID, result.getValidationResult());
115
116         event.setNameSpace("");
117         result = new AxValidationResult();
118         result = event.validate(result);
119         assertEquals(ValidationResult.WARNING, result.getValidationResult());
120
121         event.setNameSpace("namespace");
122         result = new AxValidationResult();
123         result = event.validate(result);
124         assertEquals(ValidationResult.VALID, result.getValidationResult());
125
126         event.setSource("");
127         result = new AxValidationResult();
128         result = event.validate(result);
129         assertEquals(ValidationResult.OBSERVATION, result.getValidationResult());
130
131         event.setSource("source");
132         result = new AxValidationResult();
133         result = event.validate(result);
134         assertEquals(ValidationResult.VALID, result.getValidationResult());
135
136         event.setTarget("");
137         result = new AxValidationResult();
138         result = event.validate(result);
139         assertEquals(ValidationResult.OBSERVATION, result.getValidationResult());
140
141         event.setTarget("target");
142         result = new AxValidationResult();
143         result = event.validate(result);
144         assertEquals(ValidationResult.VALID, result.getValidationResult());
145
146         event.getParameterMap().put(AxKey.NULL_KEY_NAME, null);
147         result = new AxValidationResult();
148         result = event.validate(result);
149         assertEquals(ValidationResult.INVALID, result.getValidationResult());
150
151         event.getParameterMap().remove(AxKey.NULL_KEY_NAME);
152         result = new AxValidationResult();
153         result = event.validate(result);
154         assertEquals(ValidationResult.VALID, result.getValidationResult());
155
156         event.getParameterMap().put("NullField", null);
157         result = new AxValidationResult();
158         result = event.validate(result);
159         assertEquals(ValidationResult.INVALID, result.getValidationResult());
160
161         event.getParameterMap().remove("NullField");
162         result = new AxValidationResult();
163         result = event.validate(result);
164         assertEquals(ValidationResult.VALID, result.getValidationResult());
165
166         event.getParameterMap().put("NullField", eventField);
167         result = new AxValidationResult();
168         result = event.validate(result);
169         assertEquals(ValidationResult.INVALID, result.getValidationResult());
170
171         event.getParameterMap().remove("NullField");
172         result = new AxValidationResult();
173         result = event.validate(result);
174         assertEquals(ValidationResult.VALID, result.getValidationResult());
175
176         event.getParameterMap().put("BadParent", eventFieldBadParent);
177         result = new AxValidationResult();
178         result = event.validate(result);
179         assertEquals(ValidationResult.INVALID, result.getValidationResult());
180
181         event.getParameterMap().remove("BadParent");
182         result = new AxValidationResult();
183         result = event.validate(result);
184         assertEquals(ValidationResult.VALID, result.getValidationResult());
185
186         event.clean();
187         event.afterUnmarshal(null, null);
188
189         final AxEvent clonedEvent = new AxEvent(event);
190         assertEquals("AxEvent:(key=AxArtifactKey:(name=EventName,version=0.0.1),nameSpace=namespace",
191                 clonedEvent.toString().substring(0, 77));
192
193         assertFalse(event.hashCode() == 0);
194
195         assertTrue(event.equals(event));
196         assertTrue(event.equals(clonedEvent));
197         assertFalse(event.equals(null));
198         assertFalse(event.equals((Object)"Hello"));
199         assertFalse(
200                 event.equals(new AxEvent(AxArtifactKey.getNullKey(), "namespace", "source", "target", parameterMap)));
201         assertFalse(event.equals(new AxEvent(eventKey, "namespace1", "source", "target", parameterMap)));
202         assertFalse(event.equals(new AxEvent(eventKey, "namespace", "source2", "target", parameterMap)));
203         assertFalse(event.equals(new AxEvent(eventKey, "namespace", "source", "target3", parameterMap)));
204         assertFalse(event.equals(new AxEvent(eventKey, "namespace", "source", "target", parameterMapEmpty)));
205         assertTrue(event.equals(new AxEvent(eventKey, "namespace", "source", "target", parameterMap)));
206
207         assertEquals(0, event.compareTo(event));
208         assertEquals(0, event.compareTo(clonedEvent));
209         assertNotEquals(0, event.compareTo(new AxArtifactKey()));
210         assertNotEquals(0, event.compareTo(null));
211         assertNotEquals(0, event
212                 .compareTo(new AxEvent(AxArtifactKey.getNullKey(), "namespace", "source", "target", parameterMap)));
213         assertNotEquals(0, event.compareTo(new AxEvent(eventKey, "namespace1", "source", "target", parameterMap)));
214         assertNotEquals(0, event.compareTo(new AxEvent(eventKey, "namespace", "source2", "target", parameterMap)));
215         assertNotEquals(0, event.compareTo(new AxEvent(eventKey, "namespace", "source", "target3", parameterMap)));
216         assertNotEquals(0, event.compareTo(new AxEvent(eventKey, "namespace", "source", "target", parameterMapEmpty)));
217         assertEquals(0, event.compareTo(new AxEvent(eventKey, "namespace", "source", "target", parameterMap)));
218
219         assertNotNull(event.getKeys());
220
221         final AxEvents events = new AxEvents();
222         result = new AxValidationResult();
223         result = events.validate(result);
224         assertEquals(ValidationResult.INVALID, result.getValidationResult());
225
226         // Invalid, no events in event map
227         events.setKey(new AxArtifactKey("EventsKey", "0.0.1"));
228         assertEquals("EventsKey:0.0.1", events.getKey().getId());
229
230         result = new AxValidationResult();
231         result = events.validate(result);
232         assertEquals(ValidationResult.INVALID, result.getValidationResult());
233
234         events.getEventMap().put(eventKey, event);
235         result = new AxValidationResult();
236         result = events.validate(result);
237         assertEquals(ValidationResult.VALID, result.getValidationResult());
238
239         events.getEventMap().put(AxArtifactKey.getNullKey(), null);
240         result = new AxValidationResult();
241         result = events.validate(result);
242         assertEquals(ValidationResult.INVALID, result.getValidationResult());
243
244         events.getEventMap().remove(AxArtifactKey.getNullKey());
245         result = new AxValidationResult();
246         result = events.validate(result);
247         assertEquals(ValidationResult.VALID, result.getValidationResult());
248
249         events.getEventMap().put(new AxArtifactKey("NullValueKey", "0.0.1"), null);
250         result = new AxValidationResult();
251         result = events.validate(result);
252         assertEquals(ValidationResult.INVALID, result.getValidationResult());
253
254         events.getEventMap().remove(new AxArtifactKey("NullValueKey", "0.0.1"));
255         result = new AxValidationResult();
256         result = events.validate(result);
257         assertEquals(ValidationResult.VALID, result.getValidationResult());
258
259         events.getEventMap().put(new AxArtifactKey("BadEventKey", "0.0.1"), event);
260         result = new AxValidationResult();
261         result = events.validate(result);
262         assertEquals(ValidationResult.INVALID, result.getValidationResult());
263
264         events.getEventMap().remove(new AxArtifactKey("BadEventKey", "0.0.1"));
265         result = new AxValidationResult();
266         result = events.validate(result);
267         assertEquals(ValidationResult.VALID, result.getValidationResult());
268
269         events.clean();
270         events.afterUnmarshal(null, null);
271
272         final AxEvents clonedEvents = new AxEvents(events);
273         assertEquals("AxEvents:(key=AxArtifactKey:(name=EventsKey,version=0.0.1),e",
274                 clonedEvents.toString().substring(0, 60));
275
276         assertFalse(events.hashCode() == 0);
277
278         assertTrue(events.equals(events));
279         assertTrue(events.equals(clonedEvents));
280         assertFalse(events.equals(null));
281         assertFalse(events.equals((Object)"Hello"));
282         assertFalse(events.equals(new AxEvents(new AxArtifactKey())));
283
284         assertEquals(0, events.compareTo(events));
285         assertEquals(0, events.compareTo(clonedEvents));
286         assertNotEquals(0, events.compareTo(null));
287         assertNotEquals(0, events.compareTo(new AxArtifactKey()));
288         assertNotEquals(0, events.compareTo(new AxEvents(new AxArtifactKey())));
289
290         clonedEvents.get(eventKey).setSource("AnotherSource");
291         assertNotEquals(0, events.compareTo(clonedEvents));
292
293         assertEquals(events.getKey(), events.getKeys().get(0));
294
295         assertEquals("EventName", events.get("EventName").getKey().getName());
296         assertEquals("EventName", events.get("EventName", "0.0.1").getKey().getName());
297         assertEquals(1, events.getAll("EventName", "0.0.1").size());
298         assertEquals(0, events.getAll("NonExistantEventsName").size());
299     }
300 }