<p>fixeria has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18030">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">BTS: verify presence of GPRS Indicator in SI4 Rest Octets<br><br>So far we only checked presence of GPRS Indicator in the Rest<br>Octets of System Information Type 3, but this indicator is<br>also included in the Rest Octets of System Information Type 4.<br><br>Let's add additional test cases to check this indicator in the<br>Rest Octets of both message types. In order to achieve this:<br><br>  a) refactor f_si3_has_gprs_indicator(), so it can handle<br>     System Information Type 4 and its Rest Octets too;<br><br>  b) separate common part from the existing test cases into<br>     functions and (re)use them from the new ones;<br><br>  c) in f_TC_pcu_socket_noconnect(), make sure to send<br>     BCCH INFO with System Information Type 4.<br><br>Change-Id: Ifc589c35a52a62331b0ad4fbe2eec3fba55b5ff9<br>Signed-off-by: Vadim Yanitskiy <axilirator@gmail.com><br>Related: OS#3075<br>---<br>M bts/BTS_Tests.ttcn<br>1 file changed, 65 insertions(+), 21 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/30/18030/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/bts/BTS_Tests.ttcn b/bts/BTS_Tests.ttcn</span><br><span>index 0347e05..ab0b982 100644</span><br><span>--- a/bts/BTS_Tests.ttcn</span><br><span>+++ b/bts/BTS_Tests.ttcn</span><br><span>@@ -4927,13 +4927,28 @@</span><br><span>        return si;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-private function f_si3_has_gprs_indicator(RestOctets ro) return boolean {</span><br><span style="color: hsl(0, 100%, 40%);">-    var SI3RestOctets rest := dec_SI3RestOctets(ro);</span><br><span style="color: hsl(0, 100%, 40%);">-        return rest.gprs_ind.presence == '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+/* Check if GPRS Indicator is present in RR System Information of a given type */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_si_has_gprs_indicator(RrMessageType si_type)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT return boolean {</span><br><span style="color: hsl(120, 100%, 40%);">+  var SystemInformation si := f_get_si(L1CTL, si_type);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       if (si_type == SYSTEM_INFORMATION_TYPE_3) {</span><br><span style="color: hsl(120, 100%, 40%);">+           var RestOctets ro := si.payload.si3.rest_octets;</span><br><span style="color: hsl(120, 100%, 40%);">+              var SI3RestOctets rest := dec_SI3RestOctets(ro);</span><br><span style="color: hsl(120, 100%, 40%);">+              return rest.gprs_ind.presence == '1'B;</span><br><span style="color: hsl(120, 100%, 40%);">+        } else if (si_type == SYSTEM_INFORMATION_TYPE_4) {</span><br><span style="color: hsl(120, 100%, 40%);">+            var RestOctets ro := si.payload.si4.rest_octets;</span><br><span style="color: hsl(120, 100%, 40%);">+              var SI4RestOctets rest := dec_SI4RestOctets(ro);</span><br><span style="color: hsl(120, 100%, 40%);">+              return rest.gprs_ind.presence == '1'B;</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%);">+   Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Unhandled SI type");</span><br><span style="color: hsl(120, 100%, 40%);">+    return false;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_pcu_socket_noconnect_nosi3gprs() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-    var SystemInformation si;</span><br><span style="color: hsl(120, 100%, 40%);">+/* Make sure that GPRS Indicator is absent when the PCU is not connected */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_pcu_socket_noconnect(RrMessageType si_type)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT {</span><br><span>         timer T := 5.0;</span><br><span> </span><br><span>  /* don't call f_init() as this would connect PCU socket */</span><br><span>@@ -4945,26 +4960,36 @@</span><br><span>             Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "Timeout waiting for ASP_IPA_EVENT_UP");</span><br><span>                }</span><br><span>    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Send both System Information Type 3 and 4 (with GPRS Indicator) */</span><br><span>        f_rsl_bcch_fill(RSL_SYSTEM_INFO_3, ts_SI3_default);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_rsl_bcch_fill(RSL_SYSTEM_INFO_4, ts_SI4_default);</span><br><span> </span><br><span>      f_init_l1ctl();</span><br><span>      f_l1_tune(L1CTL);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    f_sleep(2.0);</span><br><span>        L1CTL.clear;</span><br><span style="color: hsl(0, 100%, 40%);">-    si := f_get_si(L1CTL, SYSTEM_INFORMATION_TYPE_3);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (f_si3_has_gprs_indicator(si.payload.si3.rest_octets)) {</span><br><span style="color: hsl(0, 100%, 40%);">-             setverdict(fail, "SI3 indicates GPRS even before PCU socket connected");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (f_si_has_gprs_indicator(si_type)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, si_type, " indicates GPRS even before PCU socket connected");</span><br><span>     } else {</span><br><span>             setverdict(pass);</span><br><span>    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Ensure that GPRS capability is advertised after PCU socket connect */</span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_pcu_socket_connect_si3gprs() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-        var SystemInformation si;</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pcu_socket_noconnect_nosi3gprs() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+     f_TC_pcu_socket_noconnect(SYSTEM_INFORMATION_TYPE_3);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pcu_socket_noconnect_nosi4gprs() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  f_TC_pcu_socket_noconnect(SYSTEM_INFORMATION_TYPE_4);</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%);">+/* Ensure that GPRS capability is advertised after PCU socket connect */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_pcu_socket_connect(RrMessageType si_type)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT {</span><br><span>     /* this (among other things) establishes the first connection to the PCUIF socket */</span><br><span>         f_init();</span><br><span>    f_init_l1ctl();</span><br><span>@@ -4972,19 +4997,27 @@</span><br><span> </span><br><span>        f_sleep(2.0);</span><br><span>        L1CTL.clear;</span><br><span style="color: hsl(0, 100%, 40%);">-    si := f_get_si(L1CTL, SYSTEM_INFORMATION_TYPE_3);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (not f_si3_has_gprs_indicator(si.payload.si3.rest_octets)) {</span><br><span style="color: hsl(0, 100%, 40%);">-         setverdict(fail, "SI3 indicates no GPRS despite PCU socket connected");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (not f_si_has_gprs_indicator(si_type)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           setverdict(fail, si_type, " indicates no GPRS despite PCU socket connected");</span><br><span>      } else {</span><br><span>             setverdict(pass);</span><br><span>    }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* Ensure that GPRS capability is no longer advertised after PCU socket disconnect */</span><br><span style="color: hsl(0, 100%, 40%);">-testcase TC_pcu_socket_disconnect_nosi3gprs() runs on test_CT {</span><br><span style="color: hsl(0, 100%, 40%);">-      var SystemInformation si;</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pcu_socket_connect_si3gprs() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+ f_TC_pcu_socket_connect(SYSTEM_INFORMATION_TYPE_3);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pcu_socket_connect_si4gprs() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+        f_TC_pcu_socket_connect(SYSTEM_INFORMATION_TYPE_4);</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%);">+/* Ensure that GPRS capability is no longer advertised after PCU socket disconnect */</span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_pcu_socket_disconnect(RrMessageType si_type)</span><br><span style="color: hsl(120, 100%, 40%);">+runs on test_CT {</span><br><span>       /* this (among other things) establishes the first connection to the PCUIF socket */</span><br><span>         f_init();</span><br><span>    f_init_l1ctl();</span><br><span>@@ -5001,9 +5034,9 @@</span><br><span> </span><br><span>  f_sleep(2.0);</span><br><span>        L1CTL.clear;</span><br><span style="color: hsl(0, 100%, 40%);">-    si := f_get_si(L1CTL, SYSTEM_INFORMATION_TYPE_3);</span><br><span style="color: hsl(0, 100%, 40%);">-       if (f_si3_has_gprs_indicator(si.payload.si3.rest_octets)) {</span><br><span style="color: hsl(0, 100%, 40%);">-             setverdict(fail, "SI3 indicates GPRS after PCU socket disconnected");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (f_si_has_gprs_indicator(si_type)) {</span><br><span style="color: hsl(120, 100%, 40%);">+               setverdict(fail, si_type, " indicates GPRS after PCU socket disconnected");</span><br><span>        } else {</span><br><span>             setverdict(pass);</span><br><span>    }</span><br><span>@@ -5011,6 +5044,14 @@</span><br><span>   Misc_Helpers.f_shutdown(__BFILE__, __LINE__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_pcu_socket_disconnect_nosi3gprs() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+       f_TC_pcu_socket_disconnect(SYSTEM_INFORMATION_TYPE_3);</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%);">+testcase TC_pcu_socket_disconnect_nosi4gprs() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+  f_TC_pcu_socket_disconnect(SYSTEM_INFORMATION_TYPE_4);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* Verify that the cell_id of SI3 (TS 04.08 9.1.35) and other values are passed properly to the PCU socket (OS#3854) */</span><br><span> testcase TC_pcu_socket_verify_info_ind() runs on test_CT {</span><br><span>         var SystemInformation si3 := valueof(ts_SI3_default);</span><br><span>@@ -6437,8 +6478,11 @@</span><br><span>               execute( TC_pcu_socket_connect_multi() );</span><br><span>            execute( TC_pcu_socket_reconnect() );</span><br><span>                execute( TC_pcu_socket_noconnect_nosi3gprs() );</span><br><span style="color: hsl(120, 100%, 40%);">+               execute( TC_pcu_socket_noconnect_nosi4gprs() );</span><br><span>              execute( TC_pcu_socket_connect_si3gprs() );</span><br><span style="color: hsl(120, 100%, 40%);">+           execute( TC_pcu_socket_connect_si4gprs() );</span><br><span>          execute( TC_pcu_socket_disconnect_nosi3gprs() );</span><br><span style="color: hsl(120, 100%, 40%);">+              execute( TC_pcu_socket_disconnect_nosi4gprs() );</span><br><span>             execute( TC_pcu_socket_verify_info_ind() );</span><br><span>          execute( TC_dyn_osmo_pdch_act_deact() );</span><br><span>             execute( TC_dyn_osmo_pdch_double_act() );</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18030">change 18030</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/+/18030"/><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: Ifc589c35a52a62331b0ad4fbe2eec3fba55b5ff9 </div>
<div style="display:none"> Gerrit-Change-Number: 18030 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>