@Test
public void testSingleChannelAbortCheckpoint() throws Exception {
BufferOrEvent[] sequence = {
createBuffer(0),
createBarrier(1, 0),
createBuffer(0),
createBarrier(2, 0),
createCancellationBarrier(4, 0),
createBarrier(5, 0),
createBuffer(0),
createCancellationBarrier(6, 0),
createBuffer(0)
};
MockInputGate gate = new MockInputGate(PAGE_SIZE, 1, Arrays.asList(sequence));
BarrierTracker tracker = new BarrierTracker(gate);
CheckpointSequenceValidator validator =
new CheckpointSequenceValidator(1, 2, -4, 5, -6);
tracker.registerCheckpointEventHandler(validator);
for (BufferOrEvent boe : sequence) {
if (boe.isBuffer()) {
assertEquals(boe, tracker.getNextNonBlocked());
}
assertTrue(tracker.isEmpty());
}
assertNull(tracker.getNextNonBlocked());
assertNull(tracker.getNextNonBlocked());
}