From 88a7f904602133bb803752848bb58c9b0a3e9792 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 3 Apr 2023 09:48:57 +0200 Subject: [PATCH] Modernize sal-akka-raft tests Use List.of(), Map.of() and Set.copyOf(), as well as properly-imported assertions. Change-Id: If7777b0e395394f54e20d1a92b7d33fccb373601 Signed-off-by: Robert Varga --- .../AbstractRaftActorIntegrationTest.java | 10 +- .../LeadershipTransferIntegrationTest.java | 21 ++- .../cluster/raft/MockRaftActor.java | 50 +++--- .../NonVotingFollowerIntegrationTest.java | 27 ++- .../raft/RaftActorContextImplTest.java | 15 +- ...ftActorServerConfigurationSupportTest.java | 160 ++++++++---------- .../cluster/raft/RaftActorTest.java | 101 +++++------ .../cluster/raft/RaftActorTestKit.java | 7 +- .../RecoveryIntegrationSingleNodeTest.java | 22 ++- .../cluster/raft/RecoveryIntegrationTest.java | 28 ++- .../cluster/raft/ReplicatedLogImplTest.java | 4 +- ...eplicationAndSnapshotsIntegrationTest.java | 12 +- ...otsWithLaggingFollowerIntegrationTest.java | 46 +++-- ...ationWithSlicedPayloadIntegrationTest.java | 12 +- .../cluster/raft/SnapshotManagerTest.java | 7 +- .../cluster/raft/TestActorFactory.java | 9 +- .../cluster/raft/behaviors/FollowerTest.java | 144 +++++++--------- .../cluster/raft/behaviors/LeaderTest.java | 38 ++--- .../raft/behaviors/SnapshotTrackerTest.java | 14 +- 19 files changed, 316 insertions(+), 411 deletions(-) diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractRaftActorIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractRaftActorIntegrationTest.java index 904c7ba5b4..0abb121362 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractRaftActorIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/AbstractRaftActorIntegrationTest.java @@ -21,12 +21,10 @@ import akka.testkit.TestActorRef; import akka.testkit.javadsl.TestKit; import akka.util.Timeout; import com.google.common.base.Stopwatch; -import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.Uninterruptibles; import java.io.OutputStream; import java.time.Duration; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; @@ -187,7 +185,7 @@ public abstract class AbstractRaftActorIntegrationTest extends AbstractActorTest @Override @SuppressWarnings("checkstyle:IllegalCatch") public void createSnapshot(final ActorRef actorRef, final Optional installSnapshotStream) { - MockSnapshotState snapshotState = new MockSnapshotState(new ArrayList<>(getState())); + MockSnapshotState snapshotState = new MockSnapshotState(List.copyOf(getState())); if (installSnapshotStream.isPresent()) { SerializationUtils.serialize(snapshotState, installSnapshotStream.get()); } @@ -240,10 +238,10 @@ public abstract class AbstractRaftActorIntegrationTest extends AbstractActorTest protected String follower2Id = factory.generateActorId("follower"); protected TestActorRef follower2Actor; protected ActorRef follower2CollectorActor; - protected RaftActorBehavior follower2; + protected RaftActorBehavior follower2; protected RaftActorContext follower2Context; - protected ImmutableMap peerAddresses; + protected Map peerAddresses; protected long initialTerm = 5; protected long currentTerm; @@ -285,7 +283,7 @@ public abstract class AbstractRaftActorIntegrationTest extends AbstractActorTest protected TestActorRef newTestRaftActor(final String id, final Map newPeerAddresses, final ConfigParams configParams) { return newTestRaftActor(id, TestRaftActor.newBuilder().peerAddresses(newPeerAddresses != null - ? newPeerAddresses : Collections.emptyMap()).config(configParams)); + ? newPeerAddresses : Map.of()).config(configParams)); } protected TestActorRef newTestRaftActor(final String id, final TestRaftActor.Builder builder) { diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/LeadershipTransferIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/LeadershipTransferIntegrationTest.java index e99215ddba..a565932a02 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/LeadershipTransferIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/LeadershipTransferIntegrationTest.java @@ -18,11 +18,10 @@ import akka.actor.Status; import akka.pattern.Patterns; import akka.testkit.TestActorRef; import akka.testkit.javadsl.TestKit; -import com.google.common.collect.ImmutableMap; -import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.concurrent.TimeUnit; import org.junit.Test; import org.opendaylight.controller.cluster.notifications.LeaderStateChanged; @@ -143,9 +142,9 @@ public class LeadershipTransferIntegrationTest extends AbstractRaftActorIntegrat private void createRaftActors() { testLog.info("createRaftActors starting"); - final Snapshot snapshot = Snapshot.create(EmptyState.INSTANCE, Collections.emptyList(), -1, -1, -1, -1, + final Snapshot snapshot = Snapshot.create(EmptyState.INSTANCE, List.of(), -1, -1, -1, -1, 1, null, new org.opendaylight.controller.cluster.raft.persisted.ServerConfigurationPayload( - Arrays.asList(new ServerInfo(leaderId, true), new ServerInfo(follower1Id, true), + List.of(new ServerInfo(leaderId, true), new ServerInfo(follower1Id, true), new ServerInfo(follower2Id, true), new ServerInfo(follower3Id, false)))); InMemorySnapshotStore.addSnapshot(leaderId, snapshot); @@ -156,28 +155,28 @@ public class LeadershipTransferIntegrationTest extends AbstractRaftActorIntegrat follower1NotifierActor = factory.createActor(MessageCollectorActor.props(), factory.generateActorId(follower1Id + "-notifier")); follower1Actor = newTestRaftActor(follower1Id, TestRaftActor.newBuilder().peerAddresses( - ImmutableMap.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id), + Map.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id), follower3Id, testActorPath(follower3Id))) .config(newFollowerConfigParams()).roleChangeNotifier(follower1NotifierActor)); follower2NotifierActor = factory.createActor(MessageCollectorActor.props(), factory.generateActorId(follower2Id + "-notifier")); follower2Actor = newTestRaftActor(follower2Id,TestRaftActor.newBuilder().peerAddresses( - ImmutableMap.of(leaderId, testActorPath(leaderId), follower1Id, follower1Actor.path().toString(), + Map.of(leaderId, testActorPath(leaderId), follower1Id, follower1Actor.path().toString(), follower3Id, testActorPath(follower3Id))) .config(newFollowerConfigParams()).roleChangeNotifier(follower2NotifierActor)); follower3NotifierActor = factory.createActor(MessageCollectorActor.props(), factory.generateActorId(follower3Id + "-notifier")); follower3Actor = newTestRaftActor(follower3Id,TestRaftActor.newBuilder().peerAddresses( - ImmutableMap.of(leaderId, testActorPath(leaderId), follower1Id, follower1Actor.path().toString(), + Map.of(leaderId, testActorPath(leaderId), follower1Id, follower1Actor.path().toString(), follower2Id, follower2Actor.path().toString())) .config(newFollowerConfigParams()).roleChangeNotifier(follower3NotifierActor)); - peerAddresses = ImmutableMap.builder() - .put(follower1Id, follower1Actor.path().toString()) - .put(follower2Id, follower2Actor.path().toString()) - .put(follower3Id, follower3Actor.path().toString()).build(); + peerAddresses = Map.of( + follower1Id, follower1Actor.path().toString(), + follower2Id, follower2Actor.path().toString(), + follower3Id, follower3Actor.path().toString()); leaderConfigParams = newLeaderConfigParams(); leaderConfigParams.setElectionTimeoutFactor(3); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java index fa667307e9..bafcc55bc7 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/MockRaftActor.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -52,10 +53,10 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, super(builder.id, builder.peerAddresses != null ? builder.peerAddresses : Collections.emptyMap(), Optional.ofNullable(builder.config), PAYLOAD_VERSION); state = Collections.synchronizedList(new ArrayList<>()); - this.actorDelegate = mock(RaftActor.class); - this.recoveryCohortDelegate = mock(RaftActorRecoveryCohort.class); + actorDelegate = mock(RaftActor.class); + recoveryCohortDelegate = mock(RaftActorRecoveryCohort.class); - this.snapshotCohortDelegate = builder.snapshotCohort != null ? builder.snapshotCohort : + snapshotCohortDelegate = builder.snapshotCohort != null ? builder.snapshotCohort : mock(RaftActorSnapshotCohort.class); if (builder.dataPersistenceProvider == null) { @@ -174,9 +175,9 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, } private void applySnapshotState(final Snapshot.State newState) { - if (newState instanceof MockSnapshotState) { + if (newState instanceof MockSnapshotState mockState) { state.clear(); - state.addAll(((MockSnapshotState)newState).getState()); + state.addAll(mockState.getState()); } } @@ -213,7 +214,7 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, } @Override public String persistenceId() { - return this.getId(); + return getId(); } protected void newBehavior(final RaftActorBehavior newBehavior) { @@ -243,15 +244,15 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, } public static List fromState(final Snapshot.State from) { - if (from instanceof MockSnapshotState) { - return ((MockSnapshotState)from).getState(); + if (from instanceof MockSnapshotState mockState) { + return mockState.getState(); } throw new IllegalStateException("Unexpected snapshot State: " + from); } public ReplicatedLog getReplicatedLog() { - return this.getRaftActorContext().getReplicatedLog(); + return getRaftActorContext().getReplicatedLog(); } @Override @@ -296,52 +297,52 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, } public T id(final String newId) { - this.id = newId; + id = newId; return self(); } public T peerAddresses(final Map newPeerAddresses) { - this.peerAddresses = newPeerAddresses; + peerAddresses = newPeerAddresses; return self(); } public T config(final ConfigParams newConfig) { - this.config = newConfig; + config = newConfig; return self(); } public T dataPersistenceProvider(final DataPersistenceProvider newDataPersistenceProvider) { - this.dataPersistenceProvider = newDataPersistenceProvider; + dataPersistenceProvider = newDataPersistenceProvider; return self(); } public T roleChangeNotifier(final ActorRef newRoleChangeNotifier) { - this.roleChangeNotifier = newRoleChangeNotifier; + roleChangeNotifier = newRoleChangeNotifier; return self(); } public T snapshotMessageSupport(final RaftActorSnapshotMessageSupport newSnapshotMessageSupport) { - this.snapshotMessageSupport = newSnapshotMessageSupport; + snapshotMessageSupport = newSnapshotMessageSupport; return self(); } public T restoreFromSnapshot(final Snapshot newRestoreFromSnapshot) { - this.restoreFromSnapshot = newRestoreFromSnapshot; + restoreFromSnapshot = newRestoreFromSnapshot; return self(); } public T persistent(final Optional newPersistent) { - this.persistent = newPersistent; + persistent = newPersistent; return self(); } public T pauseLeaderFunction(final Function newPauseLeaderFunction) { - this.pauseLeaderFunction = newPauseLeaderFunction; + pauseLeaderFunction = newPauseLeaderFunction; return self(); } public T snapshotCohort(final RaftActorSnapshotCohort newSnapshotCohort) { - this.snapshotCohort = newSnapshotCohort; + snapshotCohort = newSnapshotCohort; return self(); } @@ -371,10 +372,7 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (state == null ? 0 : state.hashCode()); - return result; + return Objects.hash(state); } @Override @@ -389,11 +387,7 @@ public class MockRaftActor extends RaftActor implements RaftActorRecoveryCohort, return false; } MockSnapshotState other = (MockSnapshotState) obj; - if (state == null) { - if (other.state != null) { - return false; - } - } else if (!state.equals(other.state)) { + if (!Objects.equals(state, other.state)) { return false; } return true; 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 9f930fd71a..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 @@ -10,10 +10,10 @@ package org.opendaylight.controller.cluster.raft; import static org.junit.Assert.assertEquals; import akka.actor.ActorRef; -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; @@ -291,7 +291,7 @@ 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))); SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, currentTerm, @@ -305,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())) + 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(); @@ -399,7 +399,7 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati // 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))); SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, persistedTerm, persistedServerConfig); @@ -411,11 +411,10 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati DefaultConfigParamsImpl followerConfigParams = newFollowerConfigParams(); follower1Actor = newTestRaftActor(follower1Id, follower1Builder.peerAddresses( - ImmutableMap.of(leaderId, testActorPath(leaderId))).config(followerConfigParams) + 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) @@ -436,16 +435,16 @@ public class NonVotingFollowerIntegrationTest extends AbstractRaftActorIntegrati 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()); } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorContextImplTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorContextImplTest.java index 815b8d9d48..fabfc6c280 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorContextImplTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorContextImplTest.java @@ -19,10 +19,9 @@ import static org.mockito.Mockito.verify; import akka.actor.Props; import akka.testkit.TestActorRef; -import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.MoreExecutors; -import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.junit.After; import org.junit.Test; @@ -84,7 +83,7 @@ public class RaftActorContextImplTest extends AbstractActorTest { DefaultConfigParamsImpl configParams = new DefaultConfigParamsImpl(); RaftActorContextImpl context = new RaftActorContextImpl(actor, actor.underlyingActor().getContext(), "test", new ElectionTermImpl(createProvider(), "test", LOG), -1, -1, - new HashMap<>(ImmutableMap.of("peer1", "peerAddress1")), configParams, + Map.of("peer1", "peerAddress1"), configParams, createProvider(), applyState -> { }, LOG, MoreExecutors.directExecutor()); context.setPeerAddress("peer1", "peerAddress1_1"); @@ -98,24 +97,24 @@ public class RaftActorContextImplTest extends AbstractActorTest { public void testUpdatePeerIds() { RaftActorContextImpl context = new RaftActorContextImpl(actor, actor.underlyingActor().getContext(), "self", new ElectionTermImpl(createProvider(), "test", LOG), -1, -1, - new HashMap<>(ImmutableMap.of("peer1", "peerAddress1")), + Map.of("peer1", "peerAddress1"), new DefaultConfigParamsImpl(), createProvider(), applyState -> { }, LOG, MoreExecutors.directExecutor()); - context.updatePeerIds(new ServerConfigurationPayload(Arrays.asList(new ServerInfo("self", false), + context.updatePeerIds(new ServerConfigurationPayload(List.of(new ServerInfo("self", false), new ServerInfo("peer2", true), new ServerInfo("peer3", false)))); verifyPeerInfo(context, "peer1", null); verifyPeerInfo(context, "peer2", true); verifyPeerInfo(context, "peer3", false); assertEquals("isVotingMember", false, context.isVotingMember()); - context.updatePeerIds(new ServerConfigurationPayload(Arrays.asList(new ServerInfo("self", true), + context.updatePeerIds(new ServerConfigurationPayload(List.of(new ServerInfo("self", true), new ServerInfo("peer2", true), new ServerInfo("peer3", true)))); verifyPeerInfo(context, "peer2", true); verifyPeerInfo(context, "peer3", true); assertEquals("isVotingMember", true, context.isVotingMember()); - context.updatePeerIds(new ServerConfigurationPayload(Arrays.asList(new ServerInfo("peer2", true), + context.updatePeerIds(new ServerConfigurationPayload(List.of(new ServerInfo("peer2", true), new ServerInfo("peer3", true)))); verifyPeerInfo(context, "peer2", true); verifyPeerInfo(context, "peer3", true); @@ -130,7 +129,7 @@ public class RaftActorContextImplTest extends AbstractActorTest { PeerInfo peerInfo = context.getPeerInfo(peerId); if (voting != null) { assertNotNull("Expected peer " + peerId, peerInfo); - assertEquals("getVotingState for " + peerId, voting.booleanValue() + assertEquals("getVotingState for " + peerId, voting ? VotingState.VOTING : VotingState.NON_VOTING, peerInfo.getVotingState()); } else { assertNull("Unexpected peer " + peerId, peerInfo); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java index 140735b646..2f9998c56b 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorServerConfigurationSupportTest.java @@ -22,20 +22,14 @@ import akka.dispatch.Dispatchers; import akka.testkit.TestActorRef; import akka.testkit.javadsl.TestKit; import com.google.common.base.Stopwatch; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import com.google.common.io.ByteSource; import com.google.common.util.concurrent.MoreExecutors; import java.io.OutputStream; import java.time.Duration; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.SerializationUtils; import org.junit.After; @@ -157,7 +151,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { followerActorContext.setCurrentBehavior(follower); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(FOLLOWER_ID, followerActor.path().toString()), + MockLeaderRaftActor.props(Map.of(FOLLOWER_ID, followerActor.path().toString()), followerActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -204,10 +198,9 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // Verify new server config was applied in both followers - assertEquals("Follower peers", ImmutableSet.of(LEADER_ID, NEW_SERVER_ID), followerActorContext.getPeerIds()); + assertEquals("Follower peers", Set.of(LEADER_ID, NEW_SERVER_ID), followerActorContext.getPeerIds()); - assertEquals("New follower peers", ImmutableSet.of(LEADER_ID, FOLLOWER_ID), - newFollowerActorContext.getPeerIds()); + assertEquals("New follower peers", Set.of(LEADER_ID, FOLLOWER_ID), newFollowerActorContext.getPeerIds()); assertEquals("Follower commit index", 3, followerActorContext.getCommitIndex()); assertEquals("Follower last applied index", 3, followerActorContext.getLastApplied()); @@ -239,8 +232,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { 0, 2, 1).build()); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -278,7 +271,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // Verify new server config was applied in the new follower - assertEquals("New follower peers", ImmutableSet.of(LEADER_ID), newFollowerActorContext.getPeerIds()); + assertEquals("New follower peers", Set.of(LEADER_ID), newFollowerActorContext.getPeerIds()); LOG.info("testAddServerWithNoExistingFollower ending"); } @@ -291,8 +284,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -325,7 +318,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // Verify new server config was applied in the new follower - assertEquals("New follower peers", ImmutableSet.of(LEADER_ID), newFollowerActorContext.getPeerIds()); + assertEquals("New follower peers", Set.of(LEADER_ID), newFollowerActorContext.getPeerIds()); assertNoneMatching(newFollowerCollectorActor, InstallSnapshot.class, 500); @@ -361,8 +354,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -410,8 +403,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // Verify ServerConfigurationPayload entry in the new follower expectMatching(newFollowerCollectorActor, ApplyState.class, 2); - assertEquals("New follower peers", ImmutableSet.of(LEADER_ID, NEW_SERVER_ID2), - newFollowerActorContext.getPeerIds()); + assertEquals("New follower peers", Set.of(LEADER_ID, NEW_SERVER_ID2), newFollowerActorContext.getPeerIds()); LOG.info("testAddServerWithOperationInProgress ending"); } @@ -424,8 +416,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -471,8 +463,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -503,8 +495,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -552,8 +544,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -597,8 +589,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -631,7 +623,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { configParams.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); TestActorRef noLeaderActor = actorFactory.createTestActor( - MockRaftActor.builder().id(LEADER_ID).peerAddresses(ImmutableMap.of(FOLLOWER_ID, + MockRaftActor.builder().id(LEADER_ID).peerAddresses(Map.of(FOLLOWER_ID, followerActor.path().toString())).config(configParams).persistent(Optional.of(false)) .props().withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -653,8 +645,8 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), - initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), + MockLeaderRaftActor.props(Map.of(), initialActorContext) + .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); MockLeaderRaftActor leaderRaftActor = leaderActor.underlyingActor(); @@ -713,7 +705,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(FOLLOWER_ID, followerActor.path().toString()), + MockLeaderRaftActor.props(Map.of(FOLLOWER_ID, followerActor.path().toString()), initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -737,14 +729,13 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { MessageCollectorActor.props(), actorFactory.generateActorId(LEADER_ID)); TestActorRef followerRaftActor = actorFactory.createTestActor( - MockRaftActor.builder().id(FOLLOWER_ID).peerAddresses(ImmutableMap.of(LEADER_ID, + MockRaftActor.builder().id(FOLLOWER_ID).peerAddresses(Map.of(LEADER_ID, leaderActor.path().toString())).config(configParams).persistent(Optional.of(false)) .props().withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(FOLLOWER_ID)); followerRaftActor.underlyingActor().waitForInitializeBehaviorComplete(); - followerRaftActor.tell(new AppendEntries(1, LEADER_ID, 0, 1, Collections.emptyList(), - -1, -1, (short)0), leaderActor); + followerRaftActor.tell(new AppendEntries(1, LEADER_ID, 0, 1, List.of(), -1, -1, (short)0), leaderActor); followerRaftActor.tell(new AddServer(NEW_SERVER_ID, newFollowerRaftActor.path().toString(), true), testKit.getRef()); @@ -760,7 +751,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { DefaultConfigParamsImpl configParams = new DefaultConfigParamsImpl(); configParams.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); TestActorRef noLeaderActor = actorFactory.createTestActor( - MockRaftActor.builder().id(LEADER_ID).peerAddresses(ImmutableMap.of(FOLLOWER_ID, + MockRaftActor.builder().id(LEADER_ID).peerAddresses(Map.of(FOLLOWER_ID, followerActor.path().toString())).config(configParams).persistent(Optional.of(false)) .props().withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -769,7 +760,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { noLeaderActor.underlyingActor()); ReplicatedLogEntry serverConfigEntry = new SimpleReplicatedLogEntry(1, 1, - new ServerConfigurationPayload(Collections.emptyList())); + new ServerConfigurationPayload(List.of())); boolean handled = support.handleMessage(new ApplyState(null, null, serverConfigEntry), ActorRef.noSender()); assertEquals("Message handled", true, handled); @@ -789,7 +780,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { configParams.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); TestActorRef leaderActor = actorFactory.createTestActor( - MockRaftActor.builder().id(LEADER_ID).peerAddresses(ImmutableMap.of(FOLLOWER_ID, + MockRaftActor.builder().id(LEADER_ID).peerAddresses(Map.of(FOLLOWER_ID, followerActor.path().toString())).config(configParams).persistent(Optional.of(false)) .props().withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -809,7 +800,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(FOLLOWER_ID, followerActor.path().toString()), + MockLeaderRaftActor.props(Map.of(FOLLOWER_ID, followerActor.path().toString()), initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -831,14 +822,13 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { MessageCollectorActor.props(), actorFactory.generateActorId(LEADER_ID)); TestActorRef followerRaftActor = actorFactory.createTestActor( - MockRaftActor.builder().id(FOLLOWER_ID).peerAddresses(ImmutableMap.of(LEADER_ID, + MockRaftActor.builder().id(FOLLOWER_ID).peerAddresses(Map.of(LEADER_ID, leaderActor.path().toString())).config(configParams).persistent(Optional.of(false)) .props().withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(FOLLOWER_ID)); followerRaftActor.underlyingActor().waitForInitializeBehaviorComplete(); - followerRaftActor.tell(new AppendEntries(1, LEADER_ID, 0, 1, Collections.emptyList(), - -1, -1, (short)0), leaderActor); + followerRaftActor.tell(new AppendEntries(1, LEADER_ID, 0, 1, List.of(), -1, -1, (short)0), leaderActor); followerRaftActor.tell(new RemoveServer(FOLLOWER_ID), testKit.getRef()); expectFirstMatching(leaderActor, RemoveServer.class); @@ -862,7 +852,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { final String downNodeId = "downNode"; TestActorRef leaderActor = actorFactory.createTestActor(MockLeaderRaftActor.props( - ImmutableMap.of(FOLLOWER_ID, follower1ActorPath, FOLLOWER_ID2, follower2ActorPath, downNodeId, ""), + Map.of(FOLLOWER_ID, follower1ActorPath, FOLLOWER_ID2, follower2ActorPath, downNodeId, ""), initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -871,14 +861,14 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef follower1Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); final TestActorRef follower1Actor = actorFactory.createTestActor( - CollectingMockRaftActor.props(FOLLOWER_ID, ImmutableMap.of(LEADER_ID, leaderActor.path().toString(), + CollectingMockRaftActor.props(FOLLOWER_ID, Map.of(LEADER_ID, leaderActor.path().toString(), FOLLOWER_ID2, follower2ActorPath, downNodeId, ""), configParams, NO_PERSISTENCE, follower1Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), follower1ActorId); ActorRef follower2Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); final TestActorRef follower2Actor = actorFactory.createTestActor( - CollectingMockRaftActor.props(FOLLOWER_ID2, ImmutableMap.of(LEADER_ID, leaderActor.path().toString(), + CollectingMockRaftActor.props(FOLLOWER_ID2, Map.of(LEADER_ID, leaderActor.path().toString(), FOLLOWER_ID, follower1ActorPath, downNodeId, ""), configParams, NO_PERSISTENCE, follower2Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), follower2ActorId); @@ -922,7 +912,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { RaftActorContext initialActorContext = new MockRaftActorContext(); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(FOLLOWER_ID, followerActorPath), + MockLeaderRaftActor.props(Map.of(FOLLOWER_ID, followerActorPath), initialActorContext).withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -931,7 +921,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { final ActorRef followerCollector = actorFactory.createActor(MessageCollectorActor.props(), actorFactory.generateActorId("collector")); actorFactory.createTestActor( - CollectingMockRaftActor.props(FOLLOWER_ID, ImmutableMap.of(LEADER_ID, leaderActor.path().toString()), + CollectingMockRaftActor.props(FOLLOWER_ID, Map.of(LEADER_ID, leaderActor.path().toString()), configParams, NO_PERSISTENCE, followerCollector) .withDispatcher(Dispatchers.DefaultDispatcherId()), followerActorId); @@ -955,7 +945,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { LOG.info("testRemoveServerLeaderWithNoFollowers starting"); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(Collections.emptyMap(), + MockLeaderRaftActor.props(Map.of(), new MockRaftActorContext()).withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); @@ -980,7 +970,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { final String follower2ActorPath = actorFactory.createTestActorPath(follower2ActorId); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(FOLLOWER_ID, follower1ActorPath, + MockLeaderRaftActor.props(Map.of(FOLLOWER_ID, follower1ActorPath, FOLLOWER_ID2, follower2ActorPath), new MockRaftActorContext()) .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); ActorRef leaderCollector = newLeaderCollectorActor(leaderActor.underlyingActor()); @@ -988,20 +978,20 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef follower1Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); final TestActorRef follower1RaftActor = actorFactory.createTestActor( - CollectingMockRaftActor.props(FOLLOWER_ID, ImmutableMap.of(LEADER_ID, leaderActor.path().toString(), + CollectingMockRaftActor.props(FOLLOWER_ID, Map.of(LEADER_ID, leaderActor.path().toString(), FOLLOWER_ID2, follower2ActorPath), configParams, NO_PERSISTENCE, follower1Collector) .withDispatcher(Dispatchers.DefaultDispatcherId()), follower1ActorId); ActorRef follower2Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); final TestActorRef follower2RaftActor = actorFactory.createTestActor( - CollectingMockRaftActor.props(FOLLOWER_ID2, ImmutableMap.of(LEADER_ID, leaderActor.path().toString(), + CollectingMockRaftActor.props(FOLLOWER_ID2, Map.of(LEADER_ID, leaderActor.path().toString(), FOLLOWER_ID, follower1ActorPath), configParams, NO_PERSISTENCE, follower2Collector) .withDispatcher(Dispatchers.DefaultDispatcherId()), follower2ActorId); // Send first ChangeServersVotingStatus message - leaderActor.tell(new ChangeServersVotingStatus(ImmutableMap.of(FOLLOWER_ID, false, FOLLOWER_ID2, false)), + leaderActor.tell(new ChangeServersVotingStatus(Map.of(FOLLOWER_ID, false, FOLLOWER_ID2, false)), testKit.getRef()); ServerChangeReply reply = testKit.expectMsgClass(Duration.ofSeconds(5), ServerChangeReply.class); assertEquals("getStatus", ServerChangeStatus.OK, reply.getStatus()); @@ -1027,7 +1017,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // Send second ChangeServersVotingStatus message - leaderActor.tell(new ChangeServersVotingStatus(ImmutableMap.of(FOLLOWER_ID, true)), testKit.getRef()); + leaderActor.tell(new ChangeServersVotingStatus(Map.of(FOLLOWER_ID, true)), testKit.getRef()); reply = testKit.expectMsgClass(Duration.ofSeconds(5), ServerChangeReply.class); assertEquals("getStatus", ServerChangeStatus.OK, reply.getStatus()); @@ -1059,7 +1049,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { final String follower2ActorPath = actorFactory.createTestActorPath(follower2ActorId); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(FOLLOWER_ID, follower1ActorPath, + MockLeaderRaftActor.props(Map.of(FOLLOWER_ID, follower1ActorPath, FOLLOWER_ID2, follower2ActorPath), new MockRaftActorContext()) .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); ActorRef leaderCollector = newLeaderCollectorActor(leaderActor.underlyingActor()); @@ -1067,20 +1057,20 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef follower1Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); final TestActorRef follower1RaftActor = actorFactory.createTestActor( - CollectingMockRaftActor.props(FOLLOWER_ID, ImmutableMap.of(LEADER_ID, leaderActor.path().toString(), + CollectingMockRaftActor.props(FOLLOWER_ID, Map.of(LEADER_ID, leaderActor.path().toString(), FOLLOWER_ID2, follower2ActorPath), configParams, NO_PERSISTENCE, follower1Collector) .withDispatcher(Dispatchers.DefaultDispatcherId()), follower1ActorId); ActorRef follower2Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); final TestActorRef follower2RaftActor = actorFactory.createTestActor( - CollectingMockRaftActor.props(FOLLOWER_ID2, ImmutableMap.of(LEADER_ID, leaderActor.path().toString(), + CollectingMockRaftActor.props(FOLLOWER_ID2, Map.of(LEADER_ID, leaderActor.path().toString(), FOLLOWER_ID, follower1ActorPath), configParams, NO_PERSISTENCE, follower2Collector) .withDispatcher(Dispatchers.DefaultDispatcherId()), follower2ActorId); // Send ChangeServersVotingStatus message - leaderActor.tell(new ChangeServersVotingStatus(ImmutableMap.of(LEADER_ID, false)), testKit.getRef()); + leaderActor.tell(new ChangeServersVotingStatus(Map.of(LEADER_ID, false)), testKit.getRef()); ServerChangeReply reply = testKit.expectMsgClass(Duration.ofSeconds(5), ServerChangeReply.class); assertEquals("getStatus", ServerChangeStatus.OK, reply.getStatus()); @@ -1109,10 +1099,10 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { LOG.info("testChangeLeaderToNonVotingInSingleNode starting"); TestActorRef leaderActor = actorFactory.createTestActor( - MockLeaderRaftActor.props(ImmutableMap.of(), new MockRaftActorContext()) + MockLeaderRaftActor.props(Map.of(), new MockRaftActorContext()) .withDispatcher(Dispatchers.DefaultDispatcherId()), actorFactory.generateActorId(LEADER_ID)); - leaderActor.tell(new ChangeServersVotingStatus(ImmutableMap.of(LEADER_ID, false)), testKit.getRef()); + leaderActor.tell(new ChangeServersVotingStatus(Map.of(LEADER_ID, false)), testKit.getRef()); ServerChangeReply reply = testKit.expectMsgClass(Duration.ofSeconds(5), ServerChangeReply.class); assertEquals("getStatus", ServerChangeStatus.INVALID_REQUEST, reply.getStatus()); @@ -1134,7 +1124,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // via the server config. The server config will also contain 2 voting peers that are down (ie no // actors created). - ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(List.of( new ServerInfo(node1ID, false), new ServerInfo(node2ID, false), new ServerInfo("downNode1", true), new ServerInfo("downNode2", true))); SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, 1, persistedServerConfig); @@ -1149,14 +1139,14 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef node1Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node1RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node1ID, ImmutableMap.of(), configParams, + CollectingMockRaftActor.props(node1ID, Map.of(), configParams, PERSISTENT, node1Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node1ID); CollectingMockRaftActor node1RaftActor = node1RaftActorRef.underlyingActor(); ActorRef node2Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node2RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node2ID, ImmutableMap.of(), configParams, + CollectingMockRaftActor.props(node2ID, Map.of(), configParams, PERSISTENT, node2Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node2ID); CollectingMockRaftActor node2RaftActor = node2RaftActorRef.underlyingActor(); @@ -1183,7 +1173,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // First send the message such that node1 has no peer address for node2 - should fail. - ChangeServersVotingStatus changeServers = new ChangeServersVotingStatus(ImmutableMap.of(node1ID, true, + ChangeServersVotingStatus changeServers = new ChangeServersVotingStatus(Map.of(node1ID, true, node2ID, true, "downNode1", false, "downNode2", false)); node1RaftActorRef.tell(changeServers, testKit.getRef()); ServerChangeReply reply = testKit.expectMsgClass(Duration.ofSeconds(5), ServerChangeReply.class); @@ -1194,7 +1184,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { long term = node1RaftActor.getRaftActorContext().getTermInformation().getCurrentTerm(); node1RaftActorRef.tell(new AppendEntries(term, "downNode1", -1L, -1L, - Collections.emptyList(), 0, -1, (short)1), ActorRef.noSender()); + List.of(), 0, -1, (short)1), ActorRef.noSender()); // Wait for the ElectionTimeout to clear the leaderId. The leaderId must be null so on the next // ChangeServersVotingStatus message, it will try to elect a leader. @@ -1241,7 +1231,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ? actorFactory.createTestActorPath(node1ID) : peerId.equals(node2ID) ? actorFactory.createTestActorPath(node2ID) : null; - ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(List.of( new ServerInfo(node1ID, false), new ServerInfo(node2ID, true))); SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, 1, persistedServerConfig); @@ -1257,7 +1247,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef node1Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node1RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node1ID, ImmutableMap.of(), configParams1, + CollectingMockRaftActor.props(node1ID, Map.of(), configParams1, PERSISTENT, node1Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node1ID); final CollectingMockRaftActor node1RaftActor = node1RaftActorRef.underlyingActor(); @@ -1267,7 +1257,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef node2Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node2RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node2ID, ImmutableMap.of(), configParams2, + CollectingMockRaftActor.props(node2ID, Map.of(), configParams2, PERSISTENT, node2Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node2ID); CollectingMockRaftActor node2RaftActor = node2RaftActorRef.underlyingActor(); @@ -1279,13 +1269,13 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { node2RaftActor.setDropMessageOfType(RequestVote.class); - ChangeServersVotingStatus changeServers = new ChangeServersVotingStatus(ImmutableMap.of(node1ID, true)); + ChangeServersVotingStatus changeServers = new ChangeServersVotingStatus(Map.of(node1ID, true)); node1RaftActorRef.tell(changeServers, testKit.getRef()); ServerChangeReply reply = testKit.expectMsgClass(Duration.ofSeconds(5), ServerChangeReply.class); assertEquals("getStatus", ServerChangeStatus.NO_LEADER, reply.getStatus()); - assertEquals("Server config", ImmutableSet.of(nonVotingServer(node1ID), votingServer(node2ID)), - new HashSet<>(node1RaftActor.getRaftActorContext().getPeerServerInfo(true).getServerConfig())); + assertEquals("Server config", Set.of(nonVotingServer(node1ID), votingServer(node2ID)), + Set.copyOf(node1RaftActor.getRaftActorContext().getPeerServerInfo(true).getServerConfig())); assertEquals("getRaftState", RaftState.Follower, node1RaftActor.getRaftState()); LOG.info("testChangeToVotingWithNoLeaderAndElectionTimeout ending"); @@ -1307,7 +1297,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { configParams.setElectionTimeoutFactor(3); configParams.setPeerAddressResolver(peerAddressResolver); - ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(List.of( new ServerInfo(node1ID, false), new ServerInfo(node2ID, false))); SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, 1, persistedServerConfig); @@ -1322,14 +1312,14 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef node1Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node1RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node1ID, ImmutableMap.of(), configParams, + CollectingMockRaftActor.props(node1ID, Map.of(), configParams, PERSISTENT, node1Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node1ID); final CollectingMockRaftActor node1RaftActor = node1RaftActorRef.underlyingActor(); ActorRef node2Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node2RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node2ID, ImmutableMap.of(), configParams, + CollectingMockRaftActor.props(node2ID, Map.of(), configParams, PERSISTENT, node2Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node2ID); final CollectingMockRaftActor node2RaftActor = node2RaftActorRef.underlyingActor(); @@ -1339,7 +1329,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { // forward the request to node2. ChangeServersVotingStatus changeServers = new ChangeServersVotingStatus( - ImmutableMap.of(node1ID, true, node2ID, true)); + Map.of(node1ID, true, node2ID, true)); node1RaftActorRef.tell(changeServers, testKit.getRef()); ServerChangeReply reply = testKit.expectMsgClass(Duration.ofSeconds(5), ServerChangeReply.class); assertEquals("getStatus", ServerChangeStatus.OK, reply.getStatus()); @@ -1373,7 +1363,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ? actorFactory.createTestActorPath(node1ID) : peerId.equals(node2ID) ? actorFactory.createTestActorPath(node2ID) : null); - ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload persistedServerConfig = new ServerConfigurationPayload(List.of( new ServerInfo(node1ID, false), new ServerInfo(node2ID, true))); SimpleReplicatedLogEntry persistedServerConfigEntry = new SimpleReplicatedLogEntry(0, 1, persistedServerConfig); @@ -1385,14 +1375,14 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ActorRef node1Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node1RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node1ID, ImmutableMap.of(), configParams, + CollectingMockRaftActor.props(node1ID, Map.of(), configParams, PERSISTENT, node1Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node1ID); final CollectingMockRaftActor node1RaftActor = node1RaftActorRef.underlyingActor(); ActorRef node2Collector = actorFactory.createActor( MessageCollectorActor.props(), actorFactory.generateActorId("collector")); TestActorRef node2RaftActorRef = actorFactory.createTestActor( - CollectingMockRaftActor.props(node2ID, ImmutableMap.of(), configParams, + CollectingMockRaftActor.props(node2ID, Map.of(), configParams, PERSISTENT, node2Collector).withDispatcher(Dispatchers.DefaultDispatcherId()), node2ID); CollectingMockRaftActor node2RaftActor = node2RaftActorRef.underlyingActor(); @@ -1403,7 +1393,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { node2RaftActor.setDropMessageOfType(RequestVote.class); - ChangeServersVotingStatus changeServers = new ChangeServersVotingStatus(ImmutableMap.of(node1ID, true, + ChangeServersVotingStatus changeServers = new ChangeServersVotingStatus(Map.of(node1ID, true, node2ID, true)); node1RaftActorRef.tell(changeServers, testKit.getRef()); @@ -1464,7 +1454,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ReplicatedLogEntry logEntry = log.get(log.lastIndex()); assertEquals("Last log entry payload class", ServerConfigurationPayload.class, logEntry.getData().getClass()); ServerConfigurationPayload payload = (ServerConfigurationPayload)logEntry.getData(); - assertEquals("Server config", ImmutableSet.copyOf(expected), new HashSet<>(payload.getServerConfig())); + assertEquals("Server config", Set.of(expected), Set.copyOf(payload.getServerConfig())); } private static RaftActorContextImpl newFollowerContext(final String id, @@ -1476,7 +1466,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { ElectionTermImpl termInfo = new ElectionTermImpl(noPersistence, id, LOG); termInfo.update(1, LEADER_ID); return new RaftActorContextImpl(actor, actor.underlyingActor().getContext(), - id, termInfo, -1, -1, ImmutableMap.of(LEADER_ID, ""), configParams, + id, termInfo, -1, -1, Map.of(LEADER_ID, ""), configParams, noPersistence, applyState -> actor.tell(applyState, actor), LOG, MoreExecutors.directExecutor()); } @@ -1573,7 +1563,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { @Override @SuppressWarnings("checkstyle:IllegalCatch") public void createSnapshot(final ActorRef actorRef, final Optional installSnapshotStream) { - MockSnapshotState snapshotState = new MockSnapshotState(new ArrayList<>(getState())); + MockSnapshotState snapshotState = new MockSnapshotState(List.copyOf(getState())); if (installSnapshotStream.isPresent()) { SerializationUtils.serialize(snapshotState, installSnapshotStream.get()); } @@ -1591,7 +1581,7 @@ public class RaftActorServerConfigurationSupportTest extends AbstractActorTest { public static class MockNewFollowerRaftActor extends AbstractMockRaftActor { public MockNewFollowerRaftActor(final ConfigParams config, final ActorRef collectorActor) { - super(NEW_SERVER_ID, new HashMap<>(), Optional.of(config), NO_PERSISTENCE, collectorActor); + super(NEW_SERVER_ID, Map.of(), Optional.of(config), NO_PERSISTENCE, collectorActor); setPersistence(false); } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java index 22d9833c2b..994d53128f 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTest.java @@ -37,15 +37,10 @@ import akka.persistence.SnapshotOffer; import akka.protobuf.ByteString; import akka.testkit.TestActorRef; import akka.testkit.javadsl.TestKit; -import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.Uninterruptibles; import java.io.ByteArrayOutputStream; import java.io.ObjectOutputStream; import java.time.Duration; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; @@ -141,22 +136,20 @@ public class RaftActorTest extends AbstractActorTest { // log entry. config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); - ImmutableMap peerAddresses = ImmutableMap.builder() - .put("member1", "address").build(); + Map peerAddresses = Map.of("member1", "address"); ActorRef followerActor = factory.createActor(MockRaftActor.props(persistenceId, peerAddresses, config), persistenceId); kit.watch(followerActor); - List snapshotUnappliedEntries = new ArrayList<>(); - ReplicatedLogEntry entry1 = new SimpleReplicatedLogEntry(4, 1, new MockRaftActorContext.MockPayload("E")); - snapshotUnappliedEntries.add(entry1); + List snapshotUnappliedEntries = List.of( + new SimpleReplicatedLogEntry(4, 1, new MockRaftActorContext.MockPayload("E"))); int lastAppliedDuringSnapshotCapture = 3; int lastIndexDuringSnapshotCapture = 4; // 4 messages as part of snapshot, which are applied to state - MockSnapshotState snapshotState = new MockSnapshotState(Arrays.asList( + MockSnapshotState snapshotState = new MockSnapshotState(List.of( new MockRaftActorContext.MockPayload("A"), new MockRaftActorContext.MockPayload("B"), new MockRaftActorContext.MockPayload("C"), @@ -167,13 +160,9 @@ public class RaftActorTest extends AbstractActorTest { InMemorySnapshotStore.addSnapshot(persistenceId, snapshot); // add more entries after snapshot is taken - List entries = new ArrayList<>(); ReplicatedLogEntry entry2 = new SimpleReplicatedLogEntry(5, 1, new MockRaftActorContext.MockPayload("F", 2)); ReplicatedLogEntry entry3 = new SimpleReplicatedLogEntry(6, 1, new MockRaftActorContext.MockPayload("G", 3)); ReplicatedLogEntry entry4 = new SimpleReplicatedLogEntry(7, 1, new MockRaftActorContext.MockPayload("H", 4)); - entries.add(entry2); - entries.add(entry3); - entries.add(entry4); final int lastAppliedToState = 5; final int lastIndex = 7; @@ -199,7 +188,7 @@ public class RaftActorTest extends AbstractActorTest { mockRaftActor.waitForRecoveryComplete(); RaftActorContext context = mockRaftActor.getRaftActorContext(); - assertEquals("Journal log size", snapshotUnappliedEntries.size() + entries.size(), + assertEquals("Journal log size", snapshotUnappliedEntries.size() + 3, context.getReplicatedLog().size()); assertEquals("Journal data size", 10, context.getReplicatedLog().dataSize()); assertEquals("Last index", lastIndex, context.getReplicatedLog().lastIndex()); @@ -223,8 +212,7 @@ public class RaftActorTest extends AbstractActorTest { config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); TestActorRef ref = factory.createTestActor(MockRaftActor.props(persistenceId, - ImmutableMap.builder().put("member1", "address").build(), - config, createProvider()), persistenceId); + Map.of("member1", "address"), config, createProvider()), persistenceId); MockRaftActor mockRaftActor = ref.underlyingActor(); @@ -246,8 +234,7 @@ public class RaftActorTest extends AbstractActorTest { InMemoryJournal.addWriteMessagesCompleteLatch(persistenceId, 1); TestActorRef ref = factory.createTestActor(MockRaftActor.props(persistenceId, - ImmutableMap.builder().put("member1", "address").build(), - config, createProvider()) + Map.of("member1", "address"), config, createProvider()) .withDispatcher(Dispatchers.DefaultDispatcherId()), persistenceId); InMemoryJournal.waitForWriteMessagesComplete(persistenceId); @@ -258,8 +245,7 @@ public class RaftActorTest extends AbstractActorTest { factory.killActor(ref, kit); config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); - ref = factory.createTestActor(MockRaftActor.props(persistenceId, - ImmutableMap.builder().put("member1", "address").build(), config, + ref = factory.createTestActor(MockRaftActor.props(persistenceId, Map.of("member1", "address"), config, createProvider()).withDispatcher(Dispatchers.DefaultDispatcherId()), factory.generateActorId("follower-")); @@ -284,7 +270,7 @@ public class RaftActorTest extends AbstractActorTest { config.setHeartBeatInterval(new FiniteDuration(1, TimeUnit.DAYS)); TestActorRef mockActorRef = factory.createTestActor(MockRaftActor.props(persistenceId, - Collections.emptyMap(), config), persistenceId); + Map.of(), config), persistenceId); MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); @@ -295,7 +281,7 @@ public class RaftActorTest extends AbstractActorTest { mockRaftActor.setRaftActorRecoverySupport(mockSupport); Snapshot snapshot = Snapshot.create(ByteState.of(new byte[]{1}), - Collections.emptyList(), 3, 1, 3, 1, -1, null, null); + List.of(), 3, 1, 3, 1, -1, null, null); SnapshotOffer snapshotOffer = new SnapshotOffer(new SnapshotMetadata("test", 6, 12345), snapshot); mockRaftActor.handleRecover(snapshotOffer); @@ -382,7 +368,7 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); TestActorRef mockActorRef = factory.createTestActor(MockRaftActor.props(persistenceId, - Collections.emptyMap(), config, dataPersistenceProvider), persistenceId); + Map.of(), config, dataPersistenceProvider), persistenceId); MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); @@ -406,7 +392,7 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); TestActorRef mockActorRef = factory.createTestActor(MockRaftActor.props(persistenceId, - Collections.emptyMap(), config, dataPersistenceProvider), persistenceId); + Map.of(), config, dataPersistenceProvider), persistenceId); MockRaftActor mockRaftActor = mockActorRef.underlyingActor(); @@ -519,7 +505,7 @@ public class RaftActorTest extends AbstractActorTest { String persistenceId = factory.generateActorId("notifier-"); factory.createActor(MockRaftActor.builder().id(persistenceId) - .peerAddresses(ImmutableMap.of("leader", "fake/path")) + .peerAddresses(Map.of("leader", "fake/path")) .config(config).roleChangeNotifier(notifierActor).props()); List matches = null; @@ -561,8 +547,7 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); - Map peerAddresses = new HashMap<>(); - peerAddresses.put(follower1Id, followerActor1.path().toString()); + Map peerAddresses = Map.of(follower1Id, followerActor1.path().toString()); TestActorRef mockActorRef = factory.createTestActor( MockRaftActor.props(persistenceId, peerAddresses, config, dataPersistenceProvider), persistenceId); @@ -608,7 +593,7 @@ public class RaftActorTest extends AbstractActorTest { assertEquals(8, leaderActor.getReplicatedLog().size()); - MockSnapshotState snapshotState = new MockSnapshotState(Arrays.asList( + MockSnapshotState snapshotState = new MockSnapshotState(List.of( new MockRaftActorContext.MockPayload("foo-0"), new MockRaftActorContext.MockPayload("foo-1"), new MockRaftActorContext.MockPayload("foo-2"), @@ -650,8 +635,7 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); - Map peerAddresses = new HashMap<>(); - peerAddresses.put(leaderId, leaderActor1.path().toString()); + Map peerAddresses = Map.of(leaderId, leaderActor1.path().toString()); TestActorRef mockActorRef = factory.createTestActor( MockRaftActor.props(persistenceId, peerAddresses, config, dataPersistenceProvider), persistenceId); @@ -684,15 +668,15 @@ public class RaftActorTest extends AbstractActorTest { assertEquals(6, followerActor.getReplicatedLog().size()); //fake snapshot on index 6 - List entries = Arrays.asList( - (ReplicatedLogEntry) new SimpleReplicatedLogEntry(6, 1, new MockRaftActorContext.MockPayload("foo-6"))); + List entries = List.of( + new SimpleReplicatedLogEntry(6, 1, new MockRaftActorContext.MockPayload("foo-6"))); followerActor.handleCommand(new AppendEntries(1, leaderId, 5, 1, entries, 5, 5, (short)0)); assertEquals(7, followerActor.getReplicatedLog().size()); //fake snapshot on index 7 assertEquals(RaftState.Follower, followerActor.getCurrentBehavior().state()); - entries = Arrays.asList((ReplicatedLogEntry) new SimpleReplicatedLogEntry(7, 1, + entries = List.of(new SimpleReplicatedLogEntry(7, 1, new MockRaftActorContext.MockPayload("foo-7"))); followerActor.handleCommand(new AppendEntries(1, leaderId, 6, 1, entries, 6, 6, (short) 0)); assertEquals(8, followerActor.getReplicatedLog().size()); @@ -700,7 +684,7 @@ public class RaftActorTest extends AbstractActorTest { assertEquals(RaftState.Follower, followerActor.getCurrentBehavior().state()); - ByteString snapshotBytes = fromObject(Arrays.asList( + ByteString snapshotBytes = fromObject(List.of( new MockRaftActorContext.MockPayload("foo-0"), new MockRaftActorContext.MockPayload("foo-1"), new MockRaftActorContext.MockPayload("foo-2"), @@ -717,8 +701,7 @@ public class RaftActorTest extends AbstractActorTest { assertEquals(3, followerActor.getReplicatedLog().size()); //indexes 5,6,7 left in the log assertEquals(7, followerActor.getReplicatedLog().lastIndex()); - entries = Arrays.asList((ReplicatedLogEntry) new SimpleReplicatedLogEntry(8, 1, - new MockRaftActorContext.MockPayload("foo-7"))); + entries = List.of(new SimpleReplicatedLogEntry(8, 1, new MockRaftActorContext.MockPayload("foo-7"))); // send an additional entry 8 with leaderCommit = 7 followerActor.handleCommand(new AppendEntries(1, leaderId, 7, 1, entries, 7, 7, (short) 0)); @@ -741,9 +724,9 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); - Map peerAddresses = new HashMap<>(); - peerAddresses.put(follower1Id, followerActor1.path().toString()); - peerAddresses.put(follower2Id, followerActor2.path().toString()); + Map peerAddresses = Map.of( + follower1Id, followerActor1.path().toString(), + follower2Id, followerActor2.path().toString()); TestActorRef mockActorRef = factory.createTestActor( MockRaftActor.props(persistenceId, peerAddresses, config, dataPersistenceProvider), persistenceId); @@ -792,7 +775,7 @@ public class RaftActorTest extends AbstractActorTest { assertEquals("Fake snapshot should not happen when Initiate is in progress", 5, leaderActor.getReplicatedLog().size()); - ByteString snapshotBytes = fromObject(Arrays.asList( + ByteString snapshotBytes = fromObject(List.of( new MockRaftActorContext.MockPayload("foo-0"), new MockRaftActorContext.MockPayload("foo-1"), new MockRaftActorContext.MockPayload("foo-2"), @@ -820,7 +803,7 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = createProvider(); - Map peerAddresses = ImmutableMap.builder().put("member1", "address").build(); + Map peerAddresses = Map.of("member1", "address"); TestActorRef mockActorRef = factory.createTestActor( MockRaftActor.props(persistenceId, peerAddresses, config, dataPersistenceProvider), persistenceId); @@ -864,7 +847,7 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = createProvider(); - Map peerAddresses = ImmutableMap.builder().put("member1", "address").build(); + Map peerAddresses = Map.of("member1", "address"); TestActorRef mockActorRef = factory.createTestActor( MockRaftActor.props(persistenceId, peerAddresses, config, dataPersistenceProvider), persistenceId); @@ -910,7 +893,7 @@ public class RaftActorTest extends AbstractActorTest { DataPersistenceProvider dataPersistenceProvider = createProvider(); - Map peerAddresses = ImmutableMap.builder().build(); + Map peerAddresses = Map.of(); TestActorRef mockActorRef = factory.createTestActor( MockRaftActor.props(persistenceId, peerAddresses, config, dataPersistenceProvider), persistenceId); @@ -964,8 +947,7 @@ public class RaftActorTest extends AbstractActorTest { public void testUpdateConfigParam() { DefaultConfigParamsImpl emptyConfig = new DefaultConfigParamsImpl(); String persistenceId = factory.generateActorId("follower-"); - ImmutableMap peerAddresses = - ImmutableMap.builder().put("member1", "address").build(); + Map peerAddresses = Map.of("member1", "address"); DataPersistenceProvider dataPersistenceProvider = mock(DataPersistenceProvider.class); TestActorRef actorRef = factory.createTestActor( @@ -1030,7 +1012,7 @@ public class RaftActorTest extends AbstractActorTest { new MockRaftActorContext.MockPayload("C"))); TestActorRef raftActorRef = factory.createTestActor(MockRaftActor.props(persistenceId, - ImmutableMap.builder().put("member1", "address").build(), config) + Map.of("member1", "address"), config) .withDispatcher(Dispatchers.DefaultDispatcherId()), persistenceId); MockRaftActor mockRaftActor = raftActorRef.underlyingActor(); @@ -1106,13 +1088,13 @@ public class RaftActorTest extends AbstractActorTest { DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); config.setCustomRaftPolicyImplementationClass(DisableElectionsRaftPolicy.class.getName()); - List snapshotUnappliedEntries = new ArrayList<>(); - snapshotUnappliedEntries.add(new SimpleReplicatedLogEntry(4, 1, new MockRaftActorContext.MockPayload("E"))); + List snapshotUnappliedEntries = List.of( + new SimpleReplicatedLogEntry(4, 1, new MockRaftActorContext.MockPayload("E"))); int snapshotLastApplied = 3; int snapshotLastIndex = 4; - MockSnapshotState snapshotState = new MockSnapshotState(Arrays.asList( + MockSnapshotState snapshotState = new MockSnapshotState(List.of( new MockRaftActorContext.MockPayload("A"), new MockRaftActorContext.MockPayload("B"), new MockRaftActorContext.MockPayload("C"), @@ -1153,7 +1135,7 @@ public class RaftActorTest extends AbstractActorTest { // Test with data persistence disabled - snapshot = Snapshot.create(EmptyState.INSTANCE, Collections.emptyList(), + snapshot = Snapshot.create(EmptyState.INSTANCE, List.of(), -1, -1, -1, -1, 5, "member-1", null); persistenceId = factory.generateActorId("test-actor-"); @@ -1183,9 +1165,9 @@ public class RaftActorTest extends AbstractActorTest { DefaultConfigParamsImpl config = new DefaultConfigParamsImpl(); config.setCustomRaftPolicyImplementationClass(DisableElectionsRaftPolicy.class.getName()); - List state = Arrays.asList(new MockRaftActorContext.MockPayload("A")); + List state = List.of(new MockRaftActorContext.MockPayload("A")); Snapshot snapshot = Snapshot.create(ByteState.of(fromObject(state).toByteArray()), - Arrays.asList(), 5, 2, 5, 2, 2, "member-1", null); + List.of(), 5, 2, 5, 2, 2, "member-1", null); InMemoryJournal.addEntry(persistenceId, 1, new SimpleReplicatedLogEntry(0, 1, new MockRaftActorContext.MockPayload("B"))); @@ -1221,7 +1203,7 @@ public class RaftActorTest extends AbstractActorTest { String persistenceId = factory.generateActorId("test-actor-"); InMemoryJournal.addEntry(persistenceId, 1, new SimpleReplicatedLogEntry(0, 1, - new ServerConfigurationPayload(Arrays.asList(new ServerInfo(persistenceId, false))))); + new ServerConfigurationPayload(List.of(new ServerInfo(persistenceId, false))))); TestActorRef raftActorRef = factory.createTestActor(MockRaftActor.builder().id(persistenceId) .config(config).props().withDispatcher(Dispatchers.DefaultDispatcherId()), persistenceId); @@ -1255,7 +1237,7 @@ public class RaftActorTest extends AbstractActorTest { mockRaftActor.waitForInitializeBehaviorComplete(); - raftActorRef.tell(new AppendEntries(1L, "leader", 0L, 1L, Collections.emptyList(), + raftActorRef.tell(new AppendEntries(1L, "leader", 0L, 1L, List.of(), 0L, -1L, (short)1), ActorRef.noSender()); LeaderStateChanged leaderStateChange = MessageCollectorActor.expectFirstMatching( notifierActor, LeaderStateChanged.class); @@ -1288,7 +1270,7 @@ public class RaftActorTest extends AbstractActorTest { doReturn(true).when(mockPersistenceProvider).isRecoveryApplicable(); TestActorRef leaderActorRef = factory.createTestActor( - MockRaftActor.props(leaderId, ImmutableMap.of(followerId, followerActor.path().toString()), config, + MockRaftActor.props(leaderId, Map.of(followerId, followerActor.path().toString()), config, mockPersistenceProvider), leaderId); MockRaftActor leaderActor = leaderActorRef.underlyingActor(); leaderActor.waitForInitializeBehaviorComplete(); @@ -1330,7 +1312,7 @@ public class RaftActorTest extends AbstractActorTest { config.setIsolatedLeaderCheckInterval(new FiniteDuration(1, TimeUnit.DAYS)); TestActorRef leaderActorRef = factory.createTestActor( - MockRaftActor.props(leaderId, ImmutableMap.of(followerId, followerActor.path().toString()), config), + MockRaftActor.props(leaderId, Map.of(followerId, followerActor.path().toString()), config), leaderId); MockRaftActor leaderActor = leaderActorRef.underlyingActor(); leaderActor.waitForInitializeBehaviorComplete(); @@ -1370,8 +1352,7 @@ public class RaftActorTest extends AbstractActorTest { TestRaftActor.Builder builder = TestRaftActor.newBuilder() .id(leaderId) - .peerAddresses(ImmutableMap.of(followerId, - mockFollowerActorRef.path().toString())) + .peerAddresses(Map.of(followerId, mockFollowerActorRef.path().toString())) .config(config) .collectorActor(factory.createActor( MessageCollectorActor.props(), factory.generateActorId(leaderId + "-collector"))); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTestKit.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTestKit.java index 6386d6c6ba..7d6b8988d3 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTestKit.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorTestKit.java @@ -7,6 +7,8 @@ */ package org.opendaylight.controller.cluster.raft; +import static org.junit.Assert.fail; + import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.pattern.Patterns; @@ -16,7 +18,6 @@ import akka.util.Timeout; import com.google.common.util.concurrent.Uninterruptibles; import java.util.Optional; import java.util.concurrent.TimeUnit; -import org.junit.Assert; import org.opendaylight.controller.cluster.raft.client.messages.FindLeader; import org.opendaylight.controller.cluster.raft.client.messages.FindLeaderReply; import org.slf4j.Logger; @@ -31,7 +32,7 @@ public class RaftActorTestKit extends TestKit { public RaftActorTestKit(final ActorSystem actorSystem, final String actorName) { super(actorSystem); - raftActor = this.getSystem().actorOf(MockRaftActor.builder().id(actorName).props(), actorName); + raftActor = getSystem().actorOf(MockRaftActor.builder().id(actorName).props(), actorName); } public ActorRef getRaftActor() { @@ -65,6 +66,6 @@ public class RaftActorTestKit extends TestKit { Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); } - Assert.fail("Leader not found for actorRef " + actorRef.path()); + fail("Leader not found for actorRef " + actorRef.path()); } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationSingleNodeTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationSingleNodeTest.java index 7004ca8878..b3da66c0ff 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationSingleNodeTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationSingleNodeTest.java @@ -12,9 +12,8 @@ import static org.junit.Assert.assertEquals; import akka.actor.ActorRef; import akka.persistence.SaveSnapshotSuccess; import akka.testkit.TestActorRef; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; import java.util.List; +import java.util.Map; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.cluster.raft.persisted.ApplyJournalEntries; @@ -43,7 +42,7 @@ public class RecoveryIntegrationSingleNodeTest extends AbstractRaftActorIntegrat String persistenceId = factory.generateActorId("singleNode"); TestActorRef singleNodeActorRef = - newTestRaftActor(persistenceId, ImmutableMap.builder().build(), leaderConfigParams); + newTestRaftActor(persistenceId, Map.of(), leaderConfigParams); waitUntilLeader(singleNodeActorRef); @@ -75,8 +74,9 @@ public class RecoveryIntegrationSingleNodeTest extends AbstractRaftActorIntegrat assertEquals("Last applied", 5, singleNodeContext.getLastApplied()); - assertEquals("Incorrect State after snapshot success is received ", Lists.newArrayList(payload0, payload1, - payload2, payload3, payload4, payload5), singleNodeActorRef.underlyingActor().getState()); + assertEquals("Incorrect State after snapshot success is received ", + List.of(payload0, payload1, payload2, payload3, payload4, payload5), + singleNodeActorRef.underlyingActor().getState()); InMemoryJournal.waitForWriteMessagesComplete(persistenceId); @@ -87,19 +87,17 @@ public class RecoveryIntegrationSingleNodeTest extends AbstractRaftActorIntegrat assertEquals(1, persistedSnapshots.size()); List snapshottedState = MockRaftActor.fromState(persistedSnapshots.get(0).getState()); - assertEquals("Incorrect Snapshot", Lists.newArrayList(payload0, payload1, payload2, payload3), - snapshottedState); + assertEquals("Incorrect Snapshot", List.of(payload0, payload1, payload2, payload3), snapshottedState); //recovery logic starts killActor(singleNodeActorRef); - singleNodeActorRef = newTestRaftActor(persistenceId, - ImmutableMap.builder().build(), leaderConfigParams); + singleNodeActorRef = newTestRaftActor(persistenceId, Map.of(), leaderConfigParams); singleNodeActorRef.underlyingActor().waitForRecoveryComplete(); - assertEquals("Incorrect State after Recovery ", Lists.newArrayList(payload0, payload1, payload2, payload3, - payload4, payload5), singleNodeActorRef.underlyingActor().getState()); - + assertEquals("Incorrect State after Recovery ", + List.of(payload0, payload1, payload2, payload3, payload4, payload5), + singleNodeActorRef.underlyingActor().getState()); } } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java index 47b2994780..f197ba29a0 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RecoveryIntegrationTest.java @@ -11,9 +11,6 @@ import static org.junit.Assert.assertEquals; import akka.actor.ActorRef; import akka.persistence.SaveSnapshotSuccess; -import com.google.common.collect.ImmutableMap; -import java.util.Arrays; -import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.Before; @@ -38,15 +35,12 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { @Before public void setup() { - follower1Actor = newTestRaftActor(follower1Id, ImmutableMap.of(leaderId, testActorPath(leaderId)), + follower1Actor = newTestRaftActor(follower1Id, Map.of(leaderId, testActorPath(leaderId)), newFollowerConfigParams()); - Map leaderPeerAddresses = new HashMap<>(); - leaderPeerAddresses.put(follower1Id, follower1Actor.path().toString()); - leaderPeerAddresses.put(follower2Id, ""); - leaderConfigParams = newLeaderConfigParams(); - leaderActor = newTestRaftActor(leaderId, leaderPeerAddresses, leaderConfigParams); + leaderActor = newTestRaftActor(leaderId, Map.of(follower1Id, follower1Actor.path().toString(), follower2Id, ""), + leaderConfigParams); follower1CollectorActor = follower1Actor.underlyingActor().collectorActor(); leaderCollectorActor = leaderActor.underlyingActor().collectorActor(); @@ -96,7 +90,7 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { assertEquals("Leader commit index", 4, leaderContext.getCommitIndex()); assertEquals("Leader last applied", 4, leaderContext.getLastApplied()); - assertEquals("Leader state", Arrays.asList(payload0, payload1, payload2, payload3, payload4), + assertEquals("Leader state", List.of(payload0, payload1, payload2, payload3, payload4), leaderActor.underlyingActor().getState()); } @@ -135,7 +129,7 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { assertEquals("Leader commit index", 4, leaderContext.getCommitIndex()); assertEquals("Leader last applied", 4, leaderContext.getLastApplied()); - assertEquals("Leader state", Arrays.asList(payload0, payload1, payload2, payload3, payload4), + assertEquals("Leader state", List.of(payload0, payload1, payload2, payload3, payload4), leaderActor.underlyingActor().getState()); } @@ -146,8 +140,8 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { leader = leaderActor.underlyingActor().getCurrentBehavior(); - follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId)), - newFollowerConfigParams()); + follower2Actor = newTestRaftActor(follower2Id, + Map.of(leaderId, testActorPath(leaderId)), newFollowerConfigParams()); follower2CollectorActor = follower2Actor.underlyingActor().collectorActor(); leaderActor.tell(new SetPeerAddress(follower2Id, follower2Actor.path().toString()), ActorRef.noSender()); @@ -168,8 +162,8 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { InMemoryJournal.clear(); - follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId)), - newFollowerConfigParams()); + follower2Actor = newTestRaftActor(follower2Id, + Map.of(leaderId, testActorPath(leaderId)), newFollowerConfigParams()); TestRaftActor follower2Underlying = follower2Actor.underlyingActor(); follower2CollectorActor = follower2Underlying.collectorActor(); follower2Context = follower2Underlying.getRaftActorContext(); @@ -182,7 +176,7 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { // Wait for the follower to persist the snapshot. MessageCollectorActor.expectFirstMatching(follower2CollectorActor, SaveSnapshotSuccess.class); - final List expFollowerState = Arrays.asList(payload0, payload1, payload2); + final List expFollowerState = List.of(payload0, payload1, payload2); assertEquals("Follower commit index", 2, follower2Context.getCommitIndex()); assertEquals("Follower last applied", 2, follower2Context.getLastApplied()); @@ -191,7 +185,7 @@ public class RecoveryIntegrationTest extends AbstractRaftActorIntegrationTest { killActor(follower2Actor); - follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId)), + follower2Actor = newTestRaftActor(follower2Id, Map.of(leaderId, testActorPath(leaderId)), newFollowerConfigParams()); follower2Underlying = follower2Actor.underlyingActor(); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplTest.java index 5b8ec2ec15..542828b9d0 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicatedLogImplTest.java @@ -17,7 +17,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import akka.japi.Procedure; import com.google.common.util.concurrent.MoreExecutors; -import java.util.Collections; +import java.util.Map; import java.util.function.Consumer; import org.junit.Before; import org.junit.Test; @@ -56,7 +56,7 @@ public class ReplicatedLogImplTest { @Before public void setup() { context = new RaftActorContextImpl(null, null, "test", - new ElectionTermImpl(mockPersistence, "test", LOG), -1, -1, Collections.emptyMap(), + new ElectionTermImpl(mockPersistence, "test", LOG), -1, -1, Map.of(), configParams, mockPersistence, applyState -> { }, LOG, MoreExecutors.directExecutor()); } diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsIntegrationTest.java index 050b0ddf35..70f67425c3 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsIntegrationTest.java @@ -10,8 +10,8 @@ package org.opendaylight.controller.cluster.raft; import static org.junit.Assert.assertEquals; import akka.persistence.SaveSnapshotSuccess; -import com.google.common.collect.ImmutableMap; import java.util.List; +import java.util.Map; import org.junit.Test; import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload; import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; @@ -67,15 +67,15 @@ public class ReplicationAndSnapshotsIntegrationTest extends AbstractRaftActorInt DefaultConfigParamsImpl followerConfigParams = newFollowerConfigParams(); followerConfigParams.setSnapshotBatchCount(snapshotBatchCount); - follower1Actor = newTestRaftActor(follower1Id, ImmutableMap.of(leaderId, testActorPath(leaderId), + follower1Actor = newTestRaftActor(follower1Id, Map.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id)), followerConfigParams); - follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId), + follower2Actor = newTestRaftActor(follower2Id, Map.of(leaderId, testActorPath(leaderId), follower1Id, testActorPath(follower1Id)), followerConfigParams); - peerAddresses = ImmutableMap.builder() - .put(follower1Id, follower1Actor.path().toString()) - .put(follower2Id, follower2Actor.path().toString()).build(); + peerAddresses = Map.of( + follower1Id, follower1Actor.path().toString(), + follower2Id, follower2Actor.path().toString()); leaderConfigParams = newLeaderConfigParams(); leaderActor = newTestRaftActor(leaderId, peerAddresses, leaderConfigParams); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest.java index 00147a3c0e..ea4a5447e6 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest.java @@ -9,20 +9,18 @@ package org.opendaylight.controller.cluster.raft; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import akka.actor.ActorRef; import akka.persistence.SaveSnapshotSuccess; -import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.Uninterruptibles; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.SerializationUtils; import org.eclipse.jdt.annotation.Nullable; -import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload; import org.opendaylight.controller.cluster.raft.base.messages.ApplySnapshot; @@ -61,15 +59,15 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A InMemoryJournal.addEntry(leaderId, 1, new UpdateElectionTerm(initialTerm, leaderId)); // Create the leader and 2 follower actors. - follower1Actor = newTestRaftActor(follower1Id, ImmutableMap.of(leaderId, testActorPath(leaderId), + follower1Actor = newTestRaftActor(follower1Id, Map.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id)), newFollowerConfigParams()); - follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId), + follower2Actor = newTestRaftActor(follower2Id, Map.of(leaderId, testActorPath(leaderId), follower1Id, testActorPath(follower1Id)), newFollowerConfigParams()); - Map leaderPeerAddresses = ImmutableMap.builder() - .put(follower1Id, follower1Actor.path().toString()) - .put(follower2Id, follower2Actor.path().toString()).build(); + Map leaderPeerAddresses = Map.of( + follower1Id, follower1Actor.path().toString(), + follower2Id, follower2Actor.path().toString()); leaderConfigParams = newLeaderConfigParams(); leaderActor = newTestRaftActor(leaderId, leaderPeerAddresses, leaderConfigParams); @@ -96,7 +94,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A } private void setupFollower2() { - follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId), + follower2Actor = newTestRaftActor(follower2Id, Map.of(leaderId, testActorPath(leaderId), follower1Id, testActorPath(follower1Id)), newFollowerConfigParams()); follower2Context = follower2Actor.underlyingActor().getRaftActorContext(); @@ -169,7 +167,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A // to catch it up because no snapshotting was done so the follower's next index was present in the log. InstallSnapshot installSnapshot = MessageCollectorActor.getFirstMatching(follower2CollectorActor, InstallSnapshot.class); - Assert.assertNull("Follower 2 received unexpected InstallSnapshot", installSnapshot); + assertNull("Follower 2 received unexpected InstallSnapshot", installSnapshot); testLog.info("testReplicationsWithLaggingFollowerCaughtUpViaAppendEntries complete"); } @@ -254,7 +252,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A // Verify the leader did not try to install a snapshot to catch up follower 2. InstallSnapshot installSnapshot = MessageCollectorActor.getFirstMatching(follower2CollectorActor, InstallSnapshot.class); - Assert.assertNull("Follower 2 received unexpected InstallSnapshot", installSnapshot); + assertNull("Follower 2 received unexpected InstallSnapshot", installSnapshot); // Ensure there's at least 1 more heartbeat. MessageCollectorActor.clearMessages(leaderCollectorActor); @@ -364,7 +362,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A // Send a server config change to test that the install snapshot includes the server config. - ServerConfigurationPayload serverConfig = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload serverConfig = new ServerConfigurationPayload(List.of( new ServerInfo(leaderId, true), new ServerInfo(follower1Id, false), new ServerInfo(follower2Id, false))); @@ -508,7 +506,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A // Verify a snapshot is not triggered. CaptureSnapshot captureSnapshot = MessageCollectorActor.getFirstMatching(leaderCollectorActor, CaptureSnapshot.class); - Assert.assertNull("Leader received unexpected CaptureSnapshot", captureSnapshot); + assertNull("Leader received unexpected CaptureSnapshot", captureSnapshot); expSnapshotState.add(payload1); @@ -581,7 +579,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A verifyApplyState(applyState, leaderCollectorActor, payload3.toString(), currentTerm, 3, payload3); captureSnapshot = MessageCollectorActor.getFirstMatching(leaderCollectorActor, CaptureSnapshot.class); - Assert.assertNull("Leader received unexpected CaptureSnapshot", captureSnapshot); + assertNull("Leader received unexpected CaptureSnapshot", captureSnapshot); // Verify the follower 1 applies the state. applyState = MessageCollectorActor.expectFirstMatching(follower1CollectorActor, ApplyState.class); @@ -633,7 +631,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A // This is OK - the next snapshot should delete it. In production, even if the system restarted // before another snapshot, they would both get applied which wouldn't hurt anything. List persistedSnapshots = InMemorySnapshotStore.getSnapshots(leaderId, Snapshot.class); - Assert.assertTrue("Expected at least 1 persisted snapshots", persistedSnapshots.size() > 0); + assertTrue("Expected at least 1 persisted snapshots", persistedSnapshots.size() > 0); Snapshot persistedSnapshot = persistedSnapshots.get(persistedSnapshots.size() - 1); verifySnapshot("Persisted", persistedSnapshot, currentTerm, lastAppliedIndex, currentTerm, lastAppliedIndex); List unAppliedEntry = persistedSnapshot.getUnAppliedEntries(); @@ -683,18 +681,18 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A verifyLeadersTrimmedLog(lastAppliedIndex); if (expServerConfig != null) { - Set expServerInfo = new HashSet<>(expServerConfig.getServerConfig()); + Set expServerInfo = Set.copyOf(expServerConfig.getServerConfig()); assertEquals("Leader snapshot server config", expServerInfo, - new HashSet<>(persistedSnapshot.getServerConfiguration().getServerConfig())); + Set.copyOf(persistedSnapshot.getServerConfiguration().getServerConfig())); assertEquals("Follower 2 snapshot server config", expServerInfo, - new HashSet<>(applySnapshot.getSnapshot().getServerConfiguration().getServerConfig())); + Set.copyOf(applySnapshot.getSnapshot().getServerConfiguration().getServerConfig())); ServerConfigurationPayload follower2ServerConfig = follower2Context.getPeerServerInfo(true); assertNotNull("Follower 2 server config is null", follower2ServerConfig); assertEquals("Follower 2 server config", expServerInfo, - new HashSet<>(follower2ServerConfig.getServerConfig())); + Set.copyOf(follower2ServerConfig.getServerConfig())); } MessageCollectorActor.clearMessages(leaderCollectorActor); @@ -765,8 +763,9 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A // Verify the leaders's persisted journal log - it should only contain the last 2 ReplicatedLogEntries // added after the snapshot as the persisted journal should've been purged to the snapshot // sequence number. - verifyPersistedJournal(leaderId, Arrays.asList(new SimpleReplicatedLogEntry(5, currentTerm, payload5), - new SimpleReplicatedLogEntry(6, currentTerm, payload6))); + verifyPersistedJournal(leaderId, List.of( + new SimpleReplicatedLogEntry(5, currentTerm, payload5), + new SimpleReplicatedLogEntry(6, currentTerm, payload6))); // Verify the leaders's persisted journal contains an ApplyJournalEntries for at least the last entry index. List persistedApplyJournalEntries = @@ -779,8 +778,7 @@ public class ReplicationAndSnapshotsWithLaggingFollowerIntegrationTest extends A } } - Assert.assertTrue(String.format("ApplyJournalEntries with index %d not found in leader's persisted journal", 6), - found); + assertTrue("ApplyJournalEntries with index 6 not found in leader's persisted journal", found); // Verify follower 1 applies the 3 log entries. applyStates = MessageCollectorActor.expectMatching(follower1CollectorActor, ApplyState.class, 3); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationWithSlicedPayloadIntegrationTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationWithSlicedPayloadIntegrationTest.java index fda95eaa1d..10c11a7bc4 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationWithSlicedPayloadIntegrationTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ReplicationWithSlicedPayloadIntegrationTest.java @@ -9,8 +9,8 @@ package org.opendaylight.controller.cluster.raft; import static org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor.expectMatching; -import com.google.common.collect.ImmutableMap; import java.util.List; +import java.util.Map; import org.junit.Test; import org.opendaylight.controller.cluster.raft.MockRaftActorContext.MockPayload; import org.opendaylight.controller.cluster.raft.base.messages.ApplyState; @@ -33,15 +33,15 @@ public class ReplicationWithSlicedPayloadIntegrationTest extends AbstractRaftAct DefaultConfigParamsImpl followerConfigParams = newFollowerConfigParams(); followerConfigParams.setSnapshotBatchCount(snapshotBatchCount); - follower1Actor = newTestRaftActor(follower1Id, ImmutableMap.of(leaderId, testActorPath(leaderId), + follower1Actor = newTestRaftActor(follower1Id, Map.of(leaderId, testActorPath(leaderId), follower2Id, testActorPath(follower2Id)), followerConfigParams); - follower2Actor = newTestRaftActor(follower2Id, ImmutableMap.of(leaderId, testActorPath(leaderId), + follower2Actor = newTestRaftActor(follower2Id, Map.of(leaderId, testActorPath(leaderId), follower1Id, testActorPath(follower1Id)), followerConfigParams); - peerAddresses = ImmutableMap.builder() - .put(follower1Id, follower1Actor.path().toString()) - .put(follower2Id, follower2Actor.path().toString()).build(); + peerAddresses = Map.of( + follower1Id, follower1Actor.path().toString(), + follower2Id, follower2Actor.path().toString()); leaderConfigParams = newLeaderConfigParams(); leaderActor = newTestRaftActor(leaderId, peerAddresses, leaderConfigParams); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/SnapshotManagerTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/SnapshotManagerTest.java index 9463a113e6..961caa64c9 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/SnapshotManagerTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/SnapshotManagerTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.cluster.raft; import static org.junit.Assert.assertArrayEquals; @@ -26,7 +25,7 @@ import static org.mockito.Mockito.verify; import akka.actor.ActorRef; import akka.persistence.SnapshotSelectionCriteria; import java.io.OutputStream; -import java.util.Arrays; +import java.util.List; import java.util.Optional; import java.util.function.Consumer; import org.junit.After; @@ -257,7 +256,7 @@ public class SnapshotManagerTest extends AbstractActorTest { 8L, 2L, new MockRaftActorContext.MockPayload()); doReturn(lastAppliedEntry).when(mockReplicatedLog).get(8L); - doReturn(Arrays.asList(lastLogEntry)).when(mockReplicatedLog).getFrom(9L); + doReturn(List.of(lastLogEntry)).when(mockReplicatedLog).getFrom(9L); // when replicatedToAllIndex = -1 snapshotManager.capture(lastLogEntry, -1); @@ -275,7 +274,7 @@ public class SnapshotManagerTest extends AbstractActorTest { assertEquals("getLastAppliedTerm", 2L, snapshot.getLastAppliedTerm()); assertEquals("getLastAppliedIndex", 8L, snapshot.getLastAppliedIndex()); assertEquals("getState", snapshotState, snapshot.getState()); - assertEquals("getUnAppliedEntries", Arrays.asList(lastLogEntry), snapshot.getUnAppliedEntries()); + assertEquals("getUnAppliedEntries", List.of(lastLogEntry), snapshot.getUnAppliedEntries()); assertEquals("electionTerm", mockElectionTerm.getCurrentTerm(), snapshot.getElectionTerm()); assertEquals("electionVotedFor", mockElectionTerm.getVotedFor(), snapshot.getElectionVotedFor()); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/TestActorFactory.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/TestActorFactory.java index 50a3c98131..96f4fe8c6e 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/TestActorFactory.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/TestActorFactory.java @@ -7,6 +7,8 @@ */ package org.opendaylight.controller.cluster.raft; +import static org.junit.Assert.assertTrue; + import akka.actor.Actor; import akka.actor.ActorIdentity; import akka.actor.ActorRef; @@ -23,10 +25,9 @@ import akka.util.Timeout; import com.google.common.base.Stopwatch; import com.google.common.util.concurrent.Uninterruptibles; import java.time.Duration; -import java.util.LinkedList; +import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; -import org.junit.Assert; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Await; @@ -49,7 +50,7 @@ public class TestActorFactory implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(TestActorFactory.class); private final ActorSystem system; - List createdActors = new LinkedList<>(); + private final List createdActors = new ArrayList<>(); private static int actorCount = 1; public TestActorFactory(final ActorSystem system) { @@ -152,7 +153,7 @@ public class TestActorFactory implements AutoCloseable { ActorSelection actorSelection = system.actorSelection(actorRef.path().toString()); Future future = Patterns.ask(actorSelection, new Identify(""), timeout); ActorIdentity reply = (ActorIdentity)Await.result(future, timeout.duration()); - Assert.assertTrue("Identify returned non-present", reply.getActorRef().isPresent()); + assertTrue("Identify returned non-present", reply.getActorRef().isPresent()); return; } catch (Exception | AssertionError e) { Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java index a51134676a..8006d5a6ac 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/FollowerTest.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.cluster.raft.behaviors; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -25,21 +26,15 @@ import akka.protobuf.ByteString; import akka.testkit.TestActorRef; import akka.testkit.javadsl.TestKit; import com.google.common.base.Stopwatch; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.common.io.ByteSource; import com.google.common.util.concurrent.Uninterruptibles; import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; import org.junit.After; -import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.raft.DefaultConfigParamsImpl; import org.opendaylight.controller.cluster.raft.MockRaftActor; @@ -157,7 +152,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { Uninterruptibles.sleepUninterruptibly(context.getConfigParams() .getElectionTimeOutInterval().toMillis() - 100, TimeUnit.MILLISECONDS); - follower.handleMessage(leaderActor, new AppendEntries(1, "leader", -1, -1, Collections.emptyList(), + follower.handleMessage(leaderActor, new AppendEntries(1, "leader", -1, -1, List.of(), -1, -1, (short) 1)); Uninterruptibles.sleepUninterruptibly(130, TimeUnit.MILLISECONDS); @@ -166,7 +161,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { Uninterruptibles.sleepUninterruptibly(context.getConfigParams() .getElectionTimeOutInterval().toMillis() - 150, TimeUnit.MILLISECONDS); - follower.handleMessage(leaderActor, new AppendEntries(1, "leader", -1, -1, Collections.emptyList(), + follower.handleMessage(leaderActor, new AppendEntries(1, "leader", -1, -1, List.of(), -1, -1, (short) 1)); Uninterruptibles.sleepUninterruptibly(200, TimeUnit.MILLISECONDS); @@ -221,10 +216,9 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.getReplicatedLog().append(newReplicatedLogEntry(1,100, "bar")); context.getReplicatedLog().setSnapshotIndex(99); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); - Assert.assertEquals(1, context.getReplicatedLog().size()); + assertEquals(1, context.getReplicatedLog().size()); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", 100, 1, entries, 101, 100, (short)0); @@ -246,8 +240,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext context = createActorContext(); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", -1, -1, entries, 101, 100, (short) 0); @@ -272,8 +265,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.getReplicatedLog().append(newReplicatedLogEntry(1, 100, "bar")); context.getReplicatedLog().setSnapshotIndex(99); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", -1, -1, entries, 101, 100, (short) 0); @@ -297,8 +289,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.getReplicatedLog().clear(0,2); context.getReplicatedLog().setSnapshotIndex(100); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", -1, -1, entries, 101, 100, (short) 0); @@ -323,8 +314,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.getReplicatedLog().clear(0,2); context.getReplicatedLog().setSnapshotIndex(100); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 105, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 105, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", -1, -1, entries, 105, 100, (short) 0); @@ -346,8 +336,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext context = createActorContext(); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", 100, 1, entries, 101, 100, (short)0); @@ -367,7 +356,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.setCommitIndex(101); setLastLogEntry(context, 1, 101, new MockRaftActorContext.MockPayload("")); - entries = Arrays.asList(newReplicatedLogEntry(2, 101, "foo")); + entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 appendEntries = new AppendEntries(2, "leader-1", 101, 1, entries, 102, 101, (short)0); @@ -394,8 +383,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext context = createActorContext(); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", 100, 1, entries, 101, 100, (short)0); @@ -415,8 +403,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { setLastLogEntry(context, 1, 100, new MockRaftActorContext.MockPayload("")); - entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // leader-2 is becoming the leader now and it says the commitIndex is 45 appendEntries = new AppendEntries(2, "leader-2", 45, 1, entries, 46, 100, (short)0); @@ -434,8 +421,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext context = createActorContext(); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", 100, 1, entries, 101, 100, (short)0); @@ -456,8 +442,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { setLastLogEntry(context, 1, 101, new MockRaftActorContext.MockPayload("")); - entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 appendEntries = new AppendEntries(2, "leader-1", 101, 1, entries, 102, 101, (short)0); @@ -474,8 +459,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { setLastLogEntry(context, 1, 100, new MockRaftActorContext.MockPayload("")); - entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // leader-2 is becoming the leader now and it says the commitIndex is 45 appendEntries = new AppendEntries(2, "leader-2", 45, 1, entries, 46, 100, (short)0); @@ -504,8 +488,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { new MockRaftActorContext.MockPayload("")); context.getReplicatedLog().setSnapshotIndex(99); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader-1", 100, 1, entries, 101, 100, (short)0); @@ -527,13 +510,13 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { MockRaftActorContext context = createActorContext(); - AppendEntries appendEntries = new AppendEntries(2, "leader", 0, 2, Collections.emptyList(), 101, -1, (short)0); + AppendEntries appendEntries = new AppendEntries(2, "leader", 0, 2, List.of(), 101, -1, (short)0); follower = createBehavior(context); RaftActorBehavior newBehavior = follower.handleMessage(leaderActor, appendEntries); - Assert.assertSame(follower, newBehavior); + assertSame(follower, newBehavior); AppendEntriesReply reply = MessageCollectorActor.expectFirstMatching(leaderActor, AppendEntriesReply.class); @@ -550,13 +533,13 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.getReplicatedLog().setSnapshotIndex(4); context.getReplicatedLog().setSnapshotTerm(3); - AppendEntries appendEntries = new AppendEntries(3, "leader", 1, 3, Collections.emptyList(), 8, -1, (short)0); + AppendEntries appendEntries = new AppendEntries(3, "leader", 1, 3, List.of(), 8, -1, (short)0); follower = createBehavior(context); RaftActorBehavior newBehavior = follower.handleMessage(leaderActor, appendEntries); - Assert.assertSame(follower, newBehavior); + assertSame(follower, newBehavior); AppendEntriesReply reply = MessageCollectorActor.expectFirstMatching(leaderActor, AppendEntriesReply.class); @@ -587,9 +570,8 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.setReplicatedLog(log); // Prepare the entries to be sent with AppendEntries - List entries = new ArrayList<>(); - entries.add(newReplicatedLogEntry(1, 3, "three")); - entries.add(newReplicatedLogEntry(1, 4, "four")); + List entries = List.of( + newReplicatedLogEntry(1, 3, "three"), newReplicatedLogEntry(1, 4, "four")); // Send appendEntries with the same term as was set on the receiver // before the new behavior was created (1 in this case) @@ -603,7 +585,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { RaftActorBehavior newBehavior = follower.handleMessage(leaderActor, appendEntries); - Assert.assertSame(follower, newBehavior); + assertSame(follower, newBehavior); assertEquals("Next index", 5, log.last().getIndex() + 1); assertEquals("Entry 3", entries.get(0), log.get(3)); @@ -639,9 +621,8 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.setReplicatedLog(log); // Prepare the entries to be sent with AppendEntries - List entries = new ArrayList<>(); - entries.add(newReplicatedLogEntry(2, 2, "two-1")); - entries.add(newReplicatedLogEntry(2, 3, "three")); + List entries = List.of( + newReplicatedLogEntry(2, 2, "two-1"), newReplicatedLogEntry(2, 3, "three")); // Send appendEntries with the same term as was set on the receiver // before the new behavior was created (1 in this case) @@ -653,7 +634,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { RaftActorBehavior newBehavior = follower.handleMessage(leaderActor, appendEntries); - Assert.assertSame(follower, newBehavior); + assertSame(follower, newBehavior); // The entry at index 2 will be found out-of-sync with the leader // and will be removed @@ -690,9 +671,8 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.setReplicatedLog(log); // Prepare the entries to be sent with AppendEntries - List entries = new ArrayList<>(); - entries.add(newReplicatedLogEntry(2, 2, "two-1")); - entries.add(newReplicatedLogEntry(2, 3, "three")); + List entries = List.of( + newReplicatedLogEntry(2, 2, "two-1"), newReplicatedLogEntry(2, 3, "three")); // Send appendEntries with the same term as was set on the receiver // before the new behavior was created (1 in this case) @@ -705,7 +685,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { RaftActorBehavior newBehavior = follower.handleMessage(leaderActor, appendEntries); - Assert.assertSame(follower, newBehavior); + assertSame(follower, newBehavior); expectAndVerifyAppendEntriesReply(2, false, context.getId(), 1, 2, true); } @@ -725,8 +705,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.setReplicatedLog(log); // Prepare the entries to be sent with AppendEntries - List entries = new ArrayList<>(); - entries.add(newReplicatedLogEntry(1, 4, "four")); + List entries = List.of(newReplicatedLogEntry(1, 4, "four")); AppendEntries appendEntries = new AppendEntries(1, "leader", 3, 1, entries, 4, -1, (short)0); @@ -734,7 +713,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { RaftActorBehavior newBehavior = follower.handleMessage(leaderActor, appendEntries); - Assert.assertSame(follower, newBehavior); + assertSame(follower, newBehavior); expectAndVerifyAppendEntriesReply(1, false, context.getId(), 1, 2); } @@ -755,7 +734,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.setReplicatedLog(log); // Send the last entry again. - List entries = Arrays.asList(newReplicatedLogEntry(1, 1, "one")); + List entries = List.of(newReplicatedLogEntry(1, 1, "one")); follower = createBehavior(context); @@ -768,7 +747,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { // Send the last entry again and also a new one. - entries = Arrays.asList(newReplicatedLogEntry(1, 1, "one"), newReplicatedLogEntry(1, 2, "two")); + entries = List.of(newReplicatedLogEntry(1, 1, "one"), newReplicatedLogEntry(1, 2, "two")); MessageCollectorActor.clearMessages(leaderActor); follower.handleMessage(leaderActor, new AppendEntries(1, "leader", 0, 1, entries, 2, -1, (short)0)); @@ -796,8 +775,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { context.setReplicatedLog(log); // Prepare the entries to be sent with AppendEntries - List entries = new ArrayList<>(); - entries.add(newReplicatedLogEntry(1, 4, "four")); + List entries = List.of(newReplicatedLogEntry(1, 4, "four")); AppendEntries appendEntries = new AppendEntries(1, "leader", 3, 1, entries, 4, 3, (short)0); @@ -805,7 +783,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { RaftActorBehavior newBehavior = follower.handleMessage(leaderActor, appendEntries); - Assert.assertSame(follower, newBehavior); + assertSame(follower, newBehavior); expectAndVerifyAppendEntriesReply(1, true, context.getId(), 1, 4); } @@ -853,7 +831,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { snapshot.getLastAppliedIndex()); assertEquals("getLastTerm", lastInstallSnapshot.getLastIncludedTerm(), snapshot.getLastTerm()); assertEquals("getState type", ByteState.class, snapshot.getState().getClass()); - Assert.assertArrayEquals("getState", bsSnapshot.toByteArray(), ((ByteState)snapshot.getState()).getBytes()); + assertArrayEquals("getState", bsSnapshot.toByteArray(), ((ByteState)snapshot.getState()).getBytes()); assertEquals("getElectionTerm", 1, snapshot.getElectionTerm()); assertEquals("getElectionVotedFor", "leader", snapshot.getElectionVotedFor()); applySnapshot.getCallback().onSuccess(); @@ -907,7 +885,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { // Send an append entry AppendEntries appendEntries = new AppendEntries(1, "leader", 1, 1, - Arrays.asList(newReplicatedLogEntry(2, 1, "3")), 2, -1, (short)1); + List.of(newReplicatedLogEntry(2, 1, "3")), 2, -1, (short)1); follower.handleMessage(leaderActor, appendEntries); @@ -950,7 +928,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { // Send appendEntries with a new term and leader. AppendEntries appendEntries = new AppendEntries(2, "new-leader", 1, 1, - Arrays.asList(newReplicatedLogEntry(2, 2, "3")), 2, -1, (short)1); + List.of(newReplicatedLogEntry(2, 2, "3")), 2, -1, (short)1); follower.handleMessage(leaderActor, appendEntries); @@ -1004,8 +982,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { setLastLogEntry(context, 1, 101, new MockRaftActorContext.MockPayload("")); - List entries = Arrays.asList( - newReplicatedLogEntry(2, 101, "foo")); + List entries = List.of(newReplicatedLogEntry(2, 101, "foo")); // The new commitIndex is 101 AppendEntries appendEntries = new AppendEntries(2, "leader", 101, 1, entries, 102, 101, (short)0); @@ -1081,7 +1058,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { @Test public void testFollowerSchedulesElectionIfNonVoting() { MockRaftActorContext context = createActorContext(); - context.updatePeerIds(new ServerConfigurationPayload(Arrays.asList(new ServerInfo(context.getId(), false)))); + context.updatePeerIds(new ServerConfigurationPayload(List.of(new ServerInfo(context.getId(), false)))); ((DefaultConfigParamsImpl)context.getConfigParams()).setHeartBeatInterval( FiniteDuration.apply(100, TimeUnit.MILLISECONDS)); ((DefaultConfigParamsImpl)context.getConfigParams()).setElectionTimeoutFactor(1); @@ -1132,7 +1109,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { final AtomicReference followerRaftActor = new AtomicReference<>(); RaftActorSnapshotCohort snapshotCohort = newRaftActorSnapshotCohort(followerRaftActor); Builder builder = MockRaftActor.builder().persistent(Optional.of(true)).id(id) - .peerAddresses(ImmutableMap.of("leader", "")).config(config).snapshotCohort(snapshotCohort); + .peerAddresses(Map.of("leader", "")).config(config).snapshotCohort(snapshotCohort); TestActorRef followerActorRef = actorFactory.createTestActor(builder.props() .withDispatcher(Dispatchers.DefaultDispatcherId()), id); followerRaftActor.set(followerActorRef.underlyingActor()); @@ -1142,7 +1119,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { InMemoryJournal.addDeleteMessagesCompleteLatch(id); InMemoryJournal.addWriteMessagesCompleteLatch(id, 1, ApplyJournalEntries.class); - List entries = Arrays.asList( + List entries = List.of( newReplicatedLogEntry(1, 0, "one"), newReplicatedLogEntry(1, 1, "two")); AppendEntries appendEntries = new AppendEntries(1, "leader", -1, -1, entries, 1, -1, (short)0); @@ -1169,7 +1146,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { assertEquals("Snapshot getLastAppliedIndex", 1, snapshot.getLastAppliedIndex()); assertEquals("Snapshot getLastTerm", 1, snapshot.getLastTerm()); assertEquals("Snapshot getLastIndex", 1, snapshot.getLastIndex()); - assertEquals("Snapshot state", ImmutableList.of(entries.get(0).getData(), entries.get(1).getData()), + assertEquals("Snapshot state", List.of(entries.get(0).getData(), entries.get(1).getData()), MockRaftActor.fromState(snapshot.getState())); } @@ -1187,7 +1164,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { final AtomicReference followerRaftActor = new AtomicReference<>(); RaftActorSnapshotCohort snapshotCohort = newRaftActorSnapshotCohort(followerRaftActor); Builder builder = MockRaftActor.builder().persistent(Optional.of(true)).id(id) - .peerAddresses(ImmutableMap.of("leader", "")).config(config).snapshotCohort(snapshotCohort); + .peerAddresses(Map.of("leader", "")).config(config).snapshotCohort(snapshotCohort); TestActorRef followerActorRef = actorFactory.createTestActor(builder.props() .withDispatcher(Dispatchers.DefaultDispatcherId()), id); followerRaftActor.set(followerActorRef.underlyingActor()); @@ -1197,7 +1174,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { InMemoryJournal.addDeleteMessagesCompleteLatch(id); InMemoryJournal.addWriteMessagesCompleteLatch(id, 1, ApplyJournalEntries.class); - List entries = Arrays.asList( + List entries = List.of( newReplicatedLogEntry(1, 0, "one"), newReplicatedLogEntry(1, 1, "two"), newReplicatedLogEntry(1, 2, "three")); @@ -1225,7 +1202,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { assertEquals("Snapshot getLastAppliedIndex", 2, snapshot.getLastAppliedIndex()); assertEquals("Snapshot getLastTerm", 1, snapshot.getLastTerm()); assertEquals("Snapshot getLastIndex", 2, snapshot.getLastIndex()); - assertEquals("Snapshot state", ImmutableList.of(entries.get(0).getData(), entries.get(1).getData(), + assertEquals("Snapshot state", List.of(entries.get(0).getData(), entries.get(1).getData(), entries.get(2).getData()), MockRaftActor.fromState(snapshot.getState())); assertEquals("Journal size", 0, followerRaftActor.get().getReplicatedLog().size()); @@ -1244,7 +1221,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { assertEquals("Last index", 2, followerRaftActor.get().getReplicatedLog().lastIndex()); assertEquals("Last applied index", 2, followerRaftActor.get().getRaftActorContext().getLastApplied()); assertEquals("Commit index", 2, followerRaftActor.get().getRaftActorContext().getCommitIndex()); - assertEquals("State", ImmutableList.of(entries.get(0).getData(), entries.get(1).getData(), + assertEquals("State", List.of(entries.get(0).getData(), entries.get(1).getData(), entries.get(2).getData()), followerRaftActor.get().getState()); } @@ -1262,7 +1239,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { final AtomicReference followerRaftActor = new AtomicReference<>(); RaftActorSnapshotCohort snapshotCohort = newRaftActorSnapshotCohort(followerRaftActor); Builder builder = MockRaftActor.builder().persistent(Optional.of(true)).id(id) - .peerAddresses(ImmutableMap.of("leader", "")).config(config).snapshotCohort(snapshotCohort); + .peerAddresses(Map.of("leader", "")).config(config).snapshotCohort(snapshotCohort); TestActorRef followerActorRef = actorFactory.createTestActor(builder.props() .withDispatcher(Dispatchers.DefaultDispatcherId()), id); followerRaftActor.set(followerActorRef.underlyingActor()); @@ -1272,7 +1249,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { InMemoryJournal.addDeleteMessagesCompleteLatch(id); InMemoryJournal.addWriteMessagesCompleteLatch(id, 1, ApplyJournalEntries.class); - List entries = Arrays.asList( + List entries = List.of( newReplicatedLogEntry(1, 0, "one"), newReplicatedLogEntry(1, 1, "two"), newReplicatedLogEntry(1, 2, "three")); @@ -1302,7 +1279,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { assertEquals("Snapshot getLastAppliedIndex", 0, snapshot.getLastAppliedIndex()); assertEquals("Snapshot getLastTerm", 1, snapshot.getLastTerm()); assertEquals("Snapshot getLastIndex", 2, snapshot.getLastIndex()); - assertEquals("Snapshot state", ImmutableList.of(entries.get(0).getData()), + assertEquals("Snapshot state", List.of(entries.get(0).getData()), MockRaftActor.fromState(snapshot.getState())); } @@ -1318,7 +1295,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { follower = createBehavior(context); follower.handleMessage(leaderActor, - new AppendEntries(1, "leader", -1, -1, Collections.emptyList(), -1, -1, (short)0)); + new AppendEntries(1, "leader", -1, -1, List.of(), -1, -1, (short)0)); AppendEntriesReply reply = MessageCollectorActor.expectFirstMatching(leaderActor, AppendEntriesReply.class); assertTrue(reply.isNeedsLeaderAddress()); @@ -1327,7 +1304,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { PeerAddressResolver mockResolver = mock(PeerAddressResolver.class); ((DefaultConfigParamsImpl)context.getConfigParams()).setPeerAddressResolver(mockResolver); - follower.handleMessage(leaderActor, new AppendEntries(1, "leader", -1, -1, Collections.emptyList(), -1, -1, + follower.handleMessage(leaderActor, new AppendEntries(1, "leader", -1, -1, List.of(), -1, -1, (short)0, RaftVersions.CURRENT_VERSION, leaderActor.path().toString())); reply = MessageCollectorActor.expectFirstMatching(leaderActor, AppendEntriesReply.class); @@ -1370,10 +1347,8 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { int size = chunkSize; if (chunkSize > snapshotLength) { size = snapshotLength; - } else { - if (start + chunkSize > snapshotLength) { - size = snapshotLength - start; - } + } else if (start + chunkSize > snapshotLength) { + size = snapshotLength - start; } byte[] nextChunk = new byte[size]; @@ -1410,12 +1385,7 @@ public class FollowerTest extends AbstractRaftActorBehaviorTest { } private ByteString createSnapshot() { - HashMap followerSnapshot = new HashMap<>(); - followerSnapshot.put("1", "A"); - followerSnapshot.put("2", "B"); - followerSnapshot.put("3", "C"); - - return toByteString(followerSnapshot); + return toByteString(Map.of("1", "A", "2", "B", "3", "C")); } @Override diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java index f847dbce9e..b2a4509540 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/LeaderTest.java @@ -25,14 +25,11 @@ import akka.actor.Terminated; import akka.protobuf.ByteString; import akka.testkit.TestActorRef; import akka.testkit.javadsl.TestKit; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import com.google.common.io.ByteSource; import com.google.common.util.concurrent.Uninterruptibles; import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -403,7 +400,7 @@ public class LeaderTest extends AbstractLeaderTest { final int messageNr) { final AppendEntries commitReq = allMessages.get(2 * messageNr + 1); assertEquals(lastIndex + messageNr + 1, commitReq.getLeaderCommit()); - assertEquals(ImmutableList.of(), commitReq.getEntries()); + assertEquals(List.of(), commitReq.getEntries()); } private static void assertRequestEntry(final long lastIndex, final List allMessages, @@ -587,11 +584,6 @@ public class LeaderTest extends AbstractLeaderTest { final MockRaftActorContext actorContext = createActorContextWithFollower(); - Map leadersSnapshot = new HashMap<>(); - leadersSnapshot.put("1", "A"); - leadersSnapshot.put("2", "B"); - leadersSnapshot.put("3", "C"); - //clears leaders log actorContext.getReplicatedLog().removeFrom(0); @@ -614,9 +606,9 @@ public class LeaderTest extends AbstractLeaderTest { //update follower timestamp leader.markFollowerActive(FOLLOWER_ID); - ByteString bs = toByteString(leadersSnapshot); + ByteString bs = toByteString(Map.of("1", "A", "2", "B", "3", "C")); leader.setSnapshotHolder(new SnapshotHolder(Snapshot.create(ByteState.of(bs.toByteArray()), - Collections.emptyList(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, + List.of(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, -1, null, null), ByteSource.wrap(bs.toByteArray()))); LeaderInstallSnapshotState fts = new LeaderInstallSnapshotState( actorContext.getConfigParams().getSnapshotChunkSize(), leader.logName()); @@ -873,7 +865,7 @@ public class LeaderTest extends AbstractLeaderTest { leader.getFollower(FOLLOWER_ID).setNextIndex(0); byte[] bytes = toByteString(leadersSnapshot).toByteArray(); - Snapshot snapshot = Snapshot.create(ByteState.of(bytes), Collections.emptyList(), + Snapshot snapshot = Snapshot.create(ByteState.of(bytes), List.of(), lastAppliedIndex, snapshotTerm, lastAppliedIndex, snapshotTerm, -1, null, null); RaftActorBehavior raftBehavior = leader.handleMessage(leaderActor, @@ -925,7 +917,7 @@ public class LeaderTest extends AbstractLeaderTest { leader.getFollower(FOLLOWER_ID).setNextIndex(-1); byte[] bytes = toByteString(leadersSnapshot).toByteArray(); - Snapshot snapshot = Snapshot.create(ByteState.of(bytes), Collections.emptyList(), + Snapshot snapshot = Snapshot.create(ByteState.of(bytes), List.of(), lastAppliedIndex, snapshotTerm, lastAppliedIndex, snapshotTerm, -1, null, null); RaftActorBehavior raftBehavior = leader.handleMessage(leaderActor, @@ -980,7 +972,7 @@ public class LeaderTest extends AbstractLeaderTest { ByteString bs = toByteString(leadersSnapshot); leader.setSnapshotHolder(new SnapshotHolder(Snapshot.create(ByteState.of(bs.toByteArray()), - Collections.emptyList(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, + List.of(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, -1, null, null), ByteSource.wrap(bs.toByteArray()))); LeaderInstallSnapshotState fts = new LeaderInstallSnapshotState( actorContext.getConfigParams().getSnapshotChunkSize(), leader.logName()); @@ -1049,8 +1041,7 @@ public class LeaderTest extends AbstractLeaderTest { ByteString bs = toByteString(leadersSnapshot); Snapshot snapshot = Snapshot.create(ByteState.of(bs.toByteArray()), - Collections.emptyList(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, - -1, null, null); + List.of(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, -1, null, null); leader.handleMessage(leaderActor, new SendInstallSnapshot(snapshot, ByteSource.wrap(bs.toByteArray()))); @@ -1123,8 +1114,7 @@ public class LeaderTest extends AbstractLeaderTest { ByteString bs = toByteString(leadersSnapshot); Snapshot snapshot = Snapshot.create(ByteState.of(bs.toByteArray()), - Collections.emptyList(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, - -1, null, null); + List.of(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, -1, null, null); Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS); leader.handleMessage(leaderActor, new SendInstallSnapshot(snapshot, ByteSource.wrap(bs.toByteArray()))); @@ -1188,8 +1178,7 @@ public class LeaderTest extends AbstractLeaderTest { ByteString bs = toByteString(leadersSnapshot); Snapshot snapshot = Snapshot.create(ByteState.of(bs.toByteArray()), - Collections.emptyList(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, - -1, null, null); + List.of(), commitIndex, snapshotTerm, commitIndex, snapshotTerm, -1, null, null); leader.handleMessage(leaderActor, new SendInstallSnapshot(snapshot, ByteSource.wrap(bs.toByteArray()))); @@ -1282,8 +1271,7 @@ public class LeaderTest extends AbstractLeaderTest { private MockRaftActorContext createActorContextWithFollower() { MockRaftActorContext actorContext = createActorContext(); - actorContext.setPeerAddresses(ImmutableMap.builder().put(FOLLOWER_ID, - followerActor.path().toString()).build()); + actorContext.setPeerAddresses(Map.of(FOLLOWER_ID, followerActor.path().toString())); return actorContext; } @@ -1292,7 +1280,7 @@ public class LeaderTest extends AbstractLeaderTest { DefaultConfigParamsImpl followerConfig = new DefaultConfigParamsImpl(); followerConfig.setElectionTimeoutFactor(10000); followerActorContext.setConfigParams(followerConfig); - followerActorContext.setPeerAddresses(ImmutableMap.of(LEADER_ID, leaderActor.path().toString())); + followerActorContext.setPeerAddresses(Map.of(LEADER_ID, leaderActor.path().toString())); return followerActorContext; } @@ -1358,7 +1346,7 @@ public class LeaderTest extends AbstractLeaderTest { final MockRaftActorContext leaderActorContext = createActorContext(); MockRaftActorContext followerActorContext = createActorContext(FOLLOWER_ID, followerActor); - followerActorContext.setPeerAddresses(ImmutableMap.of(LEADER_ID, leaderActor.path().toString())); + followerActorContext.setPeerAddresses(Map.of(LEADER_ID, leaderActor.path().toString())); Follower follower = new Follower(followerActorContext); followerActor.underlyingActor().setBehavior(follower); @@ -2269,7 +2257,7 @@ public class LeaderTest extends AbstractLeaderTest { logStart("testReplicationWithPayloadSizeThatExceedsThreshold"); final int serializedSize = SerializationUtils.serialize(new AppendEntries(1, LEADER_ID, -1, -1, - Arrays.asList(new SimpleReplicatedLogEntry(0, 1, + List.of(new SimpleReplicatedLogEntry(0, 1, new MockRaftActorContext.MockPayload("large"))), 0, -1, (short)0)).length; final MockRaftActorContext.MockPayload largePayload = new MockRaftActorContext.MockPayload("large", serializedSize); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/SnapshotTrackerTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/SnapshotTrackerTest.java index d8d2b4045b..2c83f67582 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/SnapshotTrackerTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/behaviors/SnapshotTrackerTest.java @@ -16,10 +16,8 @@ import static org.mockito.Mockito.verify; import akka.protobuf.ByteString; import com.google.common.io.ByteSource; import java.io.IOException; -import java.io.Serializable; import java.util.Arrays; import java.util.HashMap; -import java.util.Map; import java.util.OptionalInt; import org.apache.commons.lang3.SerializationUtils; import org.junit.Before; @@ -37,10 +35,11 @@ import org.slf4j.LoggerFactory; public class SnapshotTrackerTest { private static final Logger LOG = LoggerFactory.getLogger(SnapshotTrackerTest.class); + private final HashMap data = new HashMap<>(); + @Mock private RaftActorContext mockContext; private FileBackedOutputStream fbos; - private Map data; private ByteString byteString; private byte[] chunk1; private byte[] chunk2; @@ -48,12 +47,11 @@ public class SnapshotTrackerTest { @Before public void setup() { - data = new HashMap<>(); data.put("key1", "value1"); data.put("key2", "value2"); data.put("key3", "value3"); - byteString = ByteString.copyFrom(SerializationUtils.serialize((Serializable) data)); + byteString = ByteString.copyFrom(SerializationUtils.serialize(data)); chunk1 = getNextChunk(byteString, 0, 10); chunk2 = getNextChunk(byteString, 10, 10); chunk3 = getNextChunk(byteString, 20, byteString.size()); @@ -123,10 +121,8 @@ public class SnapshotTrackerTest { int start = offset; if (size > snapshotLength) { size = snapshotLength; - } else { - if (start + size > snapshotLength) { - size = snapshotLength - start; - } + } else if (start + size > snapshotLength) { + size = snapshotLength - start; } byte[] nextChunk = new byte[size]; -- 2.36.6