Skip to content

Commit 7388e14

Browse files
committed
rabbit_ct_broker_helpers: Assert that the expected metadata store is used
[Why] It helps to detect when the nodes are not in the expected state.
1 parent cba4e22 commit 7388e14

File tree

1 file changed

+63
-7
lines changed

1 file changed

+63
-7
lines changed

deps/rabbitmq_ct_helpers/src/rabbit_ct_broker_helpers.erl

Lines changed: 63 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -441,8 +441,22 @@ start_rabbitmq_node(Master, Config, NodeConfig, I) ->
441441
{failed_boot_attempts, Attempts + 1}),
442442
start_rabbitmq_node(Master, Config, NodeConfig5, I);
443443
NodeConfig4 ->
444-
Master ! {self(), I, NodeConfig4},
445-
unlink(Master)
444+
case uses_expected_metadata_store(Config, NodeConfig4) of
445+
{MetadataStore, MetadataStore} ->
446+
Master ! {self(), I, NodeConfig4},
447+
unlink(Master);
448+
{ExpectedMetadataStore, UsedMetadataStore} ->
449+
stop_rabbitmq_node(Config, NodeConfig4),
450+
Nodename = ?config(nodename, NodeConfig4),
451+
Error = {skip,
452+
rabbit_misc:format(
453+
"Node ~s is using the ~s metadata store, "
454+
"~s was expected",
455+
[Nodename, UsedMetadataStore,
456+
ExpectedMetadataStore])},
457+
Master ! {self(), Error},
458+
unlink(Master)
459+
end
446460
end.
447461

448462
run_node_steps(Config, NodeConfig, I, [Step | Rest]) ->
@@ -883,6 +897,45 @@ query_node(Config, NodeConfig) ->
883897
cover_add_node(Nodename),
884898
rabbit_ct_helpers:set_config(NodeConfig, Vars).
885899

900+
uses_expected_metadata_store(Config, NodeConfig) ->
901+
Nodename = ?config(nodename, NodeConfig),
902+
ExpectedMetadataStore = rabbit_ct_helpers:get_config(
903+
Config, metadata_store),
904+
case ExpectedMetadataStore of
905+
mnesia -> ok;
906+
khepri -> maybe_enable_khepri_as_expected(Config, Nodename)
907+
end,
908+
IsKhepriEnabled = rpc(Config, Nodename, rabbit_khepri, is_enabled, []),
909+
UsedMetadataStore = case IsKhepriEnabled of
910+
true -> khepri;
911+
false -> mnesia
912+
end,
913+
ct:pal(
914+
"Metadata store on ~s: expected=~s, used=~s",
915+
[Nodename, UsedMetadataStore, ExpectedMetadataStore]),
916+
{ExpectedMetadataStore, UsedMetadataStore}.
917+
918+
maybe_enable_khepri_as_expected(Config, Nodename) ->
919+
RelativeForcedFeatureFlagsUnsupported = (
920+
rpc(Config, Nodename,
921+
erlang, function_exported,
922+
[rabbit_feature_flags, get_require_level, 1])
923+
),
924+
case RelativeForcedFeatureFlagsUnsupported of
925+
true ->
926+
ok;
927+
false ->
928+
ct:pal(
929+
"Relative forced feature flags unsupported on ~s, "
930+
"enable Khepri now",
931+
[Nodename]),
932+
Ret = enable_feature_flag(Config, [Nodename], khepri_db),
933+
ct:pal(
934+
"Tried to enable Khepri on ~s as expected: ~0p",
935+
[Nodename, Ret]),
936+
ok
937+
end.
938+
886939
maybe_cluster_nodes(Config) ->
887940
Clustered0 = rabbit_ct_helpers:get_config(Config, rmq_nodes_clustered),
888941
Clustered = case Clustered0 of
@@ -1013,19 +1066,22 @@ configure_metadata_store(Config) ->
10131066
ct:log("Configuring metadata store..."),
10141067
Value = rabbit_ct_helpers:get_app_env(
10151068
Config, rabbit, forced_feature_flags_on_init, undefined),
1016-
case configured_metadata_store(Config) of
1069+
MetadataStore = configured_metadata_store(Config),
1070+
Config1 = rabbit_ct_helpers:set_config(
1071+
Config, {metadata_store, MetadataStore}),
1072+
case MetadataStore of
10171073
khepri ->
10181074
ct:log("Enabling Khepri metadata store"),
10191075
case Value of
10201076
undefined ->
10211077
rabbit_ct_helpers:merge_app_env(
1022-
Config,
1078+
Config1,
10231079
{rabbit,
10241080
[{forced_feature_flags_on_init,
10251081
{rel, [khepri_db], []}}]});
10261082
_ ->
10271083
rabbit_ct_helpers:merge_app_env(
1028-
Config,
1084+
Config1,
10291085
{rabbit,
10301086
[{forced_feature_flags_on_init,
10311087
[khepri_db | Value]}]})
@@ -1035,13 +1091,13 @@ configure_metadata_store(Config) ->
10351091
case Value of
10361092
undefined ->
10371093
rabbit_ct_helpers:merge_app_env(
1038-
Config,
1094+
Config1,
10391095
{rabbit,
10401096
[{forced_feature_flags_on_init,
10411097
{rel, [], [khepri_db]}}]});
10421098
_ ->
10431099
rabbit_ct_helpers:merge_app_env(
1044-
Config,
1100+
Config1,
10451101
{rabbit,
10461102
[{forced_feature_flags_on_init,
10471103
Value -- [khepri_db]}]})

0 commit comments

Comments
 (0)