Skip to content

Commit e0ec420

Browse files
committed
harden tests
1 parent 2f7fd82 commit e0ec420

File tree

1 file changed

+29
-20
lines changed

1 file changed

+29
-20
lines changed

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/optimizer/rules/physical/local/ReplaceRoundToWithQueryAndTagsTests.java

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@
6969
import static org.elasticsearch.xpack.esql.type.EsqlDataTypeConverter.dateNanosToLong;
7070
import static org.elasticsearch.xpack.esql.type.EsqlDataTypeConverter.dateTimeToLong;
7171
import static org.hamcrest.Matchers.equalTo;
72-
import static org.hamcrest.Matchers.greaterThan;
7372
import static org.hamcrest.Matchers.is;
7473

7574
//@TestLogging(value = "org.elasticsearch.xpack.esql:TRACE", reason = "debug")
@@ -540,61 +539,71 @@ public void testRoundToTransformToQueryAndTagsWithCustomizedUpperLimit() {
540539
}
541540
}
542541

543-
static String points(int numPoints) {
542+
static String pointArray(int numPoints) {
544543
return IntStream.range(0, numPoints).mapToObj(Integer::toString).collect(Collectors.joining(","));
545544
}
546545

546+
static int queryAndTags(PhysicalPlan plan) {
547+
EsQueryExec esQuery = (EsQueryExec) plan.collectFirstChildren(EsQueryExec.class::isInstance).getFirst();
548+
return esQuery.queryBuilderAndTags().size();
549+
}
550+
547551
public void testAdjustThresholdForQueries() {
548552
{
553+
int points = between(2, 127);
549554
String q = String.format(Locale.ROOT, """
550555
from test
551556
| stats count(*) by x = round_to(integer, %s)
552-
""", points(between(1, 128)));
557+
""", pointArray(points));
553558
PhysicalPlan plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
554-
EsQueryExec esQuery = (EsQueryExec) plan.collectFirstChildren(EsQueryExec.class::isInstance).getFirst();
555-
assertThat(esQuery.queryBuilderAndTags().size(), greaterThan(1));
559+
int queryAndTags = queryAndTags(plan);
560+
assertThat(queryAndTags, equalTo(points + 1)); // include null bucket
556561
}
557562
{
563+
int points = between(2, 64);
558564
String q = String.format(Locale.ROOT, """
559565
from test
560566
| where date >= "2023-10-19"
561567
| stats count(*) by x = round_to(integer, %s)
562-
""", points(between(1, 63)));
563-
PhysicalPlan plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
564-
EsQueryExec esQuery = (EsQueryExec) plan.collectFirstChildren(EsQueryExec.class::isInstance).getFirst();
565-
assertThat(esQuery.queryBuilderAndTags().size(), greaterThan(1));
568+
""", pointArray(points));
569+
var plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
570+
int queryAndTags = queryAndTags(plan);
571+
assertThat(queryAndTags, equalTo(points + 1)); // include null bucket
566572
}
567573
{
574+
int points = between(65, 128);
568575
String q = String.format(Locale.ROOT, """
569576
from test
570577
| where date >= "2023-10-19"
571578
| stats count(*) by x = round_to(integer, %s)
572-
""", points(between(65, 128)));
573-
PhysicalPlan plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
574-
EsQueryExec esQuery = (EsQueryExec) plan.collectFirstChildren(EsQueryExec.class::isInstance).getFirst();
575-
assertThat(esQuery.queryBuilderAndTags().size(), equalTo(1));
579+
""", pointArray(points));
580+
var plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
581+
int queryAndTags = queryAndTags(plan);
582+
assertThat(queryAndTags, equalTo(1)); // no rewrite
576583
}
577584
{
585+
int points = between(2, 19);
578586
String q = String.format(Locale.ROOT, """
579587
from test
580588
| where date >= "2023-10-19"
581589
| where keyword LIKE "w*"
582590
| stats count(*) by x = round_to(integer, %s)
583-
""", points(between(1, 19)));
584-
PhysicalPlan plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
585-
EsQueryExec esQuery = (EsQueryExec) plan.collectFirstChildren(EsQueryExec.class::isInstance).getFirst();
586-
assertThat(esQuery.queryBuilderAndTags().size(), greaterThan(1));
591+
""", pointArray(points));
592+
var plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
593+
int queryAndTags = queryAndTags(plan);
594+
assertThat("points=" + points, queryAndTags, equalTo(points + 1)); // include null bucket
587595
}
588596
{
597+
int points = between(20, 128);
589598
String q = String.format(Locale.ROOT, """
590599
from test
591600
| where date >= "2023-10-19"
592601
| where keyword LIKE "*w*"
593602
| stats count(*) by x = round_to(integer, %s)
594-
""", points(between(20, 128)));
603+
""", pointArray(points));
595604
PhysicalPlan plan = plannerOptimizer.plan(q, searchStats, makeAnalyzer("mapping-all-types.json"));
596-
EsQueryExec esQuery = (EsQueryExec) plan.collectFirstChildren(EsQueryExec.class::isInstance).getFirst();
597-
assertThat(esQuery.queryBuilderAndTags().size(), equalTo(1));
605+
int queryAndTags = queryAndTags(plan);
606+
assertThat("points=" + points, queryAndTags, equalTo(1)); // no rewrite
598607
}
599608
}
600609

0 commit comments

Comments
 (0)