This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/6127 msc: Add global g_Tguard timer to make sure BSC_ConnHdlr terminates Change-Id: I10fc0ff04c16eacc12f09ac1759940676ae62213 --- M msc_tests/BSC_ConnectionHandler.ttcn M msc_tests/MSC_Tests.ttcn 2 files changed, 53 insertions(+), 32 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/27/6127/1 diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn index bc6eebc..843197e 100644 --- a/msc_tests/BSC_ConnectionHandler.ttcn +++ b/msc_tests/BSC_ConnectionHandler.ttcn @@ -30,6 +30,7 @@ /* this component represents a single subscriber connection */ type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr, MGCP_ConnHdlr { var BSC_ConnHdlrPars g_pars; + timer g_Tguard := 60.0; } type record AuthVector { @@ -52,6 +53,23 @@ AuthVector vec optional }; +/* altstep for the global guard timer */ +private altstep as_Tguard() runs on BSC_ConnHdlr { + [] g_Tguard.timeout { + setverdict(inconc, "Tguard timeout"); + self.stop; + } +} + +/* init function, called as first function in new BSC_ConnHdlr */ +function f_init_handler(BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + /* make parameters available via component variable */ + g_pars := pars; + /* Start guard timer and activate it as default */ + g_Tguard.start; + activate(as_Tguard()); +} + /* Callback function from general BSSMAP_Emulation whenever a connectionless * BSSMAP message arrives. Canreturn a PDU_BSSAPthat should be sent in return */ diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn index 8512d3e..f38b989 100644 --- a/msc_tests/MSC_Tests.ttcn +++ b/msc_tests/MSC_Tests.ttcn @@ -379,6 +379,8 @@ connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT); connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC); + /* We cannot use vc_conn.start(f_init_handler(fn, id, pars)); as we cannot have + * a stand-alone 'derefers()' call, see https://www.eclipse.org/forums/index.php/t/1091364/ */ vc_conn.start(derefers(fn)(id, pars)); return vc_conn; } @@ -395,7 +397,7 @@ } private function f_tc_lu_imsi_noauth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); f_perform_lu(false, true, true); } testcase TC_lu_imsi_noauth_tmsi() runs on MTC_CT { @@ -407,7 +409,7 @@ } private function f_tc_lu_imsi_noauth_notmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); f_perform_lu(false, false, true); } testcase TC_lu_imsi_noauth_notmsi() runs on MTC_CT { @@ -421,7 +423,7 @@ /* Do LU by IMSI, refuse it on GSUP and expect LU REJ back to MS */ private function f_tc_lu_imsi_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi); f_create_gsup_expect(hex2str(g_pars.imsi)); @@ -450,7 +452,7 @@ /* Do LU by IMSI, timeout on GSUP */ private function f_tc_lu_imsi_timeout_gsup(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi); f_create_gsup_expect(hex2str(g_pars.imsi)); @@ -479,7 +481,7 @@ } private function f_tc_lu_imsi_auth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); f_perform_lu(true, true, true); } testcase TC_lu_imsi_auth_tmsi() runs on MTC_CT { @@ -495,7 +497,7 @@ /* Send CM SERVICE REQ for IMSI that has never performed LU before */ private function f_tc_cmserv_imsi_unknown(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); var BSSMAP_IE_CellIdentifier cell_id := valueof(ts_CellId_CGI('262'H, '042'H, 23, 42)); @@ -534,7 +536,7 @@ } private function f_tc_lu_and_mo_call(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var CallParameters cpars := valueof(t_CallParams('12345'H, 0)); cpars.bss_rtp_port := 1110; cpars.mgcp_connection_id_bss := '22222'H; @@ -553,7 +555,7 @@ /* Test LU (with authentication enabled), where HLR times out sending SAI response */ private function f_tc_lu_auth_sai_timeout(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi) var PDU_DTAP_MT dtap_mt; @@ -587,7 +589,7 @@ /* Test LU (with authentication enabled), where HLR rejects sending SAI error */ private function f_tc_lu_auth_sai_err(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi) var PDU_DTAP_MT dtap_mt; @@ -621,7 +623,7 @@ /* Test LU but BSC will send a clear request in the middle */ private function f_tc_lu_clear_request(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi) var PDU_DTAP_MT dtap_mt; @@ -653,7 +655,7 @@ /* Test LU but BSC will send a clear request in the middle */ private function f_tc_lu_disconnect(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi) var PDU_DTAP_MT dtap_mt; @@ -683,7 +685,7 @@ /* Test LU but with illegal mobile identity type = IMEI */ private function f_tc_lu_by_imei(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imei(g_pars.imei) var PDU_DTAP_MT dtap_mt; @@ -717,7 +719,7 @@ /* Test LU by TMSI with unknown TMSI, expect (and answer) ID REQ. */ private function f_tc_lu_tmsi_noauth_unknown(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_tmsi('01020304'O); /* FIXME: Random */ var PDU_DTAP_MT dtap_mt; @@ -767,7 +769,7 @@ /* Test IMSI DETACH (MI=IMSI) */ private function f_tc_imsi_detach_by_imsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); @@ -793,7 +795,7 @@ /* Test IMSI DETACH (MI=TMSI) */ private function f_tc_imsi_detach_by_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var MobileIdentityLV mi := valueof(ts_MI_TMSI_LV('01020304'O)); @@ -819,7 +821,7 @@ /* Test IMSI DETACH (MI=IMEI), which is illegal */ private function f_tc_imsi_detach_by_imei(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var MobileIdentityLV mi := valueof(ts_MI_IMEI_LV(g_pars.imei)); @@ -892,7 +894,7 @@ /* establish an emergency call by IMEI, no SIM inserted (and hence no IMSI) */ private function f_tc_emerg_call_imei_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var MobileIdentityLV mi := valueof(ts_MI_IMEI_LV(g_pars.imei)); var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi)); @@ -913,7 +915,7 @@ /* establish an emergency call by IMSI, SIM inserted (and hence IMSI) */ private function f_tc_emerg_call_imsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); /* First perform location update to ensure subscriber is known */ f_perform_lu(false, true, true); /* Then issue emergency call identified by IMSI */ @@ -929,7 +931,7 @@ /* CM Service Request for VGCS -> reject */ private function f_tc_cm_serv_req_vgcs_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); /* First perform location update to ensure subscriber is known */ f_perform_lu(false, true, true); @@ -953,7 +955,7 @@ /* CM Service Request for VBS -> reject */ private function f_tc_cm_serv_req_vbs_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); /* First perform location update to ensure subscriber is known */ f_perform_lu(false, true, true); @@ -977,7 +979,7 @@ /* CM Service Request for LCS -> reject */ private function f_tc_cm_serv_req_lcs_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); /* First perform location update to ensure subscriber is known */ f_perform_lu(false, true, true); @@ -1001,7 +1003,7 @@ /* CM Re-Establishment Request */ private function f_tc_cm_reest_req_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); /* First perform location update to ensure subscriber is known */ f_perform_lu(false, true, true); @@ -1025,7 +1027,7 @@ /* Test LU (with authentication enabled), with wrong response from MS */ private function f_tc_lu_auth_2G_fail(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi) @@ -1067,7 +1069,7 @@ } private function f_tc_lu_imsi_auth_tmsi_encr_13_13(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); f_perform_lu(true, true, true, true); } testcase TC_lu_imsi_auth_tmsi_encr_13_13() runs on MTC_CT { @@ -1082,7 +1084,7 @@ /* Test Complete L3 without payload */ private function f_tc_cl3_no_payload(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); /* Send Complete L3 Info with empty L3 frame */ BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, @@ -1108,7 +1110,7 @@ /* Test Complete L3 with random payload */ private function f_tc_cl3_rnd_payload(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var integer len := float2int(rnd() * 256.0); var octetstring payl := f_rnd_octstring(len); @@ -1139,7 +1141,7 @@ /* Test Complete L3 with random payload */ private function f_tc_establish_and_nothing(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); f_perform_lu(false, true, true, false); @@ -1169,7 +1171,8 @@ /* Test MO Call SETUP with no response from MNCC */ private function f_tc_mo_setup_and_nothing(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); + var CallParameters cpars := valueof(t_CallParams('12345'H, 0)); f_perform_lu(false, true, true, false); @@ -1205,7 +1208,7 @@ /* Test MO Call with no response to RAN-side CRCX */ private function f_tc_mo_crcx_ran_timeout(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var CallParameters cpars := valueof(t_CallParams('12345'H, 0)); var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; @@ -1252,7 +1255,7 @@ /* Test MO Call with reject to RAN-side CRCX */ private function f_tc_mo_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var CallParameters cpars := valueof(t_CallParams('12345'H, 0)); var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; @@ -1344,7 +1347,7 @@ /* Test MT Call */ private function f_tc_mt_crcx_ran_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var CallParameters cpars := valueof(t_CallParams('123456'H, 0)); var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; @@ -1402,7 +1405,7 @@ /* Test MT Call T310 timer */ private function f_tc_mt_t310(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - g_pars := pars; + f_init_handler(pars); var CallParameters cpars := valueof(t_CallParams('123456'H, 0)); var MNCC_PDU mncc; var MgcpCommand mgcp_cmd; -- To view, visit https://gerrit.osmocom.org/6127 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I10fc0ff04c16eacc12f09ac1759940676ae62213 Gerrit-PatchSet: 1 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org>