Commit ab8e703a authored by poglitsch's avatar poglitsch
Browse files

TC_SS___CN__03 and TC_SS___CN__04 added

parent 2ab40cc2
Loading
Loading
Loading
Loading
+478 −0
Original line number Diff line number Diff line
@@ -1255,6 +1255,484 @@ module AtsNIT_SipSip_BC_TCFunctions {
					f_IMS_postamble_withDeRegistration(vc_cSeq);
				} // end function f_AtsNIT_TC_SS___CN__02UE2
				
				/*
				* @desc		This is the test case function (originating side) for AtsNIT_TC_SS___CN__03
				* @param	p_CSeq_s Transaction Id
				*/
				function f_AtsNIT_TC_SS___CN__03UE1(in CSeq p_cSeq_s) runs on ImsComponent {
					// SDP body set to PCMA encoding
					var SDP_Message v_sdp := valueof(m_SDP_bandwidth(valueof(m_media_dynPT("8", "PCMA")), vc_userprofile));
					
					f_IMS_preamble_withRegistrationBasic(c_userProfile_UE1atSUThome, p_cSeq_s); // assignment of PIXIT values to component variable
					f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

					// Testbody
					
					// prepare and send INVITE UE2@SUT
            		LibIms_Steps.f_setHeadersINVITE(
            			vc_cSeq, 
            			c_userProfile_UE2atSUThome
            		);
            		
            		f_SendINVITE(m_INVITE_Request_UE(
            			vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via, 
            			vc_contact, 
            			omit, 
            			vc_route, 
            			omit, 
            			m_MBody_SDP(v_sdp)
            		));
            		
            		// await 180 response
            		f_awaitingResponse(mw_Response_Base(
            			c_statusLine180,
            			vc_callId, 
            			vc_cSeq
            		));
            		
            		// await 200 response
            		f_awaitingOkResponse(vc_cSeq);
            		
            		// send ACK
            		f_SendACK(m_ACK_Request_Base(
            			vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via
            		));
            		
            		// await RE-INVITE	
            		f_awaitingINVITE(mw_INVITE_Request_Base); 
            		f_sendResponse(m_Response_2xxonINVITE_UE(
            			c_statusLine200,
            			vc_callId, 
            			vc_cSeq,
            			vc_caller_From, 
            			vc_caller_To, 
            			vc_via,vc_contact,
            			f_route(),
            			valueof(m_MBody_SDP(vc_sdp_local))
            		));
            		
            		// await ACK
					f_awaitingACK(mw_ACK_Request_Base(vc_callId));
            		
            		
            		// check media
            		f_check_Conversation();
            		
            		f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
            		
            		//await BYE and send 200OK
					f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
            		
					f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
					
					// postamble
					f_IMS_postamble_withDeRegistration(vc_cSeq);
				} // end function f_AtsNIT_TC_SS___CN__03UE1

				/* 
				* @desc		This is the test case function (terminating side) for AtsNIT_TC_SS___CN__03
				* @param	p_CSeq_s Transaction Id
				*/
				function f_AtsNIT_TC_SS___CN__03UE2(in CSeq p_cSeq_s) runs on ImsComponent {
					f_IMS_preamble_withRegistrationBasic(c_userProfile_UE2atSUThome, p_cSeq_s); // assignment of PIXIT values to component variable
					f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

					// Testbody
					
					// await INVITE
            		f_awaitingINVITE(mw_INVITE_Request_Base);
            		
            		// send 180 response 
					f_sendResponse(m_Response_18XonINVITE_UE(
						c_statusLine180,
						vc_callId, 
						vc_cSeq,
						vc_caller_From, 
						vc_caller_To, 
						vc_via,
						vc_contact
					));
					
					// send 200 response
					f_sendResponse(m_Response_2xxonINVITE_UE(
						c_statusLine200,
						vc_callId, 
						vc_cSeq,
						vc_caller_From, 
						vc_caller_To, 
						vc_via,vc_contact,
						f_route(),
						valueof(m_MBody_SDP(vc_sdp_local))
					));
            		
            		// send RE-INVITE
					vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile)); // TODO check SDP
            		LibIms_Steps.f_setHeadersReINVITE(p_cSeq_s);
	 				f_SendINVITE(m_INVITE_Request_UE(
	 					vc_requestUri, 
	 					vc_callId, 
	 					p_cSeq_s, 
	 					vc_from, 
	 					vc_to, 
	 					vc_via, 
	 					vc_contact, 
	 					omit, 
	 					vc_route, 
	 					omit, 
	 					m_MBody_SDP(vc_sdp_local)
	 				));
	 				
	 				//await 200 OK response 
            	 	f_awaitingResponse(mw_Response_Base(
            	 		c_statusLine200,
            	 		vc_callId, 
            	 		vc_cSeq
            	 	));
            	 	
            	 	// send ACK
            	 	f_SendACK(m_ACK_Request_Base(
            	 		vc_requestUri, 
            	 		vc_callId, 
            	 		vc_cSeq, 
            	 		vc_from, 
            	 		vc_to, 
            	 		vc_via
            	 	));
            		
            		// check media
            		f_check_Conversation();
            		
            		//SendBYE and await response
					f_terminateCall_UE(
						vc_requestUri, 
						vc_callId, 
						vc_cSeq, 
						vc_caller_From, 
						vc_caller_To
					);
            		
					f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
					
					// postamble
					f_IMS_postamble_withDeRegistration(vc_cSeq);
				} // end function f_AtsNIT_TC_SS___CN__03UE2
				
				
				/* 
				* @desc		This is the test case function (originating side) for AtsNIT_TC_SS___CN__04
				* @param	p_CSeq_s Transaction Id
				*/
				function f_AtsNIT_TC_SS___CN__04UE1(in CSeq p_cSeq_s) runs on ImsComponent {
					var CSeq v_INVITE_CSeq;
					// SDP body set to PCMA encoding and appand QoS parameter
					var SDP_Message v_sdp := valueof(m_SDP_bandwidth(valueof(m_media_dynPT("8", "PCMA")), vc_userprofile));
					f_append_media_attribute(v_sdp, m_attribute_curr(
						c_qos,
						c_e2e,
						c_none
					));
					f_append_media_attribute(v_sdp, m_attribute_des(
						c_qos,
						c_mandatory,
						c_e2e,
						c_sendrecv
					));
					
					
					f_IMS_preamble_withRegistrationBasic(c_userProfile_UE1atSUThome, p_cSeq_s); // assignment of PIXIT values to component variable
					f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

					// Testbody
					
					// prepare and send INVITE UE2@SUT
            		LibIms_Steps.f_setHeadersINVITE(
            			vc_cSeq, 
            			c_userProfile_UE2atSUThome
            		);
            		v_INVITE_CSeq := vc_cSeq; 
            		f_SendINVITE(m_INVITE_Request_UE(
            			vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via, 
            			vc_contact, 
            			omit, 
            			vc_route, 
            			m_Supported_100rel_prec, 
            			m_MBody_SDP(v_sdp)
            		));
            		
            		// await 183 response with 
            		// 100rel in require header field
            		// and a=curr and a=des lines present in sdp
            		f_awaitingResponse(mw_Response_messageBody(
            			c_statusLine183,
            			vc_callId, 
            			vc_cSeq,
            			mw_require_100rel,
            			mw_MBody_SDP(?)
            		));
            		
            		
            		// await 200 OK response
            		f_awaitingOkResponse(vc_cSeq);
            		
            		// send PRACK
            		f_SendPRACK(m_PRACK_Request_Base(
            			vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via,
            			vc_rAck
            		));
            		
            		// await 200 OK response
            		f_awaitingOkResponse(vc_cSeq);
            		
            		// change curr attribute
            		f_replace_curr_attribute(
            			vc_sdp_local,
            			valueof(m_attribute_curr(c_qos,c_e2e,c_send).curr)
            		);
            		
            		f_SendUPDATE(m_UPDATE_Request_Base(
            		    vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via, 
            			vc_contact, 
            			m_MBody_SDP(vc_sdp_local)
            		));
            		
            		f_awaitingUPDATE_sendReply(mw_UPDATE_Request_SDP(
            			vc_callId,
            			mw_MBody_SDP(?)
            		));
            		
            		// await 180 response without 
            		f_awaitingResponse(mw_Response_Base(
            			c_statusLine180,
            			vc_callId, 
            			vc_cSeq
            		));
            		
					// send PRACK
            		f_SendPRACK(m_PRACK_Request_Base(
            			vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via,
            			vc_rAck
            		));
            		
            		// await 200 OK PRACK response
            		f_awaitingOkResponse(vc_cSeq);
            		
            		// await 200 OK INVITE response
            		f_awaitingOkResponse(v_INVITE_CSeq);
            		
            		// send ACK
            		f_SendACK(m_ACK_Request_Base(
            			vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via
            		));
					
					// await RE-INVITE	
            		f_awaitingINVITE(mw_INVITE_Request_Base); 
            		f_sendResponse(m_Response_2xxonINVITE_UE(
            			c_statusLine200,
            			vc_callId, 
            			vc_cSeq,
            			vc_caller_From, 
            			vc_caller_To, 
            			vc_via,vc_contact,
            			f_route(),
            			valueof(m_MBody_SDP(vc_sdp_local))
            		));
            		
            		// await ACK
					f_awaitingACK(mw_ACK_Request_Base(vc_callId));
            		
            		// check media
            		f_check_Conversation();
            		
            		f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
            		
            		//SendBYE and await response
					f_terminateCall_UE(
						vc_requestUri, 
						vc_callId, 
						vc_cSeq, 
						vc_caller_From, 
						vc_caller_To
					);
            		
					f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
					
					// postamble
					f_IMS_postamble_withDeRegistration(vc_cSeq);
				} // end function f_AtsNIT_TC_SS___CN__04UE1

				/* 
				* @desc		This is the test case function (terminating side) for AtsNIT_TC_SS___CN__04
				* @param	p_CSeq_s Transaction Id
				*/
				function f_AtsNIT_TC_SS___CN__04UE2(in CSeq p_cSeq_s) runs on ImsComponent {
					f_IMS_preamble_withRegistrationBasic(c_userProfile_UE2atSUThome, p_cSeq_s); // assignment of PIXIT values to component variable
					f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict());

					// Testbody
					
            		f_awaitingINVITE(mw_INVITE_Request_require(
            			mw_require_100rel
            		)); 
            		
            		f_append_media_attribute(
            			vc_sdp_local,
                		m_attribute_conf(
    						c_qos,
    						c_e2e,
    						c_recv
    					)
					);
            		
            		// send 183 response
					f_sendResponse(m_Response_18XonINVITE_require_sdp_UE(
						c_statusLine183,
						vc_callId, 
						vc_cSeq,
						vc_caller_From, 
						vc_caller_To, 
						vc_via,
						vc_contact,
						mw_require_100rel,
						m_MBody_SDP(vc_sdp_local)
					));
					
					// await PRACK
					f_awaitingPRACK_sendReply(
						mw_PRACK_Request_Base(vc_callId)
					);
					
					// await UPDATE
					f_awaitingUPDATE_sendReply(mw_UPDATE_Request_SDP(
            			vc_callId,
            			mw_MBody_SDP(?)
            		));
            		
            		// change curr attribute
            		f_replace_curr_attribute(
            			vc_sdp_local,
            			valueof(m_attribute_curr(c_qos,c_e2e,c_sendrecv).curr)
            		);
            		
					// send UPDATE
					f_SendUPDATE(m_UPDATE_Request_Base(
            		    vc_requestUri, 
            			vc_callId, 
            			vc_cSeq, 
            			vc_from, 
            			vc_to, 
            			vc_via, 
            			vc_contact, 
            			m_MBody_SDP(vc_sdp_local)
            		));
            		
            		// await 200 OK UPDATE response
            		f_awaitingOkResponse(vc_cSeq);
            		
            		// send 180 response
            		f_sendResponse(m_Response_18XonINVITE_UE(
						c_statusLine180,
						vc_callId, 
						vc_cSeq,
						vc_caller_From, 
						vc_caller_To, 
						vc_via,
						vc_contact
					));
					
					// await Prack
					f_awaitingPRACK_sendReply(
						mw_PRACK_Request_Base(vc_callId)
					);
					
					// send 200 OK Invite
					f_send200OK(); // TODO must be checked
            		
            		// await ACK
					f_awaitingACK(mw_ACK_Request_Base(vc_callId));
					
					// send RE-INVITE
					vc_sdp_local := valueof(m_SDP_bandwidth(valueof(m_media_dynPT(PX_SIP_SDP_dyn, PX_SIP_SDP_encoding)), vc_userprofile)); // TODO check SDP
            		LibIms_Steps.f_setHeadersReINVITE(p_cSeq_s);
	 				f_SendINVITE(m_INVITE_Request_UE(
	 					vc_requestUri, 
	 					vc_callId, 
	 					p_cSeq_s, 
	 					vc_from, 
	 					vc_to, 
	 					vc_via, 
	 					vc_contact, 
	 					omit, 
	 					vc_route, 
	 					omit, 
	 					m_MBody_SDP(vc_sdp_local)
	 				));
	 				
	 				//await 200 OK response 
            	 	f_awaitingResponse(mw_Response_Base(
            	 		c_statusLine200,
            	 		vc_callId, 
            	 		vc_cSeq
            	 	));
            	 	
            	 	// send ACK
            	 	f_SendACK(m_ACK_Request_Base(
            	 		vc_requestUri, 
            	 		vc_callId, 
            	 		vc_cSeq, 
            	 		vc_from, 
            	 		vc_to, 
            	 		vc_via
            	 	));
            		
            		// check media
            		f_check_Conversation();
            		
            		f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
            		
            		//await BYE and send 200OK
					f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId));
            		
					f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict());
					
					// postamble
					f_IMS_postamble_withDeRegistration(vc_cSeq);
				} // end function f_AtsNIT_TC_SS___CN__04UE2
			
							
		} // end group TP1_1_2_BC_CodecNegotiation		
				
