summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2016-09-19 04:28:05 +0300
committerMichael Klishin <michael@clojurewerkz.org>2016-09-19 04:28:05 +0300
commit0904ddd5968e8a9a9f962c018f6a2af4c105274f (patch)
tree0a6f4cd1718c1834dc728ff339979ea9229c3746 /test
parent9a5eac9a9480c547cd875bf755105e60f2135428 (diff)
downloadrabbitmq-server-git-0904ddd5968e8a9a9f962c018f6a2af4c105274f.tar.gz
Enforce max-queues vhost limit
Diffstat (limited to 'test')
-rw-r--r--test/per_vhost_queue_limit_SUITE.erl66
1 files changed, 65 insertions, 1 deletions
diff --git a/test/per_vhost_queue_limit_SUITE.erl b/test/per_vhost_queue_limit_SUITE.erl
index 4edeaa24f0..e7edbe2b32 100644
--- a/test/per_vhost_queue_limit_SUITE.erl
+++ b/test/per_vhost_queue_limit_SUITE.erl
@@ -36,7 +36,9 @@ groups() ->
{cluster_size_1, [], [
most_basic_single_node_queue_count,
single_node_single_vhost_queue_count,
- single_node_multiple_vhosts_queue_count
+ single_node_multiple_vhosts_queue_count,
+ single_node_single_vhost_limit,
+ single_node_single_vhost_zero_limit
]},
{cluster_size_2, [], [
most_basic_cluster_queue_count
@@ -201,6 +203,68 @@ most_basic_cluster_queue_count(Config) ->
?assertEqual(0, count_queues_in(Config, VHost, 1)),
rabbit_ct_broker_helpers:delete_vhost(Config, VHost).
+single_node_single_vhost_limit(Config) ->
+ single_node_single_vhost_limit_with(Config, 5),
+ single_node_single_vhost_limit_with(Config, 10).
+single_node_single_vhost_zero_limit(Config) ->
+ VHost = <<"queue-limits">>,
+ set_up_vhost(Config, VHost),
+ ?assertEqual(0, count_queues_in(Config, VHost)),
+
+ Conn1 = open_unmanaged_connection(Config, 0, VHost),
+ {ok, Ch1} = amqp_connection:open_channel(Conn1),
+
+ set_vhost_queue_limit(Config, VHost, 0),
+
+ try
+ amqp_channel:call(Ch1, #'queue.declare'{queue = <<"">>,
+ exclusive = true}),
+ ok
+ catch _:{{shutdown, {server_initiated_close, 406, _}}, _} ->
+ %% expected
+ ok
+ end,
+
+ Conn2 = open_unmanaged_connection(Config, 0, VHost),
+ {ok, Ch2} = amqp_connection:open_channel(Conn2),
+
+ %% lift the limit
+ set_vhost_queue_limit(Config, VHost, -1),
+ lists:foreach(fun (_) ->
+ #'queue.declare_ok'{queue = _} =
+ amqp_channel:call(Ch2, #'queue.declare'{queue = <<"">>,
+ exclusive = true})
+ end, lists:seq(1, 100)),
+
+ rabbit_ct_broker_helpers:delete_vhost(Config, VHost).
+
+single_node_single_vhost_limit_with(Config, WatermarkLimit) ->
+ VHost = <<"queue-limits">>,
+ set_up_vhost(Config, VHost),
+ ?assertEqual(0, count_queues_in(Config, VHost)),
+
+ set_vhost_queue_limit(Config, VHost, 3),
+ Conn = open_unmanaged_connection(Config, 0, VHost),
+ {ok, Ch} = amqp_connection:open_channel(Conn),
+
+ set_vhost_queue_limit(Config, VHost, WatermarkLimit),
+ lists:foreach(fun (_) ->
+ #'queue.declare_ok'{queue = _} =
+ amqp_channel:call(Ch, #'queue.declare'{queue = <<"">>,
+ exclusive = true})
+ end, lists:seq(1, WatermarkLimit)),
+
+ try
+ amqp_channel:call(Ch, #'queue.declare'{queue = <<"">>,
+ exclusive = true}),
+ ok
+ catch _:{{shutdown, {server_initiated_close, 406, _}}, _} ->
+ %% expected
+ ok
+ end,
+
+ rabbit_ct_broker_helpers:delete_vhost(Config, VHost).
+
%% -------------------------------------------------------------------
%% Helpers
%% -------------------------------------------------------------------