Skip to content

Commit

Permalink
per_vhost_connection_limit_SUITE: Add a test around cluster rename
Browse files Browse the repository at this point in the history
This makes sure the limits are still good after a node was renamed and
thus, the tracking tables were recreated with a new name too.

While here, do some cleanup in the init/end functions in both the two
per-vhost limit testsuite.

References rabbitmq#500.
[#116521809]
  • Loading branch information
dumbbell committed Aug 26, 2016
1 parent a5cdde1 commit a660b70
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 15 deletions.
74 changes: 65 additions & 9 deletions test/per_vhost_connection_limit_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,18 @@ groups() ->
cluster_single_vhost_zero_limit,
cluster_multiple_vhosts_zero_limit,
cluster_vhost_deletion_forces_connection_closure
]},
{cluster_rename, [], [
vhost_limit_after_node_renamed
]}
].

suite() ->
[
%% If a test hangs, no need to wait for 30 minutes.
{timetrap, {minutes, 8}}
].

%% see partitions_SUITE
-define(DELAY, 9000).

Expand All @@ -74,31 +83,52 @@ end_per_suite(Config) ->
init_per_group(cluster_size_1, Config) ->
init_per_multinode_group(cluster_size_1, Config, 1);
init_per_group(cluster_size_2, Config) ->
init_per_multinode_group(cluster_size_2, Config, 2).
init_per_multinode_group(cluster_size_2, Config, 2);
init_per_group(cluster_rename, Config) ->
init_per_multinode_group(cluster_rename, Config, 2).

init_per_multinode_group(_GroupName, Config, NodeCount) ->
init_per_multinode_group(Group, Config, NodeCount) ->
Suffix = rabbit_ct_helpers:testcase_absname(Config, "", "-"),
Config1 = rabbit_ct_helpers:set_config(Config, [
{rmq_nodes_count, NodeCount},
{rmq_nodename_suffix, Suffix}
]),
rabbit_ct_helpers:run_steps(Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps()).

case Group of
cluster_rename ->
% The broker is managed by {init,end}_per_testcase().
Config1;
_ ->
rabbit_ct_helpers:run_steps(Config1,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps())
end.

end_per_group(cluster_rename, Config) ->
% The broker is managed by {init,end}_per_testcase().
Config;
end_per_group(_Group, Config) ->
rabbit_ct_helpers:run_steps(Config,
rabbit_ct_client_helpers:teardown_steps() ++
rabbit_ct_broker_helpers:teardown_steps()).

init_per_testcase(vhost_limit_after_node_renamed = Testcase, Config) ->
rabbit_ct_helpers:testcase_started(Config, Testcase),
rabbit_ct_helpers:run_steps(Config,
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps());
init_per_testcase(Testcase, Config) ->
rabbit_ct_helpers:testcase_started(Config, Testcase),
clear_all_connection_tracking_tables(Config),
rabbit_ct_client_helpers:setup_steps(),
rabbit_ct_helpers:testcase_started(Config, Testcase).
Config.

end_per_testcase(vhost_limit_after_node_renamed = Testcase, Config) ->
Config1 = ?config(save_config, Config),
rabbit_ct_helpers:run_steps(Config1,
rabbit_ct_client_helpers:teardown_steps() ++
rabbit_ct_broker_helpers:teardown_steps()),
rabbit_ct_helpers:testcase_finished(Config1, Testcase);
end_per_testcase(Testcase, Config) ->
clear_all_connection_tracking_tables(Config),
rabbit_ct_client_helpers:teardown_steps(),
rabbit_ct_helpers:testcase_finished(Config, Testcase).

clear_all_connection_tracking_tables(Config) ->
Expand Down Expand Up @@ -645,6 +675,32 @@ cluster_vhost_deletion_forces_connection_closure(Config) ->

rabbit_ct_broker_helpers:delete_vhost(Config, VHost1).

vhost_limit_after_node_renamed(Config) ->
A = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),

VHost = <<"/renaming_node">>,
set_up_vhost(Config, VHost),
set_vhost_connection_limit(Config, VHost, 2),

?assertEqual(0, count_connections_in(Config, VHost)),

[Conn1, Conn2, {error, not_allowed}] = open_connections(Config,
[{0, VHost}, {1, VHost}, {0, VHost}]),
?assertEqual(2, count_connections_in(Config, VHost)),
close_connections([Conn1, Conn2]),

Config1 = cluster_rename_SUITE:stop_rename_start(Config, A, [A, 'new-A']),

?assertEqual(0, count_connections_in(Config1, VHost)),

[Conn3, Conn4, {error, not_allowed}] = open_connections(Config,
[{0, VHost}, {1, VHost}, {0, VHost}]),
?assertEqual(2, count_connections_in(Config1, VHost)),
close_connections([Conn3, Conn4]),

set_vhost_connection_limit(Config1, VHost, -1),
{save_config, Config1}.

%% -------------------------------------------------------------------
%% Helpers
%% -------------------------------------------------------------------
Expand Down
18 changes: 12 additions & 6 deletions test/per_vhost_connection_limit_partitions_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ groups() ->
]}
].

suite() ->
[
%% If a test hangs, no need to wait for 30 minutes.
{timetrap, {minutes, 8}}
].

%% see partitions_SUITE
-define(DELAY, 12000).

Expand All @@ -54,33 +60,33 @@ init_per_suite(Config) ->
end_per_suite(Config) ->
rabbit_ct_helpers:run_teardown_steps(Config).

init_per_group(net_ticktime_1 = GroupName, Config) ->
init_per_group(net_ticktime_1 = Group, Config) ->
Config1 = rabbit_ct_helpers:set_config(Config, [{net_ticktime, 1}]),
init_per_multinode_group(GroupName, Config1, 3).
init_per_multinode_group(Group, Config1, 3).

init_per_multinode_group(_GroupName, Config, NodeCount) ->
init_per_multinode_group(_Group, Config, NodeCount) ->
Suffix = rabbit_ct_helpers:testcase_absname(Config, "", "-"),
Config1 = rabbit_ct_helpers:set_config(Config, [
{rmq_nodes_count, NodeCount},
{rmq_nodename_suffix, Suffix},
{rmq_nodes_clustered, false}
]),
rabbit_ct_helpers:run_steps(Config1,
rabbit_ct_broker_helpers:setup_steps() ++ [
rabbit_ct_broker_helpers:setup_steps() ++
rabbit_ct_client_helpers:setup_steps() ++ [
fun rabbit_ct_broker_helpers:enable_dist_proxy/1,
fun rabbit_ct_broker_helpers:cluster_nodes/1
]).

end_per_group(_Group, Config) ->
rabbit_ct_helpers:run_steps(Config,
rabbit_ct_client_helpers:teardown_steps() ++
rabbit_ct_broker_helpers:teardown_steps()).

init_per_testcase(Testcase, Config) ->
rabbit_ct_client_helpers:setup_steps(),
rabbit_ct_helpers:testcase_started(Config, Testcase).

end_per_testcase(Testcase, Config) ->
rabbit_ct_client_helpers:teardown_steps(),
rabbit_ct_helpers:testcase_finished(Config, Testcase).

%% -------------------------------------------------------------------
Expand Down

0 comments on commit a660b70

Please sign in to comment.