Просмотр исходного кода

test(slowsub): update and simplify testsuite setup

Andrew Mayorov 2 лет назад
Родитель
Сommit
b15e81baf2

+ 16 - 41
apps/emqx_slow_subs/test/emqx_slow_subs_SUITE.erl

@@ -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),
-
-    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.
+    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].
+
+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])),

+ 19 - 41
apps/emqx_slow_subs/test/emqx_slow_subs_api_SUITE.erl

@@ -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,