Merge pull request #14039 from rabbitmq/mqtt-test-deps

MQTT tests: start just required dependencies
This commit is contained in:
Michael Klishin 2025-06-11 15:31:18 +04:00 committed by GitHub
commit 1277a4b8b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 135 additions and 69 deletions

View File

@ -125,7 +125,9 @@ sub_groups() ->
init_per_suite(Config) ->
rabbit_ct_helpers:log_environment(),
Config.
rabbit_ct_helpers:set_config(
Config,
[{start_rmq_with_plugins_disabled, true}]).
end_per_suite(Config) ->
Config.
@ -152,6 +154,7 @@ init_per_group(authz, Config0) ->
Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config, rabbitmq_mqtt),
rabbit_ct_broker_helpers:add_user(Config, User, Password),
rabbit_ct_broker_helpers:add_vhost(Config, VHost),
[Log|_] = rpc(Config, 0, rabbit, log_locations, []),
@ -167,7 +170,7 @@ init_per_group(Group, Config) ->
]),
MqttConfig = mqtt_config(Group),
AuthConfig = auth_config(Group),
rabbit_ct_helpers:run_setup_steps(
Config2 = rabbit_ct_helpers:run_setup_steps(
Config1,
[fun(Conf) -> case MqttConfig of
undefined -> Conf;
@ -179,8 +182,10 @@ init_per_group(Group, Config) ->
_ -> merge_app_env(AuthConfig, Conf)
end
end] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config2, rabbitmq_mqtt),
Config2.
end_per_group(G, Config)
when G =:= v4;

View File

@ -67,7 +67,8 @@ end_per_suite(Config) ->
init_per_group(Group, Config) ->
rabbit_ct_helpers:set_config(
Config, [{rmq_nodes_count, 5},
{mqtt_version, Group}]).
{mqtt_version, Group},
{start_rmq_with_plugins_disabled, true}]).
end_per_group(_, Config) ->
Config.
@ -79,11 +80,13 @@ init_per_testcase(Testcase, Config) ->
{rmq_nodename_suffix, Testcase},
{rmq_nodes_clustered, true}
]),
rabbit_ct_helpers:run_setup_steps(
Config2 = rabbit_ct_helpers:run_setup_steps(
Config1,
[fun merge_app_env/1] ++
setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config2, rabbitmq_mqtt),
Config2.
end_per_testcase(Testcase, Config) ->
rabbit_ct_helpers:run_steps(Config,

View File

@ -42,11 +42,14 @@ init_per_suite(Config) ->
{rmq_extra_tcp_ports, [tcp_port_mqtt_extra,
tcp_port_mqtt_tls_extra]},
{rmq_nodes_clustered, true},
{rmq_nodes_count, 3}
{rmq_nodes_count, 3},
{start_rmq_with_plugins_disabled, true}
]),
rabbit_ct_helpers:run_setup_steps(Config1,
Config2 = rabbit_ct_helpers:run_setup_steps(Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config2, rabbitmq_mqtt),
Config2.
end_per_suite(Config) ->
rabbit_ct_helpers:run_teardown_steps(Config,

View File

@ -34,8 +34,11 @@ suite() ->
%% Testsuite setup/teardown.
%% -------------------------------------------------------------------
init_per_suite(Config) ->
init_per_suite(Config0) ->
rabbit_ct_helpers:log_environment(),
Config = rabbit_ct_helpers:set_config(
Config0,
[{start_rmq_with_plugins_disabled, true}]),
rabbit_ct_helpers:run_setup_steps(Config).
end_per_suite(Config) ->

View File

@ -30,11 +30,15 @@ end_per_suite(Config) ->
init_per_testcase(Testcase, Config) ->
rabbit_ct_helpers:testcase_started(Config, Testcase),
Config1 = rabbit_ct_helpers:set_config(Config, [
{rmq_nodename_suffix, Testcase}
{rmq_nodename_suffix, Testcase},
{start_rmq_with_plugins_disabled, true}
]),
rabbit_ct_helpers:run_steps(Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
Config2 = rabbit_ct_helpers:run_steps(
Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config2, rabbitmq_mqtt),
Config2.
end_per_testcase(Testcase, Config) ->
Config1 = rabbit_ct_helpers:run_steps(Config,

View File

@ -27,14 +27,18 @@ init_per_suite(Config) ->
Config1 = rabbit_ct_helpers:set_config(
Config,
[{mqtt_version, v5},
{rmq_nodename_suffix, ?MODULE}]),
{rmq_nodename_suffix, ?MODULE},
{start_rmq_with_plugins_disabled, true}
]),
Config2 = rabbit_ct_helpers:merge_app_env(
Config1,
{rabbit, [{forced_feature_flags_on_init, []}]}),
rabbit_ct_helpers:run_setup_steps(
Config2,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
Config3 = rabbit_ct_helpers:run_setup_steps(
Config2,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config3, rabbitmq_mqtt),
Config3.
end_per_suite(Config) ->
rabbit_ct_helpers:run_teardown_steps(

View File

@ -22,11 +22,16 @@ init_per_suite(Config) ->
Config,
[{rmq_nodename_suffix, ?MODULE},
{rmq_nodes_count, 2},
{rmq_nodes_clustered, false}]),
rabbit_ct_helpers:run_setup_steps(
Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
{rmq_nodes_clustered, false},
{start_rmq_with_plugins_disabled, true}
]),
Config2 = rabbit_ct_helpers:run_setup_steps(
Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config2, rabbitmq_mqtt),
util:enable_plugin(Config2, rabbitmq_federation),
Config2.
end_per_suite(Config) ->
rabbit_ct_helpers:run_teardown_steps(

View File

@ -59,12 +59,16 @@ init_per_group(Group, Config0) ->
{rmq_certspwd, "bunnychow"},
{rmq_nodes_clustered, true},
{rmq_nodes_count, 3},
{mqtt_version, Group}]),
rabbit_ct_helpers:run_setup_steps(
Config,
[fun merge_app_env/1] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
{mqtt_version, Group},
{start_rmq_with_plugins_disabled, true}
]),
Config1 = rabbit_ct_helpers:run_setup_steps(
Config,
[fun merge_app_env/1] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config1, rabbitmq_mqtt),
Config1.
end_per_group(_, Config) ->
rabbit_ct_helpers:run_teardown_steps(Config,

View File

@ -164,7 +164,8 @@ init_per_suite(Config) ->
Config, {rabbit, [
{quorum_tick_interval, 1000},
{stream_tick_interval, 1000},
{forced_feature_flags_on_init, []}
{forced_feature_flags_on_init, []},
{start_rmq_with_plugins_disabled, true}
]}),
rabbit_ct_helpers:run_setup_steps(Config1).
@ -189,10 +190,12 @@ init_per_group(Group, Config0) ->
Config0,
[{rmq_nodes_count, Nodes},
{rmq_nodename_suffix, Suffix}]),
rabbit_ct_helpers:run_steps(
Config,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
Config1 = rabbit_ct_helpers:run_steps(
Config,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config1, rabbitmq_mqtt),
Config1.
end_per_group(G, Config)
when G =:= cluster_size_1;

View File

@ -69,15 +69,16 @@ init_per_group(Group, Config0) ->
Config1 = rabbit_ct_helpers:set_config(
Config0,
[{rmq_nodes_count, Nodes},
{mqtt_version, v5}]),
{mqtt_version, v5},
{start_rmq_with_plugins_disabled, true}
]),
Config = rabbit_ct_helpers:run_steps(
Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
Plugins = [rabbitmq_stomp,
rabbitmq_stream],
[ok = rabbit_ct_broker_helpers:enable_plugin(Config, 0, Plugin) || Plugin <- Plugins],
util:enable_plugin(Config, rabbitmq_mqtt),
util:enable_plugin(Config, rabbitmq_stomp),
util:enable_plugin(Config, rabbitmq_stream),
Config.
end_per_group(_Group, Config) ->

View File

@ -37,13 +37,17 @@ init_per_suite(Config) ->
Config1 = rabbit_ct_helpers:set_config(Config, [
{rmq_nodename_suffix, Suffix},
{rmq_certspwd, "bunnychow"},
{rabbitmq_ct_tls_verify, verify_none}
{rabbitmq_ct_tls_verify, verify_none},
{start_rmq_with_plugins_disabled, true}
]),
MqttConfig = mqtt_config(),
rabbit_ct_helpers:run_setup_steps(Config1,
[ fun(Conf) -> merge_app_env(MqttConfig, Conf) end ] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
Config2 = rabbit_ct_helpers:run_setup_steps(
Config1,
[ fun(Conf) -> merge_app_env(MqttConfig, Conf) end ] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config2, rabbitmq_mqtt),
Config2.
mqtt_config() ->
{rabbitmq_mqtt, [

View File

@ -62,12 +62,18 @@ merge_app_env(Config) ->
init_per_suite(Config) ->
rabbit_ct_helpers:log_environment(),
Config1 = rabbit_ct_helpers:set_config(Config, {rmq_nodename_suffix, ?MODULE}),
rabbit_ct_helpers:run_setup_steps(
Config1,
[fun merge_app_env/1] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
Config1 = rabbit_ct_helpers:set_config(
Config,
[{rmq_nodename_suffix, ?MODULE},
{start_rmq_with_plugins_disabled, true}
]),
Config2 = rabbit_ct_helpers:run_setup_steps(
Config1,
[fun merge_app_env/1] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config2, rabbitmq_mqtt),
Config2.
end_per_suite(Config) ->
rabbit_ct_helpers:run_teardown_steps(Config,

View File

@ -64,7 +64,9 @@ init_per_group(G, Config)
init_per_group(Group, Config0) ->
Suffix = rabbit_ct_helpers:testcase_absname(Config0, "", "-"),
Config = rabbit_ct_helpers:set_config(
Config0, {rmq_nodename_suffix, Suffix}),
Config0, [{rmq_nodename_suffix, Suffix},
{start_rmq_with_plugins_disabled, true}
]),
Mod = list_to_atom("rabbit_mqtt_retained_msg_store_" ++ atom_to_list(Group)),
Env = [{rabbitmq_mqtt, [{retained_message_store, Mod}]},
{rabbit, [
@ -73,11 +75,13 @@ init_per_group(Group, Config0) ->
{default_vhost, "/"},
{default_permissions, [".*", ".*", ".*"]}
]}],
rabbit_ct_helpers:run_setup_steps(
Config,
[fun(Conf) -> rabbit_ct_helpers:merge_app_env(Conf, Env) end] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
Config1 = rabbit_ct_helpers:run_setup_steps(
Config,
[fun(Conf) -> rabbit_ct_helpers:merge_app_env(Conf, Env) end] ++
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
util:enable_plugin(Config1, rabbitmq_mqtt),
Config1.
end_per_group(G, Config)
when G =:= v4;
@ -173,6 +177,7 @@ recover(Config) ->
{qos, 1}]),
ok = emqtt:disconnect(C1),
ok = rabbit_ct_broker_helpers:restart_node(Config, 0),
rabbit_ct_broker_helpers:enable_plugin(Config, 0, rabbitmq_mqtt),
C2 = connect(ClientId, Config),
{ok, _, _} = emqtt:subscribe(C2, Topic, qos1),
ok = expect_publishes(C2, Topic, [Payload]),
@ -193,6 +198,7 @@ recover_with_message_expiry_interval(Config) ->
ok = emqtt:disconnect(C1),
%% Takes around 9 seconds on Linux.
ok = rabbit_ct_broker_helpers:restart_node(Config, 0),
rabbit_ct_broker_helpers:enable_plugin(Config, 0, rabbitmq_mqtt),
C2 = connect(ClientId, Config),
%% Retained message for topic/3 should have expired during node restart.

View File

@ -24,7 +24,8 @@
assert_message_expiry_interval/2,
await_exit/1,
await_exit/2,
non_clean_sess_opts/0
non_clean_sess_opts/0,
enable_plugin/2
]).
all_connection_pids(Config) ->
@ -171,3 +172,8 @@ start_client(ClientId, Config, Node, AdditionalOpts) ->
] ++ WsOpts ++ AdditionalOpts,
{ok, C} = emqtt:start_link(Options),
{C, Connect}.
enable_plugin(Config, Plugin) ->
Nodes = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
[rabbit_ct_broker_helpers:enable_plugin(Config, Node, Plugin)
|| Node <- Nodes].

View File

@ -142,8 +142,9 @@ suite() ->
%% Testsuite setup/teardown.
%% -------------------------------------------------------------------
init_per_suite(Config) ->
init_per_suite(Config0) ->
rabbit_ct_helpers:log_environment(),
Config = rabbit_ct_helpers:set_config(Config0, {test_plugins, [rabbitmq_mqtt]}),
rabbit_ct_helpers:run_setup_steps(Config).
end_per_suite(Config) ->
@ -161,14 +162,18 @@ init_per_group(Group, Config0) ->
Config0,
[{mqtt_version, v5},
{rmq_nodes_count, Nodes},
{rmq_nodename_suffix, Suffix}]),
{rmq_nodename_suffix, Suffix},
{start_rmq_with_plugins_disabled, true}
]),
Config = rabbit_ct_helpers:merge_app_env(
Config1,
{rabbit, [{quorum_tick_interval, 200}]}),
rabbit_ct_helpers:run_steps(
Config,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).
Config2 = rabbit_ct_helpers:run_steps(
Config,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()),
[util:enable_plugin(Config2, Plugin) || Plugin <- ?config(test_plugins, Config2)],
Config2.
end_per_group(G, Config)
when G =:= cluster_size_1;
@ -918,6 +923,7 @@ subscription_options_persisted(Config) ->
{<<"t2">>, [{nl, false}, {rap, true}, {qos, 1}]}]),
unlink(C1),
ok = rabbit_ct_broker_helpers:restart_node(Config, 0),
[util:enable_plugin(Config, Plugin) || Plugin <- ?config(test_plugins, Config)],
C2 = connect(ClientId, Config, [{clean_start, false}]),
ok = emqtt:publish(C2, <<"t1">>, <<"m1">>),
ok = emqtt:publish(C2, <<"t2">>, <<"m2">>, [{retain, true}]),
@ -1742,6 +1748,7 @@ will_delay_node_restart(Config) ->
timer:sleep(SleepMs),
assert_nothing_received(),
ok = rabbit_ct_broker_helpers:start_node(Config, 0),
[util:enable_plugin(Config, Plugin) || Plugin <- ?config(test_plugins, Config)],
%% After node 0 restarts, we should receive the Will Message promptly on both nodes 0 and 1.
receive {publish, #{client_pid := Sub1,
payload := Payload}} -> ok

View File

@ -18,8 +18,10 @@ groups() ->
suite() ->
v5_SUITE:suite().
init_per_suite(Config) ->
v5_SUITE:init_per_suite(Config).
init_per_suite(Config0) ->
Config = v5_SUITE:init_per_suite(Config0),
rabbit_ct_helpers:set_config(Config, {test_plugins, [rabbitmq_mqtt,
rabbitmq_web_mqtt]}).
end_per_suite(Config) ->
v5_SUITE:end_per_suite(Config).
@ -27,8 +29,8 @@ end_per_suite(Config) ->
init_per_group(mqtt, Config) ->
%% This is the main difference with rabbitmq_mqtt.
rabbit_ct_helpers:set_config(Config, {websocket, true});
init_per_group(Group, Config) ->
v5_SUITE:init_per_group(Group, Config).
init_per_group(Group, Config0) ->
v5_SUITE:init_per_group(Group, Config0).
end_per_group(Group, Config) ->
v5_SUITE:end_per_group(Group, Config).