ClientUtils.RunLink.Session (client_utils v0.4.1)
View SourceA run's side of its link to the harness, registered on the run's node.
Each event gets the next seq and is held until the harness acknowledges
it ({:run_ack, run_id, seq} acknowledges everything up to seq). While
connected, it is sent as {:run_event, run_id, session, seq, event} (the
session's pid, as spex shards share a run id and each counts from 1) to the harness's
listener. When the listener goes, the run carries on: about once a second
it looks for a listening harness (the one it was started by, or another on
the same host under the same name prefix, since a restarted harness has a
new node name), and on finding one sends {:run_rejoin, run_id, node(), session} and replays what was not acknowledged, in order.
A harness answers a rejoin with {:run_adopted, run_id} before anything is
replayed, or {:run_refused, run_id} when it does not serve this run (two
harnesses on one host), and the session tries the next one.
{:run_cancel, run_id} halts the run. finish/2, from the run's exit,
reports its exit status as the last event and waits until a harness has
acknowledged every event. There is no other way out: the run waits for a
harness.
Summary
Functions
Returns a specification to start this module under a supervisor.
Report the run's exit status and wait until a harness has every event.
Start the session, unlinked: a test crashing must not take the link with it.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
Report the run's exit status and wait until a harness has every event.
Start the session, unlinked: a test crashing must not take the link with it.