Repository : ssh://darcs.haskell.org//srv/darcs/packages/base

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/6b2f322485060d9e8e269363a6a67ed371e8acc1

>---------------------------------------------------------------

commit 6b2f322485060d9e8e269363a6a67ed371e8acc1
Author: Simon Marlow <[email protected]>
Date:   Mon Jun 11 09:51:36 2012 +0100

    add tests for deadlocks in readChan & writeChan

>---------------------------------------------------------------

 tests/Concurrent/Chan002.hs     |   19 +++++++++++++++++++
 tests/Concurrent/Chan002.stdout |    1 +
 tests/Concurrent/Chan003.hs     |   17 +++++++++++++++++
 tests/Concurrent/Chan003.stdout |    1 +
 tests/Concurrent/all.T          |    4 ++++
 5 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/tests/Concurrent/Chan002.hs b/tests/Concurrent/Chan002.hs
new file mode 100644
index 0000000..812298e
--- /dev/null
+++ b/tests/Concurrent/Chan002.hs
@@ -0,0 +1,19 @@
+import Control.Concurrent
+import Control.Exception
+import Control.Monad
+import System.IO
+import System.Environment
+
+-- test for deadlocks
+main = do
+  hSetBuffering stdout NoBuffering
+  [n] <- getArgs
+  replicateM_ (read n) $ do
+         chan <- newChan
+         wid <- forkIO $ forever $ writeChan chan (5::Int)
+         rid <- forkIO $ forever $ void $ readChan chan
+         threadDelay 1000
+         throwTo rid ThreadKilled
+         putStr "."
+         readChan chan
+         throwTo wid ThreadKilled
diff --git a/tests/Concurrent/Chan002.stdout b/tests/Concurrent/Chan002.stdout
new file mode 100644
index 0000000..ab79b98
--- /dev/null
+++ b/tests/Concurrent/Chan002.stdout
@@ -0,0 +1 @@
+....................................................................................................
\ No newline at end of file
diff --git a/tests/Concurrent/Chan003.hs b/tests/Concurrent/Chan003.hs
new file mode 100644
index 0000000..bfadaa8
--- /dev/null
+++ b/tests/Concurrent/Chan003.hs
@@ -0,0 +1,17 @@
+import Control.Concurrent
+import Control.Exception
+import Control.Monad
+import System.IO
+import System.Environment
+
+-- test for deadlocks
+main = do
+  hSetBuffering stdout NoBuffering
+  [n] <- getArgs
+  replicateM_ (read n) $ do
+         chan <- newChan
+         wid <- forkIO $ forever $ writeChan chan (5::Int)
+         threadDelay 3000
+         throwTo wid ThreadKilled
+         putStr "."
+         writeChan chan (3::Int)
diff --git a/tests/Concurrent/Chan003.stdout b/tests/Concurrent/Chan003.stdout
new file mode 100644
index 0000000..e003cf1
--- /dev/null
+++ b/tests/Concurrent/Chan003.stdout
@@ -0,0 +1 @@
+........................................................................................................................................................................................................
\ No newline at end of file
diff --git a/tests/Concurrent/all.T b/tests/Concurrent/all.T
index 004c6a1..35a7547 100644
--- a/tests/Concurrent/all.T
+++ b/tests/Concurrent/all.T
@@ -4,6 +4,10 @@ test('SampleVar001', reqlib('QuickCheck'), compile_and_run, 
['-package QuickChec
 test('4876', reqlib('random'), compile_and_run, ['']) # another SampleVar test
 
 test('Chan001',      reqlib('QuickCheck'), compile_and_run, ['-package 
QuickCheck'])
+
+test('Chan002',      extra_run_opts('100'), compile_and_run, [''])
+test('Chan003',      extra_run_opts('200'), compile_and_run, [''])
+
 test('MVar001',      reqlib('QuickCheck'), compile_and_run, ['-package 
QuickCheck'])
 test('QSemN001',     reqlib('QuickCheck'), compile_and_run, ['-package 
QuickCheck'])
 test('QSem001',      reqlib('QuickCheck'), compile_and_run, ['-package 
QuickCheck'])



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to