@Test
public void testSideOutput() throws Exception {
try (
TwoInputStreamOperatorTestHarness<String, Integer, String> testHarness = getInitializedTestHarness(
new FunctionWithSideOutput(), STATE_DESCRIPTOR)
) {
testHarness.processWatermark1(new Watermark(10L));
testHarness.processWatermark2(new Watermark(10L));
testHarness.processElement2(new StreamRecord<>(5, 12L));
testHarness.processWatermark1(new Watermark(40L));
testHarness.processWatermark2(new Watermark(40L));
testHarness.processElement1(new StreamRecord<>("6", 13L));
testHarness.processElement1(new StreamRecord<>("6", 15L));
testHarness.processWatermark1(new Watermark(50L));
testHarness.processWatermark2(new Watermark(50L));
ConcurrentLinkedQueue<StreamRecord<String>> expectedBr = new ConcurrentLinkedQueue<>();
expectedBr.add(new StreamRecord<>("BR:5 WM:10 TS:12", 12L));
ConcurrentLinkedQueue<StreamRecord<String>> expectedNonBr = new ConcurrentLinkedQueue<>();
expectedNonBr.add(new StreamRecord<>("NON-BR:6 WM:40 TS:13", 13L));
expectedNonBr.add(new StreamRecord<>("NON-BR:6 WM:40 TS:15", 15L));
ConcurrentLinkedQueue<StreamRecord<String>> brSideOutput = testHarness.getSideOutput(FunctionWithSideOutput.BROADCAST_TAG);
ConcurrentLinkedQueue<StreamRecord<String>> nonBrSideOutput = testHarness.getSideOutput(FunctionWithSideOutput.NON_BROADCAST_TAG);
TestHarnessUtil.assertOutputEquals("Wrong Side Output", expectedBr, brSideOutput);
TestHarnessUtil.assertOutputEquals("Wrong Side Output", expectedNonBr, nonBrSideOutput);
}
}