Replace Process.sleep() with Helpers.wait_for(pid)

pull/1184/head
Rick Carlino 2020-03-31 11:37:23 -05:00
parent e5a29361d2
commit 04c74b28f2
2 changed files with 8 additions and 5 deletions

View File

@ -55,7 +55,7 @@ defmodule AutoSyncChannelTest do
expect(Preloader, :preload_all, 1, fn -> :ok end)
pid = generate_pid()
send(pid, msg)
Process.sleep(5)
Helpers.wait_for(pid)
end
test "basic_cancel", do: ensure_response_to({:basic_cancel, :anything})
@ -153,6 +153,6 @@ defmodule AutoSyncChannelTest do
:ok
end)
Process.sleep(1200)
Helpers.wait_for(pid)
end
end

View File

@ -23,7 +23,7 @@ defmodule Helpers do
# Maybe I could use `start_supervised`?
# https://hexdocs.pm/ex_unit/ExUnit.Callbacks.html#start_supervised/2
@wait_time 13
@wait_time 15
# Base case: We have a pid
def wait_for(pid) when is_pid(pid), do: check_on_mbox(pid)
# Failure case: We failed to find a pid for a module.
@ -37,8 +37,11 @@ defmodule Helpers do
wait(pid, Process.info(pid, :message_queue_len))
end
# Exit recursive loop
defp wait(_, {:message_queue_len, 0}), do: Process.sleep(@wait_time)
# Exit recursive loop (mbox is clear)
defp wait(_, {:message_queue_len, 0}), do: Process.sleep(@wait_time * 3)
# Exit recursive loop (pid is dead)
defp wait(_, nil), do: Process.sleep(@wait_time * 3)
# Continue recursive loop
defp wait(pid, {:message_queue_len, _n}), do: check_on_mbox(pid)