Commit d44d6763 authored by Yann Garcia's avatar Yann Garcia
Browse files

Merge branch 'TTF010' of https://forge.etsi.org/rep/int/vxlte/emergency-iop into TTF010

parents f57b2a27 a402785b
Loading
Loading
Loading
Loading
+51 −1
Original line number Original line Diff line number Diff line
@@ -21,7 +21,7 @@ module AtsImsIot_Diameter_Templates {
    import from LibDiameter_Types_Gx_AVPs all;
    import from LibDiameter_Types_Gx_AVPs all;
    import from LibDiameter_Types_Rx_AVPs all;
    import from LibDiameter_Types_Rx_AVPs all;
    import from LibDiameter_Types_CxDx_AVPs all;
    import from LibDiameter_Types_CxDx_AVPs all;
    import from LibDiameter_Types_S6a_AVPs {type Cancellation_Type_AVP, Cancellation_Type_Code};
    import from LibDiameter_Types_S6a_AVPs {type Cancellation_Type_AVP, Cancellation_Type_Code, Subscription_Data_AVP};
    import from LibDiameter_Types_S9_AVPs all;
    import from LibDiameter_Types_S9_AVPs all;


    group DiameterHeaderFields {
    group DiameterHeaderFields {
@@ -387,6 +387,13 @@ module AtsImsIot_Diameter_Templates {
                final_unit_action := *
                final_unit_action := *
             }
             }
            
            
			template User_Equipment_Info_AVP mw_userEquipmentInfo_IMEI:=
			{
				aVP_Header := mw_aVP_Header_any_Code(458/*c_User_Equipment_Info_code*/),
		        user_Equipment_Info_Type := {aVP_Header := ?/*459*/, aVP_Data   := IMEISV_E/*0*/ },
                user_Equipment_Info_Value := ?
			}
            
        } //end group GxHeaderFields
        } //end group GxHeaderFields
        
        
        group S6aHeaderFields{
        group S6aHeaderFields{
@@ -396,6 +403,10 @@ module AtsImsIot_Diameter_Templates {
                cancellation_Type   := p_cancellation_Type
                cancellation_Type   := p_cancellation_Type
            } // End of template m_cancellationType
            } // End of template m_cancellationType
            
            
            template Subscription_Data_AVP mw_subscriptionData_emergencyInfo:= {
				aVP_Header := mw_aVP_Header_any_Code(c_subscription_Data_AVP_Code),
				emergency_Info := ?
            }
        } //end group S6aHeaderFields
        } //end group S6aHeaderFields
        
        
        
        
@@ -1004,6 +1015,38 @@ module AtsImsIot_Diameter_Templates {
                    }
                    }
                }
                }


				template CCR_MSG mw_CCR_SubscriberIMSI_qosInformation_class5_ES(CC_Request_Ty_Type p_avpData) modifies mw_CCR_basic := {
					cCR_Body :={
						cC_Request_Type        := mw_cC_Request_Type(p_avpData),
						subscription_Id        := {*,mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
						iP_CAN_Type            := ?,
						rat_Type               := ?,
						called_Station_Id      := ?,
						pDN_Connection_ID      := *,
						framed_IP_Address      := ?,
						//framed_IPv6_Prefix     := *,
						//bearer_Usage           := mw_bearer_Usage(IMS_SIGNALLING_E),
						qoS_Information        := mw_qoS_Information,
						default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5
					}
				}
				template CCR_MSG mw_CCR_SubscriberIMEI_qosInformation_class5_ES(CC_Request_Ty_Type p_avpData) modifies mw_CCR_basic := {
					cCR_Body :={
						cC_Request_Type        := mw_cC_Request_Type(p_avpData),
						//subscription_Id        := {*,mw_subscription_Id(mw_subscription_Id_Type(END_USER_IMSI_E))},
						user_Equipment_Info    := mw_userEquipmentInfo_IMEI,
						iP_CAN_Type            := ?,
						rat_Type               := ?,
						called_Station_Id      := ?,
						pDN_Connection_ID      := *,
						framed_IP_Address      := ?,
						//framed_IPv6_Prefix     := *,
						//bearer_Usage           := mw_bearer_Usage(IMS_SIGNALLING_E),
						qoS_Information        := mw_qoS_Information,
						default_EPS_Bearer_QoS := mw_default_EPS_Bearer_QoS_Class_5
					}
				}
				
                template RAR_MSG mw_RAR_ChargingRuleInstall(template Charging_Rule_Install_AVP p_Charging_Rule_Install) modifies mw_RAR_Gx_basic := {
                template RAR_MSG mw_RAR_ChargingRuleInstall(template Charging_Rule_Install_AVP p_Charging_Rule_Install) modifies mw_RAR_Gx_basic := {
                    rAR_Body :={
                    rAR_Body :={
                        charging_Rule_Install := {p_Charging_Rule_Install}
                        charging_Rule_Install := {p_Charging_Rule_Install}
@@ -1161,6 +1204,13 @@ module AtsImsIot_Diameter_Templates {
                        ula_Flags := ?
                        ula_Flags := ?
                    }
                    }
                }
                }
				template ULA_MSG mw_ULA_subsdata_flags modifies mw_ULA_resultCode_flags := {
					uLA_Body :={
						//result_Code := mw_resultCode(mw_resultCode_diameterSuccess),
						//ula_Flags := ?
						subscription_Data :=mw_subscriptionData_emergencyInfo
					}
				}
                
                
            }// end group S6aRequestMessageTemplates
            }// end group S6aRequestMessageTemplates
        }//end group S6aMessageTemplates
        }//end group S6aMessageTemplates
