bsc: reduce code duplication; add new test case on too short messages
Change-Id: I8232ee58c14a4358a01b5428ff2b4e559491b185
diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index 08a5510..dee41d2 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -38,6 +38,7 @@
import from Osmocom_CTRL_Adapter all;
import from MobileL3_CommonIE_Types all;
+import from MobileL3_Types all;
import from L3_Templates all;
import from GSM_RR_Types all;
@@ -1423,22 +1424,24 @@
vc_conn.done;
}
-/* unsolicited ASSIGNMENT FAIL (without ASSIGN) from MS shouldn't bring BSC down */
-private function f_tc_unsol_ass_fail(charstring id) runs on MSC_ConnHdlr {
+private function f_est_single_l3(template PDU_ML3_MS_NW l3) runs on MSC_ConnHdlr {
var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
f_create_chan_and_exp(pars);
/* we should now have a COMPL_L3 at the MSC */
BSSAP.receive(tr_BSSMAP_ComplL3);
- f_rsl_send_l3(ts_RRM_AssignmentFailure('00'O));
- timer T := 5.0;
+ /* send the single message we want to send */
+ f_rsl_send_l3(l3);
+}
+
+private function f_bssap_expect_nothing(float sec := 5.00) runs on MSC_ConnHdlr {
+ timer T := sec;
+ var PDU_BSSAP bssap;
T.start;
alt {
- [] BSSAP.receive(tr_BSSMAP_AssignmentFail) {
- setverdict(fail, "Unexpeted BSSMAP Assignment Failure");
- }
- [] BSSAP.receive(tr_BSSMAP_ClearRequest) {
- setverdict(fail, "Unexpected BSSMAP Clear Requst");
+ [] BSSAP.receive(PDU_BSSAP:?) -> value bssap {
+ setverdict(fail, "Unexpected BSSMAP ", bssap);
+ self.stop;
}
[] T.timeout {
setverdict(pass);
@@ -1446,6 +1449,11 @@
}
}
+/* unsolicited ASSIGNMENT FAIL (without ASSIGN) from MS shouldn't bring BSC down */
+private function f_tc_unsol_ass_fail(charstring id) runs on MSC_ConnHdlr {
+ f_est_single_l3(ts_RRM_AssignmentFailure('00'O));
+ f_bssap_expect_nothing();
+}
testcase TC_unsol_ass_fail() runs on test_CT {
var MSC_ConnHdlr vc_conn;
f_init(1, true);
@@ -1457,25 +1465,8 @@
/* unsolicited ASSIGNMENT COMPLETE (without ASSIGN) from MS shouldn't bring BSC down */
private function f_tc_unsol_ass_compl(charstring id) runs on MSC_ConnHdlr {
- var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
- f_create_chan_and_exp(pars);
- /* we should now have a COMPL_L3 at the MSC */
- BSSAP.receive(tr_BSSMAP_ComplL3);
-
- f_rsl_send_l3(ts_RRM_AssignmentComplete('00'O));
- timer T := 5.0;
- T.start;
- alt {
- [] BSSAP.receive(tr_BSSMAP_AssignmentComplete) {
- setverdict(fail, "Unexpeted BSSMAP Assignment Complet");
- }
- [] BSSAP.receive {
- setverdict(fail, "Unexpected BSSAP");
- }
- [] T.timeout {
- setverdict(pass);
- }
- }
+ f_est_single_l3(ts_RRM_AssignmentComplete('00'O));
+ f_bssap_expect_nothing();
}
testcase TC_unsol_ass_compl() runs on test_CT {
var MSC_ConnHdlr vc_conn;
@@ -1488,24 +1479,9 @@
/* unsolicited HANDOVER FAIL (without ASSIGN) from MS shouldn't bring BSC down */
private function f_tc_unsol_ho_fail(charstring id) runs on MSC_ConnHdlr {
- var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
- f_create_chan_and_exp(pars);
- /* we should now have a COMPL_L3 at the MSC */
- BSSAP.receive(tr_BSSMAP_ComplL3);
-
- f_rsl_send_l3(ts_RRM_HandoverFailure('00'O));
- timer T := 5.0;
- T.start;
- alt {
- [] BSSAP.receive {
- setverdict(fail, "Unexpected BSSMAP");
- }
- [] T.timeout {
- setverdict(pass);
- }
- }
+ f_est_single_l3(ts_RRM_HandoverFailure('00'O));
+ f_bssap_expect_nothing();
}
-
testcase TC_unsol_ho_fail() runs on test_CT {
var MSC_ConnHdlr vc_conn;
f_init(1, true);
@@ -1515,6 +1491,26 @@
}
+/* short message from MS should be ignored */
+private function f_tc_err_82_short_msg(charstring id) runs on MSC_ConnHdlr {
+ var TestHdlrParams pars := valueof(t_def_TestHdlrPars);
+ f_create_chan_and_exp(pars);
+ /* we should now have a COMPL_L3 at the MSC */
+ BSSAP.receive(tr_BSSMAP_ComplL3);
+
+ /* send short message */
+ RSL.send(ts_RSL_DATA_IND(g_chan_nr, valueof(ts_RslLinkID_DCCH(0)), ''O));
+ f_bssap_expect_nothing();
+}
+testcase TC_err_82_short_msg() runs on test_CT {
+ var MSC_ConnHdlr vc_conn;
+ f_init(1, true);
+ f_sleep(1.0);
+ vc_conn := f_start_handler(refers(f_tc_err_82_short_msg), testcasename());
+ vc_conn.done;
+}
+
+
control {
/* CTRL interface testing */
@@ -1582,6 +1578,7 @@
execute( TC_unsol_ass_fail() );
execute( TC_unsol_ass_compl() );
execute( TC_unsol_ho_fail() );
+ execute( TC_err_82_short_msg() );
}
}