diff options
author | Phil Burk <[email protected]> | 2016-12-15 19:03:17 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2016-12-15 19:03:17 -0800 |
commit | 1335c910c8e7751368cfcdf23f678805c8638436 (patch) | |
tree | f053c11bb8be905e81e5611297c9d09b6eb525a5 /tests | |
parent | 5aa54887b7bffe4de233474e9687a63f8ae84eb7 (diff) | |
parent | b801f7cad5c1600656ca9205452b01e6a8b192a4 (diff) |
Merge pull request #47 from zgeggy2k/master
Fix deadlock in AudioFifo.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/com/jsyn/engine/TestFifo.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/com/jsyn/engine/TestFifo.java b/tests/com/jsyn/engine/TestFifo.java index e504a0b..cc539d1 100644 --- a/tests/com/jsyn/engine/TestFifo.java +++ b/tests/com/jsyn/engine/TestFifo.java @@ -216,4 +216,35 @@ public class TestFifo extends TestCase { watchdog.interrupt(); } + + public void testBlockReadAndWriteWaitStress() { + final int chunk = 10000000; // 10 Megabytes + final AudioFifo fifo = new AudioFifo(); + fifo.allocate(8); + + fifo.setWriteWaitEnabled(true); + fifo.setReadWaitEnabled(true); + final double value = 50.0; + + // Schedule a delayed write in another thread. + new Thread() { + @Override + public void run() { + try { + sleep(200); + for (int i = 0; i < chunk; i++) { + fifo.write(value + i); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }.start(); + + Thread watchdog = startWatchdog(10000); + for (int i = 0; i < chunk; i++) { + assertEquals("reading back data", value + i, fifo.read()); + } + watchdog.interrupt(); + } } |