Skip to content

Commit 6955665

Browse files
authored
Merge pull request #13378 from rabbitmq/backport-test-fixes-from-main
Backport test fixes from `main` to `v4.0.x`
2 parents 926bce2 + 02c7b04 commit 6955665

File tree

12 files changed

+109
-81
lines changed

12 files changed

+109
-81
lines changed

.github/workflows/test-make-target.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ jobs:
8282
- name: RUN TESTS
8383
if: inputs.plugin != 'rabbitmq_cli'
8484
run: |
85+
sudo netstat -ntp
8586
make -C deps/${{ inputs.plugin }} ${{ inputs.make_target }} RABBITMQ_METADATA_STORE=${{ inputs.metadata_store }}
8687
8788
# rabbitmq_cli needs a correct broker version for two of its tests.

deps/rabbit/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,10 @@ define ct_master.erl
241241
peer:call(Pid2, net_kernel, set_net_ticktime, [5]),
242242
peer:call(Pid3, net_kernel, set_net_ticktime, [5]),
243243
peer:call(Pid4, net_kernel, set_net_ticktime, [5]),
244-
peer:call(Pid1, persistent_term, put, [rabbit_ct_tcp_port_base, 23000]),
245-
peer:call(Pid2, persistent_term, put, [rabbit_ct_tcp_port_base, 25000]),
246-
peer:call(Pid3, persistent_term, put, [rabbit_ct_tcp_port_base, 27000]),
247-
peer:call(Pid4, persistent_term, put, [rabbit_ct_tcp_port_base, 29000]),
244+
peer:call(Pid1, persistent_term, put, [rabbit_ct_tcp_port_base, 16000]),
245+
peer:call(Pid2, persistent_term, put, [rabbit_ct_tcp_port_base, 20000]),
246+
peer:call(Pid3, persistent_term, put, [rabbit_ct_tcp_port_base, 24000]),
247+
peer:call(Pid4, persistent_term, put, [rabbit_ct_tcp_port_base, 28000]),
248248
[{[_], {ok, Results}}] = ct_master_fork:run("$1"),
249249
peer:stop(Pid4),
250250
peer:stop(Pid3),

deps/rabbit/docs/rabbitmqctl.8

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ next time it is started:
346346
.sp
347347
.Dl rabbitmqctl force_boot
348348
.\" ------------------------------------------------------------------
349-
.It Cm force_reset
349+
.It Cm force_reset Em (deprecated)
350350
.Pp
351351
Forcefully returns a RabbitMQ node to its virgin state.
352352
.Pp
@@ -359,6 +359,13 @@ management database state and cluster configuration.
359359
It should only be used as a last resort if the database or cluster
360360
configuration has been corrupted.
361361
.Pp
362+
The
363+
.Cm force_reset
364+
command is
365+
.Sy deprecated .
366+
It remains available when the Mnesia metadata store is used.
367+
It is unsupported with the Khepri metadata store.
368+
.Pp
362369
For
363370
.Cm reset
364371
and

deps/rabbit/src/rabbit_db.erl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,11 +163,13 @@ force_reset_using_mnesia() ->
163163
#{domain => ?RMQLOG_DOMAIN_DB}),
164164
rabbit_mnesia:force_reset().
165165

