@Test public void testLoadLogSegments() throws Exception { // first generate log files List<SegmentRange> ranges = prepareRanges(5, 100, 0); LogEntryProto[] entries = prepareLog(ranges); // create RaftLog object and load log file try (SegmentedRaftLog raftLog = new SegmentedRaftLog(peerId, null, storage, -1, properties)) { raftLog.open(RaftServerConstants.INVALID_LOG_INDEX, null); // check if log entries are loaded correctly for (LogEntryProto e : entries) { LogEntryProto entry = raftLog.get(e.getIndex()); Assert.assertEquals(e, entry); } TermIndex[] termIndices = raftLog.getEntries(0, 500); LogEntryProto[] entriesFromLog = Arrays.stream(termIndices) .map(ti -> { try { return raftLog.get(ti.getIndex()); } catch (IOException e) { throw new RuntimeException(e); } }) .toArray(LogEntryProto[]::new); Assert.assertArrayEquals(entries, entriesFromLog); Assert.assertEquals(entries[entries.length - 1], getLastEntry(raftLog)); } }
@Test public void testLoadLogSegments() throws Exception { // first generate log files List<SegmentRange> ranges = prepareRanges(0, 5, 100, 0); LogEntryProto[] entries = prepareLog(ranges); // create RaftLog object and load log file try (SegmentedRaftLog raftLog = new SegmentedRaftLog(peerId, null, storage, -1, properties)) { raftLog.open(RaftServerConstants.INVALID_LOG_INDEX, null); // check if log entries are loaded correctly for (LogEntryProto e : entries) { LogEntryProto entry = raftLog.get(e.getIndex()); Assert.assertEquals(e, entry); } TermIndex[] termIndices = raftLog.getEntries(0, 500); LogEntryProto[] entriesFromLog = Arrays.stream(termIndices) .map(ti -> { try { return raftLog.get(ti.getIndex()); } catch (IOException e) { throw new RuntimeException(e); } }) .toArray(LogEntryProto[]::new); Assert.assertArrayEquals(entries, entriesFromLog); Assert.assertEquals(entries[entries.length - 1], getLastEntry(raftLog)); } }