+47 −3
Original line number Original line Diff line number Diff line
@@ -79,8 +79,8 @@ module AtsImsIot_Emergency {
						// test body
						// test body
						// Check that user A starts initial network attachment
						// Check that user A starts initial network attachment
						f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
						f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
						f_mtc_check_TP_S6A_HSS_ULA_01 ( vc_vxlte_monitor_components.s6a);        // Check (ULA – Event 3) 
						f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a);        // Check (ULA – Event 3) 
						f_mtc_check_TP_GX_PCRF_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5)
						f_mtc_check_TP_GX_PCRF_ECO_CCA_01 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5)
        
        
						// postamble
						// postamble
						f_mtc_userRadioEnabled ( v_ueA, false, true );
						f_mtc_userRadioEnabled ( v_ueA, false, true );
@@ -93,11 +93,55 @@ module AtsImsIot_Emergency {
						//log...
						//log...
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
					}
					}
				} // End of TC TC_VxLTE_INT_ATT_01
				} // End of TC TC_VoLTE_ECO_INT_ATT_01
            } // End of group UENetworkAttachmentWithUSIM
            } // End of group UENetworkAttachmentWithUSIM


            group UENetworkAttachmentWithoutUSIM {
            group UENetworkAttachmentWithoutUSIM {
				/**
				 * @desc    Emergency Network Attachment and Establishment of the Emergency Bearer without USIM.
				 * On successful emergency attachment, the UE/IVS should discover the P-CSCF IP address.
				 * The EPC will create the Emergency Bearers which will allow communication only between the UE and the P-CSCF
				 * and allowed forwarding towards E-CSCF
				 * @see TS 124 229 [2], clause 9.2.1 and L.2.2.6; TS 129 212 [7], clauses 4.5.15 and 4a.5.12; 
				 * TS 129 272 [8], clause 5.2.1.1 (MME shall proceed even if Update Location fails)
				 * 
				 */
				testcase TC_VoLTE_ECO_INT_ATT_02 ( ) runs on ImsTestCoordinator system IotSystemInterface {

					var IotEquipmentUser v_ueA    := f_cf_create_IotEquipmentUser ( c_userUE_A );
					var ImsUserInfo v_userInfoA    := f_getImUser ( PX_EUT_A );

					f_setVxLteMonIterfacesAvailability();
					//Check required monitor interfaces due to TD
					if (f_checkVxLteRequiredMonitorInterface({PX_DIAMETER_GX_INTERFACENAME,PX_DIAMETER_S6A_INTERFACENAME})){
						f_cf_createVxLteMonitor();    


						// map/connect component ports
						f_cf_adapter_up ( );
						f_cf_user_up ( v_ueA );
						f_cf_VxLteMonitor_Up();

						// preamble
						f_mtc_userRadioEnabled ( v_ueA, true, true ); // UA-A trigger an initial network_attachment by enabling radio interface of its mobile

						// test body
						// Check that user A starts initial network attachment
						f_mtc_check_TP_S6A_MME_ULR_01 ( vc_vxlte_monitor_components.s6a, true ); // Check (ULR – Event 2)
						f_mtc_check_TP_S6A_HSS_ECO_ULA_01 ( vc_vxlte_monitor_components.s6a);        // Check (ULA – Event 3) 
						f_mtc_check_TP_GX_PCRF_ECO_CCA_02 ( vc_vxlte_monitor_components.gx); // Check (CCR, CCA – Events 4, 5)

						// postamble
						f_mtc_userRadioEnabled ( v_ueA, false, true );

						//unmap/disconnect component ports
						f_cf_user_down ( v_ueA );
						f_cf_VxLteMonitor_Down();
						f_cf_adapter_down ( );
					}else{
						//log...
						setverdict (inconc,"At least one required monitor interface SHALL be selected! Check PIXITs")
					}
				} // End of TC TC_VoLTE_ECO_INT_ATT_02
            } // End of group UENetworkAttachmentWithoutUSIM
            } // End of group UENetworkAttachmentWithoutUSIM


        } // End of group NetworkAttachment
        } // End of group NetworkAttachment
