Loading AtsImsIot/AtsImsIot_Behavior.ttcn +58 −24 Original line number Diff line number Diff line Loading @@ -5,17 +5,18 @@ */ module AtsImsIot_Behavior { import from LibIot_TypesAndValues { type DefaultList; } import from LibIot_TestInterface { type TestCoordinator, InterfaceMonitor; } import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues {type SipMessageList;} import from LibIot_TypesAndValues {type DefaultList;} import from LibIot_TestInterface {type TestCoordinator, InterfaceMonitor;} import from LibSip_SIPTypesAndValues {type Request, Response;} import from LibSip_Templates { template mw_ACK_Request_Base, template mw_ACK_Request_Base, mw_INVITE_Request_Base, mw_MESSAGE_Request_Base, mw_NOTIFY_Request_Base, Loading @@ -24,14 +25,6 @@ module AtsImsIot_Behavior { mw_Response_Base; } import from AtsImsIot_TypesAndValues { type SipMessageList, SipMessage; } import from AtsImsIot_Templates { template all; } //TODO move group to Function module group general_td_functions { Loading Loading @@ -189,7 +182,7 @@ module AtsImsIot_Behavior { }// end group group td_IMS_0001 { group checks { /** * @desc Loading Loading @@ -230,6 +223,47 @@ module AtsImsIot_Behavior { p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_gm( InterfaceMonitor p_monitorCompRef ) runs on TestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, "TP_IMS_5011_01", "REGISTER request", 0, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_mw( InterfaceMonitor p_monitorCompRef ) runs on TestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_mw)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, "TP_IMS_5011_01", "REGISTER request", 0, false ) ); p_monitorCompRef.done; } } Loading AtsImsIot/AtsImsIot_Functions.ttcn +41 −10 Original line number Diff line number Diff line Loading @@ -11,13 +11,42 @@ module AtsImsIot_Functions { import from LibIot_TestInterface {type EutTrigger, TestCoordinator;} group ue { /** * @desc * Starts user component behavior for triggering the registration * procedures at the UE from test coordinator. * @param p_userCompRef Reference to IMS UE user component * @param p_publicId public user identity * @param p_privateId private user identity * @param p_pw user password * @return * true in case of successfull execution of the trigger command * otherwise false */ function f_mtc_userTriggerRegistration(EutTrigger p_userCompRef, integer p_productIdx) runs on TestCoordinator return boolean { // TODO fill content return true; } /** * @desc * Starts user component behavior for checking the successful * registration. * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command * otherwise false */ function f_mtc_userCheckRegistration(EutTrigger p_userCompRef) runs on TestCoordinator return boolean { // TODO fill content return true; } /** * @desc Starts user component behaviour for registration from test coordinator * @param p_userCompRef Reference ot IMS UE user component * @param p_userCompRef Reference to IMS UE user component * @param p_publicId public user identity * @param p_privateId private user identity * @param p_pw user password Loading @@ -26,13 +55,16 @@ module AtsImsIot_Functions { * otherwise false */ function f_mtc_userRegister(EutTrigger p_userCompRef, charstring p_publicId, charstring p_privateId, charstring p_pw) runs on TestCoordinator return boolean { // TODO server address parameter may needed var boolean v_success := false; p_userCompRef.start(f_userRegistration(p_publicId, p_privateId, p_pw)); p_userCompRef.done; // TODO add setting of v_success based on e2e verdict if(vc_e3e_verdict.verdict == pass) { v_success := true; } return v_success; } Loading @@ -52,7 +84,9 @@ module AtsImsIot_Functions { p_userCompRef.done; // TODO add setting of v_success based on e2e verdict if(vc_e3e_verdict.verdict == pass) { v_success := true; } return v_success; } Loading Loading @@ -97,7 +131,6 @@ module AtsImsIot_Functions { return v_success; } function f_getUserInfo(integer p_productIdx, out ImsUserInfo p_userInfo) return boolean { var integer v_size := sizeof(PX_IMS_USER_DATA); Loading @@ -106,7 +139,6 @@ module AtsImsIot_Functions { p_userInfo := PX_IMS_USER_DATA[i].userInfos[0]; // TODO improve this return true; } } return false; } Loading Loading @@ -139,7 +171,6 @@ module AtsImsIot_Functions { v_status := f_mtc_userDeregister(p_userCompRef, "*"); // deregister all previous users return v_status; } } Loading AtsImsIot/AtsImsIot_Templates.ttcn +27 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,33 @@ module AtsImsIot_Templates { textplain := pattern "?#(1500,)" } } /** * * @desc REGISTER Request containing secuity client header. */ template REGISTER_Request mdw_TP_IMS_5011_01_gm modifies mw_REGISTER_Request_Base := { msgHeader := { securityClient := ? } } /** * * @desc REGISTER Request checking TP_IMS_5011_01. */ template REGISTER_Request mdw_TP_IMS_5011_01_mw modifies mw_REGISTER_Request_Base := { msgHeader := { path := ?, // TODO check contant require := ?, // TODO check contant pChargingVector := ?, // TODO check contant authorization := ?, // TODO check contant securityClient := omit, securityVerify :=omit, pVisitedNetworkID := ? } } }//end group }//end module No newline at end of file AtsImsIot/AtsImsIot_TestCases.ttcn +48 −9 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ */ module AtsImsIot_TestCases { import from LibIms_ConfigAndTrigger {type ImsUserInfo;} import from Interface_configuration {modulepar PX_EUT_A, PX_EUT_B;} import from AtsImsIot_Functions {function all;} Loading @@ -28,18 +30,20 @@ module AtsImsIot_TestCases { } group constantDefinitions { // interface monitor name Gm A //* interface monitor name Gm A const charstring c_gm_A := "Gm A"; //interface monitor name Gm B //* interface monitor name Gm B const charstring c_gm_B := "Gm B"; //interface monitor name Mw //* interface monitor name Mw const charstring c_mw := "Mw"; //interface monitor name Isc A //* interface monitor name Isc A const charstring c_isc_A := "Isc A"; //interface monitor name Isc B //* interface monitor name Isc B const charstring c_isc_B := "Isc B"; //* eut trigger name User A const charstring c_trigger_A := "User A"; //* eut trigger name User B const charstring c_trigger_B := "User B"; } /** Loading @@ -49,8 +53,8 @@ module AtsImsIot_TestCases { */ testcase TC_IMS_0001() runs on TestCoordinator system SystemInterface { // create components var EutTrigger v_ueA := f_cf_create_trigger("User A"); var EutTrigger v_ueB := f_cf_create_trigger("User B"); var EutTrigger v_ueA := f_cf_create_trigger(c_trigger_A); var EutTrigger v_ueB := f_cf_create_trigger(c_trigger_B); var InterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var InterfaceMonitor v_mw := f_cf_create_monitor(c_mw); Loading @@ -77,6 +81,41 @@ module AtsImsIot_TestCases { //unmap/disconnet component ports f_cf_trigger_down(v_ueA); f_cf_trigger_down(v_ueB); f_cf_monitor_down(v_gmA); f_cf_monitor_down(v_mw); } /** * @desc * First time registration in a visited IMS network. * (TD_IMS_0002 in ETSI TS 186 011-2 V2.3.1 cause 4.5.2.1) */ testcase TC_IMS_0002() runs on TestCoordinator system SystemInterface { // create components var EutTrigger v_ueB := f_cf_create_trigger(c_trigger_B); var InterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var InterfaceMonitor v_mw := f_cf_create_monitor(c_mw); // map/connect component ports f_cf_trigger_up(v_ueB); f_cf_monitor_up(v_gmA); f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, PX_EUT_B); f_mtc_check_TP_IMS_5011_01_gm(v_gmA); f_mtc_check_TP_IMS_5011_01_mw(v_mw); f_mtc_userCheckRegistration(v_ueB); // postamble f_PO_user_home_deregistration(v_ueB); //unmap/disconnet component ports f_cf_trigger_down(v_ueB); f_cf_monitor_down(v_gmA); f_cf_monitor_down(v_mw); } Loading Loading
AtsImsIot/AtsImsIot_Behavior.ttcn +58 −24 Original line number Diff line number Diff line Loading @@ -5,17 +5,18 @@ */ module AtsImsIot_Behavior { import from LibIot_TypesAndValues { type DefaultList; } import from LibIot_TestInterface { type TestCoordinator, InterfaceMonitor; } import from AtsImsIot_Templates {template all;} import from AtsImsIot_TypesAndValues {type SipMessageList;} import from LibIot_TypesAndValues {type DefaultList;} import from LibIot_TestInterface {type TestCoordinator, InterfaceMonitor;} import from LibSip_SIPTypesAndValues {type Request, Response;} import from LibSip_Templates { template mw_ACK_Request_Base, template mw_ACK_Request_Base, mw_INVITE_Request_Base, mw_MESSAGE_Request_Base, mw_NOTIFY_Request_Base, Loading @@ -24,14 +25,6 @@ module AtsImsIot_Behavior { mw_Response_Base; } import from AtsImsIot_TypesAndValues { type SipMessageList, SipMessage; } import from AtsImsIot_Templates { template all; } //TODO move group to Function module group general_td_functions { Loading Loading @@ -189,7 +182,7 @@ module AtsImsIot_Behavior { }// end group group td_IMS_0001 { group checks { /** * @desc Loading Loading @@ -230,6 +223,47 @@ module AtsImsIot_Behavior { p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_gm( InterfaceMonitor p_monitorCompRef ) runs on TestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_gm)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, "TP_IMS_5011_01", "REGISTER request", 0, false ) ); p_monitorCompRef.done; } /** * @desc Starts monitor component behavior for TP_IMS_5011_01 * @param p_monitorCompRef Reference to monitor component */ function f_mtc_check_TP_IMS_5011_01_mw( InterfaceMonitor p_monitorCompRef ) runs on TestCoordinator { p_monitorCompRef.start( f_imsIot_receive( {mw_SipRequest(mdw_TP_IMS_5011_01_mw)}, {mw_SipRequest(mw_REGISTER_Request_Base)}, "TP_IMS_5011_01", "REGISTER request", 0, false ) ); p_monitorCompRef.done; } } Loading
AtsImsIot/AtsImsIot_Functions.ttcn +41 −10 Original line number Diff line number Diff line Loading @@ -11,13 +11,42 @@ module AtsImsIot_Functions { import from LibIot_TestInterface {type EutTrigger, TestCoordinator;} group ue { /** * @desc * Starts user component behavior for triggering the registration * procedures at the UE from test coordinator. * @param p_userCompRef Reference to IMS UE user component * @param p_publicId public user identity * @param p_privateId private user identity * @param p_pw user password * @return * true in case of successfull execution of the trigger command * otherwise false */ function f_mtc_userTriggerRegistration(EutTrigger p_userCompRef, integer p_productIdx) runs on TestCoordinator return boolean { // TODO fill content return true; } /** * @desc * Starts user component behavior for checking the successful * registration. * @param p_userCompRef Reference to IMS UE user component * @return * true in case of successfull execution of the trigger command * otherwise false */ function f_mtc_userCheckRegistration(EutTrigger p_userCompRef) runs on TestCoordinator return boolean { // TODO fill content return true; } /** * @desc Starts user component behaviour for registration from test coordinator * @param p_userCompRef Reference ot IMS UE user component * @param p_userCompRef Reference to IMS UE user component * @param p_publicId public user identity * @param p_privateId private user identity * @param p_pw user password Loading @@ -26,13 +55,16 @@ module AtsImsIot_Functions { * otherwise false */ function f_mtc_userRegister(EutTrigger p_userCompRef, charstring p_publicId, charstring p_privateId, charstring p_pw) runs on TestCoordinator return boolean { // TODO server address parameter may needed var boolean v_success := false; p_userCompRef.start(f_userRegistration(p_publicId, p_privateId, p_pw)); p_userCompRef.done; // TODO add setting of v_success based on e2e verdict if(vc_e3e_verdict.verdict == pass) { v_success := true; } return v_success; } Loading @@ -52,7 +84,9 @@ module AtsImsIot_Functions { p_userCompRef.done; // TODO add setting of v_success based on e2e verdict if(vc_e3e_verdict.verdict == pass) { v_success := true; } return v_success; } Loading Loading @@ -97,7 +131,6 @@ module AtsImsIot_Functions { return v_success; } function f_getUserInfo(integer p_productIdx, out ImsUserInfo p_userInfo) return boolean { var integer v_size := sizeof(PX_IMS_USER_DATA); Loading @@ -106,7 +139,6 @@ module AtsImsIot_Functions { p_userInfo := PX_IMS_USER_DATA[i].userInfos[0]; // TODO improve this return true; } } return false; } Loading Loading @@ -139,7 +171,6 @@ module AtsImsIot_Functions { v_status := f_mtc_userDeregister(p_userCompRef, "*"); // deregister all previous users return v_status; } } Loading
AtsImsIot/AtsImsIot_Templates.ttcn +27 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,33 @@ module AtsImsIot_Templates { textplain := pattern "?#(1500,)" } } /** * * @desc REGISTER Request containing secuity client header. */ template REGISTER_Request mdw_TP_IMS_5011_01_gm modifies mw_REGISTER_Request_Base := { msgHeader := { securityClient := ? } } /** * * @desc REGISTER Request checking TP_IMS_5011_01. */ template REGISTER_Request mdw_TP_IMS_5011_01_mw modifies mw_REGISTER_Request_Base := { msgHeader := { path := ?, // TODO check contant require := ?, // TODO check contant pChargingVector := ?, // TODO check contant authorization := ?, // TODO check contant securityClient := omit, securityVerify :=omit, pVisitedNetworkID := ? } } }//end group }//end module No newline at end of file
AtsImsIot/AtsImsIot_TestCases.ttcn +48 −9 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ */ module AtsImsIot_TestCases { import from LibIms_ConfigAndTrigger {type ImsUserInfo;} import from Interface_configuration {modulepar PX_EUT_A, PX_EUT_B;} import from AtsImsIot_Functions {function all;} Loading @@ -28,18 +30,20 @@ module AtsImsIot_TestCases { } group constantDefinitions { // interface monitor name Gm A //* interface monitor name Gm A const charstring c_gm_A := "Gm A"; //interface monitor name Gm B //* interface monitor name Gm B const charstring c_gm_B := "Gm B"; //interface monitor name Mw //* interface monitor name Mw const charstring c_mw := "Mw"; //interface monitor name Isc A //* interface monitor name Isc A const charstring c_isc_A := "Isc A"; //interface monitor name Isc B //* interface monitor name Isc B const charstring c_isc_B := "Isc B"; //* eut trigger name User A const charstring c_trigger_A := "User A"; //* eut trigger name User B const charstring c_trigger_B := "User B"; } /** Loading @@ -49,8 +53,8 @@ module AtsImsIot_TestCases { */ testcase TC_IMS_0001() runs on TestCoordinator system SystemInterface { // create components var EutTrigger v_ueA := f_cf_create_trigger("User A"); var EutTrigger v_ueB := f_cf_create_trigger("User B"); var EutTrigger v_ueA := f_cf_create_trigger(c_trigger_A); var EutTrigger v_ueB := f_cf_create_trigger(c_trigger_B); var InterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var InterfaceMonitor v_mw := f_cf_create_monitor(c_mw); Loading @@ -77,6 +81,41 @@ module AtsImsIot_TestCases { //unmap/disconnet component ports f_cf_trigger_down(v_ueA); f_cf_trigger_down(v_ueB); f_cf_monitor_down(v_gmA); f_cf_monitor_down(v_mw); } /** * @desc * First time registration in a visited IMS network. * (TD_IMS_0002 in ETSI TS 186 011-2 V2.3.1 cause 4.5.2.1) */ testcase TC_IMS_0002() runs on TestCoordinator system SystemInterface { // create components var EutTrigger v_ueB := f_cf_create_trigger(c_trigger_B); var InterfaceMonitor v_gmA := f_cf_create_monitor(c_gm_A); var InterfaceMonitor v_mw := f_cf_create_monitor(c_mw); // map/connect component ports f_cf_trigger_up(v_ueB); f_cf_monitor_up(v_gmA); f_cf_monitor_up(v_mw); // test body f_mtc_userTriggerRegistration(v_ueB, PX_EUT_B); f_mtc_check_TP_IMS_5011_01_gm(v_gmA); f_mtc_check_TP_IMS_5011_01_mw(v_mw); f_mtc_userCheckRegistration(v_ueB); // postamble f_PO_user_home_deregistration(v_ueB); //unmap/disconnet component ports f_cf_trigger_down(v_ueB); f_cf_monitor_down(v_gmA); f_cf_monitor_down(v_mw); } Loading