test: DatabaseMetrics pool-not-registered path

This commit is contained in:
Graham McIntire 2026-04-24 08:34:53 -05:00
parent cdbe3ccf46
commit 54c3e9fd5e
No known key found for this signature in database
GPG key ID: F4ABF488E6029E59

View file

@ -57,6 +57,34 @@ defmodule Aprsme.Telemetry.DatabaseMetricsTest do
end
end
describe "collect_db_pool_metrics/0 when Repo is not running" do
test "emits unavailable metrics when no Repo is registered" do
# Stop the Repo for this test — we need to restart it afterward to avoid
# breaking downstream tests.
repo_pid = Process.whereis(Aprsme.Repo)
if repo_pid do
# Temporarily unregister without stopping to avoid disrupting other tests.
:erlang.unregister(Aprsme.Repo)
on_exit(fn ->
if !Process.whereis(Aprsme.Repo) do
true = Process.register(repo_pid, Aprsme.Repo)
end
end)
end
attach_collector([:aprsme, :repo, :pool])
DatabaseMetrics.collect_db_pool_metrics()
assert_receive {:telemetry, [:aprsme, :repo, :pool], measurements, _}, 1_000
# The "unavailable" helper reports mostly zeros.
assert measurements.size == Application.get_env(:aprsme, Aprsme.Repo)[:pool_size] || 10
assert measurements.idle == 0
assert measurements.busy == 0
end
end
describe "collect_postgres_metrics/0 outside :test env" do
test "emits database, connections, packets_table and query_stats telemetry events" do
original = Application.get_env(:aprsme, :env)