+185 −1
Original line number Original line Diff line number Diff line
@@ -463,7 +463,8 @@ group g_PGW {
        }
        }
    } // End of function f_mtc_check_TP_GX_PGW_RAA_04
    } // End of function f_mtc_check_TP_GX_PGW_RAA_04



	group ES{
	} //end group ES
} // end group g_PGW
} // end group g_PGW


group g_PCRF {
group g_PCRF {
@@ -1106,7 +1107,190 @@ group g_PCRF {
        }
        }
    } // End of function f_mtc_check_TP_GX_PCRF_RAR_04
    } // End of function f_mtc_check_TP_GX_PCRF_RAR_04


    group ES{

		/**
		 * Starts monitor component behavior for TP_GX_PCRF_ECO_CCA_01
		 * @param p_monitorCompRef Reference to monitor component
		 * <pre>
		 Test objective  "Verify that IUT when receives CC-Request for PCC Rules containing IMSI for emergency services sends a CC-Answer in case of attachment procedure."
        
        Reference 
            "TS 129 212 [9], clauses 4.5.15.2.1"
        
        Config Id CF_VoLTE_INT_ES
        
        PICS Selection NONE
        
        Initial conditions with {
            the UE_A entity isNotAttachedTo the EPC_A and
            the UE_A entity isNotRegisteredTo the IMS_A
        }
        
        Expected behaviour
            ensure that {
                when {
                    the EPC_PGW_A entity sends an CCR containing
                        CC_Request_Type_AVP indicating value INITIAL_REQUEST
                        Subscription_Id_AVP containing
                            Subscription_Id_Type_AVP
                                indicating value END_USER_IMSI;,
                        IP_CAN_Type_AVP indicating value RestrictedToEmergencyServices,
                        RAT_Type_AVP,
                        Called_Station_Id_AVP indicating value "Emergency_APN"
                        Framed_IP_Address_AVP
                        "or" Framed_IP6_IP_Address_AVP
                        QoS_Information_AVP
                        Default_EPS_Bearer_QoS_AVP containing
                            QoS_Class_Identifier_AVP
                                indicating value '5'
                            Allocation_Retention_Priority_AVP containing
                                Priority_Level_AVP
                                Pre_emption_Capablity_AVP
                                Pre_emption_Vulnerability_AVP;;;
                    to the EPC_PCRF_A entity
                }
                then {
                    the EPC_PCRF_A entity sends the CCA containing
                        Result_Code_AVP
                            indicating value DIAMETER_SUCCESS;
                    to the EPC_PGW_A entity
                }
            }
		 * </pre>
		 * @see TS 103 653-1 clause 7.7
		 */
		function f_mtc_check_TP_GX_PCRF_ECO_CCA_01(
			DiameterInterfaceMonitor p_monitorCompRef,
			in boolean p_checkMessage := false,
			in boolean p_forward_to_mtc := false
		) runs on ImsTestCoordinator {
			if (isvalue(p_monitorCompRef)){
				p_monitorCompRef.start (
					f_Iot_Diameter_receive(
						{
							DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMSI_qosInformation_class5_ES(INITIAL_REQUEST_E) }
						},
						{
							DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic }
						},
						{0, omit},
						"TP_RX_PCRF_ECO_CCA_01 - CCR",
						p_forward_to_mtc,
						p_checkMessage 
					)
				);
				p_monitorCompRef.done;
            
				p_monitorCompRef.start (
					f_Iot_Diameter_receive(
						{
							DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode }
						},
						{
							DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
						},
						{0, omit},
						"TP_RX_PCRF_ECO_CCA_01 - CCA",
						p_forward_to_mtc,
						p_checkMessage 
					)
				);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_01
		
		/**
		 * Starts monitor component behavior for TP_GX_PCRF_ECO_CCA_02
		 * @param p_monitorCompRef Reference to monitor component
		 * <pre>
		 Test objective  "Verify that IUT when receives CC-Request for PCC Rules containing IMEI for emergency services sends a CC-Answer in case of attachment procedure."
        
        Reference 
            "TS 129 212 [9], clauses 4.5.15.2.1"
        
        Config Id CF_VxLTE_INT
        
        PICS Selection NONE
        
        Initial conditions with {
            the UE_A entity isNotAttachedTo the EPC_A and
            the UE_A entity isNotRegisteredTo the IMS_A
        }
        
        Expected behaviour
            ensure that {
                when {
                    the EPC_PGW_A entity sends an CCR containing
                        CC_Request_Type_AVP indicating value INITIAL_REQUEST,
                        User_Equipment_Info_AVP containing
                             User_Equipment_Info_Type_AVP indicating value IMEISV
                             User_Equipment_Info_Value_AVP;,
                        IP_CAN_Type_AVP indicating value RestrictedToEmergencyServices,
                        RAT_Type_AVP,
                        Called_Station_Id_AVP indicating value "Emergency_APN"
                        Framed_IP_Address_AVP
                        "or" Framed_IP6_IP_Address_AVP
                        QoS_Information_AVP
                        Default_EPS_Bearer_QoS_AVP containing
                            QoS_Class_Identifier_AVP
                                indicating value '5'
                            Allocation_Retention_Priority_AVP containing
                                Priority_Level_AVP
                                Pre_emption_Capablity_AVP
                                Pre_emption_Vulnerability_AVP;;;
                    to the EPC_PCRF_A entity
                }
                then {
                    the EPC_PCRF_A entity sends the CCA containing
                        Result_Code_AVP
                            indicating value DIAMETER_SUCCESS;
                    to the EPC_PGW_A entity
                }
            }
		 * </pre>
		 * @see TS 103 653-1 clause 7.7
		 */
		function f_mtc_check_TP_GX_PCRF_ECO_CCA_02(
			DiameterInterfaceMonitor p_monitorCompRef,
			in boolean p_checkMessage := false,
			in boolean p_forward_to_mtc := false
		) runs on ImsTestCoordinator {
			if (isvalue(p_monitorCompRef)){
				p_monitorCompRef.start (
					f_Iot_Diameter_receive(
						{
							DIAMETER_MSG:{ cCR_MSG := mw_CCR_SubscriberIMEI_qosInformation_class5_ES(INITIAL_REQUEST_E) }
						},
						{
							DIAMETER_MSG:{ cCR_MSG := mw_CCR_basic }
						},
						{0, omit},
						"TP_RX_PCRF_ECO_CCA_02 - CCR",
						p_forward_to_mtc,
						p_checkMessage 
					)
				);
				p_monitorCompRef.done;
    
    
				p_monitorCompRef.start (
					f_Iot_Diameter_receive(
						{
							DIAMETER_MSG:{ cCA_MSG := mw_CCA_resultCode }
						},
						{
							DIAMETER_MSG:{ cCA_MSG := mw_CCA_basic }
						},
						{0, omit},
						"TP_RX_PCRF_ECO_CCA_02 - CCA",
						p_forward_to_mtc,
						p_checkMessage 
					)
				);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_GX_PCRF_ECO_CCA_02
    } //end group ES
} // end group g_PCRF
} // end group g_PCRF




