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
|
||||||
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
|
describe "collect_postgres_metrics/0 outside :test env" do
|
||||||
test "emits database, connections, packets_table and query_stats telemetry events" do
|
test "emits database, connections, packets_table and query_stats telemetry events" do
|
||||||
original = Application.get_env(:aprsme, :env)
|
original = Application.get_env(:aprsme, :env)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue