diff --git a/scripts/run_node_sync_e2e.sh b/scripts/run_node_sync_e2e.sh index 807b1be..f34654c 100755 --- a/scripts/run_node_sync_e2e.sh +++ b/scripts/run_node_sync_e2e.sh @@ -146,7 +146,7 @@ start_node() { PARRHESIA_IDENTITY_PATH="$identity_path" \ PARRHESIA_SYNC_PATH="$sync_path" \ MIX_ENV=prod \ - mix run --no-halt >"$log_path" 2>&1 & + mix run --no-compile --no-halt >"$log_path" 2>&1 & if [[ "$node_name" == "a" ]]; then NODE_A_PID=$! diff --git a/test/parrhesia/web/tls_e2e_test.exs b/test/parrhesia/web/tls_e2e_test.exs index 8f16941..4d02f6f 100644 --- a/test/parrhesia/web/tls_e2e_test.exs +++ b/test/parrhesia/web/tls_e2e_test.exs @@ -60,12 +60,15 @@ defmodule Parrhesia.Web.TLSE2ETest do }} ) - assert_eventually(fn -> - case nip11_request(port, ca.certfile) do - {:ok, 200} -> true - _other -> false - end - end) + assert_eventually( + fn -> + case nip11_request(port, ca.certfile) do + {:ok, 200} -> true + _other -> false + end + end, + 5_000 + ) first_fingerprint = server_cert_fingerprint(port) assert first_fingerprint == TLSCerts.cert_sha256!(server_a.certfile) @@ -75,9 +78,12 @@ defmodule Parrhesia.Web.TLSE2ETest do assert :ok = Endpoint.reload_listener(endpoint_name, listener_id) - assert_eventually(fn -> - server_cert_fingerprint(port) == TLSCerts.cert_sha256!(server_b.certfile) - end) + assert_eventually( + fn -> + server_cert_fingerprint(port) == TLSCerts.cert_sha256!(server_b.certfile) + end, + 10_000 + ) end test "mutual TLS requires a client certificate and enforces optional client pins", %{ @@ -327,17 +333,24 @@ defmodule Parrhesia.Web.TLSE2ETest do :"#{prefix}_#{System.unique_integer([:positive, :monotonic])}" end - defp assert_eventually(fun, attempts \\ 40) - defp assert_eventually(_fun, 0), do: flunk("condition was not met in time") + defp assert_eventually(fun, timeout_ms) do + deadline = System.monotonic_time(:millisecond) + timeout_ms + do_assert_eventually(fun, deadline, timeout_ms, 50) + end - defp assert_eventually(fun, attempts) do - if fun.() do - :ok - else - receive do - after - 50 -> assert_eventually(fun, attempts - 1) - end + defp do_assert_eventually(fun, deadline, timeout_ms, interval_ms) do + cond do + fun.() -> + :ok + + System.monotonic_time(:millisecond) >= deadline -> + flunk("condition was not met in time (#{timeout_ms} ms)") + + true -> + receive do + after + interval_ms -> do_assert_eventually(fun, deadline, timeout_ms, interval_ms) + end end end end diff --git a/test/test_helper.exs b/test/test_helper.exs index eaf59ee..bd54632 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -5,4 +5,6 @@ exclude_tags = [:nak_e2e] end +{:ok, _apps} = Application.ensure_all_started(:parrhesia) + ExUnit.start(exclude: exclude_tags)