+83 −1
Original line number Original line Diff line number Diff line
@@ -97,6 +97,8 @@ group g_HSS {
            );
            );
            p_monitorCompRef.done;
            p_monitorCompRef.done;
        }
        }
        

    } // End of function f_mtc_check_TP_S6A_HSS_AIA_01
    } // End of function f_mtc_check_TP_S6A_HSS_AIA_01
    
    
    /**
    /**
@@ -371,7 +373,84 @@ group g_HSS {
        }
        }
    } // End of function f_mtc_check_TP_S6A_HSS_ULA_02
    } // End of function f_mtc_check_TP_S6A_HSS_ULA_02


	group ES{
		/**
		 * Starts monitor component behavior for TP_S6A_HSS_ECO_ULA_01
		 * @param p_monitorCompRef Reference to monitor component
		 * <pre>
		 *Test objective  "Verify that IUT after receipt of UL-Request sends UL-Answer containing Emergency-Info AVP."
         *
         *Reference 
         *   "TS 129 272 [10], clause 5.2.1.1.2"
        
         *Config Id CF_VxLTE_INT_ES
        
        
         *PICS Selection NONE
        
         *Initial conditions with {
         *   the UE_A entity isNotAttachedTo the EPC_A and
         *   the UE_A entity isNotRegisteredTo the IMS_A
         *}
         *
         *Expected behaviour
         *   ensure that {
         *       when {
         *           the EPC_MME_A entity sends a ULR
         *           to the IMS_HSS_A entity
         *       }
         *       then {
         *           the IMS_HSS_A entity sends the ULA containing
         *               Subscription_Data_AVP containing
         *                   Emergency_Info_AVP indicating value PDN_GW;,
         *               Result_Code_AVP
         *                   indicating value DIAMETER_SUCCESS
         *               ULA_Flags_AVP;
         *           to the EPC_MME_A entity
         *       }
         *   } 
		 * </pre>
		 */
		function f_mtc_check_TP_S6A_HSS_ECO_ULA_01(
			DiameterInterfaceMonitor p_monitorCompRef,
			in boolean p_checkMessage := false,
			in boolean p_forward_to_mtc := false
		) runs on ImsTestCoordinator {
			if (isvalue(p_monitorCompRef)){
//				p_monitorCompRef.start (
//					f_Iot_Diameter_receive(
//						{
//							DIAMETER_MSG:{ uLR_MSG := mw_ULR_userName }
//						},
//						{
//							DIAMETER_MSG:{ uLR_MSG := mw_ULR_basic }
//						},
//						{0, omit},
//						"TP_S6A_HSS_ULA_01 - ULR",
//						p_forward_to_mtc,
//						p_checkMessage 
//					)
//				);
//				p_monitorCompRef.done;
            
				p_monitorCompRef.start (
					f_Iot_Diameter_receive(
						{
							DIAMETER_MSG:{ uLA_MSG := mw_ULA_subsdata_flags }
						},
						{
							DIAMETER_MSG:{ uLA_MSG := mw_ULA_basic }
						},
						{0, omit},
						"TP_S6A_HSS_ECO_ULA_01 - ULA",
						p_forward_to_mtc,
						p_checkMessage 
					)
				);
				p_monitorCompRef.done;
			}
		} // End of function f_mtc_check_TP_S6A_HSS_ECO_ULA_01
		    
	}// end group ES
} // end group g_HSS
} // end group g_HSS


