Repository: incubator-ratis Updated Branches: refs/heads/master daee0b361 -> 7f1794316
Revert "RATIS-137. RaftBasicTests.testBasicAppendEntries may fail." This reverts commit daee0b3615d4e583c3b0db4edfb00ebc8811b0ae. Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/7919c20d Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/7919c20d Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/7919c20d Branch: refs/heads/master Commit: 7919c20d63fb85d7e96184bd6eb1a0c9ff2dac2a Parents: daee0b3 Author: Tsz-Wo Nicholas Sze <[email protected]> Authored: Sat Nov 11 14:17:05 2017 -0800 Committer: Tsz-Wo Nicholas Sze <[email protected]> Committed: Sat Nov 11 14:17:05 2017 -0800 ---------------------------------------------------------------------- .../java/org/apache/ratis/RaftBasicTests.java | 12 ++++-- .../java/org/apache/ratis/RaftTestUtil.java | 42 +++++--------------- 2 files changed, 19 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7919c20d/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java ---------------------------------------------------------------------- diff --git a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java index 2647d8f..0cd9222 100644 --- a/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java +++ b/ratis-server/src/test/java/org/apache/ratis/RaftBasicTests.java @@ -130,8 +130,10 @@ public abstract class RaftBasicTests extends BaseTest { Thread.sleep(cluster.getMaxTimeout() + 100); LOG.info(cluster.printAllLogs()); - cluster.getServerAliveStream().map(s -> s.getState().getLog()) - .forEach(log -> RaftTestUtil.assertLogEntries(log, term, messages)); + cluster.getServerAliveStream() + .map(s -> s.getState().getLog()) + .forEach(log -> RaftTestUtil.assertLogEntries(log, + log.getEntries(1, Long.MAX_VALUE), 1, term, messages)); } @Test @@ -170,8 +172,10 @@ public abstract class RaftBasicTests extends BaseTest { final RaftPeerId newLeaderId = waitForLeader(cluster).getId(); Assert.assertEquals(followerToSendLog.getId(), newLeaderId); - cluster.getServerAliveStream().map(s -> s.getState().getLog()) - .forEach(log -> RaftTestUtil.assertLogEntries(log, term, messages)); + cluster.getServerAliveStream() + .map(s -> s.getState().getLog()) + .forEach(log -> RaftTestUtil.assertLogEntries(log, + log.getEntries(1, 2), 1, term, messages)); LOG.info("terminating testOldLeaderCommit test"); } http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/7919c20d/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java ---------------------------------------------------------------------- diff --git a/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java b/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java index d1e614c..62545fe 100644 --- a/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java +++ b/ratis-server/src/test/java/org/apache/ratis/RaftTestUtil.java @@ -40,7 +40,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; +import java.util.Objects; import java.util.function.BooleanSupplier; import java.util.function.IntSupplier; import java.util.function.Predicate; @@ -165,40 +167,18 @@ public interface RaftTestUtil { } } - static void assertLogEntries(RaftLog log, long expectedTerm, - SimpleMessage... expectedMessages) { - - final TermIndex[] termIndices = log.getEntries(1, Long.MAX_VALUE); - final List<LogEntryProto> entries = new ArrayList<>(expectedMessages.length); - for (TermIndex ti : termIndices) { + static void assertLogEntries(RaftLog log, TermIndex[] entries, + long startIndex, long expectedTerm, SimpleMessage... expectedMessages) { + Assert.assertEquals(expectedMessages.length, entries.length); + for(int i = 0; i < entries.length; i++) { final LogEntryProto e; try { - e = log.get(ti.getIndex()); + e = log.get(entries[i].getIndex()); } catch (IOException exception) { - throw new AssertionError("Failed to get log at " + ti, exception); - } - - if (e.getLogEntryBodyCase() == LogEntryProto.LogEntryBodyCase.SMLOGENTRY) { - entries.add(e); - } else if (e.getLogEntryBodyCase() == LogEntryProto.LogEntryBodyCase.NOOP) { - LOG.info("Found " + LogEntryProto.LogEntryBodyCase.NOOP + " at " + ti - + ", ignoring it."); - } else { - throw new AssertionError( - "Unexpected LogEntryBodyCase " + e.getLogEntryBodyCase() + " at " + ti); - } - } - - long logIndex = 0; - Assert.assertEquals(expectedMessages.length, entries.size()); - for (int i = 0; i < expectedMessages.length; i++) { - final LogEntryProto e = entries.get(i); - Assert.assertTrue(e.getTerm() >= expectedTerm); - if (e.getTerm() > expectedTerm) { - expectedTerm = e.getTerm(); + throw new RuntimeException(exception); } - Assert.assertTrue(e.getIndex() > logIndex); - logIndex = e.getIndex(); + Assert.assertEquals(expectedTerm, e.getTerm()); + Assert.assertEquals(startIndex + i, e.getIndex()); Assert.assertArrayEquals(expectedMessages[i].getContent().toByteArray(), e.getSmLogEntry().getData().toByteArray()); }
