summaryrefslogtreecommitdiffstats
path: root/msc
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-06-06 05:29:24 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2018-06-10 20:36:51 +0700
commitb9d09f99ee07a31fcb59a2008c25aa28ebe09a2f (patch)
tree8f5e56ca71b2bc418548b9b0954e9c49fad0a555 /msc
parent752ffd565addbd859b6488558cd867cca35054d2 (diff)
msc/USSD: add unknown request code testcase
The idea of this testcase is to check reaction of the network on reception of USSD request with unknown/unhandled request code. It is not clearly defined by the GSM specs, how the network should react in such cases, but looking at GSM TS 04.80, section 4.3.2 "Error types description", the UnexpectedDataValue error looks suitable. Commercial networks also use this error when an unknown request code is sent. Change-Id: I6a3fcaafc37972a38c13722f0b511ea5e1e3fbd8
Diffstat (limited to 'msc')
-rw-r--r--msc/MSC_Tests.ttcn54
-rw-r--r--msc/expected-results.xml1
2 files changed, 55 insertions, 0 deletions
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index 05d6b4f..7b8740c 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -2163,6 +2163,59 @@ testcase TC_lu_and_ussd_single_req() runs on MTC_CT {
vc_conn.done;
}
+private function f_tc_lu_and_ussd_wrong_code(charstring id, BSC_ConnHdlrPars pars)
+runs on BSC_ConnHdlr {
+ f_init_handler(pars);
+
+ /* Perform location update */
+ f_perform_lu();
+
+ /* Send CM Service Request for SS/USSD */
+ f_establish_fully(EST_TYPE_SS_ACT);
+
+ /* Compose a new SS/REGISTER message with request */
+ var template (value) PDU_ML3_MS_NW ussd_req := ts_ML3_MO_SS_REGISTER(
+ tid := 1, /* We just need a single transaction */
+ ti_flag := c_TIF_ORIG, /* Sent from the side that originates the TI */
+ facility := f_USSD_FACILITY_IE_INVOKE(
+ invoke_id := 5, /* Phone may not start from 0 or 1 */
+ op_code := SS_OP_CODE_PROCESS_USS_REQ,
+ ussd_string := "*#999#"
+ )
+ );
+
+ /* Compose SS/RELEASE_COMPLETE template with expected response */
+ var template PDU_ML3_NW_MS ussd_rsp := tr_ML3_MT_SS_RELEASE_COMPLETE(
+ tid := 1, /* Response should arrive within the same transaction */
+ ti_flag := c_TIF_REPL, /* Sent to the side that originates the TI */
+ facility := f_USSD_FACILITY_IE_RETURN_ERROR(
+ invoke_id := 5, /* InvokeID shall be the same for both REQ and RSP */
+ err_code := SS_ERR_CODE_UNEXPECTED_DATA_VALUE
+ )
+ );
+
+ /* Request own number request */
+ BSSAP.send(ts_PDU_DTAP_MO(ussd_req));
+ alt {
+ /* We expect RELEASE_COMPLETE message with the response */
+ [] BSSAP.receive(tr_PDU_DTAP_MT(ussd_rsp)) {
+ setverdict(pass);
+ }
+ [] BSSAP.receive {
+ setverdict(fail, "Unknown/unexpected BSSAP received");
+ self.stop;
+ }
+ }
+
+ f_expect_clear();
+}
+testcase TC_lu_and_ussd_wrong_code() runs on MTC_CT {
+ var BSC_ConnHdlr vc_conn;
+ f_init();
+ vc_conn := f_start_handler(refers(f_tc_lu_and_ussd_wrong_code), 47);
+ vc_conn.done;
+}
+
/* TODO (SMS):
* different user data lengths
* SMPP transaction mode with unsuccessful delivery
@@ -2245,6 +2298,7 @@ control {
execute( TC_smpp_mt_sms() );
execute( TC_lu_and_ussd_single_req() );
+ execute( TC_lu_and_ussd_wrong_code() );
/* Run this last: at the time of writing this test crashes the MSC */
execute( TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug() );
diff --git a/msc/expected-results.xml b/msc/expected-results.xml
index ac18fde..69f2e28 100644
--- a/msc/expected-results.xml
+++ b/msc/expected-results.xml
@@ -72,4 +72,5 @@
<testcase classname='MSC_Tests' name='TC_smpp_mt_sms' time='MASKED'/>
<testcase classname='MSC_Tests' name='TC_lu_imsi_auth_tmsi_encr_3_1_log_msc_debug' time='MASKED'/>
<testcase classname='MSC_Tests' name='TC_lu_and_ussd_single_req' time='MASKED'/>
+ <testcase classname='MSC_Tests' name='TC_lu_and_ussd_wrong_code' time='MASKED'/>
</testsuite>