pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39646?usp=email )

Change subject: stp: NOTIFY expectancy fixes
......................................................................

stp: NOTIFY expectancy fixes

Fix expected behavior of STP according to specs (RFC 4666 4.3.4.5),
after osmo-stp got several related fixes in libosmo-sigtran.git
Change-Id I85948ab98623a8a53521eb2d2e84244011b39a93 and Change-Id
I3dffa2e9c554f03c7c721b757ff33a89961665b5.

Change-Id: I3a56b4fcb8c119a31815f3175db2d7899fbfddd7
---
M stp/STP_Tests_M3UA.ttcn
1 file changed, 33 insertions(+), 20 deletions(-)

Approvals:
  osmith: Looks good to me, but someone else must approve
  laforge: Looks good to me, but someone else must approve
  Jenkins Builder: Verified
  pespin: Looks good to me, approved




diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn
index 57aede4..674097a 100644
--- a/stp/STP_Tests_M3UA.ttcn
+++ b/stp/STP_Tests_M3UA.ttcn
@@ -564,8 +564,10 @@
        /* verify traffic is routed from sender to [sole] receiver */
        f_test_traffic(0, rctx_sender, pc_sender, 1, rctx_receiver, 
pc_receiver);

-       /* activate the second 'receiver' side ASP (no NOTIFY as AS state 
doesn't change) */
-       f_M3UA_asp_up_act(2, c_M3UA_TMT_override, rctx_receiver, omit, omit);
+       /* activate the second 'receiver' side ASP:
+        * Expect NOTIFY always after ASPUP (RFC4666 4.3.4.5), don't expect
+        * NOTIFY after ACTIVE as AS state doesn't change) */
+       f_M3UA_asp_up_act(2, c_M3UA_TMT_override, rctx_receiver, 
c_M3UA_ST_I_AS_ACTIVE, omit);

        /* we expect a NOTIFY to the *other* ASP Other/Alternat-ASP-Active */
        f_M3UA_exp(1, tr_M3UA_NOTIFY(c_M3UA_ST_T_OTHER, 
c_M3UA_ST_I_ALTERNATE_ASP, *));
@@ -608,7 +610,7 @@
        }

        /* activate the second 'receiver' side ASP (no NOTIFY) */
-       f_M3UA_asp_up_act(2, c_M3UA_TMT_loadshare, omit, omit, omit); // TODO: 
rctx
+       f_M3UA_asp_up_act(2, c_M3UA_TMT_loadshare, omit, c_M3UA_ST_I_AS_ACTIVE, 
omit); // TODO: rctx

        /* verify traffic is routed from sender to new receiver */
        const integer iter_per_asp := 5;
@@ -665,7 +667,7 @@
        }

        /* activate the second 'receiver' side ASP */
-       f_M3UA_asp_up_act(2, c_M3UA_TMT_broadcast, omit, omit, omit); // TODO: 
rctx
+       f_M3UA_asp_up_act(2, c_M3UA_TMT_broadcast, omit, c_M3UA_ST_I_AS_ACTIVE, 
omit); // TODO: rctx

        /* verify traffic is routed from sender to new receiver */
        for (i := 0; i < 10; i := i+1) {
@@ -685,11 +687,16 @@
 }

 private function f_M3UA_rkm_register(integer idx, OCT4 local_id, OCT3 dpc, 
OCT4 rctx,
-                                    template (present) OCT4 exp_status := 
c_M3UA_REGSTS_SUCCESS)
+                                    template (present) OCT4 exp_status := 
c_M3UA_REGSTS_SUCCESS,
+                                    template (omit) OCT2 ntfy_after_reg := 
c_M3UA_ST_I_AS_INACTIVE
+)
 runs on RAW_M3UA_CT
 {
        f_M3UA_send(idx, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:=local_id, dpc:=dpc, 
rctx:=rctx)}));
        f_M3UA_exp(idx, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:=local_id, 
status:=exp_status, rctx:=rctx)}));
+       if (not istemplatekind(ntfy_after_reg, "omit")) {
+               f_M3UA_exp(idx, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
ntfy_after_reg, *));
+       }
 }

 /* Send RKM registration; expect -EPERM as RCTX doesn't match config and 
dynamic not permitted */
@@ -759,7 +766,7 @@
        f_init_m3ua();

        /* first register the routing key */
