towerops/test/towerops/error_tracker_ignorer_test.exs
Graham McIntire 0f32086933
Ignore pod shutdown errors in ErrorTracker
Add ErrorTrackerIgnorer to drop port_died, write_failed, epipe, and
broken pipe errors that occur during K8s pod shutdown. Same patterns
already filtered by HoneybadgerFilter and LoggerFilters.
2026-02-17 10:59:51 -06:00

45 lines
1.2 KiB
Elixir

defmodule Towerops.ErrorTrackerIgnorerTest do
use ExUnit.Case, async: true
alias Towerops.ErrorTrackerIgnorer
defp build_error(reason) do
%ErrorTracker.Error{
kind: "ErlangError",
reason: reason,
source_line: "-",
source_function: "-",
status: :unresolved,
fingerprint: "abc",
last_occurrence_at: DateTime.utc_now(),
muted: false
}
end
describe "ignore?/2" do
test "ignores port_died errors" do
error = build_error("Erlang error: {:port_died, :normal}")
assert ErrorTrackerIgnorer.ignore?(error, %{})
end
test "ignores write_failed errors" do
error = build_error("{:write_failed, :standard_io, :enoent}")
assert ErrorTrackerIgnorer.ignore?(error, %{})
end
test "ignores epipe errors" do
error = build_error("{:error, {:write_failed, %{type: :standard_io}, {:badarg, :epipe}}}")
assert ErrorTrackerIgnorer.ignore?(error, %{})
end
test "ignores broken pipe errors" do
error = build_error("broken pipe (epipe)")
assert ErrorTrackerIgnorer.ignore?(error, %{})
end
test "does not ignore regular errors" do
error = build_error("something went wrong")
refute ErrorTrackerIgnorer.ignore?(error, %{})
end
end
end