3030import java .util .stream .LongStream ;
3131
3232import static org .hamcrest .CoreMatchers .equalTo ;
33+ import static org .hamcrest .Matchers .lessThanOrEqualTo ;
3334
3435public class MultiSnapshotTests extends ESTestCase {
35- public void testTrackSeqNumRandomRanges () throws Exception {
36- final MultiSnapshot .SeqNumSet bitSet = new MultiSnapshot .SeqNumSet ();
37- final LongSet normalSet = new LongHashSet ();
38- IntStream .range (0 , between (20_000 , 50_000 )).forEach (i -> {
39- long seq = randomNonNegativeLong ();
40- boolean existed = normalSet .add (seq ) == false ;
41- assertThat ("SeqNumSet != Set" , bitSet .getAndSet (seq ), equalTo (existed ));
42- });
43- }
44-
4536 public void testTrackSeqNumDenseRanges () throws Exception {
4637 final MultiSnapshot .SeqNumSet bitSet = new MultiSnapshot .SeqNumSet ();
4738 final LongSet normalSet = new LongHashSet ();
48- IntStream .range (0 , between ( 20_000 , 50_000 )).forEach (i -> {
39+ IntStream .range (0 , scaledRandomIntBetween ( 5_000 , 10_000 )).forEach (i -> {
4940 long seq = between (0 , 5000 );
5041 boolean existed = normalSet .add (seq ) == false ;
5142 assertThat ("SeqNumSet != Set" + seq , bitSet .getAndSet (seq ), equalTo (existed ));
43+ assertThat (bitSet .ongoingSetsSize () + bitSet .completeSetsSize (), lessThanOrEqualTo (5L ));
5244 });
5345 }
5446
5547 public void testTrackSeqNumSparseRanges () throws Exception {
5648 final MultiSnapshot .SeqNumSet bitSet = new MultiSnapshot .SeqNumSet ();
5749 final LongSet normalSet = new LongHashSet ();
58- IntStream .range (0 , between ( 20_000 , 50_000 )).forEach (i -> {
50+ IntStream .range (0 , scaledRandomIntBetween ( 5_000 , 10_000 )).forEach (i -> {
5951 long seq = between (i * 10_000 , i * 30_000 );
6052 boolean existed = normalSet .add (seq ) == false ;
6153 assertThat ("SeqNumSet != Set" , bitSet .getAndSet (seq ), equalTo (existed ));
@@ -66,17 +58,26 @@ public void testSequenceNumMimicTranslog() throws Exception {
6658 final MultiSnapshot .SeqNumSet bitSet = new MultiSnapshot .SeqNumSet ();
6759 final LongSet normalSet = new LongHashSet ();
6860 long currentSeq = between (10_000_000 , 1_000_000_000 );
69- final int iterations = between (100 , 2000 );
61+ final int iterations = scaledRandomIntBetween (100 , 2000 );
62+ assertThat (bitSet .completeSetsSize (), equalTo (0L ));
63+ assertThat (bitSet .ongoingSetsSize (), equalTo (0L ));
64+ long totalDocs = 0 ;
7065 for (long i = 0 ; i < iterations ; i ++) {
71- List <Long > batch = LongStream .range (currentSeq , currentSeq + between (1 , 1000 ))
66+ int batchSize = between (1 , 1500 );
67+ totalDocs += batchSize ;
68+ currentSeq -= batchSize ;
69+ List <Long > batch = LongStream .range (currentSeq , currentSeq + batchSize )
7270 .boxed ()
7371 .collect (Collectors .toList ());
7472 Randomness .shuffle (batch );
7573 batch .forEach (seq -> {
7674 boolean existed = normalSet .add (seq ) == false ;
7775 assertThat ("SeqNumSet != Set" , bitSet .getAndSet (seq ), equalTo (existed ));
76+ assertThat (bitSet .ongoingSetsSize (), lessThanOrEqualTo (4L ));
7877 });
79- currentSeq -= batch . size ( );
78+ assertThat ( bitSet . ongoingSetsSize (), lessThanOrEqualTo ( 2L ) );
8079 }
80+ assertThat (bitSet .completeSetsSize (), lessThanOrEqualTo (totalDocs / 1024 ));
81+ assertThat (bitSet .ongoingSetsSize (), lessThanOrEqualTo (2L ));
8182 }
8283}
0 commit comments