/** * @author ETSI STF517 * @version $URL$ * $Id$ * @desc MAPEM TP functions * @copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. * The copyright and the foregoing restriction extend to reproduction in all media. * All rights reserved. * */ module ItsMapem_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 MAPEM_PDU_Descriptions language "ASN.1:1997" all; import from SPATEM_PDU_Descriptions language "ASN.1:1997" all; import from DSRC language "ASN.1:1997" all; // LibItsMapemSpatem import from LibItsMapemSpatem_TestSystem all; import from LibItsMapemSpatem_Functions all; import from LibItsMapemSpatem_Templates all; import from LibItsMapemSpatem_TypesAndValues all; import from LibItsMapemSpatem_Pics all; group mapeMessageDissemination { group mapeMessageFormat { /** * @desc TP Function for TC_IS_RLT_MSGF_BV_01 */ function f_IS_RLT_MSGF_BV_01 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM 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_RLT_MSGF_BV_01 } // End of group mapeMessageFormat group mapeEventGeneration { /** * @desc TP Function for TC_IS_RLT_EVGN_BV_01 */ function f_IS_RLT_EVGN_BV_01 () runs on ItsMapemSpatem { // Local variables // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received MAPEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_defaultMapem ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a MAPEM with incorrect information. ***"); 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_RLT_EVGN_BV_01 /** * @desc TP Function for TC_IS_RLT_EVGN_BV_02 */ function f_IS_RLT_EVGN_BV_02 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapemNewContent)); tc_ac.start; alt { [] mapemSpatemPort.receive(v_mapem) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: The same MAPEM was received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received a new MAPEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_defaultMapem ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a MAPEM with incorrect information. ***"); 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_RLT_EVGN_BV_02 /** * @desc TP Function for TC_IS_RLT_EVGN_BV_03 */ function f_IS_RLT_EVGN_BV_03 () runs on ItsMapemSpatem { // Local variables var MapemInd v_mapem; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_awaitMapeMessage( mw_mapemInd( mw_mapemPdu( mw_defaultMapem )), v_mapem ); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body f_utTriggerEvent(m_utTriggerEvent(mapemNewContentWithFragmentation)); tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemLayerType ))) -> value v_mapem { log("*** " & testcasename() & ": INFO: Successfully received the first fragment of MAPEM. ***"); repeat; } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemLayerType( v_mapem.msgIn.map_.layerID + 1 ) ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received the last fragment of MAPEM. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_defaultMapem ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Received a MAPEM with incorrect information. ***"); 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_RLT_EVGN_BV_03 } // End of group mapeEventGeneration group mapeCommunication { /** * @desc TP Function for TC_IS_RLT_COMM_BV_01 */ function f_IS_RLT_COMM_BV_01 () runs on ItsMapemSpatem { // Local variables var boolean v_tlmServiceStarted := false; // Test control if (not PICS_SPATEM_GENERATION or not PICS_SPATEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION and PICS_SPATEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [v_tlmServiceStarted == false] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": INFO: Successfully received well-formed MAPEM. ***"); f_utTriggerEvent(m_utTriggerEvent(startTLMService)); v_tlmServiceStarted := true; tc_ac.start; repeat; } [] mapemSpatemPort.receive( mw_spatemInd( mw_spatemPdu( mw_spatemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Successfully received well-formed MAPEM & SPATEM. ***"); 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_utTriggerEvent(m_utTriggerEvent(stopTLMService)); f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_COMM_BV_01 /** * @desc TP Function for TC_IS_RLT_COMM_BV_02_01 */ function f_IS_RLT_COMM_BV_02_01 () runs on ItsMapemSpatem { // Local variables const UInt8 c_gnNhBtpB := 2; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithGnParameters( mw_mapemPdu( mw_mapemWellFormatted ), c_gnNhBtpB )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected MAPEM encapsultated in BTP-B packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive(mw_mapemIndWithGnParameters(mw_mapemPdu(mw_mapemWellFormatted), omit)) { tc_ac.stop; log("*** " & testcasename() & ": INCONC: no GN NH information in MapemInd ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout); } [] mapemSpatemPort.receive(mw_mapemInd(mw_mapemPdu(mw_defaultMapem))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected MAPEM 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_RLT_COMM_BV_02_01 /** * @desc TP Function for TC_IS_RLT_COMM_BV_02_02 */ function f_IS_RLT_COMM_BV_02_02 () runs on ItsMapemSpatem { // Local variables const UInt16 c_gnNhBtpBPort := 2003; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithBtpParameters( mw_mapemPdu, c_gnNhBtpBPort, 0 )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected MAPEM encapsultated in BTP packet with port value 2003 received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive(mw_mapemInd(mw_mapemPdu(mw_defaultMapem))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected MAPEM 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_RLT_COMM_BV_02_02 /** * @desc TP Function for TC_IS_RLT_COMM_BV_03 */ function f_IS_RLT_COMM_BV_03 () runs on ItsMapemSpatem { // Local variables const UInt8 c_gnHtGbc := 4; // Test control if (not PICS_MAPEM_GENERATION) { log("*** " & testcasename() & ": PICS_MAPEM_GENERATION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] mapemSpatemPort.receive( mw_mapemIndWithGnParameters( mw_mapemPdu( mw_mapemWellFormatted ), -, c_gnHtGbc )) { tc_ac.stop; log("*** " & testcasename() & ": PASS: Expected MAPEM encapsulated in GBC packet received. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } [] mapemSpatemPort.receive( mw_mapemIndWithGnParameters( mw_mapemPdu( mw_mapemWellFormatted ), -, omit )) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: no GN HT information in MapemInd. ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } [] mapemSpatemPort.receive( mw_mapemInd( mw_mapemPdu( mw_mapemWellFormatted ))) { tc_ac.stop; log("*** " & testcasename() & ": FAIL: Expected MAPEM 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_RLT_COMM_BV_03 } // End of group mapeCommunication } // End of group mapeMessageDissemination group mapeMessageProcessing { /** * @desc TP Function for TC_IS_RLT_MSGF_BV_02 */ function f_IS_RLT_MSGF_BV_02 () runs on ItsMapemSpatem { // Local variables var MapemReq v_mapemReq; var integer i; if (not PICS_MAPEM_RECEPTION) { log("*** " & testcasename() & ": PICS_MAPEM_RECEPTION required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cfUp(); // Preamble f_prInitialState(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body v_mapemReq := valueof(m_mapemReq(m_mapemPdu(m_defaultMapem))); mapemSpatemPort.send(v_mapemReq) ; f_sleep(PX_TAC); for (i := 0; i < lengthof(vc_utMapemEvents) and not match (v_mapemReq.msgOut , vc_utMapemEvents[i].mapeMsg); i := i + 1) { // empty on purpose } if (i < lengthof(vc_utMapemEvents) ) { log("*** " & testcasename() & ": PASS: MAPEM was transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_success); } else { log("*** " & testcasename() & ": FAIL: MAPEM was not transmitted to upper layer ***"); f_selfOrClientSyncAndVerdict(c_tbDone, e_error); } // Postamble f_poDefault(); f_cfDown(); } // End of function f_IS_RLT_MSGF_BV_02 } // End of group mapeMessageProcessing } // End of module ItsMapem_TpFunctions