X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FSnapshotManagerTest.java;h=d94eb6b041a52631c5ca02684e0c24bc32b170e6;hb=55e018bfad0c70b773641142d6fbf009cd67fda4;hp=8ab762f78612a5b540d93512128c4e820b0bbc64;hpb=e3a22ae5edead2319553bb4dfce59e359386d535;p=controller.git 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 8ab762f786..d94eb6b041 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 @@ -7,6 +7,7 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyLong; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; @@ -19,7 +20,6 @@ import akka.testkit.TestActorRef; import com.google.common.collect.ImmutableMap; import java.util.Arrays; import java.util.HashMap; -import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -82,6 +82,7 @@ public class SnapshotManagerTest extends AbstractActorTest { actorRef = factory.createTestActor(MessageCollectorActor.props(), factory.generateActorId("test-")); doReturn(actorRef).when(mockRaftActorContext).getActor(); + snapshotManager.setCreateSnapshotCallable(mockProcedure); } @After @@ -95,7 +96,7 @@ public class SnapshotManagerTest extends AbstractActorTest { } @Test - public void testCaptureToInstall(){ + public void testCaptureToInstall() throws Exception { // Force capturing toInstall = true snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(1, 0, @@ -103,7 +104,9 @@ public class SnapshotManagerTest extends AbstractActorTest { assertEquals(true, snapshotManager.isCapturing()); - CaptureSnapshot captureSnapshot = MessageCollectorActor.expectFirstMatching(actorRef, CaptureSnapshot.class); + verify(mockProcedure).apply(null); + + CaptureSnapshot captureSnapshot = snapshotManager.getCaptureSnapshot(); // LastIndex and LastTerm are picked up from the lastLogEntry assertEquals(0L, captureSnapshot.getLastIndex()); @@ -120,7 +123,7 @@ public class SnapshotManagerTest extends AbstractActorTest { } @Test - public void testCapture(){ + public void testCapture() throws Exception { boolean capture = snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(1,9, new MockRaftActorContext.MockPayload()), 9); @@ -128,7 +131,10 @@ public class SnapshotManagerTest extends AbstractActorTest { assertEquals(true, snapshotManager.isCapturing()); - CaptureSnapshot captureSnapshot = MessageCollectorActor.expectFirstMatching(actorRef, CaptureSnapshot.class); + verify(mockProcedure).apply(null); + + CaptureSnapshot captureSnapshot = snapshotManager.getCaptureSnapshot(); + // LastIndex and LastTerm are picked up from the lastLogEntry assertEquals(9L, captureSnapshot.getLastIndex()); assertEquals(1L, captureSnapshot.getLastTerm()); @@ -145,6 +151,20 @@ public class SnapshotManagerTest extends AbstractActorTest { } + @Test + public void testCaptureWithCreateProcedureError () throws Exception { + doThrow(new Exception("mock")).when(mockProcedure).apply(null); + + boolean capture = snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(1,9, + new MockRaftActorContext.MockPayload()), 9); + + assertFalse(capture); + + assertEquals(false, snapshotManager.isCapturing()); + + verify(mockProcedure).apply(null); + } + @Test public void testIllegalCapture() throws Exception { boolean capture = snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(1,9, @@ -152,9 +172,9 @@ public class SnapshotManagerTest extends AbstractActorTest { assertTrue(capture); - List allMatching = MessageCollectorActor.getAllMatching(actorRef, CaptureSnapshot.class); + verify(mockProcedure).apply(null); - assertEquals(1, allMatching.size()); + reset(mockProcedure); // This will not cause snapshot capture to start again capture = snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(1,9, @@ -162,9 +182,7 @@ public class SnapshotManagerTest extends AbstractActorTest { assertFalse(capture); - allMatching = MessageCollectorActor.getAllMatching(actorRef, CaptureSnapshot.class); - - assertEquals(1, allMatching.size()); + verify(mockProcedure, never()).apply(null); } @Test @@ -188,11 +206,8 @@ public class SnapshotManagerTest extends AbstractActorTest { // when replicatedToAllIndex = -1 snapshotManager.capture(lastLogEntry, -1); - snapshotManager.create(mockProcedure); - byte[] bytes = new byte[] {1,2,3,4,5,6,7,8,9,10}; - snapshotManager.persist(mockDataPersistenceProvider, bytes, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(bytes, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); ArgumentCaptor snapshotArgumentCaptor = ArgumentCaptor.forClass(Snapshot.class); verify(mockDataPersistenceProvider).saveSnapshot(snapshotArgumentCaptor.capture()); @@ -209,60 +224,6 @@ public class SnapshotManagerTest extends AbstractActorTest { verify(mockReplicatedLog).snapshotPreCommit(7L, 1L); } - - @Test - public void testCreate() throws Exception { - // when replicatedToAllIndex = -1 - snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(6,9, - new MockRaftActorContext.MockPayload()), -1); - - snapshotManager.create(mockProcedure); - - verify(mockProcedure).apply(null); - - assertEquals("isCapturing", true, snapshotManager.isCapturing()); - } - - @Test - public void testCallingCreateMultipleTimesCausesNoHarm() throws Exception { - // when replicatedToAllIndex = -1 - snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(6,9, - new MockRaftActorContext.MockPayload()), -1); - - snapshotManager.create(mockProcedure); - - snapshotManager.create(mockProcedure); - - verify(mockProcedure, times(1)).apply(null); - } - - @Test - public void testCallingCreateBeforeCapture() throws Exception { - snapshotManager.create(mockProcedure); - - verify(mockProcedure, times(0)).apply(null); - } - - @Test - public void testCallingCreateAfterPersist() throws Exception { - // when replicatedToAllIndex = -1 - snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(6,9, - new MockRaftActorContext.MockPayload()), -1); - - snapshotManager.create(mockProcedure); - - verify(mockProcedure, times(1)).apply(null); - - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); - - reset(mockProcedure); - - snapshotManager.create(mockProcedure); - - verify(mockProcedure, never()).apply(null); - } - @Test public void testPersistWhenReplicatedToAllIndexNotMinus(){ doReturn(45L).when(mockReplicatedLog).getSnapshotIndex(); @@ -276,11 +237,8 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(6,9, new MockRaftActorContext.MockPayload()), 9); - snapshotManager.create(mockProcedure); - byte[] bytes = new byte[] {1,2,3,4,5,6,7,8,9,10}; - snapshotManager.persist(mockDataPersistenceProvider, bytes, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(bytes, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); ArgumentCaptor snapshotArgumentCaptor = ArgumentCaptor.forClass(Snapshot.class); verify(mockDataPersistenceProvider).saveSnapshot(snapshotArgumentCaptor.capture()); @@ -308,10 +266,7 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(6,9, new MockRaftActorContext.MockPayload()), -1); - snapshotManager.create(mockProcedure); - - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); verify(mockDataPersistenceProvider).saveSnapshot(any(Snapshot.class)); @@ -328,12 +283,9 @@ public class SnapshotManagerTest extends AbstractActorTest { assertTrue(capture); - snapshotManager.create(mockProcedure); - byte[] bytes = new byte[] {1,2,3,4,5,6,7,8,9,10}; - snapshotManager.persist(mockDataPersistenceProvider, bytes, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(bytes, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); verify(mockDataPersistenceProvider).saveSnapshot(any(Snapshot.class)); @@ -351,8 +303,7 @@ public class SnapshotManagerTest extends AbstractActorTest { @Test public void testCallingPersistWithoutCaptureWillDoNothing(){ - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); verify(mockDataPersistenceProvider, never()).saveSnapshot(any(Snapshot.class)); @@ -368,13 +319,9 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(6, 9, new MockRaftActorContext.MockPayload()), -1, "follower-1"); - snapshotManager.create(mockProcedure); - - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); verify(mockDataPersistenceProvider).saveSnapshot(any(Snapshot.class)); @@ -391,12 +338,9 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(6, 9, new MockRaftActorContext.MockPayload()), -1, "follower-1"); - snapshotManager.create(mockProcedure); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); - - snapshotManager.commit(mockDataPersistenceProvider, 100L); + snapshotManager.commit(100L, mockRaftActorBehavior); verify(mockReplicatedLog).snapshotCommit(); @@ -417,7 +361,7 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(6, 9, new MockRaftActorContext.MockPayload()), -1, "follower-1"); - snapshotManager.commit(mockDataPersistenceProvider, 100L); + snapshotManager.commit(100L, mockRaftActorBehavior); verify(mockReplicatedLog, never()).snapshotCommit(); @@ -429,7 +373,7 @@ public class SnapshotManagerTest extends AbstractActorTest { @Test public void testCommitBeforeCapture(){ - snapshotManager.commit(mockDataPersistenceProvider, 100L); + snapshotManager.commit(100L, mockRaftActorBehavior); verify(mockReplicatedLog, never()).snapshotCommit(); @@ -447,14 +391,11 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(6, 9, new MockRaftActorContext.MockPayload()), -1, "follower-1"); - snapshotManager.create(mockProcedure); - - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); - snapshotManager.commit(mockDataPersistenceProvider, 100L); + snapshotManager.commit(100L, mockRaftActorBehavior); - snapshotManager.commit(mockDataPersistenceProvider, 100L); + snapshotManager.commit(100L, mockRaftActorBehavior); verify(mockReplicatedLog, times(1)).snapshotCommit(); @@ -469,10 +410,7 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(6, 9, new MockRaftActorContext.MockPayload()), -1, "follower-1"); - snapshotManager.create(mockProcedure); - - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); snapshotManager.rollback(); @@ -504,10 +442,7 @@ public class SnapshotManagerTest extends AbstractActorTest { snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(6, 9, new MockRaftActorContext.MockPayload()), -1, "follower-1"); - snapshotManager.create(mockProcedure); - - snapshotManager.persist(mockDataPersistenceProvider, new byte[]{}, mockRaftActorBehavior - , Runtime.getRuntime().totalMemory()); + snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory()); snapshotManager.rollback();