import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.anyObject;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import org.junit.After;
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.io.FileBackedOutputStreamFactory;
import org.opendaylight.controller.cluster.raft.SnapshotManager.LastAppliedTermInformationReader;
import org.opendaylight.controller.cluster.raft.utils.MessageCollectorActor;
import org.slf4j.LoggerFactory;
+@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class SnapshotManagerTest extends AbstractActorTest {
@Mock
@Before
public void setUp() {
- MockitoAnnotations.initMocks(this);
-
doReturn(false).when(mockRaftActorContext).hasFollowers();
doReturn(mockConfigParams).when(mockRaftActorContext).getConfigParams();
doReturn(10L).when(mockConfigParams).getSnapshotBatchCount();
CaptureSnapshot captureSnapshot = snapshotManager.getCaptureSnapshot();
// LastIndex and LastTerm are picked up from the lastLogEntry
- assertEquals(-1L, captureSnapshot.getLastIndex());
- assertEquals(-1L, captureSnapshot.getLastTerm());
+ assertEquals(0, captureSnapshot.getLastIndex());
+ assertEquals(0, captureSnapshot.getLastTerm());
// Since the actor does not have any followers (no peer addresses) lastApplied will be from lastLogEntry
- assertEquals(-1L, captureSnapshot.getLastAppliedIndex());
- assertEquals(-1L, captureSnapshot.getLastAppliedTerm());
+ assertEquals(0, captureSnapshot.getLastAppliedIndex());
+ assertEquals(0, captureSnapshot.getLastAppliedTerm());
//
assertEquals(-1L, captureSnapshot.getReplicatedToAllIndex());
@Test
public void testCaptureWithCreateProcedureError() {
- doThrow(new RuntimeException("mock")).when(mockProcedure).accept(anyObject());
+ doThrow(new RuntimeException("mock")).when(mockProcedure).accept(any());
boolean capture = snapshotManager.capture(new SimpleReplicatedLogEntry(9, 1,
new MockRaftActorContext.MockPayload()), 9);
assertEquals(false, snapshotManager.isCapturing());
- verify(mockProcedure).accept(anyObject());
+ verify(mockProcedure).accept(any());
}
@SuppressWarnings("unchecked")
assertTrue(capture);
- verify(mockProcedure).accept(anyObject());
+ verify(mockProcedure).accept(any());
reset(mockProcedure);
assertFalse(capture);
- verify(mockProcedure, never()).accept(anyObject());
+ verify(mockProcedure, never()).accept(any());
}
@Test
doReturn(45L).when(mockReplicatedLog).getSnapshotIndex();
doReturn(6L).when(mockReplicatedLog).getSnapshotTerm();
ReplicatedLogEntry replicatedLogEntry = mock(ReplicatedLogEntry.class);
+ doReturn(null).when(mockReplicatedLog).get(0);
doReturn(replicatedLogEntry).when(mockReplicatedLog).get(9);
doReturn(6L).when(replicatedLogEntry).getTerm();
doReturn(9L).when(replicatedLogEntry).getIndex();
long replicatedToAllIndex = 1;
ReplicatedLogEntry replicatedLogEntry = mock(ReplicatedLogEntry.class);
+ doReturn(null).when(mockReplicatedLog).get(0);
doReturn(replicatedLogEntry).when(mockReplicatedLog).get(replicatedToAllIndex);
doReturn(6L).when(replicatedLogEntry).getTerm();
doReturn(replicatedToAllIndex).when(replicatedLogEntry).getIndex();
@Test
public void testPersistSendInstallSnapshot() throws Exception {
doReturn(Integer.MAX_VALUE).when(mockReplicatedLog).dataSize();
- doNothing().when(mockProcedure).accept(anyObject());
+ doNothing().when(mockProcedure).accept(any());
// when replicatedToAllIndex = -1
boolean capture = snapshotManager.captureToInstall(new SimpleReplicatedLogEntry(9, 6,
verify(mockDataPersistenceProvider).deleteSnapshots(criteriaCaptor.capture());
- assertEquals(100L, criteriaCaptor.getValue().maxSequenceNr());
+ assertEquals(Long.MAX_VALUE, criteriaCaptor.getValue().maxSequenceNr());
assertEquals(1233L, criteriaCaptor.getValue().maxTimestamp());
MessageCollectorActor.expectFirstMatching(actorRef, SnapshotComplete.class);
assertEquals("return index", 10L, retIndex);
verify(mockReplicatedLog).snapshotPreCommit(10, 5);
- verify(mockReplicatedLog).snapshotCommit();
+ verify(mockReplicatedLog).snapshotCommit(false);
verify(mockRaftActorBehavior, never()).setReplicatedToAllIndex(anyLong());
}
public void testTrimLogWhenLastAppliedNotSet() {
doReturn(-1L).when(mockRaftActorContext).getLastApplied();
- ReplicatedLogEntry replicatedLogEntry = mock(ReplicatedLogEntry.class);
- doReturn(true).when(mockReplicatedLog).isPresent(10);
- doReturn(replicatedLogEntry).when(mockReplicatedLog).get(10);
- doReturn(5L).when(replicatedLogEntry).getTerm();
-
long retIndex = snapshotManager.trimLog(10);
assertEquals("return index", -1L, retIndex);
verify(mockReplicatedLog, never()).snapshotPreCommit(anyLong(), anyLong());
- verify(mockReplicatedLog, never()).snapshotCommit();
+ verify(mockReplicatedLog, never()).snapshotCommit(false);
verify(mockRaftActorBehavior, never()).setReplicatedToAllIndex(anyLong());
}
public void testTrimLogWhenLastAppliedZero() {
doReturn(0L).when(mockRaftActorContext).getLastApplied();
- ReplicatedLogEntry replicatedLogEntry = mock(ReplicatedLogEntry.class);
- doReturn(true).when(mockReplicatedLog).isPresent(10);
- doReturn(replicatedLogEntry).when(mockReplicatedLog).get(10);
- doReturn(5L).when(replicatedLogEntry).getTerm();
-
long retIndex = snapshotManager.trimLog(10);
assertEquals("return index", -1L, retIndex);
verify(mockReplicatedLog, never()).snapshotPreCommit(anyLong(), anyLong());
- verify(mockReplicatedLog, never()).snapshotCommit();
+ verify(mockReplicatedLog, never()).snapshotCommit(false);
verify(mockRaftActorBehavior, never()).setReplicatedToAllIndex(anyLong());
}
assertEquals("return index", -1L, retIndex);
verify(mockReplicatedLog, never()).snapshotPreCommit(anyLong(), anyLong());
- verify(mockReplicatedLog, never()).snapshotCommit();
+ verify(mockReplicatedLog, never()).snapshotCommit(false);
// Trim index is greater than replicatedToAllIndex so should update it.
verify(mockRaftActorBehavior).setReplicatedToAllIndex(10L);
assertEquals(true, snapshotManager.isCapturing());
- ReplicatedLogEntry replicatedLogEntry = mock(ReplicatedLogEntry.class);
- doReturn(20L).when(mockRaftActorContext).getLastApplied();
- doReturn(true).when(mockReplicatedLog).isPresent(10);
- doReturn(replicatedLogEntry).when(mockReplicatedLog).get(10);
- doReturn(5L).when(replicatedLogEntry).getTerm();
-
snapshotManager.trimLog(10);
verify(mockReplicatedLog, never()).snapshotPreCommit(anyLong(), anyLong());
- verify(mockReplicatedLog, never()).snapshotCommit();
-
+ verify(mockReplicatedLog, never()).snapshotCommit(false);
}
@Test
assertEquals(true, snapshotManager.isCapturing());
- ReplicatedLogEntry replicatedLogEntry = mock(ReplicatedLogEntry.class);
- doReturn(20L).when(mockRaftActorContext).getLastApplied();
- doReturn(true).when(mockReplicatedLog).isPresent(10);
- doReturn(replicatedLogEntry).when(mockReplicatedLog).get(10);
- doReturn(5L).when(replicatedLogEntry).getTerm();
-
snapshotManager.trimLog(10);
verify(mockReplicatedLog, never()).snapshotPreCommit(10, 5);
verify(mockReplicatedLog, never()).snapshotCommit();
-
}
@Test