blob: 361dd83a8a9665c26e7e64b8b5bed4bfadb75331 [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
Neels Hofmeyrb58d9742019-11-27 18:44:54 +0100283testcase TC_iu_lu_and_mt_call_already_paging() 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_mt_call_already_paging), 1142, ran_idx := 2, ran_is_geran := false);
287 vc_conn.done;
288}
289
Harald Weltee13cfb22019-04-23 16:52:02 +0200290testcase TC_iu_lu_and_mo_sms() runs on MTC_CT {
291 var BSC_ConnHdlr vc_conn;
292 f_init(3);
293 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_sms), 1042, ran_idx := 2, ran_is_geran := false);
294 vc_conn.done;
295}
296
297testcase TC_iu_lu_and_mt_sms() runs on MTC_CT {
298 var BSC_ConnHdlrPars pars;
299 var BSC_ConnHdlr vc_conn;
300 f_init(3);
301 pars := f_init_pars(1043, ran_idx := 2, ran_is_geran := false);
302 vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms), pars);
303 vc_conn.done;
304}
305
Neels Hofmeyrb58d9742019-11-27 18:44:54 +0100306testcase TC_iu_lu_and_mt_sms_already_paging() runs on MTC_CT {
307 var BSC_ConnHdlrPars pars;
308 var BSC_ConnHdlr vc_conn;
309 f_init(3);
310 pars := f_init_pars(101045, ran_idx := 2, ran_is_geran := false);
311 vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms_already_paging), pars);
312 vc_conn.done;
313}
314
Harald Weltee13cfb22019-04-23 16:52:02 +0200315testcase TC_iu_lu_and_mt_sms_paging_and_nothing() runs on MTC_CT {
316 var BSC_ConnHdlrPars pars;
317 var BSC_ConnHdlr vc_conn;
318 f_init(3);
319 pars := f_init_pars(101843, ran_idx := 2, ran_is_geran := false);
320 vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms_paging_and_nothing), pars);
321 vc_conn.done;
322}
323
Alexander Couzensfc02f242019-09-12 03:43:18 +0200324testcase TC_iu_lu_and_mt_sms_paging_repeated() runs on MTC_CT {
325 var BSC_ConnHdlrPars pars;
326 var BSC_ConnHdlr vc_conn;
327 f_init(3);
Neels Hofmeyrd8ad7c02019-11-28 01:36:01 +0100328 pars := f_init_pars(101844, ran_idx := 2, ran_is_geran := false);
Alexander Couzensfc02f242019-09-12 03:43:18 +0200329 vc_conn := f_start_handler_with_pars(refers(f_tc_lu_and_mt_sms_paging_repeated), pars);
330 vc_conn.done;
331}
332
Harald Weltee13cfb22019-04-23 16:52:02 +0200333testcase TC_iu_smpp_mo_sms() runs on MTC_CT {
334 var BSC_ConnHdlr vc_conn;
335 f_init(3);
336 f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "default-route");
337 vc_conn := f_start_handler(refers(f_tc_smpp_mo_sms), 1044, ran_idx := 2, ran_is_geran := false);
338 vc_conn.done;
339 f_vty_config2(MSCVTY, { "smpp", "esme msc_tester"}, "no default-route");
340}
341
342testcase TC_iu_gsup_mo_sms() runs on MTC_CT {
343 var BSC_ConnHdlr vc_conn;
344 f_init(3);
345 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
346 vc_conn := f_start_handler(refers(f_tc_gsup_mo_sms), 1088, ran_idx := 2, ran_is_geran := false);
347 vc_conn.done;
348 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
349}
350
351testcase TC_iu_gsup_mo_smma() runs on MTC_CT {
352 var BSC_ConnHdlr vc_conn;
353 f_init(3);
354 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
355 vc_conn := f_start_handler(refers(f_tc_gsup_mo_smma), 1089, ran_idx := 2, ran_is_geran := false);
356 vc_conn.done;
357 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
358}
359
360testcase TC_iu_gsup_mt_sms_ack() runs on MTC_CT {
361 var BSC_ConnHdlrPars pars;
362 var BSC_ConnHdlr vc_conn;
363 f_init(3);
364 pars := f_init_pars(1090, ran_idx := 2, ran_is_geran := false);
365 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
366 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mt_sms_ack), pars);
367 vc_conn.done;
368 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
369}
370
371testcase TC_iu_gsup_mt_sms_err() runs on MTC_CT {
372 var BSC_ConnHdlrPars pars;
373 var BSC_ConnHdlr vc_conn;
374 f_init(3);
375 pars := f_init_pars(1091, ran_idx := 2, ran_is_geran := false);
376 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
377 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mt_sms_err), pars);
378 vc_conn.done;
379 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
380}
381
382testcase TC_iu_gsup_mt_sms_rp_mr() runs on MTC_CT {
383 var BSC_ConnHdlrPars pars;
384 var BSC_ConnHdlr vc_conn;
385 f_init(3);
386 pars := f_init_pars(1092, ran_idx := 2, ran_is_geran := false);
387 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
388 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mt_sms_rp_mr), pars);
389 vc_conn.done;
390 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
391}
392
393testcase TC_iu_gsup_mo_mt_sms_rp_mr() runs on MTC_CT {
394 var BSC_ConnHdlrPars pars;
395 var BSC_ConnHdlr vc_conn;
396 f_init(3);
397 pars := f_init_pars(1093, ran_idx := 2, ran_is_geran := false);
398 f_vty_config(MSCVTY, "msc", "sms-over-gsup");
399 vc_conn := f_start_handler_with_pars(refers(f_tc_gsup_mo_mt_sms_rp_mr), pars);
400 vc_conn.done;
401 f_vty_config(MSCVTY, "msc", "no sms-over-gsup");
402}
403
404testcase TC_iu_lu_and_mo_ussd_single_request() runs on MTC_CT {
405 var BSC_ConnHdlr vc_conn;
406 f_init(3);
407 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_ussd_single_request), 1046, ran_idx := 2, ran_is_geran := false);
408 vc_conn.done;
409}
410
411testcase TC_iu_lu_and_mt_ussd_notification() runs on MTC_CT {
412 var BSC_ConnHdlr vc_conn;
413 f_init(3);
414 vc_conn := f_start_handler(refers(f_tc_lu_and_mt_ussd_notification), 1047, ran_idx := 2, ran_is_geran := false);
415 vc_conn.done;
416}
417
418testcase TC_iu_lu_and_mo_ussd_during_mt_call() runs on MTC_CT {
419 var BSC_ConnHdlr vc_conn;
420 f_init(3);
421 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_ussd_during_mt_call), 1048, ran_idx := 2, ran_is_geran := false);
422 vc_conn.done;
423}
424
425testcase TC_mo_cc_iu_release() runs on MTC_CT {
426 var BSC_ConnHdlr vc_conn;
427 f_init(3);
428
429 vc_conn := f_start_handler(refers(f_tc_mo_cc_bssmap_clear), 1043, ran_idx := 2, ran_is_geran := false);
430 vc_conn.done;
431}
432
433testcase TC_iu_lu_and_mt_ussd_during_mt_call() runs on MTC_CT {
434 var BSC_ConnHdlr vc_conn;
435 f_init(3);
436 vc_conn := f_start_handler(refers(f_tc_lu_and_mt_ussd_during_mt_call), 1049, ran_idx := 2, ran_is_geran := false);
437 vc_conn.done;
438}
439
440testcase TC_iu_lu_and_mo_ussd_mo_release() runs on MTC_CT {
441 var BSC_ConnHdlr vc_conn;
Vadim Yanitskiyba0b0aa2019-06-20 06:53:47 +0700442 f_init(3);
Harald Weltee13cfb22019-04-23 16:52:02 +0200443 vc_conn := f_start_handler(refers(f_tc_lu_and_mo_ussd_mo_release), 1050, ran_idx := 2, ran_is_geran := false);
444 vc_conn.done;
445}
446
447testcase TC_iu_lu_and_ss_session_timeout() runs on MTC_CT {
448 var BSC_ConnHdlr vc_conn;
449 f_init(3);
450 f_vty_config(MSCVTY, "msc", "ncss guard-timeout 3");
451 vc_conn := f_start_handler(refers(f_tc_lu_and_ss_session_timeout), 1051, ran_idx := 2, ran_is_geran := false);
452 vc_conn.done;
453 f_vty_config(MSCVTY, "msc", "ncss guard-timeout 0");
454}
455
Vadim Yanitskiy373b0542020-01-07 22:57:46 +0100456testcase TC_iu_mt_ussd_for_unknown_subscr() runs on MTC_CT {
457 var BSC_ConnHdlr vc_conn;
458 f_init(3);
459 vc_conn := f_start_handler(refers(f_tc_mt_ussd_for_unknown_subscr), 1052,
460 ran_idx := 2, ran_is_geran := false);
461 vc_conn.done;
462}
463
464testcase TC_iu_mo_ussd_for_unknown_trans() runs on MTC_CT {
465 var BSC_ConnHdlr vc_conn;
466 f_init(3);
467 vc_conn := f_start_handler(refers(f_tc_mo_ussd_for_unknown_trans), 1053,
468 ran_idx := 2, ran_is_geran := false);
469 vc_conn.done;
470}
471
472testcase TC_iu_proc_ss_for_unknown_session() 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_for_unknown_session), 1055,
476 ran_idx := 2, ran_is_geran := false);
477 vc_conn.done;
478}
479
480testcase TC_iu_proc_ss_paging_fail() runs on MTC_CT {
481 var BSC_ConnHdlr vc_conn;
482 f_init(3);
483 vc_conn := f_start_handler(refers(f_tc_proc_ss_paging_fail), 1056,
484 ran_idx := 2, ran_is_geran := false);
485 vc_conn.done;
486}
487
488testcase TC_iu_proc_ss_abort() runs on MTC_CT {
489 var BSC_ConnHdlr vc_conn;
490 f_init(3);
491 vc_conn := f_start_handler(refers(f_tc_proc_ss_abort), 1057,
492 ran_idx := 2, ran_is_geran := false);
493 vc_conn.done;
494}
495
Vadim Yanitskiy1c9754d2020-01-07 21:56:55 +0100496/* Verify multiple concurrent MO SS/USSD transactions
497 * (one subscriber - one transaction) */
498testcase TC_iu_multi_lu_and_mo_ussd() runs on MTC_CT {
Vadim Yanitskiy5ef90a02020-01-11 17:21:24 +0100499 var BSC_ConnHdlr vc_conn[16];
Vadim Yanitskiy1c9754d2020-01-07 21:56:55 +0100500 var BSC_ConnHdlrPars pars;
501 var integer i;
502
503 f_init(3);
504
505 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
506 pars := f_init_pars(1100 + i, ran_idx := 2, ran_is_geran := false);
507 vc_conn[i] := f_start_handler_with_pars(refers(f_tc_lu_and_mo_ussd_single_request), pars);
508 }
509
510 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
511 vc_conn[i].done;
512 }
513}
514
515/* Verify multiple concurrent MT SS/USSD transactions
516 * (one subscriber - one transaction) */
517testcase TC_iu_multi_lu_and_mt_ussd() runs on MTC_CT {
Vadim Yanitskiy5ef90a02020-01-11 17:21:24 +0100518 var BSC_ConnHdlr vc_conn[16];
Vadim Yanitskiy1c9754d2020-01-07 21:56:55 +0100519 var BSC_ConnHdlrPars pars;
520 var integer i;
521
522 f_init(3);
523
524 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
Vadim Yanitskiy5ef90a02020-01-11 17:21:24 +0100525 pars := f_init_pars(1116 + i, ran_idx := 2, ran_is_geran := false,
Vadim Yanitskiy1c9754d2020-01-07 21:56:55 +0100526 gsup_sid := '200001'O & int2oct(i, 1));
527 vc_conn[i] := f_start_handler_with_pars(refers(f_tc_lu_and_mt_ussd_notification), pars);
528 }
529
530 for (i := 0; i < sizeof(vc_conn); i := i + 1) {
531 vc_conn[i].done;
532 }
533}
534
Harald Welteb2284bd2019-05-10 11:30:43 +0200535testcase TC_iu_lu_with_invalid_mcc_mnc() runs on MTC_CT {
536 var BSC_ConnHdlr vc_conn;
537 f_init(3);
538 vc_conn := f_start_handler(refers(f_tc_lu_with_invalid_mcc_mnc), 1054, ran_idx := 2, ran_is_geran := false);
539 vc_conn.done;
540}
541
Vadim Yanitskiy25219062020-01-21 01:41:33 +0700542testcase TC_iu_lu_and_expire_while_paging() runs on MTC_CT {
543 var BSC_ConnHdlr vc_conn;
544 f_init(3);
545 vc_conn := f_start_handler(refers(f_tc_lu_and_expire_while_paging), 1055,
546 ran_idx := 2, ran_is_geran := false);
547 vc_conn.done;
548}
549
Harald Weltee13cfb22019-04-23 16:52:02 +0200550control {
551 execute( TC_iu_lu_imsi_reject() );
552 execute( TC_iu_lu_imsi_timeout_gsup() );
553 execute( TC_iu_lu_imsi_auth3g_tmsi() );
Pau Espin Pedrold3d54a92019-12-17 17:02:54 +0100554 execute( TC_iu_lu_imsi_timeout_tmsi_realloc() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200555 execute( TC_iu_cmserv_imsi_unknown() );
556 execute( TC_iu_lu_and_mo_call() );
Pau Espin Pedrola42745c2020-01-10 18:03:28 +0100557 execute( TC_iu_lu_and_mo_call_sccp_tiar_timeout() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200558 execute( TC_iu_lu_auth_sai_timeout() );
559 execute( TC_iu_lu_auth_sai_err() );
560 execute( TC_iu_lu_release_request() );
561 execute( TC_iu_lu_disconnect() );
562 execute( TC_iu_lu_by_imei() );
563 execute( TC_iu_imsi_detach_by_imsi() );
564 execute( TC_iu_imsi_detach_by_tmsi() );
565 execute( TC_iu_imsi_detach_by_imei() );
566 execute( TC_iu_emerg_call_imei_reject() );
567 execute( TC_iu_emerg_call_imsi() );
568 execute( TC_iu_establish_and_nothing() );
569 execute( TC_iu_mo_setup_and_nothing() );
570 execute( TC_iu_mo_crcx_ran_timeout() );
571 execute( TC_iu_mo_crcx_ran_reject() );
572 execute( TC_iu_mt_crcx_ran_reject() );
573 execute( TC_iu_gsup_cancel() );
574 execute( TC_iu_mo_release_timeout() );
575 execute( TC_reset_two_1iu() );
576
Neels Hofmeyr8fe8a902019-11-03 05:51:03 +0100577 execute( TC_iu_lu_and_mt_call() );
Neels Hofmeyrb58d9742019-11-27 18:44:54 +0100578 execute( TC_iu_lu_and_mt_call_already_paging() );
Neels Hofmeyr8fe8a902019-11-03 05:51:03 +0100579
Harald Weltee13cfb22019-04-23 16:52:02 +0200580 execute( TC_iu_lu_and_mo_sms() );
581 execute( TC_iu_lu_and_mt_sms() );
Neels Hofmeyrb58d9742019-11-27 18:44:54 +0100582 execute( TC_iu_lu_and_mt_sms_already_paging() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200583 execute( TC_iu_lu_and_mt_sms_paging_and_nothing() );
Alexander Couzensfc02f242019-09-12 03:43:18 +0200584 execute( TC_iu_lu_and_mt_sms_paging_repeated() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200585 execute( TC_iu_smpp_mo_sms() );
586
587 execute( TC_iu_gsup_mo_sms() );
588 execute( TC_iu_gsup_mo_smma() );
589 execute( TC_iu_gsup_mt_sms_ack() );
590 execute( TC_iu_gsup_mt_sms_err() );
591 execute( TC_iu_gsup_mt_sms_rp_mr() );
592 execute( TC_iu_gsup_mo_mt_sms_rp_mr() );
593
594 execute( TC_iu_lu_and_mo_ussd_single_request() );
595 execute( TC_iu_lu_and_mt_ussd_notification() );
596 execute( TC_iu_lu_and_mo_ussd_during_mt_call() );
597 execute( TC_iu_lu_and_mt_ussd_during_mt_call() );
598 execute( TC_iu_lu_and_mo_ussd_mo_release() );
599 execute( TC_iu_lu_and_ss_session_timeout() );
Vadim Yanitskiy373b0542020-01-07 22:57:46 +0100600
601 execute( TC_iu_mt_ussd_for_unknown_subscr() );
602 execute( TC_iu_mo_ussd_for_unknown_trans() );
603 execute( TC_iu_proc_ss_for_unknown_session() );
604 execute( TC_iu_proc_ss_paging_fail() );
605 execute( TC_iu_proc_ss_abort() );
606
Vadim Yanitskiy1c9754d2020-01-07 21:56:55 +0100607 execute( TC_iu_multi_lu_and_mo_ussd() );
608 execute( TC_iu_multi_lu_and_mt_ussd() );
609
Harald Welteb2284bd2019-05-10 11:30:43 +0200610 execute( TC_iu_lu_with_invalid_mcc_mnc() );
Vadim Yanitskiy25219062020-01-21 01:41:33 +0700611 execute( TC_iu_lu_and_expire_while_paging() );
Harald Weltee13cfb22019-04-23 16:52:02 +0200612
613 /* TODO: Iu + SGsAP related tests, e.g. paging on IuCS */
614
615 /* Run this last: at the time of writing this test crashes the MSC */
616 execute( TC_mo_cc_iu_release() );
617}
618
619
620}