test(slowsub): update and simplify testsuite setup

This commit is contained in:
Andrew Mayorov 2024-02-13 19:07:51 +01:00
parent d0e507eba4
commit b15e81baf2
No known key found for this signature in database
GPG Key ID: 2837C62ACFBFED5D
2 changed files with 34 additions and 81 deletions

View File

@ -20,76 +20,51 @@
-compile(nowarn_export_all).
-include_lib("eunit/include/eunit.hrl").
-include_lib("common_test/include/ct.hrl").
-include_lib("emqx/include/emqx_mqtt.hrl").
-include_lib("emqx/include/emqx.hrl").
-include_lib("emqx_slow_subs/include/emqx_slow_subs.hrl").
-define(NOW, erlang:system_time(millisecond)).
-define(CLUSTER_RPC_SHARD, emqx_cluster_rpc_shard).
-define(LANTENCY, 101).
-define(BASE_CONF, <<
""
"\n"
"slow_subs {\n"
" enable = true\n"
" top_k_num = 5\n"
" threshold = 100ms\n"
" expire_interval = 5m\n"
" stats_type = whole\n"
" }"
""
"}"
>>).
all() ->
emqx_common_test_helpers:all(?MODULE).
init_per_suite(Config) ->
application:load(emqx_conf),
ok = ekka:start(),
ok = mria_rlog:wait_for_shards([?CLUSTER_RPC_SHARD], infinity),
meck:new(emqx_alarm, [non_strict, passthrough, no_link]),
meck:expect(emqx_alarm, activate, 3, ok),
meck:expect(emqx_alarm, deactivate, 3, ok),
Apps = emqx_cth_suite:start(
[
emqx,
emqx_conf,
{emqx_slow_subs, ?BASE_CONF}
],
#{work_dir => emqx_cth_suite:work_dir(Config)}
),
[{suite_apps, Apps} | Config].
ok = emqx_common_test_helpers:load_config(emqx_slow_subs_schema, ?BASE_CONF),
emqx_common_test_helpers:start_apps([emqx_slow_subs]),
Config.
end_per_suite(_Config) ->
ekka:stop(),
mria:stop(),
mria_mnesia:delete_schema(),
meck:unload(emqx_alarm),
emqx_common_test_helpers:stop_apps([emqx_slow_subs]).
init_per_testcase(t_expire, Config) ->
{ok, _} = emqx_cluster_rpc:start_link(),
update_config(<<"expire_interval">>, <<"1500ms">>),
Config;
init_per_testcase(_, Config) ->
{ok, _} = emqx_cluster_rpc:start_link(),
Config.
end_per_testcase(_, _) ->
case erlang:whereis(node()) of
undefined ->
ok;
P ->
erlang:unlink(P),
erlang:exit(P, kill)
end,
ok.
end_per_suite(Config) ->
ok = emqx_cth_suite:stop(?config(suite_apps, Config)).
%%--------------------------------------------------------------------
%% Test Cases
%%--------------------------------------------------------------------
t_pub(_) ->
_ = [stats_with_type(Type) || Type <- [whole, internal, response]],
ok.
t_expire(_) ->
_ = update_config(<<"expire_interval">>, <<"1500ms">>),
Now = ?NOW,
Each = fun(I) ->
ClientId = erlang:list_to_binary(io_lib:format("test_~p", [I])),

View File

@ -20,10 +20,8 @@
-compile(nowarn_export_all).
-include_lib("eunit/include/eunit.hrl").
-include_lib("common_test/include/ct.hrl").
-include_lib("emqx/include/emqx.hrl").
-include_lib("emqx/include/emqx_mqtt.hrl").
-include_lib("emqx_management/include/emqx_mgmt.hrl").
-include_lib("emqx_slow_subs/include/emqx_slow_subs.hrl").
-define(HOST, "http://127.0.0.1:18083/").
@ -32,63 +30,43 @@
-define(BASE_PATH, "api").
-define(NOW, erlang:system_time(millisecond)).
-define(CLUSTER_RPC_SHARD, emqx_cluster_rpc_shard).
-define(CONF_DEFAULT, <<
""
"\n"
"slow_subs\n"
"{\n"
"slow_subs {\n"
" enable = true\n"
" top_k_num = 5,\n"
" expire_interval = 60s\n"
" stats_type = whole\n"
"}"
""
>>).
all() ->
emqx_common_test_helpers:all(?MODULE).
init_per_suite(Config) ->
application:load(emqx_conf),
ok = ekka:start(),
ok = mria_rlog:wait_for_shards([?CLUSTER_RPC_SHARD], infinity),
meck:new(emqx_alarm, [non_strict, passthrough, no_link]),
meck:expect(emqx_alarm, activate, 3, ok),
meck:expect(emqx_alarm, deactivate, 3, ok),
ok = emqx_common_test_helpers:load_config(emqx_slow_subs_schema, ?CONF_DEFAULT),
emqx_mgmt_api_test_util:init_suite([emqx_slow_subs]),
{ok, _} = application:ensure_all_started(emqx_auth),
Config.
Apps = emqx_cth_suite:start(
[
emqx,
emqx_auth,
emqx_conf,
emqx_management,
{emqx_slow_subs, ?CONF_DEFAULT},
{emqx_dashboard, "dashboard.listeners.http { enable = true, bind = 18083 }"}
],
#{work_dir => emqx_cth_suite:work_dir(Config)}
),
_ = emqx_common_test_http:create_default_app(),
[{suite_apps, Apps} | Config].
end_per_suite(Config) ->
ekka:stop(),
mria:stop(),
mria_mnesia:delete_schema(),
meck:unload(emqx_alarm),
application:stop(emqx_auth),
emqx_mgmt_api_test_util:end_suite([emqx_slow_subs]),
Config.
ok = emqx_cth_suite:stop(?config(suite_apps, Config)).
init_per_testcase(_, Config) ->
{ok, _} = emqx_cluster_rpc:start_link(),
application:ensure_all_started(emqx_slow_subs),
timer:sleep(500),
{ok, _} = application:ensure_all_started(emqx_slow_subs),
Config.
end_per_testcase(_, Config) ->
application:stop(emqx_slow_subs),
case erlang:whereis(node()) of
undefined ->
ok;
P ->
erlang:unlink(P),
erlang:exit(P, kill)
end,
Config.
end_per_testcase(_, _Config) ->
ok = application:stop(emqx_slow_subs).
t_get_history(_) ->
Now = ?NOW,