diff --git a/lib/supavisor/helpers.ex b/lib/supavisor/helpers.ex index e61423a21..4a0b87a0b 100644 --- a/lib/supavisor/helpers.ex +++ b/lib/supavisor/helpers.ex @@ -89,7 +89,10 @@ defmodule Supavisor.Helpers do end end - @spec get_user_secret(pid(), String.t(), String.t()) :: {:ok, map()} | {:error, String.t()} + @spec get_user_secret(pid(), String.t() | nil, String.t()) :: + {:ok, map()} | {:error, String.t()} + def get_user_secret(_conn, nil, _user), do: {:error, "No auth_query specified"} + def get_user_secret(conn, auth_query, user) when is_binary(auth_query) do Postgrex.query!(conn, auth_query, [user]) catch diff --git a/priv/repo/seeds_after_migration.exs b/priv/repo/seeds_after_migration.exs index ece059004..6e5432d48 100644 --- a/priv/repo/seeds_after_migration.exs +++ b/priv/repo/seeds_after_migration.exs @@ -34,7 +34,7 @@ if !Tenants.get_tenant_by_external_id("is_manager") do |> Tenants.create_tenant() end -["proxy_tenant1", "syn_tenant", "prom_tenant", "max_pool_tenant"] +["proxy_tenant1", "syn_tenant", "prom_tenant", "max_pool_tenant", "metrics_tenant"] |> Enum.each(fn tenant -> if !Tenants.get_tenant_by_external_id(tenant) do {:ok, _} = diff --git a/test/supavisor/client_handler/stats_test.exs b/test/supavisor/client_handler/stats_test.exs index 8adb4bdc3..001462d0b 100644 --- a/test/supavisor/client_handler/stats_test.exs +++ b/test/supavisor/client_handler/stats_test.exs @@ -100,7 +100,7 @@ defmodule Supavisor.ClientHandler.StatsTest do refute_receive {^telemetry, {:client, _, %{tenant: ^external_id}}, _} end - @tag external_id: "proxy_tenant1" + @tag external_id: "metrics_tenant" test "another instance do not send events here", %{telemetry: telemetry} = ctx do assert {:ok, _pid, node} = Supavisor.Support.Cluster.start_node() @@ -111,6 +111,21 @@ defmodule Supavisor.ClientHandler.StatsTest do self() ]) + # Start pool on local node + _this_conn = + start_supervised!( + {SingleConnection, + hostname: "localhost", + port: Application.fetch_env!(:supavisor, :proxy_port_transaction), + database: ctx.db, + username: ctx.user, + password: "postgres"}, + id: :postgrex_this + ) + + stop_supervised!(:postgrex_this) + + # Connect via other node and issue a query other_conn = start_supervised!( {SingleConnection, @@ -126,8 +141,10 @@ defmodule Supavisor.ClientHandler.StatsTest do this = Node.self() - refute_receive {^telemetry, {:client, _, %{tenant: "proxy_tenant1"}}, ^node} - assert_receive {^telemetry, {:client, _, %{tenant: "proxy_tenant1"}}, ^this}, 10_000 + external_id = ctx.external_id + + refute_receive {^telemetry, {:client, _, %{tenant: ^external_id}}, ^node} + assert_receive {^telemetry, {:client, _, %{tenant: ^external_id}}, ^this}, 10_000 end end