@@ -1792,7 +1792,7 @@ dont_leak_file_handles(Config) ->
1792
1792
ok .
1793
1793
1794
1794
grow_queue (Config ) ->
1795
- [Server0 , Server1 , _Server2 , _Server3 , _Server4 ] =
1795
+ [Server0 , Server1 , Server2 , _Server3 , _Server4 ] =
1796
1796
rabbit_ct_broker_helpers :get_node_configs (Config , nodename ),
1797
1797
1798
1798
Ch = rabbit_ct_client_helpers :open_channel (Config , Server0 ),
@@ -1825,42 +1825,72 @@ grow_queue(Config) ->
1825
1825
1826
1826
% % grow queues to node 'Server1'
1827
1827
TargetClusterSize_2 = 2 ,
1828
- rpc :call (Server0 , rabbit_quorum_queue , grow , [Server1 , <<" /" >>, <<" .*" >>, all ]),
1828
+ Result1 = rpc :call (Server0 , rabbit_quorum_queue , grow , [Server1 , <<" /" >>, <<" .*" >>, all ]),
1829
+ % % [{{resource,<<"/">>,queue,<<"grow_queue">>},{ok,2}},
1830
+ % % {{resource,<<"/">>,queue,<<"grow_queue_alt">>},{ok,2}},...]
1831
+ ? assert (lists :all (fun ({_ , {R , _ }}) -> R =:= ok end , Result1 )),
1829
1832
assert_grown_queues (QQs , Server0 , TargetClusterSize_2 , MsgCount ),
1830
1833
1831
1834
% % grow queues to quorum cluster size '2' has no effect
1832
- rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_2 , <<" /" >>, <<" .*" >>, all ]),
1835
+ Result2 = rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_2 , <<" /" >>, <<" .*" >>, all ]),
1836
+ ? assertEqual ([], Result2 ),
1833
1837
assert_grown_queues (QQs , Server0 , TargetClusterSize_2 , MsgCount ),
1834
1838
1835
1839
% % grow queues to quorum cluster size '3'
1836
1840
TargetClusterSize_3 = 3 ,
1837
- rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_3 , <<" /" >>, <<" .*" >>, all ]),
1841
+ Result3 = rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_3 , <<" /" >>, <<" .*" >>, all , voter ]),
1842
+ ? assert (lists :all (fun ({_ , {R , _ }}) -> R =:= ok end , Result3 )),
1838
1843
assert_grown_queues (QQs , Server0 , TargetClusterSize_3 , MsgCount ),
1839
1844
1840
1845
% % grow queues to quorum cluster size '5'
1841
1846
TargetClusterSize_5 = 5 ,
1842
- rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_5 , <<" /" >>, <<" .*" >>, all ]),
1847
+ Result4 = rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_5 , <<" /" >>, <<" .*" >>, all , voter ]),
1848
+ ? assert (lists :all (fun ({_ , {R , _ }}) -> R =:= ok end , Result4 )),
1843
1849
assert_grown_queues (QQs , Server0 , TargetClusterSize_5 , MsgCount ),
1844
1850
1845
- % % shrink all queues again
1851
+ % % shrink all queues again down to 1 member
1846
1852
rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_quorum_queue ,
1847
1853
force_all_queues_shrink_member_to_current_member , []),
1848
1854
assert_grown_queues (QQs , Server0 , TargetClusterSize_1 , MsgCount ),
1849
1855
1850
1856
% % grow queues to quorum cluster size > '5' (limit = 5).
1851
1857
TargetClusterSize_10 = 10 ,
1852
- rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_10 , <<" /" >>, <<" .*" >>, all ]),
1858
+ Result5 = rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_10 , <<" /" >>, <<" .*" >>, all ]),
1859
+ ? assert (lists :all (fun ({_ , {R , _ }}) -> R =:= ok end , Result5 )),
1853
1860
assert_grown_queues (QQs , Server0 , TargetClusterSize_5 , MsgCount ),
1854
1861
1855
- % % shrink all queues again
1862
+ % % shrink all queues again down to 1 member
1856
1863
rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_quorum_queue ,
1857
1864
force_all_queues_shrink_member_to_current_member , []),
1858
1865
assert_grown_queues (QQs , Server0 , TargetClusterSize_1 , MsgCount ),
1859
1866
1860
1867
% % attempt to grow queues to quorum cluster size < '0'.
1861
1868
BadTargetClusterSize = - 5 ,
1862
1869
? assertEqual ({error , bad_quorum_cluster_size },
1863
- rpc :call (Server0 , rabbit_quorum_queue , grow , [BadTargetClusterSize , <<" /" >>, <<" .*" >>, all ])).
1870
+ rpc :call (Server0 , rabbit_quorum_queue , grow , [BadTargetClusterSize , <<" /" >>, <<" .*" >>, all ])),
1871
+
1872
+ % % shrink all queues again down to 1 member
1873
+ rabbit_ct_broker_helpers :rpc (Config , 0 , rabbit_quorum_queue ,
1874
+ force_all_queues_shrink_member_to_current_member , []),
1875
+ assert_grown_queues (QQs , Server0 , TargetClusterSize_1 , MsgCount ),
1876
+
1877
+ % % grow queues to node 'Server1': non_voter
1878
+ rpc :call (Server0 , rabbit_quorum_queue , grow , [Server1 , <<" /" >>, <<" .*" >>, all , non_voter ]),
1879
+ assert_grown_queues (QQs , Server0 , TargetClusterSize_2 , MsgCount ),
1880
+
1881
+ % % grow queues to node 'Server2': fail, non_voters found
1882
+ Result6 = rpc :call (Server0 , rabbit_quorum_queue , grow , [Server2 , <<" /" >>, <<" .*" >>, all , voter ]),
1883
+ % % [{{resource,<<"/">>,queue,<<"grow_queue">>},{error, 2, {error, non_voters_found}},
1884
+ % % {{resource,<<"/">>,queue,<<"grow_queue_alt">>},{error, 2, {error, non_voters_found}},...]
1885
+ ? assert (lists :all (
1886
+ fun ({_ , Err }) -> Err =:= {error , TargetClusterSize_2 , {error , non_voters_found }} end , Result6 )),
1887
+ assert_grown_queues (QQs , Server0 , TargetClusterSize_2 , MsgCount ),
1888
+
1889
+ % % grow queues to target quorum cluster size '5': fail, non_voters found
1890
+ Result7 = rpc :call (Server0 , rabbit_quorum_queue , grow , [TargetClusterSize_5 , <<" /" >>, <<" .*" >>, all ]),
1891
+ ? assert (lists :all (
1892
+ fun ({_ , Err }) -> Err =:= {error , TargetClusterSize_2 , {error , non_voters_found }} end , Result7 )),
1893
+ assert_grown_queues (QQs , Server0 , TargetClusterSize_2 , MsgCount ).
1864
1894
1865
1895
assert_grown_queues (Qs , Node , TargetClusterSize , MsgCount ) ->
1866
1896
[begin
0 commit comments