From f4286f32086b60f5a9e5f36d73d89ee97ba9484e Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 20 Dec 2023 16:29:45 +0100 Subject: [PATCH] test(gcp_pubsub): increase wait timeout and fix falt injection --- .../src/emqx_bridge_gcp_pubsub_client.erl | 3 ++- .../emqx_bridge_gcp_pubsub_producer_SUITE.erl | 22 ++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_client.erl b/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_client.erl index 5975ba89b..7091bbf8f 100644 --- a/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_client.erl +++ b/apps/emqx_bridge_gcp_pubsub/src/emqx_bridge_gcp_pubsub_client.erl @@ -428,7 +428,8 @@ do_get_status(ResourceId, Timeout) -> msg => "ehttpc_health_check_failed", connector => ResourceId, reason => Reason, - worker => Worker + worker => Worker, + wait_time => Timeout }), false end diff --git a/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl b/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl index f65b80f90..f29fbb9e7 100644 --- a/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl +++ b/apps/emqx_bridge_gcp_pubsub/test/emqx_bridge_gcp_pubsub_producer_SUITE.erl @@ -310,7 +310,7 @@ gcp_pubsub_config(Config) -> io_lib:format( "bridges.gcp_pubsub.~s {\n" " enable = true\n" - " connect_timeout = 1s\n" + " connect_timeout = 5s\n" " service_account_json = ~s\n" " payload_template = ~p\n" " pubsub_topic = ~s\n" @@ -1404,8 +1404,23 @@ t_failure_no_body(Config) -> ), ok. +kill_gun_process(EhttpcPid) -> + State = ehttpc:get_state(EhttpcPid, minimal), + GunPid = maps:get(client, State), + true = is_pid(GunPid), + _ = exit(GunPid, kill), + ok. + +kill_gun_processes(ConnectorResourceId) -> + Pool = ehttpc:workers(ConnectorResourceId), + Workers = lists:map(fun({_, Pid}) -> Pid end, Pool), + %% assert there is at least one pool member + ?assertMatch([_ | _], Workers), + lists:foreach(fun(Pid) -> kill_gun_process(Pid) end, Workers). + t_unrecoverable_error(Config) -> ActionResourceId = ?config(action_resource_id, Config), + ConnectorResourceId = ?config(connector_resource_id, Config), TelemetryTable = ?config(telemetry_table, Config), TestPid = self(), FailureNoBodyHandler = @@ -1415,10 +1430,7 @@ t_unrecoverable_error(Config) -> %% kill the gun process while it's waiting for the %% response so we provoke an `{error, _}' response from %% ehttpc. - lists:foreach( - fun(Pid) -> exit(Pid, kill) end, - [Pid || {_, Pid, _, _} <- supervisor:which_children(gun_sup)] - ), + ok = kill_gun_processes(ConnectorResourceId), Rep = cowboy_req:reply( 200, #{<<"content-type">> => <<"application/json">>},