- public void testAddChunk() throws SnapshotTracker.InvalidChunkException {
- SnapshotTracker tracker1 = new SnapshotTracker(mock(LoggingAdapter.class), 5);
-
- tracker1.addChunk(1, chunk1, Optional.<Integer>absent());
- tracker1.addChunk(2, chunk2, Optional.<Integer>absent());
- tracker1.addChunk(3, chunk3, Optional.<Integer>absent());
-
- // Verify that an InvalidChunkException is thrown when we try to add a chunk to a sealed tracker
- SnapshotTracker tracker2 = new SnapshotTracker(mock(LoggingAdapter.class), 2);
-
- tracker2.addChunk(1, chunk1, Optional.<Integer>absent());
- tracker2.addChunk(2, chunk2, Optional.<Integer>absent());
-
- try {
- tracker2.addChunk(3, chunk3, Optional.<Integer>absent());
- Assert.fail();
- } catch(SnapshotTracker.InvalidChunkException e){
- e.getMessage().startsWith("Invalid chunk");
+ 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)));
+
+ ByteSource snapshotBytes = tracker.getSnapshotBytes();
+ assertEquals("Deserialized", data, SerializationUtils.deserialize(snapshotBytes.read()));