Safe Haskell | None |
---|
This module contains a battery of simple tests for queues implementing the interface defined in ` Data.Concurrent.Deque.Class`.
- test_fifo_filldrain :: DequeClass d => d Int -> IO ()
- test_fifo_OneBottleneck :: DequeClass d => Bool -> Int -> d Int -> IO ()
- test_fifo :: DequeClass d => (forall elt. IO (d elt)) -> Test
- test_ws_triv1 :: PopL d => d [Char] -> IO ()
- test_ws_triv2 :: PopL d => d [Char] -> IO ()
- test_wsqueue :: PopL d => (forall elt. IO (d elt)) -> Test
- test_all :: PopL d => (forall elt. IO (d elt)) -> Test
- numElems :: Int
- numAgents :: Int
- producerRatio :: Double
Tests for simple FIFOs.
test_fifo_filldrain :: DequeClass d => d Int -> IO ()Source
This test serially fills up a queue and then drains it.
test_fifo_OneBottleneck :: DequeClass d => Bool -> Int -> d Int -> IO ()Source
test_fifo :: DequeClass d => (forall elt. IO (d elt)) -> TestSource
This creates an HUnit test list to perform all the tests above.
Tests for Work-stealing queues.
test_ws_triv1 :: PopL d => d [Char] -> IO ()Source
Trivial test: push then pop.
test_ws_triv2 :: PopL d => d [Char] -> IO ()Source
Trivial test: push left, pop left and right.
test_wsqueue :: PopL d => (forall elt. IO (d elt)) -> TestSource
Aggregate tests for work stealing queues.
All deque tests, aggregated.
Testing parameters
How many communicating agents are there? By default one per thread used by the RTS.
It is possible to have imbalanced concurrency where there is more contention on the producing or consuming side (which corresponds to settings of this parameter less than or greater than 1).