pespin has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/30841 )


Change subject: bsc: Introduce test TC_assignment_emerg_setup_allow_imei
......................................................................

bsc: Introduce test TC_assignment_emerg_setup_allow_imei

Related: OS#5849
Change-Id: I5a95cb0cd6903801db8cfcc1542bd6147461eebe
---
M bsc/BSC_Tests.ttcn
M bsc/MSC_ConnectionHandler.ttcn
M library/Osmocom_Types.ttcn
3 files changed, 44 insertions(+), 5 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks 
refs/changes/41/30841/1

diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index ea73f4a..c3743df 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -759,6 +759,7 @@
        pars.mscpool.bssap_idx := bssap_idx;
        pars.expect_tsc := c_BtsParams[0].tsc;
        pars.imsi := f_rnd_imsi('00101'H);
+       pars.imei := f_rnd_imei('00101'H);

        log(testcasename(), ": using IMSI ", pars.imsi);

@@ -9223,6 +9224,26 @@
        f_shutdown_helper();
 }

+/* Test MO emergency call using MobileIdentity=IMEI (possible for emergency
+ * calls from phones without SIM card).
+ * 3GPP TS 24.008 section 10.5.1.4, OS#5849 */
+testcase TC_assignment_emerg_setup_allow_imei() runs on test_CT {
+       var TestHdlrParams pars := f_gen_test_hdlr_pars();
+       var MSC_ConnHdlr vc_conn;
+
+       /* Remove IMSI set by f_gen_test_hdlr_pars(), then IMEI will be used to 
place the call */
+       pars.imsi := omit;
+
+       f_init(1, true);
+       f_sleep(1.0);
+
+       f_vty_allow_emerg_msc(true);
+       f_vty_allow_emerg_bts(true, 0);
+       vc_conn := f_start_handler(refers(f_TC_assignment_emerg_setup_allow), 
pars);
+       vc_conn.done;
+       f_shutdown_helper();
+}
+
 /* EMERGENCY CALL situation #2, forbidden globally but allowed by BTS */
 testcase TC_assignment_emerg_setup_deny_msc() runs on test_CT {
        var TestHdlrParams pars := f_gen_test_hdlr_pars();
@@ -12387,6 +12408,7 @@

        /* Emergency call handling (deny / allow) */
        execute( TC_assignment_emerg_setup_allow() );
+       execute( TC_assignment_emerg_setup_allow_imei() );
        execute( TC_assignment_emerg_setup_deny_msc() );
        execute( TC_assignment_emerg_setup_deny_bts() );
        execute( TC_emerg_premption() );
diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn
index dd044e0..13fe723 100644
--- a/bsc/MSC_ConnectionHandler.ttcn
+++ b/bsc/MSC_ConnectionHandler.ttcn
@@ -730,7 +730,8 @@
 type record TestHdlrParams {
        OCT1            ra,
        GsmFrameNumber  fn,
-       hexstring       imsi,
+       hexstring       imsi optional,
+       hexstring       imei optional,
        RslLinkId       link_id,
        integer         media_nr, /* determins MGCP EP, port numbers */
        BSSMAP_IE_SpeechCodecList ass_codec_list optional,
@@ -764,7 +765,8 @@
 template (value) TestHdlrParams t_def_TestHdlrPars := {
        ra := '23'O,
        fn := 23,
-       imsi := '001019876543210'H,
+       imsi := omit, /* set to random in f_gen_test_hdlr_pars() */
+       imei := omit, /* set to random in f_gen_test_hdlr_pars() */
        link_id := valueof(ts_RslLinkID_DCCH(0)),
        media_nr := 1,
        ass_codec_list := omit,
@@ -804,12 +806,23 @@

 function f_create_chan_and_exp(template (present) PDU_BSSAP exp_l3_compl := ?)
 runs on MSC_ConnHdlr {
-       var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
-       var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, 
mi));
-       var octetstring l3_enc := enc_PDU_ML3_MS_NW(l3_info);
+       var MobileIdentityLV mi;
+       var PDU_ML3_MS_NW l3_info;
+       var octetstring l3_enc;
        var template uint3_t tsc := ?;
        timer T;

+       if (ispresent(g_pars.imsi)) {
+               mi := valueof(ts_MI_IMSI_LV(g_pars.imsi));
+       } else if (ispresent(g_pars.imei)) {
+               mi := valueof(ts_MI_IMEI_LV(g_pars.imei));
+       } else {
+               Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail,
+                                       "Either imsi or imei must be set!");
+       }
+       l3_info := valueof(ts_CM_SERV_REQ(CM_TYPE_MO_CALL, mi));
+       l3_enc := enc_PDU_ML3_MS_NW(l3_info);
+
        if (not istemplatekind(g_pars.expect_tsc, "omit")) {
                tsc := g_pars.expect_tsc;
        }
diff --git a/library/Osmocom_Types.ttcn b/library/Osmocom_Types.ttcn
index 2edec36..dc4fd65 100644
--- a/library/Osmocom_Types.ttcn
+++ b/library/Osmocom_Types.ttcn
@@ -105,6 +105,10 @@
        return prefix & f_rnd_hexstring(15 - lengthof(prefix), 10);
 }

+function f_rnd_imei(in hexstring prefix) return hexstring {
+       return prefix & f_rnd_hexstring(14 - lengthof(prefix), 10);
+}
+
 function f_rnd_msisdn(in octetstring prefix, integer len := 6) return 
octetstring {
        return prefix & f_rnd_octstring(len - lengthof(prefix));
 }

--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/30841
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I5a95cb0cd6903801db8cfcc1542bd6147461eebe
Gerrit-Change-Number: 30841
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to