Skip to content

Commit c6ea716

Browse files
Merge pull request #11572 from rabbitmq/speed-up-rabbit-tests-backport
Speed up rabbit tests backport
2 parents 54c2b0a + c9caff5 commit c6ea716

13 files changed

+252
-323
lines changed

deps/rabbit/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@ rabbitmq_integration_suite(
861861
additional_beam = [
862862
":test_queue_utils_beam",
863863
],
864-
shard_count = 22,
864+
shard_count = 19,
865865
deps = [
866866
"@proper//:erlang_app",
867867
],

deps/rabbit/test/dead_lettering_SUITE.erl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ groups() ->
7979
dead_letter_routing_key_cycle_max_length,
8080
dead_letter_headers_reason_maxlen,
8181
%% tested separately in rabbit_fifo_dlx_integration_SUITE
82-
dead_letter_missing_exchange
82+
dead_letter_missing_exchange,
83+
dead_letter_routing_key_cycle_ttl
8384
]}
8485
]
8586
},
@@ -96,9 +97,14 @@ suite() ->
9697
%% -------------------------------------------------------------------
9798

9899
init_per_suite(Config0) ->
100+
Tick = 256,
99101
rabbit_ct_helpers:log_environment(),
100102
Config = rabbit_ct_helpers:merge_app_env(
101-
Config0, {rabbit, [{dead_letter_worker_publisher_confirm_timeout, 2000}]}),
103+
Config0, {rabbit, [{dead_letter_worker_publisher_confirm_timeout, 2000},
104+
{collect_statistics_interval, Tick},
105+
{channel_tick_interval, Tick},
106+
{quorum_tick_interval, Tick},
107+
{stream_tick_interval, Tick}]}),
102108
rabbit_ct_helpers:run_setup_steps(Config).
103109

104110
end_per_suite(Config) ->

deps/rabbit/test/dynamic_qq_SUITE.erl

Lines changed: 38 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,7 @@ groups() ->
2727
{clustered, [], [
2828
{cluster_size_3, [], [
2929
vhost_deletion,
30-
quorum_unaffected_after_vhost_failure
31-
]},
32-
{cluster_size_5, [], [
33-
%% Khepri does not work on a cluster in minority. Thus, to test these
34-
%% specific cases with quorum queues in minority we need a bigger cluster.
35-
%% 5-nodes RMQ and 3-nodes quorum queues allows to test the same test
36-
%% cases than a 3-nodes mnesia cluster.
30+
quorum_unaffected_after_vhost_failure,
3731
recover_follower_after_standalone_restart,
3832
force_delete_if_no_consensus,
3933
takeover_on_failure,
@@ -136,8 +130,11 @@ force_delete_if_no_consensus(Config) ->
136130
ACh = rabbit_ct_client_helpers:open_channel(Config, A),
137131
rabbit_ct_client_helpers:publish(ACh, QName, 10),
138132

139-
ok = rabbit_ct_broker_helpers:restart_node(Config, B),
140-
ok = rabbit_ct_broker_helpers:stop_node(Config, A),
133+
%% Delete a member on one node
134+
?assertEqual(ok,
135+
rpc:call(Server, rabbit_quorum_queue, delete_member,
136+
[<<"/">>, QName, B])),
137+
%% stop another node
141138
ok = rabbit_ct_broker_helpers:stop_node(Config, C),
142139

143140
BCh = rabbit_ct_client_helpers:open_channel(Config, B),
@@ -151,6 +148,7 @@ force_delete_if_no_consensus(Config) ->
151148
BCh2 = rabbit_ct_client_helpers:open_channel(Config, B),
152149
?assertMatch(#'queue.delete_ok'{},
153150
amqp_channel:call(BCh2, #'queue.delete'{queue = QName})),
151+
ok = rabbit_ct_broker_helpers:restart_node(Config, C),
154152
ok.
155153

156154
takeover_on_failure(Config) ->
@@ -229,56 +227,38 @@ quorum_unaffected_after_vhost_failure(Config) ->
229227
60000).
230228

231229
recover_follower_after_standalone_restart(Config) ->
232-
case rabbit_ct_helpers:is_mixed_versions() of
233-
false ->
234-
%% Tests that followers can be brought up standalone after forgetting the
235-
%% rest of the cluster. Consensus won't be reached as there is only one node in the
236-
%% new cluster.
237-
[Server | _] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
238-
Ch = rabbit_ct_client_helpers:open_channel(Config, Server),
239-
240-
QName = ?config(queue_name, Config),
241-
Args = ?config(queue_args, Config),
242-
amqp_channel:call(Ch, #'queue.declare'{queue = QName,
243-
arguments = Args,
244-
durable = true
245-
}),
246-
247-
RaName = queue_utils:ra_name(QName),
248-
{ok, [{_, A}, {_, B}, {_, C}], _} = ra:members({RaName, Server}),
249-
Servers = [A, B, C],
250-
251-
rabbit_ct_client_helpers:publish(Ch, QName, 15),
252-
rabbit_ct_client_helpers:close_channel(Ch),
253-
254-
Name = ra_name(QName),
255-
wait_for_messages_ready(Servers, Name, 15),
256-
257-
rabbit_ct_broker_helpers:stop_node(Config, C),
258-
rabbit_ct_broker_helpers:stop_node(Config, B),
259-
rabbit_ct_broker_helpers:stop_node(Config, A),
260-
261-
%% Restart one follower
262-
forget_cluster_node(Config, B, C),
263-
forget_cluster_node(Config, B, A),
264-
265-
ok = rabbit_ct_broker_helpers:start_node(Config, B),
266-
wait_for_messages_ready([B], Name, 15),
267-
ok = rabbit_ct_broker_helpers:stop_node(Config, B),
268-
269-
%% Restart the other
270-
forget_cluster_node(Config, C, B),
271-
forget_cluster_node(Config, C, A),
272-
273-
ok = rabbit_ct_broker_helpers:start_node(Config, C),
274-
wait_for_messages_ready([C], Name, 15),
275-
ok = rabbit_ct_broker_helpers:stop_node(Config, C),
276-
ok;
277-
_ ->
278-
{skip, "cannot be run in mixed mode"}
279-
end.
230+
%% Tests that quorum queues shrink when forget_cluster_node
231+
%% operations are issues.
232+
[Server | _] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
233+
Ch = rabbit_ct_client_helpers:open_channel(Config, Server),
234+
235+
QName = ?config(queue_name, Config),
236+
Args = ?config(queue_args, Config),
237+
amqp_channel:call(Ch, #'queue.declare'{queue = QName,
238+
arguments = Args,
239+
durable = true
240+
}),
241+
242+
RaName = queue_utils:ra_name(QName),
243+
{ok, [{_, A}, {_, B}, {_, C}], _} = ra:members({RaName, Server}),
244+
Servers = [A, B, C],
245+
246+
Name = ra_name(QName),
247+
248+
rabbit_ct_client_helpers:publish(Ch, QName, 15),
249+
wait_for_messages_ready(Servers, Name, 15),
250+
rabbit_ct_client_helpers:close_channel(Ch),
251+
252+
%% Restart one follower
253+
forget_cluster_node(Config, B, C),
254+
wait_for_messages_ready([B], Name, 15),
255+
forget_cluster_node(Config, B, A),
256+
wait_for_messages_ready([B], Name, 15),
257+
258+
ok.
280259

281260
%%----------------------------------------------------------------------------
282261
forget_cluster_node(Config, Node, NodeToRemove) ->
262+
ok = rabbit_control_helper:command(stop_app, NodeToRemove),
283263
rabbit_ct_broker_helpers:rabbitmqctl(
284-
Config, Node, ["forget_cluster_node", "--offline", NodeToRemove]).
264+
Config, Node, ["forget_cluster_node", NodeToRemove]).

deps/rabbit/test/metrics_SUITE.erl

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
%% Copyright (c) 2007-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
66
%%
77
-module(metrics_SUITE).
8+
-compile(nowarn_export_all).
89
-compile(export_all).
910

10-
-include_lib("common_test/include/ct.hrl").
1111
-include_lib("proper/include/proper.hrl").
1212
-include_lib("eunit/include/eunit.hrl").
1313
-include_lib("amqp_client/include/amqp_client.hrl").
@@ -142,7 +142,12 @@ connection_metric_idemp(Config, {N, R}) ->
142142
5000),
143143
Table2 = [ Pid || {Pid, _} <- read_table_rpc(Config, connection_coarse_metrics)],
144144
% refresh stats 'R' times
145-
[[Pid ! emit_stats || Pid <- Table] || _ <- lists:seq(1, R)],
145+
[[begin
146+
Pid ! emit_stats
147+
end|| Pid <- Table] || _ <- lists:seq(1, R)],
148+
[begin
149+
_ = gen_server:call(Pid, {info, [pid]})
150+
end|| Pid <- Table],
146151
force_metric_gc(Config),
147152
TableAfter = [ Pid || {Pid, _} <- read_table_rpc(Config, connection_metrics)],
148153
TableAfter2 = [ Pid || {Pid, _} <- read_table_rpc(Config, connection_coarse_metrics)],
@@ -159,6 +164,9 @@ channel_metric_idemp(Config, {N, R}) ->
159164
Table2 = [ Pid || {Pid, _} <- read_table_rpc(Config, channel_process_metrics)],
160165
% refresh stats 'R' times
161166
[[Pid ! emit_stats || Pid <- Table] || _ <- lists:seq(1, R)],
167+
[begin
168+
_ = gen_server:call(Pid, {info, [pid]})
169+
end|| Pid <- Table],
162170
force_metric_gc(Config),
163171
TableAfter = [ Pid || {Pid, _} <- read_table_rpc(Config, channel_metrics)],
164172
TableAfter2 = [ Pid || {Pid, _} <- read_table_rpc(Config, channel_process_metrics)],
@@ -182,7 +190,10 @@ queue_metric_idemp(Config, {N, R}) ->
182190
Table2 = [ Pid || {Pid, _, _} <- read_table_rpc(Config, queue_coarse_metrics)],
183191
% refresh stats 'R' times
184192
ChanTable = read_table_rpc(Config, channel_created),
185-
[[Pid ! emit_stats || {Pid, _, _} <- ChanTable ] || _ <- lists:seq(1, R)],
193+
[[begin
194+
Pid ! emit_stats,
195+
gen_server2:call(Pid, flush)
196+
end|| {Pid, _, _} <- ChanTable ] || _ <- lists:seq(1, R)],
186197
force_metric_gc(Config),
187198
TableAfter = [ Pid || {Pid, _, _} <- read_table_rpc(Config, queue_metrics)],
188199
TableAfter2 = [ Pid || {Pid, _, _} <- read_table_rpc(Config, queue_coarse_metrics)],
@@ -383,8 +394,13 @@ ensure_channel_queue_metrics_populated(Chan, Queue) ->
383394
{#'basic.get_ok'{}, #amqp_msg{}} = amqp_channel:call(Chan, Get).
384395

385396
force_channel_stats(Config) ->
386-
[ Pid ! emit_stats || {Pid, _} <- read_table_rpc(Config, channel_created) ],
387-
timer:sleep(100).
397+
[begin
398+
Pid ! emit_stats,
399+
gen_server2:call(Pid, flush)
400+
end
401+
|| {Pid, _} <- read_table_rpc(Config, channel_created)
402+
],
403+
ok.
388404

389405
read_table_rpc(Config, Table) ->
390406
rabbit_ct_broker_helpers:rpc(Config, 0, ?MODULE, read_table, [Table]).
@@ -397,7 +413,6 @@ read_table(Table) ->
397413
ets:tab2list(Table).
398414

399415
force_metric_gc(Config) ->
400-
timer:sleep(300),
401416
rabbit_ct_broker_helpers:rpc(Config, 0, erlang, send,
402417
[rabbit_core_metrics_gc, start_gc]),
403418
rabbit_ct_broker_helpers:rpc(Config, 0, gen_server, call,

deps/rabbit/test/peer_discovery_classic_config_SUITE.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
cluster_members_online/2
1717
]).
1818

19+
-compile(nowarn_export_all).
1920
-compile(export_all).
2021

2122
all() ->

deps/rabbit/test/product_info_SUITE.erl

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -55,53 +55,43 @@ init_per_suite(Config) ->
5555
end.
5656

5757
end_per_suite(Config) ->
58-
rabbit_ct_helpers:run_teardown_steps(Config).
59-
60-
init_per_group(_, Config) ->
61-
Config.
62-
63-
end_per_group(_, Config) ->
6458
Config.
6559

66-
init_per_testcase(Testcase, Config) ->
67-
rabbit_ct_helpers:testcase_started(Config, Testcase),
60+
init_per_group(Group, Config0) ->
6861
ClusterSize = 1,
69-
TestNumber = rabbit_ct_helpers:testcase_number(Config, ?MODULE, Testcase),
62+
PrivDir = ?config(priv_dir, Config0),
63+
MotdFile = filename:join(PrivDir, "motd.txt"),
64+
ok = file:write_file(MotdFile, <<"My MOTD\n">>),
7065
Config1 = rabbit_ct_helpers:set_config(
71-
Config,
66+
Config0,
7267
[
73-
{rmq_nodename_suffix, Testcase},
74-
{tcp_ports_base, {skip_n_nodes, TestNumber * ClusterSize}}
68+
{rmq_nodename_suffix, Group},
69+
{tcp_ports_base, {skip_n_nodes, ClusterSize}},
70+
{motd_file, MotdFile}
7571
]),
76-
Config2 = case Testcase of
77-
override_product_name_in_conf ->
78-
rabbit_ct_helpers:merge_app_env(
79-
Config1,
80-
{rabbit, [{product_name, "MyProduct"}]});
81-
override_product_version_in_conf ->
82-
rabbit_ct_helpers:merge_app_env(
83-
Config1,
84-
{rabbit, [{product_version, "MyVersion"}]});
85-
set_motd_in_conf ->
86-
PrivDir = ?config(priv_dir, Config),
87-
MotdFile = filename:join(PrivDir, "motd.txt"),
88-
ok = file:write_file(MotdFile, <<"My MOTD\n">>),
89-
C2 = rabbit_ct_helpers:set_config(
90-
Config1,
91-
{motd_file, MotdFile}),
92-
rabbit_ct_helpers:merge_app_env(
93-
C2,
94-
{rabbit, [{motd_file, MotdFile}]})
95-
end,
96-
rabbit_ct_helpers:run_steps(Config2,
72+
73+
Config = rabbit_ct_helpers:merge_app_env(
74+
Config1,
75+
{rabbit, [
76+
{product_name, "MyProduct"},
77+
{product_version, "MyVersion"},
78+
{motd_file, MotdFile}]}),
79+
rabbit_ct_helpers:run_steps(Config,
9780
rabbit_ct_broker_helpers:setup_steps() ++
9881
rabbit_ct_client_helpers:setup_steps()).
9982

83+
end_per_group(_, Config) ->
84+
rabbit_ct_helpers:run_steps(Config,
85+
rabbit_ct_client_helpers:teardown_steps() ++
86+
rabbit_ct_broker_helpers:teardown_steps()).
87+
88+
init_per_testcase(Testcase, Config) ->
89+
rabbit_ct_helpers:testcase_started(Config, Testcase),
90+
Config.
91+
10092
end_per_testcase(Testcase, Config) ->
101-
Config1 = rabbit_ct_helpers:run_steps(Config,
102-
rabbit_ct_client_helpers:teardown_steps() ++
103-
rabbit_ct_broker_helpers:teardown_steps()),
104-
rabbit_ct_helpers:testcase_finished(Config1, Testcase).
93+
rabbit_ct_helpers:testcase_finished(Config, Testcase),
94+
Config.
10595

10696
%% -------------------------------------------------------------------
10797
%% Testcases.

deps/rabbit/test/queue_type_SUITE.erl

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,6 @@ init_per_group0(Group, Config) ->
8282
ok = rabbit_ct_broker_helpers:rpc(
8383
Config2, 0, application, set_env,
8484
[rabbit, channel_tick_interval, 100]),
85-
%% HACK: the larger cluster sizes benefit for a bit more time
86-
%% after clustering before running the tests.
87-
case Group of
88-
cluster_size_5 ->
89-
timer:sleep(5000);
90-
_ ->
91-
ok
92-
end,
9385
EnableFF = rabbit_ct_broker_helpers:enable_feature_flag(Config2,
9486
message_containers),
9587
ct:pal("message_containers ff ~p", [EnableFF]),

0 commit comments

Comments
 (0)