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

View File

@ -23,7 +23,7 @@ defmodule Helpers do
# Maybe I could use `start_supervised`? # Maybe I could use `start_supervised`?
# https://hexdocs.pm/ex_unit/ExUnit.Callbacks.html#start_supervised/2 # https://hexdocs.pm/ex_unit/ExUnit.Callbacks.html#start_supervised/2
@wait_time 13 @wait_time 15
# Base case: We have a pid # Base case: We have a pid
def wait_for(pid) when is_pid(pid), do: check_on_mbox(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. # 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)) wait(pid, Process.info(pid, :message_queue_len))
end end
# Exit recursive loop # Exit recursive loop (mbox is clear)
defp wait(_, {:message_queue_len, 0}), do: Process.sleep(@wait_time) 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 # Continue recursive loop
defp wait(pid, {:message_queue_len, _n}), do: check_on_mbox(pid) defp wait(pid, {:message_queue_len, _n}), do: check_on_mbox(pid)