pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/43486?usp=email )
Change subject: stp: Support configuring M3UA ASPs serving multiple AS ......................................................................
stp: Support configuring M3UA ASPs serving multiple AS
Change-Id: I734e1e2bef2063c46a0ea63245ff2a9888e6b054 Related: OS#7062 --- M stp/STP_Tests_IPA_M3UA.cfg M stp/STP_Tests_IPA_M3UA.ttcn M stp/STP_Tests_M3UA.cfg M stp/STP_Tests_M3UA.ttcn M stp/STP_Tests_M3UA_TCP.cfg M stp/STP_Tests_M3UA_TCP.ttcn 6 files changed, 254 insertions(+), 143 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/86/43486/1
diff --git a/stp/STP_Tests_IPA_M3UA.cfg b/stp/STP_Tests_IPA_M3UA.cfg index 5870747..b6b8302 100644 --- a/stp/STP_Tests_IPA_M3UA.cfg +++ b/stp/STP_Tests_IPA_M3UA.cfg @@ -29,8 +29,12 @@ use_tcp := false, remote_port := 2905, local_port := 9999, - point_code := 23, - routing_ctx := 1023 + as := { + { + point_code := 23, + routing_ctx := 1023 + } + } } };
diff --git a/stp/STP_Tests_IPA_M3UA.ttcn b/stp/STP_Tests_IPA_M3UA.ttcn index 1e7189d..fe924ad 100644 --- a/stp/STP_Tests_IPA_M3UA.ttcn +++ b/stp/STP_Tests_IPA_M3UA.ttcn @@ -49,8 +49,8 @@ var IpaConfigs ipa_configs := ipa_build_configs(ipa_asps); var Misc_Helpers.ro_charstring m3ua_asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(m3ua_asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); var OCT4 pc_receiver := int2oct(ipa_configs[0].point_code, 4);
f_init_m3ua(m3ua_configs := m3ua_configs); @@ -79,8 +79,8 @@ var Misc_Helpers.ro_charstring m3ua_asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(m3ua_asps); var OCT4 pc_sender := int2oct(ipa_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[0].point_code, 4); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[0]);
f_init_common(); f_vty_cs7_ipa_as_cmd(ipa_configs[0].as_name, "point-code override patch-sccp disabled"); @@ -111,8 +111,8 @@ var Misc_Helpers.ro_charstring m3ua_asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(m3ua_asps); var OCT4 pc_sender := int2oct(ipa_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[0].point_code, 4); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[0]);
f_init_common(); f_vty_cs7_ipa_as_cmd(ipa_configs[0].as_name, "point-code override patch-sccp disabled"); @@ -146,8 +146,8 @@ var Misc_Helpers.ro_charstring m3ua_asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(m3ua_asps); var OCT4 pc_sender := int2oct(ipa_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[0].point_code, 4); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[0]);
f_init_common(); f_vty_cs7_ipa_as_cmd(ipa_configs[0].as_name, "point-code override patch-sccp both"); diff --git a/stp/STP_Tests_M3UA.cfg b/stp/STP_Tests_M3UA.cfg index 860bdd7..3bdd716 100644 --- a/stp/STP_Tests_M3UA.cfg +++ b/stp/STP_Tests_M3UA.cfg @@ -18,8 +18,12 @@ use_tcp := false, remote_port := 2905, local_port := 9999, - point_code := 23, - routing_ctx := 1023 + as := { + { + point_code := 23, + routing_ctx := 1023 + } + } }, { asp_name := "asp-receiver0", @@ -27,8 +31,12 @@ use_tcp := false, remote_port := 2905, local_port := 10000, - point_code := 42, - routing_ctx := 1042 + as := { + { + point_code := 42, + routing_ctx := 1042 + } + } }, { asp_name := "asp-receiver1", @@ -36,8 +44,12 @@ use_tcp := false, remote_port := 2905, local_port := 10001, - point_code := 42, - routing_ctx := 1042 + as := { + { + point_code := 42, + routing_ctx := 1042 + } + } }, { asp_name := "asp-LS0-0-0", @@ -45,8 +57,12 @@ use_tcp := false, remote_port := 2905, local_port := 10002, - point_code := 44, - routing_ctx := 1044 + as := { + { + point_code := 44, + routing_ctx := 1044 + } + } }, { asp_name := "asp-LS0-1-0", @@ -54,8 +70,12 @@ use_tcp := false, remote_port := 2905, local_port := 10003, - point_code := 45, - routing_ctx := 1045 + as := { + { + point_code := 45, + routing_ctx := 1045 + } + } }, { asp_name := "asp-client0", @@ -63,8 +83,12 @@ use_tcp := false, remote_port := 2906, local_port := 10002, - point_code := 55, - routing_ctx := 1055 + as := { + { + point_code := 55, + routing_ctx := 1055 + } + } }, { asp_name := "asp-client60-norctx0", @@ -72,8 +96,12 @@ use_tcp := false, remote_port := 2907, local_port := 11060, - point_code := 60, - routing_ctx := omit + as := { + { + point_code := 60, + routing_ctx := omit + } + } }, { asp_name := "asp-client61-norctx0", @@ -81,8 +109,12 @@ use_tcp := false, remote_port := 2907, local_port := 11061, - point_code := 61, - routing_ctx := omit + as := { + { + point_code := 61, + routing_ctx := omit + } + } } };
diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn index ff8f08a..94134e9 100644 --- a/stp/STP_Tests_M3UA.ttcn +++ b/stp/STP_Tests_M3UA.ttcn @@ -57,6 +57,15 @@ OCT1 mp_ni := '00'O; }
+type record M3uaConfigAS { + /* point code routed via this M3U */ + integer point_code, + /* associated routing context */ + integer routing_ctx optional +} + +type record of M3uaConfigAS M3uaConfigASs; + type record M3uaConfig { /* Name of the ASP in the STP, (eg. to access it over VTY) */ charstring asp_name, @@ -68,10 +77,8 @@ integer remote_port, /* local M3UA base port on TTCN3 side */ integer local_port, - /* point code routed via this M3U */ - integer point_code, - /* associated routing context */ - integer routing_ctx optional + /* ASs served by this ASP: */ + M3uaConfigASs as }; type record of M3uaConfig M3uaConfigs;
@@ -82,6 +89,48 @@ var boolean g_iut_supports_rfc666_4_5_1_duna_after_act := true; /* RFC4666 4.5.1 */ }
+friend function f_m3ua_config_get_rctx(M3uaConfig m3ua_config, integer idx := 0) return OCT4 +{ + return int2oct(m3ua_config.as[idx].routing_ctx, 4); +} + +friend function f_m3ua_config_get_all_rctx(M3uaConfig m3ua_config) return octetstring +{ + var octetstring rctx := ''O; + for (var integer i := 0; i < lengthof(m3ua_config.as); i := i + 1) { + rctx := rctx & int2oct(m3ua_config.as[i].routing_ctx, 4); + } + return rctx; +} + +friend function f_m3ua_config_get_pc(M3uaConfig m3ua_config, integer idx := 0) return OCT4 +{ + return int2oct(m3ua_config.as[idx].point_code, 4); +} + +friend function f_m3ua_config_get_pc_OCT3(M3uaConfig m3ua_config, integer idx := 0) return OCT3 +{ + return int2oct(m3ua_config.as[idx].point_code, 3); +} + +friend function f_m3ua_config_get_all_pc(M3uaConfig m3ua_config) return octetstring +{ + var octetstring pc := ''O; + for (var integer i := 0; i < lengthof(m3ua_config.as); i := i + 1) { + pc := pc & int2oct(m3ua_config.as[i].point_code, 4); + } + return pc; +} + +friend function f_m3ua_config_get_all_affected_pc(M3uaConfig m3ua_config) return M3UA_Point_Codes +{ + var M3UA_Point_Codes aff_pcs := {}; + for (var integer i := 0; i < lengthof(m3ua_config.as); i := i + 1) { + aff_pcs := aff_pcs & { valueof(ts_M3UA_PC(m3ua_config.as[i].point_code)) } + } + return aff_pcs; +} + friend function f_m3ua_get_config_idx(charstring asp_name) runs on RAW_M3UA_CT return integer { for (var integer i := 0; i < lengthof(g_m3ua_configs); i := i + 1) { if (g_m3ua_configs[i].asp_name == asp_name) { @@ -480,7 +529,7 @@
/* perform an outbound ASP-ACTIVATE procedure */ friend function f_M3UA_asp_act(integer idx, template (omit) M3UA_Traffic_Mode_Type tmt := omit, - template (omit) OCT4 rctx := omit, + template (omit) octetstring rctx := omit, template (omit) OCT2 ntfy_after_act := c_M3UA_ST_I_AS_ACTIVE) runs on RAW_M3UA_CT { f_M3UA_send(idx, ts_M3UA_ASPAC(tmt, rctx)); f_M3UA_exp(idx, tr_M3UA_ASPAC_ACK(tmt, rctx)); @@ -491,14 +540,14 @@ }
/* perform an outbound ASP-INACTIVATE procedure */ -friend function f_M3UA_asp_inact(integer idx, template (omit) OCT4 rctx := omit) runs on RAW_M3UA_CT { +friend function f_M3UA_asp_inact(integer idx, template (omit) octetstring rctx := omit) runs on RAW_M3UA_CT { f_M3UA_send(idx, ts_M3UA_ASPIA(rctx)); f_M3UA_exp(idx, tr_M3UA_ASPIA_ACK(rctx)); }
/* perform outbound ASP-UP and ASP-ACT, optionally expect intermittent NOTIFY */ friend function f_M3UA_asp_up_act(integer idx, template (omit) M3UA_Traffic_Mode_Type tmt := omit, - template (omit) OCT4 rctx := omit, + template (omit) octetstring rctx := omit, template (omit) OCT2 ntfy_after_up := c_M3UA_ST_I_AS_INACTIVE, template (omit) OCT2 ntfy_after_act := c_M3UA_ST_I_AS_ACTIVE, template (omit) boolean exp_duna_after_act := omit /* auto */) @@ -557,7 +606,7 @@
if (m3ua_configs[0].is_server) { f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(0, rctx := int2oct(m3ua_configs[0].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(0, rctx := f_m3ua_config_get_all_rctx(m3ua_configs[0])); } else { f_M3UA_asp_up(0, ntfy_after_up := c_M3UA_ST_I_AS_INACTIVE); } @@ -617,7 +666,7 @@
if (m3ua_configs[0].is_server) { f_init_m3ua_srv(); - f_M3UA_CLNT_asp_up_act(0, rctx := int2oct(m3ua_configs[0].routing_ctx, 4)); + f_M3UA_CLNT_asp_up_act(0, rctx := f_m3ua_config_get_all_rctx(m3ua_configs[0])); } else { f_M3UA_asp_up(0, ntfy_after_up := c_M3UA_ST_I_AS_INACTIVE); } @@ -675,10 +724,10 @@ testcase TC_act_rctx_data_no_rctx() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-receiver0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]);
f_init_m3ua(m3ua_configs := m3ua_configs);
@@ -698,7 +747,7 @@ testcase TC_adm_block_act_err() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); f_init_m3ua(m3ua_configs := m3ua_configs);
f_vty_cs7_asp_cmd(g_m3ua_configs[0], "block"); @@ -721,7 +770,7 @@ testcase TC_adm_block_after_act() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); f_init_m3ua(m3ua_configs := m3ua_configs);
f_M3UA_asp_up_act(0, rctx := rctx_sender); @@ -774,8 +823,8 @@ }
/* Test if traffic is routed from idx_tx/pc_tx to idx_rx/pc_rx */ -friend function f_test_traffic(integer idx_tx, template (omit) OCT4 rctx_sender, OCT4 pc_tx, - integer idx_rx, template (omit) OCT4 rctx_receiver, OCT4 pc_rx, +friend function f_test_traffic(integer idx_tx, template (omit) octetstring rctx_sender, OCT4 pc_tx, + integer idx_rx, template (omit) octetstring rctx_receiver, OCT4 pc_rx, OCT1 si := '02'O, OCT1 ni := mp_ni, OCT1 mp := '00'O, OCT1 sls := '00'O) runs on RAW_M3UA_CT { var octetstring data := f_rnd_octstring_rnd_len(100); @@ -790,10 +839,10 @@ testcase TC_tmt_override() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-receiver0", "asp-receiver1" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]);
f_init_m3ua(m3ua_configs := m3ua_configs);
@@ -832,10 +881,10 @@ var integer i; var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-receiver0", "asp-receiver1" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]);
f_init_m3ua(m3ua_configs := m3ua_configs);
@@ -905,10 +954,10 @@ var integer i; var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-receiver0", "asp-receiver1" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]);
f_init_m3ua(m3ua_configs := m3ua_configs);
@@ -988,10 +1037,10 @@ var integer i; var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-receiver0", "asp-receiver1" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]);
f_init_m3ua(m3ua_configs := m3ua_configs);
@@ -1058,8 +1107,8 @@ testcase TC_rkm_reg_static_permitted() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT3 dpc := int2oct(m3ua_configs[0].point_code, 3); // must match config - var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4); // must match config + var OCT3 dpc := f_m3ua_config_get_pc_OCT3(m3ua_configs[0]); // must match config + var OCT4 rctx := f_m3ua_config_get_rctx(m3ua_configs[0]); // must match config
f_init_m3ua(m3ua_configs := m3ua_configs);
@@ -1091,7 +1140,7 @@ testcase TC_rkm_unreg_never_registered() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var octetstring rctx := int2oct(m3ua_configs[0].routing_ctx, 4); + var octetstring rctx := f_m3ua_config_get_rctx(m3ua_configs[0]); f_init_m3ua(m3ua_configs := m3ua_configs);
f_M3UA_send(0, ts_M3UA_DEREG_REQ(ts_M3UA_routing_ctx(rctx))); @@ -1138,8 +1187,8 @@ var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); var OCT3 dpcA := int2oct(123, 3); var OCT4 rctxA := int2oct(1234, 4); - var OCT3 dpcB := int2oct(m3ua_configs[0].point_code, 4); // must match config - var OCT4 rctxB := int2oct(m3ua_configs[0].routing_ctx, 4); // must match config + var OCT3 dpcB := f_m3ua_config_get_pc_OCT3(m3ua_configs[0]); // must match config + var OCT4 rctxB := f_m3ua_config_get_rctx(m3ua_configs[0]); // must match config
f_init_common(); f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation dynamic-permitted"); @@ -1190,11 +1239,15 @@ use_tcp := false, remote_port := 2905, local_port := 2222, - point_code := 22, - routing_ctx := 220 + as := { + { + point_code := 22, + routing_ctx := 220 + } + } } }; - var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx0 := f_m3ua_config_get_rctx(m3ua_configs[0]); f_init_common(); f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation dynamic-permitted"); f_init_m3ua(m3ua_configs := m3ua_configs); @@ -1204,7 +1257,7 @@
/* REG REQ + RESP */ f_M3UA_send(0, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='00000001'O, - dpc:=int2oct(m3ua_configs[0].point_code, 3), + dpc:=f_m3ua_config_get_pc_OCT3(m3ua_configs[0]), tmt := c_M3UA_TMT_loadshare, rctx := rctx0)})); f_M3UA_exp(0, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='00000001'O, status:=c_M3UA_REGSTS_SUCCESS, @@ -1228,20 +1281,28 @@ use_tcp := false, remote_port := 2905, local_port := 2222, - point_code := 22, - routing_ctx := 220 + as := { + { + point_code := 22, + routing_ctx := 220 + } + } }, { asp_name := "unknown1", is_server := false, use_tcp := false, remote_port := 2905, local_port := 2223, - point_code := 22, - routing_ctx := 220 + as := { + { + point_code := 22, + routing_ctx := 220 + } + } } }; - var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 rctx1 := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx0 := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 rctx1 := f_m3ua_config_get_rctx(m3ua_configs[0]); f_init_common(); f_vty_config2(VTY, {"cs7 instance 0"}, "xua rkm routing-key-allocation dynamic-permitted"); f_init_m3ua(m3ua_configs := m3ua_configs); @@ -1252,7 +1313,7 @@
/* REG REQ + RESP */ f_M3UA_send(0, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='00000001'O, - dpc:=int2oct(m3ua_configs[0].point_code, 3), + dpc := f_m3ua_config_get_pc_OCT3(m3ua_configs[0]), tmt := c_M3UA_TMT_loadshare, rctx := rctx0)})); f_M3UA_exp(0, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='00000001'O, status:=c_M3UA_REGSTS_SUCCESS, @@ -1268,7 +1329,7 @@
/* REG REQ + RESP */ f_M3UA_send(1, ts_M3UA_REG_REQ({ts_M3UA_rkey(id:='00000001'O, - dpc:=int2oct(m3ua_configs[1].point_code, 3), + dpc := f_m3ua_config_get_pc_OCT3(m3ua_configs[1]), tmt := c_M3UA_TMT_loadshare, rctx := rctx1)})); f_M3UA_exp(1, tr_M3UA_REG_RSP({tr_M3UA_reg_res(id:='00000001'O, status:=c_M3UA_REGSTS_SUCCESS, @@ -1299,14 +1360,14 @@
/* expect/perform an inbound ASP-ACTIVATE procedure */ friend function f_M3UA_CLNT_asp_act(integer idx, template M3UA_Traffic_Mode_Type tmt := omit, - template (omit) OCT4 rctx := omit) runs on RAW_M3UA_CT { + template (omit) octetstring rctx := omit) runs on RAW_M3UA_CT { f_M3UA_exp(idx, tr_M3UA_ASPAC(tmt, rctx)); f_M3UA_send(idx, ts_M3UA_ASPAC_ACK(tmt, rctx)); }
/* expect/perform inbound ASP-UP and ASP-ACT, optionally send interemittent NOTIFY */ friend function f_M3UA_CLNT_asp_up_act(integer idx, template M3UA_Traffic_Mode_Type tmt := omit, - template OCT4 rctx := omit, + template octetstring rctx := omit, template (omit) OCT2 ntfy_after_up := c_M3UA_ST_I_AS_INACTIVE, template (omit) OCT2 ntfy_after_act := c_M3UA_ST_I_AS_ACTIVE) runs on RAW_M3UA_CT { @@ -1348,7 +1409,7 @@ testcase TC_clnt_asp_act() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx := f_m3ua_config_get_rctx(m3ua_configs[0]); f_init_m3ua(m3ua_configs := m3ua_configs); f_init_m3ua_srv();
@@ -1361,7 +1422,7 @@ testcase TC_clnt_asp_act_tmt_loadshare() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx := f_m3ua_config_get_rctx(m3ua_configs[0]);
f_init_common(); f_vty_config2(VTY, {"cs7 instance 0", "as as-client m3ua"}, "traffic-mode loadshare"); @@ -1378,10 +1439,10 @@ testcase TC_clnt_sg_to_asp() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]);
f_init_m3ua(m3ua_configs := m3ua_configs); f_M3UA_asp_up_act(0); @@ -1402,10 +1463,10 @@ testcase TC_clnt_asp_to_sg() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[1].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[0].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[1]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[0]);
f_init_m3ua(m3ua_configs := m3ua_configs); f_M3UA_asp_up_act(0); @@ -1425,10 +1486,10 @@ testcase TC_clnt_sg_to_asp_norctx() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client60-norctx0", "asp-client61-norctx0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); - var OCT4 pc_receiver2 := int2oct(m3ua_configs[2].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]); + var OCT4 pc_receiver2 := f_m3ua_config_get_pc(m3ua_configs[2]);
/* activate the sender side (ATS is client to STP in SG role) */ f_init_m3ua(m3ua_configs := m3ua_configs); @@ -1455,10 +1516,10 @@ var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client60-norctx0", "asp-client61-norctx0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps);
- var OCT4 rctx_receiver := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[1].point_code, 4); - var OCT4 pc_sender2 := int2oct(m3ua_configs[2].point_code, 4); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[1]); + var OCT4 pc_sender2 := f_m3ua_config_get_pc(m3ua_configs[2]);
/* activate the sender side (ATS is client to STP in SG role) */ f_init_m3ua(m3ua_configs := m3ua_configs); @@ -1483,8 +1544,8 @@ testcase TC_ssnm_aspac_dava_aspia_duna() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-receiver0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); - var integer pc0 := m3ua_configs[1].point_code; + var OCT4 rctx0 := f_m3ua_config_get_rctx(m3ua_configs[0]); + var M3UA_Point_Codes aff_pcs0 := f_m3ua_config_get_all_affected_pc(m3ua_configs[1]);
f_init_m3ua(ignore_ssnm := false, m3ua_configs := m3ua_configs); /* activate the first ASP */ @@ -1493,13 +1554,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(pc0, 0)}, rctx0)); + f_M3UA_exp(0, tr_M3UA_DAVA(aff_pcs0, 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(pc0, 0)}, rctx0)); + f_M3UA_exp(0, tr_M3UA_DUNA(aff_pcs0, rctx0)); /* TODO: expect no DUNA on second ASP */
f_clear_m3ua(); @@ -1509,8 +1570,8 @@ testcase TC_ssnm_distribution_dava_duna() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(m3ua_configs[1].routing_ctx, 4); + var OCT4 rctx0 := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 rctxS0 := f_m3ua_config_get_rctx(m3ua_configs[1]); /* some random point code whose availability we advertise */ var template (value) M3UA_Point_Code adv_pc := ts_M3UA_PC(1234, 0);
@@ -1538,8 +1599,8 @@ testcase TC_ssnm_distribution_dava_duna_multipc() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(m3ua_configs[1].routing_ctx, 4); + var OCT4 rctx0 := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 rctxS0 := f_m3ua_config_get_rctx(m3ua_configs[1]); /* 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) };
@@ -1567,8 +1628,8 @@ testcase TC_ssnm_distribution_dupu() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(m3ua_configs[1].routing_ctx, 4); + var OCT4 rctx0 := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 rctxS0 := f_m3ua_config_get_rctx(m3ua_configs[1]); /* some random point code whose availability we advertise */ var template (value) M3UA_Point_Code adv_pc := ts_M3UA_PC(1234, 0);
@@ -1591,8 +1652,8 @@ testcase TC_ssnm_distribution_scon() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx0 := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 rctxS0 := int2oct(m3ua_configs[1].routing_ctx, 4); + var OCT4 rctx0 := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 rctxS0 := f_m3ua_config_get_rctx(m3ua_configs[1]); /* some random point code whose availability we advertise */ var template (value) M3UA_Point_Code adv_pc := ts_M3UA_PC(1234, 0);
@@ -1650,7 +1711,7 @@ f_quirk("no_notify"); f_init_m3ua_srv();
- f_M3UA_CLNT_asp_up_act(0, rctx := int2oct(g_m3ua_configs[0].routing_ctx, 4), + f_M3UA_CLNT_asp_up_act(0, rctx := f_m3ua_config_get_rctx(g_m3ua_configs[0]), ntfy_after_up := omit, ntfy_after_act := omit); f_no_quirk("no_notify"); f_clear_m3ua(); @@ -1660,9 +1721,8 @@ testcase TC_clnt_no_daud_in_asp() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4); - var integer pc := m3ua_configs[0].point_code; - var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(pc) }; + var OCT4 rctx := f_m3ua_config_get_rctx(m3ua_configs[0]); + var template (value) M3UA_Point_Codes aff_pcs := f_m3ua_config_get_all_affected_pc(m3ua_configs[0]);
f_init_m3ua(m3ua_configs := m3ua_configs); f_no_quirk("daud_in_asp"); @@ -1681,9 +1741,8 @@ testcase TC_clnt_quirk_daud_in_asp() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4); - var integer pc := m3ua_configs[0].point_code; - var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(pc) }; + var OCT4 rctx := f_m3ua_config_get_rctx(m3ua_configs[0]); + var template (value) M3UA_Point_Codes aff_pcs := f_m3ua_config_get_all_affected_pc(m3ua_configs[0]);
f_init_m3ua(m3ua_configs := m3ua_configs); f_quirk("daud_in_asp"); @@ -1703,7 +1762,7 @@ testcase TC_clnt_no_snm_inactive() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(m3ua_configs[0].point_code) }; + var template (value) M3UA_Point_Codes aff_pcs := f_m3ua_config_get_all_affected_pc(m3ua_configs[0]);
f_init_m3ua(m3ua_configs := m3ua_configs); f_quirk("no_notify"); @@ -1728,7 +1787,7 @@ testcase TC_clnt_quirk_snm_inactive() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-client0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var template (value) M3UA_Point_Codes aff_pcs := { ts_M3UA_PC(m3ua_configs[0].point_code) }; + var template (value) M3UA_Point_Codes aff_pcs := f_m3ua_config_get_all_affected_pc(m3ua_configs[0]);
f_init_m3ua(m3ua_configs := m3ua_configs); f_quirk("no_notify"); @@ -1759,7 +1818,7 @@ f_init_m3ua(m3ua_configs := m3ua_configs); f_init_m3ua_srv();
- var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx := f_m3ua_config_get_rctx(m3ua_configs[0]); f_M3UA_CLNT_asp_up_act(0, rctx := rctx); f_sleep(1.0); f_vty_cs7_asp_cmd(m3ua_configs[0], "shutdown"); @@ -1798,10 +1857,10 @@ var integer i; var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-LS0-0-0", "asp-LS0-1-0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 rctx_receiver2 := int2oct(m3ua_configs[2].routing_ctx, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 rctx_receiver2 := f_m3ua_config_get_rctx(m3ua_configs[2]); var OCT4 pc_receiver := int2oct(99, 4);
f_init_m3ua(m3ua_configs := m3ua_configs); @@ -1872,8 +1931,8 @@ f_clear_m3ua(); }
-private function f_tc_inaccessible_sp_duna(integer idx_tx, OCT4 pc_sender, OCT4 rctx_sender, - OCT4 pc_receiver, OCT4 rctx_receiver) runs on RAW_M3UA_CT { +private function f_tc_inaccessible_sp_duna(integer idx_tx, OCT4 pc_sender, octetstring rctx_sender, + OCT4 pc_receiver, octetstring rctx_receiver) runs on RAW_M3UA_CT { var octetstring data := f_rnd_octstring_rnd_len(100); var template (value) M3UA_Protocol_Data m3ua_data; /* Max for T8 is 1200 msec, so we leave some more time. to avodi race conditions: */ @@ -1912,8 +1971,8 @@ testcase TC_inaccessible_sp_duna() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); var OCT4 rctx_receiver := int2oct(3, 4); var OCT4 pc_receiver := int2oct(mp_inaccessible_pc, 4);
@@ -1928,10 +1987,10 @@ testcase TC_inaccessible_sp_duna2() runs on RAW_M3UA_CT { var Misc_Helpers.ro_charstring asps := { "asp-sender", "asp-receiver0" }; var M3uaConfigs m3ua_configs := m3ua_build_configs(asps); - var OCT4 rctx_sender := int2oct(m3ua_configs[0].routing_ctx, 4); - var OCT4 pc_sender := int2oct(m3ua_configs[0].point_code, 4); - var OCT4 rctx_receiver := int2oct(m3ua_configs[1].routing_ctx, 4); - var OCT4 pc_receiver := int2oct(m3ua_configs[1].point_code, 4); + var OCT4 rctx_sender := f_m3ua_config_get_rctx(m3ua_configs[0]); + var OCT4 pc_sender := f_m3ua_config_get_pc(m3ua_configs[0]); + var OCT4 rctx_receiver := f_m3ua_config_get_rctx(m3ua_configs[1]); + var OCT4 pc_receiver := f_m3ua_config_get_pc(m3ua_configs[1]);
f_init_m3ua(m3ua_configs := m3ua_configs);
diff --git a/stp/STP_Tests_M3UA_TCP.cfg b/stp/STP_Tests_M3UA_TCP.cfg index 704de7a..7508ed0 100644 --- a/stp/STP_Tests_M3UA_TCP.cfg +++ b/stp/STP_Tests_M3UA_TCP.cfg @@ -18,8 +18,12 @@ use_tcp := false, remote_port := 2905, local_port := 9999, - point_code := 23, - routing_ctx := 1023 + as := { + { + point_code := 23, + routing_ctx := 1023 + } + } }, { asp_name := "asp-sender-tcp", @@ -27,8 +31,12 @@ use_tcp := true, remote_port := 2905, local_port := 9999, - point_code := 123, - routing_ctx := 1123 + as := { + { + point_code := 123, + routing_ctx := 1123 + } + } }, { asp_name := "asp-client0", @@ -36,8 +44,12 @@ use_tcp := false, remote_port := 2906, local_port := 10002, - point_code := 55, - routing_ctx := 1055 + as := { + { + point_code := 55, + routing_ctx := 1055 + } + } }, { asp_name := "asp-client0-tcp", @@ -45,8 +57,12 @@ use_tcp := true, remote_port := 2906, local_port := 10002, - point_code := 155, - routing_ctx := 1155 + as := { + { + point_code := 155, + routing_ctx := 1155 + } + } } };
diff --git a/stp/STP_Tests_M3UA_TCP.ttcn b/stp/STP_Tests_M3UA_TCP.ttcn index 4e0706b..8cb026f 100644 --- a/stp/STP_Tests_M3UA_TCP.ttcn +++ b/stp/STP_Tests_M3UA_TCP.ttcn @@ -45,10 +45,10 @@ private function f_TC_m3ua_tcp(integer idx_a, integer idx_b) runs on RAW_M3UA_CT { var M3uaConfig cfg_a := g_m3ua_configs[idx_a]; var M3uaConfig cfg_b := g_m3ua_configs[idx_b]; - var OCT4 rctx_a := int2oct(cfg_a.routing_ctx, 4); - var OCT4 rctx_b := int2oct(cfg_b.routing_ctx, 4); - var OCT4 pc_a := int2oct(cfg_a.point_code, 4); - var OCT4 pc_b := int2oct(cfg_b.point_code, 4); + var OCT4 rctx_a := f_m3ua_config_get_rctx(cfg_a); + var OCT4 rctx_b := f_m3ua_config_get_rctx(cfg_b); + var OCT4 pc_a := f_m3ua_config_get_pc(cfg_a); + var OCT4 pc_b := f_m3ua_config_get_pc(cfg_b);
/* establish connection with ASP 'A' */ if (g_m3ua_configs[idx_a].is_server) { @@ -166,7 +166,7 @@ f_init_m3ua(m3ua_configs := m3ua_configs); f_init_m3ua_srv();
- var OCT4 rctx := int2oct(m3ua_configs[0].routing_ctx, 4); + var OCT4 rctx := f_m3ua_config_get_rctx(m3ua_configs[0]); f_M3UA_CLNT_asp_up_act(0, rctx := rctx); f_sleep(1.0); f_vty_cs7_asp_cmd(m3ua_configs[0], "shutdown");