From a063a6eb2bb289b5b4592fa12629a26945436963 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 3 Jan 2019 22:45:07 +0100 Subject: Add a test for counter recovery --- lib/logger/lib/logger/config.ex | 5 +++-- lib/logger/test/logger_test.exs | 27 +++++++++++++++++---------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/logger/lib/logger/config.ex b/lib/logger/lib/logger/config.ex index 51e773618..1ae09fa4c 100644 --- a/lib/logger/lib/logger/config.ex +++ b/lib/logger/lib/logger/config.ex @@ -5,6 +5,7 @@ defmodule Logger.Config do @name __MODULE__ @table __MODULE__ @counter_pos 1 + @update_counter_message {__MODULE__, :update_counter} def configure(options) do :gen_event.call(Logger, @name, {:configure, options}) @@ -125,7 +126,7 @@ defmodule Logger.Config do {:ok, old, state} end - def handle_info({__MODULE__, :update_counter}, state) do + def handle_info(@update_counter_message, state) do state = update_counter(state, true) schedule_update_counter(state) {:ok, state} @@ -186,7 +187,7 @@ defmodule Logger.Config do end defp schedule_update_counter({_, _, _, discard_period}) do - Process.send_after(self(), {__MODULE__, :update_counter}, discard_period) + Process.send_after(self(), @update_counter_message, discard_period) end ## Counter Helpers diff --git a/lib/logger/test/logger_test.exs b/lib/logger/test/logger_test.exs index 038f86851..9a22b7da3 100644 --- a/lib/logger/test/logger_test.exs +++ b/lib/logger/test/logger_test.exs @@ -442,16 +442,23 @@ defmodule LoggerTest do test "logs when discarding messages" do assert :ok = Logger.configure(discard_threshold: 5) - assert capture_log(fn -> - :sys.suspend(Logger) - - for _ <- 1..10 do - Logger.warn("warning!") - end - - :sys.resume(Logger) - Logger.flush() - end) =~ ~r"Attempted to log \d+ messages, which is above :discard_threshold" + log = + capture_log(fn -> + :sys.suspend(Logger) + for _ <- 1..10, do: Logger.warn("warning!") + :sys.resume(Logger) + Logger.flush() + + # This is a private message but the simplest way to test this functionality + send(Logger, {Logger.Config, :update_counter}) + + # We need to flush twice. Once for the send and another for the log in send + Logger.flush() + Logger.flush() + end) + + assert log =~ ~r"\[warn\] Attempted to log \d+ messages, which is above :discard_threshold" + assert log =~ ~r"\[warn\] Attempted to log \d+ messages, which is below :discard_threshold" after :sys.resume(Logger) assert :ok = Logger.configure(discard_threshold: 500) -- cgit v1.2.1