git.iko.soy/distributed-process
on master help sign in
Additional test case for monitoring a "live" node that subsequently dies
aa42de9Tim Watson
tests/TestCH.hs+19
@@ -561,6 +561,24 @@ testMonitorNode transport = do
561
561
562 takeMVar done
562 takeMVar done
563
563
564+testMonitorLiveNode :: NT.Transport -> Assertion
565+testMonitorLiveNode transport = do
566+ [node1, node2] <- replicateM 2 $ newLocalNode transport initRemoteTable
567+ ready <- newEmptyMVar
568+ done <- newEmptyMVar
569+
570+ forkProcess node2 $ do
571+ ref <- monitorNode (localNodeId node1)
572+ liftIO $ putMVar ready ()
573+ NodeMonitorNotification ref' nid _ <- expect
574+ True <- return $ ref == ref' && nid == localNodeId node1
575+ liftIO $ putMVar done ()
576+
577+ takeMVar ready
578+ closeLocalNode node1
579+
580+ takeMVar done
581+
564testMonitorChannel :: NT.Transport -> Assertion
582testMonitorChannel :: NT.Transport -> Assertion
565testMonitorChannel transport = do
583testMonitorChannel transport = do
566 [node1, node2] <- replicateM 2 $ newLocalNode transport initRemoteTable
584 [node1, node2] <- replicateM 2 $ newLocalNode transport initRemoteTable
@@ -1281,6 +1299,7 @@ tests (transport, transportInternals) = [
1281 , testCase "UnlinkDisconnect" (testMonitorDisconnect transport False True)
1299 , testCase "UnlinkDisconnect" (testMonitorDisconnect transport False True)
1282 -- Monitoring nodes and channels
1300 -- Monitoring nodes and channels
1283 , testCase "MonitorNode" (testMonitorNode transport)
1301 , testCase "MonitorNode" (testMonitorNode transport)
1302+ , testCase "MonitorLiveNode" (testMonitorLiveNode transport)
1284 , testCase "MonitorChannel" (testMonitorChannel transport)
1303 , testCase "MonitorChannel" (testMonitorChannel transport)
1285 -- Reconnect
1304 -- Reconnect
1286 , testCase "Reconnect" (testReconnect transport transportInternals)
1305 , testCase "Reconnect" (testReconnect transport transportInternals)