diff --git a/deps/rabbitmq_mqtt/test/mqtt_shared_SUITE.erl b/deps/rabbitmq_mqtt/test/mqtt_shared_SUITE.erl index 3854bf520b..c06ecf4462 100644 --- a/deps/rabbitmq_mqtt/test/mqtt_shared_SUITE.erl +++ b/deps/rabbitmq_mqtt/test/mqtt_shared_SUITE.erl @@ -112,8 +112,7 @@ cluster_size_1_tests() -> ,keepalive_turned_off ,block ,amqp_to_mqtt_qos0 - ,clean_session_disconnect_client - ,zero_session_expiry_interval_disconnect_client + ,clean_session_disconnect_client ,clean_session_node_restart ,clean_session_node_kill ,rabbit_status_connection_count @@ -1586,18 +1585,6 @@ clean_session_disconnect_client(Config) -> L = rpc(Config, rabbit_amqqueue, list, []), ?assertEqual(0, length(L)). -zero_session_expiry_interval_disconnect_client(Config) -> - C = connect(?FUNCTION_NAME, Config, [{properties, #{'Session-Expiry-Interval' => 0}}]), - {ok, _, _} = emqtt:subscribe(C, <<"topic0">>, qos0), - QsQos0 = rpc(Config, rabbit_amqqueue, list_by_type, [rabbit_mqtt_qos0_queue]), - ?assertEqual(1, length(QsQos0)), - - ok = emqtt:disconnect(C), - %% After terminating a clean session, we expect any session state to be cleaned up on the server. - timer:sleep(200), %% Give some time to clean up exclusive classic queue. - L = rpc(Config, rabbit_amqqueue, list, []), - ?assertEqual(0, length(L)). - clean_session_node_restart(Config) -> clean_session_node_down(stop_node, Config). diff --git a/deps/rabbitmq_mqtt/test/v5_SUITE.erl b/deps/rabbitmq_mqtt/test/v5_SUITE.erl index 44a1950944..191a49a5fd 100644 --- a/deps/rabbitmq_mqtt/test/v5_SUITE.erl +++ b/deps/rabbitmq_mqtt/test/v5_SUITE.erl @@ -71,6 +71,7 @@ cluster_size_1_tests() -> session_expiry_reconnect_non_zero, session_expiry_reconnect_zero, session_expiry_reconnect_infinity_to_zero, + zero_session_expiry_disconnect_autodeletes_qos0_queue, client_publish_qos2, client_rejects_publish, client_receive_maximum_min, @@ -188,6 +189,12 @@ init_per_testcase(T, Config) ok = rpc(Config, application, set_env, [?APP, Par, infinity]), Config1 = rabbit_ct_helpers:set_config(Config, {Par, Default}), init_per_testcase0(T, Config1); + +init_per_testcase(T, Config) + when T =:= zero_session_expiry_disconnect_autodeletes_qos0_queue -> + rpc(Config, rabbit_registry, register, [queue, <<"qos0">>, rabbit_mqtt_qos0_queue]), + init_per_testcase0(T, Config); + init_per_testcase(T, Config) -> init_per_testcase0(T, Config). @@ -202,6 +209,11 @@ end_per_testcase(T, Config) Default = ?config(Par, Config), ok = rpc(Config, application, set_env, [?APP, Par, Default]), end_per_testcase0(T, Config); +end_per_testcase(T, Config) + when T =:= zero_session_expiry_disconnect_autodeletes_qos0_queue -> + ok = rpc(Config, rabbit_registry, unregister, [queue, <<"qos0">>]), + init_per_testcase0(T, Config); + end_per_testcase(T, Config) -> end_per_testcase0(T, Config). @@ -389,6 +401,21 @@ session_expiry_quorum_queue_disconnect_decrease(Config) -> ok = session_expiry_disconnect_decrease(rabbit_quorum_queue, Config), ok = rpc(Config, application, unset_env, [?APP, durable_queue_type]). +zero_session_expiry_disconnect_autodeletes_qos0_queue(Config) -> + ClientId = ?FUNCTION_NAME, + C = connect(ClientId, Config, [ + {clean_start, false}, + {properties, #{'Session-Expiry-Interval' => 0}}]), + {ok, _, _} = emqtt:subscribe(C, <<"topic0">>, qos0), + QsQos0 = rpc(Config, rabbit_amqqueue, list_by_type, [rabbit_mqtt_qos0_queue]), + ?assertEqual(1, length(QsQos0)), + + ok = emqtt:disconnect(C), + %% After terminating a clean session, we expect any session state to be cleaned up on the server. + timer:sleep(200), %% Give some time to clean up exclusive classic queue. + L = rpc(Config, rabbit_amqqueue, list, []), + ?assertEqual(0, length(L)). + session_expiry_disconnect_decrease(QueueType, Config) -> ClientId = ?FUNCTION_NAME, C1 = connect(ClientId, Config, [{properties, #{'Session-Expiry-Interval' => 100}}]),