From 6b9f8b54324891f2d7fed236cb2860896215d755 Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Thu, 28 Jul 2011 19:12:37 +0200 Subject: Add priority functionality and tests for ct hooks Priority allows the user of ct hooks to specify which order the hooks should execute in. The priority of a hook is specified when installing the hook, and stays the same for both pre and post hooks --- lib/common_test/test/ct_hooks_SUITE.erl | 76 ++++++++++++++++++++-- .../cth/tests/ct_cth_prio_SUITE.erl | 58 +++++++++++++++++ 2 files changed, 130 insertions(+), 4 deletions(-) create mode 100644 lib/common_test/test/ct_hooks_SUITE_data/cth/tests/ct_cth_prio_SUITE.erl (limited to 'lib/common_test/test') diff --git a/lib/common_test/test/ct_hooks_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE.erl index 8574d7aabc..16a95461e6 100644 --- a/lib/common_test/test/ct_hooks_SUITE.erl +++ b/lib/common_test/test/ct_hooks_SUITE.erl @@ -83,7 +83,7 @@ all(suite) -> fail_post_suite_cth, skip_pre_suite_cth, skip_post_suite_cth, recover_post_suite_cth, update_config_cth, state_update_cth, options_cth, same_id_cth, - fail_n_skip_with_minimal_cth + fail_n_skip_with_minimal_cth, prio_cth ] ) . @@ -209,6 +209,10 @@ fail_n_skip_with_minimal_cth(Config) when is_list(Config) -> do_test(fail_n_skip_with_minimal_cth, "ct_cth_fail_one_skip_one_SUITE.erl", [minimal_terminate_cth],Config). +prio_cth(Config) when is_list(Config) -> + do_test(prio_cth, "ct_cth_prio_SUITE.erl", + [{empty_cth,[1000],1000},{empty_cth,[900],900}],Config). + %%%----------------------------------------------------------------- %%% HELP FUNCTIONS %%%----------------------------------------------------------------- @@ -296,9 +300,9 @@ test_events(two_empty_cth) -> {?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,cth,{'_',id,[[]]}}, - {?eh,cth,{'_',init,['_',[]]}}, {?eh,cth,{'_',id,[[]]}}, {?eh,cth,{'_',init,['_',[]]}}, + {?eh,cth,{'_',init,['_',[]]}}, {?eh,tc_start,{ct_cth_empty_SUITE,init_per_suite}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, @@ -365,9 +369,9 @@ test_events(minimal_and_maximal_cth) -> [ {?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,cth,{'_',id,[[]]}}, {negative,{?eh,cth,{'_',id,['_',[]]}}, {?eh,cth,{'_',init,['_',[]]}}}, - {?eh,cth,{'_',id,[[]]}}, {?eh,cth,{'_',init,['_',[]]}}, {?eh,tc_start,{ct_cth_empty_SUITE,init_per_suite}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, @@ -954,8 +958,8 @@ test_events(same_id_cth) -> {?eh,start_logging,{'DEF','RUNDIR'}}, {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, {?eh,cth,{'_',id,[[]]}}, - {?eh,cth,{'_',init,[same_id_cth,[]]}}, {?eh,cth,{'_',id,[[]]}}, + {?eh,cth,{'_',init,[same_id_cth,[]]}}, {?eh,tc_start,{ct_cth_empty_SUITE,init_per_suite}}, {?eh,cth,{'_',pre_init_per_suite,[ct_cth_empty_SUITE,'$proplist',[]]}}, {negative, @@ -1001,6 +1005,70 @@ test_events(fail_n_skip_with_minimal_cth) -> {?eh,stop_logging,[]} ]; +test_events(prio_cth) -> + [{?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + + {?eh,tc_start,{ct_cth_prio_SUITE,init_per_suite}}, + {?eh,cth,{'_',pre_init_per_suite,['_','_',[800]]}}, + {?eh,cth,{'_',pre_init_per_suite,['_','_',[900]]}}, + {?eh,cth,{'_',pre_init_per_suite,['_','_',[1000]]}}, + {?eh,cth,{'_',post_init_per_suite,['_','_','_',[700]]}}, + {?eh,cth,{'_',post_init_per_suite,['_','_','_',[800]]}}, + {?eh,cth,{'_',post_init_per_suite,['_','_','_',[900]]}}, + {?eh,cth,{'_',post_init_per_suite,['_','_','_',[1000]]}}, + {?eh,tc_done,{ct_cth_prio_SUITE,init_per_suite,ok}}, + + + [{?eh,tc_start,{ct_cth_prio_SUITE,{init_per_group,'_',[]}}}, + {?eh,cth,{'_',pre_init_per_group, ['_','_',[700]]}}, + {?eh,cth,{'_',pre_init_per_group, ['_','_',[800]]}}, + {?eh,cth,{'_',pre_init_per_group, ['_','_',[900]]}}, + {?eh,cth,{'_',pre_init_per_group, ['_','_',[1000]]}}, + {?eh,cth,{'_',post_init_per_group, ['_','_','_',[600]]}}, + {?eh,cth,{'_',post_init_per_group, ['_','_','_',[700]]}}, + {?eh,cth,{'_',post_init_per_group, ['_','_','_',[800]]}}, + {?eh,cth,{'_',post_init_per_group, ['_','_','_',[900]]}}, + {?eh,cth,{'_',post_init_per_group, ['_','_','_',[1000]]}}, + {?eh,tc_done,{ct_cth_prio_SUITE,{init_per_group,'_',[]},ok}}, + + {?eh,tc_start,{ct_cth_prio_SUITE,test_case}}, + {?eh,cth,{'_',pre_init_per_testcase, ['_','_',[600]]}}, + {?eh,cth,{'_',pre_init_per_testcase, ['_','_',[700]]}}, + {?eh,cth,{'_',pre_init_per_testcase, ['_','_',[800]]}}, + {?eh,cth,{'_',pre_init_per_testcase, ['_','_',[900]]}}, + {?eh,cth,{'_',pre_init_per_testcase, ['_','_',[1000]]}}, + {?eh,cth,{'_',post_end_per_testcase, ['_','_','_',[600]]}}, + {?eh,cth,{'_',post_end_per_testcase, ['_','_','_',[700]]}}, + {?eh,cth,{'_',post_end_per_testcase, ['_','_','_',[800]]}}, + {?eh,cth,{'_',post_end_per_testcase, ['_','_','_',[900]]}}, + {?eh,cth,{'_',post_end_per_testcase, ['_','_','_',[1000]]}}, + {?eh,tc_done,{ct_cth_prio_SUITE,test_case,ok}}, + + {?eh,tc_start,{ct_cth_prio_SUITE,{end_per_group,'_',[]}}}, + {?eh,cth,{'_',pre_end_per_group, ['_','_',[600]]}}, + {?eh,cth,{'_',pre_end_per_group, ['_','_',[700]]}}, + {?eh,cth,{'_',pre_end_per_group, ['_','_',[800]]}}, + {?eh,cth,{'_',pre_end_per_group, ['_','_',[900]]}}, + {?eh,cth,{'_',pre_end_per_group, ['_','_',[1000]]}}, + {?eh,cth,{'_',post_end_per_group, ['_','_','_',[700]]}}, + {?eh,cth,{'_',post_end_per_group, ['_','_','_',[800]]}}, + {?eh,cth,{'_',post_end_per_group, ['_','_','_',[900]]}}, + {?eh,cth,{'_',post_end_per_group, ['_','_','_',[1000]]}}, + {?eh,tc_done,{ct_cth_prio_SUITE,{end_per_group,'_',[]},ok}}], + + {?eh,tc_start,{ct_cth_prio_SUITE,end_per_suite}}, + {?eh,cth,{'_',pre_end_per_suite,['_','_',[800]]}}, + {?eh,cth,{'_',pre_end_per_suite,['_','_',[900]]}}, + {?eh,cth,{'_',pre_end_per_suite,['_','_',[1000]]}}, + {?eh,cth,{'_',post_end_per_suite,['_','_','_',[800]]}}, + {?eh,cth,{'_',post_end_per_suite,['_','_','_',[900]]}}, + {?eh,cth,{'_',post_end_per_suite,['_','_','_',[1000]]}}, + {?eh,tc_done,{ct_cth_prio_SUITE,end_per_suite,ok}}, + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]} + ]; + test_events(ok) -> ok. diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/ct_cth_prio_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/ct_cth_prio_SUITE.erl new file mode 100644 index 0000000000..0ba18b453e --- /dev/null +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/ct_cth_prio_SUITE.erl @@ -0,0 +1,58 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2010-2011. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% + +-module(ct_cth_prio_SUITE). + +%% Note: This directive should only be used in test suites. +-compile(export_all). + +-include("ct.hrl"). + +suite() -> + ([{timetrap, {minutes, 10}}, + {ct_hooks, [{empty_cth,[800],800}]}]). + +%% Test server callback functions +init_per_suite(Config) -> + [{ct_hooks, [{empty_cth,[700],700}]}|Config]. + +end_per_suite(_Config) -> + ok. + +init_per_group(_G, Config) -> + [{ct_hooks, [{empty_cth,[600],600}]}|Config]. + +end_per_group(_G, _Config) -> + ok. + +init_per_testcase(_TestCase, Config) -> + Config. + +end_per_testcase(_TestCase, _Config) -> + ok. + +all() -> + [{group,test_group}]. + +groups() -> + [{test_group,[],[test_case]}]. + +%% Test cases starts here. +test_case(Config) when is_list(Config) -> + ok. -- cgit v1.2.3