@@ -4,6 +4,7 @@ import Prelude hiding (catch)
4import Data.Binary (Binary)
4import Data.Binary (Binary)
5import Data.Typeable (Typeable)
5import Data.Typeable (Typeable)
6import Data.Foldable (forM_)
6import Data.Foldable (forM_)
7+import qualified Data.Map as Map (empty)
7import Control.Concurrent (forkIO, threadDelay)
8import Control.Concurrent (forkIO, threadDelay)
8import Control.Concurrent.MVar ( MVar
9import Control.Concurrent.MVar ( MVar
9 , newEmptyMVar
10 , newEmptyMVar
@@ -43,13 +44,13 @@ testPing transport = do
45 forkIO $ do
46 forkIO $ do
46− localNode <- newLocalNode transport
47+ localNode <- newLocalNode transport Map.empty
47 addr <- forkProcess localNode ping
48 addr <- forkProcess localNode ping
48 putMVar serverAddr addr
49 putMVar serverAddr addr
51 forkIO $ do
52 forkIO $ do
52− localNode <- newLocalNode transport
53+ localNode <- newLocalNode transport Map.empty
53 pingServer <- readMVar serverAddr
54 pingServer <- readMVar serverAddr
55 let numPings = 10000
56 let numPings = 10000
@@ -117,13 +118,13 @@ testMonitorUnreachable transport mOrL un = do
117 done <- newEmptyMVar
118 done <- newEmptyMVar
119 forkIO $ do
120 forkIO $ do
120− localNode <- newLocalNode transport
121+ localNode <- newLocalNode transport Map.empty
121 addr <- forkProcess localNode . liftIO $ threadDelay 1000000
122 addr <- forkProcess localNode . liftIO $ threadDelay 1000000
122 closeLocalNode localNode
123 closeLocalNode localNode
123 putMVar deadProcess addr
124 putMVar deadProcess addr
125 forkIO $ do
126 forkIO $ do
126− localNode <- newLocalNode transport
127+ localNode <- newLocalNode transport Map.empty
127 theirAddr <- readMVar deadProcess
128 theirAddr <- readMVar deadProcess
128 runProcess localNode $
129 runProcess localNode $
129 monitorTestProcess theirAddr mOrL un DiedDisconnect Nothing done
130 monitorTestProcess theirAddr mOrL un DiedDisconnect Nothing done
@@ -138,13 +139,13 @@ testMonitorNormalTermination transport mOrL un = do
138 done <- newEmptyMVar
139 done <- newEmptyMVar
140 forkIO $ do
141 forkIO $ do
141− localNode <- newLocalNode transport
142+ localNode <- newLocalNode transport Map.empty
142 addr <- forkProcess localNode $
143 addr <- forkProcess localNode $
143 liftIO $ readMVar monitorSetup
144 liftIO $ readMVar monitorSetup
144 putMVar monitoredProcess addr
145 putMVar monitoredProcess addr
146 forkIO $ do
147 forkIO $ do
147− localNode <- newLocalNode transport
148+ localNode <- newLocalNode transport Map.empty
148 theirAddr <- readMVar monitoredProcess
149 theirAddr <- readMVar monitoredProcess
149 runProcess localNode $
150 runProcess localNode $
150 monitorTestProcess theirAddr mOrL un DiedNormal (Just monitorSetup) done
151 monitorTestProcess theirAddr mOrL un DiedNormal (Just monitorSetup) done
@@ -161,14 +162,14 @@ testMonitorAbnormalTermination transport mOrL un = do
161 let err = userError "Abnormal termination"
162 let err = userError "Abnormal termination"
163 forkIO $ do
164 forkIO $ do
164− localNode <- newLocalNode transport
165+ localNode <- newLocalNode transport Map.empty
165 addr <- forkProcess localNode . liftIO $ do
166 addr <- forkProcess localNode . liftIO $ do
166 readMVar monitorSetup
167 readMVar monitorSetup
167 throwIO err
168 throwIO err
168 putMVar monitoredProcess addr
169 putMVar monitoredProcess addr
170 forkIO $ do
171 forkIO $ do
171− localNode <- newLocalNode transport
172+ localNode <- newLocalNode transport Map.empty
172 theirAddr <- readMVar monitoredProcess
173 theirAddr <- readMVar monitoredProcess
173 runProcess localNode $
174 runProcess localNode $
174 monitorTestProcess theirAddr mOrL un (DiedException (show err)) (Just monitorSetup) done
175 monitorTestProcess theirAddr mOrL un (DiedException (show err)) (Just monitorSetup) done
@@ -180,7 +181,7 @@ testMonitorLocalDeadProcess :: NT.Transport -> Bool -> Bool -> IO ()
180testMonitorLocalDeadProcess transport mOrL un = do
181testMonitorLocalDeadProcess transport mOrL un = do
181 processDead <- newEmptyMVar
182 processDead <- newEmptyMVar
182 processAddr <- newEmptyMVar
183 processAddr <- newEmptyMVar
183− localNode <- newLocalNode transport
184+ localNode <- newLocalNode transport Map.empty
184 done <- newEmptyMVar
185 done <- newEmptyMVar
186 forkIO $ do
187 forkIO $ do
@@ -203,12 +204,12 @@ testMonitorRemoteDeadProcess transport mOrL un = do
203 done <- newEmptyMVar
204 done <- newEmptyMVar
205 forkIO $ do
206 forkIO $ do
206− localNode <- newLocalNode transport
207+ localNode <- newLocalNode transport Map.empty
207 addr <- forkProcess localNode . liftIO $ putMVar processDead ()
208 addr <- forkProcess localNode . liftIO $ putMVar processDead ()
208 putMVar processAddr addr
209 putMVar processAddr addr
210 forkIO $ do
211 forkIO $ do
211− localNode <- newLocalNode transport
212+ localNode <- newLocalNode transport Map.empty
212 theirAddr <- readMVar processAddr
213 theirAddr <- readMVar processAddr
213 readMVar processDead
214 readMVar processDead
214 runProcess localNode $ do
215 runProcess localNode $ do
@@ -224,14 +225,14 @@ testMonitorDisconnect transport mOrL un = do
224 done <- newEmptyMVar
225 done <- newEmptyMVar
226 forkIO $ do
227 forkIO $ do
227− localNode <- newLocalNode transport
228+ localNode <- newLocalNode transport Map.empty
228 addr <- forkProcess localNode . liftIO $ threadDelay 1000000
229 addr <- forkProcess localNode . liftIO $ threadDelay 1000000
229 putMVar processAddr addr
230 putMVar processAddr addr
230 readMVar monitorSetup
231 readMVar monitorSetup
231 NT.closeEndPoint (localEndPoint localNode)
232 NT.closeEndPoint (localEndPoint localNode)
233 forkIO $ do
234 forkIO $ do
234− localNode <- newLocalNode transport
235+ localNode <- newLocalNode transport Map.empty
235 theirAddr <- readMVar processAddr
236 theirAddr <- readMVar processAddr
236 runProcess localNode $ do
237 runProcess localNode $ do
237 monitorTestProcess theirAddr mOrL un DiedDisconnect (Just monitorSetup) done
238 monitorTestProcess theirAddr mOrL un DiedDisconnect (Just monitorSetup) done
@@ -247,13 +248,13 @@ testMonitor2 transport = do
247 done <- newEmptyMVar
248 done <- newEmptyMVar
249 forkIO $ do
250 forkIO $ do
250− localNode <- newLocalNode transport
251+ localNode <- newLocalNode transport Map.empty
251 addr <- forkProcess localNode $ return ()
252 addr <- forkProcess localNode $ return ()
252 closeLocalNode localNode
253 closeLocalNode localNode
253 putMVar deadProcess addr
254 putMVar deadProcess addr
255 forkIO $ do
256 forkIO $ do
256− localNode <- newLocalNode transport
257+ localNode <- newLocalNode transport Map.empty
257 theirAddr <- readMVar deadProcess
258 theirAddr <- readMVar deadProcess
258 runProcess localNode $ do
259 runProcess localNode $ do
259 monitor theirAddr MaLink
260 monitor theirAddr MaLink
@@ -277,7 +278,7 @@ testMonitor3 transport = do
277 done <- newEmptyMVar
278 done <- newEmptyMVar
279 forkIO $ do
280 forkIO $ do
280− localNode <- newLocalNode transport
281+ localNode <- newLocalNode transport Map.empty
281 -- TODO: what happens when processes terminate?
282 -- TODO: what happens when processes terminate?
282 addr <- forkProcess localNode $ return ()
283 addr <- forkProcess localNode $ return ()
283 putMVar serverAddr addr
284 putMVar serverAddr addr
@@ -287,7 +288,7 @@ testMonitor3 transport = do
287 putMVar serverDead ()
288 putMVar serverDead ()
289 forkIO $ do
290 forkIO $ do
290− localNode <- newLocalNode transport
291+ localNode <- newLocalNode transport Map.empty
291 theirAddr <- readMVar serverAddr
292 theirAddr <- readMVar serverAddr
292 runProcess localNode $ do
293 runProcess localNode $ do
293 monitor theirAddr MaMonitor
294 monitor theirAddr MaMonitor
@@ -315,7 +316,7 @@ testMonitor4 transport = do
315 done <- newEmptyMVar
316 done <- newEmptyMVar
317 forkIO $ do
318 forkIO $ do
318− localNode <- newLocalNode transport
319+ localNode <- newLocalNode transport Map.empty
319 -- TODO: what happens when processes terminate?
320 -- TODO: what happens when processes terminate?
320 addr <- forkProcess localNode $ return ()
321 addr <- forkProcess localNode $ return ()
321 putMVar serverAddr addr
322 putMVar serverAddr addr
@@ -325,7 +326,7 @@ testMonitor4 transport = do
325 putMVar serverDead ()
326 putMVar serverDead ()
327 forkIO $ do
328 forkIO $ do
328− localNode <- newLocalNode transport
329+ localNode <- newLocalNode transport Map.empty
329 theirAddr <- readMVar serverAddr
330 theirAddr <- readMVar serverAddr
330 runProcess localNode $ do
331 runProcess localNode $ do
331 monitor theirAddr MaMonitor
332 monitor theirAddr MaMonitor