pespin has uploaded this change for review.
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(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/25/37425/1
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 */
To view, visit change 37425. To unsubscribe, or for help writing mail filters, visit settings.