Newer
Older
/**
* @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_Sync all;
// LibIts
import from LibItsCommon_Functions {
function
f_checkTimeValidity, f_getCurrentTime
}
// LibItsCalm
import from CALMfntp language "ASN.1:1997" {
type
FNTPNPDU,
FNTPpacketCounter
};
import from CALMmsap language "ASN.1:1997" {
type CommandRef
};
import from CALMllsap language "ASN.1:1997" {
type IN_UNITDATA_request
};
import from LibItsFntp_TypesAndValues all;
import from LibItsFntp_Templates all;
import from LibItsFntp_Functions all;
import from LibItsFntp_Pics all;
import from LibItsMgt_TypesAndValues {
const c_dniCiid
};
import from LibItsMgt_Functions {
function
f_getNextCommandRef
};
import from LibItsCalm_Interface {
type
ItsCalm, FntpInd;
};
import from LibItsCalm_TestSystem {
type ItsCalmSystem
};
group basicProcedure {
group validBehavior {
/**
* @desc Single-hop broadcast transmission request with known VCI
* <pre>
* 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:
* 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
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/BP/BV/01
*/
testcase TC_FNTP_TXP_BP_BV_01() runs on ItsCalm system ItsCalmSystem {
// Local variables
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'
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 ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutShopValue()) // Content of the FNTP control field in the FNTP extended header
)
);
log("*** TC_FNTP_TXP_BP_BV_01: INFO: Formatted single hop BC transmission request done ***");
// Clause 'then'
log("*** TC_FNTP_TXP_BP_BV_01: INFO: expected template: ", mw_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId((c_dniCiid, f_getIutWlRemoteCiid()), f_getIutWlLocalCiid()),
mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutWlLocalCiid())
))));
tc_ac.start;
alt {
[] fntpPort.receive(
mw_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId((c_dniCiid, f_getIutWlRemoteCiid()), f_getIutWlLocalCiid()), // See ISO 21218 Table 6 - Address parameters in e.g. IN-UNITDATA.request for CIs using 48-bit MAC addresses
mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutWlLocalCiid())
)))) -> value v_fntpInd {
f_oct2npdu(v_fntpInd.msgIn.servPrimitive.IN_UNITDATA_request.data, c_tbDone, v_basicNpdu);
log("*** TC_FNTP_TXP_BP_BV_01: INFO: FNTPPDU: ", v_basicNpdu, " ***");
if (match(v_basicNpdu, mdw_fntpBasicNpdu(vc_portNumber, f_getIutRemotePortNumberValue()))) {
//TODO Enhance to check generation timestamp
/*if (f_checkTimeValidity(int2float(v_fntpInd.receptionTime), int2float(f_getCurrentTime())) == false) {
log("*** TC_FNTP_TXP_BP_BV_01: WARN: Invalid timestamp ***");
}*/
log("*** TC_FNTP_TXP_BP_BV_01: PASS: Received basic FNTP NPDU as expected ***");
} else {
log("*** TC_FNTP_TXP_BP_BV_01: FAIL: Unexpected basic FNTP NPDU ***");
[] a_fntpUnsollictedMessages() {
// Do not restart tc_ac
repeat;
}
[] tc_ac.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
log("*** TC_FNTP_TXP_BP_BV_01: INFO: Postamble: done ***");
} // End of testcase TC_FNTP_TXP_BP_BV_01
/**
* @desc Single-hop unicast transmission request with known VCI
* <pre>
* 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 requested local port number of the ITS-S application
* 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
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/BP/BV/02
*/
testcase TC_FNTP_TXP_BP_BV_02() runs on ItsCalm system ItsCalmSystem {
// Local variables
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'
m_generateNfFntpCommRequest(
f_getNextCommandRef(), // Unique cyclic reference number of command
vc_portNumber, // Port number allocated by FN-FNTP-PORT.create operation
mw_linkId( // Identifies the VCI to be used to transmit the packet
f_getIutRemoteDestCiidUc(),
f_getIutWlLocalCiid()),
f_getIutItsFpdu(), // Contains the ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutShopValue()) // Content of the FNTP control field in the FNTP extended header
)
);
log("*** TC_FNTP_TXP_BP_BV_02: INFO: Formatted single hop UC transmission request done ***");
// Clause 'then'
log("*** TC_FNTP_TXP_BP_BV_02: DEBUG: Expected template: ",
mw_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId((c_dniCiid, f_getIutWlRemoteCiid()), f_getIutWlLocalCiid()),
mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid())
))),
" ***");
tc_ac.start;
alt {
[] fntpPort.receive(
mw_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId((c_dniCiid, f_getIutWlRemoteCiid()), f_getIutWlLocalCiid()), // See ISO 21218 Table 6 - Address parameters in e.g. IN-UNITDATA.request for CIs using 48-bit MAC addresses
mw_linkId(f_getIutRemoteDestCiidUc(), f_getIutWlLocalCiid())
)))) -> value v_fntpInd {
f_oct2npdu(v_fntpInd.msgIn.servPrimitive.IN_UNITDATA_request.data, c_tbDone, v_basicNpdu);
log("*** TC_FNTP_TXP_BP_BV_02: INFO: FNTPPDU: ", v_basicNpdu, " ***");
if (match(v_basicNpdu, mdw_fntpBasicNpdu(vc_portNumber, ?))) {
//TODO Enhance to check generation timestamp
/*if (f_checkTimeValidity(int2float(v_fntpInd.receptionTime), int2float(f_getCurrentTime())) == false) {
log("*** TC_FNTP_TXP_BP_BV_02: WARN: Invalid timestamp ***");
}*/
log("*** TC_FNTP_TXP_BP_BV_02: PASS: Received basic FNTP NPDU ***");
} else {
log("*** TC_FNTP_TXP_BP_BV_02: FAIL: Unexpected basic FNTP NPDU ***");
[] a_fntpUnsollictedMessages() {
// Do not restart tc_ac
repeat;
}
[] tc_ac.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 ***");
f_poDefault();
f_cf01Down();
} // End of testcase TC_FNTP_TXP_BP_BV_02
} // End of group validBehavior
/**
* Invalid test purposes will be defined in the next version of the present document once ISO has
* implemented the concept of flows in the architecture standard ISO 21217 [i.7], and subsequently in
* ISO 29281-1 [1]
*/
group invalidBehavior {
} // End of group invalidBehavior
group extendedProcedure {
group validBehavior {
/**
* @desc N-hop broadcast transmission request with known VCI
* <pre>
* 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 requested local port number of the ITS-S application
* 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
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/EP/BV/01
*/
testcase TC_FNTP_TXP_EP_BV_01() runs on ItsCalm system ItsCalmSystem {
// Local variables
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'
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 broadcast the payload
f_getIutItsFpdu(), // Contains the ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutNhopsValue())) // Content of the FNTP control field in the FNTP extended header
);
log("*** TC_FNTP_TXP_EP_BV_01: INFO: Formatted N-hop BC transmission request done ***");
// Clause 'then'
log("*** TC_FNTP_TXP_EP_BV_01: DEBUG: Expected template: ",
mw_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId((c_dniCiid, f_getIutWlRemoteCiid()), f_getIutWlLocalCiid()),
mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutWlLocalCiid())
))),
" ***");
tc_ac.start;
alt {
[] fntpPort.receive(
mw_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId((c_dniCiid, f_getIutWlRemoteCiid()), f_getIutWlLocalCiid()),
mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutWlLocalCiid())
)))) -> value v_fntpInd {
f_oct2npdu(v_fntpInd.msgIn.servPrimitive.IN_UNITDATA_request.data, c_tbDone, v_extendedNpdu);
log("*** TC_FNTP_TXP_EP_BV_01: INFO: Expected FNTPPDU: ", mdw_fntpExtendedNpdu(vc_portNumber, ?), " ***");
log("*** TC_FNTP_TXP_EP_BV_01: INFO: FNTPPDU: ", v_extendedNpdu, " ***");
if (match(v_extendedNpdu, mdw_fntpExtendedNpdu(vc_portNumber, ?))) {
//TODO Enhance to check generation timestamp
/*if (f_checkTimeValidity(int2float(v_fntpInd.receptionTime), int2float(f_getCurrentTime())) == false) {
log("*** TC_FNTP_TXP_EP_BV_01: WARN: Invalid timestamp ***");
}*/
log("*** TC_FNTP_TXP_EP_BV_01: PASS: Received extended N-hops FNTP NPDU as expected ***");
} else {
log("*** TC_FNTP_TXP_EP_BV_01: FAIL: Unexpected extended N-hops FNTP NPDU ***");
[] a_fntpUnsollictedMessages() {
// Do not restart tc_ac
repeat;
}
[] tc_ac.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
* <pre>
* 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
* the IUT having received a correctly formatted N-hop BC transmission request
* }
* then {
* the IUT reports failure of delivery
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/EP/BI/01
/* Removed from ETSI TS 102 985-2 V1.1.3 (2014-03)
* 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 setup properly ***");
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 ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutNhopsValue())), // Content of the FNTP control field in the FNTP extended header
mdw_fntpCommConfirm_unspecFailure(vc_portNumber), // Failure expected
vc_utEventInd.utFntpEventInd);
log("*** TC_FNTP_TXP_EP_BI_01: DEBUG: FNTP-COMMAND.request: vc_utEventInd=", vc_utEventInd, " ***");
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;
log("*** TC_FNTP_TXP_EP_BI_01: FAIL: No message was expected ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** TC_FNTP_TXP_EP_BI_01: PASS: No message received as expected ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
} // End of 'alt' statement
// Postamble
f_poDefault();
f_cf01Down();
* @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
* the IUT having an FNTP forwarding table with proper entry in support the local port number of the ITS-S application
* the IUT having received an N-hop BC transmission request with non-supported bits in "controlField" also set to 1
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/EP/BI/02
testcase TC_FNTP_TXP_EP_BI_02() runs on ItsCalm system ItsCalmSystem {
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
// 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 setup properly ***");
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 ITS-SP payload EPDU
md_nonSupportedFntpControlField // NFfntpCommRequest message with unsupported control field
),
mdw_fntpCommConfirm_unspecFailure(vc_portNumber), // Failure expected
true,
vc_utEventInd.utFntpEventInd);
log("*** TC_FNTP_TXP_EP_BI_02: DEBUG: FNTP-COMMAND.request: vc_utEventInd=", vc_utEventInd, " ***");
log("*** TC_FNTP_TXP_EP_BI_02: INFO: FNTP-COMMAND.request done ***");
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
[] fntpPort.receive {
tc_noac.stop;
log("*** TC_FNTP_TXP_EP_BI_02: FAIL: No message was expected ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** TC_FNTP_TXP_EP_BI_02: PASS: No message received as expected ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
} // End of 'alt' statement
log("*** TC_FNTP_TXP_EP_BI_02: INFO: test body done ***");
// Postamble
f_unInitializeFntpForwardingTable();
f_poDefault();
f_cf01Down();
} // End of testcase TC_FNTP_TXP_EP_BI_02
} // End of group invalidBehavior
} // End of group extendedProcedure
// 6.1.3 Forwarding procedure
group forwardingProcedure {
group validBehavior {
/**
* @desc TX from ITS-S host
* <pre>
* 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:
* ensure that {
* 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
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/FP/BV/01
*/
testcase TC_FNTP_TXP_FP_BV_01() runs on ItsCalm system ItsCalmSystem {
// Local variables
var FntpInd v_fntpInd;
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_fntpGenerateNfSApRequestWithoutConfirm(
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 ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutShopValue())) // Content of the FNTP control field in the FNTP extended header
);
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_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()),
mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())
)))) -> value v_fntpInd {
tc_ac.stop;
f_oct2npdu(v_fntpInd.msgIn.servPrimitive.IN_UNITDATA_request.data, c_tbDone, v_forwardingNpdu);
log("*** TC_FNTP_TXP_FP_BV_01: INFO: FNTPPDU: ", v_forwardingNpdu, " ***");
if(match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, f_getIutShopValue()))) {
//TODO Enhance to check generation timestamp
/*if (f_checkTimeValidity(int2float(v_fntpInd.receptionTime), int2float(f_getCurrentTime())) == false) {
log("*** TC_FNTP_TXP_FP_BV_01: WARN: Invalid timestamp ***");
}*/
log("*** TC_FNTP_TXP_FP_BV_01: PASS: Received extended N-hops FNTP NPDU as expected ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
} else {
log("*** TC_FNTP_TXP_FP_BV_01: FAIL: Unexpected extended N-hops FNTP NPDU ***");
[] a_fntpUnsollictedMessages() {
// Do not restart tc_ac
repeat;
}
[] tc_ac.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
* <pre>
* 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
* 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
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/FP/BV/02
*/
testcase TC_FNTP_TXP_FP_BV_02() runs on ItsCalm system ItsCalmSystem {
// Local variables
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'
{ 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_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()),
mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())
)))) -> value v_fntpInd {
f_oct2npdu(v_fntpInd.msgIn.servPrimitive.IN_UNITDATA_request.data, c_tbDone, v_forwardingNpdu);
log("*** TC_FNTP_TXP_FP_BV_02: INFO: FNTPPDU: ", v_forwardingNpdu, " ***");
if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), ?, ?))) {
//TODO Enhance to check generation timestamp
/*if (f_checkTimeValidity(int2float(v_fntpInd.receptionTime), int2float(f_getCurrentTime())) == false) {
log("*** TC_FNTP_TXP_FP_BV_02: WARN: Invalid timestamp ***");
}*/
log("*** TC_FNTP_TXP_FP_BV_02: PASS: Received forwarding S-Hop FNTP NPDU as expected ***");
} else {
log("*** TC_FNTP_TXP_FP_BV_02: FAIL: Unexpected forwarding S-hops FNTP NPDU ***");
}
}
[] tc_ac.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
* <pre>
* 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:
* 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
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 FNTP/TXP/FP/BV/03
*/
testcase TC_FNTP_TXP_FP_BV_03() runs on ItsCalm system ItsCalmSystem {
// Local variables
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
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
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 ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutShopValue())) // Content of the FNTP control field in the FNTP extended header
);
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_fntpInd(
mw_fntpInSapPrimitiveReq(
mdw_inUnitDataReq(
mw_linkId(f_getIutLanRemoteCiidBc(), f_getIutLanLocalCiid()),
mw_linkId(f_getIutRemoteDestCiidBc(), f_getIutDestLocalCiid())
)))) -> value v_fntpInd {
tc_ac.stop;
log("*** TC_FNTP_TXP_FP_BV_03: INFO: Received next FNTP forwarding NPDU ***");
f_oct2npdu(v_fntpInd.msgIn.servPrimitive.IN_UNITDATA_request.data, c_tbDone, v_forwardingNpdu);
log("*** TC_FNTP_TXP_FP_BV_03: INFO: FNTPPDU: ", v_forwardingNpdu, " ***");
if (match(v_forwardingNpdu, mdw_fntpForwardingNpdu(c_portRtr, c_portHst, f_getIutForwardingSrcPort(), f_getIutForwardingDestPort(), v_fntpPacketCounter, f_getIutShopValue())) == false) {
//TODO Enhance to check generation timestamp
/*if (f_checkTimeValidity(int2float(v_fntpInd.receptionTime), int2float(f_getCurrentTime())) == false) {
log("*** TC_FNTP_TXP_FP_BV_03: WARN: Invalid timestamp ***");
}*/
log("*** TC_FNTP_TXP_FP_BV_03: ERROR: Received unexpected FNTP packet counter value ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
} 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_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 ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutShopValue())) // Content of the FNTP control field in the FNTP extended header
);
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 ***");
}
}
[] a_fntpUnsollictedMessages() {
// Do not restart tc_ac
repeat;
}
[] tc_ac.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
* <pre>
* 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:
* 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
* }
* }
* </pre>
*
* @version 1.1.2
* @see ETSI TS 102 985-2 v1.1.2 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());
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
log("*** TC_FNTP_TXP_FP_BI_01: INFO: Preamble: FNTP forwarding Table was setup properly ***");
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 ITS-SP payload EPDU
md_nHopNfFntpOptions(f_getIutShopValue())), // Content of the FNTP control field in the FNTP extended header
mdw_fntpCommConfirm_unspecFailure(vc_portNumber), // Failure expected
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
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
group basicProcedure {
group validBehavior {
/**
* @desc Single hop unicast reception from peer station
* <pre>
* 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