lists.osmocom.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

gerrit-log

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
gerrit-log@lists.osmocom.org

March 2025

  • 1 participants
  • 1378 discussions
[M] Change in osmo-ttcn3-hacks[master]: msc: add TC_gsup_mt_sms_{paging,conn}_timeout
by fixeria 31 Mar '25

31 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39873?usp=email ) Change subject: msc: add TC_gsup_mt_sms_{paging,conn}_timeout ...................................................................... msc: add TC_gsup_mt_sms_{paging,conn}_timeout Change-Id: Ief16753783e044911f1e3cef8d7012810d709e61 Related: SYS#7323 --- M msc/MSC_Tests.ttcn M msc/expected-results.xml 2 files changed, 110 insertions(+), 0 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 03f2412..a36dbb8 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -3294,6 +3294,112 @@ f_vty_config(MSCVTY, "msc", "no sms-over-gsup"); } +/* Test sending of GSUP MT-forwardSM-Err if MS does not respond to paging */ +friend function f_TC_gsup_mt_sms_paging_timeout(charstring id, BSC_ConnHdlrPars pars) +runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + var boolean released := false; + timer T; + + f_init_handler(pars); + + /* We need to inspect GSUP activity */ + f_create_gsup_expect(hex2str(g_pars.imsi)); + + /* Perform location update */ + f_perform_lu(); + + /* Register an 'expect' for given IMSI (+TMSI) */ + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); + + /* Submit a MT SMS on GSUP, expect paging */ + f_gsup_forwardSM_req(spars); + f_expect_paging(); + + /* ... MS does not respond to paging ... */ + + T.start(10.0 + 2.0); /* X4 + 2 seconds */ + alt { + /* Expect the MSC to indicate an error after paging timeout + * TODO: expect a specific SM-RP-Cause value + * XXX: should we expect SM-RP-REF to be 'FF'O? */ + [] GSUP.receive(tr_GSUP_MT_FORWARD_SM_ERR(g_pars.imsi, ?, ?)); + [] as_unexp_gsup_msg(); + [] as_unexp_bssap_msg(); + [] T.timeout { + setverdict(fail, "Timeout waiting for GSUP MT-forwardSM-Err"); + } + } +} +testcase TC_gsup_mt_sms_paging_timeout() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + f_vty_config(MSCVTY, "msc", "sms-over-gsup"); + vc_conn := f_start_handler(refers(f_TC_gsup_mt_sms_paging_timeout), 93); + vc_conn.done; + f_vty_config(MSCVTY, "msc", "no sms-over-gsup"); +} + +/* Test sending of GSUP MT-forwardSM-Err if MS does not send RP-ACK */ +friend function f_TC_gsup_mt_sms_conn_timeout(charstring id, BSC_ConnHdlrPars pars) +runs on BSC_ConnHdlr { + var SmsParameters spars := valueof(t_SmsPars); + var boolean released := false; + timer T; + + f_init_handler(pars); + + /* We need to inspect GSUP activity */ + f_create_gsup_expect(hex2str(g_pars.imsi)); + + /* Perform location update */ + f_perform_lu(); + + /* Register an 'expect' for given IMSI (+TMSI) */ + f_ran_register_imsi(g_pars.imsi, g_pars.tmsi); + + /* Submit a MT SMS on GSUP, expect paging */ + f_gsup_forwardSM_req(spars); + f_expect_paging(); + + f_establish_fully(EST_TYPE_PAG_RESP); + + /* expect a MT SMS on DTAP */ + BSSAP.receive(f_mt_sms_deliver_pdu(spars)); + + /* ... MS does not send RP-ACK ... */ + + T.start(5.0 + 2.0); /* X1 + 2 seconds */ + alt { + /* Expect the MSC to indicate an error after connection timeout + * TODO: expect a specific SM-RP-Cause value + * XXX: should we expect SM-RP-REF to be 'FF'O? */ + [] GSUP.receive(tr_GSUP_MT_FORWARD_SM_ERR(g_pars.imsi, ?, ?)); + /* Timeout of X1 (5s) will trigger connection release */ + [not released] as_expect_clear() { + released := true; + repeat; + } + [] as_unexp_gsup_msg(); + [] as_unexp_bssap_msg(); + [] T.timeout { + setverdict(fail, "Timeout waiting for GSUP MT-forwardSM-Err"); + } + } + + if (not released) { + f_expect_clear(); + } +} +testcase TC_gsup_mt_sms_conn_timeout() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + f_vty_config(MSCVTY, "msc", "sms-over-gsup"); + vc_conn := f_start_handler(refers(f_TC_gsup_mt_sms_conn_timeout), 94); + vc_conn.done; + f_vty_config(MSCVTY, "msc", "no sms-over-gsup"); +} + /* convert GSM L3 TON to SMPP_TON enum */ function f_sm_ton_from_gsm(BIT3 ton) return SMPP_TON { select (ton) { @@ -7446,6 +7552,8 @@ execute( TC_gsup_mo_mt_sms_rp_mr() ); execute( TC_gsup_mt_multi_part_sms() ); execute( TC_gsup_mt_sms_lu_delay() ); + execute( TC_gsup_mt_sms_paging_timeout() ); + execute( TC_gsup_mt_sms_conn_timeout() ); execute( TC_lu_and_mo_ussd_single_request() ); execute( TC_lu_and_mt_ussd_notification() ); diff --git a/msc/expected-results.xml b/msc/expected-results.xml index d846cad..ffe85a6 100644 --- a/msc/expected-results.xml +++ b/msc/expected-results.xml @@ -81,6 +81,8 @@ <testcase classname='MSC_Tests' name='TC_gsup_mo_mt_sms_rp_mr' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_gsup_mt_multi_part_sms' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_gsup_mt_sms_lu_delay' time='MASKED'/> + <testcase classname='MSC_Tests' name='TC_gsup_mt_sms_paging_timeout' time='MASKED'/> + <testcase classname='MSC_Tests' name='TC_gsup_mt_sms_conn_timeout' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_lu_and_mo_ussd_single_request' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_lu_and_mt_ussd_notification' time='MASKED'/> <testcase classname='MSC_Tests' name='TC_lu_and_mo_ussd_during_mt_call' time='MASKED'/> -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39873?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ief16753783e044911f1e3cef8d7012810d709e61 Gerrit-Change-Number: 39873 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: msc: add TC_gsup_mt_sms_{paging,conn}_timeout
by pespin 31 Mar '25