+48 −0
Original line number Diff line number Diff line
@@ -176,6 +176,54 @@ module AtsNIT_SipSip_Testcases {
            		f_cf_2imsDown(v_imsComponent1, v_imsComponent2);
            	} // end TC_SS___CN__02
            	
            	
                /*
            	 * @desc TC_SS___CN__03
            	 * @param p_CSeq_s Transaction Id
            	 */
            	testcase TC_SS___CN__03(inout CSeq p_CSeq_s) 
            	runs on ServerSyncComp
            	system TestAdapter {
            		//Variables
            		var ImsComponent      v_imsComponent1;
              		var ImsComponent      v_imsComponent2;
            		f_cf_2imsUp(v_imsComponent1, v_imsComponent2);
            		f_IncCSeq(p_CSeq_s); 
            
            		//Start
            		v_imsComponent1.start(f_AtsNIT_TC_SS___CN__03UE1(p_CSeq_s));
            		v_imsComponent2.start(f_AtsNIT_TC_SS___CN__03UE2(p_CSeq_s));
            		
            		// synchronize both PTCs on 4 sychronization points
            		f_serverSync2ClientsAndStop({c_prDone, c_Ringing, c_uPlane, c_tbDone});
                    
            		f_cf_2imsDown(v_imsComponent1, v_imsComponent2);
            	} // end TC_SS___CN__03
            	
            	
                /*
            	 * @desc TC_SS___CN__04
            	 * @param p_CSeq_s Transaction Id
            	 */
            	testcase TC_SS___CN__04(inout CSeq p_CSeq_s) 
            	runs on ServerSyncComp
            	system TestAdapter {
            		//Variables
            		var ImsComponent      v_imsComponent1;
              		var ImsComponent      v_imsComponent2;
            		f_cf_2imsUp(v_imsComponent1, v_imsComponent2);
            		f_IncCSeq(p_CSeq_s); 
            
            		//Start
            		v_imsComponent1.start(f_AtsNIT_TC_SS___CN__04UE1(p_CSeq_s));
            		v_imsComponent2.start(f_AtsNIT_TC_SS___CN__04UE2(p_CSeq_s));
            		
            		// synchronize both PTCs on 4 sychronization points
            		f_serverSync2ClientsAndStop({c_prDone, c_Ringing, c_uPlane, c_tbDone});
                    
            		f_cf_2imsDown(v_imsComponent1, v_imsComponent2);
            	} // end TC_SS___CN__04
    		 			
    		} // end group TP1_1_2_BC_CodecNegotiation		
    				
    		group TP1_1_3_BC_UPDATE {