ZN4      !"#$%&'()*+,-./0123None !"059;AIOTDExtra operations required of transports for the purposes of testing.!The transport to use for testing.5IO action to perform to simulate losing a connection.None!"059;AIOT456789456789!(c) Tim Watson, Jeff Epstein 2013BSD3 (see the file LICENSE) Tim Watson experimental#non-portable (requires concurrency)None!"059;AIOTControl signals used to manage test processes A simple Ping signal (A mutable cell containing a test result. 6Does exactly what it says on the tin, doing so in the Process monad.Run the supplied testProc using an MVar> to collect and assert against its result. Uses the supplied note if the assertion fails.Takes the value of mv (using takeMVar) and asserts that it matches a$Create a new Logger. Logger uses a :4 to receive and process messages on a worker thread.Send a message to the Logger+Stop the worker thread for the given Logger(Starts a test process on the local node.Runs a  test process around the supplied proc@, which is executed whenever the outer process loop receives a ; signal.Tell a  test process to continue executingTell a  test process to stop (i.e., <)Tell a  test process8 to send a report (message) back to the calling process"=>?@;A       =>?@;A  None !"059;AIOT BCDEFGH%&%%BCDEFGH%&None !"059;AIOTIJK)))IJK)None !"059;AIOTLSets the value of an environment variable while executing the given IO computation and restores the preceeding value upon completion.MTests 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.NRTests that one and only one trace message is produced when a message is received.ONTests that one and only one trace message is produced when a message is sent.PJTests that one and only one trace message is produced when a process dies.QHTests that one and only one trace message appears when a process spawns.RPTests that one and only one trace message appears when a process is registered.SRTests that one and only one trace message appears when a process is unregistered.TUVWXYZ[LMNOPQRS***TUVWXYZ[LMNOPQRS*None!"059;ADIOT\2First argument indicates empty closure environment]hTests that spawn executes the supplied closure even if the caller dies immediately after calling spawn.uThis 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 ().^_u used to ave a race condition which would be triggered if the spawning process terminates immediately after spawningG`abcdefghi\jklmnopqrstuvwxyz{|}~]^+++G`abcdefghi\jklmnopqrstuvwxyz{|}~]^+None !"059;AIOTALike fork, but throw exceptions in the child thread to the parentThe ping server from the paper9Quick and dirty synchronous version of whereisRemoteAsync Monitor or link to a remote nodeBasic ping test(Monitor a process on an unreachable node+Monitor a process which terminates normally-Monitor a process which terminates abnormally,Monitor a local process that is already dead-Monitor a remote process that is already dead+Monitor a process that becomes disconnected(Test the math server (i.e., receiveWait)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)Test (non-zero) timeoutTest zero timeoutTest typed channelsTest merging receive portsVTests that unreliable messages arrive sorted even when there are connection failures.Test . This repeats the $ but with a proxy server in betweenTest . This repeats the 7 but with a proxy server in between, however we block  requests ....Test . We provide an echo7 server, but it ignores requests unless the text body /= "bar"X - this case should time out rather than removing the message from the process mailbox.JTest Functor, Applicative, Alternative and Monad instances for ReceiveChanF for monitor,  for linkProcess to monitor/link to2MVar to signal on once the monitor has been set up,-./,,A,-./       !"#$%&'()*+ ,-.    /01'*23456789:;<=>?@ ABCDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`>abcdefghijklmnopqrstuvwxyz{|}~>?>?6distributed-process-tests-0.4.8-FqsZPt4e035F2qH59rtxlNNetwork.Transport.Test)Control.Distributed.Process.Tests.Receive0Control.Distributed.Process.Tests.Internal.Utils$Control.Distributed.Process.Tests.Mx'Control.Distributed.Process.Tests.Stats)Control.Distributed.Process.Tests.Tracing)Control.Distributed.Process.Tests.Closure$Control.Distributed.Process.Tests.CH TestTransport testTransporttestBreakConnectiontestsLoggerTestProcessControlPing TestResultpingnoopsynchronisedAssertionstash expectThatshouldBe shouldContainshouldNotContain shouldMatchdelayedAssertionassertComplete newLogger putLogMsg stopLoggerstartTestProcessrunTestProcess testProcessGotestProcessStoptestProcessReport tryRunProcesstryForkProcess$fBinaryTestProcessControl $fBinaryPing $fGenericPing$fEqPing $fShowPing$fGenericTestProcessControl$fBinaryPublish$fGenericPublish $fEqPublish$fBinaryDivByZero$fBinaryDivide $fBinaryAdd $fBinaryPong $fShowPongrecTest1recTest2recTest3recTest4master testReceive"stm-2.4.4.1-JQn4hNPyYjP5m9AcbI88VeControl.Concurrent.STM.TQueueTQueueGo0distributed-process-0.6.6-9FMMuFy6nam1rRJFUNfEc0/Control.Distributed.Process.Internal.Primitives terminate_tidmsgsStopReportPublishtestAgentBroadcasttestAgentDualInputtestAgentPrioritisationtestAgentMailboxHandlingtestAgentEventHandlingtestLocalDeadProcessInfotestLocalLiveProcessInfotestRemoteLiveProcessInfowithEnvtestSystemLoggerMsgtestSystemLoggerMxReceivetestSystemLoggerMxSenttestSystemLoggerMxProcessDiedtestSystemLoggerMxSpawnedtestSystemLoggerMxRegisteredtestSystemLoggerMxUnRegisteredtestSpawnTracingtestTraceRecvExplicitPidtestTraceRecvNamedPidtestTraceSendingtestTraceRegistrationtestTraceUnRegistrationtestTraceLayeringtestRemoteTraceRelaytypedPingServer testSpawnRacetestSpawnTerminate*Control.Distributed.Process.Internal.Spawnspawndfib quintuplesdictInt factorialaddIntputIntsendPidwait expectUnitisPrimesignalfactorial__staticfactorial__sdictfactorial__tdictaddInt__static addInt__sdictputInt__static putInt__sdictsendPid__staticsendPid__sdictsendPid__tdictsdictInt__static wait__static wait__sdict wait__tdictexpectUnit__statictypedPingServer__statictypedPingServer__sdictisPrime__staticisPrime__sdictisPrime__tdictquintuple__staticsignal__static signal__sdict signal__tdict __remoteTable randomElement dfib__static dfib__sdict dfib__tdict__remoteTableDeclstaticQuintuplefactorialClosure addIntClosure putIntClosuresendPidClosuresendFac factorialOf factorial' waitClosuresimulateNetworkFailure testUnclosuretestBindtestSendPureClosuretestSendIOClosuretestSendProcClosure testSpawntestCall testCallBindtestSeqtestSpawnSupervisedtestSpawnInvalidtestClosureExpecttestSpawnChannel testTDicttestFibtestSpawnReconnectforkTry whereisRemote monitorOrLinktestPingtestMonitorUnreachabletestMonitorNormalTerminationtestMonitorAbnormalTerminationtestMonitorLocalDeadProcesstestMonitorRemoteDeadProcesstestMonitorDisconnecttestMathtestSendToTerminated testTimeout testTimeout0testTypedChannelstestMergeChannels testUSend testMatchAnymatchAnytestMatchAnyHandleDividetestMatchAnyIf matchAnyIftestReceiveChanFeatures DivByZeroAddPongmathghc-prim GHC.TypesTrueFalsemonitorTestProcess testTerminatetestMonitorNodetestMonitorLiveNodetestMonitorChannel testRegistrytestRegistryRemoteProcesstestRemoteRegistrytestRemoteRegistryRemoteProcesstestSpawnLocaltestSpawnAsyncStrictness testReconnecttestMatchAnyNoHandletestMatchMessageWithUnwraptestReceiveChanTimeout testKillLocaltestKillRemotetestCatchesExittestHandleMessageIf testCatchestestMaskRestoreScopetestDietestPrettyExit testExitLocaltestExitRemotetestUnsafeSendtestUnsafeUSendtestUnsafeNSendtestUnsafeNSendRemotetestUnsafeSendChan testCallLocalsyncBreakConnection