4
%% Copyright Ericsson AB 2009-2011. All Rights Reserved.
6
%% The contents of this file are subject to the Erlang Public License,
7
%% Version 1.1, (the "License"); you may not use this file except in
8
%% compliance with the License. You should have received a copy of the
9
%% Erlang Public License along with this software. If not, it can be
10
%% retrieved online at http://www.erlang.org/.
12
%% Software distributed under the License is distributed on an "AS IS"
13
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
14
%% the License for the specific language governing rights and limitations
20
%%%-------------------------------------------------------------------
21
%%% File: ct_sequence_1_SUITE
26
%%% The suites used for the test are located in the data directory.
27
%%%-------------------------------------------------------------------
28
-module(ct_sequence_1_SUITE).
32
-include_lib("common_test/include/ct.hrl").
33
-include_lib("common_test/include/ct_event.hrl").
35
-define(eh, ct_test_support_eh).
37
%%--------------------------------------------------------------------
38
%% TEST SERVER CALLBACK FUNCTIONS
39
%%--------------------------------------------------------------------
41
%%--------------------------------------------------------------------
42
%% Description: Since Common Test starts another Test Server
43
%% instance, the tests need to be performed on a separate node (or
44
%% there will be clashes with logging processes etc).
45
%%--------------------------------------------------------------------
46
init_per_suite(Config) ->
47
Config1 = ct_test_support:init_per_suite(Config),
50
end_per_suite(Config) ->
51
ct_test_support:end_per_suite(Config).
53
init_per_testcase(TestCase, Config) ->
54
ct_test_support:init_per_testcase(TestCase, Config).
56
end_per_testcase(TestCase, Config) ->
57
ct_test_support:end_per_testcase(TestCase, Config).
59
suite() -> [{ct_hooks,[ts_install_cth]}].
62
[subgroup_return_fail, subgroup_init_fail,
63
subgroup_after_failed_case,
64
case_after_subgroup_return_fail,
65
case_after_subgroup_fail_init].
70
init_per_group(_GroupName, Config) ->
73
end_per_group(_GroupName, Config) ->
77
%%--------------------------------------------------------------------
79
%%--------------------------------------------------------------------
81
%%%-----------------------------------------------------------------
84
subgroup_return_fail(Config) when is_list(Config) ->
85
execute(subgroup_return_fail,
86
"subgroups_1_SUITE", subgroup_return_fail,
89
%%%-----------------------------------------------------------------
92
subgroup_init_fail(Config) when is_list(Config) ->
93
execute(subgroup_init_fail,
94
"subgroups_1_SUITE", subgroup_init_fail,
97
%%%-----------------------------------------------------------------
100
subgroup_after_failed_case(Config) when is_list(Config) ->
101
execute(subgroup_after_failed_case,
102
"subgroups_1_SUITE", subgroup_after_failed_case,
105
%%%-----------------------------------------------------------------
108
case_after_subgroup_return_fail(Config) when is_list(Config) ->
109
execute(case_after_subgroup_return_fail,
110
"subgroups_1_SUITE", case_after_subgroup_return_fail,
113
%%%-----------------------------------------------------------------
116
case_after_subgroup_fail_init(Config) when is_list(Config) ->
117
execute(case_after_subgroup_fail_init,
118
"subgroups_1_SUITE", case_after_subgroup_fail_init,
121
%%%-----------------------------------------------------------------
123
%%%-----------------------------------------------------------------
125
execute(TestCase, SuiteName, Group, Config) ->
126
DataDir = ?config(data_dir, Config),
127
Suite = filename:join(DataDir, SuiteName),
129
{Opts,ERPid} = setup([{suite,Suite},{group,Group},{label,TestCase}], Config),
130
ok = ct_test_support:run(Opts, Config),
131
Events = ct_test_support:get_events(ERPid, Config),
133
ct_test_support:log_events(TestCase,
134
reformat(Events, ?eh),
135
?config(priv_dir, Config)),
137
TestEvents = events_to_check(TestCase),
138
ok = ct_test_support:verify_events(TestEvents, Events, Config).
140
setup(Test, Config) ->
141
Opts0 = ct_test_support:get_opts(Config),
142
Level = ?config(trace_level, Config),
143
EvHArgs = [{cbm,ct_test_support},{trace_level,Level}],
144
Opts = Opts0 ++ [{event_handler,{?eh,EvHArgs}} | Test],
145
ERPid = ct_test_support:start_event_receiver(Config),
148
reformat(Events, EH) ->
149
ct_test_support:reformat(Events, EH).
150
%reformat(Events, _EH) ->
153
%%%-----------------------------------------------------------------
155
%%%-----------------------------------------------------------------
156
events_to_check(Test) ->
157
%% 2 tests (ct:run_test + script_start) is default
158
events_to_check(Test, 2).
160
events_to_check(_, 0) ->
162
events_to_check(Test, N) ->
163
test_events(Test) ++ events_to_check(Test, N-1).
165
test_events(subgroup_return_fail) ->
167
{?eh,start_logging,{'DEF','RUNDIR'}},
168
{?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}},
169
{?eh,start_info,{1,1,2}},
171
{subgroups_1_SUITE,{init_per_group,subgroup_return_fail,[sequence]}}},
173
{subgroups_1_SUITE,{init_per_group,subgroup_return_fail,[sequence]},ok}},
175
{subgroups_1_SUITE,{init_per_group,return_fail,[]}}},
177
{subgroups_1_SUITE,{init_per_group,return_fail,[]},ok}},
178
{?eh,tc_start,{subgroups_1_SUITE,failing_tc}},
180
{subgroups_1_SUITE,failing_tc,{failed,{error,{{badmatch,3},'_'}}}}},
181
{?eh,test_stats,{0,1,{0,0}}},
183
{subgroups_1_SUITE,{end_per_group,return_fail,[]}}},
184
{?eh,tc_done,{subgroups_1_SUITE,{end_per_group,return_fail,[]},
185
{return_group_result,failed}}}],
187
{subgroups_1_SUITE,ok_tc,{group_result,return_fail,failed}}},
188
{?eh,test_stats,{0,1,{0,1}}},
190
{subgroups_1_SUITE,{end_per_group,subgroup_return_fail,[sequence]}}},
192
{subgroups_1_SUITE,{end_per_group,subgroup_return_fail,[sequence]},
193
{return_group_result,failed}}}],
194
{?eh,test_done,{'DEF','STOP_TIME'}},
195
{?eh,stop_logging,[]}
198
test_events(subgroup_init_fail) ->
200
{?eh,start_logging,{'DEF','RUNDIR'}},
201
{?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}},
202
{?eh,start_info,{1,1,2}},
204
{subgroups_1_SUITE,{init_per_group,subgroup_init_fail,[sequence]}}},
206
{subgroups_1_SUITE,{init_per_group,subgroup_init_fail,[sequence]},ok}},
207
[{?eh,tc_start,{subgroups_1_SUITE,{init_per_group,fail_init,[]}}},
208
{?eh,tc_done,{subgroups_1_SUITE,{init_per_group,fail_init,[]},
209
{failed,{error,init_per_group_fails_on_purpose}}}},
210
{?eh,tc_auto_skip,{subgroups_1_SUITE,ok_tc,
211
{failed,{subgroups_1_SUITE,init_per_group,
212
{'EXIT',init_per_group_fails_on_purpose}}}}},
213
{?eh,test_stats,{0,0,{0,1}}},
214
{?eh,tc_auto_skip,{subgroups_1_SUITE,end_per_group,
215
{failed,{subgroups_1_SUITE,init_per_group,
216
{'EXIT',init_per_group_fails_on_purpose}}}}}],
217
{?eh,tc_auto_skip,{subgroups_1_SUITE,ok_tc,{group_result,fail_init,failed}}},
218
{?eh,test_stats,{0,0,{0,2}}},
219
{?eh,tc_start,{subgroups_1_SUITE,{end_per_group,subgroup_init_fail,[sequence]}}},
220
{?eh,tc_done,{subgroups_1_SUITE,
221
{end_per_group,subgroup_init_fail,[sequence]},
222
{return_group_result,failed}}}],
223
{?eh,test_done,{'DEF','STOP_TIME'}},
224
{?eh,stop_logging,[]}
227
test_events(subgroup_after_failed_case) ->
229
{?eh,start_logging,{'DEF','RUNDIR'}},
230
{?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}},
231
{?eh,start_info,{1,1,2}},
232
[{?eh,tc_start,{subgroups_1_SUITE,
233
{init_per_group,subgroup_after_failed_case,[sequence]}}},
234
{?eh,tc_done,{subgroups_1_SUITE,
235
{init_per_group,subgroup_after_failed_case,[sequence]},ok}},
236
{?eh,tc_start,{subgroups_1_SUITE,failing_tc}},
237
{?eh,tc_done,{subgroups_1_SUITE,failing_tc,{failed,{error,{{badmatch,3},'_'}}}}},
238
{?eh,test_stats,{0,1,{0,0}}},
239
{?eh,tc_auto_skip,{subgroups_1_SUITE,ok_tc,{failed,{subgroups_1_SUITE,failing_tc}}}},
240
{?eh,test_stats,{0,1,{0,1}}},
241
{?eh,tc_start,{subgroups_1_SUITE,
242
{end_per_group,subgroup_after_failed_case,[sequence]}}},
243
{?eh,tc_done,{subgroups_1_SUITE,
244
{end_per_group,subgroup_after_failed_case,[sequence]},
245
{return_group_result,failed}}}],
246
{?eh,test_done,{'DEF','STOP_TIME'}},
247
{?eh,stop_logging,[]}
250
test_events(case_after_subgroup_return_fail) ->
252
{?eh,start_logging,{'DEF','RUNDIR'}},
253
{?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}},
254
{?eh,start_info,{1,1,2}},
255
[{?eh,tc_start,{subgroups_1_SUITE,
256
{init_per_group,case_after_subgroup_return_fail,[sequence]}}},
257
{?eh,tc_done,{subgroups_1_SUITE,
258
{init_per_group,case_after_subgroup_return_fail,[sequence]},ok}},
259
[{?eh,tc_start,{subgroups_1_SUITE,{init_per_group,return_fail,[]}}},
260
{?eh,tc_done,{subgroups_1_SUITE,{init_per_group,return_fail,[]},ok}},
261
{?eh,tc_start,{subgroups_1_SUITE,failing_tc}},
262
{?eh,tc_done,{subgroups_1_SUITE,failing_tc,{failed,{error,{{badmatch,3},'_'}}}}},
263
{?eh,test_stats,{0,1,{0,0}}},
264
{?eh,tc_start,{subgroups_1_SUITE,{end_per_group,return_fail,[]}}},
265
{?eh,tc_done,{subgroups_1_SUITE,{end_per_group,return_fail,[]},
266
{return_group_result,failed}}}],
267
{?eh,tc_auto_skip,{subgroups_1_SUITE,ok_tc,{group_result,return_fail,failed}}},
268
{?eh,test_stats,{0,1,{0,1}}},
269
{?eh,tc_start,{subgroups_1_SUITE,
270
{end_per_group,case_after_subgroup_return_fail,[sequence]}}},
271
{?eh,tc_done,{subgroups_1_SUITE,
272
{end_per_group,case_after_subgroup_return_fail,[sequence]},
273
{return_group_result,failed}}}],
274
{?eh,test_done,{'DEF','STOP_TIME'}},
275
{?eh,stop_logging,[]}
278
test_events(case_after_subgroup_fail_init) ->
280
{?eh,start_logging,{'DEF','RUNDIR'}},
281
{?eh,test_start,{'DEF',{'START_TIME','LOGDIR'}}},
282
{?eh,start_info,{1,1,2}},
283
[{?eh,tc_start,{subgroups_1_SUITE,
284
{init_per_group,case_after_subgroup_fail_init,[sequence]}}},
285
{?eh,tc_done,{subgroups_1_SUITE,
286
{init_per_group,case_after_subgroup_fail_init,[sequence]},ok}},
287
[{?eh,tc_start,{subgroups_1_SUITE,{init_per_group,fail_init,[]}}},
288
{?eh,tc_done,{subgroups_1_SUITE,
289
{init_per_group,fail_init,[]},
290
{failed,{error,init_per_group_fails_on_purpose}}}},
291
{?eh,tc_auto_skip,{subgroups_1_SUITE,ok_tc,
293
{subgroups_1_SUITE,init_per_group,
294
{'EXIT',init_per_group_fails_on_purpose}}}}},
295
{?eh,test_stats,{0,0,{0,1}}},
296
{?eh,tc_auto_skip,{subgroups_1_SUITE,end_per_group,
298
{subgroups_1_SUITE,init_per_group,
299
{'EXIT',init_per_group_fails_on_purpose}}}}}],
302
{subgroups_1_SUITE,ok_tc,{group_result,fail_init,failed}}},
303
{?eh,test_stats,{0,0,{0,2}}},
304
{?eh,tc_start,{subgroups_1_SUITE,
305
{end_per_group,case_after_subgroup_fail_init,[sequence]}}},
306
{?eh,tc_done,{subgroups_1_SUITE,
307
{end_per_group,case_after_subgroup_fail_init,[sequence]},
308
{return_group_result,failed}}}],
309
{?eh,test_done,{'DEF','STOP_TIME'}},
310
{?eh,stop_logging,[]}