use of io.trino.operator.GroupByHashYieldAssertion.GroupByHashYieldResult in project trino by trinodb.
the class TestHashAggregationOperator method testMemoryReservationYield.
@Test(dataProvider = "dataType")
public void testMemoryReservationYield(Type type) {
List<Page> input = createPagesWithDistinctHashKeys(type, 6_000, 600);
OperatorFactory operatorFactory = new HashAggregationOperatorFactory(0, new PlanNodeId("test"), ImmutableList.of(type), ImmutableList.of(0), ImmutableList.of(), SINGLE, ImmutableList.of(COUNT.createAggregatorFactory(SINGLE, ImmutableList.of(0), OptionalInt.empty())), Optional.of(1), Optional.empty(), 1, Optional.of(DataSize.of(16, MEGABYTE)), joinCompiler, blockTypeOperators, Optional.empty());
// get result with yield; pick a relatively small buffer for aggregator's memory usage
GroupByHashYieldResult result;
result = finishOperatorWithYieldingGroupByHash(input, type, operatorFactory, this::getHashCapacity, 1_400_000);
assertGreaterThan(result.getYieldCount(), 5);
assertGreaterThan(result.getMaxReservedBytes(), 20L << 20);
int count = 0;
for (Page page : result.getOutput()) {
// value + hash + aggregation result
assertEquals(page.getChannelCount(), 3);
for (int i = 0; i < page.getPositionCount(); i++) {
assertEquals(page.getBlock(2).getLong(i, 0), 1);
count++;
}
}
assertEquals(count, 6_000 * 600);
}
Aggregations