Skip to content

Commit 5abeb75

Browse files
authored
Merge pull request #10355 from rabbitmq/fix-logging_SUITE-after-move-of-rabbitmq_prelaunch-to-deps
Fix failures in `logging_SUITE` after the move of `rabbitmq_prelaunch`
2 parents 85dc3b1 + 9a02e3e commit 5abeb75

File tree

4 files changed

+59
-25
lines changed

4 files changed

+59
-25
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
!/deps/rabbitmq_peer_discovery_consul/
3737
!/deps/rabbitmq_peer_discovery_etcd/
3838
!/deps/rabbitmq_peer_discovery_k8s/
39+
!/deps/rabbitmq_prelaunch/
3940
!/deps/rabbitmq_prometheus/
4041
!/deps/rabbitmq_random_exchange/
4142
!/deps/rabbitmq_recent_history_exchange/

deps/rabbit/test/logging_SUITE.erl

+21-1
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,12 @@ groups() ->
107107

108108
init_per_suite(Config) ->
109109
rabbit_ct_helpers:log_environment(),
110-
rabbit_ct_helpers:run_setup_steps(Config).
110+
Config1 = rabbit_ct_helpers:run_setup_steps(Config),
111+
meck_rabbit_logger_std_h(),
112+
Config1.
111113

112114
end_per_suite(Config) ->
115+
unmeck_rabbit_logger_std_h(),
113116
Config.
114117

115118
init_per_group(syslog_output, Config) ->
@@ -186,6 +189,23 @@ end_per_testcase(Testcase, Config) ->
186189
end,
187190
rabbit_ct_helpers:testcase_finished(Config1, Testcase).
188191

192+
meck_rabbit_logger_std_h() ->
193+
ok = meck:new(rabbit_logger_std_h, [no_link, passthrough]),
194+
ok = meck:expect(
195+
rabbit_logger_std_h, io_put_chars,
196+
fun(DEVICE, DATA) ->
197+
%% We log to Common Test log as well.
198+
%% This is the file we use to check
199+
%% the message made it to
200+
%% stdout/stderr.
201+
ct:log("~ts", [DATA]),
202+
io:put_chars(DEVICE, DATA)
203+
end).
204+
205+
unmeck_rabbit_logger_std_h() ->
206+
?assert(meck:validate(rabbit_logger_std_h)),
207+
ok = meck:unload(rabbit_logger_std_h).
208+
189209
remove_all_handlers() ->
190210
_ = [logger:remove_handler(Id)
191211
|| #{id := Id} <- logger:get_handler_config()].

deps/rabbitmq_prelaunch/src/rabbit_logger_std_h.erl

+36-22
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,9 @@
2020
-module(rabbit_logger_std_h).
2121

2222
-ifdef(TEST).
23-
-define(io_put_chars(DEVICE, DATA), begin
24-
%% We log to Common Test log as well.
25-
%% This is the file we use to check
26-
%% the message made it to
27-
%% stdout/stderr.
28-
ct:log("~ts", [DATA]),
29-
io:put_chars(DEVICE, DATA)
30-
end).
31-
3223
-export([parse_date_spec/1, parse_day_of_week/2, parse_day_of_month/2, parse_hour/2, parse_minute/2]).
33-
-else.
34-
-define(io_put_chars(DEVICE, DATA), io:put_chars(DEVICE, DATA)).
3524
-endif.
25+
3626
-define(file_write(DEVICE, DATA), file:write(DEVICE, DATA)).
3727
-define(file_datasync(DEVICE), file:datasync(DEVICE)).
3828

@@ -50,6 +40,9 @@
5040
-export([log/2, adding_handler/1, removing_handler/1, changing_config/3,
5141
filter_config/1]).
5242

43+
%% Internal export to allow the use of meck.
44+
-export([io_put_chars/2]).
45+
5346
-define(DEFAULT_CALL_TIMEOUT, 5000).
5447

5548
%%%===================================================================
@@ -524,22 +517,40 @@ ensure_file(#{inode:=INode0,file_name:=FileName,modes:=Modes}=State) ->
524517
State#{last_check=>timestamp()};
525518
_ ->
526519
close_log_file(State),
527-
case file:open(FileName,Modes) of
528-
{ok,Fd} ->
529-
{ok,#file_info{inode=INode}} =
530-
file:read_file_info(FileName,[raw]),
531-
State#{fd=>Fd,inode=>INode,
532-
last_check=>timestamp(),
533-
synced=>true,sync_res=>ok};
534-
Error ->
535-
exit({could_not_reopen_file,Error})
536-
end
520+
{ok, Fd} = ensure_open(FileName, Modes),
521+
{ok,#file_info{inode=INode}} =
522+
file:read_file_info(FileName,[raw]),
523+
State#{fd=>Fd,inode=>INode,
524+
last_check=>timestamp(),
525+
synced=>true,sync_res=>ok}
537526
end;
538527
ensure_file(State) ->
539528
State.
540529

530+
ensure_open(Filename, Modes) ->
531+
case filelib:ensure_dir(Filename) of
532+
ok ->
533+
case file:open(Filename, Modes) of
534+
{ok, Fd} ->
535+
{ok, Fd};
536+
Error ->
537+
exit({could_not_reopen_file,Error})
538+
end;
539+
Error ->
540+
exit({could_not_create_dir_for_file,Error})
541+
end.
542+
543+
write_to_dev(Bin,#{dev:=standard_io}=State) ->
544+
try
545+
?MODULE:io_put_chars(user, Bin)
546+
catch _E:_R ->
547+
?MODULE:io_put_chars(
548+
standard_error, "Failed to write log message to stdout, trying stderr\n"),
549+
?MODULE:io_put_chars(standard_error, Bin)
550+
end,
551+
State;
541552
write_to_dev(Bin,#{dev:=DevName}=State) ->
542-
?io_put_chars(DevName, Bin),
553+
?MODULE:io_put_chars(DevName, Bin),
543554
State;
544555
write_to_dev(Bin, State) ->
545556
State1 = #{fd:=Fd} = maybe_ensure_file(State),
@@ -548,6 +559,9 @@ write_to_dev(Bin, State) ->
548559
maybe_notify_error(write,Result,State2),
549560
State2#{synced=>false,write_res=>Result}.
550561

562+
io_put_chars(DevName, Bin) ->
563+
io:put_chars(DevName, Bin).
564+
551565
sync_dev(#{synced:=false}=State) ->
552566
State1 = #{fd:=Fd} = maybe_ensure_file(State),
553567
Result = ?file_datasync(Fd),

deps/rabbitmq_prelaunch/src/rabbit_prelaunch_early_logging.erl

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@
2525
-export([filter_log_event/2]).
2626
-export([filter_discarded_message/2]).
2727

28-
-ifdef(TEST).
28+
%% For internal testing purpose only.
2929
-export([levels/0,
3030
determine_prefix/1]).
31-
-endif.
3231

3332
-define(CONFIGURED_KEY, {?MODULE, configured}).
3433

0 commit comments

Comments
 (0)