import static org.mockito.Mockito.never;
import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify;
+
import akka.dispatch.Dispatchers;
-import com.google.common.base.Function;
+import java.util.function.Function;
import org.junit.After;
import org.junit.Test;
import org.opendaylight.controller.cluster.raft.RaftActorLeadershipTransferCohort.OnComplete;
+import org.opendaylight.controller.cluster.raft.behaviors.Leader;
+import org.opendaylight.controller.cluster.raft.policy.DisableElectionsRaftPolicy;
/**
* Unit tests for RaftActorLeadershipTransferCohort.
factory.close();
}
- private void setup() {
- String persistenceId = factory.generateActorId("leader-");
- mockRaftActor = factory.<MockRaftActor>createTestActor(MockRaftActor.builder().id(persistenceId).config(
- config).pauseLeaderFunction(pauseLeaderFunction).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
+ private void setup(final String testName) {
+ String persistenceId = factory.generateActorId(testName + "-leader-");
+ config.setCustomRaftPolicyImplementationClass(DisableElectionsRaftPolicy.class.getName());
+ mockRaftActor = factory.<MockRaftActor>createTestActor(MockRaftActor.builder().id(persistenceId).config(config)
+ .pauseLeaderFunction(pauseLeaderFunction).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
persistenceId).underlyingActor();
- cohort = new RaftActorLeadershipTransferCohort(mockRaftActor, null);
+ cohort = new RaftActorLeadershipTransferCohort(mockRaftActor);
cohort.addOnComplete(onComplete);
mockRaftActor.waitForInitializeBehaviorComplete();
}
@Test
public void testOnNewLeader() {
- setup();
+ setup("testOnNewLeader");
cohort.setNewLeaderTimeoutInMillis(20000);
cohort.onNewLeader("new-leader");
- verify(onComplete, never()).onSuccess(mockRaftActor.self(), null);
+ verify(onComplete, never()).onSuccess(mockRaftActor.self());
cohort.transferComplete();
cohort.onNewLeader(null);
- verify(onComplete, never()).onSuccess(mockRaftActor.self(), null);
+ verify(onComplete, never()).onSuccess(mockRaftActor.self());
cohort.onNewLeader("new-leader");
- verify(onComplete).onSuccess(mockRaftActor.self(), null);
+ verify(onComplete).onSuccess(mockRaftActor.self());
}
@Test
public void testNewLeaderTimeout() {
- setup();
+ setup("testNewLeaderTimeout");
cohort.setNewLeaderTimeoutInMillis(200);
cohort.transferComplete();
- verify(onComplete, timeout(3000)).onSuccess(mockRaftActor.self(), null);
+ verify(onComplete, timeout(3000)).onSuccess(mockRaftActor.self());
}
@Test
- public void testNotLeaderOnRun() {
- config.setElectionTimeoutFactor(10000);
- setup();
+ public void testNotLeaderOnDoTransfer() {
+ setup("testNotLeaderOnDoTransfer");
cohort.doTransfer();
- verify(onComplete).onSuccess(mockRaftActor.self(), null);
+ verify(onComplete).onSuccess(mockRaftActor.self());
}
@Test
public void testAbortTransfer() {
- setup();
+ setup("testAbortTransfer");
cohort.abortTransfer();
- verify(onComplete).onFailure(mockRaftActor.self(), null);
+ verify(onComplete).onFailure(mockRaftActor.self());
}
@Test
public void testPauseLeaderTimeout() {
- pauseLeaderFunction = new Function<Runnable, Void>() {
+ pauseLeaderFunction = input -> null;
+ setup("testPauseLeaderTimeout");
+
+ Leader leader = new Leader(mockRaftActor.getRaftActorContext()) {
@Override
- public Void apply(Runnable input) {
- return null;
+ public void transferLeadership(final RaftActorLeadershipTransferCohort leadershipTransferCohort) {
+ leadershipTransferCohort.transferComplete();
}
};
+ mockRaftActor.setCurrentBehavior(leader);
- setup();
cohort.init();
- verify(onComplete, timeout(2000)).onFailure(mockRaftActor.self(), null);
+ verify(onComplete, timeout(2000)).onSuccess(mockRaftActor.self());
}
}