%% %% %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), %% Nlength 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), %% Nlength 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.