test(router): simplify cluster-related testcase in helper testsuite

This commit is contained in:
Andrew Mayorov 2023-09-04 18:05:59 +04:00
parent 7d26b7bc1a
commit 9f0f218387
No known key found for this signature in database
GPG Key ID: 2837C62ACFBFED5D
2 changed files with 22 additions and 36 deletions

View File

@ -19,8 +19,12 @@
-export([start/2]). -export([start/2]).
-export([stop/1]). -export([stop/1]).
-export([start_bare_node/2]).
-export([share_load_module/2]). -export([share_load_module/2]).
-export([node_name/1]).
-define(APPS_CLUSTERING, [gen_rpc, mria, ekka]). -define(APPS_CLUSTERING, [gen_rpc, mria, ekka]).
-define(TIMEOUT_NODE_START_MS, 15000). -define(TIMEOUT_NODE_START_MS, 15000).
@ -256,9 +260,6 @@ allocate_listener_ports(Types, Spec) ->
start_node_init(Spec = #{name := Node}) -> start_node_init(Spec = #{name := Node}) ->
Node = start_bare_node(Node, Spec), Node = start_bare_node(Node, Spec),
pong = net_adm:ping(Node),
% Preserve node spec right on the remote node
ok = set_node_opts(Node, Spec),
% Make it possible to call `ct:pal` and friends (if running under rebar3) % Make it possible to call `ct:pal` and friends (if running under rebar3)
_ = share_load_module(Node, cthr), _ = share_load_module(Node, cthr),
% Enable snabbkaffe trace forwarding % Enable snabbkaffe trace forwarding
@ -363,7 +364,8 @@ listener_port(BasePort, wss) ->
%% %%
start_bare_node(Name, #{driver := ct_slave}) -> -spec start_bare_node(atom(), map()) -> node().
start_bare_node(Name, Spec = #{driver := ct_slave}) ->
{ok, Node} = ct_slave:start( {ok, Node} = ct_slave:start(
node_name(Name), node_name(Name),
[ [
@ -375,9 +377,15 @@ start_bare_node(Name, #{driver := ct_slave}) ->
{env, []} {env, []}
] ]
), ),
Node; init_bare_node(Node, Spec);
start_bare_node(Name, #{driver := slave}) -> start_bare_node(Name, Spec = #{driver := slave}) ->
{ok, Node} = slave:start_link(host(), Name, ebin_path()), {ok, Node} = slave:start_link(host(), Name, ebin_path()),
init_bare_node(Node, Spec).
init_bare_node(Node, Spec) ->
pong = net_adm:ping(Node),
% Preserve node spec right on the remote node
ok = set_node_opts(Node, Spec),
Node. Node.
erl_flags() -> erl_flags() ->
@ -400,6 +408,7 @@ share_load_module(Node, Module) ->
error error
end. end.
-spec node_name(atom()) -> node().
node_name(Name) -> node_name(Name) ->
case string:tokens(atom_to_list(Name), "@") of case string:tokens(atom_to_list(Name), "@") of
[_Name, _Host] -> [_Name, _Host] ->

View File

@ -59,33 +59,10 @@ mk_config(routing_schema_v2) ->
override_env => [{boot_modules, [router]}] override_env => [{boot_modules, [router]}]
}. }.
init_per_testcase(TestCase, Config) when
TestCase =:= t_cleanup_monitor_node_down
->
ok = snabbkaffe:start_trace(),
GroupName = ?config(group_name, Config),
WorkDir = filename:join([?config(priv_dir, Config), ?MODULE, GroupName, TestCase]),
[Slave] = emqx_cth_cluster:start(
[
{?MODULE, #{
apps => [{emqx, mk_config(GroupName)}],
join_to => node()
}}
],
#{work_dir => WorkDir}
),
[{slave, Slave} | Config];
init_per_testcase(_TestCase, Config) -> init_per_testcase(_TestCase, Config) ->
ok = snabbkaffe:start_trace(), ok = snabbkaffe:start_trace(),
Config. Config.
end_per_testcase(TestCase, Config) when
TestCase =:= t_cleanup_monitor_node_down
->
Slave = ?config(slave, Config),
ok = emqx_cth_cluster:stop([Slave]),
ok = snabbkaffe:stop(),
ok;
end_per_testcase(_TestCase, _Config) -> end_per_testcase(_TestCase, _Config) ->
ok = snabbkaffe:stop(), ok = snabbkaffe:stop(),
ok. ok.
@ -102,8 +79,8 @@ t_mnesia(_) ->
?ROUTER_HELPER ! {membership, {mnesia, down, node()}}, ?ROUTER_HELPER ! {membership, {mnesia, down, node()}},
ct:sleep(200). ct:sleep(200).
t_cleanup_membership_mnesia_down(Config) -> t_cleanup_membership_mnesia_down(_Config) ->
Slave = ?config(slave, Config), Slave = emqx_cth_cluster:node_name(?FUNCTION_NAME),
emqx_router:add_route(<<"a/b/c">>, Slave), emqx_router:add_route(<<"a/b/c">>, Slave),
emqx_router:add_route(<<"d/e/f">>, node()), emqx_router:add_route(<<"d/e/f">>, node()),
?assertMatch([_, _], emqx_router:topics()), ?assertMatch([_, _], emqx_router:topics()),
@ -114,8 +91,8 @@ t_cleanup_membership_mnesia_down(Config) ->
), ),
?assertEqual([<<"d/e/f">>], emqx_router:topics()). ?assertEqual([<<"d/e/f">>], emqx_router:topics()).
t_cleanup_membership_node_down(Config) -> t_cleanup_membership_node_down(_Config) ->
Slave = ?config(slave, Config), Slave = emqx_cth_cluster:node_name(?FUNCTION_NAME),
emqx_router:add_route(<<"a/b/c">>, Slave), emqx_router:add_route(<<"a/b/c">>, Slave),
emqx_router:add_route(<<"d/e/f">>, node()), emqx_router:add_route(<<"d/e/f">>, node()),
?assertMatch([_, _], emqx_router:topics()), ?assertMatch([_, _], emqx_router:topics()),
@ -126,13 +103,13 @@ t_cleanup_membership_node_down(Config) ->
), ),
?assertEqual([<<"d/e/f">>], emqx_router:topics()). ?assertEqual([<<"d/e/f">>], emqx_router:topics()).
t_cleanup_monitor_node_down(Config) -> t_cleanup_monitor_node_down(_Config) ->
Slave = ?config(slave, Config), Slave = emqx_cth_cluster:start_bare_node(?FUNCTION_NAME, #{driver => ct_slave}),
emqx_router:add_route(<<"a/b/c">>, Slave), emqx_router:add_route(<<"a/b/c">>, Slave),
emqx_router:add_route(<<"d/e/f">>, node()), emqx_router:add_route(<<"d/e/f">>, node()),
?assertMatch([_, _], emqx_router:topics()), ?assertMatch([_, _], emqx_router:topics()),
?wait_async_action( ?wait_async_action(
emqx_common_test_helpers:stop_slave(Slave), emqx_cth_cluster:stop([Slave]),
#{?snk_kind := emqx_router_helper_cleanup_done, node := Slave}, #{?snk_kind := emqx_router_helper_cleanup_done, node := Slave},
1_000 1_000
), ),