Îõ³h,ü"4      !"#$%&'()*+,-./0123 0.5.1!(c) Tim Watson, Jeff Epstein 2013BSD3 (see the file LICENSE) Tim Watson experimental#non-portable (requires concurrency)None%&7<ÂÄÊÒØÝdistributed-process-testsControl signals used to manage test processesdistributed-process-tests A simple Ping signaldistributed-process-tests(A mutable cell containing a test result.distributed-process-tests6Does exactly what it says on the tin, doing so in the Process monad. distributed-process-testsRun the supplied testProc using an MVar> to collect and assert against its result. Uses the supplied note if the assertion fails. distributed-process-testsTakes the value of mv (using takeMVar) and asserts that it matches adistributed-process-tests$Create a new Logger. Logger uses a 44 to receive and process messages on a worker thread.distributed-process-testsSend a message to the Loggerdistributed-process-tests+Stop the worker thread for the given Loggerdistributed-process-tests(Starts a test process on the local node.distributed-process-testsRuns a  test process around the supplied procÀ, which is executed whenever the outer process loop receives a 5 signal.distributed-process-testsTell a  test process to continue executingdistributed-process-testsTell a  test process to stop (i.e., 6)distributed-process-testsTell a  test process8 to send a report (message) back to the calling process      None %&7<ÂÄÊÒØÝ_ distributed-process-testsÄExtra operations required of transports for the purposes of testing."distributed-process-tests5IO action to perform to simulate losing a connection.#distributed-process-tests!The transport to use for testing. !"# "#!None %&7<ÂÄÊÒØÝ ®7distributed-process-tests†Sets the value of an environment variable while executing the given IO computation and restores the preceeding value upon completion.8distributed-process-tests©Tests that one and only one interesting trace message is produced when a given action is performed. A message is considered interesting when the given function return True.9distributed-process-testsÒTests that one and only one trace message is produced when a message is received.:distributed-process-testsÎTests that one and only one trace message is produced when a message is sent.;distributed-process-testsÊTests that one and only one trace message is produced when a process dies.<distributed-process-testsÈTests that one and only one trace message appears when a process spawns.=distributed-process-testsÐTests that one and only one trace message appears when a process is registered.>distributed-process-testsÒTests that one and only one trace message appears when a process is unregistered.$$None %&7<ÂÄÊÒØÝ à%%None%&7<ÂÄÊÒØÝ &&None %&7<ÂÄÊÏÒØÝ H''None%&7<ÂÄÊÍÒØÝ?distributed-process-tests2First argument indicates empty closure environment@distributed-process-testsèTests that spawn executes the supplied closure even if the caller dies immediately after calling spawn.õThis situation is of interest because the implementation of spawn has the remote peer monitor the caller. See DP-99.The condition is tested by using a transport which refuses to send to the remote peer the message that it is waiting to stop monitoring the caller, namely ().Adistributed-process-testsBõ used to ave a race condition which would be triggered if the spawning process terminates immediately after spawning++None %&7<ÂÄÊÒØÝCdistributed-process-testsÁLike fork, but throw exceptions in the child thread to the parentDdistributed-process-testsThe ping server from the paperEdistributed-process-tests9Quick and dirty synchronous version of whereisRemoteAsyncFdistributed-process-tests Monitor or link to a remote nodeGdistributed-process-testsBasic ping testHdistributed-process-tests(Monitor a process on an unreachable nodeIdistributed-process-tests+Monitor a process which terminates normallyJdistributed-process-tests-Monitor a process which terminates abnormallyKdistributed-process-tests,Monitor a local process that is already deadLdistributed-process-tests-Monitor a remote process that is already deadMdistributed-process-tests+Monitor a process that becomes disconnectedNdistributed-process-tests(Test the math server (i.e., receiveWait)Odistributed-process-testsÒSend first message (i.e. connect) to an already terminated process (without monitoring); then send another message to a second process on the same remote node (we're checking that the remote node did not die)Pdistributed-process-testsTest (non-zero) timeoutQdistributed-process-testsTest zero timeoutRdistributed-process-testsTest typed channelsSdistributed-process-testsTest merging receive portsTdistributed-process-testsÖTests that unreliable messages arrive sorted even when there are connection failures.Udistributed-process-testsTest V. This repeats the N$ but with a proxy server in betweenWdistributed-process-testsTest V. This repeats the N7 but with a proxy server in between, however we block X requests ....Ydistributed-process-testsTest Z. We provide an echo7 server, but it ignores requests unless the text body /= "bar"Ø - this case should time out rather than removing the message from the process mailbox.[distributed-process-testsÊTest Functor, Applicative, Alternative and Monad instances for ReceiveChanFdistributed-process-tests\ for monitor, ] for linkdistributed-process-testsProcess to monitor/link todistributed-process-tests2MVar to signal on once the monitor has been set up,,Þ      !"#$%&'()))*)+,,,,-./,,01234!(56789:;<=>?@ABCDEF9GHIJKLMNOPQRSTUVWXYZ9:[\]^9:_`abcabdå6distributed-process-tests-0.5.1-GULgwIE5B40IoqlAMr0pxl0Control.Distributed.Process.Tests.Internal.UtilsNetwork.Transport.Test)Control.Distributed.Process.Tests.Tracing'Control.Distributed.Process.Tests.Stats)Control.Distributed.Process.Tests.Receive$Control.Distributed.Process.Tests.Mx)Control.Distributed.Process.Tests.Closure$Control.Distributed.Process.Tests.CHdistributed-process-testsLoggerTestProcessControlPing TestResultpingnooppausesynchronisedAssertionstash shouldContainshouldNotContaindelayedAssertionassertComplete newLogger putLogMsg stopLoggerstartTestProcessrunTestProcess testProcessGotestProcessStoptestProcessReport tryRunProcesstryForkProcess $fBinaryPing$fBinaryTestProcessControl$fBinaryPrivate$fGenericPrivate$fGenericTestProcessControl $fGenericPing$fEqPing $fShowPing TestTransporttestBreakConnection testTransporttests$fBinaryPublish$fGenericPublish $fEqPublish $fBinaryAdd$fBinaryDivide$fBinaryDivByZero $fBinaryPong $fShowPongstm-2.5.2.1-cbb2Control.Concurrent.STM.TQueueTQueueGo0distributed-process-0.7.7-4gYrLR4oST6Dda3hY90bD6/Control.Distributed.Process.Internal.Primitives terminatewithEnvtestSystemLoggerMsgtestSystemLoggerMxReceivetestSystemLoggerMxSenttestSystemLoggerMxProcessDiedtestSystemLoggerMxSpawnedtestSystemLoggerMxRegisteredtestSystemLoggerMxUnRegisteredtypedPingServer testSpawnRacetestSpawnTerminate*Control.Distributed.Process.Internal.SpawnspawnforkTry whereisRemote monitorOrLinktestPingtestMonitorUnreachabletestMonitorNormalTerminationtestMonitorAbnormalTerminationtestMonitorLocalDeadProcesstestMonitorRemoteDeadProcesstestMonitorDisconnecttestMathtestSendToTerminated testTimeout testTimeout0testTypedChannelstestMergeChannels testUSend testMatchAnymatchAnytestMatchAnyHandleDividetestMatchAnyIf matchAnyIftestReceiveChanFeaturesghc-prim GHC.TypesTrueFalse