fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/36148?usp=email )
Change subject: stp: add and use f_m3ua_{cli,srv}_config() helpers ......................................................................
stp: add and use f_m3ua_{cli,srv}_config() helpers
Using this API reduces the risk of using the wrong half of the mp_m3ua_configs[] array and improves the code readability a bit.
Change-Id: I9788f52c20574f4f9d015d2de11b5e42bb03d15f Related: SYS#5424 --- M stp/STP_Tests_M3UA.ttcn 1 file changed, 96 insertions(+), 61 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/48/36148/1
diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn index 5af894a..8b3db48 100644 --- a/stp/STP_Tests_M3UA.ttcn +++ b/stp/STP_Tests_M3UA.ttcn @@ -104,6 +104,22 @@ return NR_M3UA+idx; }
+private function f_m3ua_cli_config(integer idx) return M3uaConfig { + if (idx < 0 or idx >= NR_M3UA) { + setverdict(fail, "f_m3ua_cli_config(): unexpected idx"); + mtc.stop; + } + return mp_m3ua_configs[idx]; +} + +private function f_m3ua_srv_config(integer idx) return M3uaConfig { + if (idx < 0 or idx >= NR_M3UA_SRV) { + setverdict(fail, "f_m3ua_srv_config(): unexpected idx"); + mtc.stop; + } + return mp_m3ua_configs[M3UA_SRV(idx)]; +} + type component RAW_M3UA_CT extends Test_CT { port M3UA_CODEC_PT M3UA[NR_M3UA+NR_M3UA_SRV]; var integer g_m3ua_conn_id[NR_M3UA+NR_M3UA_SRV]; @@ -415,10 +431,10 @@
/* test whether the STP accepts M3UA DATA without Routing Context IE */ testcase TC_act_rctx_data_no_rctx() runs on RAW_M3UA_CT { - var OCT4 rctx_sender := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_sender := int2oct(f_m3ua_cli_config(0).point_code, 4); + var OCT4 rctx_receiver := int2oct(f_m3ua_cli_config(1).routing_ctx, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_cli_config(1).point_code, 4);
f_init_m3ua(); /* bring up the sender specifying a routing context */ @@ -447,10 +463,10 @@
/* test "traffic-mode override" behavior */ testcase TC_tmt_override() runs on RAW_M3UA_CT { - var OCT4 rctx_sender := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_sender := int2oct(f_m3ua_cli_config(0).point_code, 4); + var OCT4 rctx_receiver := int2oct(f_m3ua_cli_config(1).routing_ctx, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_cli_config(1).point_code, 4);
f_init_m3ua();
@@ -484,10 +500,10 @@
/* test "traffic-mode load-share" behavior */ testcase TC_tmt_loadshare() runs on RAW_M3UA_CT { - var OCT4 rctx_sender := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_sender := int2oct(f_m3ua_cli_config(0).point_code, 4); + var OCT4 rctx_receiver := int2oct(f_m3ua_cli_config(1).routing_ctx, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_cli_config(1).point_code, 4); var integer i;
f_init_m3ua(); @@ -537,10 +553,10 @@
/* test "traffic-mode broadcast" behavior */ testcase TC_tmt_broadcast() runs on RAW_M3UA_CT { - var OCT4 rctx_sender := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_sender := int2oct(f_m3ua_cli_config(0).point_code, 4); + var OCT4 rctx_receiver := int2oct(f_m3ua_cli_config(1).routing_ctx, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_cli_config(1).point_code, 4); var integer i;
f_init_m3ua(); @@ -599,8 +615,8 @@
/* Send RKM registration; expect OK as RCTX does match config */ testcase TC_rkm_reg_static_permitted() runs on RAW_M3UA_CT { - var OCT3 dpc := int2oct(mp_m3ua_configs[0].point_code, 3); // must match config - var OCT4 rctx := int2oct(mp_m3ua_configs[0].routing_ctx, 4); // must match config + var OCT3 dpc := int2oct(f_m3ua_cli_config(0).point_code, 3); // must match config + var OCT4 rctx := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); // must match config
f_init_m3ua();
@@ -629,7 +645,8 @@ /* try to de-register a routing key that was never registered -> error */ testcase TC_rkm_unreg_never_registered() runs on RAW_M3UA_CT { f_init_m3ua(); - f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(int2oct(mp_m3ua_configs[0].routing_ctx,4)))); + var octetstring rctx := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctx))); f_M3UA_exp(0, tr_M3UA_DEREG_RSP({tr_M3UA_dereg_res(?,c_m3UA_DEREGSTS_ERR_NOT_REG)})); f_clear_m3ua(); } @@ -747,7 +764,8 @@ f_init_m3ua(); f_init_m3ua_srv();
- f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + var OCT4 rctx := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctx);
f_clear_m3ua(); } @@ -759,7 +777,8 @@ f_init_m3ua(); f_init_m3ua_srv();
- f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), tmt := c_M3UA_TMT_loadshare, rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + var OCT4 rctx := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), tmt := c_M3UA_TMT_loadshare, rctx := rctx);
f_clear_m3ua(); } @@ -767,16 +786,16 @@ /* Test traffic being routed through "server" side STP (M3UA SG), coming back in "client" * side STP (M3UA ASP) */ testcase TC_clnt_sg_to_asp() runs on RAW_M3UA_CT { - var OCT4 rctx_sender := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[M3UA_SRV(0)].point_code, 4); + var OCT4 rctx_sender := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_sender := int2oct(f_m3ua_cli_config(0).point_code, 4); + var OCT4 rctx_receiver := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_srv_config(0).point_code, 4);
f_init_m3ua(); f_M3UA_asp_up_act(0);
f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctx_receiver);
f_sleep(1.0);
@@ -789,16 +808,16 @@ /* Test traffic being routed through "client" side STP (M3UA ASP), coming back in "server" * side STP (M3UA SG) */ testcase TC_clnt_asp_to_sg() runs on RAW_M3UA_CT { - var OCT4 rctx_sender := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[M3UA_SRV(0)].point_code, 4); - var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[0].point_code, 4); + var OCT4 rctx_sender := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); + var OCT4 pc_sender := int2oct(f_m3ua_srv_config(0).point_code, 4); + var OCT4 rctx_receiver := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_cli_config(0).point_code, 4);
f_init_m3ua(); f_M3UA_asp_up_act(0);
f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctx_sender);
f_sleep(1.0);
@@ -810,10 +829,10 @@ /* Test traffic being routed through "server" side STP (M3UA SG), coming back in "client" * side STP (M3UA ASP) which has no routing context set */ testcase TC_clnt_sg_to_asp_norctx() runs on RAW_M3UA_CT { - var OCT4 rctx_sender := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[0].point_code, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[M3UA_SRV(1)].point_code, 4); - var OCT4 pc_receiver2 := int2oct(mp_m3ua_configs[M3UA_SRV(2)].point_code, 4); + var OCT4 rctx_sender := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_sender := int2oct(f_m3ua_cli_config(0).point_code, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_srv_config(1).point_code, 4); + var OCT4 pc_receiver2 := int2oct(f_m3ua_srv_config(2).point_code, 4);
/* activate the sender side (ATS is client to STP in SG role) */ f_init_m3ua(); @@ -837,10 +856,10 @@ /* Test traffic being routed through "server" side STP (M3UA SG), coming back in "client" * side STP (M3UA ASP) which has no routing context set */ testcase TC_clnt_asp_to_sg_norctx() runs on RAW_M3UA_CT { - var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(mp_m3ua_configs[0].point_code, 4); - var OCT4 pc_sender := int2oct(mp_m3ua_configs[M3UA_SRV(1)].point_code, 4); - var OCT4 pc_sender2 := int2oct(mp_m3ua_configs[M3UA_SRV(2)].point_code, 4); + var OCT4 rctx_receiver := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 pc_receiver := int2oct(f_m3ua_cli_config(0).point_code, 4); + var OCT4 pc_sender := int2oct(f_m3ua_srv_config(1).point_code, 4); + var OCT4 pc_sender2 := int2oct(f_m3ua_srv_config(2).point_code, 4);
/* activate the sender side (ATS is client to STP in SG role) */ f_init_m3ua(); @@ -863,7 +882,8 @@
/* Test if ASPAC / ASPIA of one ASP generates DAVA / DUNA on other ASP */ testcase TC_ssnm_aspac_dava_aspia_duna() runs on RAW_M3UA_CT { - var OCT4 rctx0 := int2oct(mp_m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx0 := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var integer pc0 := f_m3ua_cli_config(1).point_code;
f_init_m3ua(ignore_ssnm := false); /* activate the first ASP */ @@ -872,13 +892,13 @@ /* activate the second ASP */ f_M3UA_asp_up_act(1, c_M3UA_TMT_override, omit); /* expect DAVA for PC of second ASP on first ASP */ - f_M3UA_exp(0, tr_M3UA_DAVA({ts_M3UA_PC(mp_m3ua_configs[1].point_code, 0)}, rctx0)); + f_M3UA_exp(0, tr_M3UA_DAVA({ts_M3UA_PC(pc0, 0)}, rctx0)); /* TODO: expect no DAVA on second ASP */
/* deactivate the second ASP */ f_M3UA_asp_inact(1); /* expect DUNA for PC of second ASP on first ASP */ - f_M3UA_exp(0, tr_M3UA_DUNA({ts_M3UA_PC(mp_m3ua_configs[1].point_code, 0)}, rctx0)); + f_M3UA_exp(0, tr_M3UA_DUNA({ts_M3UA_PC(pc0, 0)}, rctx0)); /* TODO: expect no DUNA on second ASP */
f_clear_m3ua(); @@ -886,8 +906,8 @@
/* Test if DAVA/DUNA sent from SG to ASP-role STP gets forwarded to other ASP */ testcase TC_ssnm_distribution_dava_duna() runs on RAW_M3UA_CT { - var OCT4 rctx0 := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); + var OCT4 rctx0 := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 rctxS0 := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); /* some random point code whose availability we advertise */ var template (value) M3UA_Point_Code adv_pc := ts_M3UA_PC(1234, 0);
@@ -898,7 +918,7 @@
/* activate SG-role ASP (ASP on STP) */ f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctxS0);
/* transmit a DAVA to the remote ASP */ f_M3UA_send(M3UA_SRV(0), ts_M3UA_DAVA({adv_pc}, rctxS0)); @@ -913,8 +933,8 @@
/* Test if DAVA/DUNA sent from SG to ASP-role STP gets forwarded to other ASP */ testcase TC_ssnm_distribution_dava_duna_multipc() runs on RAW_M3UA_CT { - var OCT4 rctx0 := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); + var OCT4 rctx0 := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 rctxS0 := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); /* some random point code whose availability we advertise */ var template (value) M3UA_Point_Codes adv_pcs := { ts_M3UA_PC(1234, 0), ts_M3UA_PC(5678, 0) };
@@ -925,7 +945,7 @@
/* activate SG-role ASP (ASP on STP) */ f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctxS0);
/* transmit a DAVA to the remote ASP */ f_M3UA_send(M3UA_SRV(0), ts_M3UA_DAVA(adv_pcs, rctxS0)); @@ -940,8 +960,8 @@
/* Test if DUPU sent from SG to ASP-role STP gets forwarded to other ASP */ testcase TC_ssnm_distribution_dupu() runs on RAW_M3UA_CT { - var OCT4 rctx0 := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); + var OCT4 rctx0 := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 rctxS0 := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); /* some random point code whose availability we advertise */ var template (value) M3UA_Point_Code adv_pc := ts_M3UA_PC(1234, 0);
@@ -952,7 +972,7 @@
/* activate SG-role ASP (ASP on STP) */ f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctxS0);
/* transmit a DUPU to the remote ASP */ f_M3UA_send(M3UA_SRV(0), ts_M3UA_DUPU({adv_pc}, '0102'O, 'ABCD'O, rctxS0)); @@ -962,8 +982,8 @@
/* Test if SCON sent from SG to ASP-role STP gets forwarded to other ASP */ testcase TC_ssnm_distribution_scon() runs on RAW_M3UA_CT { - var OCT4 rctx0 := int2oct(mp_m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); + var OCT4 rctx0 := int2oct(f_m3ua_cli_config(0).routing_ctx, 4); + var OCT4 rctxS0 := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); /* some random point code whose availability we advertise */ var template (value) M3UA_Point_Code adv_pc := ts_M3UA_PC(1234, 0);
@@ -974,7 +994,7 @@
/* activate SG-role ASP (ASP on STP) */ f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctxS0);
/* transmit a SCON to the remote ASP */ f_M3UA_send(M3UA_SRV(0), ts_M3UA_SCON({adv_pc}, rctxS0)); @@ -996,7 +1016,7 @@ f_quirk("no_notify"); f_init_m3ua_srv();
- f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4), + f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := int2oct(f_m3ua_srv_config(0).routing_ctx, 4), ntfy_after_up := omit, ntfy_after_act := omit); f_no_quirk("no_notify"); f_clear_m3ua(); @@ -1008,11 +1028,12 @@ f_no_quirk("daud_in_asp"); f_init_m3ua_srv();
- var OCT4 rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); + var OCT4 rctx := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); + var integer pc := f_m3ua_srv_config(0).point_code;
f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctx);
- var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(mp_m3ua_configs[M3UA_SRV(0)].point_code) }; + var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(pc) }; f_M3UA_send(M3UA_SRV(0), ts_M3UA_DAUD(aff_pcs)); f_M3UA_exp(M3UA_SRV(0), tr_M3UA_ERR('00000004'O, omit)); setverdict(pass); @@ -1026,11 +1047,12 @@ f_quirk("daud_in_asp"); f_init_m3ua_srv();
- var OCT4 rctx := int2oct(mp_m3ua_configs[M3UA_SRV(0)].routing_ctx, 4); + var OCT4 rctx := int2oct(f_m3ua_srv_config(0).routing_ctx, 4); + var integer pc := f_m3ua_srv_config(0).point_code;
f_M3UA_CLNT_asp_up_act(M3UA_SRV(0), rctx := rctx);
- var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(mp_m3ua_configs[M3UA_SRV(0)].point_code) }; + var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(pc) }; f_M3UA_send(M3UA_SRV(0), ts_M3UA_DAUD(aff_pcs)); f_M3UA_exp(M3UA_SRV(0), tr_M3UA_DAVA(aff_pcs)); setverdict(pass); @@ -1051,7 +1073,7 @@ f_M3UA_CLNT_asp_up(M3UA_SRV(0)); f_M3UA_exp(M3UA_SRV(0), tr_M3UA_ASPAC(*, *));
- var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(mp_m3ua_configs[M3UA_SRV(0)].point_code) }; + var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(f_m3ua_srv_config(0).point_code) }; f_M3UA_send(M3UA_SRV(0), ts_M3UA_DAUD(aff_pcs)); f_M3UA_exp(M3UA_SRV(0), tr_M3UA_ERR('00000006'O, omit)); setverdict(pass); @@ -1073,7 +1095,7 @@ f_M3UA_CLNT_asp_up(M3UA_SRV(0)); f_M3UA_exp(M3UA_SRV(0), tr_M3UA_ASPAC(*, *));
- var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(mp_m3ua_configs[M3UA_SRV(0)].point_code) }; + var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(f_m3ua_srv_config(0).point_code) }; f_M3UA_send(M3UA_SRV(0), ts_M3UA_DAUD(aff_pcs)); f_M3UA_exp(M3UA_SRV(0), tr_M3UA_DAVA(aff_pcs)); setverdict(pass);