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.
45 lines
1.2 KiB
Elixir
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
|