From 482caffb6cc503ab1d156109a5dba8c2fe675f3d Mon Sep 17 00:00:00 2001 From: Gary Wu Date: Thu, 19 Nov 2015 17:16:13 -0800 Subject: [PATCH] Refactor MessageCollectorActor and DoNothingActor Refactor/consolidate the duplicate copies of MessageCollectorActor and DoNothingActor used in org/opendaylight/controller/cluster/datastore and org/opendaylight/controller/cluster/raft/utils to use just the one in raft. Also moved the EchoActor into raft. Change-Id: I72784a6799ae4331ab52d497d421b9a8bb98f34a Signed-off-by: Gary Wu --- ...ftActorServerConfigurationSupportTest.java | 2 +- .../AbstractLeaderElectionScenarioTest.java | 4 +- .../cluster/raft}/utils/EchoActor.java | 7 +- .../raft/utils/MessageCollectorActor.java | 8 +- .../AbstractTransactionProxyTest.java | 2 +- .../DataChangeListenerProxyTest.java | 6 +- ...taChangeListenerRegistrationProxyTest.java | 2 +- .../DataTreeChangeListenerProxyTest.java | 2 +- .../ForwardingDataTreeChangeListenerTest.java | 4 +- .../datastore/RoleChangeNotifierTest.java | 10 +- .../ThreePhaseCommitCohortProxyTest.java | 2 +- .../datastore/TransactionProxyTest.java | 2 +- .../datastore/utils/ActorContextTest.java | 24 +--- .../datastore/utils/DoNothingActor.java | 17 --- .../utils/MessageCollectorActor.java | 111 ------------------ .../cluster/datastore/utils/TestUtils.java | 4 +- 16 files changed, 33 insertions(+), 174 deletions(-) rename opendaylight/md-sal/{sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore => sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft}/utils/EchoActor.java (73%) delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/DoNothingActor.java delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MessageCollectorActor.java diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java index 36e6299265..da85c67c06 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java @@ -347,7 +347,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // Wait for leader's install snapshot and capture it - Object installSnapshot = expectFirstMatching(newFollowerCollectorActor, InstallSnapshot.class); + InstallSnapshot installSnapshot = expectFirstMatching(newFollowerCollectorActor, InstallSnapshot.class); // Send a second AddServer - should get queued JavaTestKit testKit2 = new JavaTestKit(getSystem()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractLeaderElectionScenarioTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractLeaderElectionScenarioTest.java index 9b2b4d37fe..13fd698cd9 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractLeaderElectionScenarioTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/AbstractLeaderElectionScenarioTest.java @@ -132,9 +132,9 @@ public class AbstractLeaderElectionScenarioTest { } T getCapturedMessage(Class msgClass) throws Exception { - Object message = getFirstMatching(getSelf(), msgClass); + T message = getFirstMatching(getSelf(), msgClass); assertNotNull("Message of type " + msgClass + " not received", message); - return (T) message; + return message; } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/EchoActor.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/EchoActor.java similarity index 73% rename from opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/EchoActor.java rename to opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/EchoActor.java index fe88afe1db..3b2296c35e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/EchoActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/EchoActor.java @@ -6,16 +6,17 @@ * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.controller.cluster.datastore.utils; +package org.opendaylight.controller.cluster.raft.utils; import akka.actor.UntypedActor; /** * The EchoActor simply responds back with the same message that it receives */ -public class EchoActor extends UntypedActor{ +public class EchoActor extends UntypedActor { - @Override public void onReceive(Object message) throws Exception { + @Override + public void onReceive(Object message) throws Exception { getSender().tell(message, getSelf()); } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java index 2c5b6cc34b..7e3e344908 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/utils/MessageCollectorActor.java @@ -31,7 +31,7 @@ import scala.concurrent.duration.FiniteDuration; public class MessageCollectorActor extends UntypedActor { private static final String ARE_YOU_READY = "ARE_YOU_READY"; - private static final String GET_ALL_MESSAGES = "get-all-messages"; + public static final String GET_ALL_MESSAGES = "messages"; private static final String CLEAR_MESSAGES = "clear-messages"; private final List messages = new ArrayList<>(); @@ -55,7 +55,7 @@ public class MessageCollectorActor extends UntypedActor { messages.clear(); } - public static List getAllMessages(ActorRef actor) throws Exception { + private static List getAllMessages(ActorRef actor) throws Exception { FiniteDuration operationDuration = Duration.create(5, TimeUnit.SECONDS); Timeout operationTimeout = new Timeout(operationDuration); Future future = Patterns.ask(actor, GET_ALL_MESSAGES, operationTimeout); @@ -78,7 +78,7 @@ public class MessageCollectorActor extends UntypedActor { for(Object message : allMessages){ if(message.getClass().equals(clazz)){ - return (T) message; + return clazz.cast(message); } } @@ -177,7 +177,7 @@ public class MessageCollectorActor extends UntypedActor { for(Object message : allMessages){ if(message.getClass().equals(clazz)){ - output.add((T) message); + output.add(clazz.cast(message)); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java index f7a364b67e..2e0874dc17 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/AbstractTransactionProxyTest.java @@ -66,8 +66,8 @@ import org.opendaylight.controller.cluster.datastore.shardstrategy.DefaultShardS import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategy; import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor; import org.opendaylight.controller.cluster.datastore.utils.MockConfiguration; +import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; import org.opendaylight.controller.md.cluster.datastore.model.CarsModel; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java index 1a408aa559..68e7e1044c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerProxyTest.java @@ -19,10 +19,10 @@ import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.messages.DataChanged; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor; -import org.opendaylight.controller.cluster.datastore.utils.MessageCollectorActor; import org.opendaylight.controller.cluster.datastore.utils.MockClusterWrapper; import org.opendaylight.controller.cluster.datastore.utils.MockConfiguration; +import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; +import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; import org.opendaylight.controller.md.cluster.datastore.model.CompositeModel; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -86,7 +86,7 @@ public class DataChangeListenerProxyTest extends AbstractActorTest { ActorContext testContext = new ActorContext(getSystem(), getSystem().actorOf(Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration()); Object messages = testContext - .executeOperation(actorRef, "messages"); + .executeOperation(actorRef, MessageCollectorActor.GET_ALL_MESSAGES); Assert.assertNotNull(messages); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java index aa95e78d88..b338329740 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataChangeListenerRegistrationProxyTest.java @@ -38,7 +38,7 @@ import org.opendaylight.controller.cluster.datastore.messages.RegisterChangeList import org.opendaylight.controller.cluster.datastore.messages.RegisterChangeListenerReply; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; import org.opendaylight.controller.cluster.datastore.utils.Dispatchers; -import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor; +import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxyTest.java index fd1ab2bb4d..5dcc39d68d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DataTreeChangeListenerProxyTest.java @@ -37,7 +37,7 @@ import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeCh import org.opendaylight.controller.cluster.datastore.messages.RegisterDataTreeChangeListenerReply; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; import org.opendaylight.controller.cluster.datastore.utils.Dispatchers; -import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor; +import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.controller.md.sal.dom.api.ClusteredDOMDataTreeChangeListener; import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ForwardingDataTreeChangeListenerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ForwardingDataTreeChangeListenerTest.java index fb8baf159f..1005c2a8b8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ForwardingDataTreeChangeListenerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ForwardingDataTreeChangeListenerTest.java @@ -15,7 +15,7 @@ import org.junit.Assert; import org.junit.Test; import org.mockito.Mockito; import org.opendaylight.controller.cluster.datastore.messages.DataTreeChanged; -import org.opendaylight.controller.cluster.datastore.utils.MessageCollectorActor; +import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; public class ForwardingDataTreeChangeListenerTest extends AbstractActorTest { @@ -31,7 +31,7 @@ public class ForwardingDataTreeChangeListenerTest extends AbstractActorTest { Collection expected = Arrays.asList(Mockito.mock(DataTreeCandidate.class)); forwardingListener.onDataTreeChanged(expected); - DataTreeChanged actual = MessageCollectorActor.expectFirstMatching(actorRef, DataTreeChanged.class); + DataTreeChanged actual = MessageCollectorActor.expectFirstMatching(actorRef, DataTreeChanged.class, 5000); Assert.assertSame(expected, actual.getChanges()); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/RoleChangeNotifierTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/RoleChangeNotifierTest.java index 086bc3f0ad..bec679c163 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/RoleChangeNotifierTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/RoleChangeNotifierTest.java @@ -17,7 +17,6 @@ import akka.actor.Props; import akka.testkit.JavaTestKit; import akka.testkit.TestActorRef; import org.junit.Test; -import org.opendaylight.controller.cluster.datastore.utils.MessageCollectorActor; import org.opendaylight.controller.cluster.notifications.LeaderStateChanged; import org.opendaylight.controller.cluster.notifications.RegisterRoleChangeListener; import org.opendaylight.controller.cluster.notifications.RegisterRoleChangeListenerReply; @@ -25,6 +24,7 @@ import org.opendaylight.controller.cluster.notifications.RoleChangeNotification; import org.opendaylight.controller.cluster.notifications.RoleChangeNotifier; import org.opendaylight.controller.cluster.notifications.RoleChanged; import org.opendaylight.controller.cluster.raft.RaftState; +import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; public class RoleChangeNotifierTest extends AbstractActorTest { @@ -39,11 +39,11 @@ public class RoleChangeNotifierTest extends AbstractActorTest { notifierTestActorRef.tell(new RegisterRoleChangeListener(), listenerActor); - RegisterRoleChangeListenerReply reply = (RegisterRoleChangeListenerReply) + RegisterRoleChangeListenerReply reply = MessageCollectorActor.getFirstMatching(listenerActor, RegisterRoleChangeListenerReply.class); assertNotNull(reply); - RoleChangeNotification notification = (RoleChangeNotification) + RoleChangeNotification notification = MessageCollectorActor.getFirstMatching(listenerActor, RoleChangeNotification.class); assertNull(notification); }}; @@ -68,11 +68,11 @@ public class RoleChangeNotifierTest extends AbstractActorTest { // listener registers after role has been changed, ensure we sent the latest role change after a reply notifierTestActorRef.tell(new RegisterRoleChangeListener(), listenerActor); - RegisterRoleChangeListenerReply reply = (RegisterRoleChangeListenerReply) + RegisterRoleChangeListenerReply reply = MessageCollectorActor.getFirstMatching(listenerActor, RegisterRoleChangeListenerReply.class); assertNotNull(reply); - RoleChangeNotification notification = (RoleChangeNotification) + RoleChangeNotification notification = MessageCollectorActor.getFirstMatching(listenerActor, RoleChangeNotification.class); assertNotNull(notification); assertEquals(RaftState.Candidate.name(), notification.getOldRole()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxyTest.java index 8b5665244a..ce6145de1c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ThreePhaseCommitCohortProxyTest.java @@ -42,7 +42,7 @@ import org.opendaylight.controller.cluster.datastore.messages.PreCommitTransacti import org.opendaylight.controller.cluster.datastore.messages.PreCommitTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.SerializableMessage; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor; +import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; import scala.concurrent.Future; import scala.concurrent.duration.Duration; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java index fdb3683226..a5625637f4 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java @@ -57,8 +57,8 @@ import org.opendaylight.controller.cluster.datastore.modification.DeleteModifica import org.opendaylight.controller.cluster.datastore.modification.MergeModification; import org.opendaylight.controller.cluster.datastore.modification.WriteModification; import org.opendaylight.controller.cluster.datastore.shardstrategy.DefaultShardStrategy; -import org.opendaylight.controller.cluster.datastore.utils.DoNothingActor; import org.opendaylight.controller.cluster.datastore.utils.NormalizedNodeAggregatorTest; +import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; import org.opendaylight.controller.md.cluster.datastore.model.CarsModel; import org.opendaylight.controller.md.cluster.datastore.model.SchemaContextHelper; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java index 7e484ebde3..093f0fa6df 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/ActorContextTest.java @@ -31,7 +31,6 @@ import akka.util.Timeout; import com.google.common.base.Optional; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import com.google.common.util.concurrent.Uninterruptibles; import com.typesafe.config.ConfigFactory; import java.util.Arrays; import java.util.Map; @@ -55,6 +54,8 @@ import org.opendaylight.controller.cluster.datastore.messages.LocalShardFound; import org.opendaylight.controller.cluster.datastore.messages.LocalShardNotFound; import org.opendaylight.controller.cluster.datastore.messages.PrimaryShardInfo; import org.opendaylight.controller.cluster.datastore.messages.RemotePrimaryShardFound; +import org.opendaylight.controller.cluster.raft.utils.EchoActor; +import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -541,26 +542,9 @@ public class ActorContextTest extends AbstractActorTest{ actorContext.broadcast(new TestMessage()); - expectFirstMatching(shardActorRef1, TestMessage.class); - expectFirstMatching(shardActorRef2, TestMessage.class); + MessageCollectorActor.expectFirstMatching(shardActorRef1, TestMessage.class); + MessageCollectorActor.expectFirstMatching(shardActorRef2, TestMessage.class); }}; } - private static T expectFirstMatching(ActorRef actor, Class clazz) { - int count = 5000 / 50; - for(int i = 0; i < count; i++) { - try { - @SuppressWarnings("unchecked") - T message = (T) MessageCollectorActor.getFirstMatching(actor, clazz); - if(message != null) { - return message; - } - } catch (Exception e) {} - - Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - } - - Assert.fail("Did not receive message of type " + clazz); - return null; - } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/DoNothingActor.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/DoNothingActor.java deleted file mode 100644 index 819cfd08c7..0000000000 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/DoNothingActor.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.cluster.datastore.utils; - -import akka.actor.UntypedActor; - -public class DoNothingActor extends UntypedActor { - - @Override public void onReceive(Object message) throws Exception { - } -} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MessageCollectorActor.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MessageCollectorActor.java deleted file mode 100644 index 18c2985635..0000000000 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/MessageCollectorActor.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.cluster.datastore.utils; - -import akka.actor.ActorRef; -import akka.actor.UntypedActor; -import akka.pattern.Patterns; -import akka.util.Timeout; -import com.google.common.collect.Lists; -import com.google.common.util.concurrent.Uninterruptibles; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; -import org.junit.Assert; -import scala.concurrent.Await; -import scala.concurrent.Future; -import scala.concurrent.duration.Duration; -import scala.concurrent.duration.FiniteDuration; - -/** - * MessageCollectorActor collects messages as it receives them. It can send - * those collected messages to any sender which sends it the "messages" message - *

