neels has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37809?usp=email )


Change subject: hnbgw: test for RUA Disconnect when there is no CN
......................................................................

hnbgw: test for RUA Disconnect when there is no CN

Related: OS#6283
Related: osmo-hnbgw Iafb30c31a4c5db53ecdda99a0e0b5937b71e362c
Change-Id: I2b5c024a395e736538c0c37db40d34f3b8d99991
---
M hnbgw/HNBGW_Tests.ttcn
1 file changed, 49 insertions(+), 11 deletions(-)



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

diff --git a/hnbgw/HNBGW_Tests.ttcn b/hnbgw/HNBGW_Tests.ttcn
index 3765411..bfbab7d 100644
--- a/hnbgw/HNBGW_Tests.ttcn
+++ b/hnbgw/HNBGW_Tests.ttcn
@@ -290,6 +290,7 @@
        HnbConfig hnb optional,
        boolean expect_separate_sccp_cr,
        integer tx_sccp_cr_data_len,
+       boolean expect_compl_l3_success,
        charstring pfcp_local_addr,
        octetstring nas_pdu optional,
        /* local and remote SCCP addresses, used in TC_mscpool_paging_* */
@@ -1197,6 +1198,7 @@
        hnb := omit,    /* filled in later */
        expect_separate_sccp_cr := expect_separate_sccp_cr,
        tx_sccp_cr_data_len := tx_sccp_cr_data_len,
+       expect_compl_l3_success := true,
        pfcp_local_addr := mp_pfcp_ip_local,
        nas_pdu := omit,
        sccp_addr_msc := omit,
@@ -2155,37 +2157,43 @@
        f_counter_name_vals_list_add(g_ctr_cn, cn_nr, countername, val);
 }

-private function f_perform_compl_l3(octetstring nas, boolean do_clear := true, 
boolean expect_iu_l3 := true)
+private function f_perform_compl_l3(octetstring nas, boolean do_clear := true, 
boolean expect_success := true)
 runs on ConnHdlr {
        timer T := 10.0;

-       /* create an expect on the Iu side for the random NAS portion */
-       if (g_pars.expect_separate_sccp_cr) {
-               f_ran_register_sccp_cr_without_payload();
-       } else {
-               f_ran_register_exp(nas);
+       if (expect_success) {
+               /* create an expect on the Iu side for the random NAS portion */
+               if (g_pars.expect_separate_sccp_cr) {
+                       f_ran_register_sccp_cr_without_payload();
+               } else {
+                       f_ran_register_exp(nas);
+               }
        }

        /* send Connect via Iuh (creating a RUA connection) */
        var RANAP_PDU tx := f_build_initial_ue_with_nas(g_pars, nas);
        RUA.send(RUA_Conn_Req:{g_pars.ps_domain, tx});

-       if (expect_iu_l3) {
+       if (expect_success) {
                /* Expect same message to arrive at CN */
                f_bssap_expect(tx);
+       } else {
+               RUA.receive(RUA_Disc_Ind:?);
        }
 }

 private function f_tc_cnpool_compl_l3(charstring id, TestHdlrParams pars) runs 
on ConnHdlr {
        f_init_handler(pars);
-       f_perform_compl_l3(g_pars.nas_pdu);
+       f_perform_compl_l3(g_pars.nas_pdu, expect_success := 
g_pars.expect_compl_l3_success);
 }

 private function f_TC_cnpool_compl_l3(boolean ps_domain, octetstring nas_pdu, 
integer cn_nr,
-                                     template (omit) charstring 
inc_countername := omit) runs on test_CT {
+                                     template (omit) charstring 
inc_countername := omit,
+                                     boolean expect_compl_l3_success := true) 
runs on test_CT {
        var ConnHdlr vc_conn;
        var template (value) TestHdlrParams pars := t_pars(0, ps_domain := 
ps_domain, cn_nr := cn_nr);
        pars.nas_pdu := nas_pdu;
+       pars.expect_compl_l3_success := expect_compl_l3_success;
        log("XXX ", pars);
        vc_conn := f_start_handler_with_pars(refers(f_tc_cnpool_compl_l3), 
pars);
        vc_conn.done;
@@ -2196,14 +2204,16 @@
 }

 function f_TC_cnpool_compl_l3_list(boolean ps_domain, ro_octetstring compl3, 
Osmocom_Types.ro_integer cn_nrs,
-                                  charstring inc_countername) runs on test_CT {
+                                  template (omit) charstring inc_countername,
+                                  boolean expect_compl_l3_success := true) 
runs on test_CT {
        var integer n := lengthof(compl3);
        if (n < lengthof(cn_nrs)) {
                n := lengthof(cn_nrs);
        }
        for (var integer i := 0; i < n; i := i + 1) {
                var integer cn_nr := cn_nrs[i mod lengthof(cn_nrs)];
-               f_TC_cnpool_compl_l3(ps_domain, compl3[i mod lengthof(compl3)], 
cn_nr, inc_countername);
+               f_TC_cnpool_compl_l3(ps_domain, compl3[i mod lengthof(compl3)], 
cn_nr, inc_countername,
+                                    expect_compl_l3_success);
        }
 }

@@ -2984,6 +2994,34 @@
        f_shutdown_helper();
 }

+/* When no CN was found for a UE / domain, make sure osmo-hnbgw returns a 
Disconnect (OS#6283) */
+testcase TC_mscpool_L3Compl_no_cn() runs on test_CT {
+       f_TC_cnpool_L3Compl_no_cn(ps_domain := false);
+}
+testcase TC_sgsnpool_L3Compl_no_cn() runs on test_CT {
+       f_TC_cnpool_L3Compl_no_cn(ps_domain := true);
+}
+function f_TC_cnpool_L3Compl_no_cn(boolean ps_domain) runs on test_CT {
+
+       /* Have one MSC and one SGSN but do not allow attaching.
+        * I would use no MSCs and no SGSNs, but then we need many tweaks to 
allow test startup without any "BSSAP"
+        * port. */
+       f_init();
+       f_vty_cnlink_allow_attach(HNBGWVTY, ps_domain, {false});
+
+       f_ctrs_cn_init(ps_domain := ps_domain);
+
+       var ro_octetstring compl3 := f_gen_compl3_by_domain(ps_domain, 4);
+       f_TC_cnpool_compl_l3_list(ps_domain, compl3, {0, 0, 0, 0}, omit, // 
FIXME failure counter?
+                                 expect_compl_l3_success := false);
+
+       f_shutdown_helper();
+}
+
+
+
+
+
 control {
        execute(TC_hnb_register());
        execute(TC_hnb_register_duplicate());

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

Gerrit-MessageType: newchange
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I2b5c024a395e736538c0c37db40d34f3b8d99991
Gerrit-Change-Number: 37809
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>

Reply via email to