BSC LCLS: restructure tests
Move duplicated code into separate functions to simplify adding test cases which do not use MGW MDCX methods for closing the loop. Change-Id: Idf9fc8e639b0ece662ab26c481899ef39fb7edfe Related: OS#3659
This commit is contained in:
parent
4b0f49633e
commit
b1599b11e3
|
@ -255,11 +255,28 @@ testcase TC_lcls_gcr_only() runs on lcls_test_CT {
|
|||
f_lcls_test_fini();
|
||||
}
|
||||
|
||||
private function f_tc_lcls_recv_ls_exp_mgcp() runs on lcls_test_CT {
|
||||
var MgcpCommand mgcp_cmd;
|
||||
|
||||
interleave {
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_locally_switched));
|
||||
[] CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
[] CONN_A.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_A.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
/* not needed, as this MDCX is still handled within MSC_ConnectionHandler
|
||||
[] CONN_B.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_B.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
private function f_tc_lcls_gcr_bway_connect(boolean hr) runs on lcls_test_CT {
|
||||
var TestHdlrParams pars_a := valueof(t_def_TestHdlrPars);
|
||||
var TestHdlrParams pars_b;
|
||||
var MSC_ConnHdlr vc_conn;
|
||||
var MgcpCommand mgcp_cmd;
|
||||
|
||||
f_lcls_init();
|
||||
|
||||
|
@ -281,14 +298,8 @@ private function f_tc_lcls_gcr_bway_connect(boolean hr) runs on lcls_test_CT {
|
|||
f_lcls_test_init(pars_a, pars_b);
|
||||
|
||||
CONN_A.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
interleave {
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_locally_switched));
|
||||
[] CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
[] CONN_A.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_A.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
}
|
||||
|
||||
f_tc_lcls_recv_ls_exp_mgcp();
|
||||
|
||||
f_lcls_test_fini();
|
||||
}
|
||||
|
@ -366,6 +377,12 @@ testcase TC_lcls_gcr_nomatch_bway_connect() runs on lcls_test_CT {
|
|||
f_lcls_test_fini();
|
||||
}
|
||||
|
||||
/* check for the cases where LCLS is not possible due to some reason */
|
||||
private function f_lcls_not_yet_ls() runs on lcls_test_CT {
|
||||
CONN_A.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
}
|
||||
|
||||
/* Send an ASSIGNMENT REQ with LCLS GCR+CFG+CSC; expect no connect */
|
||||
testcase TC_lcls_gcr_bway_dont_connect() runs on lcls_test_CT {
|
||||
|
@ -387,9 +404,7 @@ testcase TC_lcls_gcr_bway_dont_connect() runs on lcls_test_CT {
|
|||
pars_b.lcls.exp_sts := LCLS_STS_not_yet_ls;
|
||||
|
||||
f_lcls_test_init(pars_a, pars_b);
|
||||
CONN_A.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
f_lcls_not_yet_ls();
|
||||
f_wait_fail_notify();
|
||||
f_lcls_test_fini();
|
||||
}
|
||||
|
@ -435,12 +450,26 @@ testcase TC_lcls_gcr_unsuppported_csc() runs on lcls_test_CT {
|
|||
pars_b.lcls.exp_sts := LCLS_STS_not_yet_ls;
|
||||
|
||||
f_lcls_test_init(pars_a, pars_b);
|
||||
CONN_A.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
f_lcls_not_yet_ls();
|
||||
f_lcls_test_fini();
|
||||
}
|
||||
|
||||
/* Expect given LCLS status alongside with corresponding MDCX commands */
|
||||
private function f_lcls_sts_mgcp(BIT4 expected_status) runs on lcls_test_CT {
|
||||
var MgcpCommand mgcp_cmd;
|
||||
|
||||
interleave {
|
||||
[] CONN_B.receive(tr_BSSMAP_LclsConnCtrlAck(tr_BSSMAP_IE_LclsSts(expected_status)));
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(expected_status));
|
||||
[] CONN_A.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_A.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
[] CONN_B.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_B.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Send an ASSIGNMENT REQ with "do not connect" and enable later using LCLS CTRL */
|
||||
testcase TC_lcls_gcr_bway_dont_connect_csc() runs on lcls_test_CT {
|
||||
var TestHdlrParams pars_a := valueof(t_def_TestHdlrPars);
|
||||
|
@ -463,9 +492,7 @@ testcase TC_lcls_gcr_bway_dont_connect_csc() runs on lcls_test_CT {
|
|||
|
||||
/* start call and expect it to be "not yet" LS */
|
||||
f_lcls_test_init(pars_a, pars_b);
|
||||
CONN_A.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
f_lcls_not_yet_ls();
|
||||
f_sleep(2.0);
|
||||
|
||||
/* send "connect" on A side, expect call to remain in "not yet" */
|
||||
|
@ -475,16 +502,7 @@ testcase TC_lcls_gcr_bway_dont_connect_csc() runs on lcls_test_CT {
|
|||
|
||||
/* send "connect" on B side, expect call to go LS, with notify to A side */
|
||||
CONN_B.send(ts_BSSMAP_LclsConnCtrl(omit, ts_BSSMAP_IE_LclsCsc(LCLS_CSC_connect)));
|
||||
interleave {
|
||||
[] CONN_B.receive(tr_BSSMAP_LclsConnCtrlAck(tr_BSSMAP_IE_LclsSts(LCLS_STS_locally_switched)));
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_locally_switched));
|
||||
[] CONN_A.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_A.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
[] CONN_B.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_B.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
}
|
||||
f_lcls_sts_mgcp(LCLS_STS_locally_switched);
|
||||
f_wait_fail_notify();
|
||||
f_lcls_test_fini();
|
||||
}
|
||||
|
@ -510,7 +528,6 @@ testcase TC_lcls_connect_break() runs on lcls_test_CT {
|
|||
var TestHdlrParams pars_a := valueof(t_def_TestHdlrPars);
|
||||
var TestHdlrParams pars_b;
|
||||
var MSC_ConnHdlr vc_conn;
|
||||
var MgcpCommand mgcp_cmd;
|
||||
|
||||
f_lcls_init();
|
||||
|
||||
|
@ -528,19 +545,8 @@ testcase TC_lcls_connect_break() runs on lcls_test_CT {
|
|||
/* Expect LS to be established successfully */
|
||||
f_lcls_test_init(pars_a, pars_b);
|
||||
CONN_A.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
interleave {
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_locally_switched));
|
||||
[] CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
[] CONN_A.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_A.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
/* not needed, as this MDCX is still handled within MSC_ConnectionHandler
|
||||
[] CONN_B.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_B.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
f_tc_lcls_recv_ls_exp_mgcp()
|
||||
|
||||
/* request LS release on "A" side; call continues to be locally switched */
|
||||
CONN_A.send(ts_BSSMAP_LclsConnCtrl(omit, ts_BSSMAP_IE_LclsCsc(LCLS_CSC_release_lcls)));
|
||||
|
@ -549,16 +555,8 @@ testcase TC_lcls_connect_break() runs on lcls_test_CT {
|
|||
|
||||
/* request LS release on "B" side; call LS is released */
|
||||
CONN_B.send(ts_BSSMAP_LclsConnCtrl(omit, ts_BSSMAP_IE_LclsCsc(LCLS_CSC_release_lcls)));
|
||||
interleave {
|
||||
[] CONN_A.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_A.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
[] CONN_B.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_B.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
[] CONN_B.receive(tr_BSSMAP_LclsConnCtrlAck(tr_BSSMAP_IE_LclsSts(LCLS_STS_no_longer_ls)));
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_no_longer_ls));
|
||||
}
|
||||
|
||||
f_lcls_sts_mgcp(LCLS_STS_no_longer_ls)
|
||||
|
||||
f_lcls_test_fini();
|
||||
}
|
||||
|
@ -587,14 +585,8 @@ testcase TC_lcls_connect_clear() runs on lcls_test_CT {
|
|||
/* Expect LS to be established successfully */
|
||||
f_lcls_test_init(pars_a, pars_b);
|
||||
CONN_A.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
interleave {
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_not_yet_ls));
|
||||
[] CONN_A.receive(tr_BSSMAP_LclsNotificationSts(LCLS_STS_locally_switched));
|
||||
[] CONN_B.receive(LclsCompSync:LCLS_COMP_SYNC_ASS_COMPL);
|
||||
[] CONN_A.receive(tr_MDCX) -> value mgcp_cmd {
|
||||
CONN_A.send(f_build_mdcx_rsp(mgcp_cmd));
|
||||
}
|
||||
}
|
||||
|
||||
f_tc_lcls_recv_ls_exp_mgcp();
|
||||
|
||||
/* Perform hard BSSMAP Clear on "A" side, expect no LS on "B" side */
|
||||
var myBSSMAP_Cause cause_val := GSM0808_CAUSE_CALL_CONTROL;
|
||||
|
|
Loading…
Reference in New Issue