-       f_M3UA_rkm_register(0, local_id:='30000099'O, dpc:=dpc, rctx:=rctx);
+       f_M3UA_rkm_register(0, local_id:='30000099'O, dpc:=dpc, rctx:=rctx, 
ntfy_after_reg := omit);

        /* then try to de-register */
        f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctx)));
@@ -771,31 +778,37 @@

 /* try to de-register a routing key for an active ASP -> ERROR */
 testcase TC_rkm_unreg_active() runs on RAW_M3UA_CT {
-       var OCT3 dpc := int2oct(123, 3);
-       var OCT4 rctx := int2oct(1234, 4);
-
        f_init_common();
        f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation 
dynamic-permitted");
        f_init_m3ua();

-       /* first register the routing key */
-       f_M3UA_rkm_register(0, local_id:='30000099'O, dpc:=dpc, rctx:=rctx);
+       var OCT3 dpc := int2oct(123, 3);
+       var OCT4 rctxA := int2oct(1234, 4);
+       var OCT4 rctxB := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); // must 
match config

-       /* then activate the ASP */
-       f_M3UA_asp_up_act(0);
-       f_M3UA_exp(0, tr_M3UA_DAVA({*}, rctx));
-       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_ACTIVE, *));
-       f_M3UA_exp(0, tr_M3UA_DAVA({*}, *));
+       /* first register the routing key */
+       f_M3UA_rkm_register(0, local_id:='30000099'O, dpc:=dpc, rctx:=rctxA, 
ntfy_after_reg := omit);
+
+       /* then activate the ASP, this turns the 2 AS (one for each rctx, 1234 
and default 1023)
+        * INACTIVE, handle the 2 NOTIFY manually afterwards: */
+       f_M3UA_asp_up(0, omit);
+       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_INACTIVE, (rctxA, rctxB)));
+       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_INACTIVE, (rctxA, rctxB)));
+       f_M3UA_asp_act(0, omit, rctxB);
+       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_ACTIVE, rctxB));
+       f_M3UA_exp(0, tr_M3UA_DAVA({*}, rctxA));
+       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_ACTIVE, rctxA));
+       f_M3UA_exp(0, tr_M3UA_DAVA({*}, rctxB));

        /* then try to de-register -> ERR_ASP_ACTIVE */
-       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctx)));
+       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctxA)));
        f_M3UA_exp(0, 
tr_M3UA_DEREG_RSP({tr_M3UA_dereg_res(?,c_m3UA_DEREGSTS_ERR_ASP_ACTIVE)}));

        /* deactivate ASP and properly de-register to clean up */
        f_M3UA_asp_inact(0);
-       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctx)));
-       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_PENDING, *));
-       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_PENDING, *));
+       f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctxA)));
+       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_PENDING, (rctxA, rctxB)));
+       f_M3UA_exp(0, tr_M3UA_NOTIFY(c_M3UA_ST_T_STATE_CHG, 
c_M3UA_ST_I_AS_PENDING, (rctxA, rctxB)));
        f_M3UA_exp(0, 
tr_M3UA_DEREG_RSP({tr_M3UA_dereg_res(?,c_m3UA_DEREGSTS_SUCCESS)}));

        f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation 
static-only");

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

Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I3a56b4fcb8c119a31815f3175db2d7899fbfddd7
Gerrit-Change-Number: 39646
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pes...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <lafo...@osmocom.org>
Gerrit-Reviewer: osmith <osm...@sysmocom.de>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>

Reply via email to