X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2Fbehaviors%2FAbstractLeaderElectionScenarioTest.java;h=8f0cc998030b66b2d19157da6df197812f240a3f;hb=refs%2Fchanges%2F49%2F78449%2F2;hp=8c7c9cb7c4a3ed640d5d04c0a58534a99a819abb;hpb=51bf6c7493843ad23f074930b56925162732a8b2;p=controller.git 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 8c7c9cb7c4..8f0cc99803 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 @@ -19,15 +19,15 @@ import akka.dispatch.ControlMessage; import akka.dispatch.Dispatchers; import akka.dispatch.Mailboxes; import akka.pattern.Patterns; -import akka.testkit.JavaTestKit; import akka.testkit.TestActorRef; +import akka.testkit.javadsl.TestKit; import akka.util.Timeout; -import com.google.common.base.Throwables; import com.google.common.util.concurrent.Uninterruptibles; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import org.junit.After; import org.junit.Before; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; @@ -40,7 +40,6 @@ import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Await; -import scala.concurrent.duration.Duration; import scala.concurrent.duration.FiniteDuration; /** @@ -127,22 +126,22 @@ public class AbstractLeaderElectionScenarioTest { Uninterruptibles.awaitUninterruptibly(behaviorStateChangeLatch, 5, TimeUnit.SECONDS)); } - void expectMessageClass(Class expClass, int expCount) { + void expectMessageClass(final Class expClass, final int expCount) { messagesReceivedLatches.put(expClass, new CountDownLatch(expCount)); } - void waitForExpectedMessages(Class expClass) { + void waitForExpectedMessages(final Class expClass) { CountDownLatch latch = messagesReceivedLatches.get(expClass); assertNotNull("No messages received for " + expClass, latch); assertTrue("Missing messages of type " + expClass, Uninterruptibles.awaitUninterruptibly(latch, 5, TimeUnit.SECONDS)); } - void dropMessagesToBehavior(Class msgClass) { + void dropMessagesToBehavior(final Class msgClass) { dropMessagesToBehavior(msgClass, 1); } - void dropMessagesToBehavior(Class msgClass, int expCount) { + void dropMessagesToBehavior(final Class msgClass, final int expCount) { expectMessageClass(msgClass, expCount); dropMessagesToBehavior.put(msgClass, Boolean.TRUE); } @@ -151,42 +150,41 @@ public class AbstractLeaderElectionScenarioTest { dropMessagesToBehavior.clear(); } - @Override public void clear() { behaviorStateChangeLatch = null; clearDropMessagesToBehavior(); messagesReceivedLatches.clear(); - super.clear(); + clearMessages(getSelf()); } - void forwardCapturedMessageToBehavior(Class msgClass, ActorRef sender) throws Exception { + void forwardCapturedMessageToBehavior(final Class msgClass, final ActorRef sender) { Object message = getFirstMatching(getSelf(), msgClass); assertNotNull("Message of type " + msgClass + " not received", message); getSelf().tell(message, sender); } - void forwardCapturedMessagesToBehavior(Class msgClass, ActorRef sender) throws Exception { + void forwardCapturedMessagesToBehavior(final Class msgClass, final ActorRef sender) { for (Object m: getAllMatching(getSelf(), msgClass)) { getSelf().tell(m, sender); } } - T getCapturedMessage(Class msgClass) throws Exception { + T getCapturedMessage(final Class msgClass) { T message = getFirstMatching(getSelf(), msgClass); assertNotNull("Message of type " + msgClass + " not received", message); return message; } } - static class SendImmediateHeartBeat implements ControlMessage { - public static final SendImmediateHeartBeat INSTANCE = new SendImmediateHeartBeat(); + static final class SendImmediateHeartBeat implements ControlMessage { + static final SendImmediateHeartBeat INSTANCE = new SendImmediateHeartBeat(); private SendImmediateHeartBeat() { } } - static class GetBehaviorState implements ControlMessage { - public static final GetBehaviorState INSTANCE = new GetBehaviorState(); + static final class GetBehaviorState implements ControlMessage { + static final GetBehaviorState INSTANCE = new GetBehaviorState(); private GetBehaviorState() { } @@ -196,7 +194,7 @@ public class AbstractLeaderElectionScenarioTest { RaftActorBehavior behavior; MockRaftActorContext context; - SetBehavior(RaftActorBehavior behavior, MockRaftActorContext context) { + SetBehavior(final RaftActorBehavior behavior, final MockRaftActorContext context) { this.behavior = behavior; this.context = context; } @@ -227,8 +225,8 @@ public class AbstractLeaderElectionScenarioTest { } @After - public void tearDown() throws Exception { - JavaTestKit.shutdownActorSystem(system); + public void tearDown() { + TestKit.shutdownActorSystem(system); } DefaultConfigParamsImpl newConfigParams() { @@ -239,8 +237,8 @@ public class AbstractLeaderElectionScenarioTest { return configParams; } - MockRaftActorContext newRaftActorContext(String id, ActorRef actor, - Map peerAddresses) { + MockRaftActorContext newRaftActorContext(final String id, final ActorRef actor, + final Map peerAddresses) { MockRaftActorContext context = new MockRaftActorContext(id, system, actor); context.setPeerAddresses(peerAddresses); context.getTermInformation().updateAndPersist(1, ""); @@ -248,18 +246,21 @@ public class AbstractLeaderElectionScenarioTest { } @SuppressWarnings("checkstyle:IllegalCatch") - void verifyBehaviorState(String name, MemberActor actor, RaftState expState) { + void verifyBehaviorState(final String name, final MemberActor actor, final RaftState expState) { + RaftState actualState; try { - RaftState actualState = (RaftState) Await.result(Patterns.ask(actor.self(), GetBehaviorState.INSTANCE, - Timeout.apply(5, TimeUnit.SECONDS)), Duration.apply(5, TimeUnit.SECONDS)); - assertEquals(name + " behavior state", expState, actualState); + actualState = (RaftState) Await.result(Patterns.ask(actor.self(), GetBehaviorState.INSTANCE, + Timeout.apply(5, TimeUnit.SECONDS)), FiniteDuration.create(5, TimeUnit.SECONDS)); + } catch (RuntimeException e) { + throw e; } catch (Exception e) { - Throwables.propagate(e); + throw new RuntimeException(e); } + assertEquals(name + " behavior state", expState, actualState); } - void initializeLeaderBehavior(MemberActor actor, MockRaftActorContext context, int numActiveFollowers) - throws Exception { + void initializeLeaderBehavior(final MemberActor actor, final MockRaftActorContext context, + final int numActiveFollowers) { // Leader sends immediate heartbeats - we don't care about it so ignore it. // Sometimes the initial AppendEntries messages go to dead letters, probably b/c the follower actors // haven't been fully created/initialized by akka. So we try up to 3 times to create the Leader as @@ -294,14 +295,14 @@ public class AbstractLeaderElectionScenarioTest { } - TestActorRef newMemberActor(String name) throws Exception { + TestActorRef newMemberActor(final String name) throws TimeoutException, InterruptedException { TestActorRef actor = factory.createTestActor(MemberActor.props() .withDispatcher(Dispatchers.DefaultDispatcherId()), name); MessageCollectorActor.waitUntilReady(actor); return actor; } - void sendHeartbeat(TestActorRef leaderActor) { + void sendHeartbeat(final TestActorRef leaderActor) { Uninterruptibles.sleepUninterruptibly(HEARTBEAT_INTERVAL, TimeUnit.MILLISECONDS); leaderActor.tell(SendImmediateHeartBeat.INSTANCE, ActorRef.noSender()); }