blob: e894598079cf65a5b709fe5297f66e9d10e7716f [file] [log] [blame]
Harald Weltee13cfb22019-04-23 16:52:02 +02001module MSC_Tests_Iu {
2
Harald Welte34b5a952019-05-27 11:54:11 +02003/* Osmocom MSC test suite for Iu interface in TTCN-3
4 * (C) 2019 Harald Welte <laforge@gnumonks.org>
5 * All rights reserved.
6 *
7 * Released under the terms of GNU General Public License, Version 2 or
8 * (at your option) any later version.
9 *
10 * SPDX-License-Identifier: GPL-2.0-or-later
11 */
12
Harald Weltee13cfb22019-04-23 16:52:02 +020013import from General_Types all;
14import from Osmocom_Types all;
15
16import from BSC_ConnectionHandler all;
17import from MSC_Tests all;
18
19import from Osmocom_VTY_Functions all;
20
21import from GSUP_Emulation all;
22import from RAN_Emulation all;
23
24import from RANAP_Templates all;
25
26import from MobileL3_Types all;
27import from MobileL3_CommonIE_Types all;
28import from MobileL3_SMS_Types all;
29import from L3_Templates all;
30import from L3_Common all;
31
32
33
34testcase TC_iu_lu_imsi_reject() runs on MTC_CT {
35 var BSC_ConnHdlr vc_conn;
36 f_init(3);
37
38 vc_conn := f_start_handler(refers(f_tc_lu_imsi_reject), 1003, ran_idx := 2, ran_is_geran := false);
39 vc_conn.done;
40}
41
42testcase TC_iu_lu_imsi_timeout_gsup() runs on MTC_CT {
43 var BSC_ConnHdlr vc_conn;
44 f_init(3);
45
46 vc_conn := f_start_handler(refers(f_tc_lu_imsi_timeout_gsup), 1004, ran_idx := 2, ran_is_geran := false);
47 vc_conn.done;
48}
49
50testcase TC_iu_lu_imsi_auth3g_tmsi() runs on MTC_CT {
51 var BSC_ConnHdlr vc_conn;
52 f_init(3);
53 f_vty_config(MSCVTY, "network", "authentication required");
54
55 vc_conn := f_start_handler(refers(f_tc_lu_imsi_auth3g_tmsi), 1005, ran_idx := 2, ran_is_geran := false);
56 vc_conn.done;
57}
58
Pau Espin Pedrold3d54a92019-12-17 17:02:54 +010059testcase TC_iu_lu_imsi_timeout_tmsi_realloc() runs on MTC_CT {
60 var BSC_ConnHdlr vc_conn;
61 f_init(3);
62 f_vty_config(MSCVTY, "network", "authentication required");
63
64 vc_conn := f_start_handler(refers(f_tc_lu_imsi_timeout_tmsi_realloc), 1005, ran_idx := 2, ran_is_geran := false);
65 vc_conn.done;
66}
67
Harald Weltee13cfb22019-04-23 16:52:02 +020068testcase TC_iu_cmserv_imsi_unknown() runs on MTC_CT {
69 var BSC_ConnHdlr vc_conn;
70 f_init(3);
71 vc_conn := f_start_handler(refers(f_tc_cmserv_imsi_unknown), 1006, ran_idx := 2, ran_is_geran := false);
72 vc_conn.done;
73}
74
75testcase TC_iu_lu_and_mo_call() runs on MTC_CT {
76 var BSC_ConnHdlr vc_conn;
77 f_init(3);
78
79 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_call), 1007, ran_idx := 2, ran_is_geran := false);
80 vc_conn.done;
81}
82
Pau Espin Pedrola42745c2020-01-10 18:03:28 +010083testcase TC_iu_lu_and_mo_call_sccp_tiar_timeout() runs on MTC_CT {
84 var BSC_ConnHdlr vc_conn;
85
86 /* Set T(iar) in MSC low enough that it will trigger before other side
87 has time to keep alive with a T(ias). Keep recommended ratio of
88 T(iar) >= T(ias)*2 */
89 g_msc_sccp_timer_ias := 2;
90 g_msc_sccp_timer_iar := 5;
91
92 f_init(3);
93
94 vc_conn := f_start_handler(refers(f_lu_and_mo_call_sccp_tiar_timeout), 1019, ran_idx := 2, ran_is_geran := false);
95 vc_conn.done;
96}
97
Harald Weltee13cfb22019-04-23 16:52:02 +020098testcase TC_iu_lu_auth_sai_timeout() runs on MTC_CT {
99 var BSC_ConnHdlr vc_conn;
100 f_init(3);
101 f_vty_config(MSCVTY, "network", "authentication required");
102
103 vc_conn := f_start_handler(refers(f_tc_lu_auth_sai_timeout), 1008, ran_idx := 2, ran_is_geran := false);
104 vc_conn.done;
105}
106
107testcase TC_iu_lu_auth_sai_err() runs on MTC_CT {
108 var BSC_ConnHdlr vc_conn;
109 f_init(3);
110 f_vty_config(MSCVTY, "network", "authentication required");
111
112 vc_conn := f_start_handler(refers(f_tc_lu_auth_sai_err), 1009, ran_idx := 2, ran_is_geran := false);
113 vc_conn.done;
114}
115
116/* Test LU but RNC will send a Iu Release request in the middle */
117private function f_tc_iu_lu_release_request(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr {
118 f_init_handler(pars);
119
120 var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi)
121 var PDU_DTAP_MT dtap_mt;
122
123 /* tell GSUP dispatcher to send this IMSI to us */
124 f_create_gsup_expect(hex2str(g_pars.imsi));
125
126 /* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */
127 f_cl3_or_initial_ue(l3_lu);
128
129 f_sleep(1.0);
130 /* send release request in the middle of the LU */
131 BSSAP.send(ts_RANAP_IuReleaseRequest(ts_RanapCause_om_intervention));
132 alt {
133 [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { repeat; }
134 [] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)) {}
135 }
136 BSSAP.send(ts_RANAP_IuReleaseComplete);
137 alt {
138 /* See https://osmocom.org/issues/2862 */
139 [] BSSAP.receive(tr_RANAP_IuReleaseCommand(?)) {
140 setverdict(fail, "Got a second Iu Release Command, only one expected");
141 mtc.stop;
142 repeat;
143 }
144 [] BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_DISC_IND) {}
145 }
146 setverdict(pass);
147}
148testcase TC_iu_lu_release_request() runs on MTC_CT {
149 var BSC_ConnHdlr vc_conn;
150 f_init(3);
151
152 vc_conn := f_start_handler(refers(f_tc_iu_lu_release_request), 1010, ran_idx := 2, ran_is_geran := false);
153 vc_conn.done;
154}
155
156testcase TC_iu_lu_disconnect() runs on MTC_CT {
157 var BSC_ConnHdlr vc_conn;
158 f_init(3);
159
160 vc_conn := f_start_handler(refers(f_tc_lu_disconnect), 1011, ran_idx := 2, ran_is_geran := false);
161 vc_conn.done;
162}
163
164testcase TC_iu_lu_by_imei() runs on MTC_CT {
165 var BSC_ConnHdlr vc_conn;
166 f_init(3);
167
168 vc_conn := f_start_handler(refers(f_tc_lu_by_imei), 1012, ran_idx := 2, ran_is_geran := false);
169 vc_conn.done;
170}
171
172testcase TC_iu_imsi_detach_by_imsi() runs on MTC_CT {
173 var BSC_ConnHdlr vc_conn;
174 f_init(3);
175
176 vc_conn := f_start_handler(refers(f_tc_imsi_detach_by_imsi), 1014, ran_idx := 2, ran_is_geran := false);
177 vc_conn.done;
178}
179
180testcase TC_iu_imsi_detach_by_tmsi() runs on MTC_CT {
181 var BSC_ConnHdlr vc_conn;
182 f_init(3);
183
184 vc_conn := f_start_handler(refers(f_tc_imsi_detach_by_tmsi), 1015, ran_idx := 2, ran_is_geran := false);
185 vc_conn.done;
186}
187
188testcase TC_iu_imsi_detach_by_imei() runs on MTC_CT {
189 var BSC_ConnHdlr vc_conn;
190 f_init(3);
191
192 vc_conn := f_start_handler(refers(f_tc_imsi_detach_by_imei), 1016, ran_idx := 2, ran_is_geran := false);
193 vc_conn.done;
194}
195
196testcase TC_iu_emerg_call_imei_reject() runs on MTC_CT {
197 var BSC_ConnHdlr vc_conn;
198 f_init(3);
199
200 vc_conn := f_start_handler(refers(f_tc_emerg_call_imei_reject), 1017, ran_idx := 2, ran_is_geran := false);
201 vc_conn.done;
202}
203
204testcase TC_iu_emerg_call_imsi() runs on MTC_CT {
205 var BSC_ConnHdlr vc_conn;
206 f_init(3);
207
208 vc_conn := f_start_handler(refers(f_tc_emerg_call_imsi), 1018, ran_idx := 2, ran_is_geran := false);
209 vc_conn.done;
210}
211
212testcase TC_iu_establish_and_nothing() runs on MTC_CT {
213 var BSC_ConnHdlr vc_conn;
214 f_init(3);
215
216 vc_conn := f_start_handler(refers(f_tc_establish_and_nothing), 1027, ran_idx := 2, ran_is_geran := false);
217 vc_conn.done;
218}
219
220testcase TC_iu_mo_setup_and_nothing() runs on MTC_CT {
221 var BSC_ConnHdlr vc_conn;
222 f_init(3);
223
224 vc_conn := f_start_handler(refers(f_tc_mo_setup_and_nothing), 1028, ran_idx := 2, ran_is_geran := false);
225 vc_conn.done;
226}
227
228testcase TC_iu_mo_crcx_ran_timeout() runs on MTC_CT {
229 var BSC_ConnHdlr vc_conn;
230 f_init(3);
231
232 vc_conn := f_start_handler(refers(f_tc_mo_crcx_ran_timeout), 1029, ran_idx := 2, ran_is_geran := false);
233 vc_conn.done;
234}
235
236testcase TC_iu_mo_crcx_ran_reject() runs on MTC_CT {
237 var BSC_ConnHdlr vc_conn;
238 f_init(3);
239
240 vc_conn := f_start_handler(refers(f_tc_mo_crcx_ran_reject), 1030, ran_idx := 2, ran_is_geran := false);
241 vc_conn.done;
242}
243
244testcase TC_iu_mt_crcx_ran_reject() runs on MTC_CT {
245 var BSC_ConnHdlr vc_conn;
246 f_init(3);
247
248 vc_conn := f_start_handler(refers(f_tc_mt_crcx_ran_reject), 1031, ran_idx := 2, ran_is_geran := false);
249 vc_conn.done;
250}
251
252testcase TC_iu_mt_t310() runs on MTC_CT {
253 var BSC_ConnHdlr vc_conn;
254 f_init(3);
255
256 vc_conn := f_start_handler(refers(f_tc_mt_t310), 1032, ran_idx := 2, ran_is_geran := false);
257 vc_conn.done;
258}
259
260testcase TC_iu_gsup_cancel() runs on MTC_CT {
261 var BSC_ConnHdlr vc_conn;
262 f_init(3);
263
264 vc_conn := f_start_handler(refers(f_tc_gsup_cancel), 1033, ran_idx := 2, ran_is_geran := false);
265 vc_conn.done;
266}
267
268testcase TC_iu_mo_release_timeout() runs on MTC_CT {
269 var BSC_ConnHdlr vc_conn;
270 f_init(3);
271
272 vc_conn := f_start_handler(refers(f_tc_mo_release_timeout), 1040, ran_idx := 2, ran_is_geran := false);
273 vc_conn.done;
274}
275
Neels Hofmeyr8fe8a902019-11-03 05:51:03 +0100276testcase TC_iu_lu_and_mt_call() runs on MTC_CT {
277 var BSC_ConnHdlr vc_conn;
278 f_init(3);
279 vc_conn := f_start_handler(refers(f_tc_lu_and_mt_call), 1142, ran_idx := 2, ran_is_geran := false);
280 vc_conn.done;
281}
282
Harald Weltee13cfb22019-04-23 16:52:02 +0200283testcase TC_iu_lu_and_mo_sms() runs on MTC_CT {
284 var BSC_ConnHdlr vc_conn;
285 f_init(3);
286 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_sms), 1042, ran_idx := 2, ran_is_geran := false);
287 vc_conn.done;
288}
289
290testcase TC_iu_lu_and_mt_sms() runs on MTC_CT {
291 var BSC_ConnHdlrPars pars;
292 var BSC_ConnHdlr vc_conn;
293 f_init(3);
294 pars := f_init_pars(1043, ran_idx := 2, ran_is_geran := false);
295 vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms), pars);
296 vc_conn.done;
297}
298
299testcase TC_iu_lu_and_mt_sms_paging_and_nothing() runs on MTC_CT {
300 var BSC_ConnHdlrPars pars;
301 var BSC_ConnHdlr vc_conn;
302 f_init(3);
303 pars := f_init_pars(101843, ran_idx := 2, ran_is_geran := false);
304 vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms_paging_and_nothing), pars);
305 vc_conn.done;
306}
307
Alexander Couzensfc02f242019-09-12 03:43:18 +0200308testcase TC_iu_lu_and_mt_sms_paging_repeated() runs on MTC_CT {
309 var BSC_ConnHdlrPars pars;
310 var BSC_ConnHdlr vc_conn;
311 f_init(3);
Neels Hofmeyrd8ad7c02019-11-28 01:36:01 +0100312 pars := f_init_pars(101844, ran_idx := 2, ran_is_geran := false);
Alexander Couzensfc02f242019-09-12 03:43:18 +0200313 vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms_paging_repeated), pars);
314 vc_conn.done;
315}
316
Harald Weltee13cfb22019-04-23 16:52:02 +0200317testcase TC_iu_smpp_mo_sms() runs on MTC_CT {
318 var BSC_ConnHdlr vc_conn;
319 f_init(3);
320 f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "default-route");
321 vc_conn := f_start_handler(refers(f_tc_smpp_mo_sms), 1044, ran_idx := 2, ran_is_geran := false);
322 vc_conn.done;
323 f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "no default-route");
324}
325
326testcase TC_iu_gsup_mo_sms() runs on MTC_CT {
327 var BSC_ConnHdlr vc_conn;
328 f_init(3);
329 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
330 vc_conn := f_start_handler(refers(f_tc_gsup_mo_sms), 1088, ran_idx := 2, ran_is_geran := false);
331 vc_conn.done;
332 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
333}
334
335testcase TC_iu_gsup_mo_smma() runs on MTC_CT {
336 var BSC_ConnHdlr vc_conn;
337 f_init(3);
338 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
339 vc_conn := f_start_handler(refers(f_tc_gsup_mo_smma), 1089, ran_idx := 2, ran_is_geran := false);
340 vc_conn.done;
341 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
342}
343
344testcase TC_iu_gsup_mt_sms_ack() runs on MTC_CT {
345 var BSC_ConnHdlrPars pars;
346 var BSC_ConnHdlr vc_conn;
347 f_init(3);
348 pars := f_init_pars(1090, ran_idx := 2, ran_is_geran := false);
349 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
350 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mt_sms_ack), pars);
351 vc_conn.done;
352 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
353}
354
355testcase TC_iu_gsup_mt_sms_err() runs on MTC_CT {
356 var BSC_ConnHdlrPars pars;
357 var BSC_ConnHdlr vc_conn;
358 f_init(3);
359 pars := f_init_pars(1091, ran_idx := 2, ran_is_geran := false);
360 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
361 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mt_sms_err), pars);
362 vc_conn.done;
363 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
364}
365
366testcase TC_iu_gsup_mt_sms_rp_mr() runs on MTC_CT {
367 var BSC_ConnHdlrPars pars;
368 var BSC_ConnHdlr vc_conn;
369 f_init(3);
370 pars := f_init_pars(1092, ran_idx := 2, ran_is_geran := false);
371 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
372 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mt_sms_rp_mr), pars);
373 vc_conn.done;
374 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
375}
376
377testcase TC_iu_gsup_mo_mt_sms_rp_mr() runs on MTC_CT {
378 var BSC_ConnHdlrPars pars;
379 var BSC_ConnHdlr vc_conn;
380 f_init(3);
381 pars := f_init_pars(1093, ran_idx := 2, ran_is_geran := false);
382 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
383 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mo_mt_sms_rp_mr), pars);
384 vc_conn.done;
385 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
386}
387
388testcase TC_iu_lu_and_mo_ussd_single_request() runs on MTC_CT {
389 var BSC_ConnHdlr vc_conn;
390 f_init(3);
391 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_ussd_single_request), 1046, ran_idx := 2, ran_is_geran := false);
392 vc_conn.done;
393}
394
395testcase TC_iu_lu_and_mt_ussd_notification() runs on MTC_CT {
396 var BSC_ConnHdlr vc_conn;
397 f_init(3);
398 vc_conn := f_start_handler(refers(f_tc_lu_and_mt_ussd_notification), 1047, ran_idx := 2, ran_is_geran := false);
399 vc_conn.done;
400}
401
402testcase TC_iu_lu_and_mo_ussd_during_mt_call() runs on MTC_CT {
403 var BSC_ConnHdlr vc_conn;
404 f_init(3);
405 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_ussd_during_mt_call), 1048, ran_idx := 2, ran_is_geran := false);
406 vc_conn.done;
407}
408
409testcase TC_mo_cc_iu_release() runs on MTC_CT {
410 var BSC_ConnHdlr vc_conn;
411 f_init(3);
412
413 vc_conn := f_start_handler(refers(f_tc_mo_cc_bssmap_clear), 1043, ran_idx := 2, ran_is_geran := false);
414 vc_conn.done;
415}
416
417testcase TC_iu_lu_and_mt_ussd_during_mt_call() runs on MTC_CT {
418 var BSC_ConnHdlr vc_conn;
419 f_init(3);
420 vc_conn := f_start_handler(refers(f_tc_lu_and_mt_ussd_during_mt_call), 1049, ran_idx := 2, ran_is_geran := false);
421 vc_conn.done;
422}
423
424testcase TC_iu_lu_and_mo_ussd_mo_release() runs on MTC_CT {
425 var BSC_ConnHdlr vc_conn;
Vadim Yanitskiyba0b0aa2019-06-20 06:53:47 +0700426 f_init(3);
Harald Weltee13cfb22019-04-23 16:52:02 +0200427 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_ussd_mo_release), 1050, ran_idx := 2, ran_is_geran := false);
428 vc_conn.done;
429}
430
431testcase TC_iu_lu_and_ss_session_timeout() runs on MTC_CT {
432 var BSC_ConnHdlr vc_conn;
433 f_init(3);
434 f_vty_config(MSCVTY, "msc", "ncss guard-timeout 3");
435 vc_conn := f_start_handler(refers(f_tc_lu_and_ss_session_timeout), 1051, ran_idx := 2, ran_is_geran := false);
436 vc_conn.done;
437 f_vty_config(MSCVTY, "msc", "ncss guard-timeout 0");
438}
439
Vadim Yanitskiy373b0542020-01-07 22:57:46 +0100440testcase TC_iu_mt_ussd_for_unknown_subscr() runs on MTC_CT {
441 var BSC_ConnHdlr vc_conn;
442 f_init(3);
443 vc_conn := f_start_handler(refers(f_tc_mt_ussd_for_unknown_subscr), 1052,
444 ran_idx := 2, ran_is_geran := false);
445 vc_conn.done;
446}
447
448testcase TC_iu_mo_ussd_for_unknown_trans() runs on MTC_CT {
449 var BSC_ConnHdlr vc_conn;
450 f_init(3);
451 vc_conn := f_start_handler(refers(f_tc_mo_ussd_for_unknown_trans), 1053,
452 ran_idx := 2, ran_is_geran := false);
453 vc_conn.done;
454}
455
456testcase TC_iu_proc_ss_for_unknown_session() runs on MTC_CT {
457 var BSC_ConnHdlr vc_conn;
458 f_init(3);
459 vc_conn := f_start_handler(refers(f_tc_proc_ss_for_unknown_session), 1055,
460 ran_idx := 2, ran_is_geran := false);
461 vc_conn.done;
462}
463
464testcase TC_iu_proc_ss_paging_fail() runs on MTC_CT {
465 var BSC_ConnHdlr vc_conn;
466 f_init(3);
467 vc_conn := f_start_handler(refers(f_tc_proc_ss_paging_fail), 1056,
468 ran_idx := 2, ran_is_geran := false);
469 vc_conn.done;
470}
471
472testcase TC_iu_proc_ss_abort() runs on MTC_CT {
473 var BSC_ConnHdlr vc_conn;
474 f_init(3);
475 vc_conn := f_start_handler(refers(f_tc_proc_ss_abort), 1057,
476 ran_idx := 2, ran_is_geran := false);
477 vc_conn.done;
478}
479
Vadim Yanitskiy1c9754d2020-01-07 21:56:55 +0100480/* Verify multiple concurrent MO SS/USSD transactions
481 * (one subscriber - one transaction) */
482testcase TC_iu_multi_lu_and_mo_ussd() runs on MTC_CT {
483 var BSC_ConnHdlr vc_conn[8];
484 var BSC_ConnHdlrPars pars;
485 var integer i;
486
487 f_init(3);
488
489 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
490 pars := f_init_pars(1100 + i, ran_idx := 2, ran_is_geran := false);
491 vc_conn[i] := f_start_handler_with_pars(refers(f_tc_lu_and_mo_ussd_single_request), pars);
492 }
493
494 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
495 vc_conn[i].done;
496 }
497}
498
499/* Verify multiple concurrent MT SS/USSD transactions
500 * (one subscriber - one transaction) */
501testcase TC_iu_multi_lu_and_mt_ussd() runs on MTC_CT {
502 var BSC_ConnHdlr vc_conn[8];
503 var BSC_ConnHdlrPars pars;
504 var integer i;
505
506 f_init(3);
507
508 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
509 pars := f_init_pars(1110 + i, ran_idx := 2, ran_is_geran := false,
510 gsup_sid := '200001'O & int2oct(i, 1));
511 vc_conn[i] := f_start_handler_with_pars(refers(f_tc_lu_and_mt_ussd_notification), pars);
512 }
513
514 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
515 vc_conn[i].done;
516 }
517}
518
Harald Welteb2284bd2019-05-10 11:30:43 +0200519testcase TC_iu_lu_with_invalid_mcc_mnc() runs on MTC_CT {
520 var BSC_ConnHdlr vc_conn;
521 f_init(3);
522 vc_conn := f_start_handler(refers(f_tc_lu_with_invalid_mcc_mnc), 1054, ran_idx := 2, ran_is_geran := false);
523 vc_conn.done;
524}
525
Harald Weltee13cfb22019-04-23 16:52:02 +0200526control {
527 execute( TC_iu_lu_imsi_reject() );
528 execute( TC_iu_lu_imsi_timeout_gsup() );
529 execute( TC_iu_lu_imsi_auth3g_tmsi() );
Pau Espin Pedrold3d54a92019-12-17 17:02:54 +0100530 execute( TC_iu_lu_imsi_timeout_tmsi_realloc() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200531 execute( TC_iu_cmserv_imsi_unknown() );
532 execute( TC_iu_lu_and_mo_call() );
Pau Espin Pedrola42745c2020-01-10 18:03:28 +0100533 execute( TC_iu_lu_and_mo_call_sccp_tiar_timeout() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200534 execute( TC_iu_lu_auth_sai_timeout() );
535 execute( TC_iu_lu_auth_sai_err() );
536 execute( TC_iu_lu_release_request() );
537 execute( TC_iu_lu_disconnect() );
538 execute( TC_iu_lu_by_imei() );
539 execute( TC_iu_imsi_detach_by_imsi() );
540 execute( TC_iu_imsi_detach_by_tmsi() );
541 execute( TC_iu_imsi_detach_by_imei() );
542 execute( TC_iu_emerg_call_imei_reject() );
543 execute( TC_iu_emerg_call_imsi() );
544 execute( TC_iu_establish_and_nothing() );
545 execute( TC_iu_mo_setup_and_nothing() );
546 execute( TC_iu_mo_crcx_ran_timeout() );
547 execute( TC_iu_mo_crcx_ran_reject() );
548 execute( TC_iu_mt_crcx_ran_reject() );
549 execute( TC_iu_gsup_cancel() );
550 execute( TC_iu_mo_release_timeout() );
551 execute( TC_reset_two_1iu() );
552
Neels Hofmeyr8fe8a902019-11-03 05:51:03 +0100553 execute( TC_iu_lu_and_mt_call() );
554
Harald Weltee13cfb22019-04-23 16:52:02 +0200555 execute( TC_iu_lu_and_mo_sms() );
556 execute( TC_iu_lu_and_mt_sms() );
557 execute( TC_iu_lu_and_mt_sms_paging_and_nothing() );
Alexander Couzensfc02f242019-09-12 03:43:18 +0200558 execute( TC_iu_lu_and_mt_sms_paging_repeated() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200559 execute( TC_iu_smpp_mo_sms() );
560
561 execute( TC_iu_gsup_mo_sms() );
562 execute( TC_iu_gsup_mo_smma() );
563 execute( TC_iu_gsup_mt_sms_ack() );
564 execute( TC_iu_gsup_mt_sms_err() );
565 execute( TC_iu_gsup_mt_sms_rp_mr() );
566 execute( TC_iu_gsup_mo_mt_sms_rp_mr() );
567
568 execute( TC_iu_lu_and_mo_ussd_single_request() );
569 execute( TC_iu_lu_and_mt_ussd_notification() );
570 execute( TC_iu_lu_and_mo_ussd_during_mt_call() );
571 execute( TC_iu_lu_and_mt_ussd_during_mt_call() );
572 execute( TC_iu_lu_and_mo_ussd_mo_release() );
573 execute( TC_iu_lu_and_ss_session_timeout() );
Vadim Yanitskiy373b0542020-01-07 22:57:46 +0100574
575 execute( TC_iu_mt_ussd_for_unknown_subscr() );
576 execute( TC_iu_mo_ussd_for_unknown_trans() );
577 execute( TC_iu_proc_ss_for_unknown_session() );
578 execute( TC_iu_proc_ss_paging_fail() );
579 execute( TC_iu_proc_ss_abort() );
580
Vadim Yanitskiy1c9754d2020-01-07 21:56:55 +0100581 execute( TC_iu_multi_lu_and_mo_ussd() );
582 execute( TC_iu_multi_lu_and_mt_ussd() );
583
Harald Welteb2284bd2019-05-10 11:30:43 +0200584 execute( TC_iu_lu_with_invalid_mcc_mnc() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200585
586 /* TODO: Iu + SGsAP related tests, e.g. paging on IuCS */
587
588 /* Run this last: at the time of writing this test crashes the MSC */
589 execute( TC_mo_cc_iu_release() );
590}
591
592
593}