assertEquals(null, tester.getWatermarkHold()); assertEquals(null, tester.getOutputWatermark()); Instant hold = tester.getWatermarkHold(); if (hold != null) { assertThat(hold, greaterThanOrEqualTo(new Instant(watermark))); tester.advanceInputWatermark(new Instant(watermark)); LOG.info("Output {}", tester.extractOutput()); if (tester.getWatermarkHold() != null) { assertThat(tester.getWatermarkHold(), equalTo(new Instant(watermark).plus(allowedLateness)));
tester.setAutoAdvanceOutputWatermark(false); assertEquals(null, tester.getWatermarkHold()); assertEquals(null, tester.getOutputWatermark()); tester.advanceInputWatermark(new Instant(24)); injectElements(tester, 1); assertThat(tester.getWatermarkHold(), nullValue()); injectElements(tester, 14); assertThat(tester.getWatermarkHold(), nullValue()); injectElements(tester, 6, 16); assertEquals(tester.getWatermarkHold(), new Instant(25)); injectElements(tester, 6, 21); assertEquals(tester.getWatermarkHold(), new Instant(30)); assertThat(tester.getWatermarkHold(), nullValue()); assertThat(tester.getWatermarkHold(), nullValue()); assertEquals(tester.getWatermarkHold(), new Instant(49)); assertEquals(tester.getWatermarkHold(), new Instant(49)); tester.advanceInputWatermark(new Instant(50)); assertThat(tester.getWatermarkHold(), nullValue());
@Test public void testWatermarkHoldForLateNewWindow() throws Exception { Duration allowedLateness = Duration.standardMinutes(1); Duration gapDuration = Duration.millis(10); ReduceFnTester<Integer, Iterable<Integer>, IntervalWindow> tester = ReduceFnTester.nonCombining( WindowingStrategy.of(Sessions.withGapDuration(gapDuration)) .withMode(AccumulationMode.DISCARDING_FIRED_PANES) .withTrigger( Repeatedly.forever( AfterWatermark.pastEndOfWindow() .withLateFirings(AfterPane.elementCountAtLeast(1)))) .withAllowedLateness(allowedLateness)); tester.setAutoAdvanceOutputWatermark(false); assertEquals(null, tester.getWatermarkHold()); assertEquals(null, tester.getOutputWatermark()); tester.advanceInputWatermark(new Instant(40)); injectElements(tester, 1); assertThat(tester.getWatermarkHold(), nullValue()); injectElements(tester, 10); assertThat(tester.getWatermarkHold(), nullValue()); }
assertEquals(null, tester.getWatermarkHold()); assertEquals(null, tester.getOutputWatermark()); assertThat(tester.getWatermarkHold(), nullValue()); injectElements(tester, Arrays.asList(4)); Instant endOfWindow = new Instant(4).plus(gapDuration); assertEquals(expectedGcHold, tester.getWatermarkHold()); tester.advanceInputWatermark(new Instant(1000)); assertEquals(expectedGcHold, tester.getWatermarkHold());
assertEquals(null, tester.getWatermarkHold()); assertEquals(null, tester.getOutputWatermark()); injectElement(tester, 1); injectElement(tester, 3); assertEquals(new Instant(1), tester.getWatermarkHold()); when(mockTriggerStateMachine.shouldFire(anyTriggerContext())).thenReturn(true); injectElement(tester, 2); assertThat(tester.getWatermarkHold(), nullValue()); tester.getWatermarkHold(), equalTo(expectedWindow.maxTimestamp().plus(allowedLateness))); assertEquals(new Instant(5), tester.getWatermarkHold()); assertThat(tester.getWatermarkHold(), nullValue()); injectElement(tester, 5); assertThat( tester.getWatermarkHold(), equalTo(expectedWindow.maxTimestamp().plus(allowedLateness))); output.get(0).getPane(), equalTo(PaneInfo.createPane(false, true, Timing.LATE, 3, 1))); assertEquals(new Instant(50), tester.getOutputWatermark()); assertEquals(null, tester.getWatermarkHold());
assertThat(tester.getWatermarkHold(), equalTo(expectedWindow.maxTimestamp())); assertThat(tester.getWatermarkHold(), nullValue()); tester.getWatermarkHold(), equalTo(expectedWindow.maxTimestamp().plus(allowedLateness)));
injectElement(tester, 14); assertEquals(new Instant(14), tester.getWatermarkHold()); assertEquals(new Instant(29), tester.getWatermarkHold()); assertEquals(new Instant(29), tester.getNextTimer(TimeDomain.EVENT_TIME)); assertEquals(new Instant(29), tester.getWatermarkHold()); assertEquals(new Instant(29), tester.getNextTimer(TimeDomain.EVENT_TIME));
tester.injectElements(TimestampedValue.of(2, new Instant(2))); Instant hold = tester.getWatermarkHold(); assertEquals(new Instant(109), hold);