diff options
Diffstat (limited to 'core/src/test/java/org/elasticsearch/index/seqno/LocalCheckpointTrackerTests.java')
-rw-r--r-- | core/src/test/java/org/elasticsearch/index/seqno/LocalCheckpointTrackerTests.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/core/src/test/java/org/elasticsearch/index/seqno/LocalCheckpointTrackerTests.java b/core/src/test/java/org/elasticsearch/index/seqno/LocalCheckpointTrackerTests.java index 3d280b4d28..e2978ffc51 100644 --- a/core/src/test/java/org/elasticsearch/index/seqno/LocalCheckpointTrackerTests.java +++ b/core/src/test/java/org/elasticsearch/index/seqno/LocalCheckpointTrackerTests.java @@ -38,6 +38,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Collectors; import java.util.stream.IntStream; +import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.isOneOf; @@ -236,4 +237,23 @@ public class LocalCheckpointTrackerTests extends ESTestCase { thread.join(); } + + public void testResetCheckpoint() { + final int operations = 1024 - scaledRandomIntBetween(0, 1024); + int maxSeqNo = Math.toIntExact(SequenceNumbersService.NO_OPS_PERFORMED); + for (int i = 0; i < operations; i++) { + if (!rarely()) { + tracker.markSeqNoAsCompleted(i); + maxSeqNo = i; + } + } + + final int localCheckpoint = + randomIntBetween(Math.toIntExact(SequenceNumbersService.NO_OPS_PERFORMED), Math.toIntExact(tracker.getCheckpoint())); + tracker.resetCheckpoint(localCheckpoint); + assertThat(tracker.getCheckpoint(), equalTo((long) localCheckpoint)); + assertThat(tracker.getMaxSeqNo(), equalTo((long) maxSeqNo)); + assertThat(tracker.processedSeqNo, empty()); + assertThat(tracker.generateSeqNo(), equalTo((long) (maxSeqNo + 1))); + } } |