/** * Verify no StreamRecord is equal to or later than any watermarks. This is checked over the * order of the elements * * @param elements An iterable containing StreamRecords and watermarks */ public static void assertNoLateRecords(Iterable<Object> elements) { // check that no watermark is violated long highestWatermark = Long.MIN_VALUE; for (Object elem : elements) { if (elem instanceof Watermark) { highestWatermark = ((Watermark) elem).asWatermark().getTimestamp(); } else if (elem instanceof StreamRecord) { boolean dataIsOnTime = highestWatermark < ((StreamRecord) elem).getTimestamp(); Assert.assertTrue("Late data was emitted after join", dataIsOnTime); } } } }