raftActor.pauseLeader(new TimedRunnable(context.getConfigParams().getElectionTimeOutInterval(), raftActor) {
@Override
protected void doRun() {
+ LOG.debug("{}: pauseLeader successfully completed - doing transfer", raftActor.persistenceId());
doTransfer();
}
@Override
protected void doCancel() {
- LOG.debug("{}: pauseLeader timed out - aborting transfer", raftActor.persistenceId());
- abortTransfer();
+ LOG.debug("{}: pauseLeader timed out - continuing with transfer", raftActor.persistenceId());
+ doTransfer();
}
});
}
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;
/**
private void setup(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();
@Test
public void testNotLeaderOnDoTransfer() {
- config.setCustomRaftPolicyImplementationClass(DisableElectionsRaftPolicy.class.getName());
setup("testNotLeaderOnDoTransfer");
cohort.doTransfer();
verify(onComplete).onSuccess(mockRaftActor.self());
@Test
public void testPauseLeaderTimeout() {
pauseLeaderFunction = input -> null;
-
setup("testPauseLeaderTimeout");
+
+ Leader leader = new Leader(mockRaftActor.getRaftActorContext()) {
+ @Override
+ public void transferLeadership(RaftActorLeadershipTransferCohort leadershipTransferCohort) {
+ leadershipTransferCohort.transferComplete();
+ }
+ };
+ mockRaftActor.setCurrentBehavior(leader);
+
cohort.init();
- verify(onComplete, timeout(2000)).onFailure(mockRaftActor.self());
+ verify(onComplete, timeout(2000)).onSuccess(mockRaftActor.self());
}
}