diff --git a/apps/emqx_machine/test/emqx_machine_SUITE.erl b/apps/emqx_machine/test/emqx_machine_SUITE.erl index d8bd01c00..3838e6aad 100644 --- a/apps/emqx_machine/test/emqx_machine_SUITE.erl +++ b/apps/emqx_machine/test/emqx_machine_SUITE.erl @@ -147,29 +147,32 @@ t_open_ports_check(Config) -> ok = emqx_cth_cluster:stop_node(Core2), ?assertEqual(ok, erpc:call(Replicant, emqx_machine, open_ports_check, [])), - Results = erpc:call(Core1, emqx_machine, open_ports_check, []), - ?assertMatch( - #{ - msg := "some ports are unreachable", - results := - #{ - Core2 := - #{ - open_ports := #{}, - ports_to_check := [_, _], - resolved_ips := [_], - status := bad_ports - } - } - }, - Results, - #{core2 => Core2, gen_rpc_port => GenRPCPort, ekka_port => EkkaPort} - ), - %% 2 ports to check; we don't assert the exact ekka port because, when running - %% multiple nodes on the same machine as we do in tests, the order of returned ports - %% might change between invocations. - NumPorts = 2, - ?assertEqual( - NumPorts, map_size(emqx_utils_maps:deep_get([results, Core2, open_ports], Results)) - ), + ?retry(200, 20, begin + Results = erpc:call(Core1, emqx_machine, open_ports_check, []), + ?assertMatch( + #{ + msg := "some ports are unreachable", + results := + #{ + Core2 := + #{ + open_ports := #{}, + ports_to_check := [_, _], + resolved_ips := [_], + status := bad_ports + } + } + }, + Results, + #{core2 => Core2, gen_rpc_port => GenRPCPort, ekka_port => EkkaPort} + ), + %% 2 ports to check; we don't assert the exact ekka port because, when running + %% multiple nodes on the same machine as we do in tests, the order of returned ports + %% might change between invocations. + NumPorts = 2, + ?assertEqual( + NumPorts, map_size(emqx_utils_maps:deep_get([results, Core2, open_ports], Results)) + ), + ok + end), ok.