Skip to content

Commit 7331271

Browse files
authored
Tightening rate verification (#131114)
1 parent 8f6f763 commit 7331271

File tree

1 file changed

+16
-2
lines changed
  • x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/aggregate

1 file changed

+16
-2
lines changed

x-pack/plugin/esql/src/test/java/org/elasticsearch/xpack/esql/expression/function/aggregate/RateTests.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,22 @@ private static TestCaseSupplier makeSupplier(TestCaseSupplier.TypedDataSupplier
9595
if (dataRows.size() < 2) {
9696
matcher = Matchers.nullValue();
9797
} else {
98-
// TODO: check the value?
99-
matcher = Matchers.allOf(Matchers.greaterThanOrEqualTo(0.0), Matchers.lessThan(Double.POSITIVE_INFINITY));
98+
var maxrate = switch (fieldTypedData.type().widenSmallNumeric()) {
99+
case INTEGER, COUNTER_INTEGER -> dataRows.stream().mapToInt(v -> (Integer) v).max().orElse(0);
100+
case LONG, COUNTER_LONG -> dataRows.stream().mapToLong(v -> (Long) v).max().orElse(0L);
101+
case DOUBLE, COUNTER_DOUBLE -> dataRows.stream().mapToDouble(v -> (Double) v).max().orElse(0.0);
102+
default -> throw new IllegalStateException("Unexpected value: " + fieldTypedData.type());
103+
};
104+
var minrate = switch (fieldTypedData.type().widenSmallNumeric()) {
105+
case INTEGER, COUNTER_INTEGER -> dataRows.stream().mapToInt(v -> (Integer) v).min().orElse(0);
106+
case LONG, COUNTER_LONG -> dataRows.stream().mapToLong(v -> (Long) v).min().orElse(0L);
107+
case DOUBLE, COUNTER_DOUBLE -> dataRows.stream().mapToDouble(v -> (Double) v).min().orElse(0.0);
108+
default -> throw new IllegalStateException("Unexpected value: " + fieldTypedData.type());
109+
};
110+
// If the minrate is greater than 0, we need to adjust the maxrate accordingly
111+
minrate = Math.min(minrate, 0);
112+
maxrate = Math.max(maxrate, maxrate - minrate);
113+
matcher = Matchers.allOf(Matchers.greaterThanOrEqualTo(minrate), Matchers.lessThanOrEqualTo(maxrate));
100114
}
101115
return new TestCaseSupplier.TestCase(
102116
List.of(fieldTypedData, timestampsField),

0 commit comments

Comments
 (0)