- * This class would be useful as a mock to test whether messages were sent - * to a remote actor or not. - *

- */ -public class MessageCollectorActor extends UntypedActor { - private final List messages = new ArrayList<>(); - - @Override public void onReceive(Object message) throws Exception { - if(message instanceof String){ - if("messages".equals(message)){ - getSender().tell(new ArrayList<>(messages), getSelf()); - } - } else { - messages.add(message); - } - } - - public void clear() { - messages.clear(); - } - - public static List getAllMessages(ActorRef actor) throws Exception { - FiniteDuration operationDuration = Duration.create(5, TimeUnit.SECONDS); - Timeout operationTimeout = new Timeout(operationDuration); - Future future = Patterns.ask(actor, "messages", operationTimeout); - - try { - return (List) Await.result(future, operationDuration); - } catch (Exception e) { - throw e; - } - } - - /** - * Get the first message that matches the specified class - * @param actor - * @param clazz - * @return - */ - public static Object getFirstMatching(ActorRef actor, Class clazz) throws Exception { - List allMessages = getAllMessages(actor); - - for(Object message : allMessages){ - if(message.getClass().equals(clazz)){ - return message; - } - } - - return null; - } - - public static List getAllMatching(ActorRef actor, Class clazz) throws Exception { - List allMessages = getAllMessages(actor); - - List output = Lists.newArrayList(); - - for(Object message : allMessages){ - if(message.getClass().equals(clazz)){ - output.add(message); - } - } - - return output; - } - - public static T expectFirstMatching(ActorRef actor, Class clazz) { - int count = 5000 / 50; - for(int i = 0; i < count; i++) { - try { - T message = (T) getFirstMatching(actor, clazz); - if(message != null) { - return message; - } - } catch (Exception e) {} - - Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - } - - Assert.fail("Did not receive message of type " + clazz); - return null; - } -} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java index a2c44b0630..8a141fb9b3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/TestUtils.java @@ -13,6 +13,8 @@ import akka.actor.ActorSystem; import akka.actor.Props; import java.util.List; import org.junit.Assert; +import org.opendaylight.controller.cluster.raft.utils.DoNothingActor; +import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; public class TestUtils { @@ -20,7 +22,7 @@ public class TestUtils { ActorContext testContext = new ActorContext(actorSystem, actorSystem.actorOf( Props.create(DoNothingActor.class)), new MockClusterWrapper(), new MockConfiguration()); Object messages = testContext - .executeOperation(actorRef, "messages"); + .executeOperation(actorRef, MessageCollectorActor.GET_ALL_MESSAGES); Assert.assertNotNull(messages); -- 2.36.6