group g_MME {
group g_MME {
@@ -675,6 +754,9 @@ group g_MME {
        }
        }
    } // End of function f_mtc_check_TP_S6A_MME_ULR_02
    } // End of function f_mtc_check_TP_S6A_MME_ULR_02


  group ES{
	    
  }// end group ES


} // end group g_MME
} // end group g_MME


+1 −0
Original line number Original line Diff line number Diff line
@@ -124,6 +124,7 @@ module AtsImsIot_TestSystem {
			SipInterfaceMonitor gmB 	optional,
			SipInterfaceMonitor gmB 	optional,
			SipInterfaceMonitor mmB_PSAP  optional,// MmMx interface at IBCF to PSAP
			SipInterfaceMonitor mmB_PSAP  optional,// MmMx interface at IBCF to PSAP
			SipInterfaceMonitor mwEB      optional,// Mw interface at E-CSCF/IBCF 
			SipInterfaceMonitor mwEB      optional,// Mw interface at E-CSCF/IBCF 
			SipInterfaceMonitor mlE_LRF   optional,// Ml interface at E-CSCF/LRF
			SipInterfaceMonitor mwS_PSAP  optional,// MwMmMx interface at E,SCSCF to PSAP
			SipInterfaceMonitor mwS_PSAP  optional,// MwMmMx interface at E,SCSCF to PSAP
			SipInterfaceMonitor ic      optional,
			SipInterfaceMonitor ic      optional,
			SipInterfaceMonitor mwPI    optional,// Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used
			SipInterfaceMonitor mwPI    optional,// Mw interface at P-CSCF/I-CSCF or P-CSCF/S-CSCF if I-CSCF not used
Loading