extend rabbit_amqqueue_SUITE with internal_no_owner_queue_delete_with/1 and add amqqueue:make_internal/{1,2} type specs
This commit is contained in:
parent
2472e450ff
commit
1ccfc0dbfd
|
@ -520,9 +520,14 @@ internal_owner(#amqqueue{options = #{internal := true,
|
||||||
internal_owner(#amqqueue{}) ->
|
internal_owner(#amqqueue{}) ->
|
||||||
undefined.
|
undefined.
|
||||||
|
|
||||||
|
-spec make_internal(amqqueue()) -> amqqueue().
|
||||||
|
|
||||||
make_internal(Q = #amqqueue{options = Options}) when is_map(Options) ->
|
make_internal(Q = #amqqueue{options = Options}) when is_map(Options) ->
|
||||||
Q#amqqueue{options = maps:merge(Options, #{internal => true,
|
Q#amqqueue{options = maps:merge(Options, #{internal => true,
|
||||||
internal_owner => undefined})}.
|
internal_owner => undefined})}.
|
||||||
|
|
||||||
|
-spec make_internal(amqqueue(), rabbit_types:r(queue | exchange)) -> amqqueue().
|
||||||
|
|
||||||
make_internal(Q = #amqqueue{options = Options}, Owner)
|
make_internal(Q = #amqqueue{options = Options}, Owner)
|
||||||
when is_map(Options) andalso is_record(Owner, resource) ->
|
when is_map(Options) andalso is_record(Owner, resource) ->
|
||||||
Q#amqqueue{options = maps:merge(Options, #{internal => true,
|
Q#amqqueue{options = maps:merge(Options, #{internal => true,
|
||||||
|
|
|
@ -19,7 +19,8 @@ all() ->
|
||||||
all_tests() ->
|
all_tests() ->
|
||||||
[
|
[
|
||||||
normal_queue_delete_with,
|
normal_queue_delete_with,
|
||||||
internal_queue_delete_with
|
internal_owner_queue_delete_with,
|
||||||
|
internal_no_owner_queue_delete_with
|
||||||
].
|
].
|
||||||
|
|
||||||
groups() ->
|
groups() ->
|
||||||
|
@ -44,7 +45,9 @@ end_per_group(_Group, Config) ->
|
||||||
|
|
||||||
init_per_testcase(Testcase, Config) ->
|
init_per_testcase(Testcase, Config) ->
|
||||||
Config1 = rabbit_ct_helpers:testcase_started(Config, Testcase),
|
Config1 = rabbit_ct_helpers:testcase_started(Config, Testcase),
|
||||||
rabbit_ct_helpers:run_steps(Config1,
|
QName = rabbit_misc:r(<<"/">>, queue, rabbit_data_coercion:to_binary(Testcase)),
|
||||||
|
Config2 = rabbit_ct_helpers:set_config(Config1, [{queue_name, QName}]),
|
||||||
|
rabbit_ct_helpers:run_steps(Config2,
|
||||||
rabbit_ct_client_helpers:setup_steps()).
|
rabbit_ct_client_helpers:setup_steps()).
|
||||||
|
|
||||||
end_per_testcase(Testcase, Config) ->
|
end_per_testcase(Testcase, Config) ->
|
||||||
|
@ -58,7 +61,7 @@ end_per_testcase(Testcase, Config) ->
|
||||||
%%%===================================================================
|
%%%===================================================================
|
||||||
|
|
||||||
normal_queue_delete_with(Config) ->
|
normal_queue_delete_with(Config) ->
|
||||||
QName = queue_name(Config, <<"normal">>),
|
QName = ?config(queue_name, Config),
|
||||||
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
|
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
|
||||||
Queue = amqqueue:new(QName,
|
Queue = amqqueue:new(QName,
|
||||||
none, %% pid
|
none, %% pid
|
||||||
|
@ -78,8 +81,8 @@ normal_queue_delete_with(Config) ->
|
||||||
|
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
internal_queue_delete_with(Config) ->
|
internal_owner_queue_delete_with(Config) ->
|
||||||
QName = queue_name(Config, <<"internal_protected">>),
|
QName = ?config(queue_name, Config),
|
||||||
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
|
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
|
||||||
Queue = amqqueue:new(QName,
|
Queue = amqqueue:new(QName,
|
||||||
none, %% pid
|
none, %% pid
|
||||||
|
@ -96,7 +99,7 @@ internal_queue_delete_with(Config) ->
|
||||||
|
|
||||||
?assertException(exit, {exception,
|
?assertException(exit, {exception,
|
||||||
{amqp_error, resource_locked,
|
{amqp_error, resource_locked,
|
||||||
"Cannot delete protected queue 'rabbit_amqqueue_tests/internal_protected' in vhost '/'.",
|
"Cannot delete protected queue 'internal_owner_queue_delete_with' in vhost '/'.",
|
||||||
none}}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, delete_with, [QName, false, false, <<"dummy">>])),
|
none}}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, delete_with, [QName, false, false, <<"dummy">>])),
|
||||||
|
|
||||||
?assertMatch({ok, _}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, lookup, [QName])),
|
?assertMatch({ok, _}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, lookup, [QName])),
|
||||||
|
@ -107,11 +110,31 @@ internal_queue_delete_with(Config) ->
|
||||||
|
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
%% Utility
|
internal_no_owner_queue_delete_with(Config) ->
|
||||||
|
QName = ?config(queue_name, Config),
|
||||||
|
Node = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
|
||||||
|
Queue = amqqueue:new(QName,
|
||||||
|
none, %% pid
|
||||||
|
true, %% durable
|
||||||
|
false, %% auto delete
|
||||||
|
none, %% owner,
|
||||||
|
[],
|
||||||
|
<<"/">>,
|
||||||
|
#{},
|
||||||
|
rabbit_classic_queue),
|
||||||
|
IQueue = amqqueue:make_internal(Queue),
|
||||||
|
|
||||||
queue_name(Config, Name) ->
|
?assertMatch({new, _Q}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_queue_type, declare, [IQueue, Node])),
|
||||||
Name1 = iolist_to_binary(rabbit_ct_helpers:config_to_testcase_name(Config, Name)),
|
|
||||||
queue_name(Name1).
|
|
||||||
|
|
||||||
queue_name(Name) ->
|
?assertException(exit, {exception,
|
||||||
rabbit_misc:r(<<"/">>, queue, Name).
|
{amqp_error, resource_locked,
|
||||||
|
"Cannot delete protected queue 'internal_no_owner_queue_delete_with' in vhost '/'.",
|
||||||
|
none}}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, delete_with, [QName, false, false, <<"dummy">>])),
|
||||||
|
|
||||||
|
?assertMatch({ok, _}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, lookup, [QName])),
|
||||||
|
|
||||||
|
?assertMatch({ok, _}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, delete_with, [QName, false, false, ?INTERNAL_USER])),
|
||||||
|
|
||||||
|
?assertMatch({error, not_found}, rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, lookup, [QName])),
|
||||||
|
|
||||||
|
ok.
|
||||||
|
|
Loading…
Reference in New Issue