Fix integration tests to wait until ra cluster is ready

Publish/confirm before grow/shrink members is enough
This commit is contained in:
dcorbacho 2021-03-26 17:04:10 +01:00
parent 2eac4debbf
commit a1caff2a86
1 changed files with 28 additions and 1 deletions

View File

@ -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.