pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37425?usp=email )
Change subject: asterisk: Split test code into helper functions ......................................................................
asterisk: Split test code into helper functions
This allows reusing code to create new tests coming up soon, like sending HOLD (re-INVITE sendonly) after having estavlished the call.
Related: SYS#6782 Change-Id: Ic9c712f4cd688729bece225c0d19219dc53e14b3 --- M asterisk/Asterisk_Tests.ttcn 1 file changed, 40 insertions(+), 16 deletions(-)
Approvals: Jenkins Builder: Verified pespin: Looks good to me, approved laforge: Looks good to me, but someone else must approve
diff --git a/asterisk/Asterisk_Tests.ttcn b/asterisk/Asterisk_Tests.ttcn index ca1ec72..3f9db75 100644 --- a/asterisk/Asterisk_Tests.ttcn +++ b/asterisk/Asterisk_Tests.ttcn @@ -206,21 +206,24 @@ }
/* Successful SIP MO-MT Call between local clients: */ -private function f_TC_internal_call_mo(charstring id) runs on SIPConnHdlr { - +private function f_TC_internal_register_establish_call_mo() runs on SIPConnHdlr { f_SIP_register(); COORD.send(COORD_CMD_REGISTERED);
COORD.receive(COORD_CMD_START); f_SIP_mo_call_setup(); COORD.send(COORD_CMD_CALL_ESTABLISHED); - +} +private function f_TC_internal_hangup_call_mo_unregister() runs on SIPConnHdlr { COORD.receive(COORD_CMD_HANGUP); f_SIP_do_call_hangup();
COORD.receive(COORD_CMD_UNREGISTER); f_SIP_unregister(); - +} +private function f_TC_internal_call_mo(charstring id) runs on SIPConnHdlr { + f_TC_internal_register_establish_call_mo(); + f_TC_internal_hangup_call_mo_unregister(); setverdict(pass); } private function f_TC_internal_call_mt(charstring id) runs on SIPConnHdlr { @@ -714,8 +717,7 @@ IMS_COORD.receive(COORD_CMD_CALL_ESTABLISHED) from vc_conn_ims; }
-/* Test IMS MO call emulating an MT which doesn't support precondition */ -private function f_TC_ims_call_mo_IMS_ConnHdlr(charstring id) runs on IMS_ConnHdlr { +private function f_TC_ims_call_mo_IMS_ConnHdlr_register_establish_call() runs on IMS_ConnHdlr { f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.registrar_sip_record.addr))); if (ispresent(g_pars.subscr.cp.called)) { f_create_sip_expect(valueof(ts_SipUrl_from_Addr_Union(g_pars.subscr.cp.called.addr))); @@ -725,6 +727,16 @@ as_IMS_mo_call_accept(); setverdict(pass); COORD.send(COORD_CMD_CALL_ESTABLISHED); +} + +private function f_TC_ims_call_mo_IMS_ConnHdlr_hangup_call_unregister() runs on IMS_ConnHdlr { + as_IMS_exp_call_hangup(g_pars.subscr.cp.sip_seq_nr + 1); + COORD.send(IMS_COORD_CMD_CALL_FINISHED); + setverdict(pass); + as_IMS_unregister(); +} +private function f_TC_ims_call_mo_IMS_ConnHdlr(charstring id) runs on IMS_ConnHdlr { + f_TC_ims_call_mo_IMS_ConnHdlr_register_establish_call(); if (g_pars.subscr.cp.mo.support_timer_session_expires > 0) { timer Trefresh; Trefresh.start(int2float(g_pars.subscr.cp.mo.support_timer_session_expires)); @@ -739,13 +751,12 @@ f_sleep(1.0); COORD.send(IMS_COORD_CMD_CALL_SESSION_REFRESH); } - as_IMS_exp_call_hangup(g_pars.subscr.cp.sip_seq_nr + 1); - COORD.send(IMS_COORD_CMD_CALL_FINISHED); - setverdict(pass); - as_IMS_unregister(); + f_TC_ims_call_mo_IMS_ConnHdlr_hangup_call_unregister(); }
-private function f_TC_ims_call_mo(boolean use_precondition_ext, boolean use_session_timer) runs on test_CT { +private function f_TC_ims_call_mo(boolean use_precondition_ext := true, boolean use_session_timer := false, + void_fn sip_fn := refers(f_TC_internal_call_mo), + ims_void_fn ims_fn := refers(f_TC_ims_call_mo_IMS_ConnHdlr)) runs on test_CT { var SIPConnHdlrPars sip_pars; var IMS_ConnHdlrPars ims_pars; var SIPConnHdlr vc_conn_sip; @@ -769,8 +780,8 @@
}
- vc_conn_ims := f_start_handler_IMS(refers(f_TC_ims_call_mo_IMS_ConnHdlr), ims_pars); - vc_conn_sip := f_start_handler(refers(f_TC_internal_call_mo), sip_pars); + vc_conn_ims := f_start_handler_IMS(ims_fn, ims_pars); + vc_conn_sip := f_start_handler(sip_fn, sip_pars);
COORD.receive(COORD_CMD_REGISTERED) from vc_conn_sip;
@@ -804,13 +815,13 @@ f_shutdown(); } testcase TC_ims_call_mo() runs on test_CT { - f_TC_ims_call_mo(true, false); + f_TC_ims_call_mo(); } testcase TC_ims_call_mo_session_timer() runs on test_CT { - f_TC_ims_call_mo(true, true); + f_TC_ims_call_mo(use_session_timer := true); } testcase TC_ims_call_mo_noprecondition() runs on test_CT { - f_TC_ims_call_mo(false, false); + f_TC_ims_call_mo(use_precondition_ext := false); }
/* Test SIP registration of local clients */