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%2FNonVotingFollowerIntegrationTest.java;h=f875f891b148a64a1e322425d8f682acfc367f3b;hb=88a7f904602133bb803752848bb58c9b0a3e9792;hp=74ac12d5d441b2c68305e06d01c70e979a696b77;hpb=9d5ec5cdd146a56bc03e35b6718e9492a5c8410a;p=controller.git diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/NonVotingFollowerIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/NonVotingFollowerIntegrationTest.java index 74ac12d5d4..f875f891b1 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/NonVotingFollowerIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/NonVotingFollowerIntegrationTest.java @@ -8,12 +8,12 @@ package org.opendaylight.controller.cluster.raft; import static org.junit.Assert.assertEquals; + import akka.actor.ActorRef; -import akka.dispatch.Dispatchers; -import com.google.common.base.Optional; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Sets; -import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; import java.util.concurrent.TimeUnit; import org.junit.Test; import org.opendaylight.controller.cluster.notifications.LeaderStateChanged; @@ -21,10 +21,11 @@ import org.opendaylight.controller.cluster.raft.AbstractRaftActorIntegrationTest import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; import org.opendaylight.controller.cluster.raft.base.messages.ElectionTimeout; import org.opendaylight.controller.cluster.raft.base.messages.SnapshotComplete; -import org.opendaylight.controller.cluster.raft.base.messages.UpdateElectionTerm; import org.opendaylight.controller.cluster.raft.messages.AppendEntries; import org.opendaylight.controller.cluster.raft.persisted.ServerConfigurationPayload; import org.opendaylight.controller.cluster.raft.persisted.ServerInfo; +import org.opendaylight.controller.cluster.raft.persisted.SimpleReplicatedLogEntry; +import org.opendaylight.controller.cluster.raft.persisted.UpdateElectionTerm; import org.opendaylight.controller.cluster.raft.policy.DisableElectionsRaftPolicy; import org.opendaylight.controller.cluster.raft.utils.InMemoryJournal; import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor; @@ -290,10 +291,10 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati // // We also add another voting follower actor into the mix even though it shoildn't affect the // outcome. - ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(List.of( new ServerInfo(leaderId, true), new ServerInfo(follower1Id, false), new ServerInfo(follower2Id, true), new ServerInfo("downPeer", false))); - ReplicatedLogImplEntry persistedServerConfigEntry = new ReplicatedLogImplEntry(0, currentTerm, + SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, currentTerm, persistedServerConfig); InMemoryJournal.clear(); @@ -304,13 +305,13 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati DefaultConfigParamsImpl follower2ConfigParams = newFollowerConfigParams(); follower2ConfigParams.setCustomRaftPolicyImplementationClass(DisableElectionsRaftPolicy.class.getName()); follower2Actor = newTestRaftActor(follower2Id, TestRaftActor.newBuilder().peerAddresses( - ImmutableMap.of(leaderId, testActorPath(leaderId), follower1Id, follower1Actor.path().toString())). - config(follower2ConfigParams).persistent(Optional.of(false))); + Map.of(leaderId, testActorPath(leaderId), follower1Id, follower1Actor.path().toString())) + .config(follower2ConfigParams).persistent(Optional.of(false))); TestRaftActor follower2Instance = follower2Actor.underlyingActor(); follower2Instance.waitForRecoveryComplete(); follower2CollectorActor = follower2Instance.collectorActor(); - peerAddresses = ImmutableMap.of(follower1Id, follower1Actor.path().toString(), + peerAddresses = Map.of(follower1Id, follower1Actor.path().toString(), follower2Id, follower2Actor.path().toString()); createNewLeaderActor(); @@ -356,16 +357,15 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati public void testFollowerLeaderStateChanges() { testLog.info("testFollowerLeaderStateChanges"); - ActorRef roleChangeNotifier = factory.createTestActor( - MessageCollectorActor.props().withDispatcher(Dispatchers.DefaultDispatcherId()), - factory.generateActorId("roleChangeNotifier")); + ActorRef roleChangeNotifier = factory.createActor( + MessageCollectorActor.props(), factory.generateActorId("roleChangeNotifier")); follower1Builder.roleChangeNotifier(roleChangeNotifier); setupLeaderAndNonVotingFollower(); ((DefaultConfigParamsImpl)follower1Context.getConfigParams()).setElectionTimeoutFactor(2); - ((DefaultConfigParamsImpl)follower1Context.getConfigParams()). - setHeartBeatInterval(FiniteDuration.apply(100, TimeUnit.MILLISECONDS)); + ((DefaultConfigParamsImpl)follower1Context.getConfigParams()) + .setHeartBeatInterval(FiniteDuration.apply(100, TimeUnit.MILLISECONDS)); MessageCollectorActor.clearMessages(roleChangeNotifier); follower1Actor.tell(ElectionTimeout.INSTANCE, ActorRef.noSender()); @@ -385,8 +385,8 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati private void createNewLeaderActor() { expSnapshotState.clear(); - leaderActor = newTestRaftActor(leaderId, TestRaftActor.newBuilder().peerAddresses(peerAddresses). - config(leaderConfigParams).persistent(Optional.of(false))); + leaderActor = newTestRaftActor(leaderId, TestRaftActor.newBuilder().peerAddresses(peerAddresses) + .config(leaderConfigParams).persistent(Optional.of(false))); leaderInstance = leaderActor.underlyingActor(); leaderCollectorActor = leaderInstance.collectorActor(); waitUntilLeader(leaderActor); @@ -395,31 +395,30 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati private void setupLeaderAndNonVotingFollower() { snapshotBatchCount = 100; - int initialTerm = 1; + int persistedTerm = 1; // Set up a persisted ServerConfigurationPayload with the leader voting and the follower non-voting. - ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(List.of( new ServerInfo(leaderId, true), new ServerInfo(follower1Id, false))); - ReplicatedLogImplEntry persistedServerConfigEntry = new ReplicatedLogImplEntry(0, initialTerm, + SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, persistedTerm, persistedServerConfig); - InMemoryJournal.addEntry(leaderId, 1, new UpdateElectionTerm(initialTerm, leaderId)); + InMemoryJournal.addEntry(leaderId, 1, new UpdateElectionTerm(persistedTerm, leaderId)); InMemoryJournal.addEntry(leaderId, 2, persistedServerConfigEntry); - InMemoryJournal.addEntry(follower1Id, 1, new UpdateElectionTerm(initialTerm, leaderId)); + InMemoryJournal.addEntry(follower1Id, 1, new UpdateElectionTerm(persistedTerm, leaderId)); InMemoryJournal.addEntry(follower1Id, 2, persistedServerConfigEntry); DefaultConfigParamsImpl followerConfigParams = newFollowerConfigParams(); follower1Actor = newTestRaftActor(follower1Id, follower1Builder.peerAddresses( - ImmutableMap.of(leaderId, testActorPath(leaderId))).config(followerConfigParams). - persistent(Optional.of(false))); + Map.of(leaderId, testActorPath(leaderId))).config(followerConfigParams) + .persistent(Optional.of(false))); - peerAddresses = ImmutableMap.builder(). - put(follower1Id, follower1Actor.path().toString()).build(); + peerAddresses = Map.of(follower1Id, follower1Actor.path().toString()); leaderConfigParams = newLeaderConfigParams(); - leaderActor = newTestRaftActor(leaderId, TestRaftActor.newBuilder().peerAddresses(peerAddresses). - config(leaderConfigParams).persistent(Optional.of(false))); + leaderActor = newTestRaftActor(leaderId, TestRaftActor.newBuilder().peerAddresses(peerAddresses) + .config(leaderConfigParams).persistent(Optional.of(false))); followerInstance = follower1Actor.underlyingActor(); follower1CollectorActor = followerInstance.collectorActor(); @@ -434,18 +433,18 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati // Verify leader's context after startup - currentTerm = initialTerm + 1; + currentTerm = persistedTerm + 1; assertEquals("Leader term", currentTerm, leaderContext.getTermInformation().getCurrentTerm()); - assertEquals("Leader server config", Sets.newHashSet(persistedServerConfig.getServerConfig()), - Sets.newHashSet(leaderContext.getPeerServerInfo(true).getServerConfig())); + assertEquals("Leader server config", Set.copyOf(persistedServerConfig.getServerConfig()), + Set.copyOf(leaderContext.getPeerServerInfo(true).getServerConfig())); assertEquals("Leader isVotingMember", true, leaderContext.isVotingMember()); // Verify follower's context after startup MessageCollectorActor.expectFirstMatching(follower1CollectorActor, AppendEntries.class); assertEquals("Follower term", currentTerm, follower1Context.getTermInformation().getCurrentTerm()); - assertEquals("Follower server config", Sets.newHashSet(persistedServerConfig.getServerConfig()), - Sets.newHashSet(follower1Context.getPeerServerInfo(true).getServerConfig())); + assertEquals("Follower server config", Set.copyOf(persistedServerConfig.getServerConfig()), + Set.copyOf(follower1Context.getPeerServerInfo(true).getServerConfig())); assertEquals("FollowerisVotingMember", false, follower1Context.isVotingMember()); } }