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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">stp: Make sure all AS are shutdown when test finishes<br><br>This way traffic modes set dynamically by peers are cleared and can be<br>reset by next tests easily.<br><br>Change-Id: I177441b2d43298b3836ccf78fe11267333e80665<br>---<br>M stp/STP_Tests.ttcn<br>M stp/STP_Tests_M3UA.ttcn<br>2 files changed, 56 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/stp/STP_Tests.ttcn b/stp/STP_Tests.ttcn</span><br><span>index 023c53d..82bc03b 100644</span><br><span>--- a/stp/STP_Tests.ttcn</span><br><span>+++ b/stp/STP_Tests.ttcn</span><br><span>@@ -170,6 +170,8 @@</span><br><span> </span><br><span>        /* expect to receive it via IPA */</span><br><span>   f_IPA_exp(0, sccp_enc);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* test routing an SCCP message from IPA ASP to M3UA ASP */</span><br><span>@@ -199,6 +201,8 @@</span><br><span>        var template (present) M3UA_Protocol_Data rx_pd;</span><br><span>     rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, c_M3UA_SI_SCCP, '00'O, '00'O, '00'O, sccp_enc);</span><br><span>       f_M3UA_exp(0, tr_M3UA_DATA(rctx_receiver, rx_pd));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* test routing an SCCP message from IPA ASP to M3UA ASP while patching PC into SCCP addresses */</span><br><span>@@ -233,6 +237,8 @@</span><br><span>  rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, c_M3UA_SI_SCCP, '00'O, '00'O, '00'O,</span><br><span>                                  enc_PDU_SCCP(sccp_exp));</span><br><span>     f_M3UA_exp(0, tr_M3UA_DATA(rctx_receiver, rx_pd));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> </span><br><span>diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn</span><br><span>index 5c15c6f..c550d40 100644</span><br><span>--- a/stp/STP_Tests_M3UA.ttcn</span><br><span>+++ b/stp/STP_Tests_M3UA.ttcn</span><br><span>@@ -38,6 +38,7 @@</span><br><span>    integer mp_stp_m3ua_port := 2905;</span><br><span>    integer mp_stp_m3ua_clnt_port := 2906;</span><br><span>       integer mp_local_m3ua_port := 9999;</span><br><span style="color: hsl(120, 100%, 40%);">+   integer mp_recovery_timeout_msec := 2000;</span><br><span> }</span><br><span> </span><br><span> private const integer NR_M3UA := 3;       /* number of M3UA clients in ATS */</span><br><span>@@ -103,6 +104,12 @@</span><br><span>   g_m3ua_conn_id[i] := res.connId;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+friend function f_M3UA_close(integer i) runs on RAW_M3UA_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var Result res;</span><br><span style="color: hsl(120, 100%, 40%);">+       res := M3UA_CodecPort_CtrlFunct.f_IPL4_close(M3UA[i], g_m3ua_conn_id[i], {sctp:=valueof(ts_SCTP)});</span><br><span style="color: hsl(120, 100%, 40%);">+   g_m3ua_conn_id[i] := 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> friend function f_M3UA_listen(integer i) runs on RAW_M3UA_CT {</span><br><span>       var Result res;</span><br><span>      res := M3UA_CodecPort_CtrlFunct.f_IPL4_listen(M3UA[i], mp_local_ip, mp_local_m3ua_port+i,</span><br><span>@@ -126,6 +133,19 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+friend function f_clear_m3ua() runs on RAW_M3UA_CT {</span><br><span style="color: hsl(120, 100%, 40%);">+      var integer i;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      log("Clearing M3UA...");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  for (i := 0; i < NR_M3UA; i:=i+1) {</span><br><span style="color: hsl(120, 100%, 40%);">+                f_M3UA_close(i);</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Wait for recovery timer to trigger and shutdown all AS: */</span><br><span style="color: hsl(120, 100%, 40%);">+ f_sleep(int2float(mp_recovery_timeout_msec)/1000.0 + 0.5);</span><br><span style="color: hsl(120, 100%, 40%);">+    setverdict(pass, "M3UA cleared");</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> friend function f_init_m3ua_srv() runs on RAW_M3UA_CT {</span><br><span>  var integer i;</span><br><span>       var PortEvent sctp_evt;</span><br><span>@@ -192,6 +212,7 @@</span><br><span>        f_init_m3ua();</span><br><span>       f_M3UA_asp_up(0);</span><br><span>    f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_INACTIVE, *));</span><br><span style="color: hsl(120, 100%, 40%);">+     f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test the heartbeat procedure without optional heartbeat data payload */</span><br><span>@@ -200,6 +221,7 @@</span><br><span>         f_M3UA_asp_up(0);</span><br><span>    f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_INACTIVE, *));</span><br><span>    f_M3UA_beat(0, omit);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test the heartbeat procedure with optional heartbeat data payload */</span><br><span>@@ -208,30 +230,35 @@</span><br><span>  f_M3UA_asp_up(0);</span><br><span>    f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, c_M3UA_ST_I_AS_INACTIVE, *));</span><br><span>    f_M3UA_beat(0, 'a1a2a3a4a5'O);</span><br><span style="color: hsl(120, 100%, 40%);">+        f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test the ASP-ACTIVATE procedure (without traffic-mode or routing ctx) */</span><br><span> testcase TC_asp_act() runs on RAW_M3UA_CT {</span><br><span>       f_init_m3ua();</span><br><span>       f_M3UA_asp_up_act(0);</span><br><span style="color: hsl(120, 100%, 40%);">+ f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test the ASP-ACTIVATE procedure with traffic-mode override */</span><br><span> testcase TC_asp_act_override() runs on RAW_M3UA_CT {</span><br><span>         f_init_m3ua();</span><br><span>       f_M3UA_asp_up_act(0, c_M3UA_TMT_override, omit);</span><br><span style="color: hsl(120, 100%, 40%);">+      f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test the ASP-ACTIVATE procedure with traffic-mode override */</span><br><span> testcase TC_asp_act_loadshare() runs on RAW_M3UA_CT {</span><br><span>        f_init_m3ua();</span><br><span>       f_M3UA_asp_up_act(0, c_M3UA_TMT_loadshare, omit);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test the ASP-ACTIVATE procedure with traffic-mode broadcast */</span><br><span> testcase TC_asp_act_broadcast() runs on RAW_M3UA_CT {</span><br><span>       f_init_m3ua();</span><br><span>       f_M3UA_asp_up_act(0, c_M3UA_TMT_broadcast, omit);</span><br><span style="color: hsl(120, 100%, 40%);">+     f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test if traffic is routed from idx_tx/pc_tx to idx_rx/pc_rx */</span><br><span>@@ -274,6 +301,7 @@</span><br><span>  /* verify traffic is routed from sender to new receiver */</span><br><span>   f_test_traffic(0, rctx_sender, pc_sender, 2, rctx_receiver, pc_receiver);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> private altstep as_count_rx(integer idx, template (present) PDU_M3UA exp, inout integer counter)</span><br><span>@@ -332,6 +360,8 @@</span><br><span>           }</span><br><span>    }</span><br><span>    setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* test "traffic-mode broadcast" behavior */</span><br><span>@@ -373,6 +403,8 @@</span><br><span>             f_M3UA_exp(2, tr_M3UA_DATA(rctx_receiver, rx_pd));</span><br><span>   }</span><br><span>    setverdict(pass);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> private function f_M3UA_rkm_register(OCT4 id, OCT3 dpc, OCT4 rctx,</span><br><span>@@ -390,6 +422,8 @@</span><br><span>         f_M3UA_send(0, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='00000099'O, dpc:='aabbcc'O)}));</span><br><span>    f_M3UA_exp(0, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='00000099'O, status:=c_M3UA_REGSTS_ERR_EPERM,</span><br><span>                                                    rctx:=?)}));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Send RKM registration; expect OK as RCTX does match config */</span><br><span>@@ -402,6 +436,8 @@</span><br><span>   f_M3UA_send(0, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='10000099'O, dpc:=dpc, rctx:=rctx)}));</span><br><span>      f_M3UA_exp(0, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='10000099'O, status:=c_M3UA_REGSTS_SUCCESS,</span><br><span>                                                      rctx:=rctx)}));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Send RKM registration; expect OK as dynamic not permitted */</span><br><span>@@ -415,6 +451,8 @@</span><br><span>                                                   rctx:=?)}));</span><br><span> </span><br><span>      f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation static-only");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* try to de-register a routing key that was never registered -> error */</span><br><span>@@ -422,6 +460,7 @@</span><br><span>       f_init_m3ua();</span><br><span>       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(int2oct(1023,4))));</span><br><span>     f_M3UA_exp(0, tr_M3UA_DEREG_RSP({tr_M3UA_dereg_res(?,c_m3UA_DEREGSTS_ERR_NOT_REG)}));</span><br><span style="color: hsl(120, 100%, 40%);">+ f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* try to de-register a routing key that is invalid (non-existant) -> error */</span><br><span>@@ -429,6 +468,7 @@</span><br><span>  f_init_m3ua();</span><br><span>       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(int2oct(1234,4))));</span><br><span>     f_M3UA_exp(0, tr_M3UA_DEREG_RSP({tr_M3UA_dereg_res(?,c_m3UA_DEREGSTS_ERR_INVAL_RCTX)}));</span><br><span style="color: hsl(120, 100%, 40%);">+      f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* try to de-register a routing key that was registered -> OK*/</span><br><span>@@ -436,6 +476,7 @@</span><br><span>         f_init_m3ua();</span><br><span>       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(int2oct(1023,4))));</span><br><span>     f_M3UA_exp(0, tr_M3UA_DEREG_RSP({tr_M3UA_dereg_res(?,c_m3UA_DEREGSTS_SUCCESS)}));</span><br><span style="color: hsl(120, 100%, 40%);">+     f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* try to de-register a routing key for an active ASP -> ERROR */</span><br><span>@@ -455,6 +496,8 @@</span><br><span>       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctx)));</span><br><span>        f_M3UA_exp(0, tr_M3UA_DEREG_RSP({tr_M3UA_dereg_res(?,c_m3UA_DEREGSTS_ERR_ASP_ACTIVE)}));</span><br><span>     /* FIXME: we now may have changed the state on the STP side! */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /***********************************************************************</span><br><span>@@ -497,6 +540,8 @@</span><br><span>   f_init_m3ua_srv();</span><br><span> </span><br><span>       f_M3UA_CLNT_asp_up(M3UA_SRV(0));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Expect inbound connection from ASP/SCTP-client, followed by ASP-UP + ASP-ACT */</span><br><span>@@ -505,6 +550,8 @@</span><br><span>         f_init_m3ua_srv();</span><br><span> </span><br><span>       f_M3UA_CLNT_asp_up_act(M3UA_SRV(0));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test traffic being routed through "server" side STP (M3UA SG), coming back in "client"</span><br><span>@@ -525,6 +572,8 @@</span><br><span> </span><br><span>  /* verify traffic is routed from sender to [sole] receiver */</span><br><span>        f_test_traffic(0, rctx_sender, pc_sender, M3UA_SRV(0), rctx_receiver, pc_receiver);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> /* Test traffic being routed through "client" side STP (M3UA ASP), coming back in "server"</span><br><span>@@ -545,6 +594,7 @@</span><br><span> </span><br><span>         /* verify traffic is routed from sender to [sole] receiver */</span><br><span>        f_test_traffic(M3UA_SRV(0), rctx_sender, pc_sender, 0, rctx_receiver, pc_receiver);</span><br><span style="color: hsl(120, 100%, 40%);">+   f_clear_m3ua();</span><br><span> }</span><br><span> </span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/16040">change 16040</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/+/16040"/><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: I177441b2d43298b3836ccf78fe11267333e80665 </div>
<div style="display:none"> Gerrit-Change-Number: 16040 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>