33 lines
793 B
Elixir
33 lines
793 B
Elixir
defmodule Symbiont.TestHelpers do
|
|
@moduledoc "Shared helpers for Symbiont ExUnit tests."
|
|
|
|
@doc "Stop a named process safely — no crash if already dead."
|
|
def safe_stop(name) do
|
|
case Process.whereis(name) do
|
|
nil -> :ok
|
|
pid ->
|
|
try do
|
|
GenServer.stop(pid)
|
|
catch
|
|
:exit, _ -> :ok
|
|
end
|
|
end
|
|
end
|
|
|
|
@doc "Stop all standard Symbiont services safely."
|
|
def stop_all_services do
|
|
for name <- [Symbiont.Heartbeat, Symbiont.Queue, Symbiont.Ledger] do
|
|
safe_stop(name)
|
|
end
|
|
|
|
:ok
|
|
end
|
|
|
|
@doc "Ensure TaskSupervisor is running (needed by Heartbeat)."
|
|
def ensure_task_supervisor do
|
|
unless Process.whereis(Symbiont.TaskSupervisor) do
|
|
Task.Supervisor.start_link(name: Symbiont.TaskSupervisor)
|
|
end
|
|
end
|
|
end
|