X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-akka-raft%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fraft%2FReplicatedLogImplTest.java;h=d2fe7dd4fe9c436c3954d3c63682653cf69f4271;hp=51cff356f2cdda165231df6b14375e776a1c715f;hb=9d5ec5cdd146a56bc03e35b6718e9492a5c8410a;hpb=214ba02ca4400d88e494fa27a44c30531f68968e 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 51cff356f2..d2fe7dd4fe 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 @@ -14,7 +14,6 @@ import static org.mockito.Mockito.reset; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import akka.japi.Procedure; -import com.google.common.base.Supplier; import java.util.Collections; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; @@ -76,26 +75,50 @@ public class ReplicatedLogImplTest { @SuppressWarnings("unchecked") @Test public void testAppendAndPersistExpectingNoCapture() throws Exception { - ReplicatedLog log = ReplicatedLogImpl.newInstance(context, mockBehavior); + ReplicatedLog log = ReplicatedLogImpl.newInstance(context); - MockReplicatedLogEntry logEntry = new MockReplicatedLogEntry(1, 1, new MockPayload("1")); + MockReplicatedLogEntry logEntry1 = new MockReplicatedLogEntry(1, 1, new MockPayload("1")); - log.appendAndPersist(logEntry); + log.appendAndPersist(logEntry1); - verifyPersist(logEntry); + verifyPersist(logEntry1); assertEquals("size", 1, log.size()); reset(mockPersistence); + MockReplicatedLogEntry logEntry2 = new MockReplicatedLogEntry(1, 2, new MockPayload("2")); Procedure mockCallback = Mockito.mock(Procedure.class); + log.appendAndPersist(logEntry2, mockCallback); + + verifyPersist(logEntry2); + + verify(mockCallback).apply(same(logEntry2)); + + assertEquals("size", 2, log.size()); + } + + @SuppressWarnings("unchecked") + @Test + public void testAppendAndPersisWithDuplicateEntry() throws Exception { + ReplicatedLog log = ReplicatedLogImpl.newInstance(context); + + Procedure mockCallback = Mockito.mock(Procedure.class); + MockReplicatedLogEntry logEntry = new MockReplicatedLogEntry(1, 1, new MockPayload("1")); + log.appendAndPersist(logEntry, mockCallback); verifyPersist(logEntry); - verify(mockCallback).apply(same(logEntry)); + assertEquals("size", 1, log.size()); - assertEquals("size", 2, log.size()); + reset(mockPersistence, mockCallback); + + log.appendAndPersist(logEntry, mockCallback); + + verifyNoMoreInteractions(mockPersistence, mockCallback); + + assertEquals("size", 1, log.size()); } @Test @@ -104,7 +127,7 @@ public class ReplicatedLogImplTest { doReturn(1L).when(mockBehavior).getReplicatedToAllIndex(); - ReplicatedLog log = ReplicatedLogImpl.newInstance(context, mockBehavior); + ReplicatedLog log = ReplicatedLogImpl.newInstance(context); MockReplicatedLogEntry logEntry1 = new MockReplicatedLogEntry(1, 2, new MockPayload("2")); MockReplicatedLogEntry logEntry2 = new MockReplicatedLogEntry(1, 3, new MockPayload("3")); @@ -125,14 +148,9 @@ public class ReplicatedLogImplTest { public void testAppendAndPersistExpectingCaptureDueToDataSize() throws Exception { doReturn(1L).when(mockBehavior).getReplicatedToAllIndex(); - context.setTotalMemoryRetriever(new Supplier() { - @Override - public Long get() { - return 100L; - } - }); + context.setTotalMemoryRetriever(() -> 100); - ReplicatedLog log = ReplicatedLogImpl.newInstance(context, mockBehavior); + ReplicatedLog log = ReplicatedLogImpl.newInstance(context); int dataSize = 600; MockReplicatedLogEntry logEntry = new MockReplicatedLogEntry(1, 2, new MockPayload("2", dataSize)); @@ -153,7 +171,7 @@ public class ReplicatedLogImplTest { @Test public void testRemoveFromAndPersist() throws Exception { - ReplicatedLog log = ReplicatedLogImpl.newInstance(context, mockBehavior); + ReplicatedLog log = ReplicatedLogImpl.newInstance(context); log.append(new MockReplicatedLogEntry(1, 0, new MockPayload("0"))); log.append(new MockReplicatedLogEntry(1, 1, new MockPayload("1")));