diff options
author | Lukas Larsson <[email protected]> | 2011-08-02 19:42:27 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2011-08-31 10:51:36 +0200 |
commit | 1e18245b72b1a22f90d78ee3f21fe2ea52bebdaf (patch) | |
tree | 6264153341bf2d8ae08348309801826350ecdfd0 /lib/common_test/test | |
parent | b72ac8bb33177f6ca117fc0f7727d24de67cbc62 (diff) | |
download | otp-1e18245b72b1a22f90d78ee3f21fe2ea52bebdaf.tar.gz otp-1e18245b72b1a22f90d78ee3f21fe2ea52bebdaf.tar.bz2 otp-1e18245b72b1a22f90d78ee3f21fe2ea52bebdaf.zip |
Fix a couple of minor bugs with hook priority
The bugs caused the sorting priority to be wrong when using
installed priority and built in priority. Tests to prove the
order of hooks to be correct have also been added.
Diffstat (limited to 'lib/common_test/test')
3 files changed, 147 insertions, 65 deletions
diff --git a/lib/common_test/test/ct_hooks_SUITE.erl b/lib/common_test/test/ct_hooks_SUITE.erl index 16a95461e6..5c99f0f9f7 100644 --- a/lib/common_test/test/ct_hooks_SUITE.erl +++ b/lib/common_test/test/ct_hooks_SUITE.erl @@ -211,7 +211,8 @@ fail_n_skip_with_minimal_cth(Config) when is_list(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). + [{empty_cth,[1000],1000},{empty_cth,[900],900}, + {prio_cth,[1100,100],100},{prio_cth,[1100]}],Config). %%%----------------------------------------------------------------- %%% HELP FUNCTIONS @@ -1006,68 +1007,71 @@ test_events(fail_n_skip_with_minimal_cth) -> ]; test_events(prio_cth) -> + + GenPre = fun(Func,States) -> + [{?eh,cth,{'_',Func,['_','_',State]}} || + State <- States] + end, + + GenPost = fun(Func,States) -> + [{?eh,cth,{'_',Func,['_','_','_',State]}} || + State <- States] + end, + [{?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,[]} - ]; + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}] ++ + + [{?eh,tc_start,{ct_cth_prio_SUITE,init_per_suite}}] ++ + GenPre(pre_init_per_suite, + [[1100,100],[800],[900],[1000],[1200,1050],[1100],[1200]]) ++ + GenPost(post_init_per_suite, + [[1100,100],[600,200],[600,600],[700],[800],[900],[1000], + [1200,1050],[1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,init_per_suite,ok}}, + + + [{?eh,tc_start,{ct_cth_prio_SUITE,{init_per_group,'_',[]}}}] ++ + GenPre(pre_init_per_group, + [[1100,100],[600,200],[600,600],[700],[800], + [900],[1000],[1200,1050],[1100],[1200]]) ++ + GenPost(post_init_per_group, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,{init_per_group,'_',[]},ok}}] ++ + + [{?eh,tc_start,{ct_cth_prio_SUITE,test_case}}] ++ + GenPre(pre_init_per_testcase, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + GenPost(post_end_per_testcase, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,test_case,ok}}, + + {?eh,tc_start,{ct_cth_prio_SUITE,{end_per_group,'_',[]}}}] ++ + GenPre(pre_end_per_group, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + GenPost(post_end_per_group, + [[1100,100],[600,200],[600,600],[600],[700],[800], + [900],[900,900],[500,900],[1000],[1200,1050], + [1100],[1200]]) ++ + [{?eh,tc_done,{ct_cth_prio_SUITE,{end_per_group,'_',[]},ok}}], + + {?eh,tc_start,{ct_cth_prio_SUITE,end_per_suite}}] ++ + GenPre(pre_end_per_suite, + [[1100,100],[600,200],[600,600],[700],[800],[900],[1000], + [1200,1050],[1100],[1200]]) ++ + GenPost(post_end_per_suite, + [[1100,100],[600,200],[600,600],[700],[800],[900],[1000], + [1200,1050],[1100],[1200]]) ++ + [{?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 index 0ba18b453e..d564398cd0 100644 --- 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 @@ -26,17 +26,21 @@ suite() ->
([{timetrap, {minutes, 10}},
- {ct_hooks, [{empty_cth,[800],800}]}]).
+ {ct_hooks, [{empty_cth,[800],800},
+ {prio_cth,[1200]},{prio_cth,[1200,1050],1050}]}]).
%% Test server callback functions
init_per_suite(Config) ->
- [{ct_hooks, [{empty_cth,[700],700}]}|Config].
+ [{ct_hooks, [{empty_cth,[700],700},
+ {prio_cth,[600,600]},
+ {prio_cth,[600,200],200}]}|Config].
end_per_suite(_Config) ->
ok.
init_per_group(_G, Config) ->
- [{ct_hooks, [{empty_cth,[600],600}]}|Config].
+ [{ct_hooks, [{empty_cth,[600],600},
+ {prio_cth,[900,900]},{prio_cth,[500,900],900}]}|Config].
end_per_group(_G, _Config) ->
ok.
diff --git a/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/prio_cth.erl b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/prio_cth.erl new file mode 100644 index 0000000000..82511ab0d3 --- /dev/null +++ b/lib/common_test/test/ct_hooks_SUITE_data/cth/tests/prio_cth.erl @@ -0,0 +1,74 @@ +%%
+%% %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(prio_cth).
+
+
+-include_lib("common_test/src/ct_util.hrl").
+
+
+%% CT Hooks
+-compile(export_all).
+
+id(Opts) ->
+ empty_cth:id(Opts).
+
+init(Id, Opts) ->
+ {ok, [Prio|_] = State} = empty_cth:init(Id, Opts),
+ {ok, State, Prio}.
+
+pre_init_per_suite(Suite, Config, State) ->
+ empty_cth:pre_init_per_suite(Suite,Config,State).
+
+post_init_per_suite(Suite,Config,Return,State) ->
+ empty_cth:post_init_per_suite(Suite,Config,Return,State).
+
+pre_end_per_suite(Suite,Config,State) ->
+ empty_cth:pre_end_per_suite(Suite,Config,State).
+
+post_end_per_suite(Suite,Config,Return,State) ->
+ empty_cth:post_end_per_suite(Suite,Config,Return,State).
+
+pre_init_per_group(Group,Config,State) ->
+ empty_cth:pre_init_per_group(Group,Config,State).
+
+post_init_per_group(Group,Config,Return,State) ->
+ empty_cth:post_init_per_group(Group,Config,Return,State).
+
+pre_end_per_group(Group,Config,State) ->
+ empty_cth:pre_end_per_group(Group,Config,State).
+
+post_end_per_group(Group,Config,Return,State) ->
+ empty_cth:post_end_per_group(Group,Config,Return,State).
+
+pre_init_per_testcase(TC,Config,State) ->
+ empty_cth:pre_init_per_testcase(TC,Config,State).
+
+post_end_per_testcase(TC,Config,Return,State) ->
+ empty_cth:post_end_per_testcase(TC,Config,Return,State).
+
+on_tc_fail(TC, Reason, State) ->
+ empty_cth:on_tc_fail(TC,Reason,State).
+
+on_tc_skip(TC, Reason, State) ->
+ empty_cth:on_tc_skip(TC,Reason,State).
+
+terminate(State) ->
+ empty_cth:terminate(State).
|