summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordcorbacho <dparracorbacho@piotal.io>2020-01-28 12:33:13 +0100
committerdcorbacho <dparracorbacho@piotal.io>2020-01-28 13:32:02 +0100
commit3418b10b3623c7edc9d9ea03969886bd5ffc3222 (patch)
tree1f7502e189eaa45a28f066041281229ccdf29532
parent1784c0a22cc403db97fb5aed7071a7bf7bc1dd0c (diff)
downloadrabbitmq-server-git-3418b10b3623c7edc9d9ea03969886bd5ffc3222.tar.gz
Test delete queue
-rw-r--r--src/rabbit_stream2_queue.erl1
-rw-r--r--test/rabbit_stream2_queue_SUITE.erl105
2 files changed, 103 insertions, 3 deletions
diff --git a/src/rabbit_stream2_queue.erl b/src/rabbit_stream2_queue.erl
index 954944c413..f90c7bb42f 100644
--- a/src/rabbit_stream2_queue.erl
+++ b/src/rabbit_stream2_queue.erl
@@ -20,6 +20,7 @@
declare/1,
delete/2,
infos/1,
+ info/2,
reductions/1,
%% other
diff --git a/test/rabbit_stream2_queue_SUITE.erl b/test/rabbit_stream2_queue_SUITE.erl
index 38f5465063..6b90a306e1 100644
--- a/test/rabbit_stream2_queue_SUITE.erl
+++ b/test/rabbit_stream2_queue_SUITE.erl
@@ -41,14 +41,15 @@ groups() ->
[
{stream2, [], [
{single_node, [], all_tests()},
- {clustered, [], all_tests()}
+ {clustered, [], [cluster_delete_queue] ++ all_tests()}
]}
].
all_tests() ->
[
roundtrip,
- time_travel
+ time_travel,
+ delete_queue
].
%% -------------------------------------------------------------------
@@ -132,7 +133,7 @@ merge_app_env(Config) ->
{ra, [{min_wal_roll_over_interval, 30000}]}).
end_per_testcase(Testcase, Config) ->
- % catch delete_queues(),
+ rabbit_ct_broker_helpers:rpc(Config, 0, ?MODULE, delete_queues, []),
Config1 = rabbit_ct_helpers:run_steps(
Config,
rabbit_ct_client_helpers:teardown_steps()),
@@ -241,6 +242,100 @@ time_travel(Config) ->
end,
ok.
+delete_queue(Config) ->
+ [Server | _] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
+ [MnesiaDir | _] = rabbit_ct_broker_helpers:get_node_configs(Config, mnesia_dir),
+
+ StreamsDir = filename:join(MnesiaDir, "streams"),
+
+ Ch = rabbit_ct_client_helpers:open_channel(Config, Server),
+ QName = ?config(queue_name, Config),
+ ?assertEqual({'queue.declare_ok', QName, 0, 0},
+ declare(Ch, QName, [{<<"x-queue-type">>, longstr,
+ ?config(queue_type, Config)}])),
+ publish_many(Ch, QName, 100),
+
+ ?assertEqual([[QName]], rabbit_ct_broker_helpers:rabbitmqctl_list(
+ Config, 0, ["list_queues", "name", "--no-table-headers"])),
+ ?assertMatch({ok, [_]}, file:list_dir(StreamsDir)),
+
+ ?assertEqual({'queue.delete_ok', 0},
+ amqp_channel:call(Ch, #'queue.delete'{queue = QName})),
+
+ ?assertEqual([], rabbit_ct_broker_helpers:rabbitmqctl_list(
+ Config, 0, ["list_queues", "name", "--no-table-headers"])),
+ ?assertMatch({ok, []}, file:list_dir(StreamsDir)),
+
+ flush(100),
+ ok.
+
+cluster_delete_queue(Config) ->
+ [Server1, Server2, Server3] = rabbit_ct_broker_helpers:get_node_configs(Config, nodename),
+ [MnesiaDir1, MnesiaDir2, MnesiaDir3] = rabbit_ct_broker_helpers:get_node_configs(Config, mnesia_dir),
+
+ StreamsDir1 = filename:join(MnesiaDir1, "streams"),
+ StreamsDir2 = filename:join(MnesiaDir2, "streams"),
+ StreamsDir3 = filename:join(MnesiaDir3, "streams"),
+
+ Ch1 = rabbit_ct_client_helpers:open_channel(Config, Server1),
+ Ch2 = rabbit_ct_client_helpers:open_channel(Config, Server2),
+ Ch3 = rabbit_ct_client_helpers:open_channel(Config, Server3),
+
+ QName = ?config(queue_name, Config),
+ Type = ?config(queue_type, Config),
+
+ %% Declare and delete on the same node
+ assert_declare(Ch1, QName, Type),
+ assert_exists(QName, Config, StreamsDir1, StreamsDir2, StreamsDir3),
+
+ ?assertEqual({'queue.delete_ok', 0},
+ amqp_channel:call(Ch1, #'queue.delete'{queue = QName})),
+ assert_deleted(Config, StreamsDir1, StreamsDir2, StreamsDir3),
+
+ %% Declare and delete on different nodes
+ assert_declare(Ch1, QName, Type),
+ assert_exists(QName, Config, StreamsDir1, StreamsDir2, StreamsDir3),
+
+ ?assertEqual({'queue.delete_ok', 0},
+ amqp_channel:call(Ch2, #'queue.delete'{queue = QName})),
+ assert_deleted(Config, StreamsDir1, StreamsDir2, StreamsDir3),
+
+ %% Try to delete again
+ ?assertEqual({'queue.delete_ok', 0},
+ amqp_channel:call(Ch2, #'queue.delete'{queue = QName})),
+ ?assertEqual({'queue.delete_ok', 0},
+ amqp_channel:call(Ch3, #'queue.delete'{queue = QName})),
+
+ %% Declare and delete on different nodes
+ assert_declare(Ch3, QName, Type),
+ assert_exists(QName, Config, StreamsDir1, StreamsDir2, StreamsDir3),
+
+ ?assertEqual({'queue.delete_ok', 0},
+ amqp_channel:call(Ch1, #'queue.delete'{queue = QName})),
+ assert_deleted(Config, StreamsDir1, StreamsDir2, StreamsDir3),
+
+ flush(100),
+ ok.
+
+assert_declare(Ch, QName, Type) ->
+ ?assertEqual({'queue.declare_ok', QName, 0, 0},
+ declare(Ch, QName, [{<<"x-queue-type">>, longstr, Type}])),
+ publish_many(Ch, QName, 100).
+
+assert_exists(QName, Config, StreamsDir1, StreamsDir2, StreamsDir3) ->
+ ?assertEqual([[QName]], rabbit_ct_broker_helpers:rabbitmqctl_list(
+ Config, 0, ["list_queues", "name", "--no-table-headers"])),
+ ?assertMatch({ok, [_]}, file:list_dir(StreamsDir1)),
+ ?assertMatch({ok, [_]}, file:list_dir(StreamsDir2)),
+ ?assertMatch({ok, [_]}, file:list_dir(StreamsDir3)).
+
+assert_deleted(Config, StreamsDir1, StreamsDir2, StreamsDir3) ->
+ ?assertEqual([], rabbit_ct_broker_helpers:rabbitmqctl_list(
+ Config, 0, ["list_queues", "name", "--no-table-headers"])),
+ ?assertMatch({ok, []}, file:list_dir(StreamsDir1)),
+ ?assertMatch({ok, []}, file:list_dir(StreamsDir2)),
+ ?assertMatch({ok, []}, file:list_dir(StreamsDir3)).
+
%% HELPERS
publish_confirm(Ch, QName, Msg) ->
@@ -300,3 +395,7 @@ flush(T) ->
after T ->
ok
end.
+
+delete_queues() ->
+ [rabbit_amqqueue:delete(Q, false, false, <<"dummy">>)
+ || Q <- rabbit_amqqueue:list()].