defmodule ToweropsWeb.TelemetryTest do use ExUnit.Case, async: true alias ToweropsWeb.Telemetry describe "parse_redis_info/1" do test "parses a minimal Redis INFO response" do info = """ # Stats total_connections_received:12 total_commands_processed:500 instantaneous_ops_per_sec:5 """ result = Telemetry.parse_redis_info(info) assert result["total_connections_received"] == "12" assert result["total_commands_processed"] == "500" assert result["instantaneous_ops_per_sec"] == "5" end test "skips comment/empty lines" do info = "\n# Comment\n\nkey:value\n# Another\n" assert %{"key" => "value"} == Telemetry.parse_redis_info(info) end test "returns empty map for empty input" do assert %{} == Telemetry.parse_redis_info("") end test "handles CRLF line endings" do info = "a:1\r\nb:2\r\n" assert %{"a" => "1", "b" => "2"} == Telemetry.parse_redis_info(info) end test "splits on first colon only" do info = "url:redis://localhost:6379" assert %{"url" => "redis://localhost:6379"} == Telemetry.parse_redis_info(info) end test "drops malformed entries without colon" do info = "valid:1\njunk_no_colon\nanother:2" assert %{"valid" => "1", "another" => "2"} == Telemetry.parse_redis_info(info) end end describe "metrics/0" do test "returns a list of metric specs" do metrics = Telemetry.metrics() assert is_list(metrics) refute Enum.empty?(metrics) end end end