From f14578b9c5d9a98cceb5342d69b0326289b1690c Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Sat, 27 Jul 2019 08:20:17 -0400 Subject: Add addTopic(List) New services are typically configured using TopicParameters. These are converted into Properties before being passed to TopicEndpoint.addTopic(), which then converts them into BusTopicParams before configuring a given topic. Added TopicEndpoint.addTopic(List), which makes it possible to configure the topics without going into the intermediate Properties. Furthermore, because TopicParams is a subclass of BusTopicParams, no conversion is needed for that either, so the TopicParams can be passed directly into the configuration classes. Incorporated changes from review. Change-Id: Id87e2c6812e36ae1a3ac680e6b35208667971782 Issue-ID: POLICY-1953 Signed-off-by: Jim Hahn --- .../common/endpoints/event/comm/TopicEndpoint.java | 34 ++++- .../endpoints/event/comm/TopicEndpointProxy.java | 84 +++++++++++-- .../event/comm/bus/NoopTopicSourceFactory.java | 11 +- .../endpoints/event/comm/bus/TopicBaseFactory.java | 9 ++ .../event/comm/bus/TopicBaseHashedFactory.java | 9 ++ .../endpoints/parameters/TopicParameterGroup.java | 6 +- .../event/comm/TopicEndpointProxyTest.java | 139 +++++++++++++++++---- .../event/comm/bus/DmaapTopicPropertyBuilder.java | 29 +++++ .../event/comm/bus/NoopTopicFactoryTest.java | 26 ++++ .../event/comm/bus/NoopTopicPropertyBuilder.java | 15 +++ .../event/comm/bus/NoopTopicSinkFactoryTest.java | 9 ++ .../event/comm/bus/NoopTopicSourceFactoryTest.java | 9 ++ .../event/comm/bus/UebTopicPropertyBuilder.java | 25 ++++ .../event/comm/TopicEndpointProxyTest.json | 10 +- 14 files changed, 370 insertions(+), 45 deletions(-) diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpoint.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpoint.java index 7bc7abab..bb707523 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpoint.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpoint.java @@ -30,6 +30,8 @@ import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSink; import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSource; import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSink; import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSource; +import org.onap.policy.common.endpoints.parameters.TopicParameterGroup; +import org.onap.policy.common.endpoints.parameters.TopicParameters; /** * Abstraction to managed the system's Networked Topic Endpoints, sources of all events input into @@ -46,24 +48,52 @@ public interface TopicEndpoint extends Startable, Lockable { */ List addTopics(Properties properties); + /** + * Add topics configuration (sources and sinks) into a single list. + * + * @param params parameters to configure topic + * @return topic list + * @throws IllegalArgumentException when invalid arguments are provided + */ + List addTopics(TopicParameterGroup params); + /** * Add Topic Sources to the communication infrastructure initialized per properties. * * @param properties properties for Topic Source construction - * @return a generic Topic Source + * @return a list of generic Topic Sources * @throws IllegalArgumentException when invalid arguments are provided */ List addTopicSources(Properties properties); + + /** + * Add Topic Sources to the communication infrastructure initialized per properties. + * + * @param paramList parameters for Topic Source construction + * @return a list of generic Topic Sources + * @throws IllegalArgumentException when invalid arguments are provided + */ + List addTopicSources(List paramList); + /** * Add Topic Sinks to the communication infrastructure initialized per properties. * * @param properties properties for Topic Sink construction - * @return a generic Topic Sink + * @return a list of generic Topic Sinks * @throws IllegalArgumentException when invalid arguments are provided */ List addTopicSinks(Properties properties); + /** + * Add Topic Sinks to the communication infrastructure initialized per properties. + * + * @param paramList parameters for Topic Sink construction + * @return a list of generic Topic Sinks + * @throws IllegalArgumentException when invalid arguments are provided + */ + List addTopicSinks(List paramList); + /** * Gets all Topic Sources. * diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxy.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxy.java index 00980fc4..c9e73152 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxy.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxy.java @@ -34,6 +34,8 @@ import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicSource; import org.onap.policy.common.endpoints.event.comm.bus.UebTopicFactories; import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSink; import org.onap.policy.common.endpoints.event.comm.bus.UebTopicSource; +import org.onap.policy.common.endpoints.parameters.TopicParameterGroup; +import org.onap.policy.common.endpoints.parameters.TopicParameters; import org.onap.policy.common.gson.annotation.GsonJsonIgnore; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,6 +67,41 @@ class TopicEndpointProxy implements TopicEndpoint { return topics; } + @Override + public List addTopics(TopicParameterGroup params) { + List topics = new ArrayList<>(params.getTopicSinks().size() + params.getTopicSources().size()); + topics.addAll(addTopicSources(params.getTopicSources())); + topics.addAll(addTopicSinks(params.getTopicSinks())); + return topics; + } + + @Override + public List addTopicSources(List paramList) { + List sources = new ArrayList<>(paramList.size()); + + for (TopicParameters param : paramList) { + switch (Topic.CommInfrastructure.valueOf(param.getTopicCommInfrastructure().toUpperCase())) { + case UEB: + sources.add(UebTopicFactories.getSourceFactory().build(param)); + break; + case DMAAP: + sources.add(DmaapTopicFactories.getSourceFactory().build(param)); + break; + case NOOP: + sources.add(NoopTopicFactories.getSourceFactory().build(param)); + break; + default: + logger.debug("Unknown source type {} for topic: {}", param.getTopicCommInfrastructure(), + param.getTopic()); + break; + } + } + + lockSources(sources); + + return sources; + } + @Override public List addTopicSources(Properties properties) { @@ -78,13 +115,42 @@ class TopicEndpointProxy implements TopicEndpoint { sources.addAll(DmaapTopicFactories.getSourceFactory().build(properties)); sources.addAll(NoopTopicFactories.getSourceFactory().build(properties)); + lockSources(sources); + + return sources; + } + + private void lockSources(List sources) { if (this.isLocked()) { - for (final TopicSource source : sources) { - source.lock(); + sources.forEach(TopicSource::lock); + } + } + + @Override + public List addTopicSinks(List paramList) { + List sinks = new ArrayList<>(paramList.size()); + + for (TopicParameters param : paramList) { + switch (Topic.CommInfrastructure.valueOf(param.getTopicCommInfrastructure().toUpperCase())) { + case UEB: + sinks.add(UebTopicFactories.getSinkFactory().build(param)); + break; + case DMAAP: + sinks.add(DmaapTopicFactories.getSinkFactory().build(param)); + break; + case NOOP: + sinks.add(NoopTopicFactories.getSinkFactory().build(param)); + break; + default: + logger.debug("Unknown sink type {} for topic: {}", param.getTopicCommInfrastructure(), + param.getTopic()); + break; } } - return sources; + lockSinks(sinks); + + return sinks; } @Override @@ -99,15 +165,17 @@ class TopicEndpointProxy implements TopicEndpoint { sinks.addAll(DmaapTopicFactories.getSinkFactory().build(properties)); sinks.addAll(NoopTopicFactories.getSinkFactory().build(properties)); - if (this.isLocked()) { - for (final TopicSink sink : sinks) { - sink.lock(); - } - } + lockSinks(sinks); return sinks; } + private void lockSinks(List sinks) { + if (this.isLocked()) { + sinks.forEach(TopicSink::lock); + } + } + @Override public List getTopicSources() { diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactory.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactory.java index 9623b4fa..7164f919 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactory.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactory.java @@ -21,6 +21,7 @@ package org.onap.policy.common.endpoints.event.comm.bus; import java.util.List; +import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties; /** @@ -36,6 +37,14 @@ public class NoopTopicSourceFactory extends NoopTopicFactory { return PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS; } + /** + * {@inheritDoc}. + */ + @Override + public NoopTopicSource build(BusTopicParams param) { + return build(param.getServers(), param.getTopic()); + } + /** * {@inheritDoc}. */ @@ -49,6 +58,6 @@ public class NoopTopicSourceFactory extends NoopTopicFactory { */ @Override public String toString() { - return "NoopTopicSourceFactory[" + super.toString() + "]"; + return "NoopTopicSourceFactory [" + super.toString() + "]"; } } diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseFactory.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseFactory.java index 897a8e19..a6b5b1d9 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseFactory.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseFactory.java @@ -23,6 +23,7 @@ package org.onap.policy.common.endpoints.event.comm.bus; import java.util.List; import java.util.Properties; import org.onap.policy.common.endpoints.event.comm.Topic; +import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; /** * Topic Base Factory. @@ -49,6 +50,14 @@ public interface TopicBaseFactory { */ T build(List servers, String topic, boolean managed); + /** + * Construct an instance of an endpoint. + * + * @param param parameters + * @return an instance of T. + */ + T build(BusTopicParams param); + /** * destroy TopicBase instance. * @param topic topic. diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseHashedFactory.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseHashedFactory.java index f958bd01..38ee25a4 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseHashedFactory.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/event/comm/bus/TopicBaseHashedFactory.java @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.List; import java.util.Properties; import org.onap.policy.common.endpoints.event.comm.Topic; +import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; /** * Topic Factory implementation that indexes T instances in a hash table. @@ -99,6 +100,14 @@ public abstract class TopicBaseHashedFactory implements TopicBa return newEndpoints; } + /** + * {@inheritDoc}. + */ + @Override + public T build(BusTopicParams param) { + return this.build(param.getServers(), param.getTopic(), param.isManaged()); + } + /** * {@inheritDoc}. */ diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/parameters/TopicParameterGroup.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/parameters/TopicParameterGroup.java index 70a06036..f633b0ef 100644 --- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/parameters/TopicParameterGroup.java +++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/parameters/TopicParameterGroup.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019 Nordix Foundation. + * Modifications 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. @@ -20,6 +21,7 @@ package org.onap.policy.common.endpoints.parameters; +import java.util.LinkedList; import java.util.List; import lombok.Getter; import lombok.Setter; @@ -41,8 +43,8 @@ import org.onap.policy.common.parameters.annotations.NotNull; @Setter public class TopicParameterGroup extends ParameterGroupImpl { - private List topicSources; - private List topicSinks; + private final List topicSources = new LinkedList<>(); + private final List topicSinks = new LinkedList<>(); public TopicParameterGroup() { super(TopicParameterGroup.class.getSimpleName()); diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.java index ba5fe18e..22ddecd1 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.java @@ -28,10 +28,17 @@ import static org.junit.Assert.assertTrue; import java.util.List; import java.util.Properties; +import org.junit.After; import org.junit.Test; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; +import org.onap.policy.common.endpoints.event.comm.bus.DmaapTopicFactories; import org.onap.policy.common.endpoints.event.comm.bus.DmaapTopicPropertyBuilder; +import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicFactories; import org.onap.policy.common.endpoints.event.comm.bus.NoopTopicPropertyBuilder; +import org.onap.policy.common.endpoints.event.comm.bus.UebTopicFactories; +import org.onap.policy.common.endpoints.event.comm.bus.UebTopicPropertyBuilder; +import org.onap.policy.common.endpoints.parameters.TopicParameterGroup; +import org.onap.policy.common.endpoints.parameters.TopicParameters; import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties; import org.onap.policy.common.utils.gson.GsonTestUtils; @@ -47,41 +54,54 @@ public class TopicEndpointProxyTest { private static final String DMAAP_SINK_TOPIC = "dmaap-sink"; private Properties configuration = new Properties(); + private TopicParameterGroup group = new TopicParameterGroup(); /** * Constructor. */ public TopicEndpointProxyTest() { - Properties noopSourceProperties = + NoopTopicPropertyBuilder noopSourceBuilder = new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS) - .makeTopic(NOOP_SOURCE_TOPIC).build(); + .makeTopic(NOOP_SOURCE_TOPIC); + configuration.putAll(noopSourceBuilder.build()); + group.getTopicSources().add(noopSourceBuilder.getParams()); - Properties noopSinkProperties = + NoopTopicPropertyBuilder noopSinkBuilder = new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SINK_TOPICS) - .makeTopic(NOOP_SINK_TOPIC).build(); - - Properties uebSourceProperties = - new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SOURCE_TOPICS) - .makeTopic(UEB_SOURCE_TOPIC).build(); - - Properties uebSinkProperties = - new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SINK_TOPICS) - .makeTopic(UEB_SINK_TOPIC).build(); - - Properties dmaapSourceProperties = + .makeTopic(NOOP_SINK_TOPIC); + configuration.putAll(noopSinkBuilder.build()); + group.getTopicSinks().add(noopSinkBuilder.getParams()); + + UebTopicPropertyBuilder uebSourceBuilder = + new UebTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SOURCE_TOPICS) + .makeTopic(UEB_SOURCE_TOPIC); + configuration.putAll(uebSourceBuilder.build()); + group.getTopicSources().add(uebSourceBuilder.getParams()); + + UebTopicPropertyBuilder uebSinkBuilder = + new UebTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_UEB_SINK_TOPICS) + .makeTopic(UEB_SINK_TOPIC); + configuration.putAll(uebSinkBuilder.build()); + group.getTopicSinks().add(uebSinkBuilder.getParams()); + + DmaapTopicPropertyBuilder dmaapSourceBuilder = new DmaapTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_DMAAP_SOURCE_TOPICS) - .makeTopic(DMAAP_SOURCE_TOPIC).build(); + .makeTopic(DMAAP_SOURCE_TOPIC); + configuration.putAll(dmaapSourceBuilder.build()); + group.getTopicSources().add(dmaapSourceBuilder.getParams()); - Properties dmaapSinkProperties = + DmaapTopicPropertyBuilder dmaapSinkBuilder = new DmaapTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_DMAAP_SINK_TOPICS) - .makeTopic(DMAAP_SINK_TOPIC).build(); - - configuration.putAll(noopSourceProperties); - configuration.putAll(noopSinkProperties); - configuration.putAll(uebSourceProperties); - configuration.putAll(uebSinkProperties); - configuration.putAll(dmaapSourceProperties); - configuration.putAll(dmaapSinkProperties); + .makeTopic(DMAAP_SINK_TOPIC); + configuration.putAll(dmaapSinkBuilder.build()); + group.getTopicSinks().add(dmaapSinkBuilder.getParams()); + + TopicParameters invalidCommInfraParams = + new NoopTopicPropertyBuilder(PolicyEndPointProperties.PROPERTY_NOOP_SOURCE_TOPICS) + .makeTopic(NOOP_SOURCE_TOPIC).getParams(); + invalidCommInfraParams.setTopicCommInfrastructure(Topic.CommInfrastructure.REST.name()); + group.getTopicSources().add(invalidCommInfraParams); + group.getTopicSinks().add(invalidCommInfraParams); } private boolean exists(List topics, String topicName) { @@ -112,6 +132,21 @@ public class TopicEndpointProxyTest { || exists(topics, DMAAP_SINK_TOPIC); } + /** + * Destroys all managed topics. + */ + @After + public void tearDown() { + NoopTopicFactories.getSinkFactory().destroy(); + NoopTopicFactories.getSourceFactory().destroy(); + + UebTopicFactories.getSinkFactory().destroy(); + UebTopicFactories.getSourceFactory().destroy(); + + DmaapTopicFactories.getSinkFactory().destroy(); + DmaapTopicFactories.getSourceFactory().destroy(); + } + @Test public void testSerialize() { TopicEndpoint manager = new TopicEndpointProxy(); @@ -123,7 +158,18 @@ public class TopicEndpointProxyTest { } @Test - public void addTopicSources() { + public void addTopicSourcesListOfTopicParameters() { + TopicEndpoint manager = new TopicEndpointProxy(); + + List sources = manager.addTopicSources(group.getTopicSources()); + assertSame(3, sources.size()); + + assertTrue(allSources(sources)); + assertFalse(anySink(sources)); + } + + @Test + public void addTopicSourcesProperties() { TopicEndpoint manager = new TopicEndpointProxy(); List sources = manager.addTopicSources(configuration); @@ -134,7 +180,18 @@ public class TopicEndpointProxyTest { } @Test - public void addTopicSinks() { + public void addTopicSinksListOfTopicParameters() { + TopicEndpoint manager = new TopicEndpointProxy(); + + List sinks = manager.addTopicSinks(group.getTopicSinks()); + assertSame(3, sinks.size()); + + assertFalse(anySource(sinks)); + assertTrue(allSinks(sinks)); + } + + @Test + public void addTopicSinksProperties() { TopicEndpoint manager = new TopicEndpointProxy(); List sinks = manager.addTopicSinks(configuration); @@ -145,7 +202,7 @@ public class TopicEndpointProxyTest { } @Test - public void addTopics() { + public void addTopicsProperties() { TopicEndpoint manager = new TopicEndpointProxy(); List topics = manager.addTopics(configuration); @@ -155,6 +212,34 @@ public class TopicEndpointProxyTest { assertTrue(allSinks(topics)); } + @Test + public void addTopicsTopicParameterGroup() { + TopicEndpoint manager = new TopicEndpointProxy(); + + List topics = manager.addTopics(group); + assertSame(6, topics.size()); + + assertTrue(allSources(topics)); + assertTrue(allSinks(topics)); + } + + @Test + public void lockSinks_lockSources_locked() { + TopicEndpoint manager = new TopicEndpointProxy(); + manager.lock(); + for (Topic topic : manager.addTopics(group)) { + assertTrue(topic.isLocked()); + } + } + + @Test + public void lockSinks_lockSources_unlocked() { + TopicEndpoint manager = new TopicEndpointProxy(); + for (Topic topic : manager.addTopics(group)) { + assertFalse(topic.isLocked()); + } + } + @Test public void getTopicSources() { TopicEndpoint manager = new TopicEndpointProxy(); diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/DmaapTopicPropertyBuilder.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/DmaapTopicPropertyBuilder.java index dff3f788..2e9a6cd7 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/DmaapTopicPropertyBuilder.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/DmaapTopicPropertyBuilder.java @@ -61,6 +61,10 @@ import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperti import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_LIMIT_SUFFIX; import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_TIMEOUT_SUFFIX; +import java.util.Arrays; +import lombok.Getter; +import org.onap.policy.common.endpoints.parameters.TopicParameters; + public class DmaapTopicPropertyBuilder extends TopicPropertyBuilder { public static final String SERVER = "my-server"; @@ -75,6 +79,9 @@ public class DmaapTopicPropertyBuilder extends TopicPropertyBuilder { public static final String MY_AAF_MECHID = "my-aaf-mechid"; public static final String MY_AAF_PASS = "my-aaf-passwd"; + @Getter + private TopicParameters params = new TopicParameters(); + /** * Constructs the object. * @@ -120,6 +127,28 @@ public class DmaapTopicPropertyBuilder extends TopicPropertyBuilder { setTopicProperty(PROPERTY_DMAAP_DME2_SUB_CONTEXT_PATH_SUFFIX, MY_SUBCONTEXT); setTopicProperty(PROPERTY_DMAAP_DME2_VERSION_SUFFIX, MY_DME_VERSION); + params.setTopicCommInfrastructure("dmaap"); + params.setTopic(topic); + params.setEffectiveTopic(MY_EFFECTIVE_TOPIC); + params.setConsumerGroup(MY_CONS_GROUP); + params.setConsumerInstance(MY_CONS_INST); + params.setManaged(true); + params.setUseHttps(true); + params.setUserName(MY_AAF_MECHID); + params.setPassword(MY_AAF_PASS); + params.setAftEnvironment(MY_AFT_ENV); + params.setAllowSelfSignedCerts(true); + params.setApiKey(MY_API_KEY); + params.setApiSecret(MY_API_SECRET); + params.setFetchLimit(MY_FETCH_LIMIT); + params.setFetchTimeout(MY_FETCH_TIMEOUT); + params.setEnvironment(MY_ENV); + params.setLatitude(MY_LAT); + params.setLongitude(MY_LONG); + params.setPartitionId(MY_PARTITION); + params.setPartner(MY_PARTNER); + params.setServers(Arrays.asList(SERVER)); + return this; } } diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicFactoryTest.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicFactoryTest.java index 1f7506f8..5cb9bcbd 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicFactoryTest.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicFactoryTest.java @@ -39,6 +39,7 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; +import org.onap.policy.common.endpoints.event.comm.bus.internal.BusTopicParams; public abstract class NoopTopicFactoryTest, T extends NoopTopicEndpoint> extends TopicFactoryTestBase { @@ -63,6 +64,17 @@ public abstract class NoopTopicFactoryTest, T exte factory.destroy(); } + @Test + public void testBuildBusTopicParams() { + initFactory(); + + T item1 = buildTopic(makeParams(servers, MY_TOPIC, true)); + assertNotNull(item1); + + assertEquals(servers, item1.getServers()); + assertEquals(MY_TOPIC, item1.getTopic()); + } + @Test public void testBuildListOfStringStringBoolean() { initFactory(); @@ -196,6 +208,10 @@ public abstract class NoopTopicFactoryTest, T exte return factory.build(properties); } + protected T buildTopic(BusTopicParams param) { + return factory.build(param); + } + protected T buildTopic(List servers, String topic, boolean managed) { return factory.build(servers, topic, managed); } @@ -224,4 +240,14 @@ public abstract class NoopTopicFactoryTest, T exte protected TopicPropertyBuilder makePropBuilder() { return new NoopTopicPropertyBuilder(factory.getTopicsPropertyName()); } + + private BusTopicParams makeParams(List servers, String topic, boolean managed) { + BusTopicParams params = new BusTopicParams(); + + params.setServers(servers); + params.setTopic(topic); + params.setManaged(managed); + + return params; + } } diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicPropertyBuilder.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicPropertyBuilder.java index 529f8b2f..3f0553f8 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicPropertyBuilder.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicPropertyBuilder.java @@ -27,11 +27,18 @@ import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperti import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_EFFECTIVE_TOPIC_SUFFIX; import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SERVERS_SUFFIX; +import java.util.Arrays; +import lombok.Getter; +import org.onap.policy.common.endpoints.parameters.TopicParameters; + public class NoopTopicPropertyBuilder extends TopicPropertyBuilder { public static final String SERVER = "my-server"; public static final String TOPIC2 = "my-topic-2"; + @Getter + private TopicParameters params = new TopicParameters(); + /** * Constructs the object. * @@ -56,6 +63,14 @@ public class NoopTopicPropertyBuilder extends TopicPropertyBuilder { setTopicProperty(PROPERTY_ALLOW_SELF_SIGNED_CERTIFICATES_SUFFIX, "true"); setTopicProperty(PROPERTY_TOPIC_SERVERS_SUFFIX, SERVER); + params.setTopicCommInfrastructure("noop"); + params.setTopic(topic); + params.setEffectiveTopic(MY_EFFECTIVE_TOPIC); + params.setManaged(true); + params.setUseHttps(true); + params.setAllowSelfSignedCerts(true); + params.setServers(Arrays.asList(SERVER)); + return this; } } diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSinkFactoryTest.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSinkFactoryTest.java index cc44716f..b4ab54fa 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSinkFactoryTest.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSinkFactoryTest.java @@ -20,10 +20,19 @@ package org.onap.policy.common.endpoints.event.comm.bus; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + public class NoopTopicSinkFactoryTest extends NoopTopicFactoryTest { @Override protected NoopTopicSinkFactory buildFactory() { return new NoopTopicSinkFactory(); } + + @Test + public void testToString() { + assertTrue(new NoopTopicSinkFactory().toString().startsWith("NoopTopicSinkFactory [")); + } } diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactoryTest.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactoryTest.java index c8a44292..e16174fd 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactoryTest.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/NoopTopicSourceFactoryTest.java @@ -20,10 +20,19 @@ package org.onap.policy.common.endpoints.event.comm.bus; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + public class NoopTopicSourceFactoryTest extends NoopTopicFactoryTest { @Override protected NoopTopicSourceFactory buildFactory() { return new NoopTopicSourceFactory(); } + + @Test + public void testToString() { + assertTrue(new NoopTopicSourceFactory().toString().startsWith("NoopTopicSourceFactory [")); + } } diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/UebTopicPropertyBuilder.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/UebTopicPropertyBuilder.java index 6119284f..cb5507e5 100644 --- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/UebTopicPropertyBuilder.java +++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/event/comm/bus/UebTopicPropertyBuilder.java @@ -45,6 +45,10 @@ import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperti import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_LIMIT_SUFFIX; import static org.onap.policy.common.endpoints.properties.PolicyEndPointProperties.PROPERTY_TOPIC_SOURCE_FETCH_TIMEOUT_SUFFIX; +import java.util.Arrays; +import lombok.Getter; +import org.onap.policy.common.endpoints.parameters.TopicParameters; + public class UebTopicPropertyBuilder extends TopicPropertyBuilder { public static final String SERVER = "my-server"; @@ -53,6 +57,9 @@ public class UebTopicPropertyBuilder extends TopicPropertyBuilder { public static final String MY_AAF_MECHID = "my-aaf-mechid"; public static final String MY_AAF_PASS = "my-aaf-passwd"; + @Getter + private TopicParameters params = new TopicParameters(); + /** * Constructs the object. * @@ -87,6 +94,24 @@ public class UebTopicPropertyBuilder extends TopicPropertyBuilder { setTopicProperty(PROPERTY_TOPIC_SINK_PARTITION_KEY_SUFFIX, MY_PARTITION); setTopicProperty(PROPERTY_TOPIC_SERVERS_SUFFIX, SERVER); + params.setTopicCommInfrastructure("ueb"); + params.setTopic(topic); + params.setEffectiveTopic(MY_EFFECTIVE_TOPIC); + params.setConsumerGroup(MY_CONS_GROUP); + params.setConsumerInstance(MY_CONS_INST); + params.setManaged(true); + params.setUseHttps(true); + params.setUserName(MY_AAF_MECHID); + params.setPassword(MY_AAF_PASS); + params.setAftEnvironment(MY_AFT_ENV); + params.setAllowSelfSignedCerts(true); + params.setApiKey(MY_API_KEY); + params.setApiSecret(MY_API_SECRET); + params.setFetchLimit(MY_FETCH_LIMIT); + params.setFetchTimeout(MY_FETCH_TIMEOUT); + params.setPartitionId(MY_PARTITION); + params.setServers(Arrays.asList(SERVER)); + return this; } } diff --git a/policy-endpoints/src/test/resources/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.json b/policy-endpoints/src/test/resources/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.json index 3402a524..9c8d78e5 100644 --- a/policy-endpoints/src/test/resources/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.json +++ b/policy-endpoints/src/test/resources/org/onap/policy/common/endpoints/event/comm/TopicEndpointProxyTest.json @@ -8,13 +8,13 @@ "recentEvents" : [ ], "alive" : false, "locked" : false, - "apiKey" : null, - "apiSecret" : null, + "apiKey" : "my-api-key", + "apiSecret" : "my-api-secret", "useHttps" : true, "allowSelfSignedCerts" : true, "consumerGroup" : "${obj.topicSources[0].consumerGroup}", "consumerInstance" : "${obj.topicSources[0].consumerInstance}", - "fetchTimeout" : 15000, + "fetchTimeout" : 101, "fetchLimit" : 100, "topicCommInfrastructure" : "UEB" }, { @@ -49,8 +49,8 @@ "recentEvents" : [ ], "alive" : false, "locked" : false, - "apiKey" : null, - "apiSecret" : null, + "apiKey" : "my-api-key", + "apiSecret" : "my-api-secret", "useHttps" : true, "allowSelfSignedCerts" : true, "topicCommInfrastructure" : "UEB", -- cgit 1.2.3-korg