From: Robert Varga Date: Tue, 9 Mar 2021 04:49:48 +0000 (+0100) Subject: Migrate sal-akka-raft tests X-Git-Tag: v3.0.8~9 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=dcc9827eab4f95b8e35820e8355066ff105d2720 Migrate sal-akka-raft tests Do not use MockitoAnnotations.initMocks() and modernize collection handling. Change-Id: I2770ae6ff68a60cc4800e718fa8e42acbbfbff8f Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ElectionTermImplTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ElectionTermImplTest.java index 275dadf053..ef54be1759 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ElectionTermImplTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/ElectionTermImplTest.java @@ -11,11 +11,11 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.verify; import akka.japi.Procedure; -import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.raft.persisted.UpdateElectionTerm; import org.slf4j.Logger; @@ -26,19 +26,15 @@ import org.slf4j.LoggerFactory; * * @author Thomas Pantelis */ +@RunWith(MockitoJUnitRunner.StrictStubs.class) public class ElectionTermImplTest { private static final Logger LOG = LoggerFactory.getLogger(RaftActorRecoverySupportTest.class); @Mock private DataPersistenceProvider mockPersistence; - @Before - public void setup() { - MockitoAnnotations.initMocks(this); - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test + @SuppressWarnings({ "rawtypes", "unchecked" }) public void testUpdateAndPersist() throws Exception { ElectionTermImpl impl = new ElectionTermImpl(mockPersistence, "test", LOG); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProviderTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProviderTest.java index 708f371bcf..7ef3c3237b 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProviderTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProviderTest.java @@ -15,9 +15,10 @@ import static org.mockito.Mockito.verify; import akka.japi.Procedure; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.PersistentDataProvider; import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Payload; @@ -28,6 +29,7 @@ import org.opendaylight.controller.cluster.raft.protobuff.client.messages.Persis * * @author Thomas Pantelis */ +@RunWith(MockitoJUnitRunner.StrictStubs.class) public class RaftActorDelegatingPersistentDataProviderTest { private static final Payload PERSISTENT_PAYLOAD = new TestPersistentPayload(); @@ -55,7 +57,6 @@ public class RaftActorDelegatingPersistentDataProviderTest { @Before public void setup() { - MockitoAnnotations.initMocks(this); doReturn(PERSISTENT_PAYLOAD).when(mockPersistentLogEntry).getData(); doReturn(NON_PERSISTENT_PAYLOAD).when(mockNonPersistentLogEntry).getData(); provider = new RaftActorDelegatingPersistentDataProvider(mockDelegateProvider, mockPersistentProvider); diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupportTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupportTest.java index 0d29c31ee4..76571137c1 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupportTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorRecoverySupportTest.java @@ -12,7 +12,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -26,12 +25,12 @@ import akka.actor.Props; import akka.persistence.RecoveryCompleted; import akka.persistence.SnapshotMetadata; import akka.persistence.SnapshotOffer; -import com.google.common.collect.Sets; import com.google.common.util.concurrent.MoreExecutors; import java.io.OutputStream; -import java.util.Arrays; -import java.util.Collections; +import java.util.List; +import java.util.Map; import java.util.Optional; +import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -42,11 +41,12 @@ import java.util.function.Consumer; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.ArgumentMatchers; import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.PersistentDataProvider; import org.opendaylight.controller.cluster.raft.MockRaftActor.MockSnapshotState; @@ -68,8 +68,8 @@ import org.slf4j.LoggerFactory; * * @author Thomas Pantelis */ +@RunWith(MockitoJUnitRunner.StrictStubs.class) public class RaftActorRecoverySupportTest { - private static final Logger LOG = LoggerFactory.getLogger(RaftActorRecoverySupportTest.class); @Mock @@ -93,12 +93,11 @@ public class RaftActorRecoverySupportTest { @Before public void setup() { - MockitoAnnotations.initMocks(this); mockActorSystem = ActorSystem.create(); mockActorRef = mockActorSystem.actorOf(Props.create(DoNothingActor.class)); context = new RaftActorContextImpl(mockActorRef, null, localId, new ElectionTermImpl(mockPersistentProvider, "test", LOG), -1, -1, - Collections.emptyMap(), configParams, mockPersistence, applyState -> { + Map.of(), configParams, mockPersistence, applyState -> { }, LOG, MoreExecutors.directExecutor()); support = new RaftActorRecoverySupport(context, mockCohort); @@ -229,9 +228,9 @@ public class RaftActorRecoverySupportTest { long electionTerm = 2; String electionVotedFor = "member-2"; - MockSnapshotState snapshotState = new MockSnapshotState(Arrays.asList(new MockPayload("1"))); + MockSnapshotState snapshotState = new MockSnapshotState(List.of(new MockPayload("1"))); Snapshot snapshot = Snapshot.create(snapshotState, - Arrays.asList(unAppliedEntry1, unAppliedEntry2), lastIndexDuringSnapshotCapture, 1, + List.of(unAppliedEntry1, unAppliedEntry2), lastIndexDuringSnapshotCapture, 1, lastAppliedDuringSnapshotCapture, 1, electionTerm, electionVotedFor, null); SnapshotMetadata metadata = new SnapshotMetadata("test", 6, 12345); @@ -310,12 +309,11 @@ public class RaftActorRecoverySupportTest { @Test public void testDataRecoveredWithPersistenceDisabled() { - doNothing().when(mockCohort).applyRecoverySnapshot(any()); doReturn(false).when(mockPersistence).isRecoveryApplicable(); doReturn(10L).when(mockPersistentProvider).getLastSequenceNumber(); - Snapshot snapshot = Snapshot.create(new MockSnapshotState(Arrays.asList(new MockPayload("1"))), - Collections.emptyList(), 3, 1, 3, 1, -1, null, null); + Snapshot snapshot = Snapshot.create(new MockSnapshotState(List.of(new MockPayload("1"))), + List.of(), 3, 1, 3, 1, -1, null, null); SnapshotOffer snapshotOffer = new SnapshotOffer(new SnapshotMetadata("test", 6, 12345), snapshot); sendMessageToSupport(snapshotOffer); @@ -355,8 +353,6 @@ public class RaftActorRecoverySupportTest { @Test public void testNoDataRecoveredWithPersistenceDisabled() { - doReturn(false).when(mockPersistence).isRecoveryApplicable(); - sendMessageToSupport(new UpdateElectionTerm(5, "member2")); assertEquals("Current term", 5, context.getTermInformation().getCurrentTerm()); @@ -378,7 +374,7 @@ public class RaftActorRecoverySupportTest { context.addToPeers(follower2, null, VotingState.VOTING); //add new Server - ServerConfigurationPayload obj = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload obj = new ServerConfigurationPayload(List.of( new ServerInfo(localId, true), new ServerInfo(follower1, true), new ServerInfo(follower2, false), @@ -388,8 +384,7 @@ public class RaftActorRecoverySupportTest { //verify new peers assertTrue("Dynamic server configuration", context.isDynamicServerConfigurationInUse()); - assertEquals("New peer Ids", Sets.newHashSet(follower1, follower2, follower3), - Sets.newHashSet(context.getPeerIds())); + assertEquals("New peer Ids", Set.of(follower1, follower2, follower3), Set.copyOf(context.getPeerIds())); assertEquals("follower1 isVoting", true, context.getPeerInfo(follower1).isVoting()); assertEquals("follower2 isVoting", false, context.getPeerInfo(follower2).isVoting()); assertEquals("follower3 isVoting", true, context.getPeerInfo(follower3).isVoting()); @@ -400,7 +395,7 @@ public class RaftActorRecoverySupportTest { verify(mockCohort, never()).appendRecoveredLogEntry(any(Payload.class)); //remove existing follower1 - obj = new ServerConfigurationPayload(Arrays.asList( + obj = new ServerConfigurationPayload(List.of( new ServerInfo(localId, true), new ServerInfo("follower2", true), new ServerInfo("follower3", true))); @@ -409,7 +404,7 @@ public class RaftActorRecoverySupportTest { //verify new peers assertTrue("Dynamic server configuration", context.isDynamicServerConfigurationInUse()); - assertEquals("New peer Ids", Sets.newHashSet(follower2, follower3), Sets.newHashSet(context.getPeerIds())); + assertEquals("New peer Ids", Set.of(follower2, follower3), Set.copyOf(context.getPeerIds())); } @Test @@ -417,26 +412,26 @@ public class RaftActorRecoverySupportTest { doReturn(false).when(mockPersistence).isRecoveryApplicable(); String follower = "follower"; - ServerConfigurationPayload obj = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload obj = new ServerConfigurationPayload(List.of( new ServerInfo(localId, true), new ServerInfo(follower, true))); sendMessageToSupport(new SimpleReplicatedLogEntry(0, 1, obj)); //verify new peers - assertEquals("New peer Ids", Sets.newHashSet(follower), Sets.newHashSet(context.getPeerIds())); + assertEquals("New peer Ids", Set.of(follower), Set.copyOf(context.getPeerIds())); } @Test public void testOnSnapshotOfferWithServerConfiguration() { long electionTerm = 2; String electionVotedFor = "member-2"; - ServerConfigurationPayload serverPayload = new ServerConfigurationPayload(Arrays.asList( + ServerConfigurationPayload serverPayload = new ServerConfigurationPayload(List.of( new ServerInfo(localId, true), new ServerInfo("follower1", true), new ServerInfo("follower2", true))); - MockSnapshotState snapshotState = new MockSnapshotState(Arrays.asList(new MockPayload("1"))); - Snapshot snapshot = Snapshot.create(snapshotState, Collections.emptyList(), + MockSnapshotState snapshotState = new MockSnapshotState(List.of(new MockPayload("1"))); + Snapshot snapshot = Snapshot.create(snapshotState, List.of(), -1, -1, -1, -1, electionTerm, electionVotedFor, serverPayload); SnapshotMetadata metadata = new SnapshotMetadata("test", 6, 12345); @@ -448,7 +443,6 @@ public class RaftActorRecoverySupportTest { assertEquals("Election term", electionTerm, context.getTermInformation().getCurrentTerm()); assertEquals("Election votedFor", electionVotedFor, context.getTermInformation().getVotedFor()); assertTrue("Dynamic server configuration", context.isDynamicServerConfigurationInUse()); - assertEquals("Peer List", Sets.newHashSet("follower1", "follower2"), - Sets.newHashSet(context.getPeerIds())); + assertEquals("Peer List", Set.of("follower1", "follower2"), Set.copyOf(context.getPeerIds())); } } \ No newline at end of file diff --git a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorSnapshotMessageSupportTest.java b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorSnapshotMessageSupportTest.java index fe1480d0cf..87717ccfbe 100644 --- a/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorSnapshotMessageSupportTest.java +++ b/opendaylight/md-sal/sal-akka-raft/src/test/java/org/opendaylight/controller/cluster/raft/RaftActorSnapshotMessageSupportTest.java @@ -10,7 +10,6 @@ package org.opendaylight.controller.cluster.raft; import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -20,12 +19,14 @@ import akka.persistence.SaveSnapshotSuccess; import akka.persistence.SnapshotMetadata; import com.google.common.util.concurrent.MoreExecutors; import java.io.OutputStream; -import java.util.Collections; +import java.util.List; +import java.util.Map; import java.util.Optional; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.controller.cluster.DataPersistenceProvider; import org.opendaylight.controller.cluster.raft.base.messages.ApplySnapshot; import org.opendaylight.controller.cluster.raft.base.messages.CaptureSnapshotReply; @@ -40,8 +41,8 @@ import org.slf4j.LoggerFactory; * * @author Thomas Pantelis */ +@RunWith(MockitoJUnitRunner.StrictStubs.class) public class RaftActorSnapshotMessageSupportTest { - private static final Logger LOG = LoggerFactory.getLogger(RaftActorRecoverySupportTest.class); @Mock @@ -66,10 +67,8 @@ public class RaftActorSnapshotMessageSupportTest { @Before public void setup() { - MockitoAnnotations.initMocks(this); - context = new RaftActorContextImpl(mockRaftActorRef, 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()) { @Override public SnapshotManager getSnapshotManager() { @@ -79,16 +78,14 @@ public class RaftActorSnapshotMessageSupportTest { support = new RaftActorSnapshotMessageSupport(context, mockCohort); - doReturn(true).when(mockPersistence).isRecoveryApplicable(); - context.setReplicatedLog(ReplicatedLogImpl.newInstance(context)); } - private void sendMessageToSupport(Object message) { + private void sendMessageToSupport(final Object message) { sendMessageToSupport(message, true); } - private void sendMessageToSupport(Object message, boolean expHandled) { + private void sendMessageToSupport(final Object message, final boolean expHandled) { boolean handled = support.handleSnapshotMessage(message, mockRaftActorRef); assertEquals("complete", expHandled, handled); } @@ -100,7 +97,7 @@ public class RaftActorSnapshotMessageSupportTest { long lastIndexDuringSnapshotCapture = 2; byte[] snapshotBytes = {1,2,3,4,5}; - Snapshot snapshot = Snapshot.create(ByteState.of(snapshotBytes), Collections.emptyList(), + Snapshot snapshot = Snapshot.create(ByteState.of(snapshotBytes), List.of(), lastIndexDuringSnapshotCapture, 1, lastAppliedDuringSnapshotCapture, 1, -1, null, null); ApplySnapshot applySnapshot = new ApplySnapshot(snapshot); 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 50860630d4..d8d2b4045b 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 @@ -24,14 +24,16 @@ import java.util.OptionalInt; import org.apache.commons.lang3.SerializationUtils; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.controller.cluster.io.FileBackedOutputStream; import org.opendaylight.controller.cluster.io.FileBackedOutputStreamFactory; import org.opendaylight.controller.cluster.raft.RaftActorContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@RunWith(MockitoJUnitRunner.StrictStubs.class) public class SnapshotTrackerTest { private static final Logger LOG = LoggerFactory.getLogger(SnapshotTrackerTest.class); @@ -46,8 +48,6 @@ public class SnapshotTrackerTest { @Before public void setup() { - MockitoAnnotations.initMocks(this); - data = new HashMap<>(); data.put("key1", "value1"); data.put("key2", "value2");