void maintenance() { buffer.maintenance(); }
@Override public void run() { while ( !end ) { buffer.maintenance(); LockSupport.parkNanos( nanoInterval ); } }
@Test public void shouldClearPreviousChunks() { // GIVEN Consumer<long[]> consumer = mock( Consumer.class ); final AtomicBoolean safeThreshold = new AtomicBoolean( false ); DelayedBuffer<Long> buffer = new DelayedBuffer<>( singleton( 0L ), t -> safeThreshold.get(), 10, consumer ); // three chunks buffer.offer( 0 ); buffer.maintenance(); buffer.offer( 1 ); buffer.maintenance(); buffer.offer( 2 ); buffer.maintenance(); // WHEN safeThreshold.set( true ); buffer.clear(); buffer.maintenance(); // THEN verifyNoMoreInteractions( consumer ); }
@Test public void shouldClearCurrentChunk() { // GIVEN Consumer<long[]> consumer = mock( Consumer.class ); DelayedBuffer<Long> buffer = new DelayedBuffer<>( singleton( 0L ), Predicates.alwaysTrue(), 10, consumer ); buffer.offer( 0 ); buffer.offer( 1 ); buffer.offer( 2 ); // WHEN buffer.clear(); buffer.maintenance(); // THEN verifyNoMoreInteractions( consumer ); }
buffer.maintenance(); assertEquals( 0, consumer.chunksAccepted() ); buffer.maintenance(); assertEquals( 0, consumer.chunksAccepted() ); buffer.offer( 8 ); buffer.maintenance(); assertEquals( 0, consumer.chunksAccepted() ); buffer.maintenance(); consumer.assertHaveOnlySeen( 1, 4, 5, 7 ); buffer.maintenance(); consumer.assertHaveOnlySeen( 1, 2, 4, 5, 7, 8 ); buffer.maintenance(); consumer.assertHaveOnlySeen( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 );
void maintenance() { buffer.maintenance(); }