Loading AtsImsIot/AtsImsIot_Behavior.ttcn +137 −31 Original line number Diff line number Diff line Loading @@ -299,6 +299,7 @@ group checksTC_IMS_MESS_0001{ group checksTC_IMS_REG_0001 { /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_gm( Loading @@ -320,10 +321,11 @@ group checksTC_IMS_REG_0001 { /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * on the Mw-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_mw( ImsInterfaceMonitor p_monitorCompRef ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Request { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var SipMessage v_sip; Loading @@ -333,7 +335,7 @@ group checksTC_IMS_REG_0001 { {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_01", true, p_checkMessage, false ) ); Loading @@ -343,7 +345,50 @@ group checksTC_IMS_REG_0001 { } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 * @desc Starts monitor component behavior for TP_IMS_5089_01 (gm) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5089_01_gm_when ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5089_01_gm_when", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (gm) * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_02_gm", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_mw( Loading @@ -367,37 +412,32 @@ group checksTC_IMS_REG_0001 { return v_sip.request; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 * @desc Starts monitor component behavior for TP_IMS_5089_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw( function f_mtc_check_TP_IMS_5089_01_mw_when( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); var SipMessage v_sip; ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {mw_SipRequest(mdw_TP_IMS_5089_01_mw_when)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01", "TP_IMS_5089_01 (when)", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } /** * @desc Starts monitor component behavior for TP_IMS_5089_01 * @desc Starts monitor component behavior for TP_IMS_5089_01 (then) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5089_01_mw( function f_mtc_check_TP_IMS_5089_01_mw_then( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var SipMessage v_sip; Loading @@ -418,6 +458,72 @@ group checksTC_IMS_REG_0001 { } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 (gm) * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01_gm", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw_when( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5092_01_mw_when)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01 (when)", true, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, "TP_IMS_5092_01", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 * @param p_monitorCompRef Reference to monitor component Loading AtsImsIot/AtsImsIot_Functions.ttcn +54 −6 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ module AtsImsIot_Functions { import from AtsImsIot_TestSystem {type ImsTestCoordinator;} import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS;} import from AtsImsIot_TypesAndValues {type SipMessage;} Loading Loading @@ -400,16 +400,64 @@ module AtsImsIot_Functions { * @desc Get the S-CSCF FQDN address of referenced EUT */ function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring { // TODO return "TODO"; // TODO function not tested var integer v_size_interfaces := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); var integer v_size_ipinterfaceinfo; var integer v_interface := -1; var integer v_ipinterfaceinfo := -1; var charstring v_domainname; for(var integer i := 0; i < v_size_interfaces; i := i+1) { if (PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName == "Mw"){ v_interface := i; } } v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; if (substr(v_domainname, 0, 5) == pattern "[Ss][Cc][Ss][Cc][Ff]") { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; } else { return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } } /** * @desc Get the P-CSCF FQDN address of referenced EUT * @return if a PCSCF is avaiable, the domainname of the PCSCF, * otherwise error_string */ function f_GetEUTPcscfAddress(integer p_ProductIdx) return charstring { // TODO return "TODO"; // TODO function not tested var integer v_size_interfaces := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); var integer v_size_ipinterfaceinfo; var integer v_interface := -1; var integer v_ipinterfaceinfo := -1; var charstring v_domainname; for(var integer i := 0; i < v_size_interfaces; i := i+1) { if (PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName == "Gm"){ v_interface := i; } } v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; if (substr(v_domainname, 0, 5) == pattern "[Pp][Cc][Ss][Cc][Ff]") { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; } else { return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } } /** * @desc Get the Public Id of referenced EUT */ Loading AtsImsIot/AtsImsIot_Templates.ttcn +28 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,15 @@ module AtsImsIot_Templates { } } /** * * @desc REGISTER Request containing secuity client header. */ template REGISTER_Request mdw_TP_IMS_5011_02_gm modifies mw_REGISTER_Request_Base := { msgHeader := { securityClient := ? } } /** * Loading Loading @@ -125,6 +134,25 @@ module AtsImsIot_Templates { pVisitedNetworkID := mw_PVisitedNetworkIDAny } } /** * * @desc REGISTER Request checking TP_IMS_5089_01. */ template REGISTER_Request mdw_TP_IMS_5089_01_mw_when modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := m_Authorization(mw_credentialIntegrityNo) } } /** * * @desc REGISTER Request checking TP_IMS_5092_01. */ template REGISTER_Request mdw_TP_IMS_5092_01_mw_when modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := m_Authorization(mw_credentialIntegrityNo) } } /** * Loading AtsImsIot/AtsImsIot_TestCases_REG.ttcn +35 −11 Original line number Diff line number Diff line Loading @@ -59,18 +59,33 @@ module AtsImsIot_TestCases_REG { f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Step1 f_mtc_check_TP_IMS_5011_01_gm(v_gmA); // Check1 when v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw); // Check1 then & Check4 when v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw, true); // Check1 then @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityNo) f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA); // Check4 when (Gm) f_mtc_check_TP_IMS_5089_01_mw_when(v_mw); // Check4 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo) v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw_then(v_mw); // Check4 then @TODO fields in mw_WwwAuthenticate f_mtc_check_TP_IMS_5011_02_gm(v_gmA); // Check2 when (Gm) v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw); // Check2 then (Mw) @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityYes) v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw(v_mw); // Check4 then // missing GmA Prot REG v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw); // Check2 then & Check 5 when v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check5 then & Check3 when f_mtc_check_TP_IMS_5092_01_gm(v_gmA); // Check5 when (Gm) f_mtc_check_TP_IMS_5092_01_mw_when(v_mw); // Check5 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo) v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check5 then @TODO template does not contain valid content // TODO incomplete // Check3 when // Check3 then v_Subscribe_Step10 := f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8); // Check3 then // Check6 when // Check6 then f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6 // Step2 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble Loading @@ -91,7 +106,7 @@ module AtsImsIot_TestCases_REG { var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_mw := f_cf_create_monitor(c_mw); var Request v_Register_Step4; var Request v_Register_Step4; // why do we need this variable? var Response v_200OK_Step9; // map/connect component ports Loading @@ -100,13 +115,22 @@ module AtsImsIot_TestCases_REG { f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); // Step1 // check no response (check1-when) -message skip (1st register) // check included in check1-then // check mw for second register request f_mtc_check_TP_IMS_5203_01_mw(v_mw); // (Check1-then) // check gm for protected register (Check2-when) f_mtc_check_TP_IMS_5203_01_gm(v_gmA); // check mw for protected register (check2-when) v_Register_Step4 := f_mtc_check_TP_IMS_5203_01_mw(v_mw); // Check1 (not really tested) // check mw for 200_response (check2-then) v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check2 //Step 2 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble Loading Loading
AtsImsIot/AtsImsIot_Behavior.ttcn +137 −31 Original line number Diff line number Diff line Loading @@ -299,6 +299,7 @@ group checksTC_IMS_MESS_0001{ group checksTC_IMS_REG_0001 { /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_gm( Loading @@ -320,10 +321,11 @@ group checksTC_IMS_REG_0001 { /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * on the Mw-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_mw( ImsInterfaceMonitor p_monitorCompRef ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Request { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var SipMessage v_sip; Loading @@ -333,7 +335,7 @@ group checksTC_IMS_REG_0001 { {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_01", true, p_checkMessage, false ) ); Loading @@ -343,7 +345,50 @@ group checksTC_IMS_REG_0001 { } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 * @desc Starts monitor component behavior for TP_IMS_5089_01 (gm) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5089_01_gm_when ( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mw_REGISTER_Request_Base)}, {}, {0, omit}, "TP_IMS_5089_01_gm_when", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (gm) * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_02_gm", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 (mw) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_mw( Loading @@ -367,37 +412,32 @@ group checksTC_IMS_REG_0001 { return v_sip.request; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 * @desc Starts monitor component behavior for TP_IMS_5089_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw( function f_mtc_check_TP_IMS_5089_01_mw_when( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); var SipMessage v_sip; ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {mw_SipRequest(mdw_TP_IMS_5089_01_mw_when)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01", "TP_IMS_5089_01 (when)", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } /** * @desc Starts monitor component behavior for TP_IMS_5089_01 * @desc Starts monitor component behavior for TP_IMS_5089_01 (then) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5089_01_mw( function f_mtc_check_TP_IMS_5089_01_mw_then( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var SipMessage v_sip; Loading @@ -418,6 +458,72 @@ group checksTC_IMS_REG_0001 { } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 (gm) * the on Gm-interface * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_gm( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01_gm", false, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw_when( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5092_01_mw_when)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5092_01 (when)", true, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5092_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, "TP_IMS_5092_01", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 * @param p_monitorCompRef Reference to monitor component Loading
AtsImsIot/AtsImsIot_Functions.ttcn +54 −6 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ module AtsImsIot_Functions { import from AtsImsIot_TestSystem {type ImsTestCoordinator;} import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT;} import from LibIot_PIXITS {modulepar PX_MAX_MSG_WAIT, PX_PRODUCTS;} import from AtsImsIot_TypesAndValues {type SipMessage;} Loading Loading @@ -400,16 +400,64 @@ module AtsImsIot_Functions { * @desc Get the S-CSCF FQDN address of referenced EUT */ function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring { // TODO return "TODO"; // TODO function not tested var integer v_size_interfaces := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); var integer v_size_ipinterfaceinfo; var integer v_interface := -1; var integer v_ipinterfaceinfo := -1; var charstring v_domainname; for(var integer i := 0; i < v_size_interfaces; i := i+1) { if (PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName == "Mw"){ v_interface := i; } } v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; if (substr(v_domainname, 0, 5) == pattern "[Ss][Cc][Ss][Cc][Ff]") { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; } else { return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } } /** * @desc Get the P-CSCF FQDN address of referenced EUT * @return if a PCSCF is avaiable, the domainname of the PCSCF, * otherwise error_string */ function f_GetEUTPcscfAddress(integer p_ProductIdx) return charstring { // TODO return "TODO"; // TODO function not tested var integer v_size_interfaces := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces); var integer v_size_ipinterfaceinfo; var integer v_interface := -1; var integer v_ipinterfaceinfo := -1; var charstring v_domainname; for(var integer i := 0; i < v_size_interfaces; i := i+1) { if (PX_PRODUCTS[p_ProductIdx].monitorInterfaces[i].interfaceName == "Gm"){ v_interface := i; } } v_size_ipinterfaceinfo := sizeof(PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo); for(var integer i := 0; i < v_size_ipinterfaceinfo; i := i+1) { v_domainname := PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[i].domainName; if (substr(v_domainname, 0, 5) == pattern "[Pp][Cc][Ss][Cc][Ff]") { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { return PX_PRODUCTS[p_ProductIdx].monitorInterfaces[v_interface].interfaceInfo.IpInterfaceInfo[v_ipinterfaceinfo].domainName; } else { return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } } /** * @desc Get the Public Id of referenced EUT */ Loading
AtsImsIot/AtsImsIot_Templates.ttcn +28 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,15 @@ module AtsImsIot_Templates { } } /** * * @desc REGISTER Request containing secuity client header. */ template REGISTER_Request mdw_TP_IMS_5011_02_gm modifies mw_REGISTER_Request_Base := { msgHeader := { securityClient := ? } } /** * Loading Loading @@ -125,6 +134,25 @@ module AtsImsIot_Templates { pVisitedNetworkID := mw_PVisitedNetworkIDAny } } /** * * @desc REGISTER Request checking TP_IMS_5089_01. */ template REGISTER_Request mdw_TP_IMS_5089_01_mw_when modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := m_Authorization(mw_credentialIntegrityNo) } } /** * * @desc REGISTER Request checking TP_IMS_5092_01. */ template REGISTER_Request mdw_TP_IMS_5092_01_mw_when modifies mw_REGISTER_Request_Base := { msgHeader := { authorization := m_Authorization(mw_credentialIntegrityNo) } } /** * Loading
AtsImsIot/AtsImsIot_TestCases_REG.ttcn +35 −11 Original line number Diff line number Diff line Loading @@ -59,18 +59,33 @@ module AtsImsIot_TestCases_REG { f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Step1 f_mtc_check_TP_IMS_5011_01_gm(v_gmA); // Check1 when v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw); // Check1 then & Check4 when v_Register_Step3 := f_mtc_check_TP_IMS_5011_01_mw(v_mw, true); // Check1 then @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityNo) f_mtc_check_TP_IMS_5089_01_gm_when(v_gmA); // Check4 when (Gm) f_mtc_check_TP_IMS_5089_01_mw_when(v_mw); // Check4 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo) v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw_then(v_mw); // Check4 then @TODO fields in mw_WwwAuthenticate f_mtc_check_TP_IMS_5011_02_gm(v_gmA); // Check2 when (Gm) v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw); // Check2 then (Mw) @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityYes) v_401Unauthorited_Step4 := f_mtc_check_TP_IMS_5089_01_mw(v_mw); // Check4 then // missing GmA Prot REG v_Register_Step7 := f_mtc_check_TP_IMS_5011_02_mw(v_mw); // Check2 then & Check 5 when v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check5 then & Check3 when f_mtc_check_TP_IMS_5092_01_gm(v_gmA); // Check5 when (Gm) f_mtc_check_TP_IMS_5092_01_mw_when(v_mw); // Check5 when (Mw) @TODO fields need to be checked (mw_credentialIntegrityNo) v_200OK_Step8 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check5 then @TODO template does not contain valid content // TODO incomplete // Check3 when // Check3 then v_Subscribe_Step10 := f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8); // Check3 then // Check6 when // Check6 then f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6 // Step2 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble Loading @@ -91,7 +106,7 @@ module AtsImsIot_TestCases_REG { var IotEquipmentUser v_ueB := f_cf_create_IotEquipmentUser(c_userUE_B); var ImsInterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var ImsInterfaceMonitor v_mw := f_cf_create_monitor(c_mw); var Request v_Register_Step4; var Request v_Register_Step4; // why do we need this variable? var Response v_200OK_Step9; // map/connect component ports Loading @@ -100,13 +115,22 @@ module AtsImsIot_TestCases_REG { f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_A)); // Step1 // check no response (check1-when) -message skip (1st register) // check included in check1-then // check mw for second register request f_mtc_check_TP_IMS_5203_01_mw(v_mw); // (Check1-then) // check gm for protected register (Check2-when) f_mtc_check_TP_IMS_5203_01_gm(v_gmA); // check mw for protected register (check2-when) v_Register_Step4 := f_mtc_check_TP_IMS_5203_01_mw(v_mw); // Check1 (not really tested) // check mw for 200_response (check2-then) v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check2 //Step 2 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble Loading