blob: 17777304fac65c511cb7fada4d7702ae5beff3a7 [file] [log] [blame]
% Licensed under the Apache License, Version 2.0 (the "License"); you may not
% use this file except in compliance with the License. You may obtain a copy of
% the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
% License for the specific language governing permissions and limitations under
% the License.
-module(couch_log_test).
-include_lib("couch_log/include/couch_log.hrl").
-include_lib("eunit/include/eunit.hrl").
couch_log_test_() ->
{setup,
fun couch_log_test_util:start/0,
fun couch_log_test_util:stop/1,
gen() ++ [fun check_set_level/0]
}.
check_set_level() ->
couch_log:set_level(crit),
?assertEqual("crit", config:get("log", "level")).
levels() ->
[
debug,
info,
notice,
warning,
error,
critical,
alert,
emergency,
none
].
gen() ->
lists:map(fun(L) ->
Name = "Test log level: " ++ couch_log_util:level_to_string(L),
{Name, fun() -> check_levels(L, levels()) end}
end, levels() -- [none]).
check_levels(_, []) ->
ok;
check_levels(TestLevel, [CfgLevel | RestLevels]) ->
TestInt = couch_log_util:level_to_integer(TestLevel),
CfgInt = couch_log_util:level_to_integer(CfgLevel),
Pid = self(),
Msg = new_msg(),
LastKey = couch_log_test_util:last_log_key(),
couch_log_test_util:with_level(CfgLevel, fun() ->
couch_log:TestLevel(Msg, []),
case TestInt >= CfgInt of
true ->
?assertMatch(
#log_entry{
level = TestLevel,
pid = Pid,
msg = Msg
},
couch_log_test_util:last_log()
);
false ->
?assertEqual(LastKey, couch_log_test_util:last_log_key())
end
end),
check_levels(TestLevel, RestLevels).
new_msg() ->
random:seed(os:timestamp()),
Bin = list_to_binary([random:uniform(255) || _ <- lists:seq(1, 16)]),
couch_util:to_hex(Bin).