diff options
author | Peter Andersson <[email protected]> | 2013-06-27 23:29:16 +0200 |
---|---|---|
committer | Peter Andersson <[email protected]> | 2013-06-27 23:29:16 +0200 |
commit | 8a0a09ef168210326b29273b20520aee339aaf40 (patch) | |
tree | 8708c9dec7e6e94e563a2aaead204777c7108510 | |
parent | 4c3b306184d886678d08949bcbe0186af8f984b1 (diff) | |
download | otp-8a0a09ef168210326b29273b20520aee339aaf40.tar.gz otp-8a0a09ef168210326b29273b20520aee339aaf40.tar.bz2 otp-8a0a09ef168210326b29273b20520aee339aaf40.zip |
Allow calls to ct:pal and ct:print even if CT is not running
Also make sure calls to ct:log and ct:pal don't cause crash
if test_server is not running (could happen during startup or
shutdown of CT).
OTP-11176
-rw-r--r-- | lib/common_test/src/ct_logs.erl | 12 | ||||
-rw-r--r-- | lib/common_test/src/ct_util.erl | 15 |
2 files changed, 23 insertions, 4 deletions
diff --git a/lib/common_test/src/ct_logs.erl b/lib/common_test/src/ct_logs.erl index f5355bfefe..d80de889ca 100644 --- a/lib/common_test/src/ct_logs.erl +++ b/lib/common_test/src/ct_logs.erl @@ -446,6 +446,8 @@ tc_print(Category,Importance,Format,Args) -> ct_util:get_verbosity('$unspecified'); {error,bad_invocation} -> ?MAX_VERBOSITY; + {error,_Failure} -> + ?MAX_VERBOSITY; Val -> Val end, @@ -3072,4 +3074,12 @@ unexpected_io(Pid,ct_internal,List,#logger_state{ct_log_fd=Fd}=State) -> unexpected_io(Pid,_Category,List,State) -> IoFun = create_io_fun(Pid,State), Data = io_lib:format("~ts", [lists:foldl(IoFun, [], List)]), - test_server_io:print_unexpected(Data). + %% if unexpected io comes in during startup or shutdown, test_server + %% might not be running - if so (noproc exit), simply ignore the printout + try test_server_io:print_unexpected(Data) of + _ -> + ok + catch + _:{noproc,_} -> ok; + _:Reason -> exit(Reason) + end. diff --git a/lib/common_test/src/ct_util.erl b/lib/common_test/src/ct_util.erl index 68e76c2396..abda87c2cd 100644 --- a/lib/common_test/src/ct_util.erl +++ b/lib/common_test/src/ct_util.erl @@ -286,14 +286,23 @@ get_start_dir() -> %% handle verbosity outside ct_util_server (let the client read %% the verbosity table) to avoid possible deadlock situations set_verbosity(Elem = {_Category,_Level}) -> - ets:insert(?verbosity_table, Elem), - ok. + try ets:insert(?verbosity_table, Elem) of + _ -> + ok + catch + _:Reason -> + {error,Reason} + end. + get_verbosity(Category) -> - case ets:lookup(?verbosity_table, Category) of + try ets:lookup(?verbosity_table, Category) of [{Category,Level}] -> Level; _ -> undefined + catch + _:Reason -> + {error,Reason} end. loop(Mode,TestData,StartDir) -> |