Fix license header violations in sal-akka-raft
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / test / java / org / opendaylight / controller / cluster / raft / SnapshotManagerTest.java
index 89aadbe0ae0fb4dc0ba7646e24942a7323be0376..0078c2bd848d6677efd7c0d241e1c083c07807e4 100644 (file)
@@ -1,3 +1,11 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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;
@@ -67,6 +75,7 @@ public class SnapshotManagerTest extends AbstractActorTest {
         doReturn(new HashMap<>()).when(mockRaftActorContext).getPeerAddresses();
         doReturn(mockConfigParams).when(mockRaftActorContext).getConfigParams();
         doReturn(10L).when(mockConfigParams).getSnapshotBatchCount();
+        doReturn(70).when(mockConfigParams).getSnapshotDataThresholdPercentage();
         doReturn(mockReplicatedLog).when(mockRaftActorContext).getReplicatedLog();
         doReturn("123").when(mockRaftActorContext).getId();
         doReturn(mockDataPersistenceProvider).when(mockRaftActorContext).getPersistenceProvider();
@@ -257,7 +266,6 @@ public class SnapshotManagerTest extends AbstractActorTest {
         verify(mockRaftActorBehavior).setReplicatedToAllIndex(9);
     }
 
-
     @Test
     public void testPersistWhenReplicatedLogDataSizeGreaterThanThreshold(){
         doReturn(Integer.MAX_VALUE).when(mockReplicatedLog).dataSize();
@@ -271,6 +279,34 @@ public class SnapshotManagerTest extends AbstractActorTest {
         verify(mockDataPersistenceProvider).saveSnapshot(any(Snapshot.class));
 
         verify(mockReplicatedLog).snapshotPreCommit(9L, 6L);
+
+        verify(mockRaftActorBehavior, never()).setReplicatedToAllIndex(anyLong());
+    }
+
+    @Test
+    public void testPersistWhenReplicatedLogSizeExceedsSnapshotBatchCount() {
+        doReturn(10L).when(mockReplicatedLog).size(); // matches snapshotBatchCount
+        doReturn(100).when(mockReplicatedLog).dataSize();
+
+        doReturn(5L).when(mockReplicatedLog).getSnapshotIndex();
+        doReturn(5L).when(mockReplicatedLog).getSnapshotTerm();
+
+        long replicatedToAllIndex = 1;
+        ReplicatedLogEntry replicatedLogEntry = mock(ReplicatedLogEntry.class);
+        doReturn(replicatedLogEntry).when(mockReplicatedLog).get(replicatedToAllIndex);
+        doReturn(6L).when(replicatedLogEntry).getTerm();
+        doReturn(replicatedToAllIndex).when(replicatedLogEntry).getIndex();
+
+        snapshotManager.capture(new MockRaftActorContext.MockReplicatedLogEntry(6, 9,
+                new MockRaftActorContext.MockPayload()), replicatedToAllIndex);
+
+        snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, 2000000L);
+
+        verify(mockDataPersistenceProvider).saveSnapshot(any(Snapshot.class));
+
+        verify(mockReplicatedLog).snapshotPreCommit(9L, 6L);
+
+        verify(mockRaftActorBehavior).setReplicatedToAllIndex(replicatedToAllIndex);
     }
 
     @Test
@@ -287,6 +323,8 @@ public class SnapshotManagerTest extends AbstractActorTest {
 
         snapshotManager.persist(bytes, mockRaftActorBehavior, Runtime.getRuntime().totalMemory());
 
+        assertEquals(true, snapshotManager.isCapturing());
+
         verify(mockDataPersistenceProvider).saveSnapshot(any(Snapshot.class));
 
         verify(mockReplicatedLog).snapshotPreCommit(9L, 6L);
@@ -298,7 +336,7 @@ public class SnapshotManagerTest extends AbstractActorTest {
 
         SendInstallSnapshot sendInstallSnapshot = sendInstallSnapshotArgumentCaptor.getValue();
 
-        assertTrue(Arrays.equals(bytes, sendInstallSnapshot.getSnapshot().toByteArray()));
+        assertTrue(Arrays.equals(bytes, sendInstallSnapshot.getSnapshot().getState()));
     }
 
     @Test
@@ -340,7 +378,11 @@ public class SnapshotManagerTest extends AbstractActorTest {
 
         snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory());
 
-        snapshotManager.commit(100L);
+        assertEquals(true, snapshotManager.isCapturing());
+
+        snapshotManager.commit(100L, mockRaftActorBehavior);
+
+        assertEquals(false, snapshotManager.isCapturing());
 
         verify(mockReplicatedLog).snapshotCommit();
 
@@ -361,7 +403,7 @@ public class SnapshotManagerTest extends AbstractActorTest {
         snapshotManager.captureToInstall(new MockRaftActorContext.MockReplicatedLogEntry(6, 9,
                 new MockRaftActorContext.MockPayload()), -1, "follower-1");
 
-        snapshotManager.commit(100L);
+        snapshotManager.commit(100L, mockRaftActorBehavior);
 
         verify(mockReplicatedLog, never()).snapshotCommit();
 
@@ -373,7 +415,7 @@ public class SnapshotManagerTest extends AbstractActorTest {
 
     @Test
     public void testCommitBeforeCapture(){
-        snapshotManager.commit(100L);
+        snapshotManager.commit(100L, mockRaftActorBehavior);
 
         verify(mockReplicatedLog, never()).snapshotCommit();
 
@@ -393,9 +435,9 @@ public class SnapshotManagerTest extends AbstractActorTest {
 
         snapshotManager.persist(new byte[]{}, mockRaftActorBehavior, Runtime.getRuntime().totalMemory());
 
-        snapshotManager.commit(100L);
+        snapshotManager.commit(100L, mockRaftActorBehavior);
 
-        snapshotManager.commit(100L);
+        snapshotManager.commit(100L, mockRaftActorBehavior);
 
         verify(mockReplicatedLog, times(1)).snapshotCommit();
 
@@ -609,4 +651,4 @@ public class SnapshotManagerTest extends AbstractActorTest {
         assertEquals("getTerm", -1L, reader.getTerm());
         assertEquals("getIndex", -1L, reader.getIndex());
     }
-}
\ No newline at end of file
+}