aboutsummaryrefslogtreecommitdiffstats
path: root/feature-pooling-dmaap/src/test
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2018-05-03 14:47:23 -0400
committerJim Hahn <jrh3@att.com>2018-05-04 10:20:48 -0400
commit3b6bb8e880d3b56afb7767ea7d0505ceb49f8890 (patch)
tree40147927cb0b2a2da59680aed3999257e3e6498c /feature-pooling-dmaap/src/test
parentd8941a17b30fdc6d24f1c5e9d84685c1fafd7ee6 (diff)
Fix various problems in pooling
Renamed META-INF SessionAPI to EngineAPI, as it implements the latter. Created default PoolingFeature.factory object. Don't delete a controller's pooling manager when stop is called; do that in afterHalt and afterShutdown. This enables it to be restarted as long as the controller still exists. Only stop & start the internal DMaaP topic at the engine level instead of the controller level. This is necessary to prevent sinks for ALL controllers from being started each time an individual controller starts. Clear all bucket assignments when controller is stopped. Mark test methods with @Override annotation. Add default property file for pooling feature. Add license to default property file. Remove tests for doDeleteManager(), as it no longer exists. Changed " = " to "=" in the property file. Change-Id: I80c0c3f1879b5a320044db93e3dfa3b7281cda51 Issue-ID: POLICY-774 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'feature-pooling-dmaap/src/test')
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/DmaapManagerTest.java84
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/FeatureTest.java23
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingFeatureTest.java63
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java29
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/ForwardTest.java6
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/HeartbeatTest.java6
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/IdentificationTest.java6
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/LeaderTest.java6
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/OfflineTest.java6
-rw-r--r--feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/QueryTest.java6
10 files changed, 64 insertions, 171 deletions
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/DmaapManagerTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/DmaapManagerTest.java
index a5688df6..6509e90e 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/DmaapManagerTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/DmaapManagerTest.java
@@ -24,16 +24,14 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.LinkedList;
-import java.util.Properties;
import java.util.concurrent.CountDownLatch;
import org.junit.AfterClass;
import org.junit.Before;
@@ -56,7 +54,6 @@ public class DmaapManagerTest {
*/
private static Factory saveFactory;
- private Properties props;
private Factory factory;
private TopicListener listener;
private FilterableTopicSource source;
@@ -75,8 +72,6 @@ public class DmaapManagerTest {
@Before
public void setUp() throws Exception {
- props = new Properties();
-
listener = mock(TopicListener.class);
factory = mock(Factory.class);
source = mock(FilterableTopicSource.class);
@@ -90,21 +85,21 @@ public class DmaapManagerTest {
when(sink.send(any())).thenReturn(true);
// three sources, with the desired one in the middle
- when(factory.initTopicSources(props))
+ when(factory.getTopicSources())
.thenReturn(Arrays.asList(mock(TopicSource.class), source, mock(TopicSource.class)));
// three sinks, with the desired one in the middle
- when(factory.initTopicSinks(props))
+ when(factory.getTopicSinks())
.thenReturn(Arrays.asList(mock(TopicSink.class), sink, mock(TopicSink.class)));
- mgr = new DmaapManager(MY_TOPIC, props);
+ mgr = new DmaapManager(MY_TOPIC);
}
@Test
public void testDmaapManager() {
// verify that the init methods were called
- verify(factory).initTopicSinks(props);
- verify(factory).initTopicSinks(props);
+ verify(factory).getTopicSinks();
+ verify(factory).getTopicSinks();
}
@Test(expected = PoolingFeatureException.class)
@@ -112,15 +107,15 @@ public class DmaapManagerTest {
// force error by having no topics match
when(source.getTopic()).thenReturn("");
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test(expected = PoolingFeatureException.class)
public void testDmaapManager_IllegalArgEx() throws PoolingFeatureException {
// force error
- when(factory.initTopicSources(props)).thenThrow(new IllegalArgumentException("expected"));
+ when(factory.getTopicSources()).thenThrow(new IllegalArgumentException("expected"));
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test(expected = PoolingFeatureException.class)
@@ -128,7 +123,7 @@ public class DmaapManagerTest {
// force an error when setFilter() is called
doThrow(new UnsupportedOperationException("expected")).when(source).setFilter(any());
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test
@@ -148,25 +143,25 @@ public class DmaapManagerTest {
TopicSource source2 = mock(TopicSource.class);
when(source2.getTopic()).thenReturn(MY_TOPIC);
- when(factory.initTopicSources(props)).thenReturn(Arrays.asList(source2));
+ when(factory.getTopicSources()).thenReturn(Arrays.asList(source2));
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test(expected = PoolingFeatureException.class)
public void testFindTopicSource_NotFound() throws PoolingFeatureException {
// one item in list, and its topic doesn't match
- when(factory.initTopicSources(props)).thenReturn(Arrays.asList(mock(TopicSource.class)));
+ when(factory.getTopicSources()).thenReturn(Arrays.asList(mock(TopicSource.class)));
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test(expected = PoolingFeatureException.class)
public void testFindTopicSource_EmptyList() throws PoolingFeatureException {
// empty list
- when(factory.initTopicSources(props)).thenReturn(new LinkedList<>());
+ when(factory.getTopicSources()).thenReturn(new LinkedList<>());
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test
@@ -177,50 +172,26 @@ public class DmaapManagerTest {
@Test(expected = PoolingFeatureException.class)
public void testFindTopicSink_NotFound() throws PoolingFeatureException {
// one item in list, and its topic doesn't match
- when(factory.initTopicSinks(props)).thenReturn(Arrays.asList(mock(TopicSink.class)));
+ when(factory.getTopicSinks()).thenReturn(Arrays.asList(mock(TopicSink.class)));
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test(expected = PoolingFeatureException.class)
public void testFindTopicSink_EmptyList() throws PoolingFeatureException {
// empty list
- when(factory.initTopicSinks(props)).thenReturn(new LinkedList<>());
+ when(factory.getTopicSinks()).thenReturn(new LinkedList<>());
- new DmaapManager(MY_TOPIC, props);
+ new DmaapManager(MY_TOPIC);
}
@Test
public void testStartPublisher() throws PoolingFeatureException {
- // not started yet
- verify(sink, never()).start();
-
+
mgr.startPublisher();
- verify(sink).start();
// restart should have no effect
mgr.startPublisher();
- verify(sink).start();
-
- // should be able to publish now
- mgr.publish(MSG);
- verify(sink).send(MSG);
- }
-
- @Test
- public void testStartPublisher_Exception() throws PoolingFeatureException {
- // force exception when it starts
- doThrow(new IllegalStateException("expected")).when(sink).start();
-
- expectException("startPublisher,start", () -> mgr.startPublisher());
- expectException("startPublisher,publish", () -> mgr.publish(MSG));
-
- // allow it to succeed this time
- reset(sink);
- when(sink.send(any())).thenReturn(true);
-
- mgr.startPublisher();
- verify(sink).start();
// should be able to publish now
mgr.publish(MSG);
@@ -231,18 +202,15 @@ public class DmaapManagerTest {
public void testStopPublisher() throws PoolingFeatureException {
// not publishing yet, so stopping should have no effect
mgr.stopPublisher(0);
- verify(sink, never()).stop();
// now start it
mgr.startPublisher();
// this time, stop should do something
mgr.stopPublisher(0);
- verify(sink).stop();
// re-stopping should have no effect
mgr.stopPublisher(0);
- verify(sink).stop();
}
@Test
@@ -285,16 +253,6 @@ public class DmaapManagerTest {
}
@Test
- public void testStopPublisher_Exception() throws PoolingFeatureException {
- mgr.startPublisher();
-
- // force exception when it stops
- doThrow(new IllegalStateException("expected")).when(sink).stop();
-
- mgr.stopPublisher(0);
- }
-
- @Test
public void testStartConsumer() {
// not started yet
verify(source, never()).register(any());
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/FeatureTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/FeatureTest.java
index cc588384..d453e746 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/FeatureTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/FeatureTest.java
@@ -874,11 +874,6 @@ public class FeatureTest {
private static class TopicImpl implements Topic {
/**
- * {@code True} if this topic is alive/running, {@code false} otherwise.
- */
- private boolean alive = false;
-
- /**
*
*/
public TopicImpl() {
@@ -917,32 +912,22 @@ public class FeatureTest {
@Override
public synchronized boolean start() {
- if (alive) {
- throw new IllegalStateException("topic already started");
- }
-
- alive = true;
return true;
}
@Override
public synchronized boolean stop() {
- if (!alive) {
- throw new IllegalStateException("topic is not running");
- }
-
- alive = false;
return true;
}
@Override
public synchronized void shutdown() {
- alive = false;
+ // do nothing
}
@Override
public synchronized boolean isAlive() {
- return alive;
+ return true;
}
@Override
@@ -1081,12 +1066,12 @@ public class FeatureTest {
}
@Override
- public List<TopicSource> initTopicSources(Properties props) {
+ public List<TopicSource> getTopicSources() {
return Arrays.asList(new TopicSourceImpl(context, true));
}
@Override
- public List<TopicSink> initTopicSinks(Properties props) {
+ public List<TopicSink> getTopicSinks() {
return Arrays.asList(new TopicSinkImpl(context));
}
}
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingFeatureTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingFeatureTest.java
index f8f37559..32264e3a 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingFeatureTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingFeatureTest.java
@@ -271,11 +271,28 @@ public class PoolingFeatureTest {
assertFalse(pool.afterStop(controller1));
verify(mgr1).afterStop();
- // ensure it has been removed from the map by re-invoking
- assertFalse(pool.afterStop(controller1));
-
+ assertFalse(pool.afterStop(controllerDisabled));
+
// count should be unchanged
verify(mgr1).afterStop();
+ }
+
+ @Test
+ public void testAfterHalt() {
+ assertFalse(pool.afterHalt(controller1));
+ assertFalse(pool.afterHalt(controller1));
+
+ verify(mgr1, never()).afterStop();
+
+ assertFalse(pool.afterStop(controllerDisabled));
+ }
+
+ @Test
+ public void testAfterShutdown() {
+ assertFalse(pool.afterShutdown(controller1));
+ assertFalse(pool.afterShutdown(controller1));
+
+ verify(mgr1, never()).afterStop();
assertFalse(pool.afterStop(controllerDisabled));
}
@@ -464,46 +481,6 @@ public class PoolingFeatureTest {
pool.beforeStart(controller1);
}
- @Test
- public void testDoDeleteManager() {
- assertFalse(pool.afterStop(controller1));
- verify(mgr1).afterStop();
-
- // ensure it has been removed from the map by re-invoking
- assertFalse(pool.afterStop(controller1));
-
- // count should be unchanged
- verify(mgr1).afterStop();
-
-
- // different controller
- assertFalse(pool.afterStop(controller2));
- verify(mgr2).afterStop();
-
- // ensure it has been removed from the map by re-invoking
- assertFalse(pool.afterStop(controller2));
-
- // count should be unchanged
- verify(mgr2).afterStop();
-
-
- assertFalse(pool.afterStop(controllerDisabled));
- }
-
- @Test
- public void testDoDeleteManager_NotFound() {
- assertFalse(pool.afterStop(controllerDisabled));
- }
-
- @Test(expected = PoolingFeatureRtException.class)
- public void testDoDeleteManager_Ex() {
-
- // generate exception
- doThrow(new PoolingFeatureRtException()).when(mgr1).afterStop();
-
- pool.afterStop(controller1);
- }
-
private Properties initProperties() {
Properties props = new Properties();
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java
index e0024b79..64573ab0 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/PoolingManagerImplTest.java
@@ -155,7 +155,7 @@ public class PoolingManagerImplTest {
when(factory.makeEventQueue(any())).thenReturn(eventQueue);
when(factory.makeClassExtractors(any())).thenReturn(extractors);
- when(factory.makeDmaapManager(any(), any())).thenReturn(dmaap);
+ when(factory.makeDmaapManager(any())).thenReturn(dmaap);
when(factory.makeScheduler()).thenReturn(sched);
when(factory.canDecodeEvent(drools, TOPIC2)).thenReturn(true);
when(factory.decodeEvent(drools, TOPIC2, THE_EVENT)).thenReturn(DECODED_EVENT);
@@ -188,7 +188,7 @@ public class PoolingManagerImplTest {
@Test
public void testPoolingManagerImpl() throws Exception {
- verify(factory).makeDmaapManager(any(), any());
+ verify(factory).makeDmaapManager(any());
State st = mgr.getCurrent();
assertTrue(st instanceof IdleState);
@@ -215,7 +215,7 @@ public class PoolingManagerImplTest {
public void testPoolingManagerImpl_PoolEx() throws PoolingFeatureException {
// throw an exception when we try to create the dmaap manager
PoolingFeatureException ex = new PoolingFeatureException();
- when(factory.makeDmaapManager(any(), any())).thenThrow(ex);
+ when(factory.makeDmaapManager(any())).thenThrow(ex);
PoolingFeatureRtException ex2 = expectException(PoolingFeatureRtException.class,
() -> new PoolingManagerImpl(MY_HOST, controller, poolProps, active));
@@ -272,19 +272,6 @@ public class PoolingManagerImplTest {
}
@Test
- public void testBeforeStart_DmaapEx() throws Exception {
- // generate an exception
- PoolingFeatureException ex = new PoolingFeatureException();
- doThrow(ex).when(dmaap).startPublisher();
-
- PoolingFeatureException ex2 = expectException(PoolingFeatureException.class, () -> mgr.beforeStart());
- assertEquals(ex, ex2);
-
- // should never start the scheduler
- verify(factory, never()).makeScheduler();
- }
-
- @Test
public void testAfterStart() throws Exception {
startMgr();
@@ -317,7 +304,13 @@ public class PoolingManagerImplTest {
@Test
public void testBeforeStop() throws Exception {
startMgr();
+ mgr.startDistributing(makeAssignments(true));
+ // verify that this message is not queued
+ Forward msg = new Forward(mgr.getHost(), CommInfrastructure.UEB, TOPIC2, THE_EVENT, REQUEST_ID);
+ mgr.handle(msg);
+ verify(eventQueue, never()).add(msg);
+
mgr.beforeStop();
verify(dmaap).stopConsumer(mgr);
@@ -325,6 +318,10 @@ public class PoolingManagerImplTest {
verify(dmaap).publish(contains("offline"));
assertTrue(mgr.getCurrent() instanceof IdleState);
+
+ // verify that next message is queued
+ mgr.handle(msg);
+ verify(eventQueue).add(msg);
}
@Test
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/ForwardTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/ForwardTest.java
index c56caca8..bc92fa27 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/ForwardTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/ForwardTest.java
@@ -177,11 +177,7 @@ public class ForwardTest extends BasicMessageTester<Forward> {
expectCheckValidityFailure(msg -> msg.setNumHops(-1));
}
- /**
- * Makes a message that will pass the validity check.
- *
- * @return a valid Message
- */
+ @Override
public Forward makeValidMessage() {
tcreateMs = System.currentTimeMillis();
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/HeartbeatTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/HeartbeatTest.java
index da78dbe3..43f1afd4 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/HeartbeatTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/HeartbeatTest.java
@@ -33,11 +33,7 @@ public class HeartbeatTest extends BasicMessageTester<Heartbeat> {
super(Heartbeat.class);
}
- /**
- * Makes a message that will pass the validity check.
- *
- * @return a valid Message
- */
+ @Override
public Heartbeat makeValidMessage() {
Heartbeat msg = new Heartbeat(VALID_HOST, ++sequence);
msg.setChannel(VALID_CHANNEL);
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/IdentificationTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/IdentificationTest.java
index 8255034f..7b28afc0 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/IdentificationTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/IdentificationTest.java
@@ -62,11 +62,7 @@ public class IdentificationTest extends MessageWithAssignmentsTester<Identificat
msg.checkValidity();
}
- /**
- * Makes a message that will pass the validity check.
- *
- * @return a valid Message
- */
+ @Override
public Identification makeValidMessage() {
Identification msg = new Identification(VALID_HOST, (isNullAssignments() ? null : VALID_ASGN));
msg.setChannel(VALID_CHANNEL);
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/LeaderTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/LeaderTest.java
index 0f58e224..e30d7d09 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/LeaderTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/LeaderTest.java
@@ -62,11 +62,7 @@ public class LeaderTest extends MessageWithAssignmentsTester<Leader> {
expectCheckValidityFailure(msg -> msg.setAssignments(asgnNotSmallest));
}
- /**
- * Makes a message that will pass the validity check.
- *
- * @return a valid Message
- */
+ @Override
public Leader makeValidMessage() {
Leader msg = new Leader(VALID_HOST, (isNullAssignments() ? null : VALID_ASGN));
msg.setChannel(VALID_CHANNEL);
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/OfflineTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/OfflineTest.java
index 8d0f4a6f..4fe37366 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/OfflineTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/OfflineTest.java
@@ -26,11 +26,7 @@ public class OfflineTest extends BasicMessageTester<Offline> {
super(Offline.class);
}
- /**
- * Makes a message that will pass the validity check.
- *
- * @return a valid Message
- */
+ @Override
public Offline makeValidMessage() {
Offline msg = new Offline(VALID_HOST);
msg.setChannel(VALID_CHANNEL);
diff --git a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/QueryTest.java b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/QueryTest.java
index 0b2a986d..e0ab016a 100644
--- a/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/QueryTest.java
+++ b/feature-pooling-dmaap/src/test/java/org/onap/policy/drools/pooling/message/QueryTest.java
@@ -26,11 +26,7 @@ public class QueryTest extends BasicMessageTester<Query> {
super(Query.class);
}
- /**
- * Makes a message that will pass the validity check.
- *
- * @return a valid Message
- */
+ @Override
public Query makeValidMessage() {
Query msg = new Query(VALID_HOST);
msg.setChannel(VALID_CHANNEL);