@@ -1556,24 +1556,22 @@ testRegistryMonitoring :: TestTransport -> Assertion
15561556testRegistryMonitoring TestTransport{..} = do
15571557 node1 <- newLocalNode testTransport initRemoteTable
15581558 node2 <- newLocalNode testTransport initRemoteTable
1559+ waitH <- newEmptyMVar
15591560
15601561 let nid = localNodeId node2
15611562 pid <- forkProcess node1 $ do
15621563 self <- getSelfPid
15631564 runUntilRegistered nid self
1564− say $ (show self) ++ " registered as " ++ regName
1565− expect :: Process ()
1566− say $ (show self) ++ " exiting normally"
1565+ say $ regName ++ " registered to " ++ show self
1566+ liftIO $ takeMVar waitH
15671567
15681568 runProcess node2 $ do
15691569 register regName pid
1570− say $ regName ++ " registered to " ++ show pid
15711570 res <- whereis regName
1572− send pid ()
1573− say $ " sent finish signal to " ++ show pid
15741571 us <- getSelfPid
1575− liftIO $ assertBool "expected (Just pid)" $ res == (Just pid)
1576−
1572+ liftIO $ do
1573+ putMVar waitH ()
1574+ assertBool "expected (Just pid)" $ res == (Just pid)
15771575
15781576 -- This delay isn't essential!
15791577 -- The test case passes perfectly fine without it (feel free to comment out
@@ -1612,13 +1610,11 @@ testRegistryMonitoring TestTransport{..} = do
16121610
16131611 delayUntilMaybeUnregistered nid p = do
16141612 whereisRemoteAsync nid regName
1615− res <- receiveTimeout 20000000 {- 20 sec delay -} [
1613+ receiveTimeout 20000000 {- 20 sec delay -} [
16161614 matchIf (\(WhereIsReply n p) -> n == regName && isNothing p)
16171615 (const $ return ())
16181616 ]
1619− case res of
1620− Just () -> return ()
1621− Nothing -> delayUntilMaybeUnregistered nid p
1617+ return ()
16221618
16231619 regName = "testRegisterRemote"
16241620