test: DatabaseMetrics pool-not-registered path
This commit is contained in:
parent
cdbe3ccf46
commit
54c3e9fd5e
1 changed files with 28 additions and 0 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue