@@ -302,19 +302,25 @@ testMonitorRemoteDeadProcess TestTransport{..} mOrL un = do
302
302
testMonitorDisconnect :: TestTransport -> Bool -> Bool -> Assertion
303
303
testMonitorDisconnect TestTransport {.. } mOrL un = do
304
304
processAddr <- newEmptyMVar
305
+ processAddr2 <- newEmptyMVar
305
306
monitorSetup <- newEmptyMVar
306
307
done <- newEmptyMVar
307
308
308
309
forkIO $ do
309
310
localNode <- newLocalNode testTransport initRemoteTable
310
311
addr <- forkProcess localNode . liftIO $ threadDelay 1000000
312
+ addr2 <- forkProcess localNode $ return ()
311
313
putMVar processAddr addr
312
314
readMVar monitorSetup
313
315
NT. closeEndPoint (localEndPoint localNode)
316
+ putMVar processAddr2 addr2
314
317
315
318
forkIO $ do
316
319
localNode <- newLocalNode testTransport initRemoteTable
317
320
theirAddr <- readMVar processAddr
321
+ forkProcess localNode $ do
322
+ lc <- liftIO $ readMVar processAddr2
323
+ send lc ()
318
324
runProcess localNode $ do
319
325
monitorTestProcess theirAddr mOrL un DiedDisconnect (Just monitorSetup) done
320
326
@@ -583,17 +589,22 @@ testMonitorLiveNode :: TestTransport -> Assertion
583
589
testMonitorLiveNode TestTransport {.. } = do
584
590
[node1, node2] <- replicateM 2 $ newLocalNode testTransport initRemoteTable
585
591
ready <- newEmptyMVar
592
+ readyr <- newEmptyMVar
586
593
done <- newEmptyMVar
587
594
595
+ p <- forkProcess node1 $ return ()
588
596
forkProcess node2 $ do
589
597
ref <- monitorNode (localNodeId node1)
590
598
liftIO $ putMVar ready ()
599
+ liftIO $ takeMVar readyr
600
+ send p ()
591
601
NodeMonitorNotification ref' nid _ <- expect
592
602
True <- return $ ref == ref' && nid == localNodeId node1
593
603
liftIO $ putMVar done ()
594
604
595
605
takeMVar ready
596
606
closeLocalNode node1
607
+ putMVar readyr ()
597
608
598
609
takeMVar done
599
610
@@ -734,7 +745,8 @@ testReconnect TestTransport{..} = do
734
745
735
746
736
747
-- Simulate network failure
737
- liftIO $ testBreakConnection (nodeAddress nid1) (nodeAddress nid2)
748
+ liftIO $ do testBreakConnection (nodeAddress nid1) (nodeAddress nid2)
749
+ threadDelay 1000000
738
750
739
751
-- This will happen due to implicit reconnect
740
752
registerRemoteAsync nid1 " b" us
0 commit comments