diff options
Diffstat (limited to 'lib/common_test/test/ct_keep_logs_SUITE.erl')
-rw-r--r-- | lib/common_test/test/ct_keep_logs_SUITE.erl | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/lib/common_test/test/ct_keep_logs_SUITE.erl b/lib/common_test/test/ct_keep_logs_SUITE.erl new file mode 100644 index 0000000000..83b7963d7d --- /dev/null +++ b/lib/common_test/test/ct_keep_logs_SUITE.erl @@ -0,0 +1,199 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2009-2017. All Rights Reserved. +%% +%% 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. +%% +%% %CopyrightEnd% +%% + +%%%------------------------------------------------------------------- +%%% File: ct_keep_logs_SUITE +%%% +%%% Description: +%%% Test the 'keep_logs' option +%%% +%%%------------------------------------------------------------------- +-module(ct_keep_logs_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). +-include_lib("common_test/include/ct_event.hrl"). + +-define(eh, ct_test_support_eh). + +%%-------------------------------------------------------------------- +%% TEST SERVER CALLBACK FUNCTIONS +%%-------------------------------------------------------------------- + +init_per_suite(Config0) -> + ct_test_support:init_per_suite(Config0). + +end_per_suite(Config) -> + ct_test_support:end_per_suite(Config). + +init_per_testcase(TestCase, Config) -> + ct_test_support:init_per_testcase(TestCase, Config). + +end_per_testcase(TestCase, Config) -> + ct_test_support:end_per_testcase(TestCase, Config). + +suite() -> [{ct_hooks,[ts_install_cth]}]. + +all() -> + [ + keep_logs, + refresh_logs + ]. + +%%-------------------------------------------------------------------- +%% TEST CASES +%%-------------------------------------------------------------------- + +%% Test the keep_logs option with normal common_test runs +keep_logs(Config) -> + DataDir = ?config(data_dir, Config), + Suite = filename:join(DataDir, "keep_logs_SUITE"), + Opts0 = ct_test_support:get_opts(Config), + Opts = [{suite,Suite},{label,keep_logs} | Opts0], + + LogDir=?config(logdir,Opts), + KeepLogsDir = create_dir(filename:join(LogDir,"keep_logs-")), + Opts1 = lists:keyreplace(logdir,1,Opts,{logdir,KeepLogsDir}), + ct:log("New LogDir = ~ts", [KeepLogsDir]), + + %% Create 6 ct_run.* log directories + [ok = ct_test_support:run(Opts1, Config) || _ <- lists:seq(1,3)], + + %% Verify the number of directories + WC = filename:join(KeepLogsDir,"ct_run.ct@*"), + L1 = filelib:wildcard(WC), + 6 = length(L1), + + %% Keep all logs + {1,0,{0,0}}=ct_test_support:run_ct_run_test([{keep_logs,all}|Opts1], Config), + L2 = filelib:wildcard(WC), + 7 = length(L2), + 0 = ct_test_support:run_ct_script_start([{keep_logs,all}|Opts1], Config), + L3 = filelib:wildcard(WC), + 8 = length(L3), + + %% N<length of list + {1,0,{0,0}}=ct_test_support:run_ct_run_test([{keep_logs,7}|Opts1], Config), + L4 = filelib:wildcard(WC), + 7 = length(L4), + 0 = ct_test_support:run_ct_script_start([{keep_logs,6}|Opts1], Config), + L5 = filelib:wildcard(WC), + 6 = length(L5), + + %% N>length of list + {1,0,{0,0}}=ct_test_support:run_ct_run_test([{keep_logs,10}|Opts1], Config), + L6 = filelib:wildcard(WC), + 7 = length(L6), + 0 = ct_test_support:run_ct_script_start([{keep_logs,10}|Opts1], Config), + L7 = filelib:wildcard(WC), + 8 = length(L7), + + %% N==length of list + {1,0,{0,0}}=ct_test_support:run_ct_run_test([{keep_logs,8}|Opts1], Config), + L8 = filelib:wildcard(WC), + 8 = length(L8), + 0 = ct_test_support:run_ct_script_start([{keep_logs,8}|Opts1], Config), + L9 = filelib:wildcard(WC), + 8 = length(L9), + + %% N==length of list + current run + {1,0,{0,0}}=ct_test_support:run_ct_run_test([{keep_logs,9}|Opts1], Config), + L10 = filelib:wildcard(WC), + 9 = length(L10), + 0 = ct_test_support:run_ct_script_start([{keep_logs,10}|Opts1], Config), + L11 = filelib:wildcard(WC), + 10 = length(L11), + + {ok,Content} = file:list_dir(KeepLogsDir), + ct:log("Deleting dir: ~p~nContent: ~p~n",[KeepLogsDir,Content]), + ct_test_support:rm_dir(KeepLogsDir). + +%% Test the keep_logs option togwther with the refresh_logs option +refresh_logs(Config) -> + DataDir = ?config(data_dir, Config), + Suite = filename:join(DataDir, "keep_logs_SUITE"), + Opts0 = ct_test_support:get_opts(Config), + LogDir=?config(logdir,Opts0), + KeepLogsDir = create_dir(filename:join(LogDir,"refresh_logs-")), + Opts1 = lists:keyreplace(logdir,1,Opts0,{logdir,KeepLogsDir}), + ct:log("New LogDir = ~ts", [KeepLogsDir]), + + %% Create 6 ct_run.* log directories + SuiteOpts = [{suite,Suite},{label,refresh_logs} | Opts1], + [ok = ct_test_support:run(SuiteOpts, Config) || _ <- lists:seq(1,3)], + + %% Verify the number of directories + WC = filename:join(KeepLogsDir,"ct_run.ct@*"), + L1 = filelib:wildcard(WC), + 6 = length(L1), + + RefreshOpts = [{refresh_logs,KeepLogsDir},{label,refresh_logs} | Opts1], + + %% Keep all logs (note that refresh_logs option prevents the + %% creation of a new log directory for the current run) + done = ct_test_support:run_ct_run_test([{keep_logs,all}|RefreshOpts], Config), + L2 = filelib:wildcard(WC), + 6 = length(L2), + 0 = ct_test_support:run_ct_script_start([{keep_logs,all}|RefreshOpts],Config), + L3 = filelib:wildcard(WC), + 6 = length(L3), + + %% N<length of list + done = ct_test_support:run_ct_run_test([{keep_logs,5}|RefreshOpts], Config), + L5 = filelib:wildcard(WC), + 5 = length(L5), + 0 = ct_test_support:run_ct_script_start([{keep_logs,4}|RefreshOpts], Config), + L6 = filelib:wildcard(WC), + 4 = length(L6), + + %% N>length of list + done = ct_test_support:run_ct_run_test([{keep_logs,5}|RefreshOpts], Config), + L7 = filelib:wildcard(WC), + 4 = length(L7), + 0 = ct_test_support:run_ct_script_start([{keep_logs,5}|RefreshOpts], Config), + L8 = filelib:wildcard(WC), + 4 = length(L8), + + %% N==length of list + done = ct_test_support:run_ct_run_test([{keep_logs,4}|RefreshOpts], Config), + L9 = filelib:wildcard(WC), + 4 = length(L9), + 0 = ct_test_support:run_ct_script_start([{keep_logs,4}|RefreshOpts], Config), + L10 = filelib:wildcard(WC), + 4 = length(L10), + + {ok,Content} = file:list_dir(KeepLogsDir), + ct:log("Deleting dir: ~p~nContent: ~p~n",[KeepLogsDir,Content]), + ct_test_support:rm_dir(KeepLogsDir). + +%%%----------------------------------------------------------------- +%%% Internal +create_dir(Prefix) -> + I = erlang:unique_integer([positive]), + Dir = Prefix ++ integer_to_list(I), + case filelib:is_dir(Dir) of + true -> + %% Try again + create_dir(Prefix); + false -> + ok = file:make_dir(Dir), + Dir + end. |