@Test
public void testMergingWithCloseTrigger() throws Exception {
Duration allowedLateness = Duration.millis(50);
ReduceFnTester<Integer, Iterable<Integer>, IntervalWindow> tester =
ReduceFnTester.nonCombining(
Sessions.withGapDuration(Duration.millis(10)),
mockTriggerStateMachine,
AccumulationMode.DISCARDING_FIRED_PANES,
allowedLateness,
ClosingBehavior.FIRE_IF_NON_EMPTY);
IntervalWindow mergedWindow = new IntervalWindow(new Instant(1), new Instant(12));
tester.injectElements(
TimestampedValue.of(1, new Instant(1)), TimestampedValue.of(2, new Instant(2)));
when(mockTriggerStateMachine.shouldFire(anyTriggerContext())).thenReturn(true);
triggerShouldFinish(mockTriggerStateMachine);
tester.advanceInputWatermark(new Instant(13));
tester.fireTimer(mergedWindow, mergedWindow.maxTimestamp(), TimeDomain.EVENT_TIME);
assertTrue(tester.isMarkedFinished(mergedWindow));
when(mockTriggerStateMachine.shouldFire(anyTriggerContext())).thenReturn(false);
tester.injectElements(
TimestampedValue.of(1, new Instant(1)), TimestampedValue.of(2, new Instant(2)));
assertTrue(tester.isMarkedFinished(mergedWindow));
}