Remove mixed version check in MQTT tests

In the MQTT test assertions, instead of checking whether the test runs
in mixed version mode where all non-required feature flags are disabled
by default, check whether the given feature flag is enabled.

Prior to this commit, once feature flag rabbit_mqtt_qos0_queue becomes
required, the test cases would have failed.
This commit is contained in:
David Ansari 2023-02-09 10:53:50 +00:00
parent 869f86161b
commit 91b56bd85d
3 changed files with 29 additions and 25 deletions

View File

@ -61,6 +61,7 @@
is_feature_flag_supported/2,
is_feature_flag_supported/3,
is_feature_flag_enabled/2,
enable_feature_flag/2,
enable_feature_flag/3,
@ -1685,6 +1686,11 @@ forget_cluster_node(Config, Node, NodeToForget, Opts) ->
rabbit_ct_broker_helpers:get_node_config(Config, NodeToForget, nodename),
rabbit_control_helper:command(forget_cluster_node, Name, [NameToForget], Opts).
is_feature_flag_enabled(Config, FeatureName) ->
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
rabbit_ct_broker_helpers:rpc(
Config, Node, rabbit_feature_flags, is_enabled, [FeatureName]).
is_feature_flag_supported(Config, FeatureName) ->
Nodes = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
is_feature_flag_supported(Config, Nodes, FeatureName).

View File

@ -299,14 +299,13 @@ rabbit_mqtt_qos0_queue_overflow(Config) ->
%% We expect that
%% 1. all sent messages were either received or dropped
?assertEqual(NumMsgs, NumReceived + NumDropped),
case rabbit_ct_helpers:is_mixed_versions(Config) of
false ->
case rabbit_ct_broker_helpers:is_feature_flag_enabled(Config, rabbit_mqtt_qos0_queue) of
true ->
%% 2. at least one message was dropped (otherwise our whole test case did not
%% test what it was supposed to test: that messages are dropped due to the
%% server being overflowed with messages while the client receives too slowly)
?assert(NumDropped >= 1);
true ->
%% Feature flag rabbit_mqtt_qos0_queue is disabled.
false ->
?assertEqual(0, NumDropped)
end,
%% 3. we received at least 1000 messages because everything below the default

View File

@ -22,7 +22,8 @@
rpc_all/4,
get_node_config/3,
drain_node/2,
revive_node/2
revive_node/2,
is_feature_flag_enabled/2
]).
-import(rabbit_ct_helpers,
[eventually/3,
@ -446,12 +447,11 @@ events(Config) ->
QueueNameBin = <<"mqtt-subscription-", ClientId/binary, "qos0">>,
QueueName = {resource, <<"/">>, queue, QueueNameBin},
[E2, E3 | E4] = get_events(Server),
QueueType = case rabbit_ct_helpers:is_mixed_versions(Config) of
false ->
QueueType = case is_feature_flag_enabled(Config, rabbit_mqtt_qos0_queue) of
true ->
?assertEqual([], E4),
rabbit_mqtt_qos0_queue;
true ->
%% Feature flag rabbit_mqtt_qos0_queue is disabled.
false ->
[ConsumerCreated] = E4,
assert_event_type(consumer_created, ConsumerCreated),
assert_event_prop([{queue, QueueName},
@ -488,11 +488,11 @@ events(Config) ->
[E6, E7 | E8] = get_events(Server),
assert_event_type(connection_closed, E6),
assert_event_prop(ExpectedConnectionProps, E6),
case rabbit_ct_helpers:is_mixed_versions(Config) of
false ->
case is_feature_flag_enabled(Config, rabbit_mqtt_qos0_queue) of
true ->
assert_event_type(queue_deleted, E7),
assert_event_prop({name, QueueName}, E7);
true ->
false ->
assert_event_type(consumer_deleted, E7),
assert_event_prop({queue, QueueName}, E7),
[QueueDeleted] = E8,
@ -542,8 +542,8 @@ global_counters(Config, ProtoVer) ->
messages_unroutable_returned_total => 1},
get_global_counters(Config, ProtoVer)),
case rabbit_ct_helpers:is_mixed_versions(Config) of
false ->
case is_feature_flag_enabled(Config, rabbit_mqtt_qos0_queue) of
true ->
?assertEqual(#{messages_delivered_total => 2,
messages_acknowledged_total => 1,
messages_delivered_consume_auto_ack_total => 1,
@ -562,8 +562,7 @@ global_counters(Config, ProtoVer) ->
messages_get_empty_total => 0,
messages_redelivered_total => 0},
get_global_counters(Config, ProtoVer, 0, [{queue_type, rabbit_mqtt_qos0_queue}]));
true ->
%% Feature flag rabbit_mqtt_qos0_queue is disabled.
false ->
?assertEqual(#{messages_delivered_total => 3,
messages_acknowledged_total => 1,
messages_delivered_consume_auto_ack_total => 2,
@ -1026,10 +1025,10 @@ cli_list_queues(Config) ->
"type", "name", "state", "durable", "auto_delete",
"arguments", "pid", "owner_pid", "messages", "exclusive_consumer_tag"
]),
ExpectedQueueType = case rabbit_ct_helpers:is_mixed_versions(Config) of
false ->
<<"MQTT QoS 0">>;
ExpectedQueueType = case is_feature_flag_enabled(Config, rabbit_mqtt_qos0_queue) of
true ->
<<"MQTT QoS 0">>;
false ->
<<"classic">>
end,
?assertMatch([[ExpectedQueueType, <<"mqtt-subscription-cli_list_queuesqos0">>,
@ -1219,11 +1218,11 @@ clean_session_disconnect_client(Config) ->
{ok, _, _} = emqtt:subscribe(C, <<"topic1">>, qos1),
QsQos0 = rpc(Config, rabbit_amqqueue, list_by_type, [rabbit_mqtt_qos0_queue]),
QsClassic = rpc(Config, rabbit_amqqueue, list_by_type, [rabbit_classic_queue]),
case rabbit_ct_helpers:is_mixed_versions(Config) of
false ->
case is_feature_flag_enabled(Config, rabbit_mqtt_qos0_queue) of
true ->
?assertEqual(1, length(QsQos0)),
?assertEqual(1, length(QsClassic));
true ->
false ->
?assertEqual(0, length(QsQos0)),
?assertEqual(2, length(QsClassic))
end,
@ -1240,11 +1239,11 @@ clean_session_kill_node(Config) ->
{ok, _, _} = emqtt:subscribe(C, <<"topic1">>, qos1),
QsQos0 = rpc(Config, rabbit_amqqueue, list_by_type, [rabbit_mqtt_qos0_queue]),
QsClassic = rpc(Config, rabbit_amqqueue, list_by_type, [rabbit_classic_queue]),
case rabbit_ct_helpers:is_mixed_versions(Config) of
false ->
case is_feature_flag_enabled(Config, rabbit_mqtt_qos0_queue) of
true ->
?assertEqual(1, length(QsQos0)),
?assertEqual(1, length(QsClassic));
true ->
false ->
?assertEqual(0, length(QsQos0)),
?assertEqual(2, length(QsClassic))
end,