Deflake per_user_connection_tracking_SUITE

This commit is contained in:
Michal Kuratczyk 2025-06-25 16:58:18 +02:00
parent 6def891d42
commit fd1d037874
No known key found for this signature in database
1 changed files with 41 additions and 35 deletions

View File

@ -100,60 +100,64 @@ end_per_testcase(Testcase, Config) ->
%% Test cases. %% Test cases.
%% ------------------------------------------------------------------- %% -------------------------------------------------------------------
single_node_list_of_user(Config) -> single_node_list_of_user(Config) ->
Username = proplists:get_value(rmq_username, Config), Username1 = list_to_binary(atom_to_list(?FUNCTION_NAME) ++ "-1"),
Username2 = <<"guest2">>, Username2 = list_to_binary(atom_to_list(?FUNCTION_NAME) ++ "-2"),
Vhost = proplists:get_value(rmq_vhost, Config), Vhost = proplists:get_value(rmq_vhost, Config),
rabbit_ct_broker_helpers:add_user(Config, Username2), [ begin
rabbit_ct_broker_helpers:set_full_permissions(Config, Username2, Vhost), rabbit_ct_broker_helpers:add_user(Config, U),
rabbit_ct_broker_helpers:set_full_permissions(Config, U, Vhost)
end || U <- [Username1, Username2]],
?assertEqual(0, count_connections_in(Config, Username)), ?assertEqual(0, count_connections_in(Config, Username1)),
?assertEqual(0, count_connections_in(Config, Username2)), ?assertEqual(0, count_connections_in(Config, Username2)),
[Conn1] = open_connections(Config, [0]), [Conn1] = open_connections(Config, [{0, Username1}]),
?awaitMatch(1, count_connections_in(Config, Username), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT),
[#tracked_connection{username = Username}] = connections_in(Config, Username), [#tracked_connection{username = Username1}] = connections_in(Config, Username1),
close_connections([Conn1]), close_connections([Conn1]),
?awaitMatch(0, count_connections_in(Config, Username), ?AWAIT_TIMEOUT), ?awaitMatch(0, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT),
[Conn2] = open_connections(Config, [{0, Username2}]), [Conn2] = open_connections(Config, [{0, Username2}]),
?awaitMatch(1, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT),
[#tracked_connection{username = Username2}] = connections_in(Config, Username2), [#tracked_connection{username = Username2}] = connections_in(Config, Username2),
[Conn3] = open_connections(Config, [0]), [Conn3] = open_connections(Config, [{0, Username1}]),
?awaitMatch(1, count_connections_in(Config, Username), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT),
[#tracked_connection{username = Username}] = connections_in(Config, Username), [#tracked_connection{username = Username1}] = connections_in(Config, Username1),
[Conn4] = open_connections(Config, [0]), [Conn4] = open_connections(Config, [{0, Username1}]),
kill_connections([Conn4]), kill_connections([Conn4]),
?awaitMatch(1, count_connections_in(Config, Username), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT),
[#tracked_connection{username = Username}] = connections_in(Config, Username), [#tracked_connection{username = Username1}] = connections_in(Config, Username1),
[Conn5] = open_connections(Config, [0]), [Conn5] = open_connections(Config, [{0, Username1}]),
?awaitMatch(2, count_connections_in(Config, Username), ?AWAIT_TIMEOUT), ?awaitMatch(2, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT),
[Username, Username] = [Username1, Username1] =
lists:map(fun (#tracked_connection{username = U}) -> U end, lists:map(fun (#tracked_connection{username = U}) -> U end,
connections_in(Config, Username)), connections_in(Config, Username1)),
close_connections([Conn2, Conn3, Conn5]), close_connections([Conn2, Conn3, Conn5]),
rabbit_ct_broker_helpers:delete_user(Config, Username2), rabbit_ct_broker_helpers:delete_user(Config, Username2),
?awaitMatch(0, length(all_connections(Config)), ?AWAIT_TIMEOUT). ?awaitMatch(0, length(all_connections(Config)), ?AWAIT_TIMEOUT).
single_node_user_deletion_forces_connection_closure(Config) -> single_node_user_deletion_forces_connection_closure(Config) ->
Username = proplists:get_value(rmq_username, Config), Username1 = list_to_binary(atom_to_list(?FUNCTION_NAME) ++ "-1"),
Username2 = <<"guest2">>, Username2 = list_to_binary(atom_to_list(?FUNCTION_NAME) ++ "-2"),
Vhost = proplists:get_value(rmq_vhost, Config), Vhost = proplists:get_value(rmq_vhost, Config),
rabbit_ct_broker_helpers:add_user(Config, Username2), [ begin
rabbit_ct_broker_helpers:set_full_permissions(Config, Username2, Vhost), rabbit_ct_broker_helpers:add_user(Config, U),
rabbit_ct_broker_helpers:set_full_permissions(Config, U, Vhost)
end || U <- [Username1, Username2]],
?assertEqual(0, count_connections_in(Config, Username)), ?assertEqual(0, count_connections_in(Config, Username1)),
?assertEqual(0, count_connections_in(Config, Username2)), ?assertEqual(0, count_connections_in(Config, Username2)),
[Conn1] = open_connections(Config, [0]), [Conn1] = open_connections(Config, [{0, Username1}]),
?awaitMatch(1, count_connections_in(Config, Username), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT),
[_Conn2] = open_connections(Config, [{0, Username2}]), [_Conn2] = open_connections(Config, [{0, Username2}]),
?awaitMatch(1, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT),
@ -162,22 +166,24 @@ single_node_user_deletion_forces_connection_closure(Config) ->
?awaitMatch(0, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT), ?awaitMatch(0, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT),
close_connections([Conn1]), close_connections([Conn1]),
?awaitMatch(0, count_connections_in(Config, Username), ?AWAIT_TIMEOUT). ?awaitMatch(0, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT).
cluster_user_deletion_forces_connection_closure(Config) -> cluster_user_deletion_forces_connection_closure(Config) ->
Username = proplists:get_value(rmq_username, Config), Username1 = list_to_binary(atom_to_list(?FUNCTION_NAME) ++ "-1"),
Username2 = <<"guest2">>, Username2 = list_to_binary(atom_to_list(?FUNCTION_NAME) ++ "-2"),
Vhost = proplists:get_value(rmq_vhost, Config), Vhost = proplists:get_value(rmq_vhost, Config),
rabbit_ct_broker_helpers:add_user(Config, Username2), [ begin
rabbit_ct_broker_helpers:set_full_permissions(Config, Username2, Vhost), rabbit_ct_broker_helpers:add_user(Config, U),
rabbit_ct_broker_helpers:set_full_permissions(Config, U, Vhost)
end || U <- [Username1, Username2]],
?assertEqual(0, count_connections_in(Config, Username)), ?assertEqual(0, count_connections_in(Config, Username1)),
?assertEqual(0, count_connections_in(Config, Username2)), ?assertEqual(0, count_connections_in(Config, Username2)),
[Conn1] = open_connections(Config, [{0, Username}]), [Conn1] = open_connections(Config, [{0, Username1}]),
?awaitMatch(1, count_connections_in(Config, Username), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT),
[_Conn2] = open_connections(Config, [{1, Username2}]), [_Conn2] = open_connections(Config, [{1, Username2}]),
?awaitMatch(1, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT), ?awaitMatch(1, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT),
@ -186,7 +192,7 @@ cluster_user_deletion_forces_connection_closure(Config) ->
?awaitMatch(0, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT), ?awaitMatch(0, count_connections_in(Config, Username2), ?AWAIT_TIMEOUT),
close_connections([Conn1]), close_connections([Conn1]),
?awaitMatch(0, count_connections_in(Config, Username), ?AWAIT_TIMEOUT). ?awaitMatch(0, count_connections_in(Config, Username1), ?AWAIT_TIMEOUT).
%% ------------------------------------------------------------------- %% -------------------------------------------------------------------
%% Helpers %% Helpers