Testing Timeout Blocking Strategy Implementation in LMAX-Disruptor
This test suite evaluates the TimeoutBlockingWaitStrategy implementation in the LMAX Disruptor library, focusing on timeout behavior in concurrent operations. The tests verify that the waiting mechanism correctly handles timeout scenarios and enforces specified time limits for blocking operations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
lmax-exchange/disruptor
src/test/java/com/lmax/disruptor/TimeoutBlockingWaitStrategyTest.java
package com.lmax.disruptor;
import com.lmax.disruptor.support.DummySequenceBarrier;
import org.junit.jupiter.api.Test;
import java.util.concurrent.TimeUnit;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class TimeoutBlockingWaitStrategyTest
{
@Test
public void shouldTimeoutWaitFor()
{
final SequenceBarrier sequenceBarrier = new DummySequenceBarrier();
long theTimeout = 500;
TimeoutBlockingWaitStrategy waitStrategy = new TimeoutBlockingWaitStrategy(theTimeout, TimeUnit.MILLISECONDS);
Sequence cursor = new Sequence(5);
long t0 = System.currentTimeMillis();
assertThrows(TimeoutException.class, () -> waitStrategy.waitFor(6, cursor, cursor, sequenceBarrier));
long t1 = System.currentTimeMillis();
long timeWaiting = t1 - t0;
assertTrue(timeWaiting >= theTimeout);
}
}