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
setup do
ensure_repo_started()
ensure_stream_runtime_started()
:ok = Sandbox.checkout(Repo)
:ok
end
@@ -77,4 +79,24 @@ defmodule Parrhesia.API.StreamTest do
defp recalculate_event_id(event) do
Map.put(event, "id", EventValidator.compute_id(event))
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

View File

@@ -157,6 +157,7 @@ defmodule Parrhesia.Sync.WorkerTest do
worker_supervisor = unique_name("SyncWorkerSupervisor")
supervisor_name = unique_name("SyncSupervisor")
supervisor_pid =
start_supervised!(
{Supervisor,
name: supervisor_name,
@@ -167,6 +168,22 @@ defmodule Parrhesia.Sync.WorkerTest do
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}
end

View File

@@ -12,6 +12,8 @@ defmodule Parrhesia.Web.ConnectionTest do
alias Parrhesia.Web.Connection
setup do
ensure_repo_started()
ensure_stream_runtime_started()
:ok = Sandbox.checkout(Repo)
:ok
end
@@ -874,6 +876,26 @@ defmodule Parrhesia.Web.ConnectionTest do
state
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
base = %{
id: :test,

View File

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