diff options
| author | Siri Hansen <[email protected]> | 2017-03-14 11:18:46 +0100 | 
|---|---|---|
| committer | Siri Hansen <[email protected]> | 2017-03-20 11:09:24 +0100 | 
| commit | d7101fd2c2ce8bf609670043585c57010a3707c6 (patch) | |
| tree | 695b717cfe82bd0729d13a19cb5b923925486f13 /lib/common_test/test | |
| parent | 35e38c97f5f731e3b1689b0740efa305bac9d16e (diff) | |
| download | otp-d7101fd2c2ce8bf609670043585c57010a3707c6.tar.gz otp-d7101fd2c2ce8bf609670043585c57010a3707c6.tar.bz2 otp-d7101fd2c2ce8bf609670043585c57010a3707c6.zip  | |
[ct] Add 'keep_logs' option
If setting the value for this option to an integer, N, common_test
will remove all ct_run.* directories in the current log directory,
except the N newest.
The default value for the 'keep_logs' option is 'all', which means that
no logs will be deleted.
'keep_logs' can be used in combination with refresh_logs, or in a normal
common_test test run.
Diffstat (limited to 'lib/common_test/test')
| -rw-r--r-- | lib/common_test/test/Makefile | 3 | ||||
| -rw-r--r-- | lib/common_test/test/ct_keep_logs_SUITE.erl | 186 | ||||
| -rw-r--r-- | lib/common_test/test/ct_keep_logs_SUITE_data/keep_logs_SUITE.erl | 32 | ||||
| -rw-r--r-- | lib/common_test/test/ct_test_support.erl | 3 | 
4 files changed, 223 insertions, 1 deletions
diff --git a/lib/common_test/test/Makefile b/lib/common_test/test/Makefile index 2f0fc2e05a..b8fb678dbd 100644 --- a/lib/common_test/test/Makefile +++ b/lib/common_test/test/Makefile @@ -71,7 +71,8 @@ MODULES= \  	test_server_test_lib \  	ct_release_test_SUITE \  	ct_log_SUITE \ -        ct_SUITE +        ct_SUITE \ +	ct_keep_logs_SUITE  ERL_FILES= $(MODULES:%=%.erl)  HRL_FILES= test_server_test_lib.hrl 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..34bfaaa97a --- /dev/null +++ b/lib/common_test/test/ct_keep_logs_SUITE.erl @@ -0,0 +1,186 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2009-2016. 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 = filename:join(LogDir,unique_name("keep_logs-")), +    ok = file:make_dir(KeepLogsDir), +    Opts1 = lists:keyreplace(logdir,1,Opts,{logdir,KeepLogsDir}), +    ct:log("New LogDir = ~s", [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). + +%% 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 = filename:join(LogDir,unique_name("refresh_logs-")), +    ok = file:make_dir(KeepLogsDir), +    Opts1 = lists:keyreplace(logdir,1,Opts0,{logdir,KeepLogsDir}), +    ct:log("New LogDir = ~s", [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. +%%%----------------------------------------------------------------- +%%% Internal +unique_name(Prefix) -> +    I = erlang:unique_integer([positive]), +    Prefix ++ integer_to_list(I). diff --git a/lib/common_test/test/ct_keep_logs_SUITE_data/keep_logs_SUITE.erl b/lib/common_test/test/ct_keep_logs_SUITE_data/keep_logs_SUITE.erl new file mode 100644 index 0000000000..2bccae564b --- /dev/null +++ b/lib/common_test/test/ct_keep_logs_SUITE_data/keep_logs_SUITE.erl @@ -0,0 +1,32 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2009-2016. 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% +%% +-module(keep_logs_SUITE). + +-compile(export_all). + +-include_lib("common_test/include/ct.hrl"). + +suite() -> +    []. +all() -> +    [test_case]. + +test_case(_Config) -> +    ok. diff --git a/lib/common_test/test/ct_test_support.erl b/lib/common_test/test/ct_test_support.erl index 05a452b99d..06d591871f 100644 --- a/lib/common_test/test/ct_test_support.erl +++ b/lib/common_test/test/ct_test_support.erl @@ -351,6 +351,9 @@ check_result(CtRunTestResult,ExitStatus,Opts)      catch _:_ ->  	    {error,{unexpected_return_value,{CtRunTestResult,ExitStatus}}}      end; +check_result(done,0,_Opts) -> +    %% refresh_logs return +    ok;  check_result(CtRunTestResult,ExitStatus,_Opts) ->      {error,{unexpected_return_value,{CtRunTestResult,ExitStatus}}}.  | 
