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 --- .../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 ++++ 7 files changed, 225 insertions(+), 27 deletions(-) (limited to 'policy-endpoints/src/test/java/org/onap/policy/common/endpoints') 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; } } -- cgit 1.2.3-korg