@Test public void testWindowTriggerTimeAlignment() { try { @SuppressWarnings("unchecked") final Output<StreamRecord<String>> mockOut = mock(Output.class); final StreamTask<?, ?> mockTask = createMockTask(); AccumulatingProcessingTimeWindowOperator<String, String, String> op; op = new AccumulatingProcessingTimeWindowOperator<>( mockFunction, mockKeySelector, StringSerializer.INSTANCE, StringSerializer.INSTANCE, 5000, 1000); op.setup(mockTask, new StreamConfig(new Configuration()), mockOut); op.open(); assertTrue(op.getNextSlideTime() % 1000 == 0); assertTrue(op.getNextEvaluationTime() % 1000 == 0); op.dispose(); op = new AccumulatingProcessingTimeWindowOperator<>( mockFunction, mockKeySelector, StringSerializer.INSTANCE, StringSerializer.INSTANCE, 1000, 1000); op.setup(mockTask, new StreamConfig(new Configuration()), mockOut); op.open(); assertTrue(op.getNextSlideTime() % 1000 == 0); assertTrue(op.getNextEvaluationTime() % 1000 == 0); op.dispose(); op = new AccumulatingProcessingTimeWindowOperator<>( mockFunction, mockKeySelector, StringSerializer.INSTANCE, StringSerializer.INSTANCE, 1500, 1000); op.setup(mockTask, new StreamConfig(new Configuration()), mockOut); op.open(); assertTrue(op.getNextSlideTime() % 500 == 0); assertTrue(op.getNextEvaluationTime() % 1000 == 0); op.dispose(); op = new AccumulatingProcessingTimeWindowOperator<>( mockFunction, mockKeySelector, StringSerializer.INSTANCE, StringSerializer.INSTANCE, 1200, 1100); op.setup(mockTask, new StreamConfig(new Configuration()), mockOut); op.open(); assertTrue(op.getNextSlideTime() % 100 == 0); assertTrue(op.getNextEvaluationTime() % 1100 == 0); op.dispose(); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }