package org.littlewings.hazelcast.aggregators; import static org.assertj.core.api.Assertions.*; import java.util.stream.IntStream; import com.hazelcast.core.IMap; import com.hazelcast.mapreduce.JobTracker; import com.hazelcast.mapreduce.aggregation.Supplier; import org.junit.Test; public class MyAggregationTest implements HazelcastTestSupport { @Test public void testMyAggregation() { int result = withHazelcast(2, "hazelcast-aggregations.xml", hazelcast -> { assertThat(hazelcast.getConfig().getMapConfig("aggregateMap").getBackupCount()) .isEqualTo(1); assertThat(hazelcast.getConfig().getJobTrackerConfig("aggregateJobTracker").getChunkSize()) .isEqualTo(500); IMap<String, Integer> map = hazelcast.getMap("aggregateMap"); IntStream.rangeClosed(1, 20).forEach(i -> map.put("key" + i, i)); JobTracker jobTracker = hazelcast.getJobTracker("aggregateJobTracker"); return map.aggregate(Supplier.fromPredicate(new EvenPredicate(), new DoublingSupplier()), new IntegerSumAggregation(), jobTracker); }); assertThat(result) .isEqualTo(220); } @Test public void testMyAggregationNoCombiner() { int result = withHazelcast(2, "hazelcast-aggregations.xml", hazelcast -> { assertThat(hazelcast.getConfig().getMapConfig("aggregateMap").getBackupCount()) .isEqualTo(1); assertThat(hazelcast.getConfig().getJobTrackerConfig("aggregateJobTracker").getChunkSize()) .isEqualTo(500); IMap<String, Integer> map = hazelcast.getMap("aggregateMap"); IntStream.rangeClosed(1, 20).forEach(i -> map.put("key" + i, i)); JobTracker jobTracker = hazelcast.getJobTracker("aggregateJobTracker"); return map.aggregate(Supplier.fromPredicate(new EvenPredicate(), new DoublingSupplier()), new IntegerSumAggregationNoCombiner(), jobTracker); }); assertThat(result) .isEqualTo(220); } }