@Test public void testAtWatermarkAndLate() throws Exception { tester = TriggerTester.forTrigger( AfterWatermark.<IntervalWindow>pastEndOfWindow().withLateFirings(mockLate), FixedWindows.of(Duration.millis(100))); injectElements(1); IntervalWindow window = new IntervalWindow(new Instant(0), new Instant(100)); // No early firing, just double checking when(mockEarly.shouldFire(anyTriggerContext())).thenReturn(true); assertFalse(tester.shouldFire(window)); tester.fireIfShouldFire(window); assertFalse(tester.isMarkedFinished(window)); // Fire due to watermark when(mockEarly.shouldFire(anyTriggerContext())).thenReturn(false); tester.advanceInputWatermark(new Instant(100)); assertTrue(tester.shouldFire(window)); tester.fireIfShouldFire(window); assertFalse(tester.isMarkedFinished(window)); testRunningAsTrigger(mockLate, window); }
public void testRunningAsTrigger(OnceTrigger<IntervalWindow> mockTrigger, IntervalWindow window) throws Exception { // Don't fire due to mock saying no when(mockTrigger.shouldFire(anyTriggerContext())).thenReturn(false); assertFalse(tester.shouldFire(window)); // not ready // Fire due to mock trigger; early trigger is required to be a OnceTrigger when(mockTrigger.shouldFire(anyTriggerContext())).thenReturn(true); assertTrue(tester.shouldFire(window)); // ready tester.fireIfShouldFire(window); assertFalse(tester.isMarkedFinished(window)); }