ItsRtcmem_TpFunctions.ttcn 21.1 KB
Newer Older
Yann Garcia's avatar
Yann Garcia committed
module ItsRtcmem_TpFunctions {
  
  // 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 RTCMEM_PDU_Descriptions language "ASN.1:1997" all;
  
  // LibItsRtcmem
  import from LibItsRtcmem_TestSystem all;
  import from LibItsRtcmem_Functions all;
  import from LibItsRtcmem_Templates all;
  import from LibItsRtcmem_TypesAndValues all;
  import from LibItsRtcmem_Pics all;
  import from LibItsRtcmem_Pixits all;
  
  group messageFormat {
Yann Garcia's avatar
Yann Garcia committed
    
    /**
     * @desc    TP Function for TC_IS_GPC_GEN_MSGF_BV_01
     */
    function f_IS_GPC_GEN_MSGF_BV_01() runs on ItsRtcmem {
        
        // Local variables
        
        // Test control
        if (not PICS_RTCMEM_GENERATION) {
            log("*** " & testcasename() & ": PICS_RTCMEM_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(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }));
        
        tc_ac.start;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemInd(
                    mw_rtcmemPdu
            )) { 
                tc_ac.stop;
                log("*** " & testcasename() & ": PASS: Successfully received RTCMEM 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_utTerminateEvent(m_utTriggerTermination(10));
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_GEN_MSGF_BV_01
Yann Garcia's avatar
Yann Garcia committed
    
  } // End of group messageFormat
  
  group eventGeneration {
Yann Garcia's avatar
Yann Garcia committed
    
    function f_IS_GPC_GEN_EVGN_BV_01() runs on ItsRtcmem {
        
        // Local variables
        
        // Test control
        if (not PICS_RTCMEM_GENERATION) {
            log("*** " & testcasename() & ": PICS_RTCMEM_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(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }));
        
        tc_ac.start;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemInd(
                    mw_rtcmemPdu
            )) { 
                tc_ac.stop;
                log("*** " & testcasename() & ": PASS: Successfully received RTCMEM 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);
            }
        } // End of 'alt' statement
        
        // Postamble
        f_utTerminateEvent(m_utTriggerTermination(10));
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_GEN_EVGN_BV_01
Yann Garcia's avatar
Yann Garcia committed
    
    function f_IS_GPC_GEN_EVGN_BV_02() runs on ItsRtcmem {
        
        // Local variables
        
        // Test control
        if (not PICS_RTCMEM_GENERATION) {
            log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp();
        
        // Preamble
        f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }));
        tc_ac.start;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemInd(
                    mw_rtcmemPdu
            )) { 
                tc_ac.stop;
                log("*** " & testcasename() & ": INFO: Successfully received RTCMEM PDU header. ***");
                f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            }
            [] tc_ac.timeout {
                log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
                f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
            }
        } // End of 'alt' statement
         
        // Test Body
        f_utTerminateEvent(m_utTriggerTermination(10));
        tc_noac.start;
        rtcmemPort.clear;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemInd(
                    mw_rtcmemPdu
            )) { 
                tc_noac.stop;
                log("*** " & testcasename() & ": FAIL: Successfully received RTCMEM PDU header. ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
            }
            [] tc_noac.timeout {
                log("*** " & testcasename() & ": PASS: IUT stops sending RTCMEM. ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
            }
        } // End of 'alt' statement
        
        // Postamble
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_GEN_EVGN_BV_02
Yann Garcia's avatar
Yann Garcia committed
    
  } // End of group eventGeneration
  
  group communication {
    
    function f_IS_GPC_GEN_COM_BV_02() runs on ItsRtcmem {
        
        // Local variables
        
        // Test control
        if (not PICS_RTCMEM_GENERATION) {
            log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp();
        
        // Preamble
        f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }));
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
         
        // Test Body
        tc_ac.start;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemIndWithBtpParameters(
                    mw_rtcmemPdu,
                    2013,
                    0
            )) { 
                tc_ac.stop;
                log("*** " & testcasename() & ": PASS: Successfully received RTCMEM 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);
            }
        } // End of 'alt' statement
        
        // Postamble
        f_utTerminateEvent(m_utTriggerTermination(10));
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_GEN_COM_BV_02
    
    function f_IS_GPC_GEN_COM_BV_03() runs on ItsRtcmem {
        
        // Local variables
        
        // Test control
        if (not PICS_RTCMEM_GENERATION or not PICS_SHORT_RANGE) {
            log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION and PICS_SHORT_RANGE required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp();
        
        // Preamble
        f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }));
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
        // Test Body
        tc_ac.start;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemIndWithGnParameters(
                    mw_rtcmemPdu,
                    -,
                    4
            )) { 
                tc_ac.stop;
                log("*** " & testcasename() & ": PASS: Successfully received RTCMEM 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);
            }
        } // End of 'alt' statement
        
