Skip to content

Test mixed version with 3.13.7/OTP26 #14171

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Jul 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/test-make-target.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ on:
required: false
default: false
type: boolean
previous_version:
required: false
default: 'tags/v4.0.9'
type: string
make_target:
required: true
type: string
Expand Down Expand Up @@ -62,7 +66,7 @@ jobs:
uses: dsaltares/fetch-gh-release-asset@master
if: inputs.mixed_clusters
with:
version: 'tags/v4.0.9'
version: ${{ inputs.previous_version }}
regex: true
file: "rabbitmq-server-generic-unix-\\d.+\\.tar\\.xz"
target: ./
Expand Down
25 changes: 25 additions & 0 deletions .github/workflows/test-mixed.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Test Mixed with 3.13
on:
schedule:
# at 2:20am on Sundays
- cron: 20 2 * * 0
workflow_dispatch:
jobs:
test-mixed-clusters:
name: Test mixed clusters
strategy:
fail-fast: false
matrix:
erlang_version:
- '26'
elixir_version:
- '1.18'
metadata_store:
- mnesia
uses: ./.github/workflows/test-make-tests.yaml
with:
erlang_version: ${{ matrix.erlang_version }}
elixir_version: ${{ matrix.elixir_version }}
previous_version: 'tags/v3.13.7'
metadata_store: ${{ matrix.metadata_store }}
mixed_clusters: true
18 changes: 9 additions & 9 deletions deps/rabbit/test/amqp_client_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,15 @@ init_per_testcase(T, Config)
end;
init_per_testcase(T, Config)
when T =:= leader_transfer_quorum_queue_credit_single orelse
T =:= leader_transfer_quorum_queue_credit_batches ->
T =:= leader_transfer_quorum_queue_credit_batches orelse
T =:= async_notify_unsettled_classic_queue orelse
T =:= leader_transfer_stream_credit_single orelse
T =:= dead_letter_into_stream orelse
T =:= classic_queue_on_new_node orelse
T =:= leader_transfer_quorum_queue_send orelse
T =:= last_queue_confirms orelse
T =:= leader_transfer_stream_credit_batches orelse
T =:= leader_transfer_stream_send ->
%% These test cases flake with feature flag 'rabbitmq_4.0.0' disabled.
case rabbit_ct_broker_helpers:enable_feature_flag(Config, 'rabbitmq_4.0.0') of
ok ->
Expand All @@ -342,14 +350,6 @@ init_per_testcase(T = immutable_bare_message, Config) ->
{skip, "RabbitMQ is known to wrongfully modify the bare message with feature "
"flag rabbitmq_4.0.0 disabled"}
end;
init_per_testcase(T = dead_letter_into_stream, Config) ->
case rabbit_ct_broker_helpers:enable_feature_flag(Config, message_containers_deaths_v2) of
ok ->
rabbit_ct_helpers:testcase_started(Config, T);
_ ->
{skip, "This test is known to fail with feature flag message_containers_deaths_v2 disabled "
"due to missing feature https://github.com/rabbitmq/rabbitmq-server/issues/11173"}
end;
init_per_testcase(T = dead_letter_reject, Config) ->
case rabbit_ct_broker_helpers:enable_feature_flag(Config, message_containers_deaths_v2) of
ok ->
Expand Down
18 changes: 16 additions & 2 deletions deps/rabbit/test/clustering_management_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -146,12 +146,26 @@ init_per_group(unclustered_2_nodes, Config) ->
Config1 = rabbit_ct_helpers:set_config(
Config, [{rmq_nodes_clustered, false}]),
rabbit_ct_helpers:merge_app_env(
Config1, {rabbit, [{forced_feature_flags_on_init, []}]});
Config1, {rabbit, [{forced_feature_flags_on_init, [
restart_streams,
stream_sac_coordinator_unblock_group,
stream_update_config_command,
stream_filtering,
message_containers,
quorum_queue_non_voters
]}]});
init_per_group(unclustered_3_nodes, Config) ->
Config1 = rabbit_ct_helpers:set_config(
Config, [{rmq_nodes_clustered, false}]),
rabbit_ct_helpers:merge_app_env(
Config1, {rabbit, [{forced_feature_flags_on_init, []}]});
Config1, {rabbit, [{forced_feature_flags_on_init, [
restart_streams,
stream_sac_coordinator_unblock_group,
stream_update_config_command,
stream_filtering,
message_containers,
quorum_queue_non_voters
]}]});
init_per_group(clustered_2_nodes, Config) ->
rabbit_ct_helpers:set_config(Config, [{rmq_nodes_clustered, true}]);
init_per_group(clustered_3_nodes, Config) ->
Expand Down
8 changes: 8 additions & 0 deletions deps/rabbit/test/dead_lettering_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,14 @@ init_per_testcase(T, Config)
%% * stream is known to fail due to https://github.com/rabbitmq/rabbitmq-server/issues/11173
ok = rabbit_ct_broker_helpers:enable_feature_flag(Config, message_containers_deaths_v2),
init_per_testcase0(T, Config);
init_per_testcase(T, Config)
when T =:= dead_letter_headers_should_not_be_appended_for_republish ->
case rabbit_ct_broker_helpers:enable_feature_flag(Config, 'rabbitmq_4.0.0') of
ok ->
init_per_testcase0(T, Config);
_ ->
{skip, "The expectations of this test don't match 3.13 behaviour"}
end;
init_per_testcase(Testcase, Config) ->
init_per_testcase0(Testcase, Config).

