Commit ac3e8a36 authored by pintar's avatar pintar
Browse files

CDIV_N03_003 and CDIV_N04_001

parent 812b827c
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -48,6 +48,26 @@ group CDIV_PIXITS{
    /** @desc	float default timer value for PX_Timeout_CFNR 
                */
    modulepar float	PX_Timeout_CFNR := 10.0;
    
    /** @desc	char default start timer value for PX_CDIV_Start_Time_Subscribe 
     * 			for CDIV subscription 
                */
    modulepar charstring PX_CDIV_Start_Time_Subscribe :="101103120000";
    
    /** @desc	char default end timer value for PX_CDIV_End_Time_Subscribe 
     * 			for CDIV subscription 
                */
    modulepar charstring PX_CDIV_End_Time_Subscribe := 	"101103120000";
    
    /** @desc	char default start timer value for PX_CDIV_Start_Time_Notify
     * 			for CDIV notification  
                */
    modulepar charstring PX_CDIV_Start_Time_Notify := 	"101103120000";
    
    /** @desc	char default end timer value for PX_CDIV_End_Time_Notify 
     * 			for CDIV notification 
                */
    modulepar charstring PX_CDIV_End_Time_Notify := 	"101103120000";
}

group CUG_PIXITS{
+172 −13
Original line number Diff line number Diff line
@@ -15,6 +15,11 @@ module CDIV_TC_Functions {
    import from LibSip_Templates all;
	import from LibSip_SIPTypesAndValues language "TTCN-3:2005" all;
    
    import from org_etsi_uri__ngn_params_xml_comm_div_info language "XSD" all
    with {
        extension "File:../xsd/CDIVN.xsd"
    }

    import from LibCommon_Sync all;


@@ -1377,14 +1382,9 @@ module CDIV_TC_Functions {
            f_sendResponse(m_Response_ext(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
            
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
            //UE3release
            f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
    		
            f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq));

            f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));

            f_awaitingACK(mw_ACK_Request_Base(vc_callId));
            //UE3release
            f_releseCallatAS();
            
        }// end f_TC_CDIV_N03_001
        