        // Postamble
        f_utTerminateEvent(m_utTriggerTermination(10));
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_GEN_COM_BV_03
    
  } // End of group communication
  
  group security {
    
    function f_IS_GPC_GEN_SEC_BV_01() runs on ItsRtcmem {
        
        // Local variables
        
        // Test control
        if (not PICS_RTCMEM_GENERATION or not PICS_IS_IUT_SECURED) {
            log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp();
        
        // Preamble
        f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }));
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
         
        // Test Body
        tc_ac.start;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemIndWithSecurityParameters(
                    mw_rtcmemPdu,
                    -,
                    c_its_aid_GPC
            )) { 
                tc_ac.stop;
                log("*** " & testcasename() & ": PASS: Successfully received secured RTCMEM 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);
            }
        } // End of 'alt' statement
        
        // Postamble
        f_utTerminateEvent(m_utTriggerTermination(10));
        tc_noac.start;
        rtcmemPort.clear;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemInd(
                    mw_rtcmemPdu
            )) { 
                tc_noac.stop;
                log("*** " & testcasename() & ": INCON: Successfully received RTCMEM PDU header. ***");
                f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
            }
            [] tc_ac.timeout {
                log("*** " & testcasename() & ": INFO: IUT stops sending RTCMEM. ***");
            }
        } // End of 'alt' statement
        f_utTerminateEvent(m_utTriggerTermination(10));
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_GEN_SEC_BV_01
    
    function f_IS_GPC_GEN_SSP_BV_01() runs on ItsRtcmem {
        
        // Local variables
        
        // Test control
        if (not PICS_RTCMEM_GENERATION or not PICS_IS_IUT_SECURED) {
            log("*** " & testcasename() & ": PICS_RTCMEM_GENERATION and PICS_IS_IUT_SECURED required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp();
        
        // Preamble
        f_utTriggerEvent(m_utTriggerEvent(10, -, { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }));
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
         
        // Test Body
        tc_ac.start;
        alt {
            [] rtcmemPort.receive(
                mw_rtcmemIndWithSecurityParameters(
                    mw_rtcmemPdu,
                    oct2bit('010000'O),
                    c_its_aid_GPC
            )) { 
                tc_ac.stop;
                log("*** " & testcasename() & ": PASS: Successfully received secured RTCMEM 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);
            }
        } // End of 'alt' statement
        
        // Postamble
        f_utTerminateEvent(m_utTriggerTermination(10));
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_GEN_SSP_BV_01
    
Yann Garcia's avatar
Yann Garcia committed
    function f_IS_GPC_RCV_SSP_BV_01() runs on ItsRtcmem {
        
        // Local variables
        var RtcmemReq v_rtcmemReq;
        var integer i;
        
        // Test control
        if (not PICS_RTCMEM_RECEPTION or not PICS_IS_IUT_SECURED) {
            log("*** " & testcasename() & ": PICS_RTCMEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp(); // Use default certificate
        
        // Preamble
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
         
        // Test Body
        v_rtcmemReq := valueof(
                               m_rtcmemReq(
                                           m_rtcmemPdu(
                                                       m_defaultRtcmem(
                                                                       123,
                                                                       -,
Yann Garcia's avatar
Yann Garcia committed
                                                                       { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }
Yann Garcia's avatar
Yann Garcia committed
                                                                       )
                                                       )
                                           )
                               );
        rtcmemPort.send(v_rtcmemReq);
        
        f_sleep(PX_TNOAC);
        for(i:=0; i < lengthof(vc_utEvents) and not match(v_rtcmemReq.msgOut, vc_utEvents[i].rtcmemMsg); i := i + 1) {
            // empty on purpose 
        }
        if(i < lengthof(vc_utEvents)) {
            log("*** " & testcasename() & ": FAIL: RTCMEM was not transmitted to upper layer ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
        }
        else {
            log("*** " & testcasename() & ": PASS: RTCMEM was transmitted to upper layer ***");
Yann Garcia's avatar
Yann Garcia committed
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
        }
        
        // Postamble
        f_utTerminateEvent(m_utTriggerTermination(10));
Yann Garcia's avatar
Yann Garcia committed
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_RCV_SSP_BV_01
    
    function f_IS_GPC_RCV_SSP_BO_02() runs on ItsRtcmem {
        
        // Local variables
        var RtcmemReq v_rtcmemReq;
        var integer i;
        
        // Test control
        if (not PICS_RTCMEM_RECEPTION or not PICS_IS_IUT_SECURED) {
            log("*** " & testcasename() & ": PICS_RTCMEM_RECEPTION and PICS_IS_IUT_SECURED required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp("CERT_TS_RTCMEM_BO_02_AT"); // not containing appPermission item
        
        // Preamble
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
         
        // Test Body
        v_rtcmemReq := valueof(
                               m_rtcmemReq(
                                           m_rtcmemPdu(
                                                       m_defaultRtcmem(
                                                                       123,
                                                                       -,
Yann Garcia's avatar
Yann Garcia committed
                                                                       { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }
Yann Garcia's avatar
Yann Garcia committed
                                                                       )
                                                       )
                                           )
                               );
        rtcmemPort.send(v_rtcmemReq);
        
        f_sleep(PX_TNOAC);
        for(i:=0; i < lengthof(vc_utEvents) and not match(v_rtcmemReq.msgOut, vc_utEvents[i].rtcmemMsg); i := i + 1) {
            // empty on purpose 
        }
        if(i < lengthof(vc_utEvents)) {
            log("*** " & testcasename() & ": FAIL: RTCMEM was not transmitted to upper layer ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
        }
        else {
            log("*** " & testcasename() & ": PASS: RTCMEM was transmitted to upper layer ***");
Yann Garcia's avatar
Yann Garcia committed
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
        }
        
        // Postamble
        f_poDefault();
        f_cfDown();
        
    } // End of function f_IS_GPC_RCV_SSP_BO_02
    
  } // End of group security
  
  group eventReception {
    
    /**
     * @desc    TP Function for TC_IS_GPC_RCV_MSGF_BV_01
     */
    function f_IS_GPC_RCV_MSGF_BV_01() runs on ItsRtcmem {
        
        // Local variables
        var RtcmemReq v_rtcmmReq;
        var integer i;
        
        // Test control
        if (not PICS_RTCMEM_RECEPTION) {
            log("*** " & testcasename() & ": PICS_RTCMEM_RECEPTION required for executing the TC ***");
            setverdict(inconc);
            stop;
        }
        
        // Test component configuration
        f_cfUp();
        
        // Preamble
        f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
            
        // Test Body
        v_rtcmmReq := valueof(
                              m_rtcmemReq(
                                         m_rtcmemPdu(
                                                     m_defaultRtcmem(
                                                                     123,
                                                                     -,
Yann Garcia's avatar
Yann Garcia committed
                                                                     { char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;"), char2oct("STR;SCSC;Glendora, CA;RTCM 3.1;1004(1),1005(10),1012(1);2;GPS+GLO;SNIP;USA;34.13;-117.83;0;0;sNTRIP;none;N;N;0;") }
                                                                     )
                                                     )
                                         )
                              );
        rtcmemPort.send(v_rtcmmReq);
        
        f_sleep(PX_TNOAC);
        for(i:=0; i < lengthof(vc_utEvents) and not match(v_rtcmmReq.msgOut, vc_utEvents[i].rtcmemMsg); i:=i+1) {
            // empty on purpose 
        }
        if(i < lengthof(vc_utEvents)) {
            log("*** " & testcasename() & ": PASS: RTCMEM was transmitted to upper layer ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
        }
        else {
            log("*** " & testcasename() & ": FAIL: RTCMEM was not transmitted to upper layer ***");
            f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
        }
        
        // Postamble
        f_poDefault();
        f_cfDown();
    } // End of function f_IS_GPC_RCV_MSGF_BV_01
    
  } // End of group eventReception
  
Yann Garcia's avatar
Yann Garcia committed
} // End of module ItsRtcmem_TpFunctions