test(refactor): add ids to namespace `on_exit` callbacks
This commit is contained in:
parent
697b3ecf2d
commit
a095867358
|
@ -67,8 +67,8 @@
|
||||||
-export([clear_screen/0]).
|
-export([clear_screen/0]).
|
||||||
-export([with_mock/4]).
|
-export([with_mock/4]).
|
||||||
-export([
|
-export([
|
||||||
on_exit/1,
|
on_exit/2,
|
||||||
run_on_exit_callbacks/0
|
run_on_exit_callbacks/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
%% Toxiproxy API
|
%% Toxiproxy API
|
||||||
|
@ -939,19 +939,19 @@ latency_up_proxy(off, Name, ProxyHost, ProxyPort) ->
|
||||||
%% Testcase teardown utilities
|
%% Testcase teardown utilities
|
||||||
%%-------------------------------------------------------------------------------
|
%%-------------------------------------------------------------------------------
|
||||||
|
|
||||||
get_on_exit_callbacks() ->
|
get_on_exit_callbacks(Id) ->
|
||||||
persistent_term:get({?MODULE, on_exit}, []).
|
persistent_term:get({?MODULE, on_exit, Id}, []).
|
||||||
|
|
||||||
put_on_exit_callbacks(Funs) ->
|
put_on_exit_callbacks(Id, Funs) ->
|
||||||
persistent_term:put({?MODULE, on_exit}, Funs).
|
persistent_term:put({?MODULE, on_exit, Id}, Funs).
|
||||||
|
|
||||||
on_exit(Fun) ->
|
on_exit(Id, Fun) ->
|
||||||
Callbacks = get_on_exit_callbacks(),
|
Callbacks = get_on_exit_callbacks(Id),
|
||||||
put_on_exit_callbacks([Fun | Callbacks]).
|
put_on_exit_callbacks(Id, [Fun | Callbacks]).
|
||||||
|
|
||||||
%% should be called at `end_per_testcase'.
|
%% should be called at `end_per_testcase'.
|
||||||
%% TODO: scope per group and suite as well?
|
%% TODO: scope per group and suite as well?
|
||||||
run_on_exit_callbacks() ->
|
run_on_exit_callbacks(Id) ->
|
||||||
Callbacks = get_on_exit_callbacks(),
|
Callbacks = get_on_exit_callbacks(Id),
|
||||||
put_on_exit_callbacks([]),
|
persistent_term:erase({?MODULE, on_exit, Id}),
|
||||||
lists:foreach(fun(Fun) -> Fun() end, Callbacks).
|
lists:foreach(fun(Fun) -> Fun() end, Callbacks).
|
||||||
|
|
|
@ -16,7 +16,10 @@
|
||||||
-define(BRIDGE_TYPE, gcp_pubsub).
|
-define(BRIDGE_TYPE, gcp_pubsub).
|
||||||
-define(BRIDGE_TYPE_BIN, <<"gcp_pubsub">>).
|
-define(BRIDGE_TYPE_BIN, <<"gcp_pubsub">>).
|
||||||
|
|
||||||
-import(emqx_common_test_helpers, [on_exit/1, run_on_exit_callbacks/0]).
|
-import(emqx_common_test_helpers, [on_exit/2, run_on_exit_callbacks/1]).
|
||||||
|
|
||||||
|
-define(on_exit_key(TESTCASE), {?MODULE, TESTCASE}).
|
||||||
|
-define(on_exit(FUN), on_exit({?MODULE, ?FUNCTION_NAME}, FUN)).
|
||||||
|
|
||||||
%%------------------------------------------------------------------------------
|
%%------------------------------------------------------------------------------
|
||||||
%% CT boilerplate
|
%% CT boilerplate
|
||||||
|
@ -138,9 +141,9 @@ init_per_testcase(TestCase, Config0) ->
|
||||||
Config = generate_config(Config0),
|
Config = generate_config(Config0),
|
||||||
[{telemetry_table, Tid} | Config].
|
[{telemetry_table, Tid} | Config].
|
||||||
|
|
||||||
end_per_testcase(_TestCase, _Config) ->
|
end_per_testcase(TestCase, _Config) ->
|
||||||
ok = snabbkaffe:stop(),
|
ok = snabbkaffe:stop(),
|
||||||
run_on_exit_callbacks(),
|
run_on_exit_callbacks(?on_exit_key(TestCase)),
|
||||||
delete_all_bridges(),
|
delete_all_bridges(),
|
||||||
ok = emqx_connector_web_hook_server:stop(),
|
ok = emqx_connector_web_hook_server:stop(),
|
||||||
ok.
|
ok.
|
||||||
|
@ -515,7 +518,7 @@ install_telemetry_handler(TestCase) ->
|
||||||
end,
|
end,
|
||||||
unused_config
|
unused_config
|
||||||
),
|
),
|
||||||
on_exit(fun() ->
|
on_exit(?on_exit_key(TestCase), fun() ->
|
||||||
telemetry:detach(HandlerId),
|
telemetry:detach(HandlerId),
|
||||||
ets:delete(Tid)
|
ets:delete(Tid)
|
||||||
end),
|
end),
|
||||||
|
@ -567,7 +570,7 @@ t_publish_success(Config) ->
|
||||||
end
|
end
|
||||||
),
|
),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
assert_empty_metrics(ResourceId),
|
assert_empty_metrics(ResourceId),
|
||||||
Payload = <<"payload">>,
|
Payload = <<"payload">>,
|
||||||
Message = emqx_message:make(Topic, Payload),
|
Message = emqx_message:make(Topic, Payload),
|
||||||
|
@ -632,7 +635,7 @@ t_publish_templated(Config) ->
|
||||||
end
|
end
|
||||||
),
|
),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
assert_empty_metrics(ResourceId),
|
assert_empty_metrics(ResourceId),
|
||||||
Payload = <<"payload">>,
|
Payload = <<"payload">>,
|
||||||
Message =
|
Message =
|
||||||
|
@ -697,7 +700,7 @@ t_publish_success_batch(Config) ->
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
assert_empty_metrics(ResourceId),
|
assert_empty_metrics(ResourceId),
|
||||||
NumMessages = BatchSize * 2,
|
NumMessages = BatchSize * 2,
|
||||||
Messages = [emqx_message:make(Topic, integer_to_binary(N)) || N <- lists:seq(1, NumMessages)],
|
Messages = [emqx_message:make(Topic, integer_to_binary(N)) || N <- lists:seq(1, NumMessages)],
|
||||||
|
@ -879,7 +882,7 @@ t_publish_econnrefused(Config) ->
|
||||||
%% in ehttpc.
|
%% in ehttpc.
|
||||||
{ok, _} = create_bridge(Config, #{<<"pipelining">> => 1}),
|
{ok, _} = create_bridge(Config, #{<<"pipelining">> => 1}),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
assert_empty_metrics(ResourceId),
|
assert_empty_metrics(ResourceId),
|
||||||
ok = emqx_connector_web_hook_server:stop(),
|
ok = emqx_connector_web_hook_server:stop(),
|
||||||
do_econnrefused_or_timeout_test(Config, econnrefused).
|
do_econnrefused_or_timeout_test(Config, econnrefused).
|
||||||
|
@ -894,7 +897,7 @@ t_publish_timeout(Config) ->
|
||||||
<<"resource_opts">> => #{<<"batch_size">> => 1}
|
<<"resource_opts">> => #{<<"batch_size">> => 1}
|
||||||
}),
|
}),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
assert_empty_metrics(ResourceId),
|
assert_empty_metrics(ResourceId),
|
||||||
TestPid = self(),
|
TestPid = self(),
|
||||||
TimeoutHandler =
|
TimeoutHandler =
|
||||||
|
@ -1095,7 +1098,7 @@ t_success_no_body(Config) ->
|
||||||
Topic = <<"t/topic">>,
|
Topic = <<"t/topic">>,
|
||||||
{ok, _} = create_bridge(Config),
|
{ok, _} = create_bridge(Config),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
Payload = <<"payload">>,
|
Payload = <<"payload">>,
|
||||||
Message = emqx_message:make(Topic, Payload),
|
Message = emqx_message:make(Topic, Payload),
|
||||||
?check_trace(
|
?check_trace(
|
||||||
|
@ -1133,7 +1136,7 @@ t_failure_with_body(Config) ->
|
||||||
Topic = <<"t/topic">>,
|
Topic = <<"t/topic">>,
|
||||||
{ok, _} = create_bridge(Config),
|
{ok, _} = create_bridge(Config),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
Payload = <<"payload">>,
|
Payload = <<"payload">>,
|
||||||
Message = emqx_message:make(Topic, Payload),
|
Message = emqx_message:make(Topic, Payload),
|
||||||
?check_trace(
|
?check_trace(
|
||||||
|
@ -1171,7 +1174,7 @@ t_failure_no_body(Config) ->
|
||||||
Topic = <<"t/topic">>,
|
Topic = <<"t/topic">>,
|
||||||
{ok, _} = create_bridge(Config),
|
{ok, _} = create_bridge(Config),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
Payload = <<"payload">>,
|
Payload = <<"payload">>,
|
||||||
Message = emqx_message:make(Topic, Payload),
|
Message = emqx_message:make(Topic, Payload),
|
||||||
?check_trace(
|
?check_trace(
|
||||||
|
@ -1220,7 +1223,7 @@ t_unrecoverable_error(Config) ->
|
||||||
{ok, _} = create_bridge(Config),
|
{ok, _} = create_bridge(Config),
|
||||||
assert_empty_metrics(ResourceId),
|
assert_empty_metrics(ResourceId),
|
||||||
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
{ok, #{<<"id">> := RuleId}} = create_rule_and_action_http(Config),
|
||||||
on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
?on_exit(fun() -> ok = emqx_rule_engine:delete_rule(RuleId) end),
|
||||||
Payload = <<"payload">>,
|
Payload = <<"payload">>,
|
||||||
Message = emqx_message:make(Topic, Payload),
|
Message = emqx_message:make(Topic, Payload),
|
||||||
?check_trace(
|
?check_trace(
|
||||||
|
|
Loading…
Reference in New Issue