summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-08-30 20:06:48 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-09-02 04:30:08 +0300
commitcc1cb9bfa7a146b043d1d6def84ac90171718a06 (patch)
tree89ee9b36ce8b551acfbab6a4e851845a3f724bd4
parentc6a5fb6ae5c61275ac994d0c57377e386d88228a (diff)
downloadrabbitmq-server-git-cc1cb9bfa7a146b043d1d6def84ac90171718a06.tar.gz
Use rabbit_ct_helpers:await_condition/1 for assertions
they are time-sensitive since we observe connection tracking effects from the outside.
-rw-r--r--test/per_user_connection_channel_limit_SUITE.erl666
1 files changed, 473 insertions, 193 deletions
diff --git a/test/per_user_connection_channel_limit_SUITE.erl b/test/per_user_connection_channel_limit_SUITE.erl
index 97e8c56856..d53a0e63c1 100644
--- a/test/per_user_connection_channel_limit_SUITE.erl
+++ b/test/per_user_connection_channel_limit_SUITE.erl
@@ -143,60 +143,107 @@ clear_all_channel_tracking_tables(Config) ->
most_basic_single_node_connection_and_channel_count(Config) ->
Username = proplists:get_value(rmq_username, Config),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
+
[Conn] = open_connections(Config, [0]),
[Chan] = open_channels(Conn, 1),
- ?assertEqual(1, count_connections_of_user(Config, Username)),
- ?assertEqual(1, count_channels_of_user(Config, Username)),
+
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1 andalso
+ count_channels_of_user(Config, Username) =:= 1
+ end),
close_channels([Chan]),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn]),
- ?assertEqual(0, count_connections_of_user(Config, Username)).
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0
+ end).
single_node_single_user_connection_and_channel_count(Config) ->
Username = proplists:get_value(rmq_username, Config),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
[Conn1] = open_connections(Config, [0]),
[Chan1] = open_channels(Conn1, 1),
- ?assertEqual(1, count_connections_of_user(Config, Username)),
- ?assertEqual(1, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1 andalso
+ count_channels_of_user(Config, Username) =:= 1
+ end),
close_channels([Chan1]),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn1]),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0
+ end),
[Conn2] = open_connections(Config, [0]),
Chans2 = [_|_] = open_channels(Conn2, 5),
- ?assertEqual(1, count_connections_of_user(Config, Username)),
- ?assertEqual(5, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1 andalso
+ count_channels_of_user(Config, Username) =:= 5
+ end),
[Conn3] = open_connections(Config, [0]),
Chans3 = [_|_] = open_channels(Conn3, 5),
- ?assertEqual(2, count_connections_of_user(Config, Username)),
- ?assertEqual(10, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 2 andalso
+ count_channels_of_user(Config, Username) =:= 10
+ end),
[Conn4] = open_connections(Config, [0]),
_Chans4 = [_|_] = open_channels(Conn4, 5),
- ?assertEqual(3, count_connections_of_user(Config, Username)),
- ?assertEqual(15, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 3 andalso
+ count_channels_of_user(Config, Username) =:= 15
+ end),
kill_connections([Conn4]),
- ?assertEqual(2, count_connections_of_user(Config, Username)),
- ?assertEqual(10, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 2 andalso
+ count_channels_of_user(Config, Username) =:= 10
+ end),
[Conn5] = open_connections(Config, [0]),
Chans5 = [_|_] = open_channels(Conn5, 5),
- ?assertEqual(3, count_connections_of_user(Config, Username)),
- ?assertEqual(15, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 3 andalso
+ count_channels_of_user(Config, Username) =:= 15
+ end),
close_channels(Chans2 ++ Chans3 ++ Chans5),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn2, Conn3, Conn5]),
- ?assertEqual(0, count_connections_of_user(Config, Username)).
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0
+ end).
single_node_multiple_users_connection_and_channel_count(Config) ->
Username1 = <<"guest1">>,
@@ -205,60 +252,102 @@ single_node_multiple_users_connection_and_channel_count(Config) ->
set_up_user(Config, Username1),
set_up_user(Config, Username2),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username1) =:= 0
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username2) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
[Conn1] = open_connections(Config, [{0, Username1}]),
Chans1 = [_|_] = open_channels(Conn1, 5),
- ?assertEqual(1, count_connections_of_user(Config, Username1)),
- ?assertEqual(5, count_channels_of_user(Config, Username1)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 1 andalso
+ count_channels_of_user(Config, Username1) =:= 5
+ end),
close_channels(Chans1),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0
+ end),
?assertEqual(0, count_channels_of_user(Config, Username1)),
close_connections([Conn1]),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username1) =:= 0
+ end),
[Conn2] = open_connections(Config, [{0, Username2}]),
Chans2 = [_|_] = open_channels(Conn2, 5),
- ?assertEqual(1, count_connections_of_user(Config, Username2)),
- ?assertEqual(5, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username2) =:= 1 andalso
+ count_channels_of_user(Config, Username2) =:= 5
+ end),
[Conn3] = open_connections(Config, [{0, Username1}]),
Chans3 = [_|_] = open_channels(Conn3, 5),
- ?assertEqual(1, count_connections_of_user(Config, Username1)),
- ?assertEqual(5, count_channels_of_user(Config, Username1)),
- ?assertEqual(1, count_connections_of_user(Config, Username2)),
- ?assertEqual(5, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 1 andalso
+ count_channels_of_user(Config, Username1) =:= 5
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username2) =:= 1 andalso
+ count_channels_of_user(Config, Username2) =:= 5
+ end),
[Conn4] = open_connections(Config, [{0, Username1}]),
_Chans4 = [_|_] = open_channels(Conn4, 5),
- ?assertEqual(2, count_connections_of_user(Config, Username1)),
- ?assertEqual(10, count_channels_of_user(Config, Username1)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 2 andalso
+ count_channels_of_user(Config, Username1) =:= 10
+ end),
kill_connections([Conn4]),
- timer:sleep(200),
- ?assertEqual(1, count_connections_of_user(Config, Username1)),
- ?assertEqual(5, count_channels_of_user(Config, Username1)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 1 andalso
+ count_channels_of_user(Config, Username1) =:= 5
+ end),
[Conn5] = open_connections(Config, [{0, Username2}]),
Chans5 = [_|_] = open_channels(Conn5, 5),
- ?assertEqual(2, count_connections_of_user(Config, Username2)),
- ?assertEqual(10, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username2) =:= 2 andalso
+ count_channels_of_user(Config, Username2) =:= 10
+ end),
[Conn6] = open_connections(Config, [{0, Username2}]),
Chans6 = [_|_] = open_channels(Conn6, 5),
- ?assertEqual(3, count_connections_of_user(Config, Username2)),
- ?assertEqual(15, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username2) =:= 3 andalso
+ count_channels_of_user(Config, Username2) =:= 15
+ end),
close_channels(Chans2 ++ Chans3 ++ Chans5 ++ Chans6),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
close_connections([Conn2, Conn3, Conn5, Conn6]),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
rabbit_ct_broker_helpers:delete_user(Config, Username1),
rabbit_ct_broker_helpers:delete_user(Config, Username2).
@@ -321,10 +410,19 @@ single_node_list_in_user(Config) ->
most_basic_cluster_connection_and_channel_count(Config) ->
Username = proplists:get_value(rmq_username, Config),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0,
+ count_channels_of_user(Config, Username) =:= 0
+ end),
+
[Conn1] = open_connections(Config, [0]),
Chans1 = [_|_] = open_channels(Conn1, 5),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1,
+ count_channels_of_user(Config, Username) =:= 5
+ end),
?assertEqual(1, count_connections_of_user(Config, Username)),
?assertEqual(5, count_channels_of_user(Config, Username)),
@@ -346,47 +444,77 @@ most_basic_cluster_connection_and_channel_count(Config) ->
cluster_single_user_connection_and_channel_count(Config) ->
Username = proplists:get_value(rmq_username, Config),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
[Conn1] = open_connections(Config, [0]),
_Chans1 = [_|_] = open_channels(Conn1, 5),
- ?assertEqual(1, count_connections_of_user(Config, Username)),
- ?assertEqual(5, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1 andalso
+ count_channels_of_user(Config, Username) =:= 5
+ end),
+
close_connections([Conn1]),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
[Conn2] = open_connections(Config, [1]),
Chans2 = [_|_] = open_channels(Conn2, 5),
- ?assertEqual(1, count_connections_of_user(Config, Username)),
- ?assertEqual(5, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1 andalso
+ count_channels_of_user(Config, Username) =:= 5
+ end),
[Conn3] = open_connections(Config, [0]),
Chans3 = [_|_] = open_channels(Conn3, 5),
- ?assertEqual(2, count_connections_of_user(Config, Username)),
- ?assertEqual(10, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 2 andalso
+ count_channels_of_user(Config, Username) =:= 10
+ end),
[Conn4] = open_connections(Config, [1]),
_Chans4 = [_|_] = open_channels(Conn4, 5),
- ?assertEqual(3, count_connections_of_user(Config, Username)),
- ?assertEqual(15, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 3 andalso
+ count_channels_of_user(Config, Username) =:= 15
+ end),
kill_connections([Conn4]),
- timer:sleep(200),
- ?assertEqual(2, count_connections_of_user(Config, Username)),
- ?assertEqual(10, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 2 andalso
+ count_channels_of_user(Config, Username) =:= 10
+ end),
[Conn5] = open_connections(Config, [1]),
Chans5 = [_|_] = open_channels(Conn5, 5),
- ?assertEqual(3, count_connections_of_user(Config, Username)),
- ?assertEqual(15, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 3 andalso
+ count_channels_of_user(Config, Username) =:= 15
+ end),
close_channels(Chans2 ++ Chans3 ++ Chans5),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn2, Conn3, Conn5]),
- ?assertEqual(0, count_connections_of_user(Config, Username)).
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0
+ end).
cluster_multiple_users_connection_and_channel_count(Config) ->
Username1 = <<"guest1">>,
@@ -568,18 +696,23 @@ single_node_single_user_limit_with(Config, ConnLimit, ChLimit) ->
expect_that_client_connection_is_rejected(Config, 0),
expect_that_client_connection_is_rejected(Config, 0),
expect_that_client_channel_is_rejected(Conn1),
- timer:sleep(100),
- ?assertEqual(false, is_process_alive(Conn1)),
- ?assertEqual(true, is_process_alive(Conn2)),
- ?assertEqual(true, is_process_alive(Conn3)),
+
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(Conn1) =:= false andalso
+ is_process_alive(Conn2) andalso
+ is_process_alive(Conn3)
+ end),
set_user_connection_and_channel_limit(Config, Username, ConnLimit, ChLimit),
[Conn4, Conn5] = Conns2 = open_connections(Config, [0, 0]),
[Chans4, Chans5] = [open_channels(Conn, 5) || Conn <- Conns2],
close_channels(Chans2 ++ Chans3 ++ Chans4 ++ Chans5),
- timer:sleep(100),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn1, Conn2, Conn3, Conn4, Conn5]),
?assertEqual(0, count_connections_of_user(Config, Username)),
@@ -601,21 +734,32 @@ single_node_single_user_zero_limit(Config) ->
%% with limit = 0 no channels are allowed
set_user_connection_and_channel_limit(Config, Username, 1, 0),
[ConnA] = open_connections(Config, [0]),
- ?assertEqual(1, count_connections_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1
+ end),
expect_that_client_channel_is_rejected(ConnA),
- timer:sleep(100),
- ?assertEqual(false, is_process_alive(ConnA)),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(ConnA) =:= false,
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username, -1, -1),
[Conn1, Conn2] = Conns1 = open_connections(Config, [0, 0]),
[Chans1, Chans2] = [open_channels(Conn, 5) || Conn <- Conns1],
- ?assertEqual(2, count_connections_of_user(Config, Username)),
- ?assertEqual(10, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 2 andalso
+ count_channels_of_user(Config, Username) =:= 10
+ end),
close_channels(Chans1 ++ Chans2),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn1, Conn2]),
?assertEqual(0, count_connections_of_user(Config, Username)).
@@ -624,8 +768,11 @@ single_node_single_user_clear_limits(Config) ->
Username = proplists:get_value(rmq_username, Config),
set_user_connection_and_channel_limit(Config, Username, 3, 15),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
[Conn1, Conn2, Conn3] = Conns1 = open_connections(Config, [0, 0, 0]),
[_Chans1, Chans2, Chans3] = [open_channels(Conn, 5) || Conn <- Conns1],
@@ -635,17 +782,22 @@ single_node_single_user_clear_limits(Config) ->
expect_that_client_connection_is_rejected(Config, 0),
expect_that_client_connection_is_rejected(Config, 0),
expect_that_client_channel_is_rejected(Conn1),
- timer:sleep(50),
- ?assertEqual(false, is_process_alive(Conn1)),
- ?assertEqual(true, is_process_alive(Conn2)),
- ?assertEqual(true, is_process_alive(Conn3)),
+
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(Conn1) =:= false andalso
+ is_process_alive(Conn2) andalso
+ is_process_alive(Conn3)
+ end),
%% reach limit again
[Conn4] = open_connections(Config, [{0, Username}]),
Chans4 = [_|_] = open_channels(Conn4, 5),
- timer:sleep(200),
- ?assertEqual(3, count_connections_of_user(Config, Username)),
- ?assertEqual(15, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 3 andalso
+ count_channels_of_user(Config, Username) =:= 15
+ end),
clear_all_user_limits(Config, Username),
@@ -653,8 +805,10 @@ single_node_single_user_clear_limits(Config) ->
[Chans5, Chans6, Chans7] = [open_channels(Conn, 5) || Conn <- Conns2],
close_channels(Chans2 ++ Chans3 ++ Chans4 ++ Chans5 ++ Chans6 ++ Chans7),
- timer:sleep(100),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn2, Conn3, Conn4, Conn5, Conn6, Conn7]),
?assertEqual(0, count_connections_of_user(Config, Username)),
@@ -685,16 +839,28 @@ single_node_multiple_users_clear_limits(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 1, 0),
set_user_connection_and_channel_limit(Config, Username2, 1, 0),
[ConnA, ConnB] = open_connections(Config, [{0, Username1}, {0, Username2}]),
- ?assertEqual(1, count_connections_of_user(Config, Username1)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 1
+ end),
expect_that_client_channel_is_rejected(ConnA),
expect_that_client_channel_is_rejected(ConnB),
- timer:sleep(100),
- ?assertEqual(false, is_process_alive(ConnA)),
- ?assertEqual(false, is_process_alive(ConnB)),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(ConnA) =:= false andalso
+ is_process_alive(ConnB) =:= false
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
clear_all_user_limits(Config, Username1),
set_user_channel_limit_only(Config, Username2, -1),
@@ -704,12 +870,18 @@ single_node_multiple_users_clear_limits(Config) ->
[Chans1, Chans2] = [open_channels(Conn, 5) || Conn <- Conns1],
close_channels(Chans1 ++ Chans2),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
close_connections([Conn1, Conn2]),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username1, -1, -1),
set_user_connection_and_channel_limit(Config, Username2, -1, -1).
@@ -724,10 +896,16 @@ single_node_multiple_users_limit(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 2, 10),
set_user_connection_and_channel_limit(Config, Username2, 2, 10),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
[Conn1, Conn2, Conn3, Conn4] = Conns1 = open_connections(Config, [
{0, Username1},
@@ -741,9 +919,11 @@ single_node_multiple_users_limit(Config) ->
expect_that_client_connection_is_rejected(Config, 0, Username1),
expect_that_client_connection_is_rejected(Config, 0, Username2),
expect_that_client_channel_is_rejected(Conn1),
- timer:sleep(100),
- ?assertEqual(false, is_process_alive(Conn1)),
- ?assertEqual(true, is_process_alive(Conn3)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(Conn1) =:= false andalso
+ is_process_alive(Conn3) =:= true
+ end),
[Conn5] = open_connections(Config, [0]),
Chans5 = [_|_] = open_channels(Conn5, 5),
@@ -762,13 +942,19 @@ single_node_multiple_users_limit(Config) ->
close_channels(Chans2 ++ Chans3 ++ Chans4 ++ Chans5 ++ Chans6 ++
Chans7 ++ Chans8 ++ Chans9 ++ Chans10),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
close_connections([Conn2, Conn3, Conn4, Conn5, Conn6,
Conn7, Conn8, Conn9, Conn10]),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username1, -1, -1),
set_user_connection_and_channel_limit(Config, Username2, -1, -1),
@@ -787,10 +973,16 @@ single_node_multiple_users_zero_limit(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 0, 0),
set_user_connection_and_channel_limit(Config, Username2, 0, 0),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
%% with limit = 0 no connections are allowed
expect_that_client_connection_is_rejected(Config, 0, Username1),
@@ -801,28 +993,49 @@ single_node_multiple_users_zero_limit(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 1, 0),
set_user_connection_and_channel_limit(Config, Username2, 1, 0),
[ConnA, ConnB] = open_connections(Config, [{0, Username1}, {0, Username2}]),
- ?assertEqual(1, count_connections_of_user(Config, Username1)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 1
+ end),
expect_that_client_channel_is_rejected(ConnA),
expect_that_client_channel_is_rejected(ConnB),
- timer:sleep(100),
+
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(ConnA) =:= false andalso
+ is_process_alive(ConnB) =:= false
+ end),
+
?assertEqual(false, is_process_alive(ConnA)),
?assertEqual(false, is_process_alive(ConnB)),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username1, -1, -1),
[Conn1, Conn2] = Conns1 = open_connections(Config, [{0, Username1}, {0, Username1}]),
[Chans1, Chans2] = [open_channels(Conn, 5) || Conn <- Conns1],
close_channels(Chans1 ++ Chans2),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
close_connections([Conn1, Conn2]),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username1, -1, -1),
set_user_connection_and_channel_limit(Config, Username2, -1, -1).
@@ -833,8 +1046,11 @@ cluster_single_user_limit(Config) ->
set_user_connection_limit_only(Config, Username, 2),
set_user_channel_limit_only(Config, Username, 10),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
%% here connections and channels are opened to different nodes
[Conn1, Conn2] = Conns1 = open_connections(Config, [{0, Username}, {1, Username}]),
@@ -844,9 +1060,11 @@ cluster_single_user_limit(Config) ->
expect_that_client_connection_is_rejected(Config, 0, Username),
expect_that_client_connection_is_rejected(Config, 1, Username),
expect_that_client_channel_is_rejected(Conn1),
- timer:sleep(100),
- ?assertEqual(false, is_process_alive(Conn1)),
- ?assertEqual(true, is_process_alive(Conn2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(Conn1) =:= false andalso
+ is_process_alive(Conn2) =:= true
+ end),
set_user_connection_and_channel_limit(Config, Username, 5, 25),
@@ -876,9 +1094,11 @@ cluster_single_user_limit2(Config) ->
expect_that_client_connection_is_rejected(Config, 0, Username),
expect_that_client_connection_is_rejected(Config, 1, Username),
expect_that_client_channel_is_rejected(Conn1),
- timer:sleep(100),
- ?assertEqual(false, is_process_alive(Conn1)),
- ?assertEqual(true, is_process_alive(Conn2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(Conn1) =:= false andalso
+ is_process_alive(Conn2) =:= true
+ end),
set_user_connection_and_channel_limit(Config, Username, 5, 25),
@@ -893,8 +1113,10 @@ cluster_single_user_limit2(Config) ->
[open_channels(Conn, 1) || Conn <- [Conn3, Conn4, Conn5, Conn6, Conn1]],
close_channels(Chans2 ++ Chans3 ++ Chans4 ++ Chans5 ++ Chans6),
- timer:sleep(50),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn2, Conn3, Conn4, Conn5, Conn6]),
?assertEqual(0, count_connections_of_user(Config, Username)),
@@ -917,22 +1139,33 @@ cluster_single_user_zero_limit(Config) ->
%% with limit = 0 no channels are allowed
set_user_connection_and_channel_limit(Config, Username, 1, 0),
[ConnA] = open_connections(Config, [0]),
- ?assertEqual(1, count_connections_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 1
+ end),
expect_that_client_channel_is_rejected(ConnA),
- timer:sleep(100),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
?assertEqual(false, is_process_alive(ConnA)),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
set_user_connection_and_channel_limit(Config, Username, -1, -1),
[Conn1, Conn2, Conn3, Conn4] = Conns1 = open_connections(Config, [0, 1, 0, 1]),
[Chans1, Chans2, Chans3, Chans4] = [open_channels(Conn, 5) || Conn <- Conns1],
close_channels(Chans1 ++ Chans2 ++ Chans3 ++ Chans4),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn1, Conn2, Conn3, Conn4]),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username, -1, -1).
@@ -940,8 +1173,11 @@ cluster_single_user_clear_limits(Config) ->
Username = proplists:get_value(rmq_username, Config),
set_user_connection_and_channel_limit(Config, Username, 2, 10),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0 andalso
+ count_channels_of_user(Config, Username) =:= 0
+ end),
%% here a limit is reached on one node first
[Conn1, Conn2] = Conns1 = open_connections(Config, [{0, Username}, {0, Username}]),
@@ -951,10 +1187,11 @@ cluster_single_user_clear_limits(Config) ->
expect_that_client_connection_is_rejected(Config, 0, Username),
expect_that_client_connection_is_rejected(Config, 1, Username),
expect_that_client_channel_is_rejected(Conn1),
- timer:sleep(50),
- ?assertEqual(false, is_process_alive(Conn1)),
- ?assertEqual(true, is_process_alive(Conn2)),
-
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(Conn1) =:= false andalso
+ is_process_alive(Conn2) =:= true
+ end),
clear_all_user_limits(Config, Username),
[Conn3, Conn4, Conn5, Conn6, Conn7] = open_connections(Config, [
@@ -968,12 +1205,16 @@ cluster_single_user_clear_limits(Config) ->
[open_channels(Conn, 1) || Conn <- [Conn3, Conn4, Conn5, Conn6, Conn7]],
close_channels(Chans2 ++ Chans3 ++ Chans4 ++ Chans5 ++ Chans6 ++ Chans7),
-
- timer:sleep(50),
- ?assertEqual(0, count_channels_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username) =:= 0
+ end),
close_connections([Conn2, Conn3, Conn4, Conn5, Conn6, Conn7]),
- ?assertEqual(0, count_connections_of_user(Config, Username)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username, -1, -1).
@@ -987,10 +1228,16 @@ cluster_multiple_users_clear_limits(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 0, 0),
set_user_connection_and_channel_limit(Config, Username2, 0, 0),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
%% with limit = 0 no connections are allowed
expect_that_client_connection_is_rejected(Config, 0, Username1),
@@ -1002,20 +1249,35 @@ cluster_multiple_users_clear_limits(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 1, 0),
set_user_connection_and_channel_limit(Config, Username2, 1, 0),
[ConnA, ConnB] = open_connections(Config, [{0, Username1}, {1, Username2}]),
- ?assertEqual(1, count_connections_of_user(Config, Username1)),
- ?assertEqual(1, count_connections_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 1 andalso
+ count_connections_of_user(Config, Username2) =:= 1
+ end),
expect_that_client_channel_is_rejected(ConnA),
- timer:sleep(100),
- ?assertEqual(false, is_process_alive(ConnA)),
- ?assertEqual(true, is_process_alive(ConnB)),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(1, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ is_process_alive(ConnA) =:= false andalso
+ is_process_alive(ConnB) =:= true
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 1
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
kill_connections([ConnB]),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username2) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
?assertEqual(false, is_process_alive(ConnB)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
clear_all_user_limits(Config, Username1),
clear_all_user_limits(Config, Username2),
@@ -1029,12 +1291,18 @@ cluster_multiple_users_clear_limits(Config) ->
[Chans1, Chans2, Chans3, Chans4] = [open_channels(Conn, 5) || Conn <- Conns1],
close_channels(Chans1 ++ Chans2 ++ Chans3 ++ Chans4),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
close_connections([Conn1, Conn2, Conn3, Conn4]),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
set_user_connection_and_channel_limit(Config, Username1, -1, -1),
set_user_connection_and_channel_limit(Config, Username2, -1, -1).
@@ -1048,11 +1316,16 @@ cluster_multiple_users_zero_limit(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 0, 0),
set_user_connection_and_channel_limit(Config, Username2, 0, 0),
-
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 0
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
%% with limit = 0 no connections are allowed
expect_that_client_connection_is_rejected(Config, 0, Username1),
@@ -1064,20 +1337,27 @@ cluster_multiple_users_zero_limit(Config) ->
set_user_connection_and_channel_limit(Config, Username1, 1, 0),
set_user_connection_and_channel_limit(Config, Username2, 1, 0),
[ConnA, ConnB] = open_connections(Config, [{0, Username1}, {1, Username2}]),
- ?assertEqual(1, count_connections_of_user(Config, Username1)),
- ?assertEqual(1, count_connections_of_user(Config, Username2)),
+
expect_that_client_channel_is_rejected(ConnA),
- timer:sleep(100),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username1) =:= 0 andalso
+ count_connections_of_user(Config, Username2) =:= 1
+ end),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_channels_of_user(Config, Username1) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
?assertEqual(false, is_process_alive(ConnA)),
?assertEqual(true, is_process_alive(ConnB)),
- ?assertEqual(0, count_connections_of_user(Config, Username1)),
- ?assertEqual(1, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username1)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
kill_connections([ConnB]),
+ rabbit_ct_helpers:await_condition(
+ fun () ->
+ count_connections_of_user(Config, Username2) =:= 0 andalso
+ count_channels_of_user(Config, Username2) =:= 0
+ end),
?assertEqual(false, is_process_alive(ConnB)),
- ?assertEqual(0, count_connections_of_user(Config, Username2)),
- ?assertEqual(0, count_channels_of_user(Config, Username2)),
set_user_connection_and_channel_limit(Config, Username1, -1, -1),
set_user_connection_and_channel_limit(Config, Username2, -1, -1),