diff options
Diffstat (limited to 'src/couch_log/test')
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", |