diff options
| -rw-r--r-- | test/rabbitmqctl_integration_SUITE.erl | 33 | ||||
| -rw-r--r-- | test/vhost_SUITE.erl | 39 |
2 files changed, 33 insertions, 39 deletions
diff --git a/test/rabbitmqctl_integration_SUITE.erl b/test/rabbitmqctl_integration_SUITE.erl index 535725d585..71b74ea104 100644 --- a/test/rabbitmqctl_integration_SUITE.erl +++ b/test/rabbitmqctl_integration_SUITE.erl @@ -31,6 +31,7 @@ -export([list_queues_local/1 ,list_queues_offline/1 ,list_queues_online/1 + ,list_queues_stopped/1 ]). all() -> @@ -44,6 +45,7 @@ groups() -> [list_queues_local ,list_queues_online ,list_queues_offline + ,list_queues_stopped ]} ]. @@ -96,13 +98,19 @@ end_per_group(list_queues, Config0) -> rabbit_ct_helpers:run_steps(Config1, rabbit_ct_client_helpers:teardown_steps() ++ rabbit_ct_broker_helpers:teardown_steps()); -end_per_group(global_parameters, Config) -> - rabbit_ct_helpers:run_teardown_steps(Config, - rabbit_ct_client_helpers:teardown_steps() ++ - rabbit_ct_broker_helpers:teardown_steps()); end_per_group(_, Config) -> Config. +init_per_testcase(list_queues_stopped, Config0) -> + %% Start node 3 to crash it's queues + rabbit_ct_broker_helpers:start_node(Config0, 2), + %% Make vhost "down" on nodes 2 and 3 + rabbit_ct_broker_helpers:force_vhost_failure(Config0, 1, <<"/">>), + rabbit_ct_broker_helpers:force_vhost_failure(Config0, 2, <<"/">>), + + rabbit_ct_broker_helpers:stop_node(Config0, 2), + rabbit_ct_helpers:testcase_started(Config0, list_queues_stopped); + init_per_testcase(Testcase, Config0) -> rabbit_ct_helpers:testcase_started(Config0, Testcase). @@ -134,6 +142,23 @@ list_queues_offline(Config) -> assert_ctl_queues(Config, 1, ["--offline"], OfflineQueues), ok. +list_queues_stopped(Config) -> + Node1Queues = lists:sort(lists:nth(1, ?config(per_node_queues, Config))), + Node2Queues = lists:sort(lists:nth(2, ?config(per_node_queues, Config))), + Node3Queues = lists:sort(lists:nth(3, ?config(per_node_queues, Config))), + + %% All queues are listed + ListedQueues = + [ {Name, State} + || [Name, State] <- rabbit_ct_broker_helpers:rabbitmqctl_list( + Config, 0, ["list_queues", "name", "state"]) ], + + [ <<"running">> = proplists:get_value(Q, ListedQueues) || Q <- Node1Queues ], + %% Node is running. Vhost is down + [ <<"stopped">> = proplists:get_value(Q, ListedQueues) || Q <- Node2Queues ], + %% Node is not running. Vhost is down + [ <<"down">> = proplists:get_value(Q, ListedQueues) || Q <- Node3Queues ]. + %%---------------------------------------------------------------------------- %% Helpers %%---------------------------------------------------------------------------- diff --git a/test/vhost_SUITE.erl b/test/vhost_SUITE.erl index a519d01af5..65aef8d410 100644 --- a/test/vhost_SUITE.erl +++ b/test/vhost_SUITE.erl @@ -161,7 +161,7 @@ vhost_failure_forces_connection_closure(Config) -> [_Conn2] = open_connections(Config, [{0, VHost2}]), ?assertEqual(1, count_connections_in(Config, VHost2)), - force_vhost_failure(Config, VHost2), + rabbit_ct_broker_helpers:force_vhost_failure(Config, VHost2), timer:sleep(200), ?assertEqual(0, count_connections_in(Config, VHost2)), @@ -181,7 +181,7 @@ dead_vhost_connection_refused(Config) -> ?assertEqual(0, count_connections_in(Config, VHost1)), ?assertEqual(0, count_connections_in(Config, VHost2)), - force_vhost_failure(Config, VHost2), + rabbit_ct_broker_helpers:force_vhost_failure(Config, VHost2), timer:sleep(200), [_Conn1] = open_connections(Config, [{0, VHost1}]), @@ -213,7 +213,7 @@ vhost_failure_forces_connection_closure_on_failure_node(Config) -> [_Conn21] = open_connections(Config, [{1, VHost2}]), ?assertEqual(2, count_connections_in(Config, VHost2)), - force_vhost_failure(Config, 0, VHost2), + rabbit_ct_broker_helpers:force_vhost_failure(Config, 0, VHost2), timer:sleep(200), %% Vhost2 connection on node 1 is still alive ?assertEqual(1, count_connections_in(Config, VHost2)), @@ -236,7 +236,7 @@ dead_vhost_connection_refused_on_failure_node(Config) -> ?assertEqual(0, count_connections_in(Config, VHost1)), ?assertEqual(0, count_connections_in(Config, VHost2)), - force_vhost_failure(Config, 0, VHost2), + rabbit_ct_broker_helpers:force_vhost_failure(Config, 0, VHost2), timer:sleep(200), %% Can open connections to vhost1 on node 0 and 1 [_Conn10] = open_connections(Config, [{0, VHost1}]), @@ -257,37 +257,6 @@ dead_vhost_connection_refused_on_failure_node(Config) -> rabbit_ct_broker_helpers:delete_vhost(Config, VHost2), rabbit_ct_broker_helpers:delete_vhost(Config, VHost1). -force_vhost_failure(Config, VHost) -> force_vhost_failure(Config, 0, VHost). - -force_vhost_failure(Config, Node, VHost) -> - force_vhost_failure(Config, Node, VHost, 10). - -force_vhost_failure(_Config, _Node, VHost, 0) -> - error({failed_to_force_vhost_failure, no_more_attempts_left, VHost}); -force_vhost_failure(Config, Node, VHost, Attempts) -> - MessageStorePid = get_message_store_pid(Config, VHost), - rabbit_ct_broker_helpers:rpc(Config, Node, - erlang, exit, - [MessageStorePid, force_vhost_failure]), - %% Give it a time to fail - timer:sleep(200), - case rabbit_ct_broker_helpers:rpc(Config, 0, - rabbit_vhost_sup_sup, is_vhost_alive, - [VHost]) of - true -> force_vhost_failure(Config, Node, VHost, Attempts - 1); - false -> ok - end. - -get_message_store_pid(Config, VHost) -> - {ok, VHostSup} = rabbit_ct_broker_helpers:rpc(Config, 0, - rabbit_vhost_sup_sup, vhost_sup, [VHost]), - Children = rabbit_ct_broker_helpers:rpc(Config, 0, - supervisor, which_children, - [VHostSup]), - [MsgStorePid] = [Pid || {Name, Pid, _, _} <- Children, - Name == msg_store_persistent], - MsgStorePid. - cluster_vhost_deletion_forces_connection_closure(Config) -> VHost1 = <<"vhost1">>, VHost2 = <<"vhost2">>, |
