Pārlūkot izejas kodu

Tests for error_logger:error_msg and friends

pull/4/head
Andrew Thompson pirms 14 gadiem
vecāks
revīzija
83ed81eca5
2 mainītis faili ar 105 papildinājumiem un 2 dzēšanām
  1. +1
    -1
      src/error_logger_lager_h.erl
  2. +104
    -1
      test/lager_test_backend.erl

+ 1
- 1
src/error_logger_lager_h.erl Parādīt failu

@ -113,7 +113,7 @@ format_offender(Off) ->
Name ->
%% regular supervisor
MFA = format_mfa(proplists:get_value(mfargs, Off)),
io_lib:format("with name ~w started with ~s at ~w", [Name, MFA, proplists:get_value(pid, Off)])
io_lib:format("~w started with ~s at ~w", [Name, MFA, proplists:get_value(pid, Off)])
end.
format_reason({'function not exported', [{M, F, A},MFA|_]}) ->

+ 104
- 1
test/lager_test_backend.erl Parādīt failu

@ -35,6 +35,8 @@ handle_call(count, #state{buffer=Buffer} = State) ->
{ok, length(Buffer), State};
handle_call(count_ignored, #state{ignored=Ignored} = State) ->
{ok, length(Ignored), State};
handle_call(flush, State) ->
{ok, ok, State#state{buffer=[], ignored=[]}};
handle_call(pop, #state{buffer=Buffer} = State) ->
case Buffer of
[] ->
@ -182,7 +184,7 @@ crash(Type) ->
spawn(fun() -> gen_server:call(crash, Type) end),
timer:sleep(100).
error_logger_redirect_test_() ->
error_logger_redirect_crash_test_() ->
{foreach,
fun() ->
application:load(lager),
@ -318,6 +320,107 @@ error_logger_redirect_test_() ->
]
}.
error_logger_redirect_test_() ->
{foreach,
fun() ->
application:load(lager),
application:set_env(lager, error_logger_redirect, true),
application:set_env(lager, handlers, [{?MODULE, [info]}]),
application:start(lager),
timer:sleep(100),
gen_event:call(lager_event, ?MODULE, flush)
end,
fun(_) ->
application:stop(lager),
application:unload(lager)
end,
[
{"error reports are printed",
fun() ->
error_logger:error_report([{this, is}, a, {silly, format}]),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[error] ~w this: is a silly: format", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"string error reports are printed",
fun() ->
error_logger:error_report("this is less silly"),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[error] ~w this is less silly", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"error messages are printed",
fun() ->
error_logger:error_msg("doom, doom has come upon you all"),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[error] ~w doom, doom has come upon you all", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"info reports are printed",
fun() ->
error_logger:info_report([{this, is}, a, {silly, format}]),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[info] ~w this: is a silly: format", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"string info reports are printed",
fun() ->
error_logger:info_report("this is less silly"),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[info] ~w this is less silly", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"error messages are printed",
fun() ->
error_logger:info_msg("doom, doom has come upon you all"),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[info] ~w doom, doom has come upon you all", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"application stop reports",
fun() ->
error_logger:info_report([{application, foo}, {exited, quittin_time}, {type, lazy}]),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[info] ~w Application foo exited with reason: quittin_time", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"supervisor reports",
fun() ->
error_logger:error_report(supervisor_report, [{errorContext, france}, {offender, [{name, mini_steve}, {mfargs, {a, b, [c]}}, {pid, bleh}]}, {reason, fired}, {supervisor, {local, steve}}]),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[error] ~w Supervisor steve had child mini_steve started with a:b(c) at bleh exit with reason fired in context france", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
},
{"supervisor_bridge reports",
fun() ->
error_logger:error_report(supervisor_report, [{errorContext, france}, {offender, [{mod, mini_steve}, {pid, bleh}]}, {reason, fired}, {supervisor, {local, steve}}]),
timer:sleep(100),
{_, _, Msg} = pop(),
Expected = lists:flatten(io_lib:format("[error] ~w Supervisor steve had child at module mini_steve at bleh exit with reason fired in context france", [self()])),
?assertEqual(Expected, lists:flatten(Msg))
end
}
%% TODO progress reports
]
}.
-endif.

Notiek ielāde…
Atcelt
Saglabāt