<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/9950">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">sgsn: Add test to verify restart_ctr during echo req/reply.<br><br>Currently test doesn't fully work because it doesn't match the PDP CTX<br>DEL REQ correctly.<br><br>Change-Id: I1dcb250dba2079c14b857c0b89a02ac21d1c591f<br>---<br>M sgsn/SGSN_Tests.ttcn<br>M sgsn/expected-results.xml<br>2 files changed, 55 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn</span><br><span>index cfe2d3f..e76ed09 100644</span><br><span>--- a/sgsn/SGSN_Tests.ttcn</span><br><span>+++ b/sgsn/SGSN_Tests.ttcn</span><br><span>@@ -64,6 +64,7 @@</span><br><span>      port TELNETasp_PT SGSNVTY;</span><br><span> </span><br><span>       var boolean g_initialized := false;</span><br><span style="color: hsl(120, 100%, 40%);">+   var boolean g_use_echo := false;</span><br><span> };</span><br><span> </span><br><span> type component BSSGP_ConnHdlr extends BSSGP_Client_CT, GSUP_ConnHdlr, GTP_ConnHdlr {</span><br><span>@@ -160,6 +161,14 @@</span><br><span>    f_vty_config(SGSNVTY, "sgsn", "auth-policy remote");</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_vty_enable_echo_interval(boolean enable) runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      if (enable) {</span><br><span style="color: hsl(120, 100%, 40%);">+         f_vty_config(SGSNVTY, "sgsn", "ggsn 0 echo-interval 5");</span><br><span style="color: hsl(120, 100%, 40%);">+  } else {</span><br><span style="color: hsl(120, 100%, 40%);">+              f_vty_config(SGSNVTY, "sgsn", "ggsn 0 no echo-interval");</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> </span><br><span> function f_init(BcdMccMnc mcc_mnc := '26242F'H) runs on test_CT {</span><br><span>      if (g_initialized == true) {</span><br><span>@@ -184,6 +193,7 @@</span><br><span>   f_init_gsup("SGSN_Test");</span><br><span>  f_init_gtp("SGSN_Test");</span><br><span>   f_init_vty();</span><br><span style="color: hsl(120, 100%, 40%);">+ f_vty_enable_echo_interval(g_use_echo);</span><br><span> }</span><br><span> </span><br><span> type function void_fn(charstring id) runs on BSSGP_ConnHdlr;</span><br><span>@@ -874,6 +884,7 @@</span><br><span>       OCT4                    ggsn_tei_u,                     /* GGSN TEI User */</span><br><span>  octetstring             ggsn_ip_c,                      /* GGSN IP Control */</span><br><span>        octetstring             ggsn_ip_u,                      /* GGSN IP User */</span><br><span style="color: hsl(120, 100%, 40%);">+    OCT1                    ggsn_restart_ctr,               /* GGSN Restart Counter */</span><br><span> </span><br><span>       OCT4                    sgsn_tei_c optional,            /* SGSN TEI Control */</span><br><span>       OCT4                    sgsn_tei_u optional,            /* SGSN TEI User */</span><br><span>@@ -1025,6 +1036,7 @@</span><br><span>  ggsn_tei_u := f_rnd_octstring(4),</span><br><span>    ggsn_ip_c := f_inet_addr(ggsn_ip),</span><br><span>   ggsn_ip_u := f_inet_addr(ggsn_ip),</span><br><span style="color: hsl(120, 100%, 40%);">+    ggsn_restart_ctr := int2oct(2, 1),</span><br><span> </span><br><span>       sgsn_tei_c := omit,</span><br><span>  sgsn_tei_u := omit,</span><br><span>@@ -1251,6 +1263,46 @@</span><br><span>         vc_conn.done;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+private function f_TC_attach_restart_ctr_dettach(charstring id) runs on BSSGP_ConnHdlr {</span><br><span style="color: hsl(120, 100%, 40%);">+      var Gtp1cUnitdata g_ud;</span><br><span style="color: hsl(120, 100%, 40%);">+       var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* first perform regular attach */</span><br><span style="color: hsl(120, 100%, 40%);">+    f_TC_attach(id);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Activate a pdp context against the  GGSN */</span><br><span style="color: hsl(120, 100%, 40%);">+        f_pdp_ctx_act(apars);</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Wait to receive first echo request and send initial Restart counter */</span><br><span style="color: hsl(120, 100%, 40%);">+     GTP.receive(tr_GTPC_MsgType(?, echoRequest, ?)) -> value g_ud {</span><br><span style="color: hsl(120, 100%, 40%);">+            var integer seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber);</span><br><span style="color: hsl(120, 100%, 40%);">+             GTP.send(ts_GTPC_PONG(g_ud.peer, seq_nr, apars.ggsn_restart_ctr));</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Wait to receive second echo request and send incremented Restart</span><br><span style="color: hsl(120, 100%, 40%);">+      counter. This will fake a restarted GGSN, and pdp ctx allocated</span><br><span style="color: hsl(120, 100%, 40%);">+       should be released by SGSN */</span><br><span style="color: hsl(120, 100%, 40%);">+      apars.ggsn_restart_ctr := int2oct(oct2int(apars.ggsn_restart_ctr) + 1, 1);</span><br><span style="color: hsl(120, 100%, 40%);">+    GTP.receive(tr_GTPC_MsgType(?, echoRequest, ?)) -> value g_ud {</span><br><span style="color: hsl(120, 100%, 40%);">+            var integer seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber);</span><br><span style="color: hsl(120, 100%, 40%);">+             GTP.send(ts_GTPC_PONG(g_ud.peer, seq_nr, apars.ggsn_restart_ctr));</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     var OCT1 cause_network_failure := int2oct(38, 1)</span><br><span style="color: hsl(120, 100%, 40%);">+      alt {</span><br><span style="color: hsl(120, 100%, 40%);">+ [] BSSGP.receive(tr_BD_L3_MT(tr_SM_DEACT_PDP_REQ_MT(apars.tid, cause_network_failure, true))) {</span><br><span style="color: hsl(120, 100%, 40%);">+               BSSGP.send(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid));</span><br><span style="color: hsl(120, 100%, 40%);">+             setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+     [] as_xid(apars);</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+testcase TC_attach_restart_ctr_dettach() runs on test_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var BSSGP_ConnHdlr vc_conn;</span><br><span style="color: hsl(120, 100%, 40%);">+   g_use_echo := true</span><br><span style="color: hsl(120, 100%, 40%);">+    f_init();</span><br><span style="color: hsl(120, 100%, 40%);">+     vc_conn := f_start_handler(refers(f_TC_attach_restart_ctr_dettach), testcasename(), g_gb[0], 23, 30.0);</span><br><span style="color: hsl(120, 100%, 40%);">+       vc_conn.done;</span><br><span style="color: hsl(120, 100%, 40%);">+ g_use_echo := false</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> private function f_TC_hlr_location_cancel_request_update(charstring id) runs on BSSGP_ConnHdlr {</span><br><span>         /* MS: perform regular attach */</span><br><span>     f_TC_attach(id);</span><br><span>@@ -1625,6 +1677,7 @@</span><br><span>     execute( TC_attach_pdp_act_user_deact_mo() );</span><br><span>        execute( TC_attach_pdp_act_user_deact_mt() );</span><br><span>        execute( TC_attach_second_attempt() );</span><br><span style="color: hsl(120, 100%, 40%);">+        execute( TC_attach_restart_ctr_dettach() );</span><br><span> }</span><br><span> </span><br><span> </span><br><span>diff --git a/sgsn/expected-results.xml b/sgsn/expected-results.xml</span><br><span>index 1949199..f2f2500 100644</span><br><span>--- a/sgsn/expected-results.xml</span><br><span>+++ b/sgsn/expected-results.xml</span><br><span>@@ -1,5 +1,5 @@</span><br><span> <?xml version="1.0"?></span><br><span style="color: hsl(0, 100%, 40%);">-<testsuite name='Titan' tests='25' failures='5' errors='3' skipped='0' inconc='0' time='MASKED'></span><br><span style="color: hsl(120, 100%, 40%);">+<testsuite name='Titan' tests='26' failures='5' errors='3' skipped='0' inconc='0' time='MASKED'></span><br><span>   <testcase classname='SGSN_Tests' name='TC_attach' time='MASKED'/></span><br><span>   <testcase classname='SGSN_Tests' name='TC_attach_mnc3' time='MASKED'/></span><br><span>   <testcase classname='SGSN_Tests' name='TC_attach_umts_aka_umts_res' time='MASKED'/></span><br><span>@@ -65,4 +65,5 @@</span><br><span>   <testcase classname='SGSN_Tests' name='TC_attach_second_attempt' time='MASKED'></span><br><span>     <error type='DTE'></error></span><br><span>   </testcase></span><br><span style="color: hsl(120, 100%, 40%);">+  <testcase classname='SGSN_Tests' name='TC_attach_restart_ctr_dettach' time='MASKED'/></span><br><span> </testsuite></span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/9950">change 9950</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/9950"/><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-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I1dcb250dba2079c14b857c0b89a02ac21d1c591f </div>
<div style="display:none"> Gerrit-Change-Number: 9950 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>