use of org.apache.flink.streaming.runtime.streamrecord.StreamElement in project flink by apache.
the class EmitterTest method testEmitterWithOrderedQueue.
/**
* Tests that the emitter outputs completed stream element queue entries.
*/
@Test
public void testEmitterWithOrderedQueue() throws Exception {
Object lock = new Object();
List<StreamElement> list = new ArrayList<>();
Output<StreamRecord<Integer>> output = new CollectorOutput<>(list);
List<StreamElement> expected = Arrays.asList(new StreamRecord<>(1, 0L), new StreamRecord<>(2, 0L), new StreamRecord<>(3, 1L), new StreamRecord<>(4, 1L), new Watermark(3L), new StreamRecord<>(5, 4L), new StreamRecord<>(6, 4L));
OperatorActions operatorActions = mock(OperatorActions.class);
final int capacity = 5;
StreamElementQueue queue = new OrderedStreamElementQueue(capacity, executor, operatorActions);
final Emitter<Integer> emitter = new Emitter<>(lock, output, queue, operatorActions);
final Thread emitterThread = new Thread(emitter);
emitterThread.start();
try {
StreamRecordQueueEntry<Integer> record1 = new StreamRecordQueueEntry<>(new StreamRecord<>(1, 0L));
StreamRecordQueueEntry<Integer> record2 = new StreamRecordQueueEntry<>(new StreamRecord<>(2, 1L));
WatermarkQueueEntry watermark1 = new WatermarkQueueEntry(new Watermark(3L));
StreamRecordQueueEntry<Integer> record3 = new StreamRecordQueueEntry<>(new StreamRecord<>(3, 4L));
queue.put(record1);
queue.put(record2);
queue.put(watermark1);
queue.put(record3);
record2.collect(Arrays.asList(3, 4));
record1.collect(Arrays.asList(1, 2));
record3.collect(Arrays.asList(5, 6));
synchronized (lock) {
while (!queue.isEmpty()) {
lock.wait();
}
}
Assert.assertEquals(expected, list);
} finally {
emitter.stop();
emitterThread.interrupt();
}
}
Aggregations