From 332591f03f7bc4585c8c108c192ab3bba6fec12c Mon Sep 17 00:00:00 2001 From: Peter Andersson Date: Wed, 17 Feb 2010 15:59:05 +0000 Subject: OTP-8311: Various updates and fixes in Common Test and Test Server --- lib/common_test/test/ct_test_server_if_1_SUITE.erl | 253 +++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 lib/common_test/test/ct_test_server_if_1_SUITE.erl (limited to 'lib/common_test/test/ct_test_server_if_1_SUITE.erl') diff --git a/lib/common_test/test/ct_test_server_if_1_SUITE.erl b/lib/common_test/test/ct_test_server_if_1_SUITE.erl new file mode 100644 index 0000000000..069f8c75fc --- /dev/null +++ b/lib/common_test/test/ct_test_server_if_1_SUITE.erl @@ -0,0 +1,253 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2009-2010. 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% +%% + +%%%------------------------------------------------------------------- +%%% File: ct_test_server_if_SUITE +%%% +%%% Description: +%%% Test the test_server -> framework interface. +%%% +%%% The suites used for the test are located in the data directory. +%%%------------------------------------------------------------------- +-module(ct_test_server_if_1_SUITE). + +-compile(export_all). + +-include_lib("test_server/include/test_server.hrl"). +-include_lib("common_test/include/ct_event.hrl"). + +-define(eh, ct_test_support_eh). + +%%-------------------------------------------------------------------- +%% TEST SERVER CALLBACK FUNCTIONS +%%-------------------------------------------------------------------- + +%%-------------------------------------------------------------------- +%% Description: Since Common Test starts another Test Server +%% instance, the tests need to be performed on a separate node (or +%% there will be clashes with logging processes etc). +%%-------------------------------------------------------------------- +init_per_suite(Config) -> + Config1 = ct_test_support:init_per_suite(Config), + Config1. + +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). + +all(doc) -> + [""]; + +all(suite) -> + [ + ts_if_1 + ]. + + +%%-------------------------------------------------------------------- +%% TEST CASES +%%-------------------------------------------------------------------- + +%%%----------------------------------------------------------------- +%%% +ts_if_1(Config) when is_list(Config) -> + DataDir = ?config(data_dir, Config), + PrivDir = ?config(priv_dir, Config), + TODir = filename:join(DataDir, "test_server_if"), + Level = ?config(trace_level, Config), + TestSpec = [ + {event_handler,?eh,[{cbm,ct_test_support},{trace_level,Level}]}, + {suites,TODir,[ts_if_1_SUITE,ts_if_2_SUITE,ts_if_3_SUITE, + ts_if_4_SUITE,ts_if_5_SUITE,ts_if_6_SUITE, + ts_if_7_SUITE,ts_if_8_SUITE]}, + {skip_suites,TODir,[skipped_by_spec_1_SUITE],"should be skipped"}, + {skip_cases,TODir,skipped_by_spec_2_SUITE,[tc1],"should be skipped"} + ], + + TestSpecName = ct_test_support:write_testspec(TestSpec, PrivDir, "ts_if_1_spec"), + {Opts,ERPid} = setup({spec,TestSpecName}, Config), + ok = ct_test_support:run(ct, run_test, [Opts], Config), + Events = ct_test_support:get_events(ERPid, Config), + + ct_test_support:log_events(ts_if_1, + reformat(Events, ?eh), + PrivDir), + + TestEvents = test_events(ts_if_1), + ok = ct_test_support:verify_events(TestEvents, Events, Config). + + +%%%----------------------------------------------------------------- +%%% HELP FUNCTIONS +%%%----------------------------------------------------------------- + +setup(Test, Config) -> + Opts0 = ct_test_support:get_opts(Config), +% Level = ?config(trace_level, Config), +% EvHArgs = [{cbm,ct_test_support},{trace_level,Level}], +% Opts = Opts0 ++ [Test,{event_handler,{?eh,EvHArgs}}], + Opts = [Test | Opts0], + ERPid = ct_test_support:start_event_receiver(Config), + {Opts,ERPid}. + +reformat(Events, EH) -> + ct_test_support:reformat(Events, EH). +%reformat(Events, _EH) -> +% Events. + +%%%----------------------------------------------------------------- +%%% TEST EVENTS +%%%----------------------------------------------------------------- +test_events(ts_if_1) -> + [ + {?eh,start_logging,{'DEF','RUNDIR'}}, + {?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}}, + {?eh,start_info,{10,6,26}}, + {?eh,tc_start,{ts_if_1_SUITE,init_per_suite}}, + {?eh,tc_done,{ts_if_1_SUITE,init_per_suite,ok}}, + {?eh,tc_start,{ts_if_1_SUITE,tc1}}, + {?eh,tc_done,{ts_if_1_SUITE,tc1,{skipped, + {failed, + {ts_if_1_SUITE,init_per_testcase, + {timetrap_timeout,2000}}}}}}, + {?eh,test_stats,{0,0,{0,1}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc2}}, + {?eh,tc_done,{ts_if_1_SUITE,tc2, + {failed,{ts_if_1_SUITE,end_per_testcase,{timetrap_timeout,2000}}}}}, + {?eh,test_stats,{1,0,{0,1}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc3}}, + {?eh,tc_done,{ts_if_1_SUITE,tc3,{failed,{timetrap_timeout,2000}}}}, + {?eh,test_stats,{1,1,{0,1}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc4}}, + {?eh,tc_done,{ts_if_1_SUITE,tc4,{failed,{error,failed_on_purpose}}}}, + {?eh,test_stats,{1,2,{0,1}}}, + {?eh,tc_done,{ts_if_1_SUITE,tc5,{skipped,{sequence_failed,seq1,tc4}}}}, + {?eh,test_stats,{1,2,{1,1}}}, + + [{?eh,tc_start,{ts_if_1_SUITE,{init_per_group,seq2,[sequence]}}}, + {?eh,tc_done,{ts_if_1_SUITE,{init_per_group,seq2,[sequence]},ok}}, + {?eh,tc_start,{ts_if_1_SUITE,tc4}}, + {?eh,tc_done,{ts_if_1_SUITE,tc4,{failed,{error,failed_on_purpose}}}}, + {?eh,test_stats,{1,3,{1,1}}}, + {?eh,tc_auto_skip,{ts_if_1_SUITE,tc5,{failed,{ts_if_1_SUITE,tc4}}}}, + {?eh,test_stats,{1,3,{1,2}}}, + {?eh,tc_start,{ts_if_1_SUITE,{end_per_group,seq2,[sequence]}}}, + {?eh,tc_done,{ts_if_1_SUITE,{end_per_group,seq2,[sequence]},ok}}], + + {?eh,tc_start,{ts_if_1_SUITE,tc6}}, + {?eh,tc_done,{ts_if_1_SUITE,tc6,{skipped,{require_failed,{not_available,void}}}}}, + {?eh,test_stats,{1,3,{1,3}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc7}}, + {?eh,tc_done,{ts_if_1_SUITE,tc7,ok}}, + {?eh,test_stats,{2,3,{1,3}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc8}}, + {?eh,tc_done,{ts_if_1_SUITE,tc8,{skipped,"tc8 skipped"}}}, + {?eh,test_stats,{2,3,{2,3}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc9}}, + {?eh,tc_done,{ts_if_1_SUITE,tc9,{skipped,'tc9 skipped'}}}, + {?eh,test_stats,{2,3,{3,3}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc10}}, + {?eh,tc_done,{ts_if_1_SUITE,tc10,{failed,{error,{function_clause,'_'}}}}}, + {?eh,test_stats,{2,4,{3,3}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc11}}, + {?eh,tc_done,{ts_if_1_SUITE,tc11, + {skipped,{failed,{ts_if_1_SUITE,init_per_testcase,bad_return}}}}}, + {?eh,test_stats,{2,4,{3,4}}}, + + [{?eh,tc_start,{ts_if_1_SUITE,{init_per_group,g1,[]}}}, + {?eh,tc_done,{ts_if_1_SUITE,{init_per_group,g1,[]},{skipped,g1_got_skipped}}}, + {?eh,tc_auto_skip,{ts_if_1_SUITE,gtc1,g1_got_skipped}}, + {?eh,test_stats,{2,4,{3,5}}}, + {?eh,tc_auto_skip,{ts_if_1_SUITE,end_per_group,g1_got_skipped}}], + + {parallel, + [{?eh,tc_start,{ts_if_1_SUITE,{init_per_group,g2,[parallel]}}}, + {?eh,tc_done,{ts_if_1_SUITE,{init_per_group,g2,[parallel]},ok}}, + [{?eh,tc_start,{ts_if_1_SUITE,{init_per_group,g3,[]}}}, + {?eh,tc_done,{ts_if_1_SUITE,{init_per_group,g3,[]},{skipped,g3_got_skipped}}}, + {?eh,tc_auto_skip,{ts_if_1_SUITE,gtc2,g3_got_skipped}}, + {?eh,test_stats,{2,4,{3,6}}}, + {?eh,tc_auto_skip,{ts_if_1_SUITE,end_per_group,g3_got_skipped}}], + {?eh,tc_start,{ts_if_1_SUITE,{end_per_group,g2,[parallel]}}}, + {?eh,tc_done,{ts_if_1_SUITE,{end_per_group,g2,[parallel]},ok}}]}, + + {?eh,tc_start,{ts_if_1_SUITE,tc12}}, + {?eh,tc_done,{undefined,undefined,{testcase_aborted,{abort_current_testcase,tc12},'_'}}}, + {?eh,test_stats,{2,5,{3,6}}}, + {?eh,tc_start,{ts_if_1_SUITE,tc13}}, + {?eh,tc_done,{ts_if_1_SUITE,tc13,ok}}, + {?eh,test_stats,{3,5,{3,6}}}, + {?eh,tc_start,{ts_if_1_SUITE,end_per_suite}}, + {?eh,tc_done,{ts_if_1_SUITE,end_per_suite,ok}}, +%%! + {?eh,tc_start,{ts_if_2_SUITE,init_per_suite}}, + {?eh,tc_done,{ts_if_2_SUITE,init_per_suite, + {failed,{error,{suite0_failed,{exited,suite0_goes_boom}}}}}}, + {?eh,tc_auto_skip,{ts_if_2_SUITE,my_test_case, + {failed,{error,{suite0_failed,{exited,suite0_goes_boom}}}}}}, + {?eh,test_stats,{3,5,{3,7}}}, + {?eh,tc_auto_skip,{ts_if_2_SUITE,end_per_suite, + {failed,{error,{suite0_failed,{exited,suite0_goes_boom}}}}}}, + + {?eh,tc_start,{ct_framework,error_in_suite}}, + {?eh,test_stats,{3,6,{3,7}}}, + + {?eh,tc_start,{ct_framework,error_in_suite}}, + {?eh,test_stats,{3,7,{3,7}}}, + + {?eh,tc_start,{ts_if_5_SUITE,init_per_suite}}, + {?eh,tc_done,{ts_if_5_SUITE,init_per_suite, + {skipped,{require_failed_in_suite0,{not_available,undef_variable}}}}}, + {?eh,tc_auto_skip,{ts_if_5_SUITE,my_test_case, + {require_failed_in_suite0,{not_available,undef_variable}}}}, + {?eh,test_stats,{3,7,{3,8}}}, + {?eh,tc_auto_skip,{ts_if_5_SUITE,end_per_suite, + {require_failed_in_suite0,{not_available,undef_variable}}}}, + + {?eh,tc_start,{ts_if_6_SUITE,tc1}}, + {?eh,tc_done,{ts_if_6_SUITE,tc1,{failed,{error,{suite0_failed,{exited,suite0_byebye}}}}}}, + {?eh,test_stats,{3,7,{4,8}}}, + + {?eh,tc_start,{ts_if_7_SUITE,tc1}}, + {?eh,tc_done,{ts_if_7_SUITE,tc1,ok}}, + {?eh,test_stats,{4,7,{4,8}}}, + + {?eh,tc_start,{ts_if_8_SUITE,tc1}}, + {?eh,tc_done,{ts_if_8_SUITE,tc1,{failed,{error,failed_on_purpose}}}}, + {?eh,test_stats,{4,8,{4,8}}}, + + {?eh,tc_user_skip,{skipped_by_spec_1_SUITE,all,"should be skipped"}}, + {?eh,test_stats,{4,8,{5,8}}}, + + {?eh,tc_start,{skipped_by_spec_2_SUITE,init_per_suite}}, + {?eh,tc_done,{skipped_by_spec_2_SUITE,init_per_suite,ok}}, + {?eh,tc_user_skip,{skipped_by_spec_2_SUITE,tc1,"should be skipped"}}, + {?eh,test_stats,{4,8,{6,8}}}, + {?eh,tc_start,{skipped_by_spec_2_SUITE,end_per_suite}}, + {?eh,tc_done,{skipped_by_spec_2_SUITE,end_per_suite,ok}}, + + {?eh,test_done,{'DEF','STOP_TIME'}}, + {?eh,stop_logging,[]} + ]. + -- cgit v1.2.3