ItsSrem_TpFunctions.ttcn 18.9 KB
Newer Older
garciay's avatar
garciay committed
/**
 *    @author   ETSI STF517
 *    @version  $URL$
 *              $Id$
 *    @desc     SREM TP functions
 *
 */

garciay's avatar
garciay committed
    
    // LibCommon
    import from LibCommon_BasicTypesAndValues all;
    import from LibCommon_Sync all;
    import from LibCommon_VerdictControl all;
    import from LibCommon_Time all;
    
    // LibItsCommon
    import from LibItsCommon_Functions all;
    import from LibItsCommon_TypesAndValues all;
    
    // LibIts
    import from ITS_Container language "ASN.1:1997" all;
    import from SREM_PDU_Descriptions language "ASN.1:1997" all;
    import from SSEM_PDU_Descriptions language "ASN.1:1997" all;
    import from DSRC language "ASN.1:1997" all;
    
    // LibItsSremSsem
    import from LibItsSremSsem_TestSystem all;
    import from LibItsSremSsem_Functions all;
    import from LibItsSremSsem_Templates all;
    import from LibItsSremSsem_TypesAndValues all;
    import from LibItsSremSsem_Pics all;
    
        group sreMessageDissemination { 
            
            group sreMessageFormat { 
                
                /**
                 * @desc    TP Function for TC_IS_TLC_MSGF_BV_01
                 */
                function f_IS_TLC_MSGF_BV_01 () runs on ItsSremSsem {
                    
                    // Local variables
                    var SremInd v_sremInd;
                    
                    // Test control
                    if (PICS_RSU or not PICS_SREM_GENERATION) {
                        log("*** " & testcasename() & ": not PICS_RSU  and PICS_SREM_GENERATION required for executing the TC ***");
                        setverdict(inconc);
                        stop;
                    }
                    
                    // Test component configuration
                    f_cfUp();
                        
                    // Preamble
                    f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                        
                    // Test Body
                    f_utTriggerEvent(m_utTriggerEvent(ssemNewContent));
                    
                    tc_ac.start;
                    alt {
                        [] sremSsemPort.receive(
                            mw_sremInd(
                                mw_sremPdu
                        )) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": PASS: Successfully received SREM PDU header. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        }
                        [] tc_ac.timeout {
                            log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                        }
                    }
                    
                    // Postamble
                    f_poDefault();
                    f_cfDown();
                    
                } // End of function f_IS_TLC_MSGF_BV_01
                
            } // End of group sreMessageFormat 
            
            group sreCommunication {
                
                /**
                 * @desc    TP Function for TC_IS_TLC_COMM_BV_01_01
                 */
                function f_IS_TLC_COMM_BV_01_01 () runs on ItsSremSsem {
                    
                    // Local variables
                    const UInt8 c_gnNhBtpB := 2;
                    var SremInd v_sremInd;
                    
                    // Test component configuration
                    f_cfUp();
                    
                    // Preamble
                    f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                    // Test Body
                    f_utTriggerEvent(m_utTriggerEvent(ssemNewContent));
                    
                    tc_ac.start;
                    alt {
                        [] sremSsemPort.receive(
                            mw_sremIndWithGnParameters(
                               mw_sremPdu(
                                   mw_sremWellFormatted
                               ), 
                               c_gnNhBtpB
                        )) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": PASS: Expected SREM encapsultated in BTP-B packet received. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        }
                        [] sremSsemPort.receive(mw_sremIndWithGnParameters(mw_sremPdu(mw_sremWellFormatted), omit)) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": INCONC: no GN NH information in SremInd ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);  
                        }                    
                        [] sremSsemPort.receive(mw_sremInd(mw_sremPdu(mw_defaultSrem))) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": FAIL: Expected SREM received, but not encapsulated in BTP-B packet ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);  
                        }                    
                        [] tc_ac.timeout {
                            log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                        }
                    }
                    
                    // Postamble
                    f_poDefault();
                    f_cfDown();
                    
                } // End of function f_IS_TLC_COMM_BV_01_01
                
                /**
                 * @desc    TP Function for TC_IS_TLC_COMM_BV_01_02
                 */
                function f_IS_TLC_COMM_BV_01_02 () runs on ItsSremSsem {
                    
                    // Local variables
                    const UInt16 c_gnNhBtpBPort := 2007;
                    var SremInd v_sremInd;
                    
                    // Test component configuration
                    f_cfUp();
                    
                    // Preamble
                    f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                    // Test Body
                    f_utTriggerEvent(m_utTriggerEvent(ssemNewContent));
                    
                    tc_ac.start;
                    alt {
                        [] sremSsemPort.receive(
                            mw_sremIndWithBtpParameters(
                               mw_sremPdu, 
                               c_gnNhBtpBPort,
                               0
                        )) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": PASS: Expected SREM encapsultated in BTP packet with port value 2003 received. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        }
                        [] sremSsemPort.receive(mw_sremInd(mw_sremPdu(mw_defaultSrem))) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": FAIL: Expected SREM received, but not addressed to the correct destination port. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);  
                        }                    
                        [] tc_ac.timeout {
                            log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                        }
                    }
                    
                    // Postamble
                    f_poDefault();
                    f_cfDown();
                    
                } // End of function f_IS_TLC_COMM_BV_01_02
                
                /**
                 * @desc    TP Function for TC_IS_TLC_COMM_BV_03
                 */
                function f_IS_TLC_COMM_BV_03 () runs on ItsSremSsem {
                    
                    // Local variables
                    const UInt8 c_gnHtGbc := 4;
                    var SremInd v_sremInd;
                    
                    // Test control
                    if (PICS_RSU or not PICS_SREM_GENERATION) {
                        log("*** " & testcasename() & ": not PICS_RSU  and PICS_SREM_GENERATION required for executing the TC ***");
                        setverdict(inconc);
                        stop;
                    }
                    
                    // Test component configuration
                    f_cfUp();
                        
                    // Preamble
                    f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                        
                    // Test Body
                    f_utTriggerEvent(m_utTriggerEvent(ssemNewContent));
                    
                    tc_ac.start;
                    alt {
                        [] sremSsemPort.receive(
                            mw_sremIndWithGnParameters(
                                mw_sremPdu(
                                    mw_sremWellFormatted
                                ),
                                -, 
                                c_gnHtGbc
                        )) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": PASS: Expected SREM encapsulated in GBC packet received. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        }
                        [] sremSsemPort.receive(
                            mw_sremIndWithGnParameters(
                                mw_sremPdu(
                                    mw_sremWellFormatted
                                ),
                                -, 
                                omit
                        )) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": FAIL: no GN HT information in SremInd. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                        }
                        [] sremSsemPort.receive(
                            mw_sremInd(
                                mw_sremPdu(
                                    mw_sremWellFormatted
                        ))) -> value v_sremInd { 
                            tc_ac.stop;
                            // Send SSEM
                            f_sendSseMessage(v_sremInd.msgIn.srm);
                            log("*** " & testcasename() & ": FAIL:  Expected SREM received, but not encapsulated in GBC packet. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                        }
                        [] tc_ac.timeout {
                            log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                        }
                    }
                    
                    // Postamble
                    f_poDefault();
                    f_cfDown();
                    
                } // End of function f_IS_TLC_COMM_BV_03
                
            } // End of group sreCommunication 
            
        } // End of group sreMessageDissemination 
        
        group sreMessageProcessing {
             * @desc    TP Function for TC_IS_TLC_MSGF_BV_03
            function f_IS_TLC_MSGF_BV_03 () runs on ItsSremSsem {
garciay's avatar
garciay committed
                
                // Local variables
                if (PICS_RSU or not PICS_SSEM_RECEPTION) {
                    log("*** " & testcasename() & ": not PICS_RSU and PICS_SSEM_RECEPTION required for executing the TC ***");
garciay's avatar
garciay committed
                    setverdict(inconc);
                    stop;
                }
garciay's avatar
garciay committed
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                v_ssemReq := valueof(m_ssemReq(m_ssemPdu(m_defaultSsem))); 
                sremSsemPort.send(v_ssemReq) ;
                for (i := 0; i < lengthof(vc_utSremEvents) and not match (v_ssemReq.msgOut , vc_utSsemEvents[i].sreMsg); i := i + 1) {
                if (i < lengthof(vc_utSsemEvents) ) {
                    log("*** " & testcasename() & ": PASS: SREM was transmitted to upper layer ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                } else {
                    log("*** " & testcasename() & ": FAIL: SREM was not transmitted to upper layer ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                }
                    
garciay's avatar
garciay committed
                // Postamble
                f_poDefault();
                f_cfDown();
                    
            } // End of function f_IS_TLC_MSGF_BV_03
        } // End of group sreMessageProcessing
        
	} // End of group iTS_SRole
    
        group sreMessageDisseminationRsu { 
            
            group sreMessageFormatRsu { 
                
                /**
                 * @desc    TP Function for TC_IS_TLC_MSGF_BV_04
                 */
                function f_IS_TLC_MSGF_BV_04 () runs on ItsSremSsem {
                    
                    // Local variables
                    
                    // Test control
                    if (PICS_RSU or not PICS_SREM_GENERATION) {
                        log("*** " & testcasename() & ": not PICS_RSU  and PICS_SREM_GENERATION required for executing the TC ***");
                        setverdict(inconc);
                        stop;
                    }
                    
                    // Test component configuration
                    f_cfUp();
                        
                    // Preamble
                    f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                        
                    // Test Body
                    // Send SSEM
                    sremSsemPort.send(
                        m_sremReq(
                            m_ssemPdu(
                                m_ssemPdu
                    )));
                    
                    tc_ac.start;
                    alt {
                        [] sremSsemPort.receive(
                            mw_ssemInd(
                                mw_ssemPdu
                        )) { 
                            tc_ac.stop;
                            log("*** " & testcasename() & ": PASS: Successfully received SSEM PDU header. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                        }
                        [] tc_ac.timeout {
                            log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                            f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                        }
                    }
                    
                    // Postamble
                    f_poDefault();
                    f_cfDown();
                    
                } // End of function f_IS_TLC_MSGF_BV_04
                
            } // End of group sreMessageFormatRsu
            
            group sreCommunicationRsu {
                
            } // End of group sreCommunicationRsu
            
        } // End of group sreMessageDisseminationRsu
        group sreMessageProcessingRsu {
            
            /**
             * @desc    TP Function for TC_IS_TLC_MSGF_BV_02
             */
            function f_IS_TLC_MSGF_BV_02 () runs on ItsSremSsem {
                
                // Local variables
                var SsemReq   v_sremReq;
                var integer   i;
                    
                if (PICS_RSU or not PICS_SREM_RECEPTION) {
                    log("*** " & testcasename() & ": not PICS_RSU and PICS_SREM_RECEPTION required for executing the TC ***");
                    setverdict(inconc);
                    stop;
                }
                    
                // Test component configuration
                f_cfUp();
                    
                // Preamble
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
                    
                // Test Body
                v_sremReq := valueof(m_ssemReq(m_sremPdu(m_defaultSrem)));
                sremSsemPort.send(v_sremReq) ;
                    
                f_sleep(PX_TAC);
                for (i := 0; i < lengthof(vc_utSremEvents) and not match (v_sremReq.msgOut , vc_utSremEvents[i].sreMsg); i := i + 1) {
                    // empty on purpose 
                }
                if (i < lengthof(vc_utSsemEvents) ) {
                    log("*** " & testcasename() & ": PASS: SSEM was transmitted to upper layer ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                } else {
                    log("*** " & testcasename() & ": FAIL: SSEM was not transmitted to upper layer ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                }
                    
                // Postamble
                f_poDefault();
                f_cfDown();
                    
            } // End of function f_IS_TLC_MSGF_BV_02
            
        } // End of group sreMessageProcessingRsu
} // End of module ItsSrem_TpFunctions