preserve state in singleton managers
This commit is contained in:
@@ -30,6 +30,29 @@ defmodule Backend.NodeClusterIntegrationTests do
|
||||
assert length(peer_nodes -- [owner_node]) == 3,
|
||||
"Expected 3 non-owner peer nodes, got #{inspect(peer_nodes -- [owner_node])}"
|
||||
end
|
||||
|
||||
test "crashing GameRunner gets picked up on other node" do
|
||||
peers = start_cluster(2)
|
||||
|
||||
game_runner_pid =
|
||||
:peer.call(hd(peers) |> elem(0), :global, :whereis_name, [Backend.GameRunner])
|
||||
|
||||
assert is_pid(game_runner_pid), "Could not find GameRunner in :global registry"
|
||||
|
||||
first_node = node(game_runner_pid)
|
||||
|
||||
GameRunner.crash_game()
|
||||
|
||||
:timer.sleep(100)
|
||||
|
||||
new_pid = GameRunner.get_pid()
|
||||
assert is_pid(new_pid), "GameRunner did not restart after crash "
|
||||
|
||||
restarted_node = node(new_pid)
|
||||
|
||||
assert restarted_node != first_node,
|
||||
"GameRunner restarted on the same node after 10 crash attempts"
|
||||
end
|
||||
end
|
||||
|
||||
defp start_cluster(count) do
|
||||
|
||||
Reference in New Issue
Block a user