@@ -1428,19 +1428,178 @@ module CDIV_TC_Functions {
            
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
            
            //UE2release
            f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
//            //UE2release
//            f_sendResponse(m_Response_ext(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
//    		
//            f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq));
//
//            f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
//
//            f_awaitingACK(mw_ACK_Request_Base(vc_callId));
            
            f_awaitingResponse(mw_Response_Base(c_statusLine486, vc_callId, vc_cSeq));
        }// end f_TC_CDIV_N03_002
        
            f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));
		function f_TC_CDIV_N03_003(in CSeq p_cSeq) runs on ImsComponent {
            
            var Diversion_reason_info_type v_ReasonValList[5]:=
             {int302, int486, int408, int503, int404};
            var float v_noReplyTimer := PX_Timeout_CFNR;
            
            f_init_ics_scscf(p_cSeq);
           
            //correction of user profile: set user2 instead user4 as initiator of call
            vc_userprofile.contactPort := PX_IMS_TS_UE2_PORT;			// contact (simulated UE)
            vc_userprofile.contactIpaddr := PX_IMS_TS_UE2_IPADDR;		// contact
            vc_userprofile.homeDomain := PX_IMS_SUT_UE2_HOME_DOMAIN;	// From, To (register)
            vc_userprofile.publUsername := PX_IMS_SUT_UE2_PUBLIC_USER;	// From, To (register)
            
			// send SUBSCRIBE        
         //   LibIms_Steps.f_setHeadersSUBSCRIBE(vc_cSeq, c_userProfile_AS1);
            f_SendSUBSCRIBE(m_SUBSCRIBE_Request_CDIV(
                vc_requestUri, 
                vc_callId, 
                vc_cSeq, 
                vc_from, 
                vc_to, 
                vc_via, 
                vc_contact, 
                valueof(m_MBody_XML(m_XmlBody_CDIVN(m_comm_div_subs_info
                (
                    PX_IMS_SUT_UE1_PUBLIC_USER,
                    PX_IMS_SUT_UE2_PUBLIC_USER,
                    PX_IMS_SUT_UE3_PUBLIC_USER,
                    PX_CDIV_Start_Time_Subscribe,
                    PX_CDIV_End_Time_Subscribe,
                    PX_CDIV_Start_Time_Notify,
                    PX_CDIV_End_Time_Notify,
            		v_ReasonValList[PX_TC_VA-1]
        		)
                )))
            ));
            
            f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));

            f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MB(vc_callId, mw_MBody_XML(mw_XmlBody_CDIVN(
            	mw_comm_div_ntfy_info
            	))));
            
			//----  test body  ----->
            //correction of user profile: set user4
             vc_userprofile.contactPort := PX_IMS_TS_UE4_PORT;			// contact (simulated UE)
             vc_userprofile.contactIpaddr := PX_IMS_TS_UE4_IPADDR;		// contact
             vc_userprofile.homeDomain := PX_IMS_SUT_UE4_HOME_DOMAIN;	// From, To (register)
             vc_userprofile.publUsername := PX_IMS_SUT_UE4_PUBLIC_USER;	// From, To (register)
                      
            // send INVITE 1       
            LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);
            f_SendINVITE(m_INVITE_Request_CDIV(
                vc_requestUri, 
                vc_callId, 
                vc_cSeq, 
                vc_from, 
                vc_to, 
                vc_via, 
                vc_contact, 
                omit, 
                valueof(m_MBody_SDP(vc_sdp_local))
            ));
            select (PX_TC_VA){ // PIXIT for TC VARIANT - 
                case (1) {//CFU
                    f_awaitingINVITE(mw_INVITE_Request_Base);
                } 
                case (2) {//CFB
                    f_awaitingINVITE(mw_INVITE_Request_Base);
                	//UE2 release
                    f_sendResponse(m_Response_warning(c_statusLine486, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, m_warning486));
                    f_awaitingACK(mw_ACK_Request_Base(vc_callId));
                    f_awaitingINVITE(mw_INVITE_Request_Base);
                } 
                case (3) {//CFNRy
                    f_awaitingINVITE(mw_INVITE_Request_Base);
                    //UE2 release
                    f_sendResponse(m_Response_ext(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
                    f_awaitingResponse(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq));
                    //No reply timer
                    f_awaitingDelayTimer(v_noReplyTimer);
                    f_awaitingCANCEL(mw_CANCEL_Request_Base(vc_callId));
                    f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local))));
                    f_sendResponse(m_Response_ext(c_statusLine487, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
                    f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					f_awaitingINVITE(mw_INVITE_Request_Base);            
                } 
                case (4) {//CFNRc	
                    f_awaitingINVITE(mw_INVITE_Request_Base);
                }
                case else {//CFNL
                    f_awaitingINVITE(mw_INVITE_Request_Base);
                }
            }
            
        }// end f_TC_CDIV_N03_002
            f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_MB(vc_callId, mw_MBody_XML(mw_XmlBody_CDIVN(mw_comm_div_ntfy_info))));
            
        }// end f_TC_CDIV_N03_003
        
    } //end group ASdivertingUser_NotDivUser
    group ASdiverted_to {
        
        function f_TC_CDIV_N04_001(in CSeq p_cSeq) runs on ImsComponent {
            
            var charstring v_CauseValList[8]:=
            {"404", "302", "486", "408", "480", "503", "487", "503"};
                                            
            f_init_ics_scscf(p_cSeq);
            //f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_AS);
            
            // ----  test body  ----->
    
            // send INVITE 1       
            LibIms_Steps.f_setHeadersINVITE(vc_cSeq, c_userProfile_UE2atSUThome);
            f_SendINVITE(m_INVITE_Request_CDIV(
                vc_requestUri, 
                vc_callId, 
                vc_cSeq, 
                vc_from, 
                vc_to, 
                vc_via, 
                vc_contact, 
            	m_HistoryInfo(
                  {m_HistoryInfoEntry(m_SipUrl_NumberHostParam(PX_IMS_SUT_UE3_PUBLIC_USER,PX_IMS_SUT_UE3_HOME_DOMAIN,{mw_Cause(v_CauseValList[PX_TC_VA-1])}),{1,1},omit) 
                  }),
                valueof(m_MBody_SDP(vc_sdp_local))
            ));
			
            f_awaitingINVITE(mw_INVITE_Request_Base);
            
            f_sendResponse(m_Response_ext(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute()));
    		
            f_awaitingResponse(mw_Response_CDIV(c_statusLine180, 
            									vc_callId, 
            									vc_cSeq,
                              					mw_HistoryInfo(
													{mw_HistoryInfoEntry(mw_SipUrl_NumberHostParam(PX_IMS_SUT_UE3_PUBLIC_USER,PX_IMS_SUT_UE3_HOME_DOMAIN,{mw_Cause(v_CauseValList[PX_TC_VA-1])}),{1,1},omit) 
												}),
            									*,*));//Passerted,Privacy
            
            f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());

            f_sendResponse(m_Response_mbody(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, f_route(), f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local))));

            f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq));

            f_SendACK(m_ACK_Request_Base(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));

            f_awaitingACK(mw_ACK_Request_Base(vc_callId));
            
            f_SendBYE(m_BYE_Request_Base( vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via));

            f_awaitingBYE(mw_BYE_Request_Base(vc_callId));
            
            f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via));
            
            f_awaitingResponse(mw_Response_warning(c_statusLine200, vc_callId, vc_cSeq, ?));
    		
        }// end f_TC_CDIV_N04_001
        
    } // end group ASdiverted_to
    } //end group Netw

