Harden CI-sensitive integration tests
Some checks failed
CI / Test (OTP 27.2 / Elixir 1.18.2) (push) Failing after 1s
CI / Test (OTP 28.4 / Elixir 1.19.4 + Marmot E2E) (push) Failing after 1s

This commit is contained in:
2026-03-17 03:55:49 +01:00
parent a1a8b30d12
commit 4d169c23ae
4 changed files with 71 additions and 10 deletions

View File

@@ -9,6 +9,8 @@ defmodule Parrhesia.API.StreamTest do
alias Parrhesia.Repo alias Parrhesia.Repo
setup do setup do
ensure_repo_started()
ensure_stream_runtime_started()
:ok = Sandbox.checkout(Repo) :ok = Sandbox.checkout(Repo)
:ok :ok
end end
@@ -77,4 +79,24 @@ defmodule Parrhesia.API.StreamTest do
defp recalculate_event_id(event) do defp recalculate_event_id(event) do
Map.put(event, "id", EventValidator.compute_id(event)) Map.put(event, "id", EventValidator.compute_id(event))
end end
defp ensure_stream_runtime_started do
if is_nil(Process.whereis(Parrhesia.API.Stream.Supervisor)) do
case start_supervised({Parrhesia.Subscriptions.Supervisor, []}) do
{:ok, _pid} -> :ok
{:error, {:already_started, _pid}} -> :ok
end
else
:ok
end
end
defp ensure_repo_started do
if is_nil(Process.whereis(Repo)) do
_ = start_supervised(Repo)
:ok
else
:ok
end
end
end end

View File

@@ -157,15 +157,32 @@ defmodule Parrhesia.Sync.WorkerTest do
worker_supervisor = unique_name("SyncWorkerSupervisor") worker_supervisor = unique_name("SyncWorkerSupervisor")
supervisor_name = unique_name("SyncSupervisor") supervisor_name = unique_name("SyncSupervisor")
start_supervised!( supervisor_pid =
{Supervisor, start_supervised!(
name: supervisor_name, {Supervisor,
manager: manager_name, name: supervisor_name,
worker_registry: worker_registry, manager: manager_name,
worker_supervisor: worker_supervisor, worker_registry: worker_registry,
path: unique_sync_path(), worker_supervisor: worker_supervisor,
start_workers?: true} path: unique_sync_path(),
) start_workers?: true}
)
on_exit(fn ->
ref = Process.monitor(supervisor_pid)
try do
_ = GenServer.stop(supervisor_pid, :normal)
catch
:exit, _reason -> :ok
end
receive do
{:DOWN, ^ref, :process, ^supervisor_pid, _reason} -> :ok
after
1_000 -> :ok
end
end)
{manager_name, supervisor_name} {manager_name, supervisor_name}
end end

View File

@@ -12,6 +12,8 @@ defmodule Parrhesia.Web.ConnectionTest do
alias Parrhesia.Web.Connection alias Parrhesia.Web.Connection
setup do setup do
ensure_repo_started()
ensure_stream_runtime_started()
:ok = Sandbox.checkout(Repo) :ok = Sandbox.checkout(Repo)
:ok :ok
end end
@@ -874,6 +876,26 @@ defmodule Parrhesia.Web.ConnectionTest do
state state
end end
defp ensure_stream_runtime_started do
if is_nil(Process.whereis(Parrhesia.API.Stream.Supervisor)) do
case start_supervised({Parrhesia.Subscriptions.Supervisor, []}) do
{:ok, _pid} -> :ok
{:error, {:already_started, _pid}} -> :ok
end
else
:ok
end
end
defp ensure_repo_started do
if is_nil(Process.whereis(Repo)) do
_ = start_supervised(Repo)
:ok
else
:ok
end
end
defp listener(overrides) do defp listener(overrides) do
base = %{ base = %{
id: :test, id: :test,

View File

@@ -82,7 +82,7 @@ defmodule Parrhesia.Web.TLSE2ETest do
fn -> fn ->
server_cert_fingerprint(port) == TLSCerts.cert_sha256!(server_b.certfile) server_cert_fingerprint(port) == TLSCerts.cert_sha256!(server_b.certfile)
end, end,
10_000 30_000
) )
end end