diff options
| author | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2020-07-23 14:22:33 +0200 |
|---|---|---|
| committer | Jean-Sébastien Pédron <jean-sebastien@rabbitmq.com> | 2020-07-23 15:04:59 +0200 |
| commit | 8629a1cd3d59bfff96129e2cbc9b0d7042651675 (patch) | |
| tree | 337fca89efea84a75ca110683bb8989d2272a8f5 | |
| parent | b076c739ed7dc7c304d9f16b7bedeafea4cc3225 (diff) | |
| download | rabbitmq-server-git-8629a1cd3d59bfff96129e2cbc9b0d7042651675.tar.gz | |
maintenance_mode_SUITE, queue_master_location_SUITE: Enable `maintenance_mode_status` feature flag
This is a prerequisite for the testsuites to work. The second benefit is
that if the feature flag is unavailable (say, in mixed-version testing),
the testcases will be skipped.
While here, remove all trailing whitespaces.
| -rw-r--r-- | test/maintenance_mode_SUITE.erl | 44 | ||||
| -rw-r--r-- | test/queue_master_location_SUITE.erl | 33 |
2 files changed, 52 insertions, 25 deletions
diff --git a/test/maintenance_mode_SUITE.erl b/test/maintenance_mode_SUITE.erl index 6ec3f61ad5..61a89c986e 100644 --- a/test/maintenance_mode_SUITE.erl +++ b/test/maintenance_mode_SUITE.erl @@ -57,11 +57,21 @@ init_per_testcase(Testcase, Config) -> {rmq_nodename_suffix, Testcase}, {tcp_ports_base, {skip_n_nodes, TestNumber * ClusterSize}} ]), - rabbit_ct_helpers:run_steps(Config1, - rabbit_ct_broker_helpers:setup_steps() ++ - rabbit_ct_client_helpers:setup_steps() ++ [ - fun rabbit_ct_broker_helpers:set_ha_policy_all/1 - ]). + Config2 = rabbit_ct_helpers:run_steps( + Config1, + rabbit_ct_broker_helpers:setup_steps() ++ + rabbit_ct_client_helpers:setup_steps() ++ + [fun rabbit_ct_broker_helpers:set_ha_policy_all/1]), + FFEnabled = rabbit_ct_broker_helpers:enable_feature_flag( + Config2, + maintenance_mode_status), + case FFEnabled of + ok -> + Config2; + Skip -> + end_per_testcase(Testcase, Config2), + Skip + end. end_per_testcase(Testcase, Config) -> Config1 = rabbit_ct_helpers:run_steps(Config, @@ -75,12 +85,12 @@ end_per_testcase(Testcase, Config) -> maintenance_mode_status(Config) -> Nodes = [A, B, C] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename), - + [begin ?assertNot(rabbit_ct_broker_helpers:is_being_drained_local_read(Config, Node)), ?assertNot(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, Node)) end || Node <- Nodes], - + [begin [begin ?assertNot(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, TargetNode, NodeToCheck)) @@ -91,38 +101,38 @@ maintenance_mode_status(Config) -> rabbit_ct_helpers:await_condition( fun () -> rabbit_ct_broker_helpers:is_being_drained_local_read(Config, B) end, 10000), - + [begin ?assert(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, TargetNode, B)) end || TargetNode <- Nodes], - + ?assertEqual( lists:usort([A, C]), lists:usort(rabbit_ct_broker_helpers:rpc(Config, B, rabbit_maintenance, primary_replica_transfer_candidate_nodes, []))), - + rabbit_ct_broker_helpers:unmark_as_being_drained(Config, B), rabbit_ct_helpers:await_condition( fun () -> not rabbit_ct_broker_helpers:is_being_drained_local_read(Config, B) end, 10000), - + [begin ?assertNot(rabbit_ct_broker_helpers:is_being_drained_local_read(Config, TargetNode, B)), ?assertNot(rabbit_ct_broker_helpers:is_being_drained_consistent_read(Config, TargetNode, B)) end || TargetNode <- Nodes], - + ?assertEqual( lists:usort([A, C]), lists:usort(rabbit_ct_broker_helpers:rpc(Config, B, rabbit_maintenance, primary_replica_transfer_candidate_nodes, []))), - + ok. listener_suspension_status(Config) -> Nodes = [A | _] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename), ct:pal("Picked node ~s for maintenance tests...", [A]), - + rabbit_ct_helpers:await_condition( fun () -> not rabbit_ct_broker_helpers:is_being_drained_local_read(Config, A) end, 10000), @@ -208,14 +218,14 @@ quorum_queue_leadership_transfer(Config) -> amqp_channel:call(Ch, #'queue.declare'{queue = QName, durable = true, arguments = [ {<<"x-queue-type">>, longstr, <<"quorum">>} ]}), - + %% we cannot assert on the number of local leaders here: declaring a QQ on node A %% does not guarantee that the leader will be hosted on node A - + rabbit_ct_broker_helpers:drain_node(Config, A), rabbit_ct_helpers:await_condition( fun () -> rabbit_ct_broker_helpers:is_being_drained_local_read(Config, A) end, 10000), - + %% quorum queue leader election is asynchronous rabbit_ct_helpers:await_condition( fun () -> diff --git a/test/queue_master_location_SUITE.erl b/test/queue_master_location_SUITE.erl index 6a346c5618..fab3eac3f0 100644 --- a/test/queue_master_location_SUITE.erl +++ b/test/queue_master_location_SUITE.erl @@ -53,11 +53,11 @@ groups() -> calculate_random, calculate_client_local ]}, - + {maintenance_mode, [], [ declare_with_min_masters_and_some_nodes_under_maintenance, declare_with_min_masters_and_all_nodes_under_maintenance, - + declare_with_random_and_some_nodes_under_maintenance, declare_with_random_and_all_nodes_under_maintenance ]} @@ -101,9 +101,26 @@ init_per_testcase(Testcase, Config) -> {rmq_nodename_suffix, Testcase}, {tcp_ports_base, {skip_n_nodes, TestNumber * ClusterSize}} ]), - 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()), + Group = proplists:get_value(name, ?config(tc_group_properties, Config)), + FFEnabled = case Group of + maintenance_mode -> + rabbit_ct_broker_helpers:enable_feature_flag( + Config2, + maintenance_mode_status); + _ -> + ok + end, + case FFEnabled of + ok -> + Config2; + Skip -> + end_per_testcase(Testcase, Config2), + Skip + end. end_per_testcase(Testcase, Config) -> Config1 = rabbit_ct_helpers:run_steps(Config, @@ -226,7 +243,7 @@ declare_with_min_masters_and_some_nodes_under_maintenance(Config) -> set_location_policy(Config, ?POLICY, <<"min-masters">>), rabbit_ct_broker_helpers:mark_as_being_drained(Config, 0), rabbit_ct_broker_helpers:mark_as_being_drained(Config, 1), - + QName = <<"qm.tests.min_masters.maintenance.case1">>, Resource = rabbit_misc:r(<<"/">>, queue, QName), Record = declare(Config, Resource, false, false, _Args = [], none), @@ -244,7 +261,7 @@ declare_with_random_and_some_nodes_under_maintenance(Config) -> set_location_policy(Config, ?POLICY, <<"random">>), rabbit_ct_broker_helpers:mark_as_being_drained(Config, 0), rabbit_ct_broker_helpers:mark_as_being_drained(Config, 2), - + QName = <<"qm.tests.random.maintenance.case1">>, Resource = rabbit_misc:r(<<"/">>, queue, QName), Record = declare(Config, Resource, false, false, _Args = [], none), @@ -263,7 +280,7 @@ declare_with_all_nodes_under_maintenance(Config, Locator) -> rabbit_ct_broker_helpers:mark_as_being_drained(Config, 0), rabbit_ct_broker_helpers:mark_as_being_drained(Config, 1), rabbit_ct_broker_helpers:mark_as_being_drained(Config, 2), - + QName = rabbit_data_coercion:to_binary( rabbit_misc:format("qm.tests.~s.maintenance.case2", [Locator])), Resource = rabbit_misc:r(<<"/">>, queue, QName), |
