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%2Fbehaviors%2FSnapshotTrackerTest.java;h=50860630d4c2f777f534c818899d63d206c888dd;hb=HEAD;hp=f52d8e4e9d3b5d2f6e4a2812268610915abca723;hpb=d796a8de8b208ca24bb57aebfc689f8be8bc2c7b;p=controller.git 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 f52d8e4e9d..2c83f67582 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 @@ -5,39 +5,41 @@ * 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.behaviors; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; +import akka.protobuf.ByteString; import com.google.common.io.ByteSource; -import com.google.protobuf.ByteString; import java.io.IOException; -import java.io.Serializable; import java.util.Arrays; import java.util.HashMap; -import java.util.Map; +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); + private final HashMap data = new HashMap<>(); + @Mock private RaftActorContext mockContext; private FileBackedOutputStream fbos; - private Map data; private ByteString byteString; private byte[] chunk1; private byte[] chunk2; @@ -45,28 +47,27 @@ public class SnapshotTrackerTest { @Before public void setup() { - MockitoAnnotations.initMocks(this); - - data = new HashMap<>(); data.put("key1", "value1"); data.put("key2", "value2"); data.put("key3", "value3"); - byteString = ByteString.copyFrom(SerializationUtils.serialize((Serializable) data)); + byteString = ByteString.copyFrom(SerializationUtils.serialize(data)); chunk1 = getNextChunk(byteString, 0, 10); chunk2 = getNextChunk(byteString, 10, 10); chunk3 = getNextChunk(byteString, 20, byteString.size()); fbos = spy(new FileBackedOutputStream(100000000, "target")); - doReturn(fbos).when(mockContext).newFileBackedOutputStream(); + FileBackedOutputStreamFactory mockFactory = mock(FileBackedOutputStreamFactory.class); + doReturn(fbos).when(mockFactory).newInstance(); + doReturn(mockFactory).when(mockContext).getFileBackedOutputStreamFactory(); } @Test public void testAddChunks() throws IOException { try (SnapshotTracker tracker = new SnapshotTracker(LOG, 3, "leader", mockContext)) { - tracker.addChunk(1, chunk1, Optional.of(LeaderInstallSnapshotState.INITIAL_LAST_CHUNK_HASH_CODE)); - tracker.addChunk(2, chunk2, Optional.of(Arrays.hashCode(chunk1))); - tracker.addChunk(3, chunk3, Optional.of(Arrays.hashCode(chunk2))); + tracker.addChunk(1, chunk1, OptionalInt.of(LeaderInstallSnapshotState.INITIAL_LAST_CHUNK_HASH_CODE)); + tracker.addChunk(2, chunk2, OptionalInt.of(Arrays.hashCode(chunk1))); + tracker.addChunk(3, chunk3, OptionalInt.of(Arrays.hashCode(chunk2))); ByteSource snapshotBytes = tracker.getSnapshotBytes(); assertEquals("Deserialized", data, SerializationUtils.deserialize(snapshotBytes.read())); @@ -78,52 +79,50 @@ public class SnapshotTrackerTest { @Test(expected = SnapshotTracker.InvalidChunkException.class) public void testAddChunkWhenAlreadySealed() throws IOException { try (SnapshotTracker tracker = new SnapshotTracker(LOG, 2, "leader", mockContext)) { - tracker.addChunk(1, chunk1, Optional.absent()); - tracker.addChunk(2, chunk2, Optional.absent()); - tracker.addChunk(3, chunk3, Optional.absent()); + tracker.addChunk(1, chunk1, OptionalInt.empty()); + tracker.addChunk(2, chunk2, OptionalInt.empty()); + tracker.addChunk(3, chunk3, OptionalInt.empty()); } } @Test(expected = SnapshotTracker.InvalidChunkException.class) public void testInvalidFirstChunkIndex() throws IOException { try (SnapshotTracker tracker = new SnapshotTracker(LOG, 2, "leader", mockContext)) { - tracker.addChunk(LeaderInstallSnapshotState.FIRST_CHUNK_INDEX - 1, chunk1, Optional.absent()); + tracker.addChunk(LeaderInstallSnapshotState.FIRST_CHUNK_INDEX - 1, chunk1, OptionalInt.empty()); } } @Test(expected = SnapshotTracker.InvalidChunkException.class) public void testOutOfSequenceChunk() throws IOException { try (SnapshotTracker tracker = new SnapshotTracker(LOG, 2, "leader", mockContext)) { - tracker.addChunk(1, chunk1, Optional.absent()); - tracker.addChunk(3, chunk3, Optional.absent()); + tracker.addChunk(1, chunk1, OptionalInt.empty()); + tracker.addChunk(3, chunk3, OptionalInt.empty()); } } @Test(expected = SnapshotTracker.InvalidChunkException.class) public void testInvalidLastChunkHashCode() throws IOException { try (SnapshotTracker tracker = new SnapshotTracker(LOG, 2, "leader", mockContext)) { - tracker.addChunk(1, chunk1, Optional.of(LeaderInstallSnapshotState.INITIAL_LAST_CHUNK_HASH_CODE)); - tracker.addChunk(2, chunk2, Optional.of(1)); + tracker.addChunk(1, chunk1, OptionalInt.of(LeaderInstallSnapshotState.INITIAL_LAST_CHUNK_HASH_CODE)); + tracker.addChunk(2, chunk2, OptionalInt.of(1)); } } @Test(expected = IllegalStateException.class) public void testGetSnapshotBytesWhenNotSealed() throws IOException { try (SnapshotTracker tracker = new SnapshotTracker(LOG, 2, "leader", mockContext)) { - tracker.addChunk(1, chunk1, Optional.absent()); + tracker.addChunk(1, chunk1, OptionalInt.empty()); tracker.getSnapshotBytes(); } } - private byte[] getNextChunk(ByteString bs, int offset, int size) { + private static byte[] getNextChunk(final ByteString bs, final int offset, int size) { int snapshotLength = bs.size(); int start = offset; if (size > snapshotLength) { size = snapshotLength; - } else { - if (start + size > snapshotLength) { - size = snapshotLength - start; - } + } else if (start + size > snapshotLength) { + size = snapshotLength - start; } byte[] nextChunk = new byte[size];