Fix SearchResponseMerger#testMergeSearchHits
This commit fixes an edge case in tests where search hits are empty after the merge but some shards returned hits. This can happen if the total number of merged hits is less than the provided `from`. Closes #40553
This commit is contained in:
parent
89d97905e5
commit
8775e37d03
|
@ -396,7 +396,6 @@ public class SearchResponseMergerTests extends ESTestCase {
|
||||||
assertEquals(totalCount, bucket.getDocCount());
|
assertEquals(totalCount, bucket.getDocCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@AwaitsFix(bugUrl = "https://github.com/elastic/elasticsearch/issues/40553")
|
|
||||||
public void testMergeSearchHits() throws InterruptedException {
|
public void testMergeSearchHits() throws InterruptedException {
|
||||||
final long currentRelativeTime = randomLong();
|
final long currentRelativeTime = randomLong();
|
||||||
final SearchTimeProvider timeProvider = new SearchTimeProvider(randomLong(), 0, () -> currentRelativeTime);
|
final SearchTimeProvider timeProvider = new SearchTimeProvider(randomLong(), 0, () -> currentRelativeTime);
|
||||||
|
@ -442,6 +441,7 @@ public class SearchResponseMergerTests extends ESTestCase {
|
||||||
float expectedMaxScore = Float.NEGATIVE_INFINITY;
|
float expectedMaxScore = Float.NEGATIVE_INFINITY;
|
||||||
int numIndices = requestedSize == 0 ? 0 : randomIntBetween(1, requestedSize);
|
int numIndices = requestedSize == 0 ? 0 : randomIntBetween(1, requestedSize);
|
||||||
Iterator<Map.Entry<String, Index[]>> indicesIterator = randomRealisticIndices(numIndices, numResponses).entrySet().iterator();
|
Iterator<Map.Entry<String, Index[]>> indicesIterator = randomRealisticIndices(numIndices, numResponses).entrySet().iterator();
|
||||||
|
boolean hasHits = false;
|
||||||
for (int i = 0; i < numResponses; i++) {
|
for (int i = 0; i < numResponses; i++) {
|
||||||
Map.Entry<String, Index[]> entry = indicesIterator.next();
|
Map.Entry<String, Index[]> entry = indicesIterator.next();
|
||||||
String clusterAlias = entry.getKey();
|
String clusterAlias = entry.getKey();
|
||||||
|
@ -465,6 +465,7 @@ public class SearchResponseMergerTests extends ESTestCase {
|
||||||
float maxScore = scoreSort ? numDocs * scoreFactor : Float.NaN;
|
float maxScore = scoreSort ? numDocs * scoreFactor : Float.NaN;
|
||||||
SearchHit[] hits = randomSearchHitArray(numDocs, numResponses, clusterAlias, indices, maxScore, scoreFactor,
|
SearchHit[] hits = randomSearchHitArray(numDocs, numResponses, clusterAlias, indices, maxScore, scoreFactor,
|
||||||
sortFields, priorityQueue);
|
sortFields, priorityQueue);
|
||||||
|
hasHits |= hits.length > 0;
|
||||||
expectedMaxScore = Math.max(expectedMaxScore, maxScore);
|
expectedMaxScore = Math.max(expectedMaxScore, maxScore);
|
||||||
|
|
||||||
Object[] collapseValues = null;
|
Object[] collapseValues = null;
|
||||||
|
@ -514,7 +515,7 @@ public class SearchResponseMergerTests extends ESTestCase {
|
||||||
|
|
||||||
SearchHits searchHits = searchResponse.getHits();
|
SearchHits searchHits = searchResponse.getHits();
|
||||||
// the sort fields and the collapse field are not returned when hits are empty
|
// the sort fields and the collapse field are not returned when hits are empty
|
||||||
if (searchHits.getHits().length > 0) {
|
if (hasHits) {
|
||||||
assertArrayEquals(sortFields, searchHits.getSortFields());
|
assertArrayEquals(sortFields, searchHits.getSortFields());
|
||||||
assertEquals(collapseField, searchHits.getCollapseField());
|
assertEquals(collapseField, searchHits.getCollapseField());
|
||||||
} else {
|
} else {
|
||||||
|
@ -540,7 +541,7 @@ public class SearchResponseMergerTests extends ESTestCase {
|
||||||
SearchHit[] hits = searchHits.getHits();
|
SearchHit[] hits = searchHits.getHits();
|
||||||
if (collapseField != null
|
if (collapseField != null
|
||||||
// the collapse field is not returned when hits are empty
|
// the collapse field is not returned when hits are empty
|
||||||
&& hits.length > 0) {
|
&& hasHits) {
|
||||||
assertEquals(hits.length, searchHits.getCollapseValues().length);
|
assertEquals(hits.length, searchHits.getCollapseValues().length);
|
||||||
} else {
|
} else {
|
||||||
assertNull(searchHits.getCollapseValues());
|
assertNull(searchHits.getCollapseValues());
|
||||||
|
|
Loading…
Reference in New Issue