41 lines
1.3 KiB
Elixir
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
|