31 Mar '25
Attention is currently required from: fixeria, osmith. pespin has posted comments on this change by fixeria. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39873?usp=email ) Change subject: msc: add TC_gsup_mt_sms_{paging,conn}_timeout ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39873?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ief16753783e044911f1e3cef8d7012810d709e61 Gerrit-Change-Number: 39873 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: osmith <osmith(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Attention: osmith <osmith(a)sysmocom.de> Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Comment-Date: Mon, 31 Mar 2025 15:39:57 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[S] Change in osmo-ttcn3-hacks[master]: msc: use f_expect_paging() in SS/USSD TCs
by fixeria 31 Mar '25

31 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39871?usp=email ) Change subject: msc: use f_expect_paging() in SS/USSD TCs ...................................................................... msc: use f_expect_paging() in SS/USSD TCs Change-Id: Ia75420c738ef412af6ae602566fab7c997b48335 --- M msc/MSC_Tests.ttcn 1 file changed, 4 insertions(+), 45 deletions(-) Approvals: pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved laforge: Looks good to me, but someone else must approve diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index b4b3614..380052b 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -3596,8 +3596,6 @@ /* LU followed by MT USSD notification */ friend function f_tc_lu_and_mt_ussd_notification(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - timer T := 5.0; - f_init_handler(pars); /* Perform location update */ @@ -3637,18 +3635,7 @@ /* Send it to MSC and expect Paging Request */ GSUP.send(gsup_req); - T.start; - alt { - [] as_paging() { setverdict(pass); } - [] as_paging_any() { - setverdict(fail, "Rx unexpected BSSMAP/RANAP Paging"); - mtc.stop; - } - [] as_unexp_gsup_or_bssap_msg(); - [] T.timeout { - setverdict(fail, "Timeout waiting for Paging Request"); - } - } + f_expect_paging(); /* Send Paging Response and expect USSD notification */ f_establish_fully(EST_TYPE_PAG_RESP); @@ -4221,8 +4208,6 @@ /* MT (network-originated) USSD and no response to Paging Request */ friend function f_tc_proc_ss_paging_fail(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { - timer TP := 2.0; /* Paging timer */ - f_init_handler(pars); /* Perform location update */ @@ -4246,22 +4231,9 @@ cause := ? /* FIXME: introduce an enumerated type! */ ); - /* Initiate a MT USSD notification */ + /* Initiate a MT USSD notification, expect paging */ GSUP.send(gsup_req); - - /* Send it to MSC and expect Paging Request */ - TP.start; - alt { - [] as_paging() { setverdict(pass); } - [] as_paging_any() { - setverdict(fail, "Rx unexpected BSSMAP/RANAP Paging"); - mtc.stop; - } - [] as_unexp_gsup_or_bssap_msg(); - [] TP.timeout { - setverdict(fail, "Timeout waiting for Paging Request"); - } - } + f_expect_paging(); /* Wait up to 20 seconds for GSUP PROC_SS_ERROR message. * OsmoMSC waits for Paging Response 10 seconds by default. */ @@ -4279,7 +4251,6 @@ runs on BSC_ConnHdlr { var octetstring facility := f_rnd_octstring(23); var OCT4 sid := '20000555'O; - timer TP := 2.0; f_init_handler(pars); @@ -4320,20 +4291,8 @@ /* Initiate a MT USSD with random payload */ GSUP.send(gsup_req); - /* Expect Paging Request */ - TP.start; - alt { - [] as_paging() { setverdict(pass); } - [] as_paging_any() { - setverdict(fail, "Rx unexpected BSSMAP/RANAP Paging"); - mtc.stop; - } - [] as_unexp_gsup_or_bssap_msg(); - [] TP.timeout { - setverdict(fail, "Timeout waiting for Paging Request"); - } - } + f_expect_paging(); /* Send Paging Response and establish connection */ f_establish_fully(EST_TYPE_PAG_RESP); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39871?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ia75420c738ef412af6ae602566fab7c997b48335 Gerrit-Change-Number: 39871 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: msc: split up as_unexp_gsup_or_bssap_msg()
by fixeria 31 Mar '25

31 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39872?usp=email ) Change subject: msc: split up as_unexp_gsup_or_bssap_msg() ...................................................................... msc: split up as_unexp_gsup_or_bssap_msg() Make use of derived as_unexp_{gsup,bssap}_msg() altsteps. Take a chance to improve them by printing unexpected PDUs. Change-Id: Ie6c349bdae289d19614809545e23c2b7bf88f8ed --- M msc/MSC_Tests.ttcn 1 file changed, 47 insertions(+), 88 deletions(-) Approvals: laforge: Looks good to me, but someone else must approve pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified fixeria: Looks good to me, approved diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 380052b..03f2412 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -673,14 +673,11 @@ alt { [] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } //[] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC)) { } - [] BSSAP.receive { - setverdict(fail, "Received unexpected BSSAP"); - mtc.stop; - } [] GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)) { setverdict(fail, "Unexpected GSUP UL REQ"); mtc.stop; } + [] as_unexp_bssap_msg(); [] T.timeout { setverdict(fail, "Timeout waiting for CM SERV REJ"); mtc.stop; @@ -714,10 +711,7 @@ T.start; alt { [] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } - [] BSSAP.receive { - setverdict(fail, "Received unexpected BSSAP"); - mtc.stop; - } + [] as_unexp_bssap_msg(); [] T.timeout { setverdict(fail, "Timeout waiting for CM SERV REJ"); mtc.stop; @@ -1890,10 +1884,7 @@ f_cl3_or_initial_ue(l3_info); alt { [] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } - [] BSSAP.receive { - setverdict(fail, "Received unexpected BSSAP instead of CM SERV REJ"); - mtc.stop; - } + [] as_unexp_bssap_msg(); } f_expect_clear(); @@ -1974,10 +1965,7 @@ setverdict(fail, "CipherModeCommand despite no A5 intersection"); mtc.stop; } - [] BSSAP.receive { - setverdict(fail, "Unknown/unexpected BSSAP received"); - mtc.stop; - } + [] as_unexp_bssap_msg(); } setverdict(pass); } @@ -2041,10 +2029,7 @@ setverdict(fail, "CipherModeCommand despite no A5 intersection"); mtc.stop; } - [] BSSAP.receive { - setverdict(fail, "Unknown/unexpected BSSAP received"); - mtc.stop; - } + [] as_unexp_bssap_msg(); } setverdict(pass); } @@ -2545,10 +2530,7 @@ setverdict(fail, "paging seems not to stop!"); mtc.stop; } - [] BSSAP.receive { - setverdict(fail, "unexpected BSSAP message received"); - self.stop; - } + [] as_unexp_bssap_msg(); [] T.timeout { setverdict(pass); } @@ -2793,10 +2775,7 @@ log("RX MO-forwardSM-Req: ", gsup_msg_rx); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } /* Trigger RP-ACK by sending MO-forwardSM-Res */ @@ -2848,10 +2827,7 @@ log("RX MO-ReadyForSM-Req: ", gsup_msg_rx); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } /* Trigger RP-ACK by sending MO-forwardSM-Res */ @@ -2935,10 +2911,7 @@ log("RX MT-forwardSM-Res (RP-ACK)"); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } f_expect_clear(); @@ -2997,10 +2970,7 @@ setverdict(pass); mtc.stop; } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } f_expect_clear(); @@ -3084,10 +3054,7 @@ log("RX MT-forwardSM-Res (RP-ACK)"); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } /* Send the 2nd RP-ACK and expect MT-forwardSM-Res on GSUP */ @@ -3100,10 +3067,7 @@ log("RX MT-forwardSM-Res (RP-ACK)"); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } f_expect_clear(); @@ -3155,10 +3119,7 @@ log("RX MO-ReadyForSM-Req, SM-RP-MR is '00'O"); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } /* Submit MT SMS on GSUP */ @@ -3197,10 +3158,7 @@ log("RX MT-forwardSM-Res (RP-ACK)"); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } f_expect_clear(); @@ -3260,10 +3218,7 @@ log("RX MT-forwardSM-Res (RP-ACK)"); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } /* Keep some 'distance' between transmissions */ @@ -3321,10 +3276,7 @@ log("RX MT-forwardSM-Res (RP-ACK)"); setverdict(pass); } - [] GSUP.receive { - setverdict(fail, "Rx unexpected GSUP message"); - mtc.stop; - } + [] as_unexp_gsup_msg(); } f_expect_clear(); @@ -3461,16 +3413,33 @@ * USSD Testing ***********************************************************************/ -private altstep as_unexp_gsup_or_bssap_msg() +private altstep as_unexp_gsup_msg() runs on BSC_ConnHdlr { - [] GSUP.receive { - setverdict(fail, "Unknown/unexpected GSUP received"); + var GSUP_PDU pdu; + + [] GSUP.receive(GSUP_PDU:?) -> value pdu { + setverdict(fail, "Unknown/unexpected GSUP received: ", pdu); self.stop; - } + } +} + +private altstep as_unexp_bssap_msg() +runs on BSC_ConnHdlr { + var PDU_DTAP_MT dtap; + var PDU_BSSAP bssap; + + [] BSSAP.receive(PDU_DTAP_MT:?) -> value dtap { + setverdict(fail, "Unknown/unexpected BSSAP/DTAP received: ", dtap); + self.stop; + } + [] BSSAP.receive(PDU_BSSAP:?) -> value bssap { + setverdict(fail, "Unknown/unexpected BSSAP received: ", bssap); + self.stop; + } [] BSSAP.receive { - setverdict(fail, "Unknown/unexpected BSSAP message received"); + setverdict(fail, "Unknown/unexpected BSSAP received"); self.stop; - } + } } private function f_expect_gsup_msg(template GSUP_PDU msg, @@ -3485,7 +3454,8 @@ setverdict(pass); } /* We don't expect anything else */ - [] as_unexp_gsup_or_bssap_msg(); + [] as_unexp_gsup_msg(); + [] as_unexp_bssap_msg(); [] T.timeout { setverdict(fail, "Timeout waiting for GSUP message: ", msg); } @@ -3506,7 +3476,8 @@ setverdict(pass); } /* We don't expect anything else */ - [] as_unexp_gsup_or_bssap_msg(); + [] as_unexp_gsup_msg(); + [] as_unexp_bssap_msg(); [] T.timeout { setverdict(fail, "Timeout waiting for BSSAP message: ", msg); } @@ -4385,10 +4356,7 @@ setverdict(fail, "Wrong ciphering algorithm mask in CiphModCmd"); mtc.stop; } - [] BSSAP.receive { - setverdict(fail, "Unknown/unexpected BSSAP received"); - mtc.stop; - } + [] as_unexp_bssap_msg(); } f_expect_common_id(); @@ -4397,10 +4365,7 @@ [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(pass); } - [] BSSAP.receive { - setverdict(fail, "Unknown/unexpected BSSAP received"); - mtc.stop; - } + [] as_unexp_bssap_msg(); } f_expect_clear(); } @@ -4434,10 +4399,7 @@ [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { setverdict(pass); } - [] BSSAP.receive { - setverdict(fail, "Unknown/unexpected BSSAP received"); - mtc.stop; - } + [] as_unexp_bssap_msg(); } f_expect_clear(verify_vlr_cell_id:=false); } @@ -4481,10 +4443,7 @@ setverdict(fail, "Wrong ciphering algorithm mask in CiphModCmd"); mtc.stop; } - [] BSSAP.receive { - setverdict(fail, "Unknown/unexpected BSSAP received"); - mtc.stop; - } + [] as_unexp_bssap_msg(); } f_expect_common_id(); -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39872?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ie6c349bdae289d19614809545e23c2b7bf88f8ed Gerrit-Change-Number: 39872 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in osmo-ttcn3-hacks[master]: msc: f_establish_fully(): merge EST_TYPE_MO_{CALL,CSD}
by fixeria 31 Mar '25

31 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39870?usp=email ) Change subject: msc: f_establish_fully(): merge EST_TYPE_MO_{CALL,CSD} ...................................................................... msc: f_establish_fully(): merge EST_TYPE_MO_{CALL,CSD} There's nothing special about CSD at the stage of MM connection establishment, it looks like a normal call at this point. Change-Id: I732b58ed43bc0d76fb78a6a41e19261658d8f755 --- M msc/BSC_ConnectionHandler.ttcn 1 file changed, 0 insertions(+), 6 deletions(-) Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 4444f37..fc3522e 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -380,7 +380,6 @@ EST_TYPE_PAG_RESP, EST_TYPE_MO_SMS, EST_TYPE_SS_ACT, - EST_TYPE_MO_CSD, EST_TYPE_VGCS, EST_TYPE_VBS }; @@ -402,9 +401,6 @@ case (EST_TYPE_MO_CALL) { l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi)); } - case (EST_TYPE_MO_CSD) { - l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi)); - } case (EST_TYPE_EMERG_CALL) { l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_EMERG_CALL, mi)); } @@ -1681,8 +1677,6 @@ if (cpars.emergency) { f_establish_fully(EST_TYPE_EMERG_CALL); - } else if (cpars.csd) { - f_establish_fully(EST_TYPE_MO_CSD); } else { f_establish_fully(EST_TYPE_MO_CALL); } -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39870?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I732b58ed43bc0d76fb78a6a41e19261658d8f755 Gerrit-Change-Number: 39870 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: msc: split up as_unexp_gsup_or_bssap_msg()
by fixeria 31 Mar '25

31 Mar '25
fixeria has posted comments on this change by fixeria. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39872?usp=email ) Change subject: msc: split up as_unexp_gsup_or_bssap_msg() ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39872?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ie6c349bdae289d19614809545e23c2b7bf88f8ed Gerrit-Change-Number: 39872 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Mon, 31 Mar 2025 15:21:31 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[S] Change in osmo-ttcn3-hacks[master]: msc: use f_expect_paging() in SS/USSD TCs
by fixeria 31 Mar '25

