@@ -1556,24 +1556,20 @@ testRegistryMonitoring :: TestTransport -> Assertion
1556testRegistryMonitoring TestTransport{..} = do
1556testRegistryMonitoring TestTransport{..} = do
1557 node1 <- newLocalNode testTransport initRemoteTable
1557 node1 <- newLocalNode testTransport initRemoteTable
1558 node2 <- newLocalNode testTransport initRemoteTable
1558 node2 <- newLocalNode testTransport initRemoteTable
1559+ waitH <- newEmptyMVar
1560 let nid = localNodeId node2
1561 let nid = localNodeId node2
1561 pid <- forkProcess node1 $ do
1562 pid <- forkProcess node1 $ do
1563− runUntilRegistered nid self
1563+ getSelfPid >>= runUntilRegistered nid
1564− say $ (show self) ++ " registered as " ++ regName
1564+ liftIO $ takeMVar waitH
1565− expect :: Process ()
1566− say $ (show self) ++ " exiting normally"
1568 runProcess node2 $ do
1566 runProcess node2 $ do
1569 register regName pid
1567 register regName pid
1570− say $ regName ++ " registered to " ++ show pid
1571 res <- whereis regName
1568 res <- whereis regName
1573− say $ " sent finish signal to " ++ show pid
1574 us <- getSelfPid
1569 us <- getSelfPid
1575− liftIO $ assertBool "expected (Just pid)" $ res == (Just pid)
1572+ assertBool "expected (Just pid)" $ res == (Just pid)
1578 -- This delay isn't essential!
1574 -- This delay isn't essential!
1579 -- The test case passes perfectly fine without it (feel free to comment out
1575 -- The test case passes perfectly fine without it (feel free to comment out
@@ -1598,9 +1594,7 @@ testRegistryMonitoring TestTransport{..} = do
1598 regHere <- newEmptyMVar
1594 regHere <- newEmptyMVar
1599 runProcess node2 $ whereis regName >>= liftIO . putMVar regHere
1595 runProcess node2 $ whereis regName >>= liftIO . putMVar regHere
1600 res <- takeMVar regHere
1596 res <- takeMVar regHere
1602− Nothing -> return ()
1603− Just pid -> assertBool ("expected Nothing, but got " ++ show pid) False
1597+ assertBool "expected Nothing, but process still registered" (res == Nothing)
1606 runUntilRegistered nid us = do
1600 runUntilRegistered nid us = do
@@ -1612,13 +1606,11 @@ testRegistryMonitoring TestTransport{..} = do
1613 delayUntilMaybeUnregistered nid p = do
1607 delayUntilMaybeUnregistered nid p = do
1614 whereisRemoteAsync nid regName
1608 whereisRemoteAsync nid regName
1615− res <- receiveTimeout 20000000 {- 20 sec delay -} [
1609+ receiveTimeout 20000000 {- 20 sec delay -} [
1616− matchIf (\(WhereIsReply n p) -> n == regName && isNothing p)
1610+ matchIf (\(WhereIsReply n p) -> n == regName && p == Nothing)
1617 (const $ return ())
1611 (const $ return ())
1620− Just () -> return ()
1613+ return ()
1621− Nothing -> delayUntilMaybeUnregistered nid p
1623 regName = "testRegisterRemote"
1615 regName = "testRegisterRemote"