/** * @author ETSI / STF422_EETS * @version $URL:$ * $Id:$ * @desc FAST networking & transport layer protocol (ISO 29281-2) test cases */ module ItsFntp_TestCases { // Libcommon import from LibCommon_BasicTypesAndValues { const c_uInt8Max }; import from LibCommon_VerdictControl all; import from LibCommon_Sync all; // LibIts import from CALMllsap language "ASN.1:1997" { type INsapPrimitivesDown, INsapPrimitivesUp }; import from CALMfntp language "ASN.1:1997" { type FNTPNPDU, FNTPpacketCounter }; import from CALMmsap language "ASN.1:1997" { type CommandRef }; import from LibItsMgt_Functions { function f_getNextCommandRef }; import from LibItsFntp_TypesAndValues all; import from LibItsFntp_Templates all; import from LibItsFntp_Functions all; import from LibItsFntp_Pics all; import from LibItsMgt_Templates { template m_mgtMnSapRequestReq }; import from LibItsCalm_TestSystem { type ItsCalmSystem }; import from LibItsCalm_Interface { type ItsCalm; function f_utCommandRequestConfirm }; // 7.6 Transmitting Packets group transmittingPackets { // 7.6.2 Basic procedure group basicProcedure { group validBehavior { /** * @desc Single-hop broadcast transmission request with known VCI *
                 * Pics Selection: PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support of the local port number of the ITS-S application
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted single hop BC transmission request
                 *      }
                 *      then {
                 *          the IUT generates a basic FNTP NPDU, and forwards it to the BC-VCI(s) for transmission
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/BP/BV/01 */ testcase TC_FNTP_TXP_BP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_basicNpdu; // Test control if (not(PICS_ROLE_RH)) { log("*** TC_FNTP_TXP_BP_BV_01: ERROR: 'PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_BP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdBc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_nHopNfFntpOptions(f_getIutShopValue())), //Content of the FNTP control field in the FNTP extended header mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_TXP_BP_BV_01: INFO: Formatted single hop BC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_basicNpdu); if (match(v_basicNpdu, mdw_fntpBasicNpdu(vc_portNumber, f_getIutRemotePortNumberValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_TXP_BP_BV_01: PASS: Received basic FNTP NPDU as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_BP_BV_01: FAIL: Unexpected basic FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_TXP_BP_BV_01: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_BP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_TXP_BP_BV_01 /** * @desc Single-hop unicast transmission request with known VCI *
                 * Pics Selection: PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support of the local port number of the ITS-S application
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted single hop UC transmission request
                 *      }
                 *      then {
                 *          the IUT generates a basic FNTP NPDU, and forwards it to the UC-VCI for transmission
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/BP/BV/02 */ testcase TC_FNTP_TXP_BP_BV_02() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_basicNpdu; // Test control if (not(PICS_ROLE_RH)) { log("*** TC_FNTP_TXP_BP_BV_02: ERROR: 'PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_setupKnownPeerStation(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_BP_BV_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdUc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_nHopNfFntpOptions(f_getIutShopValue())), //Content of the FNTP control field in the FNTP extended header mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_TXP_BP_BV_02: INFO: Formatted single hop UC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutWlRemoteCiidUc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutDestLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_basicNpdu); if (match(v_basicNpdu, mdw_fntpBasicNpdu(vc_portNumber, ?))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_TXP_BP_BV_02: PASS: Received basic FNTP NPDU ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_BP_BV_02: FAIL: Unexpected basic FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_TXP_BP_BV_02: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_BP_BV_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_TXP_BP_BV_02 } // End of group validBehavior // TODO BI shall be revised by ISO when concept of flows in architecture standard ISO 21217 will be done // group invalidBehavior { // // /** // * @desc Single hop broadcast transmission request with unknown VCI // *
//                 * Pics Selection: PICS_ROLE_RH
//                 * Config Id: CF01
//                 * Initial conditions: 
//                 *  with {
//                 *      the IUT having an FNTP forwarding table with no entry of the required BC-VCI, 
//                 *      but with an entry for another BC-VCI properly serving the ITS-S application
//                 *  }
//                 * Expected behaviour:
//                 *  evaluate whether {
//                 *      when { 
//                 *          the IUT having received a correctly formatted single hop BC transmission request
//                 *      }
//                 *      then {
//                 *          the IUT reports failure of delivery
//                 *      }
//                 *  }
//                 * 
// * // * @version 0.0.9 // * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/BP/BI/01 // */ // testcase TC_FNTP_TXP_BP_BI_01() runs on ItsCalm system ItsCalmSystem { // // Local variables // // // Test control // if (not PICS_ROLE_RH) { // log("*** TC_FNTP_TXP_BP_BI_01: ERROR: 'PICS_ROLE_RH' required for executing the TC ***"); // stop; // } // // // Test component configuration // f_cf01Up(); // Combined Host-Router // // // Test adapter configuration // // // Preamble // // Clause 'Initial conditions' // f_initializeFntpForwardingTable(f_getIutAppPortValue()); // f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // log("*** TC_FNTP_TXP_BP_BI_01: INFO: Preamble: FNTP forwarding Table was not setup properly ***"); // // // Test Body // // Clause 'when' // f_utCommandRequestConfirm( // m_generateNfFntpCommRequest( // f_getNextCommandRef(), // Unique cyclic reference number of command // vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation // f_getIutWlLinkIdUnknownBc(), // Identifies an unknown VCI to be used to transmit the packet // f_getIutItsFpdu(), // Contains the endpoint payload EPDU // md_nHopNfFntpOptions(f_getIutShopValue())), //Content of the FNTP control field in the FNTP extended header // mdw_fntpCommConfirm_unspecFailure, // Failure expected // true, // vc_utCommandConf); // log("*** TC_FNTP_TXP_BP_BI_01: INFO: FNTP-COMMAND.request done ***"); // // Clause 'then' // tc_noac.start; // No message expected // alt { // [] fntpPort.receive { // tc_noac.stop; // f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); // log("*** TC_FNTP_TXP_BP_BI_01: FAIL: No message was expected ***"); // } // [] tc_noac.timeout { // f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); // log("*** TC_FNTP_TXP_BP_BI_01: PASS: No message received as expected ***"); // } // } // End of 'alt' statement // log("*** TC_FNTP_TXP_BP_BI_01: INFO: test body done ***"); // // // Postamble // f_poDefault(); // f_cf01Down(); // // } // End of testcase TC_FNTP_TXP_BP_BI_01 // // /** // * @desc Single hop unicast transmission request with unknown VCI // *
//                 * Pics Selection: PICS_ROLE_RH
//                 * Config Id: CF01
//                 * Initial conditions: 
//                 *  with {
//                 *      the IUT having an FNTP forwarding table with no entry of the required BC-VCI, 
//                 *      but with an entry for another BC-VCI properly serving the ITS-S application
//                 *  }
//                 * Expected behaviour:
//                 *  evaluate whether {
//                 *      when { 
//                 *          the IUT having received a correctly formatted single hop UC transmission request for delivery via a non-existent UC-VCI
//                 *      }
//                 *      then {
//                 *          the IUT reports failure of delivery
//                 *      }
//                 *  }
//                 * 
// * // * @version 0.0.9 // * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/BP/BI/02 // */ // testcase TC_FNTP_TXP_BP_BI_02() runs on ItsCalm system ItsCalmSystem { // // Local variables // // // Test control // if (not PICS_ROLE_RH) { // log("*** TC_FNTP_TXP_BP_BI_02: ERROR: 'PICS_ROLE_RH' required for executing the TC ***"); // stop; // } // // // Test component configuration // f_cf01Up(); // Combined Host-Router // // // Test adapter configuration // // // Preamble // // Clause 'Initial conditions' // f_initializeFntpForwardingTable(f_getIutAppPortValue()); // f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // log("*** TC_FNTP_TXP_BP_BI_02: INFO: Preamble: FNTP forwarding Table was not setup properly ***"); // // // Test Body // f_utCommandRequestConfirm( // m_generateNfFntpCommRequest( // f_getNextCommandRef(), // Unique cyclic reference number of command // vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation // f_getIutWlLinkIdUnknownUc(), // Identifies an unknown VCI to be used to transmit the packet // f_getIutItsFpdu(), // Contains the endpoint payload EPDU // md_nHopNfFntpOptions(f_getIutShopValue())), //Content of the FNTP control field in the FNTP extended header // mdw_fntpCommConfirm_unspecFailure, // Failure expected // true, // vc_utCommandConf); // f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); // tc_noac.start; // No message expected // alt { // [] fntpPort.receive { // tc_noac.stop; // f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); // log("*** TC_FNTP_TXP_BP_BI_02: FAIL: No message was expected ***"); // } // [] tc_noac.timeout { // f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); // log("*** TC_FNTP_TXP_BP_BI_02: PASS: No message received as expected ***"); // } // } // End of 'alt' statement // log("*** TC_FNTP_TXP_BP_BI_02: INFO: test body done ***"); // // // Postamble // f_poDefault(); // f_cf01Down(); // // } // End of testcase TC_FNTP_TXP_BP_BI_02 // // } // End of group invalidBehavior } // End of group basicProcedure // 7.6.3 Extended procedure group extendedProcedure { group validBehavior { /** * @desc N-hop broadcast transmission request with known VCI *
                 * Pics Selection: PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support of the local port number of the ITS-S application
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted N-hop BC transmission request
                 *      }
                 *      then {
                 *          the IUT generates an extended FNTP NPDU, and forwards it to the BC-VCI(s) for transmission
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/EP/BV/01 */ testcase TC_FNTP_TXP_EP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not(PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC)) { log("*** TC_FNTP_TXP_EP_BV_01: ERROR: 'PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_EP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdBc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_nHopNfFntpOptions(f_getIutNhopsValue())),//Content of the FNTP control field in the FNTP extended header mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_TXP_EP_BV_01: INFO: Formatted N-hop BC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match(v_extendedNpdu, mdw_fntpExtendedNpdu(vc_portNumber, ?))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_TXP_EP_BV_01: PASS: Received extended N-hops FNTP NPDU as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_EP_BV_01: FAIL: Unexpected extended N-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_TXP_EP_BV_01: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_EP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_TXP_EP_BV_01 }// End of group validBehavior group invalidBehavior { // TODO BI shall be revised by ISO when concept of flows in architecture standard ISO 21217 will be done // /** // * @desc N-hop broadcast transmission request with unknown VCI // *
//                 * Pics Selection: PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC
//                 * Config Id: CF01
//                 * Initial conditions: 
//                 *  with {
//                 *      the IUT having an FNTP forwarding table with no entry of the required BC-VCI, 
//                 *      but with an entry for another BC-VCI properly serving the ITS-S application
//                 *  }
//                 * Expected behaviour:
//                 *  evaluate whether {
//                 *      when { 
//                 *          the IUT having received a correctly formatted N-hop BC transmission request
//                 *      }
//                 *      then {
//                 *          the IUT reports failure of delivery
//                 *      }
//                 *  }
//                 * 
// * // * @version 0.0.9 // * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/EP/BI/01 // */ // testcase TC_FNTP_TXP_EP_BI_01() runs on ItsCalm system ItsCalmSystem { // // Local variables // // // Test control // if (not(PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC)) { // log("*** TC_FNTP_TXP_EP_BI_01: ERROR: 'PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); // stop; // } // // // Test component configuration // f_cf01Up(); // Combined Host-Router // // // Test adapter configuration // // // Preamble // // Clause 'Initial conditions' // f_initializeFntpForwardingTable(f_getIutAppPortValue()); // f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // log("*** TC_FNTP_TXP_EP_BI_01: INFO: Preamble: FNTP forwarding Table was not setup properly ***"); // // // Test Body // // Clause 'when' // f_utCommandRequestConfirm( // m_generateNfFntpCommRequest( // f_getNextCommandRef(), // Unique cyclic reference number of command // vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation // f_getIutWlLinkIdUnknownBc(), // Identifies an unknown VCI to be used to transmit the packet // f_getIutItsFpdu(), // Contains the endpoint payload EPDU // md_nHopNfFntpOptions(f_getIutNhopsValue())),//Content of the FNTP control field in the FNTP extended header // mdw_fntpCommConfirm_unspecFailure, // Failure expected // true, // vc_utCommandConf); // log("*** TC_FNTP_TXP_EP_BI_01: INFO: FNTP-COMMAND.request done ***"); // // Clause 'then' // tc_noac.start; // No message expected // alt { // [] fntpPort.receive { // tc_noac.stop; // f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); // log("*** TC_FNTP_TXP_EP_BI_01: FAIL: No message was expected ***"); // } // [] tc_noac.timeout { // f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); // log("*** TC_FNTP_TXP_EP_BI_01: PASS: No message received as expected ***"); // } // } // End of 'alt' statement // log("*** TC_FNTP_TXP_EP_BI_01: INFO: test body done ***"); // // // Postamble // f_poDefault(); // f_cf01Down(); // // } // End of testcase TC_FNTP_TXP_EP_BI_01 /** * @desc N-hop broadcast transmission request with invalid FNTP control field, and with known VCI *
                 * Pics Selection: PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support the local port number of the ITS-S application
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received an N-hop BC transmission request with non-supported bits in "controlField" also set to 1
                 *      }
                 *      then {
                 *          the IUT reports failure of delivery
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/EP/BI/02 */ testcase TC_FNTP_TXP_EP_BI_02() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC)) { log("*** TC_FNTP_TXP_EP_BI_02: ERROR: 'PICS_EXT and PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_EP_BI_02: INFO: Preamble: FNTP forwarding Table was not setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdBc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_nonSupportedFntpControlField), // NFfntpCommRequest message with unsupported control field mdw_fntpCommConfirm_unspecFailure, // Failure expected true, vc_utCommandConf); log("*** TC_FNTP_TXP_EP_BI_02: INFO: FNTP-COMMAND.request done ***"); // Clause 'then' tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_EP_BI_02: FAIL: No message was expected ***"); } [] tc_noac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_TXP_EP_BI_02: PASS: No message received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_EP_BI_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_TXP_EP_BI_02 } // End of group invalidBehavior } // End of group extendedProcedure // 7.6.4 Forwarding procedure group forwardingProcedure { group validBehavior { /** * @desc TX from ITS-S host *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support of the requested local port numbers of the ITS-S application
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted single hop BC transmission request for delivery via a VCI contained in a different ITS-SCU
                 *      }
                 *      then {
                 *          the IUT generates an FNTP forwarding NPDU, and forwards it to the BC-VCI for transmission to the selected ITS-S router
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/FP/BV/01 */ testcase TC_FNTP_TXP_FP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_TXP_FP_BV_01: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Router only or Host only // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_FP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutLanLinkIdBc(), // Broadcast message with a different ITS-SCU f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_nHopNfFntpOptions(f_getIutShopValue())), //Content of the FNTP control field in the FNTP extended header mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_TXP_FP_BV_01: INFO: Formatted single hop BC transmission request for delivery via a VCI contained in a different ITS-SCU done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if(match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, f_getIutShopValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_TXP_FP_BV_01: PASS: Received extended N-hops FNTP NPDU as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_FP_BV_01: FAIL: Unexpected extended N-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_TXP_FP_BV_01: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_FP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_TXP_FP_BV_01 /** * @desc RX at ITS-S router *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support of an ITS-S application in an ITS-S host
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received an FNTP station-internal forwarding NPDU containing a correctly formatted FNTP basic NPDU for single hop BC transmission
                 *      }
                 *      then {
                 *          the IUT extracts the FNTP basic NPDU, and forwards it to the BC-VCI for transmission via the IN-SAP
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/FP/BV/02 */ testcase TC_FNTP_TXP_FP_BV_02() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_TXP_FP_BV_02: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_FP_BV_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpForwardingNpdu( { portLong := c_portHst }, // From host { portLong := c_portRtr }, // To router f_getIutForwardingSrcPort(), // Forwarding source port f_getIutForwardingDestPort(), // Forwarding destination port m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), 0, f_getIutShopValue() // S-Hop ); log("*** TC_FNTP_TXP_FP_BV_02: INFO: FNTP station-internal forwarding NPDU containing a correctly formatted FNTP basic NPDU for single hop BC transmission done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, ?))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_TXP_FP_BV_02: PASS: Received forwarding S-Hop FNTP NPDU as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_FP_BV_02: FAIL: Unexpected forwarding S-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_TXP_FP_BV_02: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_FP_BV_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_TXP_FP_BV_02 /** * @desc TX from ITS-S host - increment of Counter *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support of the requested local port numbers of the ITS-S application 
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a sequence of correctly formatted single hop BC transmission requests for delivery via a VCI contained in a different ITS-SCU, with the number of requests such that at least once the "Counter" value before increment is different to 255, 
                 *          and at least once it is equal to 255
                 *      }
                 *      then {
                 *          the IUT generates an FNTP forwarding NPDU for every request, with the "Counter" value in an FNTP forwarding NPDU equal to the "Counter" value from the previous FNTP forwarding NPDU incremented by one with a wrap around from the value 255 to 0
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/FP/BV/03 */ testcase TC_FNTP_TXP_FP_BV_03() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; var integer v_counter; // Index used for loop var template FNTPpacketCounter v_fntpPacketCounter; // Expected FNTPpacketCounter value // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_TXP_FP_BV_03: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_FP_BV_03: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' v_fntpPacketCounter := ?; // First loop, the fntpPacketCounter is unknown v_counter := 0; // Send first formatted single hop BC transmission request f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutLanLinkIdBc(), // Broadcast message with a different ITS-SCU f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_nHopNfFntpOptions(f_getIutShopValue())), //Content of the FNTP control field in the FNTP extended header mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_TXP_FP_BV_03: INFO: First formatted single hop BC transmission request for delivery via a VCI contained in a different ITS-SCU done ***"); // Clause 'then' // Process first expected FNTP forwarding NPDU tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; log("*** TC_FNTP_TXP_FP_BV_03: INFO: Received next FNTP forwarding NPDU ***"); f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), v_fntpPacketCounter, f_getIutShopValue())) == false) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_FP_BV_03: ERROR: Received unexpected FNTP packet couneter value ***"); } else if (v_counter < 258) { // Send next formatted single hop BC transmission request v_counter := v_counter + 1; v_fntpPacketCounter := (v_forwardingNpdu.header.options.intForw.counter + 1) mod (c_uInt8Max + 1); // Apply modulus 256 here f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), vc_portNumber, f_getIutLanLinkIdBc(), f_getIutItsFpdu(), md_nHopNfFntpOptions(f_getIutShopValue())), mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_TXP_FP_BV_03: INFO: Second formatted single hop BC transmission request done ***"); repeat; // Continue the processing } else { // Here, the counter has passed the wrap around fromt the value 255 to 0 log("*** TC_FNTP_TXP_FP_BV_03: PASS: The counter has passed the wrap around fromt the value 255 to 0 ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_TXP_FP_BV_03: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_FP_BV_03: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_TXP_FP_BV_03 } // End of group validBehavior group invalidBehavior { /** * @desc TX from ITS-S host - unknown access to ITS station-internal network *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with no entry related to an ITS station-internal network
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted single hop BC transmission request for delivery via a VCI contained in a different ITS-SCU
                 *      }
                 *      then {
                 *          the IUT reports failure of delivery
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/TXP/FP/BI/01 */ // FIXME Implementation shall be reviewed during ATS validation testcase TC_FNTP_TXP_FP_BI_01() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_TXP_FP_BI_01: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); // FIXME Use MGT to delete entries in forwarding table // Table D.6 — MN-COMMAND.request for MN-COMMAND FWTdelete f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_TXP_FP_BI_01: INFO: Preamble: FNTP forwarding Table was not setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutLanLinkIdBc(), // Broadcast message with a different ITS-SCU f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_nHopNfFntpOptions(f_getIutShopValue())), //Content of the FNTP control field in the FNTP extended header mdw_fntpCommConfirm_unspecFailure, // Failure expected true, vc_utCommandConf); log("*** TC_FNTP_TXP_FP_BI_01: INFO: FNTP-COMMAND.request done ***"); // Clause 'then' tc_noac.start; // No more message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_TXP_FP_BI_01: FAIL: No message was expected on FNTP port ***"); } [] tc_noac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_TXP_FP_BI_01: PASS: No message received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_TXP_FP_BI_01: INFO: test body done ***"); // Postamble // f_unInitializeFntpForwardingTable(); f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_TXP_FP_BI_01 } // End of group invalidBehavior } // End of group forwardingProcedure } // End of group transmittingPackets // 7.7 Transmitting Packets group receivingPackets { // 7.7.3 Basic delivery procedure group basicProcedure { group validBehavior { /** * @desc Single hop unicast reception from peer station *
                 * Pics Selection: PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an entry in the FNTP forwarding table with Service Port such that no ITS station-internal forwarding is needed
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted unicast packet from the peer station via the IN-SAP
                 *      }
                 *      then {
                 *          the IUT forwards the message to the endpoint selected by the Service Port
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BV/01 */ testcase TC_FNTP_RXP_BP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH)) { log("*** TC_FNTP_RXP_BP_BV_01: ERROR: 'PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutRemotePortNumberValue()); f_setupKnownPeerStation(); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( // FIXME Do we use the cfPort? f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidUc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidUc(), f_getIutWlLocalCiid())), // Local station service address f_getIutShopValue() ); log("*** TC_FNTP_RXP_BP_BV_01: INFO: FNTP extended NPDU for single hop UC reception done ***"); // Clause 'then' tc_ac.start; alt { [] utPort.receive(mdw_checkNfFntpCommIndication( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidUc(), f_getIutDestLocalCiid()) // Source address of DL-UNITDATA.request primitive )) { tc_ac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_BP_BV_01: PASS: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BV_01: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_BP_BV_01: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BV_01 /** * @desc Single hop unicast reception from unknown peer station *
                 * Pics Selection: PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an entry in the FNTP forwarding table for a Service Port, 
                 *      but no entry for the peer station
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted unicast packet from the peer station via the IN-SAP
                 *      }
                 *      then {
                 *          the IUT forwards the message to the endpoint selected by the Service Port,
                 *          the ITU informs the management about the new peer ITS-S

                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BV/02 */ testcase TC_FNTP_RXP_BP_BV_02() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH)) { log("*** TC_FNTP_RXP_BP_BV_02: ERROR: 'PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BV_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidUc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidUc(), f_getIutWlLocalCiid())), // Local station service address f_getIutShopValue() ); log("*** TC_FNTP_RXP_BP_BV_02: INFO: FNTP extended NPDU for single hop UC reception done ***"); // Clause 'then' tc_ac.start; alt { [] utPort.receive(mdw_checkNfFntpCommIndication( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidUc(), f_getIutDestLocalCiid()) // Source address of DL-UNITDATA.request primitive )) { tc_ac.stop; log("*** TC_FNTP_RXP_BP_BV_02: PASS: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BV_02: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_BP_BV_02: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BV_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BV_02 /** * @desc Single hop broadcast reception from peer station *
                 * Pics Selection: PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an entry in the FNTP forwarding table for a Service Port such that no ITS station-internal forwarding is needed
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast packet from the peer station via the IN-SAP
                 *      }
                 *      then {
                 *          the IUT forwards the message to the endpoint selected by the Service Port
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BV/03 */ testcase TC_FNTP_RXP_BP_BV_03() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH)) { log("*** TC_FNTP_RXP_BP_BV_03: ERROR: 'PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BV_03: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidUc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidUc(), f_getIutWlLocalCiid())), // Local station service address f_getIutShopValue() ); log("*** TC_FNTP_RXP_BP_BV_03: INFO: FNTP extended NPDU for single hop BC reception done ***"); // Clause 'then' tc_ac.start; alt { [] utPort.receive(mdw_checkNfFntpCommIndication( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidUc(), f_getIutDestLocalCiid()) // Source address of DL-UNITDATA.request primitive )) { tc_ac.stop; log("*** TC_FNTP_RXP_BP_BV_03: PASS: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BV_03: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_BP_BV_03: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BV_03: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BV_03 } // End of group validBehavior group invalidBehavior { /** * @desc Single hop broadcast reception to unknown Service Port *
                 * Pics Selection: PICS_ROLE_RH OR PICS_ROLE_HONLY OR PICS_ROLE_RONLY
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an entry in the FNTP forwarding table for Service Port = port1, 
                 *      but not for Service Port = port2
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast message with a destination Port port2, 
                 *          with port2 different to port1
                 *      }
                 *      then {
                 *          the IUT discards the message
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BI/01 */ testcase TC_FNTP_RXP_BP_BI_01() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY)) { log("*** TC_FNTP_RXP_BP_BI_01: ERROR: 'PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutRemotePortNumberValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BI_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutSecondRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() ); log("*** TC_FNTP_RXP_BP_BI_01: INFO: Broadcast message sent ***"); // Clause 'then' tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_01: FAIL: No message was expected on FNTP port ***"); } [] tc_noac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_BP_BI_01: PASS: No FNTP NPDU received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BI_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BI_01 /** * @desc Single hop broadcast reception to invalid Port PORT_NON *
                 * Pics Selection: PICS_ROLE_RH OR PICS_ROLE_HONLY OR PICS_ROLE_RONLY
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast message with a destination Port PORT_NON
                 *      }
                 *      then {
                 *          the IUT discards the message
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BI/02 */ testcase TC_FNTP_RXP_BP_BI_02() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY)) { log("*** TC_FNTP_RXP_BP_BI_02: ERROR: 'PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BI_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), { portLong := c_portNon }, m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() ); log("*** TC_FNTP_RXP_BP_BI_02: INFO: Broadcast message sent ***"); // Clause 'then' tc_noac.start; alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_02: FAIL: No message was expected on FNTP port ***"); } [] tc_noac.timeout { // the IUT discards the message, no messages expected f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_BP_BI_02: PASS: No FNTP NPDUs received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BI_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BI_02 /** * @desc Single hop broadcast reception from invalid Port PORT_NON *
                 * Pics Selection: PICS_ROLE_RH OR PICS_ROLE_HONLY OR PICS_ROLE_RONLY
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *     the IUT having an entry in the FNTP forwarding table for Service Port = port1
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast message with a destinationPort port1 and a sourcePort PORT_NON
                 *      }
                 *      then {
                 *          the IUT discards the message
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BI/03 */ testcase TC_FNTP_RXP_BP_BI_03() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY)) { log("*** TC_FNTP_RXP_BP_BI_03: ERROR: 'PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutSecondRemotePortNumberValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BI_03: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( { portLong := c_portNon }, f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() ); log("*** TC_FNTP_RXP_BP_BI_03: INFO: Broadcast message sent ***"); // Clause 'then' tc_noac.start; alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_03: FAIL: No message was expected on FNTP port***"); } [] tc_noac.timeout { // the IUT discards the message, no messages expected f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_BP_BI_03: PASS: No FNTP NPDUs received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BI_03: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BI_03 /** * @desc Single hop broadcast reception from invalid port PORT_NON to invalid port PORT_NON *
                 * Pics Selection: PICS_ROLE_RH OR PICS_ROLE_HONLY OR PICS_ROLE_RONLY
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast message with a destinationPort port1 and a sourcePort PORT_NON
                 *      }
                 *      then {
                 *          the IUT discards the message
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BI/04 */ testcase TC_FNTP_RXP_BP_BI_04() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY)) { log("*** TC_FNTP_RXP_BP_BI_04: ERROR: 'PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BI_04: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( { portLong := c_portNon }, { portLong := c_portNon }, m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() ); log("*** TC_FNTP_RXP_BP_BI_04: INFO: Broadcast message sent ***"); // Clause 'then' tc_noac.start; alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_04: FAIL: No message was expected on FNTP port ***"); } [] cfPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_04: FAIL: No message was expected on MN-SAP port ***"); } [] tc_noac.timeout { // the IUT discards the message, no messages expected f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_BP_BI_04: PASS: No FNTP NPDUs received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BI_04: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BI_04 /** * @desc Single hop broadcast reception with invalid pair of ports, one of which is PORT_RTR and the other one is different to PORT_HST *
                 * Pics Selection: PICS_ROLE_RH OR PICS_ROLE_HONLY OR PICS_ROLE_RONLY
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast message with a destinationPort PORT_RTR and a sourcePort different to PORT_HST
                 *      }
                 *      then {
                 *          the IUT discards the message
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BI/05 */ testcase TC_FNTP_RXP_BP_BI_05() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY)) { log("*** TC_FNTP_RXP_BP_BI_05: ERROR: 'PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BI_05: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutRemotePortNumberValue(), { portLong := c_portRtr }, m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() ); log("*** TC_FNTP_RXP_BP_BI_05: INFO: Broadcast message sent ***"); // Clause 'then' tc_noac.start; alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_05: FAIL: No message was expected on FNTP port ***"); } [] cfPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_05: FAIL: No message was expected on MN-SAP port ***"); } [] tc_noac.timeout { // the IUT discards the message, no messages expected f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_BP_BI_05: PASS: No FNTP NPDUs received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BI_05: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BI_05 /** * @desc Single hop broadcast reception with invalid pair of ports, one of which is PORT_HST and the other one is different to PORT_RTR *
                 * Pics Selection: PICS_ROLE_RH OR PICS_ROLE_HONLY OR PICS_ROLE_RONLY
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast message with a destinationPort PORT_RTR and a sourcePort different to PORT_HST
                 *      }
                 *      then {
                 *          the IUT discards the message
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/BP/BI/06 */ testcase TC_FNTP_RXP_BP_BI_06() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY)) { log("*** TC_FNTP_RXP_BP_BI_06: ERROR: 'PICS_ROLE_RH or PICS_ROLE_HONLY or PICS_ROLE_RONLY' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_BP_BI_06: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutRemotePortNumberValue(), { portLong := c_portHst }, m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() ); log("*** TC_FNTP_RXP_BP_BI_06: INFO: Broadcast message sent ***"); // Clause 'then' tc_noac.start; alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_06: FAIL: No message was expected on FNTP port ***"); } [] cfPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_BP_BI_06: FAIL: No message was expected on MN-SAP port ***"); } [] tc_noac.timeout { // the IUT discards the message, no messages expected f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_BP_BI_06: PASS: No FNTP NPDUs received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_BP_BI_06: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_BP_BI_06 } // End of group invalidBehavior } // End of group basicProcedure // 7.7.4 Extended delivery procedure group extendedProcedure { group validBehavior { /** * @desc N-hop broadcast reception with forwarding *
                 * Pics Selection: PICS_ROLE_RH and PICS_NHOPBC
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      stationthe IUT having an FNTP forwarding table with proper entry in support of the local port number of the ITS-S application
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast packet from the peer station via the IN-SAP with FNTP hop count set to 1
                 *      }
                 *      then {
                 *          the IUT forwards the message to the endpoint selected by the Service Port, 
                 *          and, the IUT transmits the received packet in broadcast mode with FNTP hop count set to zero
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/EP/BV/01 */ testcase TC_FNTP_RXP_EP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; // Expected forwarding NPDU // Test control if (not(PICS_ROLE_RH and PICS_NHOPBC)) { log("*** TC_FNTP_RXP_EP_BV_01: ERROR: 'PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_EP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() // N-hops count set to a value larger than 0 ); log("*** TC_FNTP_RXP_EP_BV_01: INFO: Broadcast message sent ***"); // Clause 'then' // 1) The IUT forwards the message to the endpoint selected by the Service Port, tc_ac.start; alt { [] utPort.receive(mdw_checkNfFntpCommIndication( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) // Source address of DL-UNITDATA.request primitive )) { tc_ac.stop; log("*** TC_FNTP_RXP_EP_BV_01: INFO: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BV_01: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_EP_BV_01: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement // 2) And, the IUT transmits the received packet in broadcast mode with FNTP hop count decremented by one tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, f_getIutNhopsValue() - 1))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_EP_BV_01: PASS: IUT transmits the received packet in BC mode ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BV_01: FAIL: Unexpected extended N-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_EP_BV_01: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_EP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_EP_BV_01 /** * @desc N-hop broadcast reception with no more forwarding (last hop test) *
                 * Pics Selection: PICS_ROLE_RH and PICS_NHOPBC
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an FNTP forwarding table with proper entry in support of  the local port number of the ITS-S application
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast packet from the peer station via the IN-SAP with FNTP hop count set to 0
                 *      }
                 *      then {
                 *          the IUT forwards the message to the endpoint selected by the Service Port, 
                 *          and, the IUT does not transmit the received packet
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/EP/BV/02 */ testcase TC_FNTP_RXP_EP_BV_02() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH and PICS_NHOPBC)) { log("*** TC_FNTP_RXP_EP_BV_02: ERROR: 'PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_EP_BV_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutShopValue() // S-hop count set to 0 ); log("*** TC_FNTP_RXP_EP_BV_02: INFO: Broadcast message sent ***"); // Clause 'then' // 1) The IUT forwards the message to the endpoint selected by the Service Port, tc_ac.start; alt { [] utPort.receive(mdw_checkNfFntpCommIndication( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) // Source address of DL-UNITDATA.request primitive )) { tc_ac.stop; log("*** TC_FNTP_RXP_EP_BV_02: INFO: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BV_02: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_EP_BV_02: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement // 2) And, the IUT does not transmit the received packet tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BV_02: FAIL: No message was expected ***"); } [] tc_noac.timeout { // And, the IUT does not transmit the received packet f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_EP_BV_02: PASS: No message received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_EP_BV_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_EP_BV_02 /** * @desc N-hop broadcast reception to unknown Service Port with forwarding *
                 * Pics Selection: PICS_ROLE_RH and PICS_NHOPBC
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having no entry in the FNTP forwarding table for Service Port 
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast packet with unknown destination Port from a peer station via the IN-SAP with FNTP hop count set to a value larger than 0
                 *      }
                 *      then {
                 *          the IUT transmits the received packet in broadcast mode with FNTP hop count set to 0, 
                 *          and, the IUT discards the packet
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/EP/BV/03 */ testcase TC_FNTP_RXP_EP_BV_03() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; // Expected forwarding NPDU var boolean v_inSapMessageReceived := false; // Test control if (not(PICS_ROLE_RH and PICS_NHOPBC)) { log("*** TC_FNTP_RXP_EP_BV_03: ERROR: 'PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' // Nothing to do f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_EP_BV_03: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address f_getIutNhopsValue() //hop count set to a value larger than 0 ); log("*** TC_FNTP_RXP_EP_BV_03: INFO: Broadcast message sent ***"); // Clause 'then' tc_ac.start; tc_noac.start; alt { [] utPort.receive { // No message is expected on NF-SAP tc_noac.stop; tc_ac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BV_03: FAIL: No message was expected on NF-SAP ***"); } [] tc_noac.timeout { log("*** TC_FNTP_RXP_EP_BV_03: INFO: No message received as expected ***"); if (v_inSapMessageReceived == false) { repeat; } } [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; v_inSapMessageReceived := true; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, f_getIutNhopsValue() - 1))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_EP_BV_03: PASS: IUT transmits the received packet in BC mode ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BV_03: FAIL: Unexpected extended N-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_EP_BV_03: INCONC: the IUT discards the packet ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_EP_BV_03: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_EP_BV_03 /** * @desc N-hop broadcast reception to unknown Service Port without forwarding *
                 * Pics Selection: PICS_ROLE_RH and PICS_NHOPBC
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having no entry in the FNTP forwarding table for Service Port 
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast packet with unknown destination Port from a peer station via the IN-SAP with FNTP hop count set to 0
                 *      }
                 *      then {
                 *          the IUT discards the packet, 
                 *          and, does not transmit the received packet
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/EP/BV/04 */ testcase TC_FNTP_RXP_EP_BV_04() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH and PICS_NHOPBC)) { log("*** TC_FNTP_RXP_EP_BV_04: ERROR: 'PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' // Nothing to do log("*** TC_FNTP_RXP_EP_BV_04: INFO: Preamble: FNTP forwarding Table was setup properly ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address 0 ); log("*** TC_FNTP_RXP_EP_BV_04: INFO: Broadcast message sent ***"); // Clause 'then' tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BV_04: FAIL: No message was expected ***"); } [] tc_noac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_EP_BV_04: PASS: No FNTP NPDUs received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_EP_BV_04: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_EP_BV_04 } // End of group validBehavior group invalidBehavior { /** * @desc N-hop broadcast reception with a furthur but unknown FNTP control field value *
                 * Pics Selection: PICS_ROLE_RH and PICS_NHOPBC
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having setup properly the FNTP forwarding table 
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a broadcast packet with invalid value in the FNTP control field from a peer station via the IN-SAP with FNTP hop count set to a value larger than 0
                 *      }
                 *      then {
                 *          the IUT discards the packet, 
                 *          and, does not transmit the received packet
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/EP/BI/01 */ testcase TC_FNTP_RXP_EP_BI_01() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ROLE_RH and PICS_NHOPBC)) { log("*** TC_FNTP_RXP_EP_BI_01: ERROR: 'PICS_ROLE_RH and PICS_NHOPBC' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_EP_BI_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpduInvalidCtrlField( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), // Local station service address 10 ); log("*** TC_FNTP_RXP_EP_BI_01: INFO: Broadcast message with invalid control fields sent ***"); // Clause 'then' tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BI_01: FAIL: No message was expected ***"); } [] tc_noac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_EP_BI_01: PASS: No message received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_EP_BI_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_EP_BI_01 /** * @desc Reception of packet with not supported / invalid FNTP control field value *
                 * Pics Selection: PICS_EXT and PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having setup properly the FNTP forwarding table, 
                 *      but without entry for the peer station
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a broadcast packet with not supported / illegal value (e.g. bit 5 set to 1) from a peer station via the IN-SAP
                 *      }
                 *      then {
                 *          the IUT discards the packet
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/EP/BI/02 */ testcase TC_FNTP_RXP_EP_BI_02() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_EXT and PICS_ROLE_RH)) { log("*** TC_FNTP_RXP_EP_BI_02: ERROR: 'PICS_EXT and PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_EP_BI_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpduInvalidBitSet( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station service address m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())) // Local station service address ); // Clause 'then' tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_EP_BI_02: FAIL: No message was expected ***"); } [] tc_noac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_EP_BI_02: PASS: No message received as expected ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_EP_BI_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_RXP_EP_BI_02 } // End of group invalidBehavior } // End of group extendedProcedure // 7.7.6 Forwarded delivery procedure group forwardedProcedure { group validBehavior { /** * @desc TX from ITS-S router to ITS-S host *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a packet from a peer station requiring local forwarding via the ITS station-internal network
                 *      }
                 *      then {
                 *          the IUT constructs an FNTP forwarding NPDU and transmits it via the BC-VCI connected to the ITS station-internal network
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/FP/BV/01 */ testcase TC_FNTP_RXP_FP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; // Expected forwarding NPDU // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_RXP_FP_BV_01: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_FP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpForwardingNpdu( { portLong := c_portRtr }, // From ITS-S router { portLong := c_portHst }, // To ITS-S host f_getIutForwardingSrcPort(), // Forwarding source port f_getIutForwardingDestPort(), // Forwarding destination port m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station is the source m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), // Router is the destination 0, f_getIutShopValue() // S-Hop ); log("*** TC_FNTP_RXP_FP_BV_01: INFO: Formatted UC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, ?))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_FP_BV_01: PASS: Received FNTP forwarding NPDU as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_FP_BV_01: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_FP_BV_01: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_FP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_RXP_FP_BV_01 /** * @desc TX from ITS-S router - Increment of Counter *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up ptoperly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having receivd a sequence of packets from a peer station requiring local forwarding via the ITS station-internal network, 
                 *          with the number of packets such that at least once the "Counter" value before increment is different to 255, 
                 *          and at least once it is equal to 255
                 *      }
                 *      then {
                 *          the IUT generates an FNTP forwarding NPDU for every request, 
                 *          with the Counter value in the second FNTP forwarding NPDU equal to the Counter value from the first FNTP forwarding NPDU incremented by onevalue and transmits it via the BC-VCI connected to the ITS station-internal network
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/FP/BV/02 */ testcase TC_FNTP_RXP_FP_BV_02() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; var integer v_counter; // Index used for loop var template (value) FNTPpacketCounter v_fntpPacketCounter; // Expected FNTPpacketCounter value // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_RXP_FP_BV_02: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_FP_BV_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' v_counter := 250; v_fntpPacketCounter := v_counter; f_acGenerateFntpForwardingNpdu( { portLong := c_portRtr }, // From ITS-S router { portLong := c_portHst }, // To ITS-S host f_getIutForwardingSrcPort(), // Forwarding source port f_getIutForwardingDestPort(), // Forwarding destination port m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station is the source m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), // Router is the destination v_fntpPacketCounter, f_getIutShopValue() // S-Hop ); // Prepare expected value v_counter := v_counter + 1; v_fntpPacketCounter := v_counter; // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; log("*** TC_FNTP_RXP_FP_BV_02: INFO: Received next FNTP forwarding NPDU ***"); f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), v_fntpPacketCounter, ?)) == false) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_FP_BV_02: ERROR: Received unexpected FNTP packet couneter value ***"); } else if (v_counter < 258) { // Prepare expected value v_counter := v_counter + 1; v_fntpPacketCounter := v_counter mod (c_uInt8Max + 1); // Apply modulus 256 here log("*** TC_FNTP_RXP_FP_BV_02: INFO: Second formatted single hop BC transmission request done ***"); repeat; // Continue the processing } else { // Here, the counter has passed the wrap around fromt the value 255 to 0 log("*** TC_FNTP_RXP_FP_BV_02: PASS: The counter has passed the wrap around fromt the value 255 to 0 ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_FP_BV_02: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_FP_BV_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_RXP_FP_BV_02 /** * @desc RX at ITS-S host *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received an FNTP station-internal forwarding NPDU containing a correctly fornmated FNTP basic NPDU
                 *      }
                 *      then {
                 *          the IUT extracts the FNTP basic NPDU, 
                 *          and notifies its reception to the required port
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/FP/BV/04 */ testcase TC_FNTP_RXP_FP_BV_03() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_RXP_FP_BV_03: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_FP_BV_03: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpForwardingNpdu( { portLong := c_portRtr }, // From ITS-S router { portLong := c_portHst }, // To ITS-S host f_getIutForwardingSrcPort(), // Forwarding source port vc_portNumber, // Forwarding destination port is this ITS-S m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station is the source m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), // Router is the destination 0, f_getIutShopValue() // S-Hop ); // Clause 'then' tc_ac.start; alt { [] utPort.receive(mdw_checkNfFntpCommIndication( vc_portNumber, // Destination port of DL-UNITDATA.request primitive f_getIutForwardingSrcPort(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()) // Source address of DL-UNITDATA.request primitive )) { tc_ac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_RXP_FP_BV_03: PASS: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_FP_BV_03: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_RXP_FP_BV_03: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement log("*** TC_FNTP_RXP_FP_BV_03: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_RXP_FP_BV_03 /** * @desc RX at ITS-S host - wrong ITS-SCU-ID *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having an ITS-SCU-ID different to the requested one
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received an FNTP station-internal forwarding NPDU containing a correctly formatted FNTP basic NPDU, 
                 *          but the ITS-SCU-ID indicates a different ITS-SCU
                 *      }
                 *      then {
                 *          the IUT discards the packet
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/FP/BV/04 */ testcase TC_FNTP_RXP_FP_BV_04() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_RXP_FP_BV_04: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_FP_BV_04: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpForwardingNpduWithUnknownItsSciId( { portLong := c_portRtr }, // From ITS-S router { portLong := c_portHst }, // To ITS-S host f_getIutForwardingSrcPort(), // Forwarding source port f_getIutServicePortValue(), // Forwarding destination port is this ITS-S m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station is the source m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), // Router is the destination 0, f_getIutShopValue() // S-Hop ); // Clause 'then' tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_FP_BV_04: FAIL: No message was expected ***"); } [] tc_noac.timeout { log("*** TC_FNTP_RXP_FP_BV_04: PASS: No message received as expected ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } } // End of 'alt' statement log("*** TC_FNTP_RXP_FP_BV_04: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_RXP_FP_BV_04 } // End of group validBehavior group invalidBehavior { /** * @desc RX at ITS-S host - unknown Service Port *
                 * Pics Selection: PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having no more entry for the required Service Port
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received an FNTP station-internal forwarding NPDU containing a correctly formatted FNTP basic NPDU, but the Service Port is no more known
                 *      }
                 *      then {
                 *          the IUT discards the packet
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/RXP/FP/BI/01 */ testcase TC_FNTP_RXP_FP_BI_01() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_RXP_FP_BI_01: ERROR: 'PICS_ITS_S_INW and (PICS_ROLE_RONLY or PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions': nothing to do f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_RXP_FP_BI_01: INFO: Preamble done ***"); // Test Body // Clause 'when' f_acGenerateFntpForwardingNpdu( { portLong := c_portRtr }, // From ITS-S router { portLong := c_portHst }, // To ITS-S host f_getIutForwardingSrcPort(), // Forwarding source port f_getIutServicePortValue(), // Forwarding destination port is this ITS-S m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), // Peer station is the source m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), // Router is the destination 0, f_getIutShopValue() // S-Hop ); // Clause 'then' tc_noac.start; // No message expected alt { [] fntpPort.receive { tc_noac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_RXP_FP_BI_01: FAIL: No message was expected ***"); } [] tc_noac.timeout { log("*** TC_FNTP_RXP_FP_BI_01: PASS: No message received as expected ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } } // End of 'alt' statement log("*** TC_FNTP_RXP_FP_BI_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_RXP_FP_BI_01 } // End of group invalidBehavior } // End of group forwardedProcedure } // End of group receivingPackets // 7.10 CI parameter management group cipManagement { // 7.10. Basic procedure N/A group basicProcedure { group validBehavior { } // End of group validBehavior group invalidBehavior { } // End of group invalidBehavior } // End of group basicProcedure // 7.10.x Extended procedure group extendedProcedure { group validBehavior { /** * @desc CIP in NPDU for single-hop BC transmission *
                 * Pics Selection: PICS_CIP and PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having setup properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted single hop BC transmission request with CIPs indicated in the NF-FNTP-COMM.request service primitive
                 *      }
                 *      then {
                 *          the IUT generates an FNTP extended NPDU with CIPs included, and forwards it to the proper BC-VCI with access_parameters in the IN-SAP service primitive set equal to the CIPs
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/EP/BV/01 */ testcase TC_FNTP_CIP_EP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not((PICS_CIP and PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_EP_BV_01: ERROR: 'PICS_CIP and PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_EP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdBc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_cipNfFntpOptions( // Contains CIP indication f_getIutShopValue(), ''O, f_getIutTxCipValue())), mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_CIP_EP_BV_01: INFO: Formatted BC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), f_getIutTxCipValue() ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match( v_extendedNpdu, mw_fntpExtendedNpduCip( ''O, // For transmission, RX parameter shall be empty - See ISO/CD 21218 - Clause 8.5 f_getIutTxCipValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_EP_BV_01: PASS: Received extended FNTP NPDU with CIPs as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_EP_BV_01: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_EP_BV_01: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_EP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_CIP_EP_BV_01 /** * @desc CIP in NPDU for N-hop BC transmission *
                 * Pics Selection: PICS_CIP and PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having setup properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted N-hop BC transmission request with CIPs indicated in the NF-FNTP-COMM.request service primitive
                 *      }
                 *      then {
                 *          the IUT generates an FNTP extended NPDU with CIPs included, and forwards it to the proper UC-VCI with access_parameters in the IN-SAP service primitive set equal to the CIPs
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/EP/BV/02 */ testcase TC_FNTP_CIP_EP_BV_02() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not((PICS_CIP and PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_EP_BV_02: ERROR: 'PICS_CIP and PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_EP_BV_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdBc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_cipNfFntpOptions( // Contains CIP indication f_getIutNhopsValue(), ''O, f_getIutTxCipValue())), mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_CIP_EP_BV_02: INFO: Formatted N-hops BC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), f_getIutTxCipValue() ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match( v_extendedNpdu, mw_fntpExtendedNpduCip( ''O, // For transmission, RX parameter shall be empty - See ISO/CD 21218 - Clause 8.5 f_getIutTxCipValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_EP_BV_02: PASS: Received extended FNTP NPDU with CIPs as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_EP_BV_02: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_EP_BV_02: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_EP_BV_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_CIP_EP_BV_02 /** * @desc CIP in NPDU for UC transmission *
                 * Pics Selection: PICS_CIP and PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having setup properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted UC transmission request with CIPs indicated in the NF-FNTP-COMM.request service primitive
                 *      }
                 *      then {
                 *          the IUT generates an FNTP extended NPDU with CIPs included, and forwards it to the proper UC-VCI with access_parameters in the IN-SAP service primitive set equal to the CIPs
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/EP/BV/03 */ testcase TC_FNTP_CIP_EP_BV_03() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not((PICS_CIP and PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_EP_BV_03: ERROR: 'PICS_CIP and PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_EP_BV_03: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdUc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_cipNfFntpOptions( // Contains CIP indication f_getIutNhopsValue(), ''O, f_getIutTxCipValue())), mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_CIP_EP_BV_03: INFO: Formatted UC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), ? ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match( v_extendedNpdu, mw_fntpExtendedNpduCip( ''O, // For transmission, RX parameter shall be empty - See ISO/CD 21218 - Clause 8.5 f_getIutTxCipValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_EP_BV_03: PASS: Received extended FNTP NPDU with CIPs as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_EP_BV_03: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_EP_BV_03: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_EP_BV_03: INFO: test body done ***"); // Postamble // f_unInitializeFntpForwardingTable(); f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_CIP_EP_BV_03 /** * @desc Reception of CIP in NPDU for N-hop BC transmission *
                 * Pics Selection: PICS_CIP and PICS_ROLE_RH
                 * Config Id: CF01
                 * Initial conditions: 
                 *  with {
                 *      the IUT having setup properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted FNTP extended NPDU with CIPs included and with the FNTP hop count set to 1
                 *      }
                 *      then {
                 *          the IUT extracts the FNTP basic NPDU and notifies reception to the required port,
                 *          the IUT removes CIPs from the received NPDU and forwards the remaining NPDU to the BC-VCI for next hop transmission
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/EP/BV/04 */ testcase TC_FNTP_CIP_EP_BV_04() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not((PICS_CIP and PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_EP_BV_04: ERROR: 'PICS_CIP and PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf01Up(); // Combined Host-Router // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); log("*** TC_FNTP_CIP_EP_BV_04: INFO: Preamble: FNTP forwarding Table was setup properly ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body // Clause 'when' f_acGenerateFntpNpduCip( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidUc(), f_getIutWlLocalCiid())), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), f_getIutNhopsValue(), f_getIutTxCipValue(), f_getIutRxCipValue(), f_getIutRxCipValue() // Access parameter ); log("*** TC_FNTP_CIP_EP_BV_04: INFO: Formatted single hop BC transmission request done ***"); // Clause 'then' // 1) Notifies reception to the required port tc_ac.start; alt { [] utPort.receive(mdw_checkNfFntpCommIndication( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutWlRemoteCiidUc(), f_getIutWlLocalCiid()) // Source address of DL-UNITDATA.request primitive )) { tc_ac.stop; log("*** TC_FNTP_CIP_EP_BV_04: INFO: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_EP_BV_04: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_EP_BV_04: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement // 2) Forwards the remaining NPDU to the BC-VCI for next hop transmission tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), ? ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match(v_extendedNpdu, mdw_fntpExtendedNpdu(?, ?))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_EP_BV_04: PASS: Received extended FNTP NPDU with CIPs as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_EP_BV_04: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_EP_BV_04: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_EP_BV_04: INFO: test body done ***"); // Postamble // f_unInitializeFntpForwardingTable(); f_poDefault(); f_cf01Down(); } // End of testcase TC_FNTP_CIP_EP_BV_04 } // End of group validBehavior group invalidBehavior { } // End of group invalidBehavior } // End of group extendedProcedure // 7.10.x Forwarded procedure group forwardedProcedure { group validBehavior { /** * @desc TX from ITS-S host with CIPs *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having setup properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted single hop BC transmission request with CIPs for delivery via a VCI contained in a different ITS-SCU
                 *      }
                 *      then {
                 *          the IUT generates an FNTP forwarding NPDU containing an FNTP extended NPDU with CIPs, 
                 *          and forwards it to the BC-VCI for transmission to the selected ITS-S router
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/01 */ testcase TC_FNTP_CIP_FP_BV_01() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not(PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_FP_BV_01: ERROR: 'PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_01: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpduCip( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanDifferentLocalCiid())), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutSecondRemoteDestCiidBc())), f_getIutShopValue(), f_getIutTxCipValue(), f_getIutRxCipValue(), f_getIutRxCipValue() // Access parameter ); log("*** TC_FNTP_CIP_FP_BV_01: INFO: Formatted single hop BC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutSecondRemoteDestCiidBc()), ? ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match( v_extendedNpdu, mw_fntpExtendedNpduCip( ''O, // For transmission, RX parameter shall be empty - See ISO/CD 21218 - Clause 8.5 f_getIutTxCipValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_01: PASS: Received extended FNTP NPDU with CIPs as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_01: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_01: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_01: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_01 /** * @desc RX at ITS-S router from ITS-S host with CIPs *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received an FNTP station-internal forwarding NPDU containing a correctly formatted FNTP extended NPDU 
                 *          with CIPs for single hop BC transmission
                 *      }
                 *      then {
                 *          the IUT extracts the FNTP extended NPDU, 
                 *          and forwards it to the BC-VCI for transmission via the IN-SAP with access_parameters set equal to the CIPs
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/02 */ testcase TC_FNTP_CIP_FP_BV_02() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not(PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_FP_BV_02: ERROR: 'PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_02: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpForwardingNpduCip( { portLong := c_portRtr }, // From ITS-S router { portLong := c_portHst }, // To ITS-S host f_getIutForwardingSrcPort(), // Forwarding source port f_getIutForwardingDestPort(), // Forwarding destination port m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidUc(), f_getIutRemoteDestCiidUc())), 0, // Packet counter f_getIutShopValue(), // S-Hop f_getIutRxCipValue(), // rx CIP parameter f_getIutTxCipValue(), // tx CIP parameter f_getIutRxCipValue() // Access parameter ); log("*** TC_FNTP_CIP_FP_BV_02: INFO: Formatted single hop BC transmission request contained in a different ITS-SCU done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutRemoteDestCiidUc()), ? ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match( v_extendedNpdu, mw_fntpExtendedNpduCip( ''O, // For transmission, RX parameter shall be empty - See ISO/CD 21218 - Clause 8.5 f_getIutTxCipValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_02: PASS: Received extended FNTP NPDU with CIPs as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_02: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_02: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_02: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_02 /** * @desc RX at ITS-S router from access layer with TX CIPs *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a packet from the IN-SAP containing a properly formatted FNTP NPDU with TX CIPs, 
                 *          and no RX CIPs are available
                 *      }
                 *      then {
                 *          the IUT forwards the TX-CIP information to the implementation-specific destination in the ITS-S router, 
                 *          and constructs an FNTP forwarding NPDU containing the received FNTP NPDU including the CIP header, 
                 *          and transmits the FNTP forwarding NPDU via the BC-VCI connected to the ITS station-internal network

                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/03 */ testcase TC_FNTP_CIP_FP_BV_03() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; // Expected forwarding NPDU // Test control if (not(PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_FP_BV_03: ERROR: 'PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_03: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpduCip( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), f_getIutNhopsValue(), f_getIutTxCipValue(), // With TX CIPs ''O, // and no RX CIPs are available f_getIutRxCipValue() // Access parameter ); log("*** TC_FNTP_CIP_FP_BV_03: INFO: Formatted BC transmission request done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpduCip( c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, ?, ''O, f_getIutTxCipValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_03: PASS: Received FNTP forwarding NPDU as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_03: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_03: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_03: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_03 /** * @desc RX at ITS-S router from access layer with TX CIPs and RX CIPs *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a packet from the IN-SAP containing a properly formatted FNTP NPDU with TX CIPs, and RX CIPs are available
                 *      }
                 *      then {
                 *          the IUT forwards the TX-CIP and RX-CIP information to the implementation-specific destination in the ITS-S router, 
                 *          and constructs an FNTP forwarding NPDU containing the received FNTP NPDU including the CIP header extended by the RX CIPs, 
                 *          and transmits the FNTP forwarding NPDU via the BC-VCI connected to the ITS station-internal network
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/04 */ testcase TC_FNTP_CIP_FP_BV_04() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_forwardingNpdu; // Expected forwarding NPDU // Test control if (not(PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_FP_BV_04: ERROR: 'PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_04: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpduCip( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), f_getIutShopValue(), f_getIutTxCipValue(), f_getIutRxCipValue(), f_getIutRxCipValue() ); log("*** TC_FNTP_CIP_FP_BV_04: INFO: Formatted BC transmission request done ***"); // Clause 'then' // TODO How to do this: Forwards the TX-CIP and RX-CIP information to the implementation-specific destination in the ITS-S host' // 1) Forwards NPDU containing the received FNTP NPDU including the CIP header extended by the RX CIPs tc_ac.start; alt { [] utPort.receive( mdw_checkNfFntpCommIndicationCip( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidBc(), f_getIutSecondRemoteDestCiidBc()), // Source address of DL-UNITDATA.request primitive mdw_nHopNfFntpOptions_cip( f_getIutNhopsValue(), f_getIutTxCipValue(), f_getIutRxCipValue() ) )) { tc_ac.stop; log("*** TC_FNTP_CIP_FP_BV_04: INFO: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_04: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_04: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement // 2) Transmits the FNTP forwarding NPDU via the BC-VCI connected to the ITS station-internal network tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReq( mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()) ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_forwardingNpdu); if (match(v_forwardingNpdu, mdw_fntpForwardingNpduCip( c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, ?, f_getIutRxCipValue(), f_getIutTxCipValue()))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_04: PASS: Received FNTP forwarding NPDU as expected ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_04: FAIL: Expected message not received ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_04: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_04: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_04 /** * @desc RX at ITS-S host from ITS-S router with CIPs *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received an FNTP forwarding NPDU containing a correctly formatted FNTP extended NPDU and CIP
                 *      }
                 *      then {
                 *          the IUT forwards the TX-CIP and RX-CIP information to the implementation-specific destination in the ITS-S host, 
                 *          the IUT delivers the ITS-FPDU to the ITS-SP selected by the Service Port
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/05 */ testcase TC_FNTP_CIP_FP_BV_05() runs on ItsCalm system ItsCalmSystem { // Local variables // Test control if (not(PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_FP_BV_05: ERROR: 'PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_05: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpForwardingNpduCip( { portLong := c_portRtr }, // From ITS-S router { portLong := c_portHst }, // To ITS-S host f_getIutForwardingSrcPort(), // Forwarding source port f_getIutForwardingDestPort(), // Forwarding destination port m_llServiceAddr(m_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid())), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), 0, // Packet counter f_getIutShopValue(), // S-Hop f_getIutRxCipValue(), // rx CIP parameter f_getIutTxCipValue(), // tx CIP parameter f_getIutRxCipValue() // Access parameter ); log("*** TC_FNTP_CIP_FP_BV_05: INFO: Request to send an FNTP extended NPDU containing CIP done ***"); // Clause 'then' // TODO How to do this: Forwards the TX-CIP and RX-CIP information to the implementation-specific destination in the ITS-S host' tc_ac.start; alt { [] utPort.receive( mdw_checkNfFntpCommIndicationCip( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), // Source address of DL-UNITDATA.request primitive mdw_nHopNfFntpOptions_cip( f_getIutNhopsValue(), f_getIutTxCipValue(), f_getIutRxCipValue() ) )) { tc_ac.stop; f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_05: INFO: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_05: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_05: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_05: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_05 /** * @desc TX at ITS-S router to remote ITS-S with no transmission of CIP in the frame *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table, 
                 *      and the IUT is set to not transmit CIPs in a frame to a remote ITS-S
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received the request to send an FNTP extended NPDU containing TX-CIPs
                 *      }
                 *      then {
                 *          the IUT removes the TX-CIP information from the extended NPDU 
                 *          and constructs the proper FNTP NPDU without TX-CIP, 
                 *          and forwards it to the BC-VCI for transmission via the IN-SAP with access_parameters set equal to the TX-CIPs
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/06 */ testcase TC_FNTP_CIP_FP_BV_06() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not(PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH))) { log("*** TC_FNTP_CIP_FP_BV_06: ERROR: 'PICS_CIP and PICS_ITS_S_INW and (PICS_ROLE_HONLY or PICS_ROLE_RH)' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_06: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_utCommandRequestConfirm( m_generateNfFntpCommRequest( f_getNextCommandRef(), // Unique cyclic reference number of command vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation f_getIutWlLinkIdBc(), // Identifies the VCI to be used to transmit the packet f_getIutItsFpdu(), // Contains the endpoint payload EPDU md_cipNfFntpOptions( // Contains CIP indication f_getIutShopValue(), ''O, f_getIutTxCipValue())), mw_fntpCommConfirm_success, false, vc_utCommandConf); log("*** TC_FNTP_CIP_FP_BV_06: INFO: Request to send an FNTP extended NPDU containing CIP done ***"); // Clause 'then' tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), f_getIutTxCipValue() ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match(v_extendedNpdu, mdw_fntpExtendedNpdu(?, ?))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_06: INFO: IUT transmits the received packet in BC mode ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_06: FAIL: Unexpected extended N-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_06: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_06: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_06 /** * @desc RX of an FNTP extended NPDU with CIP at ITS-S router which is due to a retransmission (N-hop) *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and PICS_ROLE_RH
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table, 
                 *      the IUT is enabled to transmit CIPs in a frame to remote ITS-S
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast packet from the peer station via the IN-SAP with FNTP hop count set to a value larger than 0
                 *      }
                 *      then {
                 *          the IUT forwards the CIP information to the implementation-specific destination in the ITS-S router, 
                 *          the IUT retransmits the received packet in broadcast mode with FNTP hop count decremented by one, 
                 *              and with no CIP contained in the NPDU, 
                 *              and with access_parameters not set equal to the received CIP,
                 *          the IUT processes the "FNTP extended NPDU" and notifies reception to the proper ITS-SP
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/07 */ testcase TC_FNTP_CIP_FP_BV_07() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not(PICS_CIP and PICS_ITS_S_INW and PICS_ROLE_RH)) { log("*** TC_FNTP_CIP_FP_BV_07: ERROR: 'PICS_CIP and PICS_ITS_S_INW and PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_07: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), f_getIutNhopsValue() ); log("*** TC_FNTP_CIP_FP_BV_07: INFO: Request to send an FNTP extended NPDU containing CIP done ***"); // Clause 'then' // TODO How to do this: Forwards the TX-CIP and RX-CIP information to the implementation-specific destination in the ITS-S host' // 1) The IUT processes the "FNTP extended NPDU" and notifies reception to the proper ITS-SP tc_ac.start; alt { [] utPort.receive( mdw_checkNfFntpCommIndicationCip( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), // Source address of DL-UNITDATA.request primitive mdw_nHopNfFntpOptions_cip( f_getIutNhopsValue(), f_getIutTxCipValue(), f_getIutRxCipValue() ) )) { tc_ac.stop; log("*** TC_FNTP_CIP_FP_BV_07: INFO: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_07: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_07: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement // 2) the IUT retransmits the received packet in broadcast mode with... tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid()), mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), f_getIutRxCipValue() // And with access_parameters not set equal to the received CIP ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match( v_extendedNpdu, mdw_fntpExtendedNpdu( ?, ? ))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_07: INFO: IUT transmits the received packet in BC mode ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_07: FAIL: Unexpected extended N-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_07: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_07: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_07 /** * @desc RX of an FNTP extended NPDU with CIP at ITS-S router which is due to a retransmission (N-hop) *
                 * Pics Selection: PICS_CIP and PICS_ITS_S_INW and PICS_ROLE_RH
                 * Config Id: CF02
                 * Initial conditions: 
                 *  with {
                 *      the IUT having set up properly the FNTP forwarding table, 
                 *      the IUT is enabled to transmit CIPs in a frame to remote ITS-S
                 *  }
                 * Expected behaviour:
                 *  evaluate whether {
                 *      when { 
                 *          the IUT having received a correctly formatted broadcast packet from the peer station via the IN-SAP with FNTP hop count set to a value larger than 0
                 *      }
                 *      then {
                 *          the IUT forwards the CIP information to the implementation-specific destination in the ITS-S router, 
                 *          the IUT retransmits the received packet in broadcast mode with FNTP hop count decremented by one, 
                 *              and with no CIP contained in the NPDU, 
                 *              and with access_parameters not set equal to the received CIP, 
                 *          the IUT forwards the "FNTP extended NPDU" to the proper ITS host
                 *      }
                 *  }
                 * 
* * @version 0.0.9 * @see ETSI TS 102 985-2 v0.0.9 FNTP/CIP/FP/BV/08 */ testcase TC_FNTP_CIP_FP_BV_08() runs on ItsCalm system ItsCalmSystem { // Local variables var INsapPrimitivesDown v_inSapPrimitivesDown; var FNTPNPDU v_extendedNpdu; // Test control if (not(PICS_CIP and PICS_ITS_S_INW and PICS_ROLE_RH)) { log("*** TC_FNTP_CIP_FP_BV_08: ERROR: 'PICS_CIP and PICS_ITS_S_INW and PICS_ROLE_RH' required for executing the TC ***"); stop; } // Test component configuration f_cf02Up(); // Test adapter configuration // Preamble // Clause 'Initial conditions' f_initializeFntpForwardingTable(f_getIutAppPortValue()); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); log("*** TC_FNTP_CIP_FP_BV_08: INFO: Preamble: FNTP forwarding Table was setup properly ***"); // Test Body // Clause 'when' f_acGenerateFntpNpdu( f_getIutLocalPortNumberValue(), f_getIutRemotePortNumberValue(), m_llServiceAddr(m_linkId(f_getIutWlRemoteCiidBc(), f_getIutWlLocalCiid())), m_llServiceAddr(m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())), f_getIutNhopsValue() ); log("*** TC_FNTP_CIP_FP_BV_08: INFO: Request to send an FNTP extended NPDU containing CIP done ***"); // Clause 'then' // 1) The IUT forwards the "FNTP extended NPDU" to the proper ITS host tc_ac.start; alt { [] utPort.receive( mdw_checkNfFntpCommIndicationCip( f_getIutRemotePortNumberValue(), // Destination port of DL-UNITDATA.request primitive f_getIutLocalPortNumberValue(), // Source port of DL-UNITDATA.request primitive m_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), // Source address of DL-UNITDATA.request primitive mdw_nHopNfFntpOptions_cip( f_getIutNhopsValue(), f_getIutTxCipValue(), f_getIutRxCipValue() ) )) { tc_ac.stop; log("*** TC_FNTP_CIP_FP_BV_08: INFO: Received NF-COMM.indication primitive as expected ***"); } [] utPort.receive { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_08: FAIL: Unexpected basic FNTP NPDU ***"); } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_08: INCONC: Unexpected basic FNTP NPDU ***"); } } // End of 'alt' statement // 2) the IUT retransmits the received packet in broadcast mode with... tc_ac.start; alt { [] fntpPort.receive( mw_fntpInSapPrimitiveReq( mdw_inUnitDataReqCip( mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid()), mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()), f_getIutRxCipValue() // and with access_parameters not set equal to the received CIP ))) -> value v_inSapPrimitivesDown { tc_ac.stop; f_oct2npdu(v_inSapPrimitivesDown.primitives.inUnitdataRq.data, c_tbDone, v_extendedNpdu); if (match( v_extendedNpdu, mdw_fntpExtendedNpdu( ?, ? ))) { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); log("*** TC_FNTP_CIP_FP_BV_08: INFO: IUT transmits the received packet in BC mode ***"); } else { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); log("*** TC_FNTP_CIP_FP_BV_08: FAIL: Unexpected extended N-hops FNTP NPDU ***"); } } [] tc_ac.timeout { f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); log("*** TC_FNTP_CIP_FP_BV_08: INCONC: Expected message not received ***"); } } // End of 'alt' statement log("*** TC_FNTP_CIP_FP_BV_08: INFO: test body done ***"); // Postamble f_poDefault(); f_cf02Down(); } // End of testcase TC_FNTP_CIP_FP_BV_08 } // End of group validBehavior group invalidBehavior { } // End of group invalidBehavior } // End of group forwardedProcedure } // End of group cipManagement // x.x.x Extended procedure group secureCommunications { group validBehavior { } // End of group validBehavior group invalidBehavior { } // End of group invalidBehavior } // End of group secureCommunications } // End of module ItsFntp_TestCases