From 24cb87703d919598d5b95268d868432c8ada3232 Mon Sep 17 00:00:00 2001 From: Peter Andersson Date: Tue, 17 Jan 2012 00:01:42 +0100 Subject: Create entry for every repeated test in index.html For each repeated test during a test run, an entry is created in the index.html file (i.e. the overview file for the test run). In the top level (logdir) index file, only the last test result is listed. E.g, given the test spec: [{merge_tests,false},{dirs,testobj1},{dirs,testobj1}] In the index file for the test run (under Logdir/ct_run.Node.Date.Time), both dir tests are listed. In the top level index file (under Logdir), only the last test is listed (one has to find all results through the all_runs.html file). --- lib/common_test/src/ct_logs.erl | 97 ++++++++++++++++++++++++++--------------- 1 file changed, 63 insertions(+), 34 deletions(-) (limited to 'lib/common_test/src') diff --git a/lib/common_test/src/ct_logs.erl b/lib/common_test/src/ct_logs.erl index b2f669fefe..bb30cafbeb 100644 --- a/lib/common_test/src/ct_logs.erl +++ b/lib/common_test/src/ct_logs.erl @@ -920,33 +920,48 @@ insert_dir(D,[D1|Ds]) -> insert_dir(D,[]) -> [D]. -make_last_run_index([Name|Rest], Result, TotSucc, TotFail, UserSkip, AutoSkip, - TotNotBuilt, Missing) -> - case last_test(Name) of +make_last_run_index([Name|Rest], Result, TotSucc, TotFail, + UserSkip, AutoSkip, TotNotBuilt, Missing) -> + case get_run_dirs(Name) of false -> %% Silently skip. - make_last_run_index(Rest, Result, TotSucc, TotFail, UserSkip, AutoSkip, - TotNotBuilt, Missing); - LastLogDir -> + make_last_run_index(Rest, Result, TotSucc, TotFail, + UserSkip, AutoSkip, TotNotBuilt, Missing); + LogDirs -> SuiteName = filename:rootname(filename:basename(Name)), - case make_one_index_entry(SuiteName, LastLogDir, "-", false, Missing) of - {Result1,Succ,Fail,USkip,ASkip,NotBuilt} -> - %% for backwards compatibility - AutoSkip1 = case catch AutoSkip+ASkip of - {'EXIT',_} -> undefined; - Res -> Res - end, - make_last_run_index(Rest, [Result|Result1], TotSucc+Succ, - TotFail+Fail, UserSkip+USkip, AutoSkip1, - TotNotBuilt+NotBuilt, Missing); - error -> - make_last_run_index(Rest, Result, TotSucc, TotFail, UserSkip, AutoSkip, - TotNotBuilt, Missing) - end + {Result1,TotSucc1,TotFail1,UserSkip1,AutoSkip1,TotNotBuilt1} = + make_last_run_index1(SuiteName, LogDirs, Result, + TotSucc, TotFail, + UserSkip, AutoSkip, + TotNotBuilt, Missing), + make_last_run_index(Rest, Result1, TotSucc1, TotFail1, + UserSkip1, AutoSkip1, + TotNotBuilt1, Missing) end; + make_last_run_index([], Result, TotSucc, TotFail, UserSkip, AutoSkip, TotNotBuilt, _) -> {ok, [Result|total_row(TotSucc, TotFail, UserSkip, AutoSkip, TotNotBuilt, false)], {TotSucc,TotFail,UserSkip,AutoSkip,TotNotBuilt}}. + +make_last_run_index1(SuiteName, [LogDir | LogDirs], Result, TotSucc, TotFail, + UserSkip, AutoSkip, TotNotBuilt, Missing) -> + case make_one_index_entry(SuiteName, LogDir, "-", false, Missing) of + {Result1,Succ,Fail,USkip,ASkip,NotBuilt} -> + %% for backwards compatibility + AutoSkip1 = case catch AutoSkip+ASkip of + {'EXIT',_} -> undefined; + Res -> Res + end, + make_last_run_index1(SuiteName, LogDirs, [Result|Result1], TotSucc+Succ, + TotFail+Fail, UserSkip+USkip, AutoSkip1, + TotNotBuilt+NotBuilt, Missing); + error -> + make_last_run_index1(SuiteName, LogDirs, Result, TotSucc, TotFail, + UserSkip, AutoSkip, TotNotBuilt, Missing) + end; +make_last_run_index1(_, [], Result, TotSucc, TotFail, + UserSkip, AutoSkip, TotNotBuilt, _) -> + {Result,TotSucc,TotFail,UserSkip,AutoSkip,TotNotBuilt}. make_one_index_entry(SuiteName, LogDir, Label, All, Missing) -> case count_cases(LogDir) of @@ -1650,6 +1665,10 @@ make_all_suites_index(When) when is_atom(When) -> notify_and_lock_file(AbsIndexName), LogDirs = filelib:wildcard(logdir_prefix()++".*/*"++?logdir_ext), Sorted = sort_logdirs(LogDirs, []), + + %%! --- Tue Jan 17 16:30:44 2012 --- peppe was here! + io:format(user, "~nLOGDIRS = ~p~nSORTED: ~p~n~n", [LogDirs,Sorted]), + Result = make_all_suites_index1(When, AbsIndexName, Sorted), notify_and_unlock_file(AbsIndexName), Result; @@ -1671,6 +1690,10 @@ make_all_suites_index(NewTestData = {_TestName,DirName}) -> _ -> "..." end, notify_and_lock_file(AbsIndexName), + + %%! --- Mon Jan 16 23:37:33 2012 --- peppe was here! + io:format(user, "ALL SUITES CACHED: ~p, ~p, ~p~n", [AbsIndexName,NewTestData,LogDirData]), + Result = case catch make_all_suites_ix_cached(AbsIndexName, NewTestData, @@ -1698,8 +1721,8 @@ make_all_suites_index(NewTestData = {_TestName,DirName}) -> sort_logdirs([Dir|Dirs],Groups) -> TestName = filename:rootname(filename:basename(Dir)), case filelib:wildcard(filename:join(Dir,"run.*")) of - [RunDir] -> - Groups1 = insert_test(TestName,{filename:basename(RunDir),RunDir},Groups), + RunDirs = [_|_] -> + Groups1 = sort_logdirs1(TestName,RunDirs,Groups), sort_logdirs(Dirs,Groups1); _ -> % ignore missing run directory sort_logdirs(Dirs,Groups) @@ -1707,6 +1730,12 @@ sort_logdirs([Dir|Dirs],Groups) -> sort_logdirs([],Groups) -> lists:keysort(1,sort_each_group(Groups)). +sort_logdirs1(TestName,[RunDir|RunDirs],Groups) -> + Groups1 = insert_test(TestName,{filename:basename(RunDir),RunDir},Groups), + sort_logdirs1(TestName,RunDirs,Groups1); +sort_logdirs1(_,[],Groups) -> + Groups. + insert_test(Test,IxDir,[{Test,IxDirs}|Groups]) -> [{Test,[IxDir|IxDirs]}|Groups]; insert_test(Test,IxDir,[]) -> @@ -1752,6 +1781,10 @@ make_all_suites_index1(When, AbsIndexName, AllLogDirs) -> end. make_all_suites_index2(IndexName, AllTestLogDirs) -> + +%%! --- Mon Jan 16 23:40:08 2012 --- peppe was here! + io:format(user, "ALL SUITES (~p): ~p~n", [IndexName,AllTestLogDirs]), + {ok,Index0,_Totals,CacheData} = make_all_suites_index3(AllTestLogDirs, all_suites_index_header(), @@ -1998,21 +2031,17 @@ notify_and_unlock_file(File) -> end. %%%----------------------------------------------------------------- -%%% @spec last_test(Dir) -> string() | false +%%% @spec get_run_dirs(Dir) -> [string()] | false %%% %%% @doc %%% -last_test(Dir) -> - last_test(filelib:wildcard(filename:join(Dir, "run.[1-2]*")), false). - -last_test([Run|Rest], false) -> - last_test(Rest, Run); -last_test([Run|Rest], Latest) when Run > Latest -> - last_test(Rest, Run); -last_test([_|Rest], Latest) -> - last_test(Rest, Latest); -last_test([], Latest) -> - Latest. +get_run_dirs(Dir) -> + case filelib:wildcard(filename:join(Dir, "run.[1-2]*")) of + [] -> + false; + RunDirs -> + lists:sort(RunDirs) + end. %%%----------------------------------------------------------------- %%% @spec xhtml(HTML, XHTML) -> HTML | XHTML -- cgit v1.2.3 From 4aabf295e7b11d5ae03553aab1ba83a2657fa7aa Mon Sep 17 00:00:00 2001 From: Peter Andersson Date: Wed, 18 Jan 2012 15:45:40 +0100 Subject: Make it possible to use unique priv_dir names Introduce the optional feature to have Test Server generate priv_dir directory names that are unique for each test case or config function. The name of the option/flag is 'unique_priv_dir' and it can be set to value 'auto' or 'manual'. If auto, Test Server creates each priv_dir automatically (can be expensive in case of many and/or repeated cases). If manual, the user needs to create the priv_dir explicitly by calling ct:make_priv_dir/0. --- lib/common_test/src/ct.erl | 11 +++++++- lib/common_test/src/ct_logs.erl | 12 --------- lib/common_test/src/ct_run.erl | 57 +++++++++++++++++++++++++++++++++-------- lib/common_test/src/ct_util.hrl | 3 ++- 4 files changed, 58 insertions(+), 25 deletions(-) (limited to 'lib/common_test/src') diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl index 0a77527b2f..83ed0a66d7 100644 --- a/lib/common_test/src/ct.erl +++ b/lib/common_test/src/ct.erl @@ -64,7 +64,7 @@ print/1, print/2, print/3, pal/1, pal/2, pal/3, capture_start/0, capture_stop/0, capture_get/0, capture_get/1, - fail/1, fail/2, comment/1, comment/2, + fail/1, fail/2, comment/1, comment/2, make_priv_dir/0, testcases/2, userdata/2, userdata/3, timetrap/1, get_timetrap_info/0, sleep/1]). @@ -673,6 +673,15 @@ send_html_comment(Comment) -> ct_util:set_testdata({comment,Html}), test_server:comment(Html). +%%%----------------------------------------------------------------- +%%% @spec make_priv_dir() -> ok | {error,Reason} +%%% Reason = term() +%%% @doc If the test has been started with the unique_priv_dir +%%% option set to manual, in order for the test case to use the +%%% private directory, it must first create it by calling +%%% this function. +make_priv_dir() -> + test_server:make_priv_dir(). %%%----------------------------------------------------------------- %%% @spec get_target_name(Handle) -> {ok,TargetName} | {error,Reason} diff --git a/lib/common_test/src/ct_logs.erl b/lib/common_test/src/ct_logs.erl index bb30cafbeb..0cd9b5f7cb 100644 --- a/lib/common_test/src/ct_logs.erl +++ b/lib/common_test/src/ct_logs.erl @@ -1665,10 +1665,6 @@ make_all_suites_index(When) when is_atom(When) -> notify_and_lock_file(AbsIndexName), LogDirs = filelib:wildcard(logdir_prefix()++".*/*"++?logdir_ext), Sorted = sort_logdirs(LogDirs, []), - - %%! --- Tue Jan 17 16:30:44 2012 --- peppe was here! - io:format(user, "~nLOGDIRS = ~p~nSORTED: ~p~n~n", [LogDirs,Sorted]), - Result = make_all_suites_index1(When, AbsIndexName, Sorted), notify_and_unlock_file(AbsIndexName), Result; @@ -1690,10 +1686,6 @@ make_all_suites_index(NewTestData = {_TestName,DirName}) -> _ -> "..." end, notify_and_lock_file(AbsIndexName), - - %%! --- Mon Jan 16 23:37:33 2012 --- peppe was here! - io:format(user, "ALL SUITES CACHED: ~p, ~p, ~p~n", [AbsIndexName,NewTestData,LogDirData]), - Result = case catch make_all_suites_ix_cached(AbsIndexName, NewTestData, @@ -1781,10 +1773,6 @@ make_all_suites_index1(When, AbsIndexName, AllLogDirs) -> end. make_all_suites_index2(IndexName, AllTestLogDirs) -> - -%%! --- Mon Jan 16 23:40:08 2012 --- peppe was here! - io:format(user, "ALL SUITES (~p): ~p~n", [IndexName,AllTestLogDirs]), - {ok,Index0,_Totals,CacheData} = make_all_suites_index3(AllTestLogDirs, all_suites_index_header(), diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index 05b10bca32..7798d369d2 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -63,6 +63,7 @@ stylesheet, multiply_timetraps = 1, scale_timetraps = false, + unique_priv_dir = false, testspecs = [], tests}). @@ -178,6 +179,10 @@ script_start1(Parent, Args) -> fun([CT]) -> list_to_atom(CT); ([]) -> true end, false, Args), + UniquePrivDir = get_start_opt(unique_priv_dir, + fun([UPD]) -> list_to_atom(UPD); + ([]) -> auto + end, false, Args), EvHandlers = event_handler_args2opts(Args), CTHooks = ct_hooks_args2opts(Args), EnableBuiltinHooks = get_start_opt(enable_builtin_hooks, @@ -255,7 +260,8 @@ script_start1(Parent, Args) -> silent_connections = SilentConns, stylesheet = Stylesheet, multiply_timetraps = MultTT, - scale_timetraps = ScaleTT}, + scale_timetraps = ScaleTT, + unique_priv_dir = UniquePrivDir}, %% check if log files should be refreshed or go on to run tests... Result = run_or_refresh(StartOpts, Args), @@ -322,12 +328,21 @@ script_start2(StartOpts = #opts{vts = undefined, Cover = choose_val(StartOpts#opts.cover, SpecStartOpts#opts.cover), - MultTT = choose_val(StartOpts#opts.multiply_timetraps, - SpecStartOpts#opts.multiply_timetraps), - ScaleTT = choose_val(StartOpts#opts.scale_timetraps, - SpecStartOpts#opts.scale_timetraps), - AllEvHs = merge_vals([StartOpts#opts.event_handlers, - SpecStartOpts#opts.event_handlers]), + MultTT = + choose_val(StartOpts#opts.multiply_timetraps, + SpecStartOpts#opts.multiply_timetraps), + ScaleTT = + choose_val(StartOpts#opts.scale_timetraps, + SpecStartOpts#opts.scale_timetraps), + + UniquePrivDir = + choose_val(StartOpts#opts.unique_priv_dir, + SpecStartOpts#opts.unique_priv_dir), + + AllEvHs = + merge_vals([StartOpts#opts.event_handlers, + SpecStartOpts#opts.event_handlers]), + AllCTHooks = merge_vals( [StartOpts#opts.ct_hooks, SpecStartOpts#opts.ct_hooks]), @@ -354,7 +369,8 @@ script_start2(StartOpts = #opts{vts = undefined, EnableBuiltinHooks, include = AllInclude, multiply_timetraps = MultTT, - scale_timetraps = ScaleTT}} + scale_timetraps = ScaleTT, + unique_priv_dir = UniquePrivDir}} end; _ -> {undefined,StartOpts} @@ -567,6 +583,7 @@ script_usage() -> "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" "\n\t[-scale_timetraps]" + "\n\t[-unique_priv_dir [auto | manual]]" "\n\t[-basic_html]\n\n"), io:format("Run tests from command line:\n\n" "\tct_run [-dir TestDir1 TestDir2 .. TestDirN] |" @@ -586,6 +603,7 @@ script_usage() -> "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" "\n\t[-scale_timetraps]" + "\n\t[-unique_priv_dir [auto | manual]]" "\n\t[-basic_html]" "\n\t[-repeat N [-force_stop]] |" "\n\t[-duration HHMMSS [-force_stop]] |" @@ -606,6 +624,7 @@ script_usage() -> "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" "\n\t[-scale_timetraps]" + "\n\t[-unique_priv_dir [auto | manual]]" "\n\t[-basic_html]" "\n\t[-repeat N [-force_stop]] |" "\n\t[-duration HHMMSS [-force_stop]] |" @@ -782,6 +801,9 @@ run_test2(StartOpts) -> MultiplyTT = get_start_opt(multiply_timetraps, value, 1, StartOpts), ScaleTT = get_start_opt(scale_timetraps, value, false, StartOpts), + %% create unique priv dir names + UniquePrivDir = get_start_opt(unique_priv_dir, value, false, StartOpts), + %% auto compile & include files Include = case proplists:get_value(auto_compile, StartOpts) of @@ -842,7 +864,8 @@ run_test2(StartOpts) -> silent_connections = SilentConns, stylesheet = Stylesheet, multiply_timetraps = MultiplyTT, - scale_timetraps = ScaleTT}, + scale_timetraps = ScaleTT, + unique_priv_dir = UniquePrivDir}, %% test specification case proplists:get_value(spec, StartOpts) of @@ -889,6 +912,8 @@ run_spec_file(Relaxed, SpecOpts#opts.multiply_timetraps), ScaleTT = choose_val(Opts#opts.scale_timetraps, SpecOpts#opts.scale_timetraps), + UniquePrivDir = choose_val(Opts#opts.unique_priv_dir, + SpecOpts#opts.unique_priv_dir), AllEvHs = merge_vals([Opts#opts.event_handlers, SpecOpts#opts.event_handlers]), AllInclude = merge_vals([Opts#opts.include, @@ -912,6 +937,7 @@ run_spec_file(Relaxed, testspecs = AbsSpecs, multiply_timetraps = MultTT, scale_timetraps = ScaleTT, + unique_priv_dir = UniquePrivDir, ct_hooks = AllCTHooks, enable_builtin_hooks = EnableBuiltinHooks }, @@ -1170,7 +1196,8 @@ get_data_for_node(#testspec{label = Labels, enable_builtin_hooks = EnableBuiltinHooks, include = Incl, multiply_timetraps = MTs, - scale_timetraps = STs}, Node) -> + scale_timetraps = STs, + unique_priv_dir = UPDs}, Node) -> Label = proplists:get_value(Node, Labels), Profile = proplists:get_value(Node, Profiles), LogDir = case proplists:get_value(Node, LogDirs) of @@ -1184,6 +1211,7 @@ get_data_for_node(#testspec{label = Labels, Cover = proplists:get_value(Node, CoverFs), MT = proplists:get_value(Node, MTs), ST = proplists:get_value(Node, STs), + UniquePrivDir = proplists:get_value(Node, UPDs), ConfigFiles = [{?ct_config_txt,F} || {N,F} <- Cfgs, N==Node] ++ [CBF || {N,CBF} <- UsrCfgs, N==Node], EvHandlers = [{H,A} || {N,H,A} <- EvHs, N==Node], @@ -1200,7 +1228,8 @@ get_data_for_node(#testspec{label = Labels, enable_builtin_hooks = EnableBuiltinHooks, include = Include, multiply_timetraps = MT, - scale_timetraps = ST}. + scale_timetraps = ST, + unique_priv_dir = UniquePrivDir}. refresh_logs(LogDir) -> {ok,Cwd} = file:get_cwd(), @@ -1842,6 +1871,8 @@ do_run_test(Tests, Skip, Opts) -> test_server_ctrl:multiply_timetraps(Opts#opts.multiply_timetraps), test_server_ctrl:scale_timetraps(Opts#opts.scale_timetraps), + test_server_ctrl:unique_priv_dir(Opts#opts.unique_priv_dir), + ct_event:notify(#event{name=start_info, node=node(), data={NoOfTests,NoOfSuites,NoOfCases}}), @@ -2419,6 +2450,10 @@ opts2args(EnvStartOpts) -> [{scale_timetraps,[]}]; ({scale_timetraps,false}) -> []; + ({unique_priv_dir,false}) -> + []; + ({unique_priv_dir,UPD}) when is_atom(UPD) -> + [{unique_priv_dir,[UPD]}]; ({force_stop,true}) -> [{force_stop,[]}]; ({force_stop,false}) -> diff --git a/lib/common_test/src/ct_util.hrl b/lib/common_test/src/ct_util.hrl index bde832811a..da96743732 100644 --- a/lib/common_test/src/ct_util.hrl +++ b/lib/common_test/src/ct_util.hrl @@ -43,9 +43,10 @@ include=[], multiply_timetraps=[], scale_timetraps=[], + unique_priv_dir=[], alias=[], tests=[], - merge_tests = true }). + merge_tests=true}). -record(cover, {app=none, level=details, -- cgit v1.2.3 From 83b3156388ee6773fddd82e5395bdfe2c8eedc19 Mon Sep 17 00:00:00 2001 From: Peter Andersson Date: Tue, 24 Jan 2012 00:49:21 +0100 Subject: Add test suite for the unique_priv_dir feature --- lib/common_test/src/ct_run.erl | 12 ++++++------ lib/common_test/src/ct_testspec.erl | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 7 deletions(-) (limited to 'lib/common_test/src') diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index 7798d369d2..19afb4b9f6 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -63,7 +63,7 @@ stylesheet, multiply_timetraps = 1, scale_timetraps = false, - unique_priv_dir = false, + unique_priv_dir, testspecs = [], tests}). @@ -182,7 +182,7 @@ script_start1(Parent, Args) -> UniquePrivDir = get_start_opt(unique_priv_dir, fun([UPD]) -> list_to_atom(UPD); ([]) -> auto - end, false, Args), + end, Args), EvHandlers = event_handler_args2opts(Args), CTHooks = ct_hooks_args2opts(Args), EnableBuiltinHooks = get_start_opt(enable_builtin_hooks, @@ -802,7 +802,7 @@ run_test2(StartOpts) -> ScaleTT = get_start_opt(scale_timetraps, value, false, StartOpts), %% create unique priv dir names - UniquePrivDir = get_start_opt(unique_priv_dir, value, false, StartOpts), + UniquePrivDir = get_start_opt(unique_priv_dir, value, StartOpts), %% auto compile & include files Include = @@ -1871,8 +1871,8 @@ do_run_test(Tests, Skip, Opts) -> test_server_ctrl:multiply_timetraps(Opts#opts.multiply_timetraps), test_server_ctrl:scale_timetraps(Opts#opts.scale_timetraps), - test_server_ctrl:unique_priv_dir(Opts#opts.unique_priv_dir), - + test_server_ctrl:unique_priv_dir(choose_val(Opts#opts.unique_priv_dir, + false)), ct_event:notify(#event{name=start_info, node=node(), data={NoOfTests,NoOfSuites,NoOfCases}}), @@ -2453,7 +2453,7 @@ opts2args(EnvStartOpts) -> ({unique_priv_dir,false}) -> []; ({unique_priv_dir,UPD}) when is_atom(UPD) -> - [{unique_priv_dir,[UPD]}]; + [{unique_priv_dir,[atom_to_list(UPD)]}]; ({force_stop,true}) -> [{force_stop,[]}]; ({force_stop,false}) -> diff --git a/lib/common_test/src/ct_testspec.erl b/lib/common_test/src/ct_testspec.erl index b68cbd3aa1..9e8065c636 100644 --- a/lib/common_test/src/ct_testspec.erl +++ b/lib/common_test/src/ct_testspec.erl @@ -568,6 +568,21 @@ add_tests([{scale_timetraps,Node,ST}|Ts],Spec) -> add_tests([{scale_timetraps,ST}|Ts],Spec) -> add_tests([{scale_timetraps,all_nodes,ST}|Ts],Spec); +%% --- unique_priv_dir --- +add_tests([{unique_priv_dir,all_nodes,UPD}|Ts],Spec) -> + Tests = lists:map(fun(N) -> {unique_priv_dir,N,UPD} end, list_nodes(Spec)), + add_tests(Tests++Ts,Spec); +add_tests([{unique_priv_dir,Nodes,UPD}|Ts],Spec) when is_list(Nodes) -> + Ts1 = separate(Nodes,unique_priv_dir,[UPD],Ts,Spec#testspec.nodes), + add_tests(Ts1,Spec); +add_tests([{unique_priv_dir,Node,UPD}|Ts],Spec) -> + UPDs = Spec#testspec.unique_priv_dir, + UPDs1 = [{ref2node(Node,Spec#testspec.nodes),UPD} | + lists:keydelete(ref2node(Node,Spec#testspec.nodes),1,UPDs)], + add_tests(Ts,Spec#testspec{unique_priv_dir=UPDs1}); +add_tests([{unique_priv_dir,UPD}|Ts],Spec) -> + add_tests([{unique_priv_dir,all_nodes,UPD}|Ts],Spec); + %% --- config --- add_tests([{config,all_nodes,Files}|Ts],Spec) -> Tests = lists:map(fun(N) -> {config,N,Files} end, list_nodes(Spec)), @@ -1158,7 +1173,8 @@ valid_terms() -> {skip_groups,6}, {skip_groups,7}, {skip_cases,5}, - {skip_cases,6} + {skip_cases,6}, + {unique_priv_dir,2} ]. %% this function "guesses" if the user has misspelled a term name -- cgit v1.2.3 From ccdee0c96757252c63f4e4d2f3d21c628e0c4025 Mon Sep 17 00:00:00 2001 From: Peter Andersson Date: Tue, 13 Mar 2012 17:05:08 +0100 Subject: Change the option name 'unique_priv_dir' to 'create_priv_dir' The new values for create_priv_dir are: auto_per_run, auto_per_tc, manual_per_tc --- lib/common_test/src/ct.erl | 6 ++--- lib/common_test/src/ct_run.erl | 50 ++++++++++++++++++------------------- lib/common_test/src/ct_testspec.erl | 26 +++++++++---------- lib/common_test/src/ct_util.hrl | 2 +- 4 files changed, 42 insertions(+), 42 deletions(-) (limited to 'lib/common_test/src') diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl index 83ed0a66d7..63a8adbc63 100644 --- a/lib/common_test/src/ct.erl +++ b/lib/common_test/src/ct.erl @@ -676,9 +676,9 @@ send_html_comment(Comment) -> %%%----------------------------------------------------------------- %%% @spec make_priv_dir() -> ok | {error,Reason} %%% Reason = term() -%%% @doc If the test has been started with the unique_priv_dir -%%% option set to manual, in order for the test case to use the -%%% private directory, it must first create it by calling +%%% @doc If the test has been started with the create_priv_dir +%%% option set to manual_per_tc, in order for the test case to use +%%% the private directory, it must first create it by calling %%% this function. make_priv_dir() -> test_server:make_priv_dir(). diff --git a/lib/common_test/src/ct_run.erl b/lib/common_test/src/ct_run.erl index 19afb4b9f6..ef3e1b6a32 100644 --- a/lib/common_test/src/ct_run.erl +++ b/lib/common_test/src/ct_run.erl @@ -63,7 +63,7 @@ stylesheet, multiply_timetraps = 1, scale_timetraps = false, - unique_priv_dir, + create_priv_dir, testspecs = [], tests}). @@ -179,9 +179,9 @@ script_start1(Parent, Args) -> fun([CT]) -> list_to_atom(CT); ([]) -> true end, false, Args), - UniquePrivDir = get_start_opt(unique_priv_dir, - fun([UPD]) -> list_to_atom(UPD); - ([]) -> auto + CreatePrivDir = get_start_opt(create_priv_dir, + fun([PD]) -> list_to_atom(PD); + ([]) -> auto_per_tc end, Args), EvHandlers = event_handler_args2opts(Args), CTHooks = ct_hooks_args2opts(Args), @@ -261,7 +261,7 @@ script_start1(Parent, Args) -> stylesheet = Stylesheet, multiply_timetraps = MultTT, scale_timetraps = ScaleTT, - unique_priv_dir = UniquePrivDir}, + create_priv_dir = CreatePrivDir}, %% check if log files should be refreshed or go on to run tests... Result = run_or_refresh(StartOpts, Args), @@ -335,9 +335,9 @@ script_start2(StartOpts = #opts{vts = undefined, choose_val(StartOpts#opts.scale_timetraps, SpecStartOpts#opts.scale_timetraps), - UniquePrivDir = - choose_val(StartOpts#opts.unique_priv_dir, - SpecStartOpts#opts.unique_priv_dir), + CreatePrivDir = + choose_val(StartOpts#opts.create_priv_dir, + SpecStartOpts#opts.create_priv_dir), AllEvHs = merge_vals([StartOpts#opts.event_handlers, @@ -370,7 +370,7 @@ script_start2(StartOpts = #opts{vts = undefined, include = AllInclude, multiply_timetraps = MultTT, scale_timetraps = ScaleTT, - unique_priv_dir = UniquePrivDir}} + create_priv_dir = CreatePrivDir}} end; _ -> {undefined,StartOpts} @@ -583,7 +583,7 @@ script_usage() -> "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" "\n\t[-scale_timetraps]" - "\n\t[-unique_priv_dir [auto | manual]]" + "\n\t[-create_priv_dir auto_per_run | auto_per_tc | manual_per_tc]" "\n\t[-basic_html]\n\n"), io:format("Run tests from command line:\n\n" "\tct_run [-dir TestDir1 TestDir2 .. TestDirN] |" @@ -603,7 +603,7 @@ script_usage() -> "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" "\n\t[-scale_timetraps]" - "\n\t[-unique_priv_dir [auto | manual]]" + "\n\t[-create_priv_dir auto_per_run | auto_per_tc | manual_per_tc]" "\n\t[-basic_html]" "\n\t[-repeat N [-force_stop]] |" "\n\t[-duration HHMMSS [-force_stop]] |" @@ -624,7 +624,7 @@ script_usage() -> "\n\t[-no_auto_compile]" "\n\t[-multiply_timetraps N]" "\n\t[-scale_timetraps]" - "\n\t[-unique_priv_dir [auto | manual]]" + "\n\t[-create_priv_dir auto_per_run | auto_per_tc | manual_per_tc]" "\n\t[-basic_html]" "\n\t[-repeat N [-force_stop]] |" "\n\t[-duration HHMMSS [-force_stop]] |" @@ -802,7 +802,7 @@ run_test2(StartOpts) -> ScaleTT = get_start_opt(scale_timetraps, value, false, StartOpts), %% create unique priv dir names - UniquePrivDir = get_start_opt(unique_priv_dir, value, StartOpts), + CreatePrivDir = get_start_opt(create_priv_dir, value, StartOpts), %% auto compile & include files Include = @@ -865,7 +865,7 @@ run_test2(StartOpts) -> stylesheet = Stylesheet, multiply_timetraps = MultiplyTT, scale_timetraps = ScaleTT, - unique_priv_dir = UniquePrivDir}, + create_priv_dir = CreatePrivDir}, %% test specification case proplists:get_value(spec, StartOpts) of @@ -912,8 +912,8 @@ run_spec_file(Relaxed, SpecOpts#opts.multiply_timetraps), ScaleTT = choose_val(Opts#opts.scale_timetraps, SpecOpts#opts.scale_timetraps), - UniquePrivDir = choose_val(Opts#opts.unique_priv_dir, - SpecOpts#opts.unique_priv_dir), + CreatePrivDir = choose_val(Opts#opts.create_priv_dir, + SpecOpts#opts.create_priv_dir), AllEvHs = merge_vals([Opts#opts.event_handlers, SpecOpts#opts.event_handlers]), AllInclude = merge_vals([Opts#opts.include, @@ -937,7 +937,7 @@ run_spec_file(Relaxed, testspecs = AbsSpecs, multiply_timetraps = MultTT, scale_timetraps = ScaleTT, - unique_priv_dir = UniquePrivDir, + create_priv_dir = CreatePrivDir, ct_hooks = AllCTHooks, enable_builtin_hooks = EnableBuiltinHooks }, @@ -1197,7 +1197,7 @@ get_data_for_node(#testspec{label = Labels, include = Incl, multiply_timetraps = MTs, scale_timetraps = STs, - unique_priv_dir = UPDs}, Node) -> + create_priv_dir = PDs}, Node) -> Label = proplists:get_value(Node, Labels), Profile = proplists:get_value(Node, Profiles), LogDir = case proplists:get_value(Node, LogDirs) of @@ -1211,7 +1211,7 @@ get_data_for_node(#testspec{label = Labels, Cover = proplists:get_value(Node, CoverFs), MT = proplists:get_value(Node, MTs), ST = proplists:get_value(Node, STs), - UniquePrivDir = proplists:get_value(Node, UPDs), + CreatePrivDir = proplists:get_value(Node, PDs), ConfigFiles = [{?ct_config_txt,F} || {N,F} <- Cfgs, N==Node] ++ [CBF || {N,CBF} <- UsrCfgs, N==Node], EvHandlers = [{H,A} || {N,H,A} <- EvHs, N==Node], @@ -1229,7 +1229,7 @@ get_data_for_node(#testspec{label = Labels, include = Include, multiply_timetraps = MT, scale_timetraps = ST, - unique_priv_dir = UniquePrivDir}. + create_priv_dir = CreatePrivDir}. refresh_logs(LogDir) -> {ok,Cwd} = file:get_cwd(), @@ -1871,8 +1871,8 @@ do_run_test(Tests, Skip, Opts) -> test_server_ctrl:multiply_timetraps(Opts#opts.multiply_timetraps), test_server_ctrl:scale_timetraps(Opts#opts.scale_timetraps), - test_server_ctrl:unique_priv_dir(choose_val(Opts#opts.unique_priv_dir, - false)), + test_server_ctrl:create_priv_dir(choose_val(Opts#opts.create_priv_dir, + auto_per_run)), ct_event:notify(#event{name=start_info, node=node(), data={NoOfTests,NoOfSuites,NoOfCases}}), @@ -2450,10 +2450,10 @@ opts2args(EnvStartOpts) -> [{scale_timetraps,[]}]; ({scale_timetraps,false}) -> []; - ({unique_priv_dir,false}) -> + ({create_priv_dir,auto_per_run}) -> []; - ({unique_priv_dir,UPD}) when is_atom(UPD) -> - [{unique_priv_dir,[atom_to_list(UPD)]}]; + ({create_priv_dir,PD}) when is_atom(PD) -> + [{create_priv_dir,[atom_to_list(PD)]}]; ({force_stop,true}) -> [{force_stop,[]}]; ({force_stop,false}) -> diff --git a/lib/common_test/src/ct_testspec.erl b/lib/common_test/src/ct_testspec.erl index 9e8065c636..5b197c0c81 100644 --- a/lib/common_test/src/ct_testspec.erl +++ b/lib/common_test/src/ct_testspec.erl @@ -568,20 +568,20 @@ add_tests([{scale_timetraps,Node,ST}|Ts],Spec) -> add_tests([{scale_timetraps,ST}|Ts],Spec) -> add_tests([{scale_timetraps,all_nodes,ST}|Ts],Spec); -%% --- unique_priv_dir --- -add_tests([{unique_priv_dir,all_nodes,UPD}|Ts],Spec) -> - Tests = lists:map(fun(N) -> {unique_priv_dir,N,UPD} end, list_nodes(Spec)), +%% --- create_priv_dir --- +add_tests([{create_priv_dir,all_nodes,PD}|Ts],Spec) -> + Tests = lists:map(fun(N) -> {create_priv_dir,N,PD} end, list_nodes(Spec)), add_tests(Tests++Ts,Spec); -add_tests([{unique_priv_dir,Nodes,UPD}|Ts],Spec) when is_list(Nodes) -> - Ts1 = separate(Nodes,unique_priv_dir,[UPD],Ts,Spec#testspec.nodes), +add_tests([{create_priv_dir,Nodes,PD}|Ts],Spec) when is_list(Nodes) -> + Ts1 = separate(Nodes,create_priv_dir,[PD],Ts,Spec#testspec.nodes), add_tests(Ts1,Spec); -add_tests([{unique_priv_dir,Node,UPD}|Ts],Spec) -> - UPDs = Spec#testspec.unique_priv_dir, - UPDs1 = [{ref2node(Node,Spec#testspec.nodes),UPD} | - lists:keydelete(ref2node(Node,Spec#testspec.nodes),1,UPDs)], - add_tests(Ts,Spec#testspec{unique_priv_dir=UPDs1}); -add_tests([{unique_priv_dir,UPD}|Ts],Spec) -> - add_tests([{unique_priv_dir,all_nodes,UPD}|Ts],Spec); +add_tests([{create_priv_dir,Node,PD}|Ts],Spec) -> + PDs = Spec#testspec.create_priv_dir, + PDs1 = [{ref2node(Node,Spec#testspec.nodes),PD} | + lists:keydelete(ref2node(Node,Spec#testspec.nodes),1,PDs)], + add_tests(Ts,Spec#testspec{create_priv_dir=PDs1}); +add_tests([{create_priv_dir,PD}|Ts],Spec) -> + add_tests([{create_priv_dir,all_nodes,PD}|Ts],Spec); %% --- config --- add_tests([{config,all_nodes,Files}|Ts],Spec) -> @@ -1174,7 +1174,7 @@ valid_terms() -> {skip_groups,7}, {skip_cases,5}, {skip_cases,6}, - {unique_priv_dir,2} + {create_priv_dir,2} ]. %% this function "guesses" if the user has misspelled a term name diff --git a/lib/common_test/src/ct_util.hrl b/lib/common_test/src/ct_util.hrl index da96743732..082599a9c6 100644 --- a/lib/common_test/src/ct_util.hrl +++ b/lib/common_test/src/ct_util.hrl @@ -43,7 +43,7 @@ include=[], multiply_timetraps=[], scale_timetraps=[], - unique_priv_dir=[], + create_priv_dir=[], alias=[], tests=[], merge_tests=true}). -- cgit v1.2.3