pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/30847 )
Change subject: bsc: TC_assignment_emerg_setup_allow(_imei): Test full voice establishment ......................................................................
bsc: TC_assignment_emerg_setup_allow(_imei): Test full voice establishment
Extend tests to also test the data plane setup.
Related: OS#5849 Change-Id: I9f39f861398669a8eb1da242595de584725e5b83 --- M bsc/BSC_Tests.ttcn 1 file changed, 56 insertions(+), 42 deletions(-)
Approvals: Jenkins Builder: Verified fixeria: Looks good to me, approved
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 45c319d..c0a64a9 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -9180,12 +9180,63 @@ } }
+private function f_assignment_emerg_setup_voice() +runs on MSC_ConnHdlr { + /* Go on with voice call assignment */ + var template PDU_BSSAP exp_compl := f_gen_exp_compl(); + var PDU_BSSAP ass_cmd := f_gen_ass_req(); + + /* Below speechOrDataIndicator and codecList are copied from an emergency call captured during tests. + * They seem a bit weird (AMR-WB, and the order differ between speechId_DataIndicator and the codecList), but + * seems a good idea to see how osmo-bsc reacts to this. */ + ass_cmd.pdu.bssmap.assignmentRequest.channelType := { + elementIdentifier := '0B'O, /* overwritten */ + lengthIndicator := 0, /* overwritten */ + speechOrDataIndicator := '0001'B, /* speech */ + spare1_4 := '0000'B, + channelRateAndType := ChRate_TCHForH_Fpref, + speechId_DataIndicator := 'c2918105'O + }; + ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ + ts_CodecHR, ts_CodecAMR_WB, ts_CodecEFR, ts_CodecFR})); + + f_rslem_dchan_queue_enable(); + + var ExpectCriteria mgcpcrit := { + connid := omit, + endpoint := omit, + transid := omit + }; + f_create_mgcp_expect(mgcpcrit); + + BSSAP.send(ass_cmd); + + var AssignmentState st := valueof(ts_AssignmentStateInit); + st.voice_call := true; + st.is_assignment := false; + alt { + [] as_modify(st); + [] as_Media(); + [st.modify_done] BSSAP.receive(exp_compl) { + setverdict(pass); + } + } + + /* Voice call carries on ... */ + f_sleep(2.0); +} + /* Test if the EMERGENCY SETUP gets passed on to the MSC via A when EMERGENCY * CALLS are permitted by the BSC config. */ private function f_TC_assignment_emerg_setup_allow(charstring id) runs on MSC_ConnHdlr {
+ /* Make sure the CHAN RQD indicates an emergency call (0b101xxxxx). The difference is that osmo-bsc directly + * assigns a TCH lchan and establishing voice for the emergency call will use Mode Modify, not reassignment to + * another lchan. */ + g_pars.ra := f_rnd_ra_emerg(); f_assignment_emerg_setup(); f_assignment_emerg_setup_exp_bssap(); + f_assignment_emerg_setup_voice();
setverdict(pass); f_perform_clear(); @@ -9197,6 +9248,10 @@ var PDU_BSSAP emerg_setup_data_ind_bssap; timer T := 3.0;
+ /* Make sure the CHAN RQD indicates an emergency call (0b101xxxxx). The difference is that osmo-bsc directly + * assigns a TCH lchan and establishing voice for the emergency call will use Mode Modify, not reassignment to + * another lchan. */ + g_pars.ra := f_rnd_ra_emerg(); f_assignment_emerg_setup();
T.start; @@ -10488,48 +10543,7 @@ BSSAP_LE.receive(BSSAP_LE_Conn_Prim:CONN_PRIM_DISC_IND); BSSAP.receive(tr_BSSMAP_Perform_Location_Response(tr_BSSMAP_IE_LocationEstimate(gad_ell_point_unc_circle)));
- /* Go on with voice call assignment */ - var template PDU_BSSAP exp_compl := f_gen_exp_compl(); - var PDU_BSSAP ass_cmd := f_gen_ass_req(); - - /* Below speechOrDataIndicator and codecList are copied from an emergency call captured during tests. - * They seem a bit weird (AMR-WB, and the order differ between speechId_DataIndicator and the codecList), but - * seems a good idea to see how osmo-bsc reacts to this. */ - ass_cmd.pdu.bssmap.assignmentRequest.channelType := { - elementIdentifier := '0B'O, /* overwritten */ - lengthIndicator := 0, /* overwritten */ - speechOrDataIndicator := '0001'B, /* speech */ - spare1_4 := '0000'B, - channelRateAndType := ChRate_TCHForH_Fpref, - speechId_DataIndicator := 'c2918105'O - }; - ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ - ts_CodecHR, ts_CodecAMR_WB, ts_CodecEFR, ts_CodecFR})); - - f_rslem_dchan_queue_enable(); - - var ExpectCriteria mgcpcrit := { - connid := omit, - endpoint := omit, - transid := omit - }; - f_create_mgcp_expect(mgcpcrit); - - BSSAP.send(ass_cmd); - - var AssignmentState st := valueof(ts_AssignmentStateInit); - st.voice_call := true; - st.is_assignment := false; - alt { - [] as_modify(st); - [] as_Media(); - [st.modify_done] BSSAP.receive(exp_compl) { - setverdict(pass); - } - } - - /* Voice call carries on ... */ - f_sleep(2.0); + f_assignment_emerg_setup_voice();
setverdict(pass); f_perform_clear();