Loading AtsImsIot/AtsImsIot_Behavior.ttcn +104 −73 Original line number Diff line number Diff line Loading @@ -326,22 +326,19 @@ group checksTC_IMS_REG_0001 { */ function f_mtc_check_TP_IMS_5011_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Request { ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_mw(v_EUT_A_Addr))}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_01", p_checkMessage, false false, p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } /** Loading Loading @@ -392,10 +389,9 @@ group checksTC_IMS_REG_0001 { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request{ ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_mw(v_EUT_A_Addr))}, Loading @@ -403,13 +399,10 @@ group checksTC_IMS_REG_0001 { {0, omit}, "TP_IMS_5011_02", true, false p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } Loading Loading @@ -439,8 +432,7 @@ group checksTC_IMS_REG_0001 { */ function f_mtc_check_TP_IMS_5089_01_mw_then( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var SipMessage v_sip; ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5089_01_mw)}, Loading @@ -452,9 +444,6 @@ group checksTC_IMS_REG_0001 { ) ); p_monitorCompRef.done; p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } Loading Loading @@ -504,16 +493,40 @@ group checksTC_IMS_REG_0001 { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, "TP_IMS_5092_01", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5044_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5044_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; 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", "TP_IMS_5044_01 (when)", true, false ) Loading @@ -525,27 +538,25 @@ group checksTC_IMS_REG_0001 { } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 * @desc Starts monitor component behavior for TP_IMS_5044_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5044_01_mw( ImsInterfaceMonitor p_monitorCompRef, Response p_200OK ) runs on ImsTestCoordinator return Request { var charstring v_EUTB_PublicId := f_GetEUTPublicId(PX_EUT_B); ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_B)); var SipMessage v_sip; var charstring v_Epires200OK; var charstring v_EpiresSubscribe; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5044_01_mw(v_eutAUri, v_eutBUri, v_EUTB_PublicId))}, {mw_SipRequest(mdw_TP_IMS_5044_01_mw(?, v_eutAUri, v_UEB_PublicId))}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, "TP_IMS_5044_01", true, false p_checkMessage ) ); p_monitorCompRef.done; Loading @@ -555,18 +566,42 @@ group checksTC_IMS_REG_0001 { // in the Expires_header of the 200_response" v_Epires200OK := p_200OK.msgHeader.expires.deltaSec; v_EpiresSubscribe := v_sip.request.msgHeader.expires.deltaSec; if (char2int(v_EpiresSubscribe) <= char2int(v_Epires200OK)) { f_setIotVerdictFAIL("TP_IMS_5044_01"); // TODO use oracle functions for vericts if (char2int(v_EpiresSubscribe) > char2int(v_Epires200OK)) { f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response."); } } // @TODO /** * @desc Starts monitor component behavior for TP_IMS_5096_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5096_01_mw_when( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request { var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5096_01_mw_when)}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, "TP_IMS_5096_01 (when)", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } /** * @desc Starts monitor component behavior for TP_IMS_5096_01 */ function f_mtc_check_TP_IMS_5096_01_mw( ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe ) runs on ImsTestCoordinator return Response ) runs on ImsTestCoordinator { var SipMessage v_sip; var charstring v_Epires200OK; Loading @@ -581,7 +616,6 @@ group checksTC_IMS_REG_0001 { false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); Loading @@ -589,12 +623,9 @@ group checksTC_IMS_REG_0001 { // lower expiry time than specified in the initial SUBSCRIBE" v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec; v_EpiresSubscribe := p_Subscribe.msgHeader.expires.deltaSec; if (char2int(v_EpiresSubscribe) >= char2int(v_Epires200OK)) { f_setIotVerdictFAIL("TP_IMS_5096_01"); if (char2int(v_Epires200OK) <= char2int(v_EpiresSubscribe)) { f_setIotVerdictFAIL("TP_IMS_5096_01 - - Expires_header Expires_header of 200_response is NOT the same or lower than the Expires_header of subscribe."); } return v_sip.response; } } // group Loading AtsImsIot/AtsImsIot_Functions.ttcn +36 −14 Original line number Diff line number Diff line Loading @@ -474,6 +474,8 @@ module AtsImsIot_Functions { /** * @desc Get the S-CSCF FQDN address of referenced EUT * @return if a S-CSCF is avaiable, the domainname of the S-CSCF, * otherwise error_string */ function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring { // TODO function not tested Loading @@ -488,6 +490,7 @@ module AtsImsIot_Functions { v_interface := i; } } if (v_interface > -1) { 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; Loading @@ -495,7 +498,10 @@ module AtsImsIot_Functions { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { } else { return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } if (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."; Loading @@ -520,6 +526,7 @@ module AtsImsIot_Functions { v_interface := i; } } if (v_interface > -1) { 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; Loading @@ -527,13 +534,28 @@ module AtsImsIot_Functions { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { } else { return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } if (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 UE * @param p_ProductIdx index of the product the UE belongs to * @return PublicID of the UE of the productIdx */ function f_GetUEPublicId(integer p_ProductIdx) return charstring { var ImsUserInfo v_uePublicId := f_getSipUserId(p_ProductIdx); return v_uePublicId.publicId; } /** * @desc Get the Public Id of referenced EUT */ Loading AtsImsIot/AtsImsIot_Templates.ttcn +49 −32 Original line number Diff line number Diff line Loading @@ -91,12 +91,18 @@ module AtsImsIot_Templates { msgHeader := { path := mw_PathDef (p_EUTHostname), require := mw_Require ({"path", *}), pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, {id := "orig-ioi", paramValue := *}, //TODO better should be ? instead of * {id := "term-ioi", paramValue := *}, //TODO check term-ioi should not be present pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { *, {id := "icid-value", paramValue := ?}, *, {id := "orig-ioi", paramValue := ?}, *, complement({id := "term-ioi", paramValue := ?}), * }), } }, authorization := m_Authorization(mw_credentialIntegrityNo), securityClient := omit, securityVerify :=omit, Loading Loading @@ -158,23 +164,24 @@ module AtsImsIot_Templates { * * @desc 200 OK message for TP_IMS_5092_01 */ template Response mdw_TP_IMS_5092_01_mw (template SipUrl p_eutBUri )modifies mw_200OK_Base := { msgHeader := { // TODO // all registered_public_identities and "its associated set of implicitly // registered public user identities" indicating (first the default // public_user_identity and no barred_public_user_identities pAssociatedURI := mw_PAssociatedURI({ {id := "publicUserId1", paramValue :="eutBxxx"}, {id := "publicUserId2", paramValue :="eutByyy"} }), serviceRoute := mw_ServiceRoute (p_eutBUri), template Response mdw_TP_IMS_5092_01_mw (charstring p_EUTHostname, template SipUrl p_eutBUri) modifies mw_200OK_Base := { msgHeader := { path := mw_PathDef (p_EUTHostname), pAssociatedURI := { fieldName := P_ASSOCIATED_URI_E, nameAddrList := ? }, pChargingVector := mw_PChargingVector({ {id := "term-ioi", paramValue := *}, {id := "term-ioi", paramValue := ?}, * }), // TODO indicating all contact addresses contact := m_Contact(p_eutBUri) serviceRoute := mw_ServiceRoute (p_eutBUri), contact := { fieldName := CONTACT_E, contactBody := { contactAddresses := ? } } } } /** Loading @@ -192,22 +199,22 @@ module AtsImsIot_Templates { * * @desc SUBSCRIBE checking TP_IMS_5044_01. */ template SUBSCRIBE_Request mdw_TP_IMS_5044_01_mw(template SipUrl p_eutAUri, template SipUrl p_eutBUri, template SUBSCRIBE_Request mdw_TP_IMS_5044_01_mw( template SipUrl p_subscribe_uri, template SipUrl p_eutAUri, template charstring p_EUTB_PublicId ) modifies mw_SUBSCRIBE_Request_Base := { ) modifies mw_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E, requestUri := p_eutBUri, requestUri := p_subscribe_uri, // @TODO sipVersion := c_sipNameVersion }, msgHeader := { fromField := mw_From (p_eutAUri), toField := mw_To_NameAddr_SipUrl (p_EUTB_PublicId, ?, ?), event := m_Event_reg, expires := ?, // to be checked outside the template expires := ?, // checked outside the template pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_eutAUri)), pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, Loading Loading @@ -260,6 +267,16 @@ module AtsImsIot_Templates { } } /** * * @desc SUBSCRIBE checking TP_IMS_5096_01. */ template SUBSCRIBE_Request mdw_TP_IMS_5096_01_mw_when modifies mw_SUBSCRIBE_Request_Base := { msgHeader := { event := m_Event_reg } } /** * @desc INVITE Request checking TP_IMS_5097_01 */ Loading AtsImsIot/AtsImsIot_TestCases_REG.ttcn +11 −19 Original line number Diff line number Diff line Loading @@ -46,12 +46,8 @@ 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_Step3; var Response v_401Unauthorited_Step4; var Request v_Register_Step7; var Response v_200OK_Step8; var Request v_Subscribe_Step10; var Response v_200OK_Step11; // map/connect component ports f_cf_user_up(v_ueB); Loading @@ -59,33 +55,29 @@ module AtsImsIot_TestCases_REG { f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Step1 f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Test Sequence Step 1 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, true); // Check1 then @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityNo) 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_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) f_mtc_check_TP_IMS_5011_02_mw(v_mw, true); // Check2 then (Mw) @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityYes) 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 f_mtc_check_TP_IMS_5092_01_mw(v_mw, true); // Check5 then @TODO fields need to be checked (pChargingVector) // Check3 then v_Subscribe_Step10 := f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8); // Check3 then v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_mw_when(v_mw); // Check3 when f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8, true); // Check3 then // Check6 when v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_mw_when(v_mw); // Check6 when f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6 then // Check6 then f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6 // Step2 // Test Sequence Step 2 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble Loading Loading @@ -128,7 +120,7 @@ module AtsImsIot_TestCases_REG { // check mw for protected register (check2-when) // check mw for 200_response (check2-then) v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check2 //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)); Loading Loading
AtsImsIot/AtsImsIot_Behavior.ttcn +104 −73 Original line number Diff line number Diff line Loading @@ -326,22 +326,19 @@ group checksTC_IMS_REG_0001 { */ function f_mtc_check_TP_IMS_5011_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator return Request { ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_mw(v_EUT_A_Addr))}, {mw_SipRequest(mw_REGISTER_Request_Base)}, {0, omit}, "TP_IMS_5011_01", p_checkMessage, false false, p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } /** Loading Loading @@ -392,10 +389,9 @@ group checksTC_IMS_REG_0001 { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_02_mw( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request{ ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_02_mw(v_EUT_A_Addr))}, Loading @@ -403,13 +399,10 @@ group checksTC_IMS_REG_0001 { {0, omit}, "TP_IMS_5011_02", true, false p_checkMessage ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } Loading Loading @@ -439,8 +432,7 @@ group checksTC_IMS_REG_0001 { */ function f_mtc_check_TP_IMS_5089_01_mw_then( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Response { var SipMessage v_sip; ) runs on ImsTestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5089_01_mw)}, Loading @@ -452,9 +444,6 @@ group checksTC_IMS_REG_0001 { ) ); p_monitorCompRef.done; p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.response; } Loading Loading @@ -504,16 +493,40 @@ group checksTC_IMS_REG_0001 { * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5092_01_mw( ImsInterfaceMonitor p_monitorCompRef, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_EUT_A_Addr := f_GetEUTPcscfAddress(PX_EUT_A); var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTScscfAddress(PX_EUT_B)); p_monitorCompRef.start( f_imsIot_receive( {mw_SipResponse(mdw_TP_IMS_5092_01_mw(v_EUT_A_Addr, v_eutBUri))}, {mw_SipResponse (mw_200OK_Base)}, {0, omit}, "TP_IMS_5092_01", true, p_checkMessage ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5044_01 (when) * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5044_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; 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", "TP_IMS_5044_01 (when)", true, false ) Loading @@ -525,27 +538,25 @@ group checksTC_IMS_REG_0001 { } /** * @desc Starts monitor component behavior for TP_IMS_5011_02 * @desc Starts monitor component behavior for TP_IMS_5044_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5044_01_mw( ImsInterfaceMonitor p_monitorCompRef, Response p_200OK ) runs on ImsTestCoordinator return Request { var charstring v_EUTB_PublicId := f_GetEUTPublicId(PX_EUT_B); ImsInterfaceMonitor p_monitorCompRef, Response p_200OK, boolean p_checkMessage ) runs on ImsTestCoordinator { var charstring v_UEB_PublicId := f_GetUEPublicId(PX_EUT_B); var template SipUrl v_eutAUri := mw_SipUrl_Host(f_GetEUTPcscfAddress(PX_EUT_A)); var template SipUrl v_eutBUri := mw_SipUrl_Host(f_GetEUTPublicId(PX_EUT_B)); var SipMessage v_sip; var charstring v_Epires200OK; var charstring v_EpiresSubscribe; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5044_01_mw(v_eutAUri, v_eutBUri, v_EUTB_PublicId))}, {mw_SipRequest(mdw_TP_IMS_5044_01_mw(?, v_eutAUri, v_UEB_PublicId))}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, "TP_IMS_5044_01", true, false p_checkMessage ) ); p_monitorCompRef.done; Loading @@ -555,18 +566,42 @@ group checksTC_IMS_REG_0001 { // in the Expires_header of the 200_response" v_Epires200OK := p_200OK.msgHeader.expires.deltaSec; v_EpiresSubscribe := v_sip.request.msgHeader.expires.deltaSec; if (char2int(v_EpiresSubscribe) <= char2int(v_Epires200OK)) { f_setIotVerdictFAIL("TP_IMS_5044_01"); // TODO use oracle functions for vericts if (char2int(v_EpiresSubscribe) > char2int(v_Epires200OK)) { f_setIotVerdictFAIL("TP_IMS_5044_01 - Expires_header of subscribe is NOT greater than the Expires_header of 200_response."); } } // @TODO /** * @desc Starts monitor component behavior for TP_IMS_5096_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5096_01_mw_when( ImsInterfaceMonitor p_monitorCompRef ) runs on ImsTestCoordinator return Request { var SipMessage v_sip; p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5096_01_mw_when)}, {mw_SipRequest(mw_SUBSCRIBE_Request_Base)}, {0, omit}, "TP_IMS_5096_01 (when)", true, false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); return v_sip.request; } /** * @desc Starts monitor component behavior for TP_IMS_5096_01 */ function f_mtc_check_TP_IMS_5096_01_mw( ImsInterfaceMonitor p_monitorCompRef, Request p_Subscribe ) runs on ImsTestCoordinator return Response ) runs on ImsTestCoordinator { var SipMessage v_sip; var charstring v_Epires200OK; Loading @@ -581,7 +616,6 @@ group checksTC_IMS_REG_0001 { false ) ); p_monitorCompRef.done; f_getSipMsgFromMonitor(p_monitorCompRef, v_sip); Loading @@ -589,12 +623,9 @@ group checksTC_IMS_REG_0001 { // lower expiry time than specified in the initial SUBSCRIBE" v_Epires200OK := v_sip.response.msgHeader.expires.deltaSec; v_EpiresSubscribe := p_Subscribe.msgHeader.expires.deltaSec; if (char2int(v_EpiresSubscribe) >= char2int(v_Epires200OK)) { f_setIotVerdictFAIL("TP_IMS_5096_01"); if (char2int(v_Epires200OK) <= char2int(v_EpiresSubscribe)) { f_setIotVerdictFAIL("TP_IMS_5096_01 - - Expires_header Expires_header of 200_response is NOT the same or lower than the Expires_header of subscribe."); } return v_sip.response; } } // group Loading
AtsImsIot/AtsImsIot_Functions.ttcn +36 −14 Original line number Diff line number Diff line Loading @@ -474,6 +474,8 @@ module AtsImsIot_Functions { /** * @desc Get the S-CSCF FQDN address of referenced EUT * @return if a S-CSCF is avaiable, the domainname of the S-CSCF, * otherwise error_string */ function f_GetEUTScscfAddress(integer p_ProductIdx) return charstring { // TODO function not tested Loading @@ -488,6 +490,7 @@ module AtsImsIot_Functions { v_interface := i; } } if (v_interface > -1) { 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; Loading @@ -495,7 +498,10 @@ module AtsImsIot_Functions { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { } else { return "S-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } if (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."; Loading @@ -520,6 +526,7 @@ module AtsImsIot_Functions { v_interface := i; } } if (v_interface > -1) { 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; Loading @@ -527,13 +534,28 @@ module AtsImsIot_Functions { v_ipinterfaceinfo := i; } } if (v_interface > -1 and v_ipinterfaceinfo > -1) { } else { return "P-CSCF of " & PX_PRODUCTS[p_ProductIdx].productName & " not found."; } if (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 UE * @param p_ProductIdx index of the product the UE belongs to * @return PublicID of the UE of the productIdx */ function f_GetUEPublicId(integer p_ProductIdx) return charstring { var ImsUserInfo v_uePublicId := f_getSipUserId(p_ProductIdx); return v_uePublicId.publicId; } /** * @desc Get the Public Id of referenced EUT */ Loading
AtsImsIot/AtsImsIot_Templates.ttcn +49 −32 Original line number Diff line number Diff line Loading @@ -91,12 +91,18 @@ module AtsImsIot_Templates { msgHeader := { path := mw_PathDef (p_EUTHostname), require := mw_Require ({"path", *}), pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, {id := "orig-ioi", paramValue := *}, //TODO better should be ? instead of * {id := "term-ioi", paramValue := *}, //TODO check term-ioi should not be present pChargingVector := { fieldName := P_CHARGING_VECTOR_E, chargeParams := { *, {id := "icid-value", paramValue := ?}, *, {id := "orig-ioi", paramValue := ?}, *, complement({id := "term-ioi", paramValue := ?}), * }), } }, authorization := m_Authorization(mw_credentialIntegrityNo), securityClient := omit, securityVerify :=omit, Loading Loading @@ -158,23 +164,24 @@ module AtsImsIot_Templates { * * @desc 200 OK message for TP_IMS_5092_01 */ template Response mdw_TP_IMS_5092_01_mw (template SipUrl p_eutBUri )modifies mw_200OK_Base := { msgHeader := { // TODO // all registered_public_identities and "its associated set of implicitly // registered public user identities" indicating (first the default // public_user_identity and no barred_public_user_identities pAssociatedURI := mw_PAssociatedURI({ {id := "publicUserId1", paramValue :="eutBxxx"}, {id := "publicUserId2", paramValue :="eutByyy"} }), serviceRoute := mw_ServiceRoute (p_eutBUri), template Response mdw_TP_IMS_5092_01_mw (charstring p_EUTHostname, template SipUrl p_eutBUri) modifies mw_200OK_Base := { msgHeader := { path := mw_PathDef (p_EUTHostname), pAssociatedURI := { fieldName := P_ASSOCIATED_URI_E, nameAddrList := ? }, pChargingVector := mw_PChargingVector({ {id := "term-ioi", paramValue := *}, {id := "term-ioi", paramValue := ?}, * }), // TODO indicating all contact addresses contact := m_Contact(p_eutBUri) serviceRoute := mw_ServiceRoute (p_eutBUri), contact := { fieldName := CONTACT_E, contactBody := { contactAddresses := ? } } } } /** Loading @@ -192,22 +199,22 @@ module AtsImsIot_Templates { * * @desc SUBSCRIBE checking TP_IMS_5044_01. */ template SUBSCRIBE_Request mdw_TP_IMS_5044_01_mw(template SipUrl p_eutAUri, template SipUrl p_eutBUri, template SUBSCRIBE_Request mdw_TP_IMS_5044_01_mw( template SipUrl p_subscribe_uri, template SipUrl p_eutAUri, template charstring p_EUTB_PublicId ) modifies mw_SUBSCRIBE_Request_Base := { ) modifies mw_SUBSCRIBE_Request_Base := { requestLine := { method := SUBSCRIBE_E, requestUri := p_eutBUri, requestUri := p_subscribe_uri, // @TODO sipVersion := c_sipNameVersion }, msgHeader := { fromField := mw_From (p_eutAUri), toField := mw_To_NameAddr_SipUrl (p_EUTB_PublicId, ?, ?), event := m_Event_reg, expires := ?, // to be checked outside the template expires := ?, // checked outside the template pAssertedID := mw_PAssertedID(mw_PAssertedIDValue(p_eutAUri)), pChargingVector := mw_PChargingVector({ {id := "icid-value", paramValue := *}, Loading Loading @@ -260,6 +267,16 @@ module AtsImsIot_Templates { } } /** * * @desc SUBSCRIBE checking TP_IMS_5096_01. */ template SUBSCRIBE_Request mdw_TP_IMS_5096_01_mw_when modifies mw_SUBSCRIBE_Request_Base := { msgHeader := { event := m_Event_reg } } /** * @desc INVITE Request checking TP_IMS_5097_01 */ Loading
AtsImsIot/AtsImsIot_TestCases_REG.ttcn +11 −19 Original line number Diff line number Diff line Loading @@ -46,12 +46,8 @@ 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_Step3; var Response v_401Unauthorited_Step4; var Request v_Register_Step7; var Response v_200OK_Step8; var Request v_Subscribe_Step10; var Response v_200OK_Step11; // map/connect component ports f_cf_user_up(v_ueB); Loading @@ -59,33 +55,29 @@ module AtsImsIot_TestCases_REG { f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Step1 f_mtc_userTriggerRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // Test Sequence Step 1 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, true); // Check1 then @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityNo) 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_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) f_mtc_check_TP_IMS_5011_02_mw(v_mw, true); // Check2 then (Mw) @TODO fields need to be checked (pChargingVector, mw_credentialIntegrityYes) 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 f_mtc_check_TP_IMS_5092_01_mw(v_mw, true); // Check5 then @TODO fields need to be checked (pChargingVector) // Check3 then v_Subscribe_Step10 := f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8); // Check3 then v_200OK_Step8 := f_mtc_check_TP_IMS_5044_01_mw_when(v_mw); // Check3 when f_mtc_check_TP_IMS_5044_01_mw(v_mw, v_200OK_Step8, true); // Check3 then // Check6 when v_Subscribe_Step10 := f_mtc_check_TP_IMS_5096_01_mw_when(v_mw); // Check6 when f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6 then // Check6 then f_mtc_check_TP_IMS_5096_01_mw(v_mw, v_Subscribe_Step10); // Check6 // Step2 // Test Sequence Step 2 f_mtc_userCheckRegistration(v_ueB, f_getAnyValidUser(PX_EUT_B)); // postamble Loading Loading @@ -128,7 +120,7 @@ module AtsImsIot_TestCases_REG { // check mw for protected register (check2-when) // check mw for 200_response (check2-then) v_200OK_Step9 := f_mtc_check_TP_IMS_5092_01_mw(v_mw); // Check2 //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)); Loading