Kaynağa Gözat

test(dssubs): add test-only facilities to purge leader registry

Andrew Mayorov 1 yıl önce
ebeveyn
işleme
3e8788d61b

+ 13 - 0
apps/emqx_ds_shared_sub/src/emqx_ds_shared_sub_registry.erl

@@ -15,6 +15,11 @@
     start_elector/1
 ]).
 
+%% Tests only
+-export([
+    purge/0
+]).
+
 -behaviour(supervisor).
 -export([init/1]).
 
@@ -65,6 +70,14 @@ start_elector(ShareTopic) ->
         shutdown => 5000
     }).
 
+-spec purge() -> ok.
+purge() ->
+    Children = supervisor:which_children(?MODULE),
+    lists:foreach(
+        fun({ChildID, _, _, _}) -> supervisor:terminate_child(?MODULE, ChildID) end,
+        Children
+    ).
+
 %%------------------------------------------------------------------------------
 %% supervisor behaviour callbacks
 %%------------------------------------------------------------------------------

+ 3 - 8
apps/emqx_ds_shared_sub/test/emqx_ds_shared_sub_SUITE.erl

@@ -60,7 +60,7 @@ init_per_testcase(TC, Config) ->
 
 end_per_testcase(TC, Config) ->
     ok = snabbkaffe:stop(),
-    ok = terminate_leaders(),
+    ok = emqx_ds_shared_sub_registry:purge(),
     emqx_common_test_helpers:end_per_testcase(?MODULE, TC, Config).
 
 declare_queue(Group, Topic, Config) ->
@@ -258,7 +258,7 @@ t_leader_state_preserved(_Config) ->
             ok = emqtt:disconnect(ConnShared2),
 
             %% Equivalent to node restart.
-            ok = terminate_leaders(),
+            ok = emqx_ds_shared_sub_registry:purge(),
             ok = timer:sleep(1_000),
 
             {ok, _} = emqtt:publish(ConnPub, <<"topic42/1/2">>, <<"hello3">>, 1),
@@ -580,7 +580,7 @@ t_renew_lease_timeout(_Config) ->
 
     ?check_trace(
         ?wait_async_action(
-            ok = terminate_leaders(),
+            ok = emqx_ds_shared_sub_registry:purge(),
             #{?snk_kind := leader_lease_streams},
             10_000
         ),
@@ -623,11 +623,6 @@ emqtt_connect_pub(ClientId) ->
     {ok, _} = emqtt:connect(C),
     C.
 
-terminate_leaders() ->
-    ok = supervisor:terminate_child(emqx_ds_shared_sub_sup, emqx_ds_shared_sub_registry),
-    {ok, _} = supervisor:restart_child(emqx_ds_shared_sub_sup, emqx_ds_shared_sub_registry),
-    ok.
-
 publish_n(_Conn, _Topics, From, To) when From > To ->
     ok;
 publish_n(Conn, [Topic | RestTopics], From, To) ->

+ 1 - 1
apps/emqx_ds_shared_sub/test/emqx_ds_shared_sub_api_SUITE.erl

@@ -66,7 +66,7 @@ init_per_testcase(_TC, Config) ->
 
 end_per_testcase(_TC, _Config) ->
     ok = snabbkaffe:stop(),
-    ok = terminate_leaders(),
+    ok = emqx_ds_shared_sub_registry:purge(),
     ok.
 %%--------------------------------------------------------------------
 %% Tests