summaryrefslogtreecommitdiff
path: root/src/couch_log/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/couch_log/test')
-rw-r--r--src/couch_log/test/eunit/couch_log_config_test.erl18
-rw-r--r--src/couch_log/test/eunit/couch_log_formatter_test.erl18
-rw-r--r--src/couch_log/test/eunit/couch_log_writer_ets.erl7
-rw-r--r--src/couch_log/test/eunit/couch_log_writer_syslog_test.erl40
4 files changed, 80 insertions, 3 deletions
diff --git a/src/couch_log/test/eunit/couch_log_config_test.erl b/src/couch_log/test/eunit/couch_log_config_test.erl
index df7cdf977..3cf56b003 100644
--- a/src/couch_log/test/eunit/couch_log_config_test.erl
+++ b/src/couch_log/test/eunit/couch_log_config_test.erl
@@ -20,6 +20,7 @@
couch_log_config_test_() ->
{setup, fun couch_log_test_util:start/0, fun couch_log_test_util:stop/1, [
?T(check_level),
+ ?T(check_report_level),
?T(check_max_message_size),
?T(check_bad_level),
?T(check_bad_max_message_size),
@@ -29,6 +30,23 @@ couch_log_config_test_() ->
?T(check_bad_filter_fields)
]}.
+check_report_level() ->
+ % Default report_level is info
+ ?assertEqual(info, couch_log_config:get(report_level)),
+ couch_log_test_util:with_config_listener(fun() ->
+ config:set("log", "report_level", "emerg"),
+ couch_log_test_util:wait_for_config(),
+ ?assertEqual(emergency, couch_log_config:get(report_level)),
+
+ config:set("log", "report_level", "debug"),
+ couch_log_test_util:wait_for_config(),
+ ?assertEqual(debug, couch_log_config:get(report_level)),
+
+ config:delete("log", "report_level"),
+ couch_log_test_util:wait_for_config(),
+ ?assertEqual(info, couch_log_config:get(report_level))
+ end).
+
check_level() ->
% Default level is info
?assertEqual(info, couch_log_config:get(level)),
diff --git a/src/couch_log/test/eunit/couch_log_formatter_test.erl b/src/couch_log/test/eunit/couch_log_formatter_test.erl
index a4de74990..29d5497f6 100644
--- a/src/couch_log/test/eunit/couch_log_formatter_test.erl
+++ b/src/couch_log/test/eunit/couch_log_formatter_test.erl
@@ -25,6 +25,24 @@ truncate_test() ->
Entry = couch_log_formatter:format(info, self(), Msg),
?assert(length(Entry#log_entry.msg) =< 16000).
+format_report_etoolong_test() ->
+ Payload = lists:flatten(lists:duplicate(1048576, "a")),
+ Resp = couch_log_formatter:format_report(self(), report123, #{
+ msg => Payload
+ }),
+ ?assertEqual({error, emsgtoolong}, Resp).
+
+format_report_test() ->
+ {ok, Entry} = couch_log_formatter:format_report(self(), report123, #{
+ foo => 123,
+ bar => "barStr",
+ baz => baz
+ }),
+ % NOTE: this currently hardcodes the ordering of the keys, however, map
+ % key order is not guaranteed and this may break.
+ Formatted = "[foo=123 baz=\"baz\" bar=\"barStr\"]",
+ ?assertEqual(Formatted, lists:flatten(Entry#log_entry.msg)).
+
format_reason_test() ->
MsgFmt = "This is a reason: ~r",
Reason = {foo, [{x, k, 3}, {c, d, 2}]},
diff --git a/src/couch_log/test/eunit/couch_log_writer_ets.erl b/src/couch_log/test/eunit/couch_log_writer_ets.erl
index 7ddb9f39e..385aa9676 100644
--- a/src/couch_log/test/eunit/couch_log_writer_ets.erl
+++ b/src/couch_log/test/eunit/couch_log_writer_ets.erl
@@ -30,9 +30,10 @@ terminate(_, _St) ->
ok.
write(Entry0, St) ->
- Entry = Entry0#log_entry{
- msg = lists:flatten(Entry0#log_entry.msg),
- time_stamp = lists:flatten(Entry0#log_entry.time_stamp)
+ Entry1 = couch_log_util:maybe_format_type(Entry0),
+ Entry = Entry1#log_entry{
+ msg = lists:flatten(Entry1#log_entry.msg),
+ time_stamp = lists:flatten(Entry1#log_entry.time_stamp)
},
Ignored = application:get_env(couch_log, ignored_pids, []),
case lists:member(Entry#log_entry.pid, Ignored) of
diff --git a/src/couch_log/test/eunit/couch_log_writer_syslog_test.erl b/src/couch_log/test/eunit/couch_log_writer_syslog_test.erl
index 5a3f89520..19d2826ec 100644
--- a/src/couch_log/test/eunit/couch_log_writer_syslog_test.erl
+++ b/src/couch_log/test/eunit/couch_log_writer_syslog_test.erl
@@ -31,6 +31,12 @@ couch_log_writer_syslog_test_() ->
[{gen_udp, [unstick]}],
fun check_udp_send/0
)
+ end,
+ fun() ->
+ couch_log_test_util:with_meck(
+ [{gen_udp, [unstick]}],
+ fun check_format/0
+ )
end
]}.
@@ -81,6 +87,40 @@ check_udp_send() ->
?assert(meck:called(gen_udp, close, 1)),
?assert(meck:validate(gen_udp)).
+check_format() ->
+ meck:expect(gen_udp, open, 1, {ok, socket}),
+ meck:expect(gen_udp, send, 4, ok),
+ meck:expect(gen_udp, close, fun(socket) -> ok end),
+ config:set("log", "syslog_host", "localhost"),
+ config:set("log", "syslog_enterprise_number", "12345"),
+ try
+ Entry = #log_entry{
+ level = report,
+ pid = list_to_pid("<0.1.0>"),
+ msg = ["[", "foo=1", "]"],
+ msg_id = "msg_id",
+ time_stamp = "time_stamp",
+ type = report123
+ },
+ {ok, St} = ?WRITER:init(),
+ {ok, NewSt} = ?WRITER:write(Entry, St),
+ ok = ?WRITER:terminate(stop, NewSt)
+ after
+ config:delete("log", "syslog_host")
+ end,
+
+ ?assert(meck:called(gen_udp, open, 1)),
+ Packet = lists:flatten(meck:capture(first, gen_udp, send, '_', 4)),
+ [SeverityAndVsn, TS, _Host, AppId, Pid, MsgId, _ | Rest] = string:split(Packet, " ", all),
+ ?assertEqual("<150>1", SeverityAndVsn),
+ ?assertEqual("time_stamp", TS),
+ ?assertEqual("couchdb", AppId),
+ ?assertEqual("msg_id", MsgId),
+ ?assert(is_pid(catch list_to_pid(Pid))),
+ ?assertEqual("[report123-DB@12345 foo=1]\n", string:join(Rest, " ")),
+ ?assert(meck:called(gen_udp, close, 1)),
+ ?assert(meck:validate(gen_udp)).
+
facility_test() ->
Names = [
"kern",