test: fix hang when calling `ct_slave:stop` on a `slave` started node

Some tests use the `slave` module for better readability.  But, when
shutting those nodes down, if one uses `ct_slave` on them, they will
hang.  This'll make CT wait until the timetrap (default 30 min) before
failing `end_per_testcase`.
This commit is contained in:
Thales Macedo Garitezi 2023-01-05 15:51:54 -03:00
parent 1d745d2bc3
commit 4b8d4b3583
1 changed files with 18 additions and 1 deletions

View File

@ -56,6 +56,7 @@ start_slave(Name, Opts) ->
throw(Other) throw(Other)
end, end,
pong = net_adm:ping(Node), pong = net_adm:ping(Node),
put_slave_mod(Node, SlaveMod),
setup_node(Node, Opts), setup_node(Node, Opts),
Node. Node.
@ -70,11 +71,14 @@ make_node_name(Name) ->
stop_slave(Node0) -> stop_slave(Node0) ->
Node = make_node_name(Node0), Node = make_node_name(Node0),
SlaveMod = get_slave_mod(Node),
erase_slave_mod(Node),
case rpc:call(Node, ekka, leave, []) of case rpc:call(Node, ekka, leave, []) of
ok -> ok; ok -> ok;
{badrpc, nodedown} -> ok {badrpc, nodedown} -> ok
end, end,
case ct_slave:stop(Node) of case SlaveMod:stop(Node) of
ok -> ok;
{ok, _} -> ok; {ok, _} -> ok;
{error, not_started, _} -> ok {error, not_started, _} -> ok
end. end.
@ -167,3 +171,16 @@ check_consistent_view([{View, Node} | Rest], Acc) ->
add_to_list(Node, Nodes) when is_list(Nodes) -> [Node | Nodes]; add_to_list(Node, Nodes) when is_list(Nodes) -> [Node | Nodes];
add_to_list(Node, Node1) -> [Node, Node1]. add_to_list(Node, Node1) -> [Node, Node1].
put_slave_mod(Node, SlaveMod) ->
put({?MODULE, Node}, SlaveMod),
ok.
get_slave_mod(Node) ->
case get({?MODULE, Node}) of
undefined -> ct_slave;
SlaveMod -> SlaveMod
end.
erase_slave_mod(Node) ->
erase({?MODULE, Node}).