<p>neels <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/26143">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  neels: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">bsc: add test for CM Service Reject counter<br><br>Related: I79b1261e5a281d9797eaaf9c27d90edd8e27c78b (osmo-bsc)<br>Related: SYS#4878<br>Change-Id: I0214b27da18af87eca9715ebf7eeeff945e3e12a<br>---<br>M bsc/BSC_Tests.ttcn<br>M library/L3_Templates.ttcn<br>2 files changed, 82 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn</span><br><span>index 2fde8ae..4fdd059 100644</span><br><span>--- a/bsc/BSC_Tests.ttcn</span><br><span>+++ b/bsc/BSC_Tests.ttcn</span><br><span>@@ -766,8 +766,12 @@</span><br><span> </span><br><span> /* Convenience functions for rate counters using g_ctr_bts, always also including g_ctr_bsc. */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_ctrs_bsc_and_bts_init(integer bts_count := NUM_BTS, CounterNameVals counternames := counternames_bsc_bts_handover) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_ctrs_bts_init(integer bts_count := NUM_BTS, CounterNameVals counternames := counternames_bsc_bts_handover) runs on test_CT {</span><br><span>     g_ctr_bts := f_counter_name_vals_get_n(IPA_CTRL, "bts", bts_count, counternames);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+function f_ctrs_bsc_and_bts_init(integer bts_count := NUM_BTS, CounterNameVals counternames := counternames_bsc_bts_handover) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     f_ctrs_bts_init(bts_count, counternames);</span><br><span>    log("initial bts rate counters: ", g_ctr_bts);</span><br><span>     f_ctrs_bsc_init(counternames);</span><br><span> }</span><br><span>@@ -788,6 +792,10 @@</span><br><span>   f_ctrs_bsc_add(countername, val);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+function f_ctrs_bts_verify() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+    f_counter_name_vals_expect_n(IPA_CTRL, "bts", g_ctr_bts);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*  f_ctrs_bsc_and_bts_init();</span><br><span>  *  f_do_thing(on_bts := 0);</span><br><span>  *  f_do_thing(on_bts := 0);</span><br><span>@@ -797,7 +805,7 @@</span><br><span>  *  f_ctrs_bsc_and_bts_verify();</span><br><span>  */</span><br><span> private function f_ctrs_bsc_and_bts_verify() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-   f_counter_name_vals_expect_n(IPA_CTRL, "bts", g_ctr_bts);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_ctrs_bts_verify();</span><br><span>         f_ctrs_bsc_verify();</span><br><span> }</span><br><span> </span><br><span>@@ -10346,6 +10354,59 @@</span><br><span>     f_shutdown_helper();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const CounterNameVals counternames_cm_serv_rej := {</span><br><span style="color: hsl(120, 100%, 40%);">+    { "cm_serv_rej", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+       { "cm_serv_rej:imsi_unknown_in_hlr", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { "cm_serv_rej:illegal_ms", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { "cm_serv_rej:imsi_unknown_in_vlr", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { "cm_serv_rej:imei_not_accepted", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { "cm_serv_rej:illegal_me", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { "cm_serv_rej:plmn_not_allowed", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+      { "cm_serv_rej:loc_not_allowed", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+       { "cm_serv_rej:roaming_not_allowed", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { "cm_serv_rej:network_failure", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+       { "cm_serv_rej:synch_failure", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+ { "cm_serv_rej:congestion", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { "cm_serv_rej:srv_opt_not_supported", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+ { "cm_serv_rej:rqd_srv_opt_not_supported", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { "cm_serv_rej:srv_opt_tmp_out_of_order", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+      { "cm_serv_rej:call_can_not_be_identified", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { "cm_serv_rej:incorrect_message", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { "cm_serv_rej:invalid_mandantory_inf", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { "cm_serv_rej:msg_type_not_implemented", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+      { "cm_serv_rej:msg_type_not_compatible", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+       { "cm_serv_rej:inf_eleme_not_implemented", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+     { "cm_serv_rej:condtional_ie_error", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+   { "cm_serv_rej:msg_not_compatible", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { "cm_serv_rej:protocol_error", 0 },</span><br><span style="color: hsl(120, 100%, 40%);">+        { "cm_serv_rej:retry_in_new_cell", 0 }</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_cm_serv_rej(charstring id) runs on MSC_ConnHdlr</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      f_create_chan_and_exp();</span><br><span style="color: hsl(120, 100%, 40%);">+      BSSAP.send(ts_PDU_DTAP_MT(ts_CM_SERV_REJ('02'O), '00'O));</span><br><span style="color: hsl(120, 100%, 40%);">+     f_sleep(3.0);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_cm_serv_rej() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ var TestHdlrParams pars := f_gen_test_hdlr_pars();</span><br><span style="color: hsl(120, 100%, 40%);">+    var MSC_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_init(1, true);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_sleep(1.0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_ctrs_bts_init(1, counternames_cm_serv_rej);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       vc_conn := f_start_handler(refers(f_TC_cm_serv_rej), pars);</span><br><span style="color: hsl(120, 100%, 40%);">+   vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       f_ctrs_bts_add(0, "cm_serv_rej", 1);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_ctrs_bts_add(0, "cm_serv_rej:imsi_unknown_in_hlr", 1);</span><br><span style="color: hsl(120, 100%, 40%);">+    f_ctrs_bts_verify();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_shutdown_helper();</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Reproduce a segfault happening when the SDCCH (primary) lchan is lost in-between a TCH Channel Activ and its Channel</span><br><span>  * Activ Ack (SYS#5627). */</span><br><span> private function f_TC_lost_sdcch_during_assignment(charstring id) runs on MSC_ConnHdlr {</span><br><span>@@ -10894,6 +10955,8 @@</span><br><span>    execute( TC_ratectr_all_available_allocated() );</span><br><span>     execute( TC_ratectr_all_available_allocated_dyn() );</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      execute( TC_cm_serv_rej() );</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       execute( TC_lost_sdcch_during_assignment() );</span><br><span> }</span><br><span> </span><br><span>diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn</span><br><span>index 997b433..e6efb68 100644</span><br><span>--- a/library/L3_Templates.ttcn</span><br><span>+++ b/library/L3_Templates.ttcn</span><br><span>@@ -389,6 +389,23 @@</span><br><span>       }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+template (value) PDU_ML3_NW_MS ts_CM_SERV_REJ(OCT1 rejectCause) := {</span><br><span style="color: hsl(120, 100%, 40%);">+      discriminator := '0000'B, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+   tiOrSkip := {</span><br><span style="color: hsl(120, 100%, 40%);">+         skipIndicator := '0000'B</span><br><span style="color: hsl(120, 100%, 40%);">+      },</span><br><span style="color: hsl(120, 100%, 40%);">+    msgs := {</span><br><span style="color: hsl(120, 100%, 40%);">+             mm := {</span><br><span style="color: hsl(120, 100%, 40%);">+                       cMServiceReject := {</span><br><span style="color: hsl(120, 100%, 40%);">+                          messageType := '000000'B, /* overwritten */</span><br><span style="color: hsl(120, 100%, 40%);">+                           nsd := '00'B,</span><br><span style="color: hsl(120, 100%, 40%);">+                         rejectCause := rejectCause,</span><br><span style="color: hsl(120, 100%, 40%);">+                           t3246_Value := omit</span><br><span style="color: hsl(120, 100%, 40%);">+                   }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> template (value) PDU_ML3_MS_NW ts_CM_REESTABL_REQ(MobileIdentityLV mi_lv) := {</span><br><span>     discriminator := '0000'B, /* overwritten */</span><br><span>  tiOrSkip := {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/26143">change 26143</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/26143"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ttcn3-hacks </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I0214b27da18af87eca9715ebf7eeeff945e3e12a </div>
<div style="display:none"> Gerrit-Change-Number: 26143 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>