소스 검색

Tests for the gen_event handler watcher

pull/6/head
Andrew Thompson 13 년 전
부모
커밋
cde3eecf1a
1개의 변경된 파일62개의 추가작업 그리고 0개의 파일을 삭제
  1. +62
    -0
      src/lager_handler_watcher.erl

+ 62
- 0
src/lager_handler_watcher.erl 파일 보기

@ -23,6 +23,10 @@
-behaviour(gen_server).
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").
-endif.
%% callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2,
code_change/3]).
@ -87,3 +91,61 @@ install_handler(Event, Module, Config) ->
erlang:send_after(5000, self(), reinstall_handler)
end.
-ifdef(TEST).
from_now(Seconds) ->
{Mega, Secs, Micro} = os:timestamp(),
{Mega, Secs + Seconds, Micro}.
reinstall_on_initial_failure_test_() ->
{timeout, 60000,
[
fun() ->
error_logger:tty(false),
application:load(lager),
application:set_env(lager, handlers, [{lager_test_backend, info}, {lager_crash_backend, [from_now(2), undefined]}]),
application:set_env(lager, error_logger_redirect, false),
application:unset_env(lager, crash_log),
application:start(lager),
?assertEqual(1, lager_test_backend:count()),
{_Level, _Time, [_, _, Message]} = lager_test_backend:pop(),
?assertEqual("Lager failed to install handler lager_crash_backend into lager_event, retrying later", Message),
?assertEqual(0, lager_test_backend:count()),
timer:sleep(6000),
?assertEqual(0, lager_test_backend:count()),
?assert(lists:member(lager_crash_backend, gen_event:which_handlers(lager_event))),
application:stop(lager),
application:unload(lager),
error_logger:tty(true)
end
]
}.
reinstall_on_runtime_failure_test_() ->
{timeout, 60000,
[
fun() ->
error_logger:tty(false),
application:load(lager),
application:set_env(lager, handlers, [{lager_test_backend, info}, {lager_crash_backend, [undefined, from_now(5)]}]),
application:set_env(lager, error_logger_redirect, false),
application:unset_env(lager, crash_log),
application:start(lager),
?assertEqual(0, lager_test_backend:count()),
?assert(lists:member(lager_crash_backend, gen_event:which_handlers(lager_event))),
timer:sleep(6000),
?assertEqual(2, lager_test_backend:count()),
{_Level, _Time, [_, _, Message]} = lager_test_backend:pop(),
?assertEqual("Lager event handler lager_crash_backend exited with reason crash", Message),
{_Level2, _Time2, [_, _, Message2]} = lager_test_backend:pop(),
?assertEqual("Lager failed to install handler lager_crash_backend into lager_event, retrying later", Message2),
?assertEqual(false, lists:member(lager_crash_backend, gen_event:which_handlers(lager_event))),
application:stop(lager),
application:unload(lager),
error_logger:tty(true)
end
]
}.
-endif.

불러오는 중...
취소
저장