31 Mar '25
fixeria has posted comments on this change by fixeria. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39871?usp=email ) Change subject: msc: use f_expect_paging() in SS/USSD TCs ...................................................................... Patch Set 1: Code-Review+2 -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39871?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: comment Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ia75420c738ef412af6ae602566fab7c997b48335 Gerrit-Change-Number: 39871 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de> Gerrit-Comment-Date: Mon, 31 Mar 2025 15:21:26 +0000 Gerrit-HasComments: No Gerrit-Has-Labels: Yes
1 0
0 0
[M] Change in osmo-ttcn3-hacks[master]: s1gw: add TC_uemux_uldl_nas_release
by fixeria 31 Mar '25

31 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39851?usp=email ) ( 4 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: s1gw: add TC_uemux_uldl_nas_release ...................................................................... s1gw: add TC_uemux_uldl_nas_release So far all of our *_multi TCs have been running the test logic in multiple eNB connections. This is the first TC simulating activity of multiple virtual UEs within a single eNB connection. Change-Id: I8e5db55739241f89592a7d2a81a13e8028e90d1d Related: SYS#7288 --- M s1gw/S1GW_Tests.ttcn M s1gw/S1GW_UEMux.ttcn M s1gw/expected-results.xml 3 files changed, 202 insertions(+), 7 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve fixeria: Looks good to me, approved pespin: Looks good to me, but someone else must approve diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn index e722a10..f0b0826 100644 --- a/s1gw/S1GW_Tests.ttcn +++ b/s1gw/S1GW_Tests.ttcn @@ -43,6 +43,7 @@ import from S1AP_Server all; import from S1GW_ConnHdlr all; +import from S1GW_UEMux all; modulepar { charstring mp_s1gw_enb_ip := "127.0.1.1"; /* eNB facing address of the S1GW */ @@ -58,6 +59,7 @@ charstring mp_statsd_prefix := "s1gw."; integer mp_multi_enb_num := 42; /* number of eNBs in _multi TCs */ + integer mp_multi_ue_num := 128; /* number of UEs in _multi TCs */ } type component test_CT extends StatsD_Checker_CT { @@ -168,12 +170,8 @@ return erabs; } -function f_ConnHdlr_spawn(void_fn fn, ConnHdlrPars pars) -runs on test_CT return ConnHdlr { - var ConnHdlr vc_conn; - var charstring id := "ConnHdlr-" & testcasename() & "-" & int2str(pars.idx); - - vc_conn := ConnHdlr.create(id) alive; +function f_ConnHdlr_connect(ConnHdlr vc_conn) +runs on test_CT { if (isbound(vc_STATSD) and vc_STATSD.running) { connect(vc_conn:STATSD_PROC, vc_STATSD:STATSD_PROC); } @@ -186,11 +184,81 @@ connect(vc_conn:PFCP_PROC, vc_PFCP:CLIENT_PROC); } f_MutexDisp_connect(vc_mutex_disp, vc_conn); +} + +function f_ConnHdlr_spawn(void_fn fn, ConnHdlrPars pars) +runs on test_CT return ConnHdlr { + var ConnHdlr vc_conn; + var charstring id := "ConnHdlr-" & testcasename() & "-" & int2str(pars.idx); + + vc_conn := ConnHdlr.create(id) alive; + f_ConnHdlr_connect(vc_conn); vc_conn.start(f_ConnHdlr_init(fn, id, pars)); return vc_conn; } +function f_UEMux_spawn(void_fn2 fn, ConnHdlrPars pars) +runs on test_CT return UEMux_CT { + var UEMux_CT vc_conn; + var charstring id := "UEMux-" & testcasename() & "-" & int2str(pars.idx); + + vc_conn := UEMux_CT.create(id) alive; + f_ConnHdlr_connect(vc_conn); + vc_conn.start(f_UEMux_init(fn, id, pars)); + + return vc_conn; +} + +function f_TC_UEMux_main(charstring id) runs on UEMux_CT { + f_ConnHdlr_s1ap_register(g_pars.genb_id); + f_ConnHdlr_s1ap_connect(mp_enb_bind_ip, mp_s1gw_enb_ip); + f_ConnHdlr_s1ap_setup(g_pars.genb_id); + + S1GW_UEMux.main(); + + f_ConnHdlr_s1ap_disconnect(); + f_ConnHdlr_s1ap_unregister(g_pars.genb_id); +} + +function f_UEMuxUE_create(in UEMux_CT vc_uemux, + in ConnHdlrPars pars, + MME_UE_S1AP_ID mme_ue_id, + ENB_UE_S1AP_ID enb_ue_id) +runs on test_CT return UEMuxUE { + var charstring id := "UEMuxUE-" & testcasename(); + var UEMuxUE vc_ue; + + vc_ue := UEMuxUE.create(id) alive; + connect(vc_ue:UEMUX_CONN, vc_uemux:UEMUX_CONN); + connect(vc_ue:UEMUX_PROC, vc_uemux:UEMUX_PROC); + + /* pre-initialize the component */ + vc_ue.start(f_UEMuxUE_init(pars, mme_ue_id, enb_ue_id)); + vc_ue.done; + + return vc_ue; +} + +function f_UEMuxUE_init(in ConnHdlrPars pars, + MME_UE_S1AP_ID mme_ue_id, + ENB_UE_S1AP_ID enb_ue_id) +runs on UEMuxUE { + g_mme_ue_id := mme_ue_id; + g_enb_ue_id := enb_ue_id; + + g_ies.tai := { + pLMNidentity := pars.genb_id.pLMNidentity, + tAC := int2oct(12345, 2), /* XXX: hard-coded */ + iE_Extensions := omit + }; + g_ies.eutran_cgi := { + pLMNidentity := pars.genb_id.pLMNidentity, + cell_ID := int2bit(pars.idx, 28), + iE_Extensions := omit + }; +} + /* wait for all ConnHdlr in the given list to be .done() */ function f_ConnHdlrList_all_done(in ConnHdlrList vc_conns) runs on test_CT { @@ -199,6 +267,14 @@ } } +/* wait for all UEMux_CT in the given list to be .done() */ +function f_UEMuxUEList_all_done(in UEMuxUEList vc_ues) +runs on test_CT { + for (var integer i := 0; i < lengthof(vc_ues); i := i + 1) { + vc_ues[i].done; + } +} + function f_TC_exec(void_fn fn, integer num_enbs := 1, integer num_erabs := 1) @@ -577,6 +653,70 @@ f_TC_exec(refers(f_TC_ue_ctx_release_cmd_compl), num_erabs := 3); } +/* Test multiple UEs concurrently doing the following: + * eNB -> MME: INITIAL UE MESSAGE + * eNB <- MME: DOWNLINK NAS TRANSPORT + * eNB -> MME: UPLINK NAS TRANSPORT + * eNB <- MME: DOWNLINK NAS TRANSPORT + * eNB <- MME: UE CONTEXT RELEASE COMMAND + * eNB -> MME: UE CONTEXT RELEASE COMPLETE + * All S1AP PDUs are expected to be forwarded as-is. */ +function f_TC_uemux_uldl_nas_release() +runs on UEMuxUE { + var template (value) S1AP_PDU pdu; + var float Tval := 5.0; + + f_UEMuxUE_subscribe_for_mme_ue_id(g_mme_ue_id); + f_UEMuxUE_subscribe_for_enb_ue_id(g_enb_ue_id); + + /* eNB -> MME: INITIAL UE MESSAGE */ + pdu := ts_S1AP_InitialUE(g_enb_ue_id, ''O, g_ies.tai, g_ies.eutran_cgi, mo_Signalling); + f_UEMuxUE_trx_s1ap_from_enb(pdu, pdu, Tval); + /* eNB <- MME: DOWNLINK NAS TRANSPORT */ + pdu := ts_S1AP_DlNasTransport(g_mme_ue_id, g_enb_ue_id, ''O); + f_UEMuxUE_trx_s1ap_from_mme(pdu, pdu, Tval); + /* eNB -> MME: UPLINK NAS TRANSPORT */ + pdu := ts_S1AP_UlNasTransport(g_mme_ue_id, g_enb_ue_id, ''O, g_ies.eutran_cgi, g_ies.tai); + f_UEMuxUE_trx_s1ap_from_enb(pdu, pdu, Tval); + /* eNB <- MME: DOWNLINK NAS TRANSPORT */ + pdu := ts_S1AP_DlNasTransport(g_mme_ue_id, g_enb_ue_id, ''O); + f_UEMuxUE_trx_s1ap_from_mme(pdu, pdu, Tval); + + var UE_S1AP_IDs ue_ids := { + uE_S1AP_ID_pair := { + mME_UE_S1AP_ID := g_mme_ue_id, + eNB_UE_S1AP_ID := g_enb_ue_id, + iE_Extensions := omit + } + }; + + /* eNB <- MME: UE CONTEXT RELEASE COMMAND */ + pdu := ts_S1AP_UeContextReleaseCmd(mme_ids := ue_ids, + cause := {nas := normal_release}); + f_UEMuxUE_trx_s1ap_from_mme(pdu, pdu, Tval); + /* eNB -> MME: UE CONTEXT RELEASE COMPLETE */ + pdu := ts_S1AP_UeContextReleaseCompl(g_mme_ue_id, g_enb_ue_id); + f_UEMuxUE_trx_s1ap_from_enb(pdu, pdu, Tval); + + f_UEMuxUE_unsubscribe(); +} +testcase TC_uemux_uldl_nas_release() runs on test_CT { + var ConnHdlrPars pars := valueof(t_ConnHdlrPars); + var UEMuxUEList vc_ues; + var UEMux_CT vc_uemux; + + f_init(); + + vc_uemux := f_UEMux_spawn(refers(f_TC_UEMux_main), pars); + + for (var integer i := 0; i < mp_multi_ue_num; i := i + 1) { + vc_ues[i] := f_UEMuxUE_create(vc_uemux, pars, i, i); + vc_ues[i].start(f_TC_uemux_uldl_nas_release()); + } + + f_UEMuxUEList_all_done(vc_ues); +} + function f_TC_pfcp_heartbeat(charstring id) runs on ConnHdlr { var integer rts := f_PFCPEM_get_recovery_timestamp(); var PDU_PFCP pfcp_pdu; @@ -618,6 +758,7 @@ execute( TC_ue_ctx_release_req3() ); execute( TC_ue_ctx_release_cmd_compl() ); execute( TC_ue_ctx_release_cmd_compl3() ); + execute( TC_uemux_uldl_nas_release() ); execute( TC_pfcp_heartbeat() ); } diff --git a/s1gw/S1GW_UEMux.ttcn b/s1gw/S1GW_UEMux.ttcn index 0768dea..1d2e5c6 100644 --- a/s1gw/S1GW_UEMux.ttcn +++ b/s1gw/S1GW_UEMux.ttcn @@ -17,6 +17,7 @@ import from General_Types all; import from Osmocom_Types all; +import from Misc_Helpers all; import from S1AP_IEs all; import from S1AP_Types all; @@ -46,14 +47,48 @@ } } +private function f_trx_s1ap_pdu(out S1AP_PDU pdu, + S1AP_PDU_DIR dir, + template (value) S1AP_PDU ts_pdu, + template (present) S1AP_PDU tr_pdu, + float Tval) +runs on UEMuxUE { + timer T := Tval; + + UEMUX_CONN.send(S1AP_dPDU:{dir, ts_pdu}); + + T.start; + alt { + [] as_s1ap_dpdu(pdu, dir, tr_pdu); + [] as_s1ap_dpdu(pdu, dir) { + setverdict(fail, "Rx unexpected S1AP PDU (", dir, "): ", pdu); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); + } + [] T.timeout { + setverdict(fail, "Timeout waiting for S1AP PDU (", dir, "): ", pdu); + Misc_Helpers.f_shutdown(__BFILE__, __LINE__); + } + } +} + type port UEMUX_CONN_PT message { inout S1AP_dPDU; } with { extension "internal" }; +type record UEMuxUE_IEs { + S1AP_IEs.EUTRAN_CGI eutran_cgi, + S1AP_IEs.TAI tai +}; + type component UEMuxUE { port UEMUX_CONN_PT UEMUX_CONN; port UEMUX_PROC_PT UEMUX_PROC; + + var MME_UE_S1AP_ID g_mme_ue_id; + var ENB_UE_S1AP_ID g_enb_ue_id; + var UEMuxUE_IEs g_ies; }; +type record of UEMuxUE UEMuxUEList; type component UEMux_CT extends ConnHdlr, UEMuxUE { /* registered UE components */ @@ -273,6 +308,24 @@ [] as_s1ap_dpdu(pdu, S1AP_PDU_DIR_FROM_ENB, tr_pdu); } +function f_UEMuxUE_trx_s1ap_from_mme(template (value) S1AP_PDU ts_pdu, + template (present) S1AP_PDU tr_pdu := ?, + float Tval := 1.0) +runs on UEMuxUE return S1AP_PDU { + var S1AP_PDU pdu; + f_trx_s1ap_pdu(pdu, S1AP_PDU_DIR_FROM_MME, ts_pdu, tr_pdu, Tval); + return pdu; +} + +function f_UEMuxUE_trx_s1ap_from_enb(template (value) S1AP_PDU ts_pdu, + template (present) S1AP_PDU tr_pdu := ?, + float Tval := 1.0) +runs on UEMuxUE return S1AP_PDU { + var S1AP_PDU pdu; + f_trx_s1ap_pdu(pdu, S1AP_PDU_DIR_FROM_ENB, ts_pdu, tr_pdu, Tval); + return pdu; +} + type function void_fn2(charstring id) runs on UEMux_CT; function f_UEMux_init(void_fn2 fn, charstring id, ConnHdlrPars pars) diff --git a/s1gw/expected-results.xml b/s1gw/expected-results.xml index 74936f5..343ba48 100644 --- a/s1gw/expected-results.xml +++ b/s1gw/expected-results.xml @@ -1,5 +1,5 @@ <?xml version="1.0"?> -<testsuite name='S1GW_Tests' tests='24' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> +<testsuite name='S1GW_Tests' tests='25' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'> <testcase classname='S1GW_Tests' name='TC_setup' time='MASKED'/> <testcase classname='S1GW_Tests' name='TC_setup_multi' time='MASKED'/> <testcase classname='S1GW_Tests' name='TC_conn_term_by_mme' time='MASKED'/> @@ -23,5 +23,6 @@ <testcase classname='S1GW_Tests' name='TC_ue_ctx_release_req3' time='MASKED'/> <testcase classname='S1GW_Tests' name='TC_ue_ctx_release_cmd_compl' time='MASKED'/> <testcase classname='S1GW_Tests' name='TC_ue_ctx_release_cmd_compl3' time='MASKED'/> + <testcase classname='S1GW_Tests' name='TC_uemux_uldl_nas_release' time='MASKED'/> <testcase classname='S1GW_Tests' name='TC_pfcp_heartbeat' time='MASKED'/> </testsuite> -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39851?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I8e5db55739241f89592a7d2a81a13e8028e90d1d Gerrit-Change-Number: 39851 Gerrit-PatchSet: 6 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in osmo-ttcn3-hacks[master]: s1gw: disable Nagle for eNB and MME connections
by fixeria 31 Mar '25

31 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39852?usp=email ) ( 4 is the latest approved patch-set. No files were changed between the latest approved patch-set and the submitted one. )Change subject: s1gw: disable Nagle for eNB and MME connections ...................................................................... s1gw: disable Nagle for eNB and MME connections Change-Id: Id89941659fd2763aad9262b05aa007370424f2c1 Related: SYS#7288 --- M s1gw/S1GW_Tests.default 1 file changed, 2 insertions(+), 1 deletion(-) Approvals: fixeria: Looks good to me, approved pespin: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve Jenkins Builder: Verified diff --git a/s1gw/S1GW_Tests.default b/s1gw/S1GW_Tests.default index 4ed872b..8f9cfdc 100644 --- a/s1gw/S1GW_Tests.default +++ b/s1gw/S1GW_Tests.default @@ -3,7 +3,8 @@ ConsoleMask := ERROR | WARNING | PARALLEL | VERDICTOP | USER; [TESTPORT_PARAMETERS] - +*.S1AP_ENB.noDelay := "yes" // eNB: turn off Nagle +*.S1AP.noDelay := "yes" // MME: turn off Nagle [MODULE_PARAMETERS] -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39852?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Id89941659fd2763aad9262b05aa007370424f2c1 Gerrit-Change-Number: 39852 Gerrit-PatchSet: 6 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
[XS] Change in osmo-ttcn3-hacks[master]: library: add f_rnd_sleep()
by fixeria 31 Mar '25

31 Mar '25
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39880?usp=email ) Change subject: library: add f_rnd_sleep() ...................................................................... library: add f_rnd_sleep() Change-Id: I97474d0c39052d8a9dd294238530e0b6c31a19e0 --- M library/Osmocom_Types.ttcn 1 file changed, 4 insertions(+), 0 deletions(-) Approvals: laforge: Looks good to me, but someone else must approve fixeria: Looks good to me, approved Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve diff --git a/library/Osmocom_Types.ttcn b/library/Osmocom_Types.ttcn index 61b1e52..995342a 100644 --- a/library/Osmocom_Types.ttcn +++ b/library/Osmocom_Types.ttcn @@ -113,6 +113,10 @@ return prefix & f_rnd_octstring(len - lengthof(prefix)); } +function f_rnd_sleep(float max_seconds) { + f_sleep(rnd() * max_seconds); +} + function f_sleep(float seconds) { timer T := seconds; T.start; -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39880?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: merged Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I97474d0c39052d8a9dd294238530e0b6c31a19e0 Gerrit-Change-Number: 39880 Gerrit-PatchSet: 2 Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de> Gerrit-Reviewer: laforge <laforge(a)osmocom.org> Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • 5
  • ...
  • 138
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.