@@ -52,6 +52,7 @@ groups() ->
52
52
bad_exchange_property ,
53
53
bad_exchange_type ,
54
54
get_queue_not_found ,
55
+ declare_queues_concurrently ,
55
56
declare_queue_default_queue_type ,
56
57
declare_queue_empty_name ,
57
58
declare_queue_line_feed ,
@@ -432,6 +433,40 @@ get_queue_not_found(Config) ->
432
433
amqp10_msg :body (Resp )),
433
434
ok = cleanup (Init ).
434
435
436
+ declare_queues_concurrently (Config ) ->
437
+ NumQueues = 5 ,
438
+ {Pid1 , Ref1 } = spawn_monitor (? MODULE , declare_queues , [Config , NumQueues ]),
439
+ {Pid2 , Ref2 } = spawn_monitor (? MODULE , declare_queues , [Config , NumQueues ]),
440
+ receive {'DOWN' , Ref1 , process , Pid1 , Reason1 } ->
441
+ ? assertEqual (normal , Reason1 )
442
+ end ,
443
+ receive {'DOWN' , Ref2 , process , Pid2 , Reason2 } ->
444
+ ? assertEqual (normal , Reason2 )
445
+ end ,
446
+
447
+ ? assertEqual (NumQueues , count_queues (Config )),
448
+
449
+ Init = {_ , LinkPair } = init (Config ),
450
+ lists :foreach (fun (N ) ->
451
+ Bin = integer_to_binary (N ),
452
+ QName = <<" queue-" , Bin /binary >>,
453
+ {ok , _ } = rabbitmq_amqp_client :delete_queue (LinkPair , QName )
454
+ end , lists :seq (1 , NumQueues )),
455
+ ok = cleanup (Init ).
456
+
457
+ declare_queues (Config , Num ) ->
458
+ Init = {_ , LinkPair } = init (Config ),
459
+ ok = declare_queues0 (LinkPair , Num ),
460
+ ok = cleanup (Init ).
461
+
462
+ declare_queues0 (_LinkPair , 0 ) ->
463
+ ok ;
464
+ declare_queues0 (LinkPair , Left ) ->
465
+ Bin = integer_to_binary (Left ),
466
+ QName = <<" queue-" , Bin /binary >>,
467
+ ? assertMatch ({ok , _ }, rabbitmq_amqp_client :declare_queue (LinkPair , QName , #{})),
468
+ declare_queues0 (LinkPair , Left - 1 ).
469
+
435
470
declare_queue_default_queue_type (Config ) ->
436
471
Node = get_node_config (Config , 0 , nodename ),
437
472
Vhost = QName = atom_to_binary (? FUNCTION_NAME ),
@@ -871,11 +906,11 @@ pipeline(Config) ->
871
906
% % because RabbitMQ grants us 8 link credits initially.
872
907
Num = 8 ,
873
908
pipeline0 (Num , LinkPair , <<" PUT" >>, {map , []}),
874
- eventually (? _assertEqual (Num , rpc (Config , rabbit_amqqueue , count , [] )), 200 , 20 ),
909
+ eventually (? _assertEqual (Num , count_queues (Config )), 200 , 20 ),
875
910
flush (queues_created ),
876
911
877
912
pipeline0 (Num , LinkPair , <<" DELETE" >>, null ),
878
- eventually (? _assertEqual (0 , rpc (Config , rabbit_amqqueue , count , [] )), 200 , 20 ),
913
+ eventually (? _assertEqual (0 , count_queues (Config )), 200 , 20 ),
879
914
flush (queues_deleted ),
880
915
881
916
ok = cleanup (Init ).
@@ -1127,3 +1162,6 @@ gen_server_state(Pid) ->
1127
1162
L1 = lists :last (L0 ),
1128
1163
{data , L2 } = lists :last (L1 ),
1129
1164
proplists :get_value (" State" , L2 ).
1165
+
1166
+ count_queues (Config ) ->
1167
+ rpc (Config , rabbit_amqqueue , count , []).
0 commit comments