aprs.me/test/aprsme_web/telemetry_test.exs

41 lines
1.3 KiB
Elixir

defmodule AprsmeWeb.TelemetryTest do
use ExUnit.Case, async: true
alias AprsmeWeb.Telemetry
describe "metrics/0" do
test "returns a non-empty list of metric definitions" do
metrics = Telemetry.metrics()
assert is_list(metrics)
refute metrics == []
end
test "includes Phoenix endpoint, router, and live_view metrics" do
names =
Telemetry.metrics()
|> Enum.map(& &1.name)
|> Enum.map(&Enum.join(&1, "."))
assert Enum.any?(names, &String.starts_with?(&1, "phoenix.endpoint"))
assert Enum.any?(names, &String.starts_with?(&1, "phoenix.router_dispatch"))
end
test "includes Postgres metrics for connections, packets_table and replication" do
names =
Telemetry.metrics()
|> Enum.map(& &1.name)
|> Enum.map(&Enum.join(&1, "."))
assert Enum.any?(names, &String.contains?(&1, "aprsme.postgres.connections"))
assert Enum.any?(names, &String.contains?(&1, "aprsme.postgres.packets_table"))
assert Enum.any?(names, &String.contains?(&1, "aprsme.postgres.replication"))
end
test "every metric has a defined name and event_name" do
Enum.each(Telemetry.metrics(), fn m ->
assert is_list(m.name)
assert is_list(m.event_name)
end)
end
end
end