pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/40529?usp=email )
Change subject: stp: Add helper function to build SCCP UDT encoded octetstring ......................................................................
stp: Add helper function to build SCCP UDT encoded octetstring
Change-Id: I67961807bba4853b58e4b6f87eb3f2b56e9bb027 --- M stp/STP_Tests_Common.ttcn M stp/STP_Tests_IPA.ttcn M stp/STP_Tests_IPA_M3UA.ttcn 3 files changed, 31 insertions(+), 50 deletions(-)
Approvals: osmith: Looks good to me, but someone else must approve Jenkins Builder: Verified laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved
diff --git a/stp/STP_Tests_Common.ttcn b/stp/STP_Tests_Common.ttcn index 463e935..01e9ab6 100644 --- a/stp/STP_Tests_Common.ttcn +++ b/stp/STP_Tests_Common.ttcn @@ -14,11 +14,31 @@ friend module STP_Tests_IPA; friend module STP_Tests_IPA_M3UA;
+import from General_Types all; +import from Osmocom_Types all; + import from TELNETasp_PortType all; import from Osmocom_VTY_Functions all;
import from IPL4asp_Types all;
+import from SCCP_Types all; +import from SCCP_Templates all; +import from SCCPasp_Types all; +import from SCCP_Emulation all; + +function f_SCCP_UDT(template (value) SCCP_PAR_Address called := ts_SccpAddr_GT('1234'H), + template (value) SCCP_PAR_Address calling := ts_SccpAddr_GT('5678'H), + template (omit) octetstring data := omit) return octetstring +{ + if (istemplatekind(data, "omit")) { + data := f_rnd_octstring_rnd_len(100); + } + var PDU_SCCP sccp := valueof(ts_SCCP_UDT(valueof(called), valueof(calling), valueof(data))); + var octetstring sccp_enc := enc_PDU_SCCP(sccp); + return sccp_enc; +} + type component Test_CT { port TELNETasp_PT VTY; timer g_Tguard := 30.0; diff --git a/stp/STP_Tests_IPA.ttcn b/stp/STP_Tests_IPA.ttcn index a34fd6d..3fb0ace 100644 --- a/stp/STP_Tests_IPA.ttcn +++ b/stp/STP_Tests_IPA.ttcn @@ -150,19 +150,10 @@ } }
-private function f_rnd_ipa_len() runs on IPA_CT return integer { - var integer rnd_len := f_rnd_int(100); - /* We need at least 1 byte of data, othewise osmocom IPA stack will discard and close the socket */ - if (rnd_len == 0) { - rnd_len := 1; - } - return rnd_len; -} - /* Test if traffic is routed from idx_tx to idx_rx */ private function f_test_traffic(integer idx_tx, integer idx_rx) runs on IPA_CT { - var octetstring data := f_rnd_octstring(f_rnd_ipa_len()); + var octetstring data := f_SCCP_UDT(); f_IPA_send(idx_tx, data); f_IPA_exp(idx_rx, data); } @@ -390,7 +381,7 @@ const integer iter_per_asp := 5; var integer num_rx[2] := { 0, 0 }; for (i := 0; i < 2*iter_per_asp; i := i+1) { - var octetstring data := f_rnd_octstring(f_rnd_ipa_len()); + var octetstring data := f_SCCP_UDT(); f_IPA_send(0, data); alt { [] as_count_rx(1, data, num_rx[0]); @@ -472,7 +463,7 @@ sls_num_rx_2 := sls_num_rx_2 & {0}; } for (i := 0; i < iter_per_asp; i := i+1) { - var octetstring data := f_rnd_octstring(f_rnd_ipa_len()); + var octetstring data := f_SCCP_UDT(); f_IPA_send(0, data); alt { [] as_count_rx_sls(2, data, sls_num_rx_1, num_rx_1); @@ -504,7 +495,7 @@ sls_num_rx_2 := sls_num_rx_2 & {0}; } for (i := 0; i < 2*iter_per_asp; i := i+1) { - var octetstring data := f_rnd_octstring(f_rnd_ipa_len()); + var octetstring data := f_SCCP_UDT(); f_IPA_send(i mod 2, data); alt { [] as_count_rx_sls(2, data, sls_num_rx_1, num_rx_1); diff --git a/stp/STP_Tests_IPA_M3UA.ttcn b/stp/STP_Tests_IPA_M3UA.ttcn index 5600f6e..1e45372 100644 --- a/stp/STP_Tests_IPA_M3UA.ttcn +++ b/stp/STP_Tests_IPA_M3UA.ttcn @@ -43,24 +43,6 @@
const OCT1 c_M3UA_SI_SCCP := '03'O;
-template (value) PDU_SCCP ts_SCCP_UDT(SCCP_PAR_Address called, SCCP_PAR_Address calling, - template (value) octetstring data, - template (value) BIT4 msg_hdl := '0000'B) := { - unitdata := { - messageType := udt, - protClass := {'0000'B, msg_hdl}, - pointer1 := 0, - pointer2 := 0, - pointer3 := 0, - calledPAddress := ConvertASPAddressToEncodedAddress_itu(called), - callingPAddress := ConvertASPAddressToEncodedAddress_itu(calling), - data := { - paramLength := 0, - data := data - } - } -} - /* Test routing of SCCP between an M3UA and an IPA ASP */ testcase TC_m3ua_to_ipa() runs on IPA_M3UA_CT { var Misc_Helpers.ro_charstring m3ua_asps := { "asp-sender" }; @@ -76,11 +58,7 @@ f_M3UA_asp_up_act(0, omit, rctx_sender);
/* send a well-formed, encoded SCCP message via M3UA */ - var octetstring data := f_rnd_octstring_rnd_len(100); - var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H)); - var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H)); - var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data)); - var octetstring sccp_enc := enc_PDU_SCCP(sccp); + var octetstring sccp_enc := f_SCCP_UDT(); var template (value) M3UA_Protocol_Data tx_pd; tx_pd := ts_M3UA_protocol_data(pc_sender, pc_receiver, c_M3UA_SI_SCCP, '00'O, '00'O, '00'O, sccp_enc); f_M3UA_send(0, ts_M3UA_DATA(rctx_sender, tx_pd), 1); @@ -111,11 +89,7 @@ f_M3UA_asp_up_act(0, omit, rctx_receiver);
/* send a well-formed, encoded SCCP message via IPA */ - var octetstring data := f_rnd_octstring_rnd_len(100); - var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H)); - var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H)); - var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data)); - var octetstring sccp_enc := enc_PDU_SCCP(sccp); + var octetstring sccp_enc := f_SCCP_UDT(); f_IPA_send(0, sccp_enc);
/* expect to receive it via M3UA */ @@ -146,11 +120,7 @@ f_M3UA_asp_up_act(0, omit, rctx_receiver);
/* send a well-formed, encoded SCCP message via IPA */ - var octetstring data := f_rnd_octstring_rnd_len(100); - var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H)); - var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H)); - var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data)); - var octetstring sccp_enc := enc_PDU_SCCP(sccp); + var octetstring sccp_enc := f_SCCP_UDT(); f_vty_config2(VTY, {"cs7 instance 0"}, "network-indicator national"); f_IPA_send(0, sccp_enc);
@@ -187,18 +157,18 @@ var octetstring data := f_rnd_octstring_rnd_len(100); var SCCP_PAR_Address called := valueof(ts_SccpAddr_GT('1234'H)); var SCCP_PAR_Address calling := valueof(ts_SccpAddr_GT('5678'H)); - var PDU_SCCP sccp := valueof(ts_SCCP_UDT(called, calling, data)); - f_IPA_send(0, enc_PDU_SCCP(sccp)); + var octetstring sccp_enc := f_SCCP_UDT(called, calling, data); + f_IPA_send(0, sccp_enc);
/* patch point codes into addresses */ called := valueof(ts_SccpAddr_PC_GT(oct2int(pc_receiver), '83'O, "mtp3_itu", '1234'H)); calling := valueof(ts_SccpAddr_PC_GT(oct2int(pc_sender), '83'O, "mtp3_itu", '5678'H)); - var PDU_SCCP sccp_exp := valueof(ts_SCCP_UDT(called, calling, data)); + sccp_enc := f_SCCP_UDT(called, calling, data);
/* expect to receive it via M3UA */ var template (present) M3UA_Protocol_Data rx_pd; rx_pd := tr_M3UA_protocol_data(pc_sender, pc_receiver, c_M3UA_SI_SCCP, '00'O, '00'O, ?, - enc_PDU_SCCP(sccp_exp)); + sccp_enc); f_M3UA_exp(0, tr_M3UA_DATA(rctx_receiver, rx_pd));
f_clear_m3ua();