diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-09-19 14:39:34 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-09-20 19:37:26 +0200 |
commit | 0c613abe7bd6ffcadb6478e4245da7dedf09de61 (patch) | |
tree | 569cfd09577f95c339044c27338e77b970f09c7f | |
parent | 43799923231c7a7c7a0df0313a9912b9f92fcd59 (diff) |
sccp: Introduce test TC_process_rx_ludt
Related: SYS#6566
Change-Id: I0880ccce872e79f057e17e29e09a566645365e96
-rw-r--r-- | library/SCCP_Templates.ttcn | 46 | ||||
-rw-r--r-- | sccp/SCCP_Tests_RAW.ttcn | 26 |
2 files changed, 72 insertions, 0 deletions
diff --git a/library/SCCP_Templates.ttcn b/library/SCCP_Templates.ttcn index 74f1a206..a87ef5cf 100644 --- a/library/SCCP_Templates.ttcn +++ b/library/SCCP_Templates.ttcn @@ -217,6 +217,52 @@ template PDU_SCCP tr_SCCP_XUDT(template (present) SCCP_PAR_Address calling, temp } } +template (value) PDU_SCCP ts_SCCP_LUDT(SCCP_PAR_Address calling, SCCP_PAR_Address called, + template (value) octetstring data, + template (value) BIT4 msg_hdl := '0000'B, + template (value) integer hop_ctr := 16) := { + longudata := { + messageType := ludt, + protClass := {'0000'B, msg_hdl}, + hopCounter := hop_ctr, + pointer1 := 0, /* overwritten */ + pointer2 := 0, /* overwritten */ + pointer3 := 0, /* overwritten */ + pointer4 := 0, /* overwritten */ + calledPAddress := ConvertASPAddressToEncodedAddress_itu(called), + callingPAddress := ConvertASPAddressToEncodedAddress_itu(calling), + longData := { + paramLength := 0, + data := data + }, + optionalPart := omit, + eop := omit + } +} + +template PDU_SCCP tr_SCCP_LUDT(template (present) SCCP_PAR_Address calling, template (present) SCCP_PAR_Address called, + template octetstring data := ?, + template BIT4 msg_hdl := '0000'B, + template integer hop_ctr := ?) := { + longudata := { + messageType := ludt, + protClass := {'0000'B, msg_hdl}, + hopCounter := hop_ctr, + pointer1 := ?, + pointer2 := ?, + pointer3 := ?, + pointer4 := ?, + calledPAddress := tr_Addr(called), + callingPAddress := tr_Addr(calling), + longData := { + paramLength := ?, + data := data + }, + optionalPart := { segmentation:= omit, importance := * } ifpresent, + eop := { paramName:= con_SCCP_eop } ifpresent + } +} + template PDU_SCCP tr_SCCP_IT(template (present) OCT3 source_lref := ?, template (present) OCT3 dest_lref := ?) := { diff --git a/sccp/SCCP_Tests_RAW.ttcn b/sccp/SCCP_Tests_RAW.ttcn index 505deb60..1c81d98a 100644 --- a/sccp/SCCP_Tests_RAW.ttcn +++ b/sccp/SCCP_Tests_RAW.ttcn @@ -340,6 +340,31 @@ testcase TC_process_rx_xudt() runs on SCCP_Test_RAW_CT { setverdict(pass); } +private function f_tx_ludt_exp(SCCP_PAR_Address calling, SCCP_PAR_Address called, octetstring data) runs on SCCP_Test_RAW_CT { + var template PDU_SCCP exp_rx; + f_send_sccp(ts_SCCP_LUDT(calling, called, data)); + exp_rx := tr_SCCP_LUDT(called, calling, data); + f_exp_sccp(exp_rx); +} + +/* Test if the IUT SCCP code processes a LUDT [treat it like UDT] and answers back. */ +testcase TC_process_rx_ludt() runs on SCCP_Test_RAW_CT { + var SCCP_PAR_Address calling, called; + var octetstring data := f_rnd_octstring(1000); + + f_init_raw(mp_sccp_cfg[0]); + f_sleep(1.0); + + called := valueof(ts_SccpAddr_PC_SSN(mp_sccp_cfg[0].peer_pc, mp_sccp_cfg[0].peer_ssn, + mp_sccp_cfg[0].sio, mp_sccp_cfg[0].sccp_service_type)); + calling := valueof(ts_SccpAddr_PC_SSN(mp_sccp_cfg[0].own_pc, mp_sccp_cfg[0].own_ssn, + mp_sccp_cfg[0].sio, mp_sccp_cfg[0].sccp_service_type)); + + /* Make sure an LUDT is echoed back just like an UDT */ + f_tx_ludt_exp(calling, called, data); + setverdict(pass); +} + function f_scmg_xceive(SCCP_PAR_Address calling, SCCP_PAR_Address called, template (value) PDU_SCMG_message tx, template (omit) PDU_SCMG_message rx_exp, @@ -464,6 +489,7 @@ control { execute( TC_tiar_timeout() ); execute( TC_it_avoids_tiar() ); execute( TC_process_rx_xudt() ); + execute( TC_process_rx_ludt() ); execute( TC_scmg_sst_ssn1() ); execute( TC_scmg_sst_ssn_valid() ); |