From a660b7009a61d1e05c096b518a961720669c0bb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20P=C3=A9dron?= Date: Fri, 26 Aug 2016 15:09:07 +0200 Subject: [PATCH] per_vhost_connection_limit_SUITE: Add a test around cluster rename 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 #500. [#116521809] --- test/per_vhost_connection_limit_SUITE.erl | 74 ++++++++++++++++--- ...host_connection_limit_partitions_SUITE.erl | 18 +++-- 2 files changed, 77 insertions(+), 15 deletions(-) diff --git a/test/per_vhost_connection_limit_SUITE.erl b/test/per_vhost_connection_limit_SUITE.erl index 593819797e82..4fae129a35be 100644 --- a/test/per_vhost_connection_limit_SUITE.erl +++ b/test/per_vhost_connection_limit_SUITE.erl @@ -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). @@ -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) -> @@ -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 %% ------------------------------------------------------------------- diff --git a/test/per_vhost_connection_limit_partitions_SUITE.erl b/test/per_vhost_connection_limit_partitions_SUITE.erl index c7fae3a77cf2..051f3f13b758 100644 --- a/test/per_vhost_connection_limit_partitions_SUITE.erl +++ b/test/per_vhost_connection_limit_partitions_SUITE.erl @@ -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). @@ -54,11 +60,11 @@ 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}, @@ -66,21 +72,21 @@ init_per_multinode_group(_GroupName, Config, NodeCount) -> {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). %% -------------------------------------------------------------------