distributed-process-tests- Tests and test support tools for distributed-process.

Copyright(c) Tim Watson, Jeff Epstein 2013
LicenseBSD3 (see the file LICENSE)
MaintainerTim Watson
Portabilitynon-portable (requires concurrency)
Safe HaskellNone



This module provides basic building blocks for testing Cloud Haskell programs.



type TestResult a = MVar a Source

A mutable cell containing a test result.

data Ping Source

A simple Ping signal



shouldBe :: a -> Matcher a -> Process () Source

shouldContain :: (Show a, Eq a) => [a] -> a -> Process () Source

shouldNotContain :: (Show a, Eq a) => [a] -> a -> Process () Source

data TestProcessControl Source

Control signals used to manage test processes

startTestProcess :: Process () -> Process ProcessId Source

Starts a test process on the local node.

runTestProcess :: Process () -> Process () Source

Runs a test process around the supplied proc, which is executed whenever the outer process loop receives a Go signal.

testProcessGo :: ProcessId -> Process () Source

Tell a test process to continue executing

testProcessStop :: ProcessId -> Process () Source

Tell a test process to stop (i.e., terminate)

testProcessReport :: ProcessId -> Process () Source

Tell a test process to send a report (message) back to the calling process

delayedAssertion :: Eq a => String -> LocalNode -> a -> (TestResult a -> Process ()) -> Assertion Source

Run the supplied testProc using an MVar to collect and assert against its result. Uses the supplied note if the assertion fails.

assertComplete :: Eq a => String -> MVar a -> a -> IO () Source

Takes the value of mv (using takeMVar) and asserts that it matches a

newLogger :: IO Logger Source

Create a new Logger. Logger uses a TQueue to receive and process messages on a worker thread.

putLogMsg :: Logger -> String -> Process () Source

Send a message to the Logger

stopLogger :: Logger -> IO () Source

Stop the worker thread for the given Logger

noop :: Process () Source

Does exactly what it says on the tin, doing so in the Process monad.

stash :: TestResult a -> a -> Process () Source