166+
-spec force_reset_using_khepri() -> no_return().
167+
166168
force_reset_using_khepri() ->
167-
?LOG_DEBUG(
168-
"DB: resetting node forcefully (using Khepri)",
169+
?LOG_ERROR(
170+
"DB: resetting node forcefully is unsupported with Khepri",
169171
#{domain => ?RMQLOG_DOMAIN_DB}),
170-
rabbit_khepri:force_reset().
172+
throw({error, "Forced reset is unsupported with Khepri"}).
171173

172174
-spec force_load_on_next_boot() -> Ret when
173175
Ret :: ok.

deps/rabbit/src/rabbit_khepri.erl

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,7 @@
168168
-export([check_cluster_consistency/0,
169169
check_cluster_consistency/2,
170170
node_info/0]).
171-
-export([reset/0,
172-
force_reset/0]).
171+
-export([reset/0]).
173172
-export([cluster_status_from_khepri/0,
174173
cli_cluster_status/0]).
175174

@@ -601,23 +600,6 @@ reset() ->
601600

602601
%% @private
603602

604-
force_reset() ->
605-
case rabbit:is_running() of
606-
false ->
607-
ok = khepri:stop(?RA_CLUSTER_NAME),
608-
DataDir = maps:get(data_dir, ra_system:fetch(?RA_SYSTEM)),
609-
ok = rabbit_ra_systems:ensure_ra_system_stopped(?RA_SYSTEM),
610-
ok = rabbit_file:recursive_delete(
611-
filelib:wildcard(DataDir ++ "/*")),
612-
613-
_ = file:delete(rabbit_guid:filename()),
614-
ok;
615-
true ->
616-
throw({error, rabbitmq_unexpectedly_running})
617-
end.
618-
619-
%% @private
620-
621603
force_shrink_member_to_current_member() ->
622604
ok = ra_server_proc:force_shrink_members_to_current_member(
623605
{?RA_CLUSTER_NAME, node()}).

deps/rabbit/test/amqp_auth_SUITE.erl

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,17 @@ init_per_group(Group, Config0) ->
112112
Config1,
113113
rabbit_ct_broker_helpers:setup_steps() ++
114114
rabbit_ct_client_helpers:setup_steps()),
115-
Vhost = <<"test vhost">>,
116-
User = <<"test user">>,
117-
ok = rabbit_ct_broker_helpers:add_vhost(Config, Vhost),
118-
ok = rabbit_ct_broker_helpers:add_user(Config, User),
119-
[{test_vhost, Vhost},
120-
{test_user, User}] ++ Config.
115+
case Config of
116+
_ when is_list(Config) ->
117+
Vhost = <<"test vhost">>,
118+
User = <<"test user">>,
119+
ok = rabbit_ct_broker_helpers:add_vhost(Config, Vhost),
120+
ok = rabbit_ct_broker_helpers:add_user(Config, User),
121+
[{test_vhost, Vhost},
122+
{test_user, User}] ++ Config;
123+
{skip, _} = Skip ->
124+
Skip
125+
end.
121126

122127
end_per_group(_Group, Config) ->
123128
ok = rabbit_ct_broker_helpers:delete_user(Config, ?config(test_user, Config)),

deps/rabbit/test/clustering_management_SUITE.erl

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,6 @@ groups() ->
7676
status_with_alarm,
7777
pid_file_and_await_node_startup_in_khepri,
7878
await_running_count_in_khepri,
79-
start_with_invalid_schema_in_path,
8079
persistent_cluster_id,
8180
stop_start_cluster_node,
8281
restart_cluster_node,
@@ -331,7 +330,7 @@ restart_cluster_node(Config) ->
331330
assert_clustered([Rabbit, Hare]).
332331

333332
join_and_part_cluster_in_khepri(Config) ->
334-
[Rabbit, Hare, Bunny] = cluster_members(Config),
333+
[Rabbit, Bunny, Hare] = cluster_members(Config),
335334
assert_not_clustered(Rabbit),
336335
assert_not_clustered(Hare),
337336
assert_not_clustered(Bunny),
@@ -441,38 +440,38 @@ join_to_start_interval(Config) ->
441440
assert_clustered([Rabbit, Hare]).
442441

443442
join_cluster_in_minority(Config) ->
444-
[Rabbit, Hare, Bunny] = cluster_members(Config),
443+
[Rabbit, Bunny, Hare] = cluster_members(Config),
445444
assert_not_clustered(Rabbit),
446445
assert_not_clustered(Hare),
447446
assert_not_clustered(Bunny),
448447

449-
stop_join_start(Config, Bunny, Rabbit),
448+
stop_join_start(Config, Rabbit, Bunny),
450449
assert_clustered([Rabbit, Bunny]),
451-
ok = rabbit_ct_broker_helpers:stop_node(Config, Bunny),
450+
ok = rabbit_ct_broker_helpers:stop_node(Config, Rabbit),
452451

453452
ok = stop_app(Config, Hare),
454-
?assertEqual(ok, join_cluster(Config, Hare, Rabbit, false)),
453+
?assertEqual(ok, join_cluster(Config, Hare, Bunny, false)),
455454

456-
ok = rabbit_ct_broker_helpers:start_node(Config, Bunny),
455+
ok = rabbit_ct_broker_helpers:start_node(Config, Rabbit),
457456
?assertEqual(ok, join_cluster(Config, Hare, Rabbit, false)),
458457
?assertEqual(ok, start_app(Config, Hare)),
459458

460459
assert_clustered([Rabbit, Bunny, Hare]).
461460

462461
join_cluster_with_rabbit_stopped(Config) ->
463-
[Rabbit, Hare, Bunny] = cluster_members(Config),
462+
[Rabbit, Bunny, Hare] = cluster_members(Config),
464463
assert_not_clustered(Rabbit),
465464
assert_not_clustered(Hare),
466465
assert_not_clustered(Bunny),
467466

468-
stop_join_start(Config, Bunny, Rabbit),
467+
stop_join_start(Config, Rabbit, Bunny),
469468
assert_clustered([Rabbit, Bunny]),
470-
ok = stop_app(Config, Bunny),
469+
ok = stop_app(Config, Rabbit),
471470

472471
ok = stop_app(Config, Hare),
473-
?assertEqual(ok, join_cluster(Config, Hare, Rabbit, false)),
472+
?assertEqual(ok, join_cluster(Config, Hare, Bunny, false)),
474473

475-
ok = start_app(Config, Bunny),
474+
ok = start_app(Config, Rabbit),
476475
?assertEqual(ok, join_cluster(Config, Hare, Rabbit, false)),
477476
?assertEqual(ok, start_app(Config, Hare)),
478477

@@ -947,22 +946,11 @@ force_reset_node_in_khepri(Config) ->
947946

948947
stop_join_start(Config, Rabbit, Hare),
949948
stop_app(Config, Rabbit),
950-
ok = force_reset(Config, Rabbit),
951-
assert_cluster_status({[Rabbit, Hare], [Rabbit, Hare], [Hare]}, [Hare]),
952-
%% Khepri is stopped, so it won't report anything.
953-
assert_status({[Rabbit], [], [Rabbit], [Rabbit], []}, [Rabbit]),
954-
%% Hare thinks that Rabbit is still clustered
955-
assert_cluster_status({[Rabbit, Hare], [Rabbit, Hare], [Hare]},
956-
[Hare]),
957-
ok = start_app(Config, Rabbit),
958-
assert_not_clustered(Rabbit),
959-
%% We can rejoin Rabbit and Hare. Unlike with Mnesia, we try to solve the
960-
%% inconsistency instead of returning an error.
961-
ok = stop_app(Config, Rabbit),
962-
?assertEqual(ok, join_cluster(Config, Rabbit, Hare, false)),
963-
ok = start_app(Config, Rabbit),
964-
assert_cluster_status({[Rabbit, Hare], [Rabbit, Hare], [Rabbit, Hare]},
965-
[Rabbit, Hare]).
949+
{error, 69, Msg} = force_reset(Config, Rabbit),
950+
?assertEqual(
951+
match,
952+
re:run(
953+
Msg, "Forced reset is unsupported with Khepri", [{capture, none}])).
966954

967955
status_with_alarm(Config) ->
968956
[Rabbit, Hare] = rabbit_ct_broker_helpers:get_node_configs(Config,
@@ -1124,7 +1112,7 @@ await_running_count_in_khepri(Config) ->
11241112
await_running_count, [5, 1000])).
11251113

