Îõ³h*ýM4      !"#$%&'()*+,-./0123 0.5.0!(c) Tim Watson, Jeff Epstein 2013BSD3 (see the file LICENSE) Tim Watson experimental#non-portable (requires concurrency) Safe-Inferred%&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   Safe-Inferred %&7<ÂÄÊÒØÝt distributed-process-testsÄExtra operations required of transports for the purposes of testing."distributed-process-tests!The transport to use for testing.#distributed-process-tests5IO action to perform to simulate losing a connection. #"! #"! Safe-Inferred %&7<ÂÄÊÒØÝ´$$ Safe-Inferred %&7<ÂÄÊÒØÝî%% Safe-Inferred%&7<ÂÄÊÒØÝ *&& Safe-Inferred %&7<ÂÄÊÒØÝ d'' Safe-Inferred%&7<ÂÄÊÍÒØÝ =7distributed-process-tests2First argument indicates empty closure environment8distributed-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 ().9distributed-process-tests:õ used to ave a race condition which would be triggered if the spawning process terminates immediately after spawning++ Safe-Inferred %&7<ÂÄÊÒØÝG;distributed-process-testsÁLike fork, but throw exceptions in the child thread to the parent<distributed-process-testsThe ping server from the paper=distributed-process-tests9Quick and dirty synchronous version of whereisRemoteAsync>distributed-process-tests Monitor or link to a remote node?distributed-process-testsBasic ping test@distributed-process-tests(Monitor a process on an unreachable nodeAdistributed-process-tests+Monitor a process which terminates normallyBdistributed-process-tests-Monitor a process which terminates abnormallyCdistributed-process-tests,Monitor a local process that is already deadDdistributed-process-tests-Monitor a remote process that is already deadEdistributed-process-tests+Monitor a process that becomes disconnectedFdistributed-process-tests(Test the math server (i.e., receiveWait)Gdistributed-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)Hdistributed-process-testsTest (non-zero) timeoutIdistributed-process-testsTest zero timeoutJdistributed-process-testsTest typed channelsKdistributed-process-testsTest merging receive portsLdistributed-process-testsÖTests that unreliable messages arrive sorted even when there are connection failures.Mdistributed-process-testsTest N. This repeats the F$ but with a proxy server in betweenOdistributed-process-testsTest N. This repeats the F7 but with a proxy server in between, however we block P requests ....Qdistributed-process-testsTest R. 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.Sdistributed-process-testsÊTest Functor, Applicative, Alternative and Monad instances for ReceiveChan>distributed-process-testsT for monitor, U for linkdistributed-process-testsProcess to monitor/link todistributed-process-tests2MVar to signal on once the monitor has been set up,,Ö      !"#$%&'())*+,,,,-./,,01234#(56789:;<=>9?@ABCDEFGHIJKLMNOPQR9:STUV9:WXYZ[YZ\Ý6distributed-process-tests-0.5.0-JeBrboQQ3nuC0ef3hUBNQ50Control.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 TestResultpingnoopsynchronisedAssertionstash expectThatshouldBe shouldContainshouldNotContain shouldMatchdelayedAssertionassertComplete newLogger putLogMsg stopLoggerstartTestProcessrunTestProcess testProcessGotestProcessStoptestProcessReport tryRunProcesstryForkProcess $fBinaryPing$fBinaryTestProcessControl$fGenericTestProcessControl $fGenericPing$fEqPing $fShowPing TestTransport testTransporttestBreakConnectiontests$fBinaryPublish$fGenericPublish $fEqPublish $fBinaryAdd$fBinaryDivide$fBinaryDivByZero $fBinaryPong $fShowPong stm-2.5.1.0Control.Concurrent.STM.TQueueTQueueGo0distributed-process-0.7.6-66d2rA6Bpnr9t7nKjpdmTE/Control.Distributed.Process.Internal.Primitives terminatetypedPingServer testSpawnRacetestSpawnTerminate*Control.Distributed.Process.Internal.SpawnspawnforkTry whereisRemote monitorOrLinktestPingtestMonitorUnreachabletestMonitorNormalTerminationtestMonitorAbnormalTerminationtestMonitorLocalDeadProcesstestMonitorRemoteDeadProcesstestMonitorDisconnecttestMathtestSendToTerminated testTimeout testTimeout0testTypedChannelstestMergeChannels testUSend testMatchAnymatchAnytestMatchAnyHandleDividetestMatchAnyIf matchAnyIftestReceiveChanFeaturesghc-prim GHC.TypesTrueFalse