lists.osmocom.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
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
List overview
Download
gerrit-log
March 2025
----- 2025 -----
August 2025
July 2025
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
gerrit-log@lists.osmocom.org
1 participants
1378 discussions
Start a n
N
ew thread
[M] Change in osmo-ttcn3-hacks[master]: msc: add TC_gsup_mt_sms_{paging,conn}_timeout
by fixeria
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>
5 months
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: msc: add TC_gsup_mt_sms_{paging,conn}_timeout
by pespin
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
5 months
1
0
0
0
[S] Change in osmo-ttcn3-hacks[master]: msc: use f_expect_paging() in SS/USSD TCs
by fixeria
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>
5 months
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: msc: split up as_unexp_gsup_or_bssap_msg()
by fixeria
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>
5 months
1
0
0
0
[XS] Change in osmo-ttcn3-hacks[master]: msc: f_establish_fully(): merge EST_TYPE_MO_{CALL,CSD}
by fixeria
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>
5 months
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: msc: split up as_unexp_gsup_or_bssap_msg()
by fixeria
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
5 months
1
0
0
0
[S] Change in osmo-ttcn3-hacks[master]: msc: use f_expect_paging() in SS/USSD TCs
by fixeria
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
5 months
1
0
0
0
[M] Change in osmo-ttcn3-hacks[master]: s1gw: add TC_uemux_uldl_nas_release
by fixeria
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>
5 months
1
0
0
0
[XS] Change in osmo-ttcn3-hacks[master]: s1gw: disable Nagle for eNB and MME connections
by fixeria
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>
5 months
1
0
0
0
[XS] Change in osmo-ttcn3-hacks[master]: library: add f_rnd_sleep()
by fixeria
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>
5 months
1
0
0
0
← Newer
1
2
3
4
5
...
138
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
Results per page:
10
25
50
100
200