import static org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor.clearMessages;
import static org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor.expectFirstMatching;
import static org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor.expectMatching;
-import akka.actor.Actor;
+
import akka.actor.ActorRef;
-import akka.actor.Props;
-import akka.testkit.TestActorRef;
import com.google.common.collect.ImmutableMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
*/
public class PreLeaderScenarioTest extends AbstractRaftActorIntegrationTest {
- private TestActorRef<Actor> follower1NotifierActor;
+ private ActorRef follower1NotifierActor;
private DefaultConfigParamsImpl followerConfigParams;
@Test
- public void testUnComittedEntryOnLeaderChange() throws Exception {
+ public void testUnComittedEntryOnLeaderChange() {
testLog.info("testUnComittedEntryOnLeaderChange starting");
createRaftActors();
assertEquals("Role change 2", RaftState.PreLeader.name(), roleChange.get(1).getNewRole());
assertEquals("Role change 3", RaftState.Leader.name(), roleChange.get(2).getNewRole());
- long previousTerm = currentTerm;
+ final long previousTerm = currentTerm;
currentTerm = follower1Context.getTermInformation().getCurrentTerm();
// Since it went to Leader, it should've appended and successfully replicated a NoopPaylod with the
killActor(follower1Actor);
follower1Actor = newTestRaftActor(follower1Id, TestRaftActor.newBuilder().peerAddresses(
- ImmutableMap.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id))).
- config(followerConfigParams));
+ ImmutableMap.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id)))
+ .config(followerConfigParams));
follower1Actor.underlyingActor().waitForRecoveryComplete();
follower1Context = follower1Actor.underlyingActor().getRaftActorContext();
private void createRaftActors() {
testLog.info("createRaftActors starting");
- follower1NotifierActor = factory.createTestActor(Props.create(MessageCollectorActor.class),
+ follower1NotifierActor = factory.createActor(MessageCollectorActor.props(),
factory.generateActorId(follower1Id + "-notifier"));
followerConfigParams = newFollowerConfigParams();
followerConfigParams.setHeartBeatInterval(new FiniteDuration(100, TimeUnit.MILLISECONDS));
followerConfigParams.setSnapshotBatchCount(snapshotBatchCount);
follower1Actor = newTestRaftActor(follower1Id, TestRaftActor.newBuilder().peerAddresses(
- ImmutableMap.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id))).
- config(followerConfigParams).roleChangeNotifier(follower1NotifierActor));
+ ImmutableMap.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id)))
+ .config(followerConfigParams).roleChangeNotifier(follower1NotifierActor));
follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId),
follower1Id, testActorPath(follower1Id)), followerConfigParams);
- peerAddresses = ImmutableMap.<String, String>builder().
- put(follower1Id, follower1Actor.path().toString()).
- put(follower2Id, follower2Actor.path().toString()).build();
+ peerAddresses = ImmutableMap.<String, String>builder()
+ .put(follower1Id, follower1Actor.path().toString())
+ .put(follower2Id, follower2Actor.path().toString()).build();
leaderConfigParams = newLeaderConfigParams();
leaderConfigParams.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS));
waitUntilLeader(leaderActor);
expectMatching(leaderCollectorActor, AppendEntriesReply.class, 2);
+ expectFirstMatching(follower1CollectorActor, AppendEntries.class);
clearMessages(leaderCollectorActor);
clearMessages(follower1CollectorActor);
follower1Context = follower1Actor.underlyingActor().getRaftActorContext();
follower2Context = follower2Actor.underlyingActor().getRaftActorContext();
- testLog.info("createRaftActors ending");
+ testLog.info("createRaftActors ending - follower1: {}, follower2: {}", follower1Id, follower2Id);
}
}