Expand Down
2 changes: 2 additions & 0 deletions deps/rabbit/test/dynamic_qq_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,8 @@ quorum_unaffected_after_vhost_failure(Config) ->
forget_cluster_node(Config) ->
%% Tests that quorum queues shrink when forget_cluster_node
%% operations are issues.
quorum_queue_SUITE:check_quorum_queues_v4_compat(Config),

[Server | _] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
Ch = rabbit_ct_client_helpers:open_channel(Config, Server),

Expand Down
23 changes: 22 additions & 1 deletion deps/rabbit/test/feature_flags_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,14 @@ init_per_group(clustering, Config) ->
{rmq_nodes_clustered, false},
{start_rmq_with_plugins_disabled, true}]),
Config2 = rabbit_ct_helpers:merge_app_env(
Config1, {rabbit, [{forced_feature_flags_on_init, []}]}),
Config1, {rabbit, [{forced_feature_flags_on_init, [
restart_streams,
stream_sac_coordinator_unblock_group,
stream_update_config_command,
stream_filtering,
message_containers,
quorum_queue_non_voters
]}]}),
rabbit_ct_helpers:run_setup_steps(Config2, [fun prepare_my_plugin/1]);
init_per_group(activating_plugin, Config) ->
Config1 = rabbit_ct_helpers:set_config(
Expand Down Expand Up @@ -1277,6 +1284,13 @@ activating_plugin_with_new_ff_enabled(Config) ->
ok.

enable_plugin_feature_flag_after_deactivating_plugin(Config) ->
case rabbit_ct_broker_helpers:is_feature_flag_enabled(Config, 'rabbitmq_4.0.0') of
true ->
ok;
false ->
throw({skip, "this test triggers a bug present in 3.13"})
end,

FFSubsysOk = is_feature_flag_subsystem_available(Config),

log_feature_flags_of_all_nodes(Config),
Expand Down Expand Up @@ -1307,6 +1321,13 @@ enable_plugin_feature_flag_after_deactivating_plugin(Config) ->
ok.

restart_node_with_unknown_enabled_feature_flag(Config) ->
case rabbit_ct_broker_helpers:is_feature_flag_enabled(Config, 'rabbitmq_4.0.0') of
true ->
ok;
false ->
throw({skip, "this test triggers a bug present in 3.13"})
end,

FFSubsysOk = is_feature_flag_subsystem_available(Config),

log_feature_flags_of_all_nodes(Config),
Expand Down
13 changes: 11 additions & 2 deletions deps/rabbit/test/queue_length_limits_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,17 @@ init_per_group(mnesia_parallel_tests = Group, Config0) ->
Config = rabbit_ct_helpers:set_config(Config0, [{metadata_store, mnesia}]),
init_per_group0(Group, Config);
init_per_group(khepri_parallel_tests = Group, Config0) ->
Config = rabbit_ct_helpers:set_config(Config0, [{metadata_store, khepri}]),
init_per_group0(Group, Config).
%% this is very hacky way of skipping the tests, but the khepri_db
%% flag exists in 3,13, but it's not compatible with 4.x. We can remove
%% this after 4.2
SecondaryDist = os:getenv("SECONDARY_DIST", ""),
case string:str(SecondaryDist, "3.13.") == 0 of
true ->
Config = rabbit_ct_helpers:set_config(Config0, [{metadata_store, khepri}]),
init_per_group0(Group, Config);
_ ->
{skip, "Khepri was not supported in 3.13"}
end.

init_per_group0(Group, Config) ->
case lists:member({group, Group}, all()) of
Expand Down
Loading
Loading