aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPhil Burk <[email protected]>2016-12-15 19:03:17 -0800
committerGitHub <[email protected]>2016-12-15 19:03:17 -0800
commit1335c910c8e7751368cfcdf23f678805c8638436 (patch)
treef053c11bb8be905e81e5611297c9d09b6eb525a5 /tests
parent5aa54887b7bffe4de233474e9687a63f8ae84eb7 (diff)
parentb801f7cad5c1600656ca9205452b01e6a8b192a4 (diff)
Merge pull request #47 from zgeggy2k/master
Fix deadlock in AudioFifo.
Diffstat (limited to 'tests')
-rw-r--r--tests/com/jsyn/engine/TestFifo.java31
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();
+ }
}