2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2024 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.common.endpoints.event.comm;
24 import static org.assertj.core.api.Assertions.assertThatCode;
25 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
26 import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
27 import static org.junit.Assert.assertEquals;
28 import static org.junit.Assert.assertFalse;
29 import static org.junit.Assert.assertSame;
30 import static org.junit.Assert.assertTrue;
32 import java.util.LinkedList;
33 import java.util.List;
34 import java.util.Properties;
35 import org.junit.After;
36 import org.junit.Test;
37 import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure;
38 import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicFactories;
39 import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicPropertyBuilder;
40 import org.onap.policy.common.endpoints.event.comm.bus.UebTopicFactories;
41 import org.onap.policy.common.endpoints.event.comm.bus.UebTopicPropertyBuilder;
42 import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
43 import org.onap.policy.common.endpoints.parameters.TopicParameters;
44 import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties;
45 import org.onap.policy.common.utils.gson.GsonTestUtils;
47 public class TopicEndpointProxyTest {
49 private static final String NOOP_SOURCE_TOPIC = "noop-source";
50 private static final String NOOP_SINK_TOPIC = "noop-sink";
52 private static final String UEB_SOURCE_TOPIC = "ueb-source";
53 private static final String UEB_SINK_TOPIC = "ueb-sink";
55 private Properties configuration = new Properties();
56 private TopicParameterGroup group = new TopicParameterGroup();
61 public TopicEndpointProxyTest() {
62 group.setTopicSinks(new LinkedList<>());
63 group.setTopicSources(new LinkedList<>());
65 NoopTopicPropertyBuilder noopSourceBuilder =
66 new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS)
67 .makeTopic(NOOP_SOURCE_TOPIC);
68 configuration.putAll(noopSourceBuilder.build());
69 group.getTopicSources().add(noopSourceBuilder.getParams());
71 NoopTopicPropertyBuilder noopSinkBuilder =
72 new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SINK_TOPICS)
73 .makeTopic(NOOP_SINK_TOPIC);
74 configuration.putAll(noopSinkBuilder.build());
75 group.getTopicSinks().add(noopSinkBuilder.getParams());
77 UebTopicPropertyBuilder uebSourceBuilder =
78 new UebTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SOURCE_TOPICS)
79 .makeTopic(UEB_SOURCE_TOPIC);
80 configuration.putAll(uebSourceBuilder.build());
81 group.getTopicSources().add(uebSourceBuilder.getParams());
83 UebTopicPropertyBuilder uebSinkBuilder =
84 new UebTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SINK_TOPICS)
85 .makeTopic(UEB_SINK_TOPIC);
86 configuration.putAll(uebSinkBuilder.build());
87 group.getTopicSinks().add(uebSinkBuilder.getParams());
89 TopicParameters invalidCommInfraParams =
90 new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS)
91 .makeTopic(NOOP_SOURCE_TOPIC).getParams();
92 invalidCommInfraParams.setTopicCommInfrastructure(Topic.CommInfrastructure.REST.name());
93 group.getTopicSources().add(invalidCommInfraParams);
94 group.getTopicSinks().add(invalidCommInfraParams);
97 private <T extends Topic> boolean exists(List<T> topics, String topicName) {
98 return topics.stream().map(Topic::getTopic).anyMatch(topicName::equals);
101 private <T extends Topic> boolean allSources(List<T> topics) {
102 return exists(topics, NOOP_SOURCE_TOPIC) && exists(topics, UEB_SOURCE_TOPIC);
105 private <T extends Topic> boolean allSinks(List<T> topics) {
106 return exists(topics, NOOP_SINK_TOPIC) && exists(topics, UEB_SINK_TOPIC);
109 private <T extends Topic> boolean anySource(List<T> topics) {
110 return exists(topics, NOOP_SOURCE_TOPIC) || exists(topics, UEB_SOURCE_TOPIC);
113 private <T extends Topic> boolean anySink(List<T> topics) {
114 return exists(topics, NOOP_SINK_TOPIC) || exists(topics, UEB_SINK_TOPIC);
118 * Destroys all managed topics.
121 public void tearDown() {
122 NoopTopicFactories.getSinkFactory().destroy();
123 NoopTopicFactories.getSourceFactory().destroy();
125 UebTopicFactories.getSinkFactory().destroy();
126 UebTopicFactories.getSourceFactory().destroy();
130 public void testSerialize() {
131 TopicEndpoint manager = new TopicEndpointProxy();
133 manager.addTopicSources(configuration);
134 manager.addTopicSinks(configuration);
136 assertThatCode(() -> new GsonTestUtils().compareGson(manager, TopicEndpointProxyTest.class))
137 .doesNotThrowAnyException();
141 public void testAddTopicSourcesListOfTopicParameters() {
142 TopicEndpoint manager = new TopicEndpointProxy();
144 List<TopicSource> sources = manager.addTopicSources(group.getTopicSources());
145 assertSame(2, sources.size());
147 assertTrue(allSources(sources));
148 assertFalse(anySink(sources));
152 public void testAddTopicSourcesProperties() {
153 TopicEndpoint manager = new TopicEndpointProxy();
155 List<TopicSource> sources = manager.addTopicSources(configuration);
156 assertSame(2, sources.size());
158 assertTrue(allSources(sources));
159 assertFalse(anySink(sources));
163 public void testAddTopicSinksListOfTopicParameters() {
164 TopicEndpoint manager = new TopicEndpointProxy();
166 List<TopicSink> sinks = manager.addTopicSinks(group.getTopicSinks());
167 assertSame(2, sinks.size());
169 assertFalse(anySource(sinks));
170 assertTrue(allSinks(sinks));
174 public void testAddTopicSinksProperties() {
175 TopicEndpoint manager = new TopicEndpointProxy();
177 List<TopicSink> sinks = manager.addTopicSinks(configuration);
178 assertSame(2, sinks.size());
180 assertFalse(anySource(sinks));
181 assertTrue(allSinks(sinks));
185 public void testAddTopicsProperties() {
186 TopicEndpoint manager = new TopicEndpointProxy();
188 List<Topic> topics = manager.addTopics(configuration);
189 assertSame(4, topics.size());
191 assertTrue(allSources(topics));
192 assertTrue(allSinks(topics));
196 public void testAddTopicsTopicParameterGroup() {
197 TopicEndpoint manager = new TopicEndpointProxy();
199 List<Topic> topics = manager.addTopics(group);
200 assertSame(4, topics.size());
202 assertTrue(allSources(topics));
203 assertTrue(allSinks(topics));
207 public void testAddTopicsTopicParameterGroupNull() {
208 TopicEndpoint manager = new TopicEndpointProxy();
210 List<Topic> topics = manager.addTopics(new TopicParameterGroup());
211 assertEquals(0, topics.size());
215 public void testLockSinks_lockSources_locked() {
216 TopicEndpoint manager = new TopicEndpointProxy();
218 for (Topic topic : manager.addTopics(group)) {
219 assertTrue(topic.isLocked());
224 public void testLockSinks_lockSources_unlocked() {
225 TopicEndpoint manager = new TopicEndpointProxy();
226 for (Topic topic : manager.addTopics(group)) {
227 assertFalse(topic.isLocked());
232 public void testGetTopicSources() {
233 TopicEndpoint manager = new TopicEndpointProxy();
235 manager.addTopicSources(configuration);
236 manager.addTopicSinks(configuration);
238 List<TopicSource> sources = manager.getTopicSources();
239 assertSame(2, sources.size());
241 assertTrue(allSources(sources));
242 assertFalse(anySink(sources));
246 public void testGetTopicSinks() {
247 TopicEndpoint manager = new TopicEndpointProxy();
249 manager.addTopicSources(configuration);
250 manager.addTopicSinks(configuration);
252 List<TopicSink> sinks = manager.getTopicSinks();
253 assertSame(2, sinks.size());
255 assertFalse(anySource(sinks));
256 assertTrue(allSinks(sinks));
260 public void testGetUebTopicSources() {
261 TopicEndpoint manager = new TopicEndpointProxy();
263 manager.addTopicSources(configuration);
264 assertSame(1, manager.getUebTopicSources().size());
268 public void testGetNoopTopicSources() {
269 TopicEndpoint manager = new TopicEndpointProxy();
271 manager.addTopicSources(configuration);
272 assertSame(1, manager.getNoopTopicSources().size());
276 public void testGetUebTopicSinks() {
277 TopicEndpoint manager = new TopicEndpointProxy();
279 manager.addTopicSinks(configuration);
280 assertSame(1, manager.getUebTopicSinks().size());
284 public void testGetNoopTopicSinks() {
285 TopicEndpoint manager = new TopicEndpointProxy();
287 manager.addTopicSinks(configuration);
288 assertSame(1, manager.getNoopTopicSinks().size());
292 public void testLifecycle() {
293 TopicEndpoint manager = new TopicEndpointProxy();
295 assertTrue(manager.start());
296 assertTrue(manager.isAlive());
298 assertTrue(manager.stop());
299 assertFalse(manager.isAlive());
301 assertTrue(manager.start());
302 assertTrue(manager.isAlive());
305 assertFalse(manager.isAlive());
309 public void testLock() {
310 TopicEndpoint manager = new TopicEndpointProxy();
313 assertTrue(manager.isLocked());
316 assertFalse(manager.isLocked());
320 public void testGetTopicSource() {
321 TopicEndpoint manager = new TopicEndpointProxy();
322 manager.addTopicSources(configuration);
324 assertSame(NOOP_SOURCE_TOPIC, manager.getTopicSource(CommInfrastructure.NOOP, NOOP_SOURCE_TOPIC).getTopic());
325 assertSame(UEB_SOURCE_TOPIC, manager.getTopicSource(CommInfrastructure.UEB, UEB_SOURCE_TOPIC).getTopic());
327 assertThatIllegalStateException()
328 .isThrownBy(() -> manager.getTopicSource(CommInfrastructure.NOOP, NOOP_SINK_TOPIC));
329 assertThatIllegalStateException()
330 .isThrownBy(() -> manager.getTopicSource(CommInfrastructure.UEB, UEB_SINK_TOPIC));
334 public void testGetTopicSink() {
335 TopicEndpoint manager = new TopicEndpointProxy();
336 manager.addTopicSinks(configuration);
338 assertSame(NOOP_SINK_TOPIC, manager.getTopicSink(CommInfrastructure.NOOP, NOOP_SINK_TOPIC).getTopic());
339 assertSame(UEB_SINK_TOPIC, manager.getTopicSink(CommInfrastructure.UEB, UEB_SINK_TOPIC).getTopic());
341 assertThatIllegalStateException()
342 .isThrownBy(() -> manager.getTopicSink(CommInfrastructure.NOOP, NOOP_SOURCE_TOPIC));
343 assertThatIllegalStateException()
344 .isThrownBy(() -> manager.getTopicSink(CommInfrastructure.UEB, UEB_SOURCE_TOPIC));
348 public void testGetUebTopicSource() {
349 TopicEndpoint manager = new TopicEndpointProxy();
350 manager.addTopicSources(configuration);
352 assertSame(UEB_SOURCE_TOPIC, manager.getUebTopicSource(UEB_SOURCE_TOPIC).getTopic());
354 assertThatIllegalStateException().isThrownBy(() -> manager.getUebTopicSource(NOOP_SOURCE_TOPIC));
356 assertThatIllegalArgumentException().isThrownBy(() -> manager.getUebTopicSource(null));
357 assertThatIllegalArgumentException().isThrownBy(() -> manager.getUebTopicSource(""));
361 public void testGetUebTopicSink() {
362 TopicEndpoint manager = new TopicEndpointProxy();
363 manager.addTopicSinks(configuration);
365 assertSame(UEB_SINK_TOPIC, manager.getUebTopicSink(UEB_SINK_TOPIC).getTopic());
367 assertThatIllegalStateException().isThrownBy(() -> manager.getUebTopicSink(NOOP_SINK_TOPIC));
369 assertThatIllegalArgumentException().isThrownBy(() -> manager.getUebTopicSink(null));
370 assertThatIllegalArgumentException().isThrownBy(() -> manager.getUebTopicSink(""));
374 public void testGetNoopTopicSource() {
375 TopicEndpoint manager = new TopicEndpointProxy();
376 manager.addTopicSources(configuration);
378 assertSame(NOOP_SOURCE_TOPIC, manager.getNoopTopicSource(NOOP_SOURCE_TOPIC).getTopic());
380 assertThatIllegalStateException().isThrownBy(() -> manager.getNoopTopicSource(UEB_SOURCE_TOPIC));
382 assertThatIllegalArgumentException().isThrownBy(() -> manager.getNoopTopicSource(null));
383 assertThatIllegalArgumentException().isThrownBy(() -> manager.getNoopTopicSource(""));
387 public void testGetNoopTopicSink() {
388 TopicEndpoint manager = new TopicEndpointProxy();
389 manager.addTopicSinks(configuration);
391 assertSame(NOOP_SINK_TOPIC, manager.getNoopTopicSink(NOOP_SINK_TOPIC).getTopic());
393 assertThatIllegalStateException().isThrownBy(() -> manager.getNoopTopicSink(UEB_SINK_TOPIC));
395 assertThatIllegalArgumentException().isThrownBy(() -> manager.getNoopTopicSink(null));
396 assertThatIllegalArgumentException().isThrownBy(() -> manager.getNoopTopicSink(""));