S1AP_TCFunctions.ttcn 193 KB
Newer Older
garciay's avatar
garciay committed
                    m_deactivate_TraceIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        PX_EUTRAN_TRACE_ID
                ));
                
                f_recv_Trace_Failure_Indication(
                    mw_trace_Failure_IndicationIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        PX_EUTRAN_TRACE_ID,
                        - // TODO To be refined
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_initiate_deactivateTrace();
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_TRP_02
garciay's avatar
garciay committed
            
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_TRP_03
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_TRP_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_initiate_traceStart();
                
                f_recv_Cell_Traffic_Trace(
                    mw_cell_Traffic_TraceIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
                        PX_EUTRAN_TRACE_ID,
                        mw_eUTRAN_CGI,
                        - // TODO To be refined
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_initiate_deactivateTrace();
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_TRP_03
garciay's avatar
garciay committed
        } // End of group Trace_group
        
        /**
         * @desc Warning message transmission group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.11  Location reporting group
         */
        group Location_reporting_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_01
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            direct,
                            PX_REPORT_AREA
                )));
                
                f_recv_Location_Report(
                    mw_location_ReportIEs(
                        ?,
                        ?,
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_request_Type(
                            direct,
                            PX_REPORT_AREA
                )));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_LRP_01
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_02
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_02() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                
                fx_move_UE_to_new_cell(); // when UE changes to new cell
                
                f_recv_Location_Report(
                    mw_location_ReportIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_request_Type(
                            change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_LRP_02
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_03
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_03() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            stop_change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                
                fx_check_UE_stops_reporting(); // when UE stop reporting at change of serving cell
                
                f_recv_Location_Report(
                    mw_location_ReportIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        mw_eUTRAN_CGI(
                            PX_PLMN_IDENTITY, 
                            PX_CELL_ID
                        ),
                        mw_TAI(
                            PX_PLMN_IDENTITY, 
                            PX_TAC
                        ),
                        mw_request_Type(
                            stop_change_of_serve_cell,
                            PX_REPORT_AREA
                )));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_LRP_03
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LRP_04
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LRP_04() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged, and a handover procedure is initiated.
                f_rABSetupRequest();
                f_initiate_handover();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Location_Reporting_Control(
                    m_location_Reporting_ControlIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        m_request_Type(
                            PX_EVENT_TYPE,
                            PX_REPORT_AREA
                )));
                
                f_recv_Location_Report_Failure_Indication(
                    mw_location_Report_Failure_IndicationIEs(
                        vc_MME_UE_ID,
garciay's avatar
garciay committed
                        vc_eNB_UE_ID,
garciay's avatar
garciay committed
                        ? // TODO To be refined: what kind of cause :-(
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_LRP_04
garciay's avatar
garciay committed
            
        } // End of group Location_reporting_group
        
        /**
         * @desc Warning message transmission group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.12 Warning message transmission group
         */
        group Warning_message_transmission_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_01
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Write_Replace_Warning_Request(
                    m_write_Replace_Warning_RequestIEs(
                        PX_MESSAGE_IDENTIFIER,
                        PX_SERIAL_NUMBER,
                        PX_REPETITION_PERIOD, 
                        PX_NUMBER_OF_BROADCASTS_REQUESTED
                ));
                
                f_recv_Write_Replace_Warning_Response(
                    mw_write_Replace_Warning_ResponseIEs(
                        ?,
                        ?
                ));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_WTP_01
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_02
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_02() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Kill_Request(
                    m_kill_RequestIEs(
                        PX_MESSAGE_IDENTIFIER,
                        PX_SERIAL_NUMBER
                ));
                
                f_recv_Kill_Response(
                    mw_kill_ResponseIEs(
                        ?,
                        ?
                ));
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_WTP_02
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_03
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_03() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a PWS Restart Indication procedure
garciay's avatar
garciay committed
                if (fx_eNB_PWS_Restart_Indication_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PWS_RESTART_INDICATION
                    f_recv_eNB_PWS_Restart_Indication(
                        mw_pWS_Restart_IndicationIEs( 
                            { 
                                mw_eUTRAN_CGI(
                                    PX_PLMN_IDENTITY, 
                                    PX_CELL_ID
                                ) 
                            },
garciay's avatar
garciay committed
                            mw_Global_eNB_ID(
garciay's avatar
garciay committed
                                PX_PLMN_IDENTITY, 
garciay's avatar
garciay committed
                                PX_eNB_ID
garciay's avatar
garciay committed
                            ),
                            { 
                                mw_TAI(
                                    PX_PLMN_IDENTITY, 
                                    PX_TAC
                                ) 
                            },
                            { PX_EMERGENCY_AREA_ID }
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_WTP_03
garciay's avatar
garciay committed
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_WTP_04
garciay's avatar
garciay committed
             */
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_WTP_04() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a PWS Failure Indication procedure
garciay's avatar
garciay committed
                if (fx_eNB_PWS_Failure_Indication_procedure() == false) {
garciay's avatar
garciay committed
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PWS_FAILURE_INDICATION
                    f_recv_eNB_PWS_Failure_Indication(
                        mw_pWS_Failure_IndicationIEs( 
                            { 
                                mw_eUTRAN_CGI(
                                    PX_PLMN_IDENTITY, 
                                    PX_CELL_ID
                                ) 
                            },
garciay's avatar
garciay committed
                            mw_Global_eNB_ID(
garciay's avatar
garciay committed
                                PX_PLMN_IDENTITY, 
garciay's avatar
garciay committed
                                PX_eNB_ID
garciay's avatar
garciay committed
                            )
                    ));
                }
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_WTP_04
garciay's avatar
garciay committed
            
        } // End of group Warning_message_transmission_group
        
        /**
         * @desc eNB direct information transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.13  eNB direct information transfer group
         */
        group ENB_direct_information_transfer_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_EIT_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_EIT_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an ENB Direct Information Transfer procedure
garciay's avatar
garciay committed
                if (fx_eNB_Direct_Information_Transfer_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a ENB_DIRECT_INFORMATION_TRANSFER
                    f_recv_eNB_Direct_Information_Transfer(
                        mw_eNBDirectInformationTransfer_EDT(
                            mw_Inter_SystemInformationTransferType(
                                mw_RIMTransfer(
                                    ? // FIXME To be refined
                    ))));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_EIT_01
            
        } // End of group ENB_direct_information_transfer_group
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.14  MME direct information transport group
         */
        group MME_direct_information_transfer_group {
garciay's avatar
garciay committed
            // Void
        } // End of group MME_direct_information_transfer_group
garciay's avatar
garciay committed
         * @desc eNB configuration transfer group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.15  eNB configuration transfer group
         */
        group ENB_configuration_transfer_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_ECT_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_ECT_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an ENB Configuration Transfer procedure
garciay's avatar
garciay committed
                if (fx_eNB_Configuration_Transfer_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a ENB_CONFIGURATION_TRANSFER
                    f_recv_eNB_Direct_Information_Transfer(
                        mw_sON_Configuration_Transfer_ECT(
                            mw_sON_Configuration_Transfer(
garciay's avatar
garciay committed
                                mw_TargeteNB_ID(mw_Global_eNB_ID, mw_TAI),
                                mw_SourceeNB_ID(mw_Global_eNB_ID, mw_TAI),
                                ? // FIXME To be refined
                    )));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_ECT_01
            
        } // End of group ENB_configuration_transfer_group 
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.16  MME configuration transport group
         */
        group MME_configuration_transfer_group {
garciay's avatar
garciay committed
            // Void
        } // End of group MME_configuration_transfer_group
        /**
         * @desc LPPa transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.17  LPPa transport group
         */
        group LPPa_transport_group {
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LPP_01
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LPP_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a LPPa Transport procedure using a UE associated signalling
                if (fx_eNB_LPPa_Transport_procedure_ind(true) == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a UPLINK_UE_ASSOCIATED_LPPA_TRANSPORT
                    f_recv_Uplink_UE_Associated_Lppa_Transport(
                        mw_UplinkUEAssociatedLppaTransportIEs_LPPa_PDU(
                            ?
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_LPP_01
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_LPP_02
garciay's avatar
garciay committed
            function f_TC_S1AP_eNB_LPP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_enb_init();
                // Preamble action: E-RAB Setup is exchanged
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a LPPa Transport procedure using a UE associated signalling
                if (fx_eNB_LPPa_Transport_procedure_ind(false) == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a UPLINK_NONE_UE_ASSOCIATED_LPPA_TRANSPORT
                    f_recv_Uplink_Non_UE_Associated_Lppa_Transport(
                        mw_UplinkNonUEAssociatedLppaTransportIEs_LPPa_PDU(
                            ?
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_eNB();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_eNB_LPP_02
         * @desc Unknown, Unforseen and Erroneous Protocol Data
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.18  Unknown, Unforseen and Erroneous Protocol Data
         */
        group Unknown_unforseen_errorneous_group {
        } // End of group Unknown_unforseen_errorneous_group
garciay's avatar
garciay committed
    } // End of group eNB_Role
garciay's avatar
garciay committed
    group MME_Role {
        
        /**
         * @desc E-RAB management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.1.2  E-RAB management group
         */
garciay's avatar
garciay committed
        group ERAB_management_group { 
            
            /**
garciay's avatar
garciay committed
             * @desc Testcase function for TC_S1AP_eNB_RAB_01
garciay's avatar
garciay committed
             */
            function f_TC_S1AP_MME_RAB_01() runs on S1APComponent { 
garciay's avatar
garciay committed
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                
                f_recv_E_RABSetupRequest(superset (all from mw_E_RABSetupReqIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    ?
                )));
garciay's avatar
garciay committed
                
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
garciay's avatar
garciay committed
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
garciay's avatar
garciay committed
            } // End of function f_TC_S1AP_MME_RAB_01
garciay's avatar
garciay committed
            
        } // End of group ERAB_management_group
        /**
         * @desc Context management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.3  Context management group
         */
        group Context_management_group {
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_01
             */
            function f_TC_S1AP_mME_CMP_01() runs on S1APComponent { 
                // Local variables
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                action("trigger an Initial Context Setup procedure");

                f_recv_InitialContext_SetupRequest(mw_InitialContextSetupRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    mw_UEAggregateMaximumBitrate(?,?),
                    {
                        mw_E_RABToBeSetupItemCtxtSUReq(?,mw_e_RABlevelQoSParameters(5),?,?,?,omit)
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            } // End of function f_TC_S1AP_eNB_CMP_01
            /**
             * @desc Testcase function for TC_S1AP_mME_CMP_02
             */
            function f_TC_S1AP_mME_CMP_02() runs on S1APComponent { 
                // Local variables
                var template(value) Cause v_cause;
                select(PX_VA){
                    case(1){v_cause := m_cause_ran(user_inactivity)}
                    case(2){v_cause := m_cause_ran(radio_connection_with_ue_lost)}
                    case(3){v_cause := m_cause_nas(csg_subscription_expiry)}
                    case(4){v_cause := m_cause_ran(cs_fallback_triggered)}
                    case(5){v_cause := m_cause_ran(redirection_towards_1xRTT)}
                    case(6){v_cause := m_cause_ran(interrat_redirection)}
                    case(7){v_cause := m_cause_ran(ue_not_available_for_ps_service)}
                    case else {setverdict(fail, "undefined PIXIT value for variant")}
                }
                                
                // Preamble
                f_S1AP_mme_init();
                
                f_rABSetupRequest();
                
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body

                f_send_UE_Context_Release_Command(m_UeContextReleaseRequestIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID,
                    v_cause
                    ));
                    
                f_recv_InitialContext_SetupRequest((mw_UeContextReleaseCommandIEs_MME, mw_UeContextReleaseCommandIEs_ENB));                
                
                // Postamble
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 

                f_send_UE_Context_Release_Complete(m_UeContextReleaseCompleteIEs(
                    vc_MME_UE_ID,
                    vc_eNB_UE_ID
                    ));
                
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_eNB_CMP_02
        } // End of group Context_management_group
        /**
         * @desc Handover signalling group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.4  Handover signalling group
         */
        group Handover_signalling_group {
        } // End of group Handover_signalling_group
        /**
         * @desc Paging group
         * @see ETSI TS 103 497-2 Clause 5.2.2.2.5  Paging group
        group Pagin_group {
            /**
             * @desc Testcase function for TC_S1AP_MME_PAG_01
             */
            function f_TC_S1AP_MME_PAG_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Paging procedure
                if (fx_MME_Paging_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a PAGING
                    f_recv_Paging(
                        mw_pagingIEs(
                            PX_UE_IDENTITY_INDEX_VALUE,
                            mw_uEPagingID_iMSI(
                                PX_IMSI
                            ),
                            PX_CNDOMAIN,
                            - // TODO To be refined
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_PAG_01
            
        } // End of group Pagin_group
        
        /**
         * @desc NAS transport group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.6  NAS transport group
         */
        group NAS_transport_group {
            /**
             * @desc Testcase function for TC_S1AP_MME_NAS_01
             */
            function f_TC_S1AP_MME_NAS_01() runs on S1APComponent { 
                // Local variables
                // Preamble
                f_S1AP_mme_init();
                // Preamble action: E-RAB Setup is exchanged.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                // Test body
                // 1. to indicate an ongoing NAS Transport procedure
                if (fx_MME_Downlink_NAS_Transport_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a DOWNLINK_NAS_TRANSPORT
                    f_recv_Downlink_NAS_Transport(
                        mw_downlink_nAS_TransportIEs(
                            vc_MME_UE_ID,
                            vc_eNB_UE_ID,
                            -
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_NAS_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_NAS_02
             */
            function f_TC_S1AP_MME_NAS_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                // Preamble action: E-RAB Setup is exchanged, and a NAS procedure is initiated.
                f_rABSetupRequest();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Reroute NAS Request procedure
                if (fx_MME_Reroute_NAS_Request_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a REROUTE_NAS_REQUEST
                    f_recv_Reroute_NAS_Request(
                        mw_reroute_nAS_RequestIEs(
                            vc_MME_UE_ID,
                            -,
                            PX_MME_GROUP_ID
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_rABSetupRelease();
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_NAS_02
            
        } // End of group NAS_transport_group
garciay's avatar
garciay committed
        
garciay's avatar
garciay committed
        /**
         * @desc Management group
         * @see ETSI DTS/INT-00135-2 Clause 5.2.2.2.7 Management group
         */
        group Management_group {
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_01
             */
            function f_TC_S1AP_MME_MNP_01() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate a Reset procedure initiated from the MME
                if (fx_MME_Reset_procedure() == false) {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error); 
                } else {
                    // 2. sends a RESET
                    f_recv_Reset(
                        mw_resetIEs(
                            mw_cause_nas(
                                unspecified // TODO Check the value to be used
                            ),
                            m_resetType_all
                    ));
                    f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                }
                
                // Postamble
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_MNP_01
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_02
             */
            function f_TC_S1AP_MME_MNP_02() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
                            unspecified // TODO Check the value to be used
                        ),
                        m_resetType_all
                ));
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
garciay's avatar
garciay committed
                                    vc_eNB_UE_ID
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
                
                // Postamble
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_MNP_02
            
garciay's avatar
garciay committed
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_03
             */
            function f_TC_S1AP_MME_MNP_03() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                f_send_Reset(
                    m_resetIEs(
                        m_cause_nas(
                            unspecified // TODO Check the value to be used
garciay's avatar
garciay committed
                        ),
                        m_resetType_all
                ));
                f_recv_Reset_Acknowledge(
                    mw_reset_AcknowledgeIEs(
                        {
                            ?/*mw_uE_associatedLogicalS1_ConnectionItemResAck_IE(
                                mw_uE_associatedLogicalS1_ConnectionItem(
                                    vc_MME_UE_ID,
                                    vc_eNB_UE_ID
                            ))*/
                        }
                ));
                f_selfOrClientSyncAndVerdict(c_tbDone, f_getVerdict()); 
garciay's avatar
garciay committed
                
                // Postamble
                f_postamble_S1AP_MME();
                f_selfOrClientSyncAndVerdict(c_poDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
                
            } // End of function f_TC_S1AP_MME_MNP_03
            
            /**
             * @desc Testcase function for TC_S1AP_MME_MNP_04
             */
            function f_TC_S1AP_MME_MNP_04() runs on S1APComponent { 
                // Local variables
                
                // Preamble
                f_S1AP_mme_init();
                f_selfOrClientSyncAndVerdict(c_prDone, f_getVerdict()); 
                log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
                
                // Test body
                // 1. to indicate an Error Indication procedure
                if (fx_MME_Error_Indication_procedure() == false) {