+114 −1
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@ module CDIV_Templates{
        extension "File:../xsd/CDIVN.xsd"
    }

group MessageTemplates{
            
    template INVITE_Request m_INVITE_Request_CDIV(
        SipUrl p_requestUri, 
        CallId p_callId, 
@@ -49,6 +51,25 @@ module CDIV_Templates{
        }
    }
    
    template SUBSCRIBE_Request m_SUBSCRIBE_Request_CDIV (SipUrl p_requestUri, CallId p_callId, 
        CSeq p_cSeq, From p_from, To p_to, Via p_via, Contact p_contact,  template MessageBody p_mb)  modifies m_SUBSCRIBE_Request_Base :=
    {	
        requestLine	:=
        {
            method := SUBSCRIBE_E,
            requestUri := p_requestUri
        },
        msgHeader :=
        {	
            contact	:= p_contact,	
            contentLength	:= {fieldName := CONTENT_LENGTH_E, len:= f_MessageBodyLength(valueof(p_mb))},
            contentType := {fieldName := CONTENT_TYPE_E, mediaType :=  c_xmlAplication},
            event	:= m_Event_reg,//TODO check which event belongs to CDIV  event := {fieldName:=EVENT_E, eventType:="conference",eventParams:=omit},
            expires	:= m_Expires_600000
        },
        messageBody := p_mb
    }
    
    template Response mw_Response_CDIV(template StatusLine p_statusLine, template CallId p_callId,
    	template CSeq p_cSeq, template HistoryInfo p_historyInfo, template PAssertedID p_pAssertedID, template Privacy p_privacy
    ) modifies mw_Response_Base := {
@@ -75,6 +96,7 @@ module CDIV_Templates{
        	warning 		:= p_warning
  		}
	}
}//end group MessageTemplates
    
    template Warning m_warning486 := {
      fieldName := WARNING_E,
@@ -135,4 +157,95 @@ module CDIV_Templates{
			
    template GenericParam mw_Privacy_gen (template charstring p_privacy):=
        {id:="privacy", paramValue:= pattern "*{p_privacy}*"}
        
    group xmlTemplates
    {
        template User_selection_criteria_type m_orig_user(template charstring p_userURI) :=
        {
            anyAttributes := omit,
            user_info := {m_user_info(p_userURI)}
        }
        
        template User_info_type m_user_info(template charstring p_userURI) :=
        {
            anyAttributes := omit,
            user_name := omit,
            user_URI := p_userURI
        }
        
        template Time_range_selection_criteria_type m_time_selection(template charstring p_start_time,template charstring p_end_time) :=
        {
            anyAttributes := omit,
            time_range := {m_time_range(p_start_time, p_end_time)}
        }
        
        template Time_range_type m_time_range(template charstring p_start_time,template charstring p_end_time) :=
        {
            anyAttributes := omit,
            start_time := p_start_time,
            end_time := p_end_time
        }
        
        template Diversion_reason_selection_criteria_type m_reason_type(Diversion_reason_info_type p_enumType) :=
        {
            anyAttributes := omit,
            diversion_reason_info := {p_enumType}
        }
        
        template Comm_div_info_type m_comm_div_subs_info(template charstring p_origUserURI, 
        												 template charstring p_divUserURI,
        												 template charstring p_divToUserURI,
        												 template charstring p_start_time_subs,
        												 template charstring p_end_time_subs,
                                                         template charstring p_start_time_ntfy,
                                                         template charstring p_end_time_ntfy,
        												 Diversion_reason_info_type p_enumReason) := {
          entity := "entity",
          comm_div_subs_info := 
          { 
            anyAttributes := omit,
            comm_div_selection_criteria := 
            {
                anyAttributes:= omit,
                originating_user_selection_criteria:= m_orig_user(p_origUserURI),
                diverting_user_selection_criteria:= p_divUserURI,
                diverted_to_user_selection_criteria:= p_divToUserURI,
                diversion_time_selection_criteria:= m_time_selection(p_start_time_subs,p_end_time_subs),
                diversion_reason_selection_criteria:= m_reason_type(p_enumReason),
                elem:= omit
            },
            comm_div_ntfy_trigger_criteria := {
                anyAttributes := omit,
                notification_time_selection_criteria := m_time_selection(p_start_time_ntfy,p_end_time_ntfy),
                presence_status_selection_criteria := omit,
                notification_buffer_interval := omit,
                elem := omit   
            },
            comm_div_info_selection_criteria := omit,
            elem := omit
          },
          comm_div_ntfy_info := omit,
          elem := omit
        }
        
        template Comm_div_info_type mw_comm_div_ntfy_info := {
          entity := "entity",
          comm_div_subs_info := omit,
          comm_div_ntfy_info := {
              anyAttributes := *,
              originating_user_info := ?,
              diverting_user_info := ?,
              diverted_to_user_info := ?,
              diversion_time_info := ?,//"101231235959" yymmddhhmmss
              diversion_reason_info := ?,
              diversion_rule_info := {
                  anyAttributes := *,
                  diversion_rule := "Any text"
                },
              elem := *
          },
          elem := omit
        }
        
    }//end xmlTemplates group
}
 No newline at end of file
+43 −0
Original line number Diff line number Diff line
@@ -709,8 +709,51 @@ module CDIV_TestCases {
            f_cf_as_down(v_scscf);
        }
 	        
        /**
         * @desc TC_CDIV_N03_003
         * @param p_cSeq_s Transaction Id
         */
        testcase TC_CDIV_N03_003(inout CSeq p_CSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
    
            // setup test configuration
            f_cf_as_up(v_scscf);
    
            // start component
            v_scscf.start(f_TC_CDIV_N03_003(p_CSeq));
	
            // synchronize component
            f_serverSync1Client({c_tbDone});
	
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
    } //end group ASdivertingUser_NotDivUser
    group ASdiverted_to {
 	        
        /**
         * @desc TC_CDIV_N04_001
         * @param p_cSeq_s Transaction Id
         */
        testcase TC_CDIV_N04_001(inout CSeq p_CSeq) runs on ServerSyncComp system TestAdapter {
            // variable declaration
            var ImsComponent v_scscf;
    
            // setup test configuration
            f_cf_as_up(v_scscf);
    
            // start component
            v_scscf.start(f_TC_CDIV_N04_001(p_CSeq));
	
            // synchronize component
            f_serverSync1Client({c_tbDone});
	
            // tear down test configuration
            f_cf_as_down(v_scscf);
        }
        
    } // end group ASdiverted_to
    } //end group Netw