import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.verify;
import akka.dispatch.Dispatchers;
+import com.google.common.base.Function;
import org.junit.After;
import org.junit.Test;
import org.opendaylight.controller.cluster.raft.RaftActorLeadershipTransferCohort.OnComplete;
private MockRaftActor mockRaftActor;
private RaftActorLeadershipTransferCohort cohort;
private final OnComplete onComplete = mock(OnComplete.class);
- DefaultConfigParamsImpl config = new DefaultConfigParamsImpl();
+ private final DefaultConfigParamsImpl config = new DefaultConfigParamsImpl();
+ private Function<Runnable, Void> pauseLeaderFunction;
@After
public void tearDown() {
private void setup() {
String persistenceId = factory.generateActorId("leader-");
mockRaftActor = factory.<MockRaftActor>createTestActor(MockRaftActor.builder().id(persistenceId).config(
- config).props().withDispatcher(Dispatchers.DefaultDispatcherId()), persistenceId).underlyingActor();
+ config).pauseLeaderFunction(pauseLeaderFunction).props().withDispatcher(Dispatchers.DefaultDispatcherId()),
+ persistenceId).underlyingActor();
cohort = new RaftActorLeadershipTransferCohort(mockRaftActor, null);
cohort.addOnComplete(onComplete);
mockRaftActor.waitForInitializeBehaviorComplete();
public void testNotLeaderOnRun() {
config.setElectionTimeoutFactor(10000);
setup();
- cohort.run();
+ cohort.doTransfer();
verify(onComplete).onSuccess(mockRaftActor.self(), null);
}
cohort.abortTransfer();
verify(onComplete).onFailure(mockRaftActor.self(), null);
}
+
+ @Test
+ public void testPauseLeaderTimeout() {
+ pauseLeaderFunction = new Function<Runnable, Void>() {
+ @Override
+ public Void apply(Runnable input) {
+ return null;
+ }
+ };
+
+ setup();
+ cohort.init();
+ verify(onComplete, timeout(2000)).onFailure(mockRaftActor.self(), null);
+ }
}