Skip to content

Commit 68f178e

Browse files
committed
fix: simple retry for flaky tests on windows
1 parent 109ee5d commit 68f178e

File tree

3 files changed

+23
-5
lines changed

3 files changed

+23
-5
lines changed

apps/expert/lib/expert/engine_node.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ defmodule Expert.EngineNode do
342342
GenServer.start_link(__MODULE__, state, name: name(project))
343343
end
344344

345-
@start_timeout 5_000
345+
@start_timeout 6_000
346346

347347
defp start_node(project, paths) do
348348
project

apps/expert/test/expert/engine_node_test.exs

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ defmodule Expert.EngineNodeTest do
1616
end
1717

1818
test "it should be able to stop a project node and won't restart", %{project: project} do
19-
{:ok, _node_name, _} = EngineNode.start(project)
19+
assert {:ok, _node_name, _} = try_start(project)
2020

2121
project_alive? = project |> EngineNode.name() |> Process.whereis() |> Process.alive?()
2222

@@ -30,13 +30,13 @@ defmodule Expert.EngineNodeTest do
3030

3131
linked_node_process =
3232
spawn(fn ->
33-
case EngineNode.start(project) do
33+
case try_start(project) do
3434
{:ok, _node_name, _} -> send(test_pid, :started)
3535
{:error, reason} -> send(test_pid, {:error, reason})
3636
end
3737
end)
3838

39-
assert_receive :started, 7000
39+
assert_receive :started, 10_000
4040

4141
node_process_name = EngineNode.name(project)
4242

@@ -79,4 +79,22 @@ defmodule Expert.EngineNodeTest do
7979
assert %{status: ^exit_status, last_message: last_message} = node_exit
8080
assert is_binary(last_message)
8181
end
82+
83+
defp try_start(project, retries \\ 2) do
84+
case EngineNode.start(project) do
85+
{:ok, _, _} = ok ->
86+
ok
87+
88+
{:error, _} when retries > 0 ->
89+
Process.sleep(200)
90+
try_start(project, retries - 1)
91+
92+
{:badrpc, :nodedown} when retries > 0 ->
93+
Process.sleep(200)
94+
try_start(project, retries - 1)
95+
96+
other ->
97+
other
98+
end
99+
end
82100
end

apps/expert/test/expert/project/node_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ defmodule Expert.Project.NodeTest do
3535
old_pid = node_pid(project)
3636

3737
:ok = EngineApi.stop(project)
38-
assert_eventually Node.ping(node_name) == :pong, 5000
38+
assert_eventually Node.ping(node_name) == :pong, 7000
3939

4040
new_pid = node_pid(project)
4141
assert is_pid(new_pid)

0 commit comments

Comments
 (0)