Commit 6f203e3d authored by garciay's avatar garciay
Browse files

Session Week #35:

- Terminate TPs implementation
- Start QoS review
parent b5b00856
Loading
Loading
Loading
Loading
+20 −3
Original line number Diff line number Diff line
@@ -479,11 +479,28 @@ module LibGtpv2C_Configuration {
        function f_calculateInformationElementLength_bearerContext(
                                                                   in template (value) BearerContext p_bearer_context
        ) return BearerContext { 
            p_bearer_context.length_ := sizeof(p_bearer_context) - 4/*Size of IE mandatory fields*/; // FIXME To be reviewed
            
            var octetstring v_encoded_value := bit2oct(encvalue(p_bearer_context));
            p_bearer_context.length_ := lengthof(v_encoded_value) - 4/*Size of IE mandatory fields*/; 
            return valueof(p_bearer_context);
        } // End of function f_calculateInformationElementLength_bearerContext
        
        /**
         * @desc Update length filed according to the content
         * @see ETSI TS 129 274 V9.13.0 Clause 8.25 S103 PDN Data Forwarding Info (S103PDF)
         * @see ETSI TS 129 274 V9.13.0 Figure 8.25-1: S103 PDN Data Forwarding Info
         */
        function f_calculateInformationElementLength_s103PpdDataForwardingInfo(
                                                                               in template (value) S103PpdDataForwardingInfo p_s103PpdDataForwardingInfo
        ) return S103PpdDataForwardingInfo {
            if (ischosen(p_s103PpdDataForwardingInfo.hsgwAddressContainer.ipv4Address)) {
                p_s103PpdDataForwardingInfo.hsgwAddressLength := 4;
            } else {
                p_s103PpdDataForwardingInfo.hsgwAddressLength := 16;
            }
            p_s103PpdDataForwardingInfo.length_ := 7 + valueof(p_s103PpdDataForwardingInfo.hsgwAddressLength); 
            return valueof(p_s103PpdDataForwardingInfo);
        } // End of function f_calculateInformationElementLength_s103PpdDataForwardingInfo
        
    } // End of group tlviVariableLengthCalculations 
    
    group helperFunctions { 
+304 −41
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ module LibGtpv2C_MME_Functions {
            tc_wait.start; // Use tc_wait instead of tc_ac to wait for periodic Echo Request message
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_noteid(
                                e_echoRequest 
@@ -108,7 +108,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_noteid(
                                e_echoRequest 
@@ -175,7 +175,7 @@ module LibGtpv2C_MME_Functions {
            tc_wait.start; // Use tc_wait instead of tc_ac to wait for periodic Echo Request message
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_invalid_version 
                        ) 
@@ -246,7 +246,7 @@ module LibGtpv2C_MME_Functions {
            // 1. Verify that the MME sends Create Session Request and receives the Create Session Response
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_createSessionRequest 
@@ -350,7 +350,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_modifyBearerRequest 
@@ -409,7 +409,7 @@ module LibGtpv2C_MME_Functions {
            // 1. Verify that the MME sends Create Session Request and receives the Create Session Response
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_createSessionResponse 
@@ -464,7 +464,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_createBearerResponse 
@@ -527,7 +527,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_bearerResourceCommand 
@@ -575,7 +575,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_bearerResourceFailureIndication 
@@ -625,7 +625,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_deleteSessionRequest 
@@ -689,7 +689,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_deleteSessionRequest 
@@ -751,7 +751,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_downlinkDataNotificationAcknowledge 
@@ -815,7 +815,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_downlinkDataNotificationFailureIndication 
@@ -866,7 +866,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_deleteIndirectDataForwardingTunnelRequest 
@@ -913,7 +913,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_modifyBearerCommand 
@@ -960,7 +960,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_modifyBearerCommand 
@@ -1035,7 +1035,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_updateBearerResponse 
@@ -1082,7 +1082,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_deleteBearerCommand 
@@ -1129,7 +1129,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_deleteBearerCommand 
@@ -1176,7 +1176,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_createIndirectDataForwardingTunnelRequest 
@@ -1235,7 +1235,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_releaseAccessBearersRequest
@@ -1332,7 +1332,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_suspendNotification 
@@ -1361,14 +1361,208 @@ module LibGtpv2C_MME_Functions {
            
        } // End of function f_TC_S11_MME_CSF_SRVCC_01 
        
        /**
         * @desc Verify that the Resume Notification message is sent on the S11 interface by the MME to the S-GW as part of the resume procedure upon returning from CS fallback to E-UTRA - MME role
         * @verdict pass on success, inconc on timeout, fail otherwise
         */
        function f_TC_S11_MME_CSF_SRVCC_02() runs on Gtpv2CComponent {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            // Nothing to do, see f_TC_S1_MME_CSF_SRVCC_02
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
            
            // Test Body
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_resumeNotification 
                            ),
                            -,
                            mw_payload_resumeNotification(
                                mw_resumeNotification_dummy
                            ) 
                        ) 
                    )
                ) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: IUT sends Resume Notification ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: Expected message not received ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
            } // End of 'alt' statement 
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of function f_TC_S11_MME_CSF_SRVCC_02 
        
    } // End of group csFallbackAndSrvcc 
    
    group non3gppAccess { 
        
        /**
         * @desc Verify that a Create Forwarding Tunnel Request message is sent by the MME to a Serving GW as a part of the MME configuration of resources for indirect data forwarding during active handover procedure from E-UTRA to CDMA2000 HPRD access - MME role 
         * @verdict pass on success, inconc on timeout, fail otherwise
         */
        function f_TC_S11_MME_N3GPP_AR_01() runs on Gtpv2CComponent {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            // Nothing to do, see f_TC_S1_MME_N3GPP_AR_01
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
            
            // Test Body
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_createForwardingTunnelRequest 
                            ),
                            -,
                            mw_payload_createForwardingTunnelRequest(
                                mw_createForwardingTunnelRequest_dummy(
                                    mw_s103PpdDataForwardingInfo_dummy
                                )
                            ) 
                        ) 
                    )
                ) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: IUT sends Create Forwarding Tunnel Request ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: Expected message not received ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
            } // End of 'alt' statement 
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of function f_TC_S11_MME_N3GPP_AR_01 
        
    } // End of group non3gppAccess
    
    group restorationAndRecovery { 
        
        /**
         * @desc Procedures during a Peer’s Partial Failure - MME role 
         * @verdict pass on success, inconc on timeout, fail otherwise
         */
        function f_TC_S11_MME_RR_01_01() runs on Gtpv2CComponent {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            action("Trigger a Delete PDN Connection Set Request from the MME");
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
            
            // Test Body
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_deletePdnConnectionSetRequest 
                            ),
                            -,
                            mw_payload_deletePdnConnectionSetRequest(
                                mw_deletePdnConnectionSetRequest_mme(
                                    mw_fullyQualifiedPdnConnectionSetIdentifier_ipv4
                                )
                            ) 
                        ) 
                    )
                ) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: IUT sends Delete PDN Connection Set Request ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: Expected message not received ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
            } // End of 'alt' statement 
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of function f_TC_S11_MME_RR_01_01 
        
        /**
         * @desc Procedures during a Peer’s Partial Failure - MME role 
         * @verdict pass on success, inconc on timeout, fail otherwise
         */
        function f_TC_S11_MME_RR_01_02() runs on Gtpv2CComponent {
            
            // Local variables
            
            // Preamble
            f_preamble_MME();
            // Nothing to do, see f_TC_S1_MME_RR_01_02
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Preamble done. ***");
            
            // Test Body
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_deletePdnConnectionSetRequest 
                            ),
                            -,
                            mw_payload_deletePdnConnectionSetRequest(
                                mw_deletePdnConnectionSetRequest_mme(
                                    mw_fullyQualifiedPdnConnectionSetIdentifier_ipv4
                                )
                            ) 
                        ) 
                    )
                ) { 
                    tc_ac.stop;
                    log("*** " & testcasename() & ": PASS: IUT sends Delete PDN Connection Set Request ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: Expected message not received ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
            } // End of 'alt' statement 
            
            // Postamble
            f_postamble_MME();
            f_selfOrClientSyncAndVerdict(c_poDone, e_success);
            log("*** " & __SCOPE__ & ": INFO: Postamble done. ***");
            
        } // End of function f_TC_S11_MME_RR_01_02 
        
    } // End of group restorationAndRecovery
    
    group traceManagement { 
@@ -1391,7 +1585,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_traceSessionActivation 
@@ -1438,7 +1632,7 @@ module LibGtpv2C_MME_Functions {
            tc_ac.start;
            alt {
                [] s11Port.receive(
                    mw_gtpv2Ind( 
                    mw_gtpv2CInd( 
                        mw_pdu(
                            mw_header_teid(
                                e_traceSessionDeactivation 
@@ -1500,7 +1694,7 @@ module LibGtpv2C_MME_Functions {
    group s1mmeTrigger {
        
        /**
         * @desc Trigger event on S1-MME interface
         * @desc Trigger a NAS-ATTACH-REQUEST event on S1-MME interface
         */
        function f_TC_S1_MME_TM_01() runs on Gtpv2CComponent {
            
@@ -1531,7 +1725,7 @@ module LibGtpv2C_MME_Functions {
        } // End of function f_TC_S1_MME_TM_01
        
        /**
         * @desc Trigger event on S1-MME interface
         * @desc Switch on the UE to trigger events on S1-MME interface
         */
        function f_TC_S1_MME_TM_02() runs on Gtpv2CComponent {
            
@@ -1555,7 +1749,7 @@ module LibGtpv2C_MME_Functions {
        } // End of function f_TC_S1_MME_TM_02
        
        /**
         * @desc Trigger event on S1-MME interface
         * @desc Trigger a NAS-DETACH-REQUEST event on S1-MME interface
         */
        function f_TC_S1_MME_TM_05() runs on Gtpv2CComponent {
            
@@ -1578,7 +1772,7 @@ module LibGtpv2C_MME_Functions {
        } // End of function f_TC_S1_MME_TM_05
        
        /**
         * @desc Trigger event on S1-MME interface
         * @desc Trigger data packets sending from calle part to generate events on S1-MME interface
         */
        function f_TC_S1_MME_TM_07() runs on Gtpv2CComponent {
            
@@ -1863,6 +2057,75 @@ module LibGtpv2C_MME_Functions {
            
        } // End of function f_TC_S11_MME_CSF_SRVCC_01
        
        /**
         * @desc Trigger event on the second S1-MME interface (handover)
         */
        function f_TC_S1_MME_CSF_SRVCC_02() runs on Gtpv2CComponent {
            
            // Local variables
            
            // Preamble
            if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) {
                action("Force the UE back to E-UTRA");
            } else {
                // FIXME To be developed
            }
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            
            // Test Body
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            
            // Postamble
            f_selfOrClientSyncAndVerdict(c_poDone, e_success);
            
        } // End of function f_TC_S11_MME_CSF_SRVCC_02
        
        /**
         * @desc Trigger event on the second S1-MME interface 
         */
        function f_TC_S1_MME_N3GPP_AR_01() runs on Gtpv2CComponent {
            
            // Local variables
            
            // Preamble
            if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) {
                action("Force a handover to the CDMA2000 HRPD network");
            } else {
                // FIXME To be developed
            }
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            
            // Test Body
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            
            // Postamble
            f_selfOrClientSyncAndVerdict(c_poDone, e_success);
            
        } // End of function f_TC_S1_MME_N3GPP_AR_01
        
        /**
         * @desc Trigger event on the second S1-MME interface (Procedures during a Peer’s Partial Failure)
         */
        function f_TC_S1_MME_RR_01_02() runs on Gtpv2CComponent {
            
            // Local variables
            
            // Preamble
            if (not(PICS_SUPPORT_S1_MME_TRIGGERS)) {
                action("Trigger a Delete PDN Connection Set Request from the eNodeB");
            } else {
                // FIXME To be developed
            }
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            
            // Test Body
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            
            // Postamble
            f_selfOrClientSyncAndVerdict(c_poDone, e_success);
            
        } // End of function f_TC_S1_MME_RR_01_02
        
    } // End of group postambles
    
    group mmeAltsteps {
+30 −0
Original line number Diff line number Diff line
@@ -173,6 +173,24 @@ module LibGtpv2C_Pics {
         */
        modulepar boolean PICS_MME_RESUME_NOTIFICATION := true;
        
        /**
         * @desc Does the IUT support Create Forwarding Tunnel Request?
         * @see  ETSI TS 103 202-1 V0.0.3 (2013-10) Table A.3/20
         */
        modulepar boolean PICS_MME_CREATE_FORWARDING_TUNNEL_REQUEST := true;
        
        /**
         * @desc Does the IUT support Delete PDN Connection Set Request?
         * @see  ETSI TS 103 202-1 V0.0.3 (2013-10) Table A.3/33
         */
        modulepar boolean PICS_MME_DELETE_PDN_CONNECTION_SET_REQUEST := true;
        
        /**
         * @desc Does the IUT support Delete PDN Connection Set Response?
         * @see  ETSI TS 103 202-1 V0.0.3 (2013-10) Table A.334
         */
        modulepar boolean PICS_MME_DELETE_PDN_CONNECTION_SET_RESPONSE := true;
        
        /**
         * @desc Does the IUT support Trace Session Activation?
         * @see  ETSI TS 103 202-1 V0.0.3 (2013-10) Table A.3/36
@@ -291,6 +309,18 @@ module LibGtpv2C_Pics {
         */
        modulepar boolean PICS_SGW_RESUME_ACKNOWLEDGE := true;
        
        /**
         * @desc Does the IUT support Create Forwarding Tunnel Response?
         * @see  ETSI TS 103 202-1 V0.0.3 (2013-10) Table A.4/21
         */
        modulepar boolean PICS_SGW_CREATE_FORWARDING_TUNNEL_RESPONSE := true;
        
        /**
         * @desc Does the IUT support Delete PDN Connection Set Request?
         * @see  ETSI TS 103 202-1 V0.0.3 (2013-10) Table A.4/21
         */
        modulepar boolean PICS_SGW_DELETE_PDN_CONNECTION_SET_REQUEST := true;
        
    } // End of sgwSystemCapabilities
    
} // End of module LibGtpv2C_Pics 
+18 −0
Original line number Diff line number Diff line
@@ -280,6 +280,24 @@ module LibGtpv2C_Pixits {
     */
    modulepar UInt32 PX_AMBR_DL := 500;
    
    /**
     * @desc Global unicast address
     * @see  ETSI TS 103 202-3 V0.0.1 2 (2015-06) Table A.7/45
     */
    modulepar Oct4to16 PX_NODE_ID := '00000000'O;
    
    /**
     * @desc PDN Connection Set Identifier list
     * @see  ETSI TS 103 202-3 V0.0.1 2 (2015-06) Table A.7/46
     */
    modulepar Csids PX_CSIDS := { 0 };
    
    /**
     * @desc Number of item in the PDN Connection Set Identifier list
     * @see  ETSI TS 103 202-3 V0.0.1 2 (2015-06) Table A.7/47
     */
    modulepar Bit4 PX_CSIDS_NUM := int2bit(1, 4);
    
    /**
     * @desc PCO paylod
     */
+341 −66

File changed.

Preview size limit exceeded, changes collapsed.

Loading