11261114
start_nodes_in_reverse_order(Config) ->
1127-
[Rabbit, Hare, Bunny] = cluster_members(Config),
1115+
[Rabbit, Bunny, Hare] = cluster_members(Config),
11281116
assert_not_clustered(Rabbit),
11291117
assert_not_clustered(Hare),
11301118
assert_not_clustered(Bunny),
@@ -1147,7 +1135,7 @@ start_nodes_in_reverse_order(Config) ->
11471135

11481136
%% Test booting nodes in the wrong order for Mnesia. Interesting...
11491137
start_nodes_in_stop_order(Config) ->
1150-
[Rabbit, Hare, Bunny] = cluster_members(Config),
1138+
[Rabbit, Bunny, Hare] = cluster_members(Config),
11511139
assert_not_clustered(Rabbit),
11521140
assert_not_clustered(Hare),
11531141
assert_not_clustered(Bunny),
@@ -1172,7 +1160,7 @@ start_nodes_in_stop_order(Config) ->
11721160
end.
11731161

11741162
start_nodes_in_stop_order_in_khepri(Config) ->
1175-
[Rabbit, Hare, Bunny] = cluster_members(Config),
1163+
[Rabbit, Bunny, Hare] = cluster_members(Config),
11761164
assert_not_clustered(Rabbit),
11771165
assert_not_clustered(Hare),
11781166
assert_not_clustered(Bunny),
@@ -1195,7 +1183,7 @@ start_nodes_in_stop_order_in_khepri(Config) ->
11951183

11961184
%% TODO test force_boot with Khepri involved
11971185
start_nodes_in_stop_order_with_force_boot(Config) ->
1198-
[Rabbit, Hare, Bunny] = cluster_members(Config),
1186+
[Rabbit, Bunny, Hare] = cluster_members(Config),
11991187
assert_not_clustered(Rabbit),
12001188
assert_not_clustered(Hare),
12011189
assert_not_clustered(Bunny),

deps/rabbit/test/rabbit_stream_queue_SUITE.erl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1563,13 +1563,13 @@ format(Config) ->
15631563
case length(Nodes) of
15641564
3 ->
15651565
[_, Server2, Server3] = Nodes,
1566-
ok = rabbit_control_helper:command(stop_app, Server2),
15671566
ok = rabbit_control_helper:command(stop_app, Server3),
1567+
ok = rabbit_control_helper:command(stop_app, Server2),
15681568

15691569
Fmt2 = rabbit_ct_broker_helpers:rpc(Config, Server, rabbit_stream_queue,
15701570
?FUNCTION_NAME, [QRecord, #{}]),
1571-
ok = rabbit_control_helper:command(start_app, Server2),
15721571
ok = rabbit_control_helper:command(start_app, Server3),
1572+
ok = rabbit_control_helper:command(start_app, Server2),
15731573
?assertEqual(stream, proplists:get_value(type, Fmt2)),
15741574
?assertEqual(minority, proplists:get_value(state, Fmt2)),
15751575
?assertEqual(Server, proplists:get_value(leader, Fmt2)),
@@ -2741,7 +2741,7 @@ retry_if_coordinator_unavailable(Config, Server, Cmd, Retry) ->
27412741
case re:run(Msg, ".*coordinator_unavailable.*", [{capture, none}]) of
27422742
match ->
27432743
ct:pal("Attempt to execute command ~p failed, coordinator unavailable", [Cmd]),
2744-
retry_if_coordinator_unavailable(Config, Ch, Cmd, Retry - 1);
2744+
retry_if_coordinator_unavailable(Config, Server, Cmd, Retry - 1);
27452745
_ ->
27462746
exit(Error)
27472747
end

deps/rabbit/test/unit_credit_flow_SUITE.erl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111

1212
-compile(export_all).
1313

14+
suite() ->
15+
[{timetrap, {minutes, 3}}].
16+
1417
all() ->
1518
[
1619
{group, sequential_tests}

deps/rabbitmq_ct_helpers/src/rabbit_ct_broker_helpers.erl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
kill_node_after/3,
5656

5757
reset_node/2,
58-
force_reset_node/2,
5958

6059
forget_cluster_node/3,
6160
forget_cluster_node/4,
@@ -174,7 +173,8 @@
174173
user/1,
175174

176175
configured_metadata_store/1,
177-
await_metadata_store_consistent/2
176+
await_metadata_store_consistent/2,
177+
do_nodes_run_same_ra_machine_version/2
178178
]).
179179

180180
%% Internal functions exported to be used by rpc:call/4.
@@ -1071,6 +1071,12 @@ ra_last_applied(ServerId) ->
10711071
#{last_applied := LastApplied} = ra:key_metrics(ServerId),
10721072
LastApplied.
10731073

1074+
do_nodes_run_same_ra_machine_version(Config, RaMachineMod) ->
1075+
[MacVer1 | MacVerN] = MacVers = rpc_all(Config, RaMachineMod, version, []),
1076+
ct:pal("Ra machine versions of ~s: ~0p", [RaMachineMod, MacVers]),
1077+
is_integer(MacVer1) andalso
1078+
lists:all(fun(MacVer) -> MacVer =:= MacVer1 end, MacVerN).
1079+
10741080
rewrite_node_config_file(Config, Node) ->
10751081
NodeConfig = get_node_config(Config, Node),
10761082
I = if
@@ -2055,10 +2061,6 @@ reset_node(Config, Node) ->
20552061
Name = get_node_config(Config, Node, nodename),
20562062
rabbit_control_helper:command(reset, Name).
20572063

2058-
force_reset_node(Config, Node) ->
2059-
Name = get_node_config(Config, Node, nodename),
2060-
rabbit_control_helper:command(force_reset, Name).
2061-
20622064
forget_cluster_node(Config, Node, NodeToForget) ->
20632065
forget_cluster_node(Config, Node, NodeToForget, []).
20642066
forget_cluster_node(Config, Node, NodeToForget, Opts) ->

0 commit comments

Comments
 (0)