@@ -50,18 +50,28 @@ public void testBasics() {
5050 LeafReaderContext leaf2 = new MockLeafReader (1000 ).getContext ();
5151 LeafReaderContext leaf3 = new MockLeafReader (1000 ).getContext ();
5252 LeafReaderContext leaf4 = new MockLeafReader (1000 ).getContext ();
53- var slice1 = new LuceneSlice (0 , null , List .of (new PartialLeafReaderContext (leaf1 , 0 , 10 )), null , null );
54-
55- var slice2 = new LuceneSlice (1 , null , List .of (new PartialLeafReaderContext (leaf2 , 0 , 10 )), null , null );
56- var slice3 = new LuceneSlice (2 , null , List .of (new PartialLeafReaderContext (leaf2 , 10 , 20 )), null , null );
57-
58- var slice4 = new LuceneSlice (3 , null , List .of (new PartialLeafReaderContext (leaf3 , 0 , 20 )), null , null );
59- var slice5 = new LuceneSlice (4 , null , List .of (new PartialLeafReaderContext (leaf3 , 10 , 20 )), null , null );
60- var slice6 = new LuceneSlice (5 , null , List .of (new PartialLeafReaderContext (leaf3 , 20 , 30 )), null , null );
61-
62- var slice7 = new LuceneSlice (6 , null , List .of (new PartialLeafReaderContext (leaf4 , 0 , 10 )), null , null );
63- var slice8 = new LuceneSlice (7 , null , List .of (new PartialLeafReaderContext (leaf4 , 10 , 20 )), null , null );
64- List <LuceneSlice > sliceList = List .of (slice1 , slice2 , slice3 , slice4 , slice5 , slice6 , slice7 , slice8 );
53+ List <Object > query1 = List .of ("1" );
54+ List <Object > query2 = List .of ("q2" );
55+ List <LuceneSlice > sliceList = List .of (
56+ // query1: new segment
57+ new LuceneSlice (0 , true , null , List .of (new PartialLeafReaderContext (leaf1 , 0 , 10 )), null , query1 ),
58+ new LuceneSlice (1 , false , null , List .of (new PartialLeafReaderContext (leaf2 , 0 , 10 )), null , query1 ),
59+ new LuceneSlice (2 , false , null , List .of (new PartialLeafReaderContext (leaf2 , 10 , 20 )), null , query1 ),
60+ // query1: new segment
61+ new LuceneSlice (3 , false , null , List .of (new PartialLeafReaderContext (leaf3 , 0 , 20 )), null , query1 ),
62+ new LuceneSlice (4 , false , null , List .of (new PartialLeafReaderContext (leaf3 , 10 , 20 )), null , query1 ),
63+ new LuceneSlice (5 , false , null , List .of (new PartialLeafReaderContext (leaf3 , 20 , 30 )), null , query1 ),
64+ // query1: new segment
65+ new LuceneSlice (6 , false , null , List .of (new PartialLeafReaderContext (leaf4 , 0 , 10 )), null , query1 ),
66+ new LuceneSlice (7 , false , null , List .of (new PartialLeafReaderContext (leaf4 , 10 , 20 )), null , query1 ),
67+ // query2: new segment
68+ new LuceneSlice (8 , true , null , List .of (new PartialLeafReaderContext (leaf2 , 0 , 10 )), null , query2 ),
69+ new LuceneSlice (9 , false , null , List .of (new PartialLeafReaderContext (leaf2 , 10 , 20 )), null , query2 ),
70+ // query1: new segment
71+ new LuceneSlice (10 , false , null , List .of (new PartialLeafReaderContext (leaf3 , 0 , 20 )), null , query2 ),
72+ new LuceneSlice (11 , false , null , List .of (new PartialLeafReaderContext (leaf3 , 10 , 20 )), null , query2 ),
73+ new LuceneSlice (12 , false , null , List .of (new PartialLeafReaderContext (leaf3 , 20 , 30 )), null , query2 )
74+ );
6575 // single driver
6676 {
6777 LuceneSliceQueue queue = new LuceneSliceQueue (sliceList , Map .of ());
@@ -72,32 +82,43 @@ public void testBasics() {
7282 }
7383 assertNull (queue .nextSlice (randomBoolean () ? last : null ));
7484 }
75- // two drivers
85+ // three drivers
7686 {
7787 LuceneSliceQueue queue = new LuceneSliceQueue (sliceList , Map .of ());
88+
7889 LuceneSlice first = null ;
7990 LuceneSlice second = null ;
91+ LuceneSlice third = null ;
8092 first = queue .nextSlice (first );
81- assertEquals (slice1 , first );
93+ assertEquals (sliceList . get ( 0 ) , first );
8294 first = queue .nextSlice (first );
83- assertEquals (slice2 , first );
95+ assertEquals (sliceList . get ( 1 ) , first );
8496
8597 second = queue .nextSlice (second );
86- assertEquals (slice4 , second );
98+ assertEquals (sliceList . get ( 8 ) , second );
8799 second = queue .nextSlice (second );
88- assertEquals (slice5 , second );
100+ assertEquals (sliceList . get ( 9 ) , second );
89101
90102 first = queue .nextSlice (first );
91- assertEquals (slice3 , first );
92- second = queue .nextSlice (second );
93- assertEquals (slice6 , second );
103+ assertEquals (sliceList . get ( 2 ) , first );
104+ third = queue .nextSlice (third );
105+ assertEquals (sliceList . get ( 3 ), third );
94106 first = queue .nextSlice (first );
95- assertEquals (slice7 , first );
96-
97- assertEquals (slice8 , queue .nextSlice (randomFrom (first , second )));
107+ assertEquals (sliceList .get (6 ), first );
98108
99- assertNull (queue .nextSlice (first ));
100- assertNull (queue .nextSlice (second ));
109+ first = queue .nextSlice (first );
110+ assertEquals (sliceList .get (7 ), first );
111+ third = queue .nextSlice (third );
112+ assertEquals (sliceList .get (4 ), third );
113+ first = queue .nextSlice (first );
114+ assertEquals (sliceList .get (10 ), first );
115+ first = queue .nextSlice (first );
116+ assertEquals (sliceList .get (11 ), first );
117+ second = queue .nextSlice (second );
118+ assertEquals (sliceList .get (5 ), second );
119+ second = queue .nextSlice (second );
120+ assertEquals (sliceList .get (12 ), second );
121+ assertNull (null , queue .nextSlice (randomFrom (sliceList )));
101122 }
102123 }
103124
@@ -108,13 +129,14 @@ public void testRandom() throws Exception {
108129 for (int shard = 0 ; shard < numShards ; shard ++) {
109130 int numSegments = randomIntBetween (1 , 10 );
110131 for (int segment = 0 ; segment < numSegments ; segment ++) {
111- int numSlices = randomBoolean () ? 1 : between (2 , 5 );
132+ int numSlices = between (10 , 50 );
112133 LeafReaderContext leafContext = new MockLeafReader (randomIntBetween (1000 , 2000 )).getContext ();
113134 for (int i = 0 ; i < numSlices ; i ++) {
114135 final int minDoc = i * 10 ;
115136 final int maxDoc = minDoc + 10 ;
116137 LuceneSlice slice = new LuceneSlice (
117138 slicePosition ++,
139+ false ,
118140 mock (ShardContext .class ),
119141 List .of (new PartialLeafReaderContext (leafContext , minDoc , maxDoc )),
120142 null ,
@@ -147,8 +169,8 @@ public void testRandom() throws Exception {
147169 var currentLeaf = processedSlices .get (i ).getLeaf (0 );
148170 for (int p = 0 ; p < i ; p ++) {
149171 PartialLeafReaderContext prevLeaf = processedSlices .get (p ).getLeaf (0 );
150- if (prevLeaf == currentLeaf ) {
151- assertThat (prevLeaf .minDoc (), Matchers .lessThanOrEqualTo (processedSlices . get ( i ). leaves (). getFirst (). maxDoc ()));
172+ if (prevLeaf . leafReaderContext () == currentLeaf . leafReaderContext () ) {
173+ assertThat (prevLeaf .maxDoc (), Matchers .lessThanOrEqualTo (currentLeaf . minDoc ()));
152174 }
153175 }
154176 }
0 commit comments