Fix integration tests to wait until ra cluster is ready
Publish/confirm before grow/shrink members is enough
This commit is contained in:
parent
2eac4debbf
commit
a1caff2a86
|
@ -70,15 +70,19 @@ shrink(Config) ->
|
|||
NodeConfig = rabbit_ct_broker_helpers:get_node_config(Config, 2),
|
||||
Nodename2 = ?config(nodename, NodeConfig),
|
||||
Ch = rabbit_ct_client_helpers:open_channel(Config, Nodename2),
|
||||
#'confirm.select_ok'{} = amqp_channel:call(Ch, #'confirm.select'{}),
|
||||
%% declare a quorum queue
|
||||
QName = "shrink1",
|
||||
#'queue.declare_ok'{} = declare_qq(Ch, QName),
|
||||
publish_confirm(Ch, QName),
|
||||
{ok, Out1} = rabbitmq_queues(Config, 0, ["shrink", Nodename2]),
|
||||
?assertMatch(#{{"/", "shrink1"} := {2, ok}}, parse_result(Out1)),
|
||||
Nodename1 = rabbit_ct_broker_helpers:get_node_config(Config, 1, nodename),
|
||||
publish_confirm(Ch, QName),
|
||||
{ok, Out2} = rabbitmq_queues(Config, 0, ["shrink", Nodename1]),
|
||||
?assertMatch(#{{"/", "shrink1"} := {1, ok}}, parse_result(Out2)),
|
||||
Nodename0 = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
|
||||
publish_confirm(Ch, QName),
|
||||
{ok, Out3} = rabbitmq_queues(Config, 0, ["shrink", Nodename0]),
|
||||
?assertMatch(#{{"/", "shrink1"} := {1, error}}, parse_result(Out3)),
|
||||
ok.
|
||||
|
@ -87,17 +91,20 @@ grow(Config) ->
|
|||
NodeConfig = rabbit_ct_broker_helpers:get_node_config(Config, 2),
|
||||
Nodename2 = ?config(nodename, NodeConfig),
|
||||
Ch = rabbit_ct_client_helpers:open_channel(Config, Nodename2),
|
||||
#'confirm.select_ok'{} = amqp_channel:call(Ch, #'confirm.select'{}),
|
||||
%% declare a quorum queue
|
||||
QName = "grow1",
|
||||
Args = [{<<"x-quorum-initial-group-size">>, long, 1}],
|
||||
#'queue.declare_ok'{} = declare_qq(Ch, QName, Args),
|
||||
Nodename0 = rabbit_ct_broker_helpers:get_node_config(Config, 0, nodename),
|
||||
publish_confirm(Ch, QName),
|
||||
{ok, Out1} = rabbitmq_queues(Config, 0, ["grow", Nodename0, "all"]),
|
||||
?assertMatch(#{{"/", "grow1"} := {2, ok}}, parse_result(Out1)),
|
||||
Nodename1 = rabbit_ct_broker_helpers:get_node_config(Config, 1, nodename),
|
||||
publish_confirm(Ch, QName),
|
||||
{ok, Out2} = rabbitmq_queues(Config, 0, ["grow", Nodename1, "all"]),
|
||||
?assertMatch(#{{"/", "grow1"} := {3, ok}}, parse_result(Out2)),
|
||||
|
||||
publish_confirm(Ch, QName),
|
||||
{ok, Out3} = rabbitmq_queues(Config, 0, ["grow", Nodename0, "all"]),
|
||||
?assertNotMatch(#{{"/", "grow1"} := _}, parse_result(Out3)),
|
||||
ok.
|
||||
|
@ -106,11 +113,13 @@ grow_invalid_node_filtered(Config) ->
|
|||
NodeConfig = rabbit_ct_broker_helpers:get_node_config(Config, 2),
|
||||
Nodename2 = ?config(nodename, NodeConfig),
|
||||
Ch = rabbit_ct_client_helpers:open_channel(Config, Nodename2),
|
||||
#'confirm.select_ok'{} = amqp_channel:call(Ch, #'confirm.select'{}),
|
||||
%% declare a quorum queue
|
||||
QName = "grow-err",
|
||||
Args = [{<<"x-quorum-initial-group-size">>, long, 1}],
|
||||
#'queue.declare_ok'{} = declare_qq(Ch, QName, Args),
|
||||
DummyNode = not_really_a_node@nothing,
|
||||
publish_confirm(Ch, QName),
|
||||
{ok, Out1} = rabbitmq_queues(Config, 0, ["grow", DummyNode, "all"]),
|
||||
?assertNotMatch(#{{"/", "grow-err"} := _}, parse_result(Out1)),
|
||||
ok.
|
||||
|
@ -137,3 +146,21 @@ declare_qq(Ch, Q) ->
|
|||
|
||||
rabbitmq_queues(Config, N, Args) ->
|
||||
rabbit_ct_broker_helpers:rabbitmq_queues(Config, N, ["--silent" | Args]).
|
||||
|
||||
publish_confirm(Ch, QName) ->
|
||||
ok = amqp_channel:cast(Ch,
|
||||
#'basic.publish'{routing_key = list_to_binary(QName)},
|
||||
#amqp_msg{props = #'P_basic'{delivery_mode = 2},
|
||||
payload = <<"msg">>}),
|
||||
amqp_channel:register_confirm_handler(Ch, self()),
|
||||
ct:pal("waiting for confirms from ~s", [QName]),
|
||||
receive
|
||||
#'basic.ack'{} ->
|
||||
ct:pal("CONFIRMED! ~s", [QName]),
|
||||
ok;
|
||||
#'basic.nack'{} ->
|
||||
ct:pal("NOT CONFIRMED! ~s", [QName]),
|
||||
fail
|
||||
after 10000 ->
|
||||
exit(confirm_timeout)
|
||||
end.
|
||||
|
|
Loading…
Reference in New Issue