Compare Revisions

The credentials to download the source code are:
 Username: svnusers
 Password: svnusers

Ignore whitespace Rev 1836 → Rev 1837

/trunk/javasrc/codec/org/etsi/ttcn/codec/its/uppertester/UtPduId.java
15,6 → 15,8
UtInitializeResult(0x01),
UtChangePosition(0x02),
UtChangePositionResult(0x03),
UtChangePseudonym(0x04),
UtChangePseudonymResult(0x05),
UtResult(0x24), // FIXME: obsolete
/* From LibItsDenm_TypesAndValues */
39,8 → 41,6
UtCamTrigger_changeHeading(0x34),
UtCamTrigger_setDriveDirection(0x35),
UtCamTrigger_changeYawRate(0x36),
UtCamTrigger_changePosition(0x37),// FIXME: obsolete
UtCamTrigger_checkLdm(0x38),// FIXME: obsolete
UtCamTrigger_setStationType(0x39),
UtCamTrigger_setVehicleRole(0x3a),
UtCamTrigger_setEmbarkationStatus(0x3b),
83,6 → 83,10
UtSec_setCertificate(0x93),
UtSec_setPrivateKey(0x94),
UtSec_setTrustPoint(0x95),
 
/* From LibItsMapSpat_TypesAndValues */
UtMapSpatTrigger(0xA0),
UtMapSpatTriggerResult(0xA1),
/* Reserved */
reserved(0xFF);
/trunk/ttcn/AtsCAM/ItsCam_TestCases.ttcn
83,11 → 83,11
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
146,16 → 146,16
[] camPort.receive(mw_camInd ( mw_camMsg_LF_any )){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Expected CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
231,7 → 231,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
261,7 → 261,7
tc_ac.stop;
if(v_nextCamWithLF == true) {
log("*** " & testcasename() & ": FAIL: No LowFrequency container in received CAM ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": INFO: CAM retransmission w/o LowFrequency container ***");
276,12 → 276,12
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
}
log("*** " & testcasename() & ": PASS: Generation of CAM messages including lowFrequencyContainer was successful ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poDefault();
347,11 → 347,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC_any )){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
434,7 → 434,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
464,7 → 464,7
tc_ac.stop;
if(v_nextCamWithSVC == true) {
log("*** " & testcasename() & ": FAIL: No SpecialVehicle container in received CAM ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": INFO: CAM retransmission w/o SpecialVehicle container ***");
479,12 → 479,12
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
}
log("*** " & testcasename() & ": PASS: Generation of CAM messages including SpecialVehicleContainer was successful ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poDefault();
510,7 → 510,7
if (lengthof(p_utTriggers) != lengthof(p_camPdus)) {
log("*** " & testcasename() & ": INCONC: Invalid testcase configuration: Number of event triggers and expected CAM messages differs ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
for (v_cnt:=0; v_cnt<lengthof(p_utTriggers); v_cnt:=v_cnt+1) {
522,7 → 522,7
tc_ac.stop;
if (v_cnt==lengthof(p_utTriggers)-1) {
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
530,7 → 530,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
}
600,7 → 600,7
tc_ac.stop;
if (v_initialReceived) {
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
614,7 → 614,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2548,7 → 2548,7
tc_ac.stop;
if (v_initialReceived) {
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
2562,7 → 2562,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2636,7 → 2636,7
tc_ac.stop;
if (v_initialReceived) {
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
2650,7 → 2650,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2722,7 → 2722,7
tc_ac.stop;
if (v_driveVal==forward) {
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
2735,7 → 2735,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2809,7 → 2809,7
tc_ac.stop;
if (v_initialReceived) {
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": PRECONDITION: Expected CAM message received ***");
2829,7 → 2829,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2899,11 → 2899,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_publicTransport_any ))){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2970,11 → 2970,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_specialTransport_any ))){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3041,11 → 3041,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_dangerousGoods_any ))){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3112,11 → 3112,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_roadWorks_any ))){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3183,11 → 3183,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_rescue_any ))){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3254,11 → 3254,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_emergency_any ))){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3325,11 → 3325,11
[] camPort.receive(mw_camInd ( mw_camMsg_SVC( mw_safetyCar_any ))){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Expected CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3397,7 → 3397,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
3408,11 → 3408,11
select (v_ret) {
case (e_error) {
log("*** " & testcasename() & ": FAIL: CAM message received BEFORE expiry of the minimum generation timer interval ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
case (e_timeout) {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
t_minTransInterval.start;
3421,7 → 3421,7
}
t_minTransInterval.stop;
log("*** " & testcasename() & ": PASS: Generation of CAM messages was successful ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poDefault();
3506,7 → 3506,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
3516,17 → 3516,17
select (v_ret) {
case (e_error) {
log("*** " & testcasename() & ": FAIL: No CAM message received BEFORE expiry of the maximum generation timer interval ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
case (e_timeout) {
log("*** " & testcasename() & ": INCONC: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
}
t_maxTransInterval.stop;
log("*** " & testcasename() & ": PASS: Generation of CAM messages was successful ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poDefault();
3616,7 → 3616,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_utTriggerEvent(m_changeSpeed(1000));
3632,7 → 3632,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: Condition 1 CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
for (v_i:=1; v_i <= v_N_GenCam; v_i:=v_i+1) {
3642,7 → 3642,7
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
if (t_interval_1_min.running) {
log("*** " & testcasename() & ": INCONC: Initial conditions: Condition 2 CAM#", v_i, " message received BEFORE INTERVAL_1 expired ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
t_interval_1_max.stop;
log("*** " & testcasename() & ": INFO: Initial conditions: Condition 2 CAM#", v_i, " message received ***");
3652,7 → 3652,7
}
[] t_interval_1_max.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: Condition 2 CAM#", v_i, " message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
}
3665,11 → 3665,11
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
if (t_maxTransInterval_min.running) {
log("*** " & testcasename() & ": FAIL: Next CAM message received BEFORE T_GenCamMax expired ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
t_maxTransInterval_max.stop;
log("*** " & testcasename() & ": PASS: Next CAM message received AFTER T_GenCamMax expired ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] t_maxTransInterval_min.timeout {
repeat;
3676,7 → 3676,7
}
[] t_maxTransInterval_max.timeout {
log("*** " & testcasename() & ": FAIL: Next CAM message not received AFTER T_GenCamMax expired ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
3749,7 → 3749,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
3762,11 → 3762,11
[] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_heading( (v_headingValue + v_changeHeadingValue) mod 3600) ) )){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] t_genCam_Dcc.timeout {
log("*** " & testcasename() & ": FAIL: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
3837,7 → 3837,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
3845,24 → 3845,20
// Test Body
t_genCam_Dcc.timeout;
v_referencePosition := f_computePositionUsingDistance(v_referencePosition, v_changePosValue);
f_utTriggerEvent(
m_changePosition(
valueof(UtChangePosition: {
f_utChangePosition ( valueof ( UtChangePosition: {
latitude := v_referencePosition.latitude,
longitude := v_referencePosition.longitude,
elevation := 0 // FIXME := v_referencePosition.altitude
}
)));
elevation := 0 } ) );
t_genCam_Dcc.start;
alt {
[] camPort.receive(mw_camInd ( mw_camMsg_BC_refPos ( v_referencePosition ) )){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] t_genCam_Dcc.timeout {
log("*** " & testcasename() & ": FAIL: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
3935,7 → 3931,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
3948,11 → 3944,11
[] camPort.receive(mw_camInd ( mw_camMsg_HF_BV ( mw_HF_BV_speed( (v_speedValue + v_changeSpeedValue) mod 16384 ) ) )){
tc_ac.stop;
log("*** " & testcasename() & ": PASS: CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] t_genCam_Dcc.timeout {
log("*** " & testcasename() & ": FAIL: CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
4019,7 → 4015,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_utTriggerEvent(m_changeSpeed(1000));
4034,7 → 4030,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: Anticipated CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble("error", e_timeout);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
4046,11 → 4042,11
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
if (t_genCam_min.running) {
log("*** " & testcasename() & ": FAIL: Anticipated CAM message received BEFORE T_GenCam expired ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
t_genCam_max.stop;
log("*** " & testcasename() & ": PASS: Anticipated CAM message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] t_genCam_min.timeout {
repeat;
4057,7 → 4053,7
}
[] t_genCam_max.timeout {
log("*** " & testcasename() & ": FAIL: Anticipated CAM message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
4067,6 → 4063,84
} // end TC_CAM_MSD_GFQ_BV_07
/**
* @desc Check that maximum CAM generation frequency for RSU ITS-S is 1Hz
*
* <pre>
* Pics Selection: PICS_RSU
* Initial conditions:
* with {
* the IUT being in the "initial state"
* }
* Expected behaviour:
* ensure that {
* when {
* IUT sends a CAM
* }
* then {
* the IUT does not send another CAM afterbefore 1s
* }
* }
* </pre>
*
* @version 0.0.2
* @see ETSI TS 102 868-2 v0.0.2 TP/CAM/MSD/GFQ/BV-08
* @reference ETSI EN 302 637-2 , clause 6.1.4
*/
testcase TC_CAM_MSD_GFQ_BV_08() runs on ItsCam system ItsCamSystem {
// Local constants
const float c_minTime := 0.95;
const float c_maxTime := 1.05;
 
// Local variables
// Test component configuration
f_cfUp();
 
// Preamble
f_prInitialState();
camPort.clear;
tc_ac.start;
alt {
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
tc_ac.stop;
log("*** " & testcasename() & ": INFO: Initial conditions: First CAM message received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Initial conditions: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
}
}
// Test Body
tc_ac.start;
alt {
[] camPort.receive(mw_camInd ( mw_camMsg_any )){
if ( ( tc_ac.read*1000.0 > c_minTime ) and ( tc_ac.read*1000.0 < c_maxTime )) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: CAM message received in time***");
f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
}
else {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: CAM message not received in time***");
f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: CAM message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_timeout);
}
}
// Postamble
f_poDefault();
f_cfDown();
} // end TC_CAM_MSD_GFQ_BV_08
} // end group camGenerationFrequency
} // end group camMessageDissemination
4102,6 → 4176,7
// Local variables
var CamReq v_camReq;
var integer i;
// Test control
4126,9 → 4201,18
);
camPort.send( v_camReq ) ;
f_utCheckEvent(m_checkLdm(v_camReq.msgOut));
log("*** " & testcasename() & ": PASS: CAM message received at LDM ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_sleep(PX_TNOAC);
for(i:=0; i < lengthof(vc_utEvents) and not match(v_camReq, vc_utEvents[i].camMsg); i:=i+1) {
// empty on purpose
}
if(i < lengthof(vc_utEvents)) {
log("*** " & testcasename() & ": FAIL: CAM was transmitted to upper layer ***");
f_clientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: CAM was not transmitted to upper layer ***");
f_clientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
f_poDefault();
/trunk/ttcn/AtsDENM/ItsDenm_TestCases.ttcn
1,5 → 1,5
/**
* @author ETSI / STF449
* @author ETSI / STF484
* @version $URL$
* $Id$
* @desc DENM Testcases (TS 102 869-2 V<2.1.1> (<2012-09>))
11,8 → 11,8
import from LibCommon_Sync all;
import from LibCommon_Time all;
import from LibCommon_VerdictControl all;
import from LibCommon_BasicTypesAndValues all;
// LibIts
import from LibItsCommon_Functions all;
import from LibItsCommon_TypesAndValues all;
90,16 → 90,16
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received a DENM with incorrect header information. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
168,16 → 168,16
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received a DENM with incorrect location container information. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
246,16 → 246,16
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received a DENM with incorrect header and management information. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
266,7 → 266,7
} // end TC_DEN_EVGN_BV_01
/**
* @desc Check that a new ActionID value is assigned for each generated DENM
* @desc Check that a new ActionID value is assigned for each newly generated DENM
* <pre>
* PICS Selection: none
* Initial conditions:
289,7 → 289,7
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-02, ETSI EN 302 637-3, clause 6.1.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-02, ETSI EN 302 637-3, clause 6.1.1.1
*/
testcase TC_DEN_EVGN_BV_02() runs on ItsDenm system ItsDenmSystem {
334,11 → 334,11
}
if (v_success==true) {
log("*** " & testcasename() & ": PASS: actionID field indicating unused value. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: actionID field indicating used value. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
// Postamble
350,7 → 350,7
} // end TC_DEN_EVGN_BV_02
/**
* @desc Check that newly created ActionID contains the originator ITS-S ID
* @desc Check that a newly created ActionID contains the StationID of the originating ITS-S that detected the event
* <pre>
* PICS Selection: none
* Initial conditions:
366,7 → 366,7
* the IUT sends a valid DENM
* containing management container
* containing actionID
* containing originatorStationID
* containing originatingStationID
* indicating its own StationID
* }
* }
373,7 → 373,7
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-03, ETSI EN 302 637-3, clause 6.1.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-03, ETSI EN 302 637-3, clause 6.1.1.1
*/
testcase TC_DEN_EVGN_BV_03() runs on ItsDenm system ItsDenmSystem {
411,16 → 411,16
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
499,16 → 499,16
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
542,7 → 542,7
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-05, ETSI EN 302 637-3, clause 8.1.1.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-05, ETSI EN 302 637-3, clause 8.2.1.3
*/
testcase TC_DEN_EVGN_BV_05() runs on ItsDenm system ItsDenmSystem {
594,16 → 594,16
tc_ac.stop;
v_actionIds[lengthof(v_actionIds)] := v_denmInd.msgIn.denm.management.actionID;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
616,7 → 616,7
} // end TC_DEN_EVGN_BV_05
/**
* @desc Check that on startup, sequenceNumber is initialized with latest used value
* @desc Check that sequenceNumber is set to a next unused value each time an event is detected
* <pre>
* PICS Selection: none
* Initial conditions:
628,113 → 628,6
* containing actionID
* containing sequenceNumber
* indicating SEQ1
* and the IUT having been restarted
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is requested to generate a new event
* }
* then {
* the IUT sends a valid DENM
* containing management container
* containing actionID
* containing sequenceNumber
* indicating SEQ1 + 1
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-06, ETSI EN 302 637-3, clause 8.1.1.1
*/
testcase TC_DEN_EVGN_BV_06() runs on ItsDenm system ItsDenmSystem {
// Local variables
var template (value) SituationContainerList v_situations := {
m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable),
m_situation(c_causeAccident, c_subCauseCode_Unavailable),
m_situation(c_causeRoadworks, c_subCauseCode_Unavailable),
m_situation(c_causeSlowVehicle, c_subCauseCode_Unavailable)
};
var SequenceNumber v_sequenceNumber;
var ActionIDList v_actionIds;
var DenmInd v_denmInd;
var integer i;
// Test control
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
for (i := 0; i < lengthof(v_situations) - 1; i:=i + 1) {
f_utTriggerEvent(m_utTriggerEvent(v_situations[i], m_denmLocation_zeroDelta));
f_awaitDenMessage(mw_denmInd(mw_anyDenmPdu), v_denmInd);
v_actionIds[i] := v_denmInd.msgIn.denm.management.actionID;
}
//save the last sequence number
v_sequenceNumber := v_denmInd.msgIn.denm.management.actionID.sequenceNumber;
//Restart the IUT
f_utInitializeIut(m_denmInitialize);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_utTriggerEvent(m_utTriggerEvent(v_situations[lengthof(v_situations) - 1], m_denmLocation_zeroDelta));
tc_ac.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtConWithActionID(
mw_actionId(-, f_increaseSequenceNumber(v_sequenceNumber))
)
)
)
)
) -> value v_denmInd {
tc_ac.stop;
v_actionIds[lengthof(v_actionIds)] := v_denmInd.msgIn.denm.management.actionID;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
}
}
// Postamble
for (i := 0; i < lengthof(v_actionIds); i:=i + 1) {
f_poCancelEvent(e_iut, v_actionIds[i]);
}
f_cfDown();
} // end TC_DEN_EVGN_BV_06
/**
* @desc Check that sequenceNumber is incremented and set to an unused value each time an event is detected
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated several events
* and the IUT having generated its last DENM
* containing management container
* containing actionID
* containing sequenceNumber
* indicating SEQ1
* and no active event being associated with sequenceNumber SEQ1 + 1
* }
* Expected behaviour:
753,7 → 646,7
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-07, ETSI EN 302 637-3, clauses 6.1.1, 8.1.1.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-07, ETSI EN 302 637-3, clauses 6.1.1.1, 8.2.1.2
*/
testcase TC_DEN_EVGN_BV_07() runs on ItsDenm system ItsDenmSystem {
806,16 → 699,16
tc_ac.stop;
v_actionId := v_denmInd.msgIn.denm.management.actionID;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
826,7 → 719,7
} // end TC_DEN_EVGN_BV_07
/**
* @desc Check that sequenceNumber is incremented and set to an unused value each time an event is detected
* @desc Check that sequenceNumber is set to a next unused value each time an event is detected (Sequence number wrap around)
* <pre>
* PICS Selection: none
* Initial conditions:
857,7 → 750,7
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-08, ETSI EN 302 637-3, clauses 6.1.1, 8.1.1.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-08, ETSI EN 302 637-3, clauses 6.1.1.1, 8.2.1.2
*/
testcase TC_DEN_EVGN_BV_08() runs on ItsDenm system ItsDenmSystem {
904,16 → 797,16
) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
925,7 → 818,7
} // end TC_DEN_EVGN_BV_08
/**
* @desc Check that the sequence number restarts from 0 when it reaches its range limit
* @desc Check that actionID are generated using newly assigned stationID when a pseudonym change occurs
* <pre>
* PICS Selection: none
* Initial conditions:
932,12 → 825,11
* with {
* the IUT being in the "initial state"
* and the IUT having generated several events
* and the IUT having generated its last DENM
* containing management container
* containing actionID
* containing sequenceNumber
* indicating 65535
* and no active event being associated with sequenceNumber 0
* containing originatingStationID
* indicating STATION_ID_1
* and the IUT having changed its StationID
* }
* Expected behaviour:
* ensure that {
948,22 → 840,21
* the IUT sends a valid DENM
* containing management container
* containing actionID
* containing sequenceNumber
* indicating 0
* containing originatingStationID
* indicating its new StationID
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-09, ETSI EN 302 637-3, clause 6.1.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVGN/BV-10, ETSI EN 302 637-3, clauses 6.1.1.2
*/
testcase TC_DEN_EVGN_BV_09() runs on ItsDenm system ItsDenmSystem {
testcase TC_DEN_EVGN_BV_10() runs on ItsDenm system ItsDenmSystem {
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var SequenceNumber v_firstSequenceNumber, v_lastSequenceNumber;
var StationID v_stationId;
var DenmInd v_denmInd;
var integer i;
// Test control
974,55 → 865,41
// Preamble
f_prInitialState();
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta));
f_awaitDenMessage(mw_denmInd(mw_anyDenmPdu), v_denmInd);
v_firstSequenceNumber := v_denmInd.msgIn.denm.management.actionID.sequenceNumber;
f_poCancelEvent(e_iut, v_denmInd.msgIn.denm.management.actionID);
v_lastSequenceNumber := v_firstSequenceNumber;
while (v_lastSequenceNumber!=65535) {
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta));
f_awaitDenMessage(mw_denmInd(mw_anyDenmPdu), v_denmInd);
v_lastSequenceNumber := v_denmInd.msgIn.denm.management.actionID.sequenceNumber;
f_poCancelEvent(e_iut, v_denmInd.msgIn.denm.management.actionID);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_stationId := f_getIutStationId ( );
f_utChangePseudonym ( m_utChangePseudonym );
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta));
tc_ac.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtConWithActionID(
mw_actionId(-, 0)
)
)
)
)
) -> value v_denmInd {
[] denmPort.receive ( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_anyDenmMgmtCon ) ) ) ) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
if ( v_denmInd.msgIn.denm.management.actionID.originatingStationID != v_stationId ) {
log("*** " & testcasename() & ": PASS: Successfully received expected DENM - Pseudonym changed. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: received expected DENM - Pseudonym not changed. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_iut, m_actionId(0));
f_cfDown();
} // end TC_DEN_EVGN_BV_09
} // end TC_DEN_EVGN_BV_10
} // end denEventGeneration
1089,16 → 966,16
) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1109,7 → 986,7
} // end TC_DEN_EVUP_BV_01
/**
* @desc Check that the actionID is not changed by DENM update
* @desc Check that the actionID is not changed by DENM update, as long as the stationID of the originating ITS-S remains unchanged
* <pre>
* PICS Selection: none
* Initial conditions:
1119,6 → 996,7
* containing management container
* containing actionID
* indicating ACTION_ID1
* and the IUT not having changed its stationID
* }
* Expected behaviour:
* ensure that {
1178,16 → 1056,16
) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1198,7 → 1076,7
} // end TC_DEN_EVUP_BV_02
/**
* @desc Check that referenceTime is updated and superior to previous value for each DENM update
* @desc Check that referenceTime is set to the current time when generating a DENM for an updated eventCheck
* <pre>
* PICS Selection: none
* Initial conditions:
1222,7 → 1100,7
* containing actionID
* indicating ACTION_ID1
* and containing referenceTime
* indicating REFERENCETIME2 > REFERENCETIME1
* indicating CLT > REFERENCETIME1
* }
* }
* </pre>
1234,7 → 1112,8
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var TimestampIts v_referenceTime1;
var TimestampIts v_referenceTime1 , v_timestampIts , v_msgtimestamp;
var Int16 v_diff;
var ActionID v_actionId;
var DenmInd v_denmInd;
1272,23 → 1151,25
)
) -> value v_denmInd {
tc_ac.stop;
if(v_denmInd.msgIn.denm.management.referenceTime > v_referenceTime1) {
v_timestampIts := f_getCurrentTime();
v_msgtimestamp := v_denmInd.msgIn.denm.management.referenceTime;
if ( ( ( v_timestampIts + v_diff ) > v_msgtimestamp ) and ( v_msgtimestamp > v_referenceTime1 ) ) {
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: ReferenceTime not updated correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1299,7 → 1180,7
} // end TC_DEN_EVUP_BV_03
/**
* @desc Check that DEN Basic Service does not send any update DENM if actionID is not in originator ITS-S message table
* @desc Check that DEN Basic Service does not send any update DENM if actionID is not in originating ITS-S message table
* <pre>
* PICS Selection: none
* Initial conditions:
1306,7 → 1187,7
* with {
* the IUT being in the "initial state"
* and the IUT having generated an event
* and the IUT not having sent event being associated with actionID ACTION_ID1
* and the IUT not having sent an event being associated with actionID ACTION_ID1
* containing originatorStationID
* indicating its own stationID
* and containing sequenceNumber
1370,16 → 1251,16
) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received updated DENM for the actionId which is not in originator ITS-S message table. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": PASS: No DENM was sent. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
1419,14 → 1300,14
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing isCancellation
* indicating value TRUE
* and containing termination
* indicating value isCancellation
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-01, ETSI EN 302 637-3, clauses 6.1.2.4, 8.1.1.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-01, ETSI EN 302 637-3, clauses 6.1.2.4, 8.2.1.3
*/
testcase TC_DEN_EVTR_BV_01() runs on ItsDenm system ItsDenmSystem {
1444,20 → 1325,8
// Preamble
f_prInitialState();
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta, c_validityDuration_10sec));
f_awaitDenMessage(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(
mw_anyActionId, -, -, -,
c_validityDuration_2sec
)
)
)
),
v_denmInd
);
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta, c_duration_10sec));
f_awaitDenMessage ( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_anyActionId, -, -, -, c_duration_2sec ) ) ) ) , v_denmInd );
v_actionId := v_denmInd.msgIn.denm.management.actionID;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
1466,32 → 1335,20
tc_ac.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm (
mw_denmMgmtCon(
v_actionId,
-,
-,
true
)
)
)
)
) -> value v_denmInd {
[] denmPort.receive ( mw_denmInd ( mw_denmPdu (
mw_denm ( m_denmMgmtConTermination ( v_actionId, -, -, -, -, -, isCancellation ))))) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1525,8 → 1382,8
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing isNegation
* indicating value TRUE
* and containing termination
* indicating value isNegation
* }
* }
* </pre>
1550,15 → 1407,7
// Preamble
f_prInitialState();
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId
),
v_situation,
m_denmLocation_zeroDelta
)
);
v_actionId := f_sendDenMessage ( m_denm ( m_denmMgmtCon ( m_tsActionId ), v_situation, m_denmLocation_zeroDelta ) );
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
1566,31 → 1415,20
tc_ac.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm (
mw_denmMgmtCon(
v_actionId,
-,
true
)
)
)
)
) -> value v_denmInd {
[] denmPort.receive ( mw_denmInd ( mw_denmPdu (
mw_denm ( m_denmMgmtConTermination ( v_actionId, -, -, -, -, -, isNegation ))))) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1633,14 → 1471,14
* indicating ACTION_ID1
* and containing referenceTime
* indicating value REFERENCETIME2
* and containing isNegation
* indicating value TRUE
* and containing termination
* indicating value isNegation
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-03, ETSI EN 302 637-3, clauses 6.1.2.4, 8.1.1.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-03, ETSI EN 302 637-3, clauses 6.1.2.4, 8.2.1.3
*/
testcase TC_DEN_EVTR_BV_03() runs on ItsDenm system ItsDenmSystem {
1660,29 → 1498,11
// Preamble
f_prInitialState();
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId, -, -, -, -, -,
v_referenceTime1
),
v_situation,
m_denmLocation_zeroDelta
)
);
v_actionId := f_sendDenMessage ( m_denm ( m_denmMgmtCon ( m_tsActionId, -, -, -, v_referenceTime1 ), v_situation, m_denmLocation_zeroDelta ) );
v_referenceTime2 := f_getCurrentTime();
v_situation.eventType.subCauseCode := c_vehicleBreakDownSubCauseCode_engineProblem;
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId, -, -, -, -, -,
v_referenceTime2
),
v_situation,
m_denmLocation_zeroDelta
)
);
v_actionId := f_sendDenMessage ( m_denm ( m_denmMgmtCon ( m_tsActionId, -, -, -, v_referenceTime2 ), v_situation, m_denmLocation_zeroDelta ) );
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
1690,31 → 1510,20
tc_ac.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm (
mw_denmMgmtCon(
v_actionId,
v_referenceTime2,
true
)
)
)
)
) -> value v_denmInd {
[] denmPort.receive ( mw_denmInd ( mw_denmPdu (
mw_denm ( m_denmMgmtConTermination ( v_actionId, -, -, -, -, v_referenceTime2, isNegation ))))) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1724,7 → 1533,7
} // end TC_DEN_EVTR_BV_03
/**
* @desc Check that situation container and location container are not present in cancellation DENM
* @desc Check that situation container, location container and alacarte container are not present in a cancellation DENM
* <pre>
* PICS Selection: none
* Initial conditions:
1745,16 → 1554,17
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing isCancellation
* indicating value TRUE
* and containing termination
* indicating value isCancellation
* and not containing situation container
* and not containing location container
* and not containing alacarte container
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-04, ETSI EN 302 637-3, clause 7.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-04, ETSI EN 302 637-3, clause 7.1.1
*/
testcase TC_DEN_EVTR_BV_04() runs on ItsDenm system ItsDenmSystem {
1772,19 → 1582,8
// Preamble
f_prInitialState();
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta, c_validityDuration_10sec));
f_awaitDenMessage(
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(
mw_anyActionId
)
)
)
),
v_denmInd
);
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta, c_duration_10sec));
f_awaitDenMessage( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_anyActionId ) ) ) ), v_denmInd );
v_actionId := v_denmInd.msgIn.denm.management.actionID;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
1796,31 → 1595,19
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm (
mw_denmMgmtCon(
v_actionId,
-,
-,
true
),
omit,
omit
)
)
)
) -> value v_denmInd {
mw_denm ( m_denmMgmtConTermination ( v_actionId, -, -, -, -, -, isCancellation ), omit, omit, omit ) ) ) ) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1830,7 → 1617,7
} // end TC_DEN_EVTR_BV_04
/**
* @desc Check that situation container and location container are not present in negation DENM
* @desc Check that situation container, location container and alacarte container are not present in a negation DENM
* <pre>
* PICS Selection: none
* Initial conditions:
1853,16 → 1640,17
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing isNegation
* indicating value TRUE
* and containing termination
* indicating value isNegation
* and not containing situation container
* and not containing location container
* and not containing alacarte container
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-05, ETSI EN 302 637-3, clause 7.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-05, ETSI EN 302 637-3, clause 7.1.1
*/
testcase TC_DEN_EVTR_BV_05() runs on ItsDenm system ItsDenmSystem {
1880,15 → 1668,7
// Preamble
f_prInitialState();
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId
),
v_situation,
m_denmLocation_zeroDelta
)
);
v_actionId := f_sendDenMessage ( m_denm ( m_denmMgmtCon ( m_tsActionId ), v_situation, m_denmLocation_zeroDelta ) );
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
1899,30 → 1679,19
[] denmPort.receive(
mw_denmInd(
mw_denmPdu(
mw_denm (
mw_denmMgmtCon(
v_actionId,
-,
true
),
omit,
omit
)
)
)
) -> value v_denmInd {
mw_denm ( m_denmMgmtConTermination ( v_actionId, -, -, -, -, -, isNegation ), omit, omit, omit ) ) ) ) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1933,7 → 1702,7
/**
* @desc Check that DEN Basic Service does not send any termination DENM if actionID is not in
* originator ITS-S message table or receiver ITS-S message table
* originating ITS-S message table or receiving ITS-S message table (own stationID)
* <pre>
* PICS Selection: none
* Initial conditions:
1941,7 → 1710,7
* the IUT being in the "initial state"
* and the IUT having generated several events
* and the IUT not having send event being associated with ACTION_ID1
* containing originatorStationID
* containing originatingStationID
* indicating its own stationID
* and containing sequenceNumber
* indicating SEQ1
1950,7 → 1719,7
* ensure that {
* when {
* the IUT is requested to terminate an event associated to ACTION_ID1
* containing originatorStationID
* containing originatingStationID
* indicating its own stationID
* and containing sequenceNumber
* indicating SEQ1
1959,12 → 1728,12
* the IUT does not send send any termination DENM for this event
* }
* }
* NOTE: Event associated to ACTION_ID1 cannot be present in receiver ITS-S message
* NOTE: Event associated to ACTION_ID1 cannot be present in receiving ITS-S message
* table as its stationID is IUT’s stationID (see TP/DEN/EVTR/BV-07)
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-06, ETSI EN 302 637-3, clauses 8.1.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-06, ETSI EN 302 637-3, clauses 8.2.2
*/
testcase TC_DEN_EVTR_BV_06() runs on ItsDenm system ItsDenmSystem {
2019,16 → 1788,16
) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received termination DENM for the unknown actionId. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": PASS: No termination DENM was sent. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
2042,7 → 1811,7
/**
* @desc Check that DEN Basic Service does not send any termination DENM if actionID is not in
* originator ITS-S message table or receiver ITS-S message table
* originating ITS-S message table or receiving ITS-S message table (other stationID)
* <pre>
* PICS Selection: none
* Initial conditions:
2050,7 → 1819,7
* the IUT being in the "initial state"
* and the IUT having received several events
* and the IUT not having received event being associated with ACTION_ID1
* containing originatorStationID
* containing originatingStationID
* indicating STATION_ID1 different from its own stationID
* and containing sequenceNumber
* indicating SEQ1
2059,7 → 1828,7
* ensure that {
* when {
* the IUT is requested to terminate an event associated to ACTION_ID1
* containing originatorStationID
* containing originatingStationID
* indicating STATION_ID1
* and containing sequenceNumber
* indicating SEQ1
2068,12 → 1837,12
* the IUT does not send send any termination DENM for this event
* }
* }
* NOTE: Event associated to ACTION_ID1 cannot be present in originator ITS-S message table as its
* NOTE: Event associated to ACTION_ID1 cannot be present in originating ITS-S message table as its
* stationID is not IUT’s stationID (see TP/DEN/EVTR/BV-06)
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-07, ETSI EN 302 637-3, clauses 8.1.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-07, ETSI EN 302 637-3, clauses 8.2.2
*/
testcase TC_DEN_EVTR_BV_07() runs on ItsDenm system ItsDenmSystem {
2103,15 → 1872,7
f_prInitialState();
for (i := 0; i < lengthof(v_situations); i:=i + 1) {
v_sequenceNumber := f_increaseSequenceNumber(v_sequenceNumber);
v_actionIds[i] := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
m_tsActionId(v_sequenceNumber)
),
v_situations[i],
m_denmLocation_zeroDelta
)
);
v_actionIds[i] := f_sendDenMessage( m_denm( m_denmMgmtCon( m_tsActionId(v_sequenceNumber) ), v_situations[i], m_denmLocation_zeroDelta ) );
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2126,28 → 1887,19
tc_ac.start;
alt {
[] denmPort.receive(
mw_denmInd(
mw_anyDenmPdu(
mw_itsPduHeader,
mw_denm (
mw_denmMgmtCon(v_unknownActionId)
)
)
)
) -> value v_denmInd {
[] denmPort.receive( mw_denmInd( mw_anyDenmPdu( mw_itsPduHeader, mw_denm ( mw_denmMgmtCon(v_unknownActionId) ) ) ) ) -> value v_denmInd {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received termination DENM for the unknown actionId. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": PASS: No termination DENM was sent. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
2159,6 → 1911,105
} // end TC_DEN_EVTR_BV_07
/**
* @desc Check that referenceTime is set to to the current time when generating a cancellation DENM
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated an event
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing validityDuration
* indicating DURATION_1
* and containing referenceTime
* indicating REFERENCETIME1
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives an AppDENM_termination request associated with ACTION_ID1 from the application layer
* }
* then {
* the IUT sends a valid DENM
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing termination
* indicating value isCancellation
* and containing referenceTime
* indicating CLT
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVTR/BV-08, ETSI EN 302 637-3, clause 8.2.1.3
*/
testcase TC_DEN_EVTR_BV_08() runs on ItsDenm system ItsDenmSystem {
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var TimestampIts v_referenceTime1 , v_timestampIts , v_msgtimestamp;
var Int16 v_diff;
var ActionID v_actionId;
var DenmInd v_denmInd;
// Test control
// Test component configuration
f_cfUp();
// Test adapter configuration
// Preamble
f_prInitialState();
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta));
f_awaitDenMessage(mw_denmInd(mw_anyDenmPdu), v_denmInd);
v_timestampIts := f_getCurrentTime();
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_referenceTime1 := v_denmInd.msgIn.denm.management.referenceTime;
v_diff := v_referenceTime1 - v_timestampIts;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
f_utTerminateEvent ( m_utEventCancellation ( v_actionId ) );
tc_ac.start;
alt {
[] denmPort.receive (
mw_denmInd ( mw_denmPdu ( mw_denm ( m_denmMgmtConTermination ( v_actionId, -, -, -, -, -, isCancellation ) ) ) ) ) -> value v_denmInd {
tc_ac.stop;
v_timestampIts := f_getCurrentTime();
v_msgtimestamp := v_denmInd.msgIn.denm.management.referenceTime;
if ( ( ( v_timestampIts + v_diff ) > v_msgtimestamp ) and ( v_msgtimestamp > v_referenceTime1 ) ) {
log("*** " & testcasename() & ": PASS: Successfully received expected DENM. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: ReferenceTime not updated correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_iut, v_actionId);
f_cfDown();
} // end TC_DEN_EVTR_BV_08
} // end denEventTermination
// 5.2.1.5
2165,14 → 2016,20
group denMessageRepetition {
/**
* @desc Check that DEN Basic Service repeats DENM transmission according to transmissionInterval
* parameter provided by application
* @desc Check that DEN Basic Sercive repeats DENM transmission according to repetitionInterval parameter provided by application
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated an event
* and the IUT having received an AppDENM_trigger request from the application layer
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1
* and containing validityDuration
* indicating DURATION_2 > DURATION_1
* and the IUT having generated an the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID1
2193,32 → 2050,20
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-01, ETSI EN 302 637-3, clause 6.1.2.3
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-01, ETSI EN 302 637-3, clause 6.1.2.3 and 8.2.2
*/
testcase TC_DEN_EVRP_BV_01() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_validityDuration := c_validityDuration_10sec;
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_1sec;
const float c_lowerTransmissionInterval := int2float(c_transmissionInterval)*0.95;
const float c_upperTransmissionInterval := int2float(c_transmissionInterval)*1.05;
const ValidityDuration c_repetitionDuration := c_validityDuration;
const TransmissionInterval c_repetitionInterval := c_interval_1sec; // INTERVAL_1
const ValidityDuration c_validityDuration := c_duration_10sec; // DURATION_2
const ValidityDuration c_repetitionDuration := c_validityDuration; // DURATION_1
const float c_lowerRepetitionInterval := int2float(c_repetitionInterval)*0.95;
const float c_upperRepetitionInterval := int2float(c_repetitionInterval)*1.05;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expectedDenmInd := mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(
mw_actionId,
-,
-,
-,
c_validityDuration,
c_transmissionInterval
)
)
)
);
var template (present) DenmInd v_expectedDenmInd :=
mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_actionId, -, -, c_validityDuration ) ) ) );
var ActionID v_actionId;
var DenmInd v_denmInd;
// Local timers
2233,17 → 2078,9
// Preamble
f_prInitialState();
f_utTriggerEvent(
m_utTriggerEvent(
v_situation,
m_denmLocation_zeroDelta,
c_validityDuration,
c_transmissionInterval,
c_repetitionDuration
)
);
f_utTriggerEvent ( m_utTriggerEvent ( v_situation, m_denmLocation_zeroDelta, c_validityDuration, c_repetitionDuration, c_repetitionInterval ) );
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
t_repetition.start(2.0 * int2float(c_transmissionInterval/1000));
t_repetition.start(2.0 * int2float(c_repetitionInterval/1000));
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_expectedDenmInd.msgIn.denm.management.actionID := v_actionId;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2251,25 → 2088,25
// Test Body
alt {
[] denmPort.receive(v_expectedDenmInd) -> value v_denmInd {
if (match(t_repetition.read*1000.0, (c_lowerTransmissionInterval..c_upperTransmissionInterval))) {
if (match(t_repetition.read*1000.0, (c_lowerRepetitionInterval..c_upperRepetitionInterval))) {
t_repetition.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM in the expected interval. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received expected DENM, interval was not correct. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] t_repetition.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2286,14 → 2123,17
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated an event
* and the IUT having received an AppDENM_trigger request from the application layer
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1
* and containing validityDuration
* indicating DURATION_2 > DURATION_1
* and the IUT having generated an the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing validityDuration
* indicating DURATION_1
* and containing transmissionInterval
* indicating INTERVAL_1
* and the IUT having generated an update of the event associated with ACTION_ID1 modifying partly the event
* }
* Expected behaviour:
2308,32 → 2148,20
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-02, ETSI EN 302 637-3, clause 6.1.2.3
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-02, ETSI EN 302 637-3, clause 6.1.2.3 and 8.2.2
*/
testcase TC_DEN_EVRP_BV_02() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_validityDuration := c_validityDuration_10sec;
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_5sec;
const ValidityDuration c_validityDuration := c_duration_10sec;
const TransmissionInterval c_repetitionInterval := c_interval_5sec;
const ValidityDuration c_repetitionDuration := c_validityDuration;
const float c_lowerTransmissionInterval := int2float(c_transmissionInterval)*0.95;
const float c_upperTransmissionInterval := int2float(c_transmissionInterval)*1.05;
const float c_lowerRepetitionInterval := int2float(c_repetitionInterval)*0.95;
const float c_upperRepetitionInterval := int2float(c_repetitionInterval)*1.05;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expectedDenmInd := mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(
mw_actionId,
-,
-,
-,
c_validityDuration,
c_transmissionInterval
)
)
)
);
var template (present) DenmInd v_expectedDenmInd :=
mw_denmInd(mw_denmPdu(mw_denm( mw_denmMgmtCon( mw_actionId, -, -, c_validityDuration))));
var ActionID v_actionId;
var DenmInd v_denmInd;
// Local timers
2348,15 → 2176,7
// Preamble
f_prInitialState();
f_utTriggerEvent(
m_utTriggerEvent(
v_situation,
m_denmLocation_zeroDelta,
c_validityDuration,
c_transmissionInterval,
c_repetitionDuration
)
);
f_utTriggerEvent( m_utTriggerEvent( v_situation, m_denmLocation_zeroDelta, c_validityDuration, c_repetitionDuration, c_repetitionInterval ) );
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_expectedDenmInd.msgIn.denm.management.actionID := v_actionId;
2367,31 → 2187,31
f_utUpdateEvent(m_utUpdateEvent(v_actionId, v_situation));
v_expectedDenmInd.msgIn.denm.situation := v_situation;
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
t_repetition.start(2.0 * int2float(c_transmissionInterval/1000));
t_repetition.start(2.0 * int2float(c_repetitionInterval/1000));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
alt {
[] denmPort.receive(v_expectedDenmInd) -> value v_denmInd {
if (match(t_repetition.read*1000.0, (c_lowerTransmissionInterval..c_upperTransmissionInterval))) {
if (match(t_repetition.read*1000.0, (c_lowerRepetitionInterval..c_upperRepetitionInterval))) {
t_repetition.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM in the expected interval. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received expected DENM, interval was not correct. ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] t_repetition.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict("error", e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2409,52 → 2229,45
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having generated an event
* and the IUT having received an AppDENM_trigger request from application layer
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1
* and containing validityDuration
* indicating DURATION_2 > DURATION_1
* and the IUT having generated the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing validityDuration
* indicating DURATION_1
* and containing transmissionInterval
* indicating INTERVAL_1
* and the IUT having repeated (one or more) the transmission of the valid DENM associated with ACTION_ID1
* and the IUT having repeated (one or more times) the transmission of the valid DENM associated with ACTION_ID1
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is alerted of expiration of the time associated with DURATION_1
* the IUT is alerted of expiration of the time associated with DURATION_2
* }
* then {
* the IUT stops the retransmission of the most up-to-date valid DENM associated with ACTION_ID1
* the IUT stops the retransmission of the DENM associated with ACTION_ID1
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-03, ETSI EN 302 637-3, clauses 6.1.2.4, 8.1.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-03, ETSI EN 302 637-3, clauses 6.1.2.4 and 8.2.2
*/
testcase TC_DEN_EVRP_BV_03() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_validityDuration := c_validityDuration_10sec;
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_4sec;
const ValidityDuration c_validityDuration := c_duration_10sec;
const TransmissionInterval c_repetitionInterval := c_interval_4sec;
const ValidityDuration c_repetitionDuration := c_validityDuration;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expectedDenmInd := mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(
mw_actionId,
-,
-,
-,
c_validityDuration,
c_transmissionInterval
)
)
)
);
var template (present) DenmInd v_expectedDenmInd :=
mw_denmInd(mw_denmPdu(mw_denm(mw_denmMgmtCon(mw_actionId, -, -, c_validityDuration))));
var ActionID v_actionId;
var DenmInd v_denmInd;
var integer i;
2470,21 → 2283,13
// Preamble
f_prInitialState();
f_utTriggerEvent(
m_utTriggerEvent(
v_situation,
m_denmLocation_zeroDelta,
c_validityDuration,
c_transmissionInterval,
c_repetitionDuration
)
);
f_utTriggerEvent(m_utTriggerEvent( v_situation, m_denmLocation_zeroDelta, c_validityDuration, c_repetitionDuration, c_repetitionInterval ));
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
t_validity.start(1.5 * int2float(c_validityDuration));
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_expectedDenmInd.msgIn.denm.management.actionID := v_actionId;
//await retransmitted DENM message based on the transmission interval in between the validity duration
for (i:=0; i<(c_validityDuration/(c_transmissionInterval/1000)); i:=i+1) {
//await retransmitted DENM message based on the repetition interval in between the validity duration
for (i:=0; i<(c_validityDuration/(c_repetitionInterval/1000)); i:=i+1) {
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2495,15 → 2300,15
log("*** " & testcasename() & ": PASS: Retransmission of DENM stopped successfully. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive(v_expectedDenmInd) -> value v_denmInd {
[] denmPort.receive(v_expectedDenmInd) {
t_validity.stop;
log("*** " & testcasename() & ": FAIL: Retransmission of DENM was not stopped. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_validity.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
2522,17 → 2327,19
* with {
* the IUT being in the "initial state"
* and the IUT having received an AppDENM_trigger request from application layer
* containing repetitionDuration
* indicating DURATION_2
* and the IUT having generated an event
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1
* and containing validityDuration
* indicating DURATION_2 > DURATION_1
* and the IUT having generated the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing validityDuration
* indicating DURATION_1 > DURATION_2
* and containing transmissionInterval
* indicating INTERVAL_1
* and the IUT having repeated (one or more) the transmission of the valid DENM associated with ACTION_ID1
* indicating DURATION_2
* and the IUT having repeated (one or more times) the transmission of the valid DENM associated with ACTION_ID1
* }
* Expected behaviour:
* ensure that {
2546,30 → 2353,17
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-04, ETSI EN 302 637-3, clause 8.1.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-04, ETSI EN 302 637-3, clause 8.2.2
*/
testcase TC_DEN_EVRP_BV_04() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_validityDuration := c_validityDuration_10sec;
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_2sec;
const ValidityDuration c_repetitionDuration := c_repetitionDuration_5sec;
const ValidityDuration c_validityDuration := c_duration_10sec;
const TransmissionInterval c_repetitionInterval := c_interval_2sec;
const ValidityDuration c_repetitionDuration := c_duration_5sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expectedDenmInd := mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(
mw_actionId,
-,
-,
-,
c_validityDuration,
c_transmissionInterval
)
)
)
);
var template (present) DenmInd v_expectedDenmInd := mw_denmInd(mw_denmPdu(mw_denm(mw_denmMgmtCon(mw_actionId, -, -, c_validityDuration))));
var ActionID v_actionId;
var DenmInd v_denmInd;
var integer i;
2585,21 → 2379,13
// Preamble
f_prInitialState();
f_utTriggerEvent(
m_utTriggerEvent(
v_situation,
m_denmLocation_zeroDelta,
c_validityDuration,
c_transmissionInterval,
c_repetitionDuration
)
);
f_utTriggerEvent(m_utTriggerEvent(v_situation, m_denmLocation_zeroDelta, c_validityDuration, c_repetitionDuration, c_repetitionInterval ));
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
t_repetition.start(1.5 * int2float(c_repetitionDuration));
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_expectedDenmInd.msgIn.denm.management.actionID := v_actionId;
//await retransmitted DENM message based on the transmission interval in between the repetition duration
for (i:=0; i<(c_repetitionDuration/(c_transmissionInterval/1000)); i:=i+1) {
//await retransmitted DENM message based on the repetition interval in between the repetition duration
for (i:=0; i<(c_repetitionDuration/(c_repetitionInterval/1000)); i:=i+1) {
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
2613,12 → 2399,12
[] denmPort.receive(v_expectedDenmInd) -> value v_denmInd {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Retransmission of DENM was not stopped. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
2629,7 → 2415,7
} // end TC_DEN_EVRP_BV_04
/**
* @desc Check that DEN Basic Service does not repeat transmission of DENM if transmissionInterval is
* @desc Check that DEN Basic Service does not repeat transmission of DENM if repetitionInterval is
* not provided by application
* <pre>
* PICS Selection: none
2637,18 → 2423,16
* with {
* the IUT being in the "initial state"
* and the IUT having received an AppDENM_trigger request from application layer
* not containing transmissionInterval
* and the IUT having generated an event
* not containing repetitionInterval
* and the IUT having generated an the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing validityDuration
* indicating DURATION_1
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT has detected that transmissionInterval is not provided for the event associated with ACTION_ID1
* the IUT has detected that repetitionInterval is not provided for the event associated with ACTION_ID1
* }
* then {
* the IUT does not repeat the transmission of the valid DENM associated with ACTION_ID1
2662,7 → 2446,7
testcase TC_DEN_EVRP_BV_05() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_validityDuration := c_validityDuration_10sec;
const ValidityDuration c_validityDuration := c_duration_10sec;
const ValidityDuration c_repetitionDuration := c_validityDuration;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
2699,8 → 2483,8
v_situation,
m_denmLocation_zeroDelta,
c_validityDuration,
omit, //no transmissionInterval
c_repetitionDuration
c_repetitionDuration,
omit //no repetitionInterval
)
);
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
2718,12 → 2502,12
[] denmPort.receive(v_expectedDenmInd) -> value v_denmInd {
t_validity.stop;
log("*** " & testcasename() & ": FAIL: Unexpected retransmission of DENM occured. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_validity.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
2743,14 → 2527,10
* the IUT being in the "initial state"
* and the IUT having received an AppDENM_trigger request from application layer
* not containing repetitionDuration
* and the IUT having generated an event
* and the IUT having generated an the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing validityDuration
* indicating DURATION_1
* and containing transmissionInterval
* indicating INTERVAL_1
* }
* Expected behaviour:
* ensure that {
2764,13 → 2544,13
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-06, ETSI EN 302 637-3, clause 6.1.2.3
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-06, ETSI EN 302 637-3, clause 8.1.2
*/
testcase TC_DEN_EVRP_BV_06() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_validityDuration := c_validityDuration_10sec;
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_2sec;
const ValidityDuration c_validityDuration := c_duration_10sec;
const TransmissionInterval c_repetitionInterval := c_interval_2sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expectedDenmInd := mw_denmInd(
2780,9 → 2560,7
mw_actionId,
-,
-,
-,
c_validityDuration,
c_transmissionInterval
c_validityDuration
)
)
)
2807,8 → 2585,8
v_situation,
m_denmLocation_zeroDelta,
c_validityDuration,
c_transmissionInterval,
omit //no repetitionDuration
omit, //no repetitionDuration
c_repetitionInterval
)
);
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
2826,12 → 2604,12
[] denmPort.receive(v_expectedDenmInd) -> value v_denmInd {
t_validity.stop;
log("*** " & testcasename() & ": FAIL: Unexpected retransmission of DENM occured. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_validity.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict("error", e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
2841,6 → 2619,411
} // end TC_DEN_EVRP_BV_06
/**
* @desc Check that existing actionID in originating ITS-S are updated when stationID is modified
*
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having received an AppDENM_trigger request from application layer
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1
* and containing validityDuration
* indicating DURATION_2 > DURATION_1
* and the IUT having generated the corresponding event
* containing management container
* containing actionID
* containing originatororiginatingStationID
* indicating STATION_ID_1
* and containing validityDuration
* indicating DURATION_1
* and the IUT having changed its StationID
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT changes its StationID and is alerted of expiration of the time associated with INTERVAL_1
* }
* then {
* the IUT repeats the transmission of the valid DENM
* containing management container
* containing actionID
* containing originatingStationID
* indicating its new StationID
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-08, ETSI EN 302 637-3, clause 6.1.1.2
*/
testcase TC_DEN_EVRP_BV_08() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_duration1 := 3 * c_duration_2sec;
const ValidityDuration c_duration2 := c_duration_10sec;
const TransmissionInterval c_interval1 := c_interval_1sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation ( c_causeVehicleBreakdown, c_subCauseCode_Unavailable );
var template (present) DenmInd v_expectedDenmInd :=
mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_actionId, -, -, c_duration2 ) ) ) );
var ActionID v_actionId;
var DenmInd v_denmInd;
// Preamble
f_prInitialState();
f_utTriggerEvent ( m_utTriggerEvent ( v_situation, m_denmLocation_zeroDelta, c_duration2, c_duration1, c_interval1 ) );
f_awaitDenMessage ( v_expectedDenmInd, v_denmInd );
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_expectedDenmInd.msgIn.denm.management.actionID := v_actionId;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
 
// Test Body
f_utChangePseudonym ( m_utChangePseudonym );
tc_ac.start;
alt {
[] denmPort.receive ( v_expectedDenmInd ) -> value v_denmInd {
tc_ac.stop;
if ( v_denmInd.msgIn.denm.management.actionID.originatingStationID != v_actionId.originatingStationID ) {
log("*** " & testcasename() & ": PASS: Successfully received expected DENM - Pseudonym changed. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: received expected DENM - Pseudonym not changed. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_iut, v_actionId);
f_cfDown();
 
} // end TC_DEN_EVRP_BV_08
/**
* @desc Check that actionID is not modified in repetitions of DENM if stationID is not modified
*
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having received an AppDENM_trigger request from application layer
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1
* and containing validityDuration
* indicating DURATION_2 > DURATION_1
* and the IUT having generated the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID_1
* and containing validityDuration
* indicating DURATION_1
* and the IUT not having changed its StationID
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is alerted of expiration of the time associated with INTERVAL_1
* }
* then {
* the IUT repeats the transmission of the valid DENM
* containing management container
* containing actionID
* indicating its ACTION_ID_1
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-09, ETSI EN 302 637-3, clause 8.2.1.2
*/
testcase TC_DEN_EVRP_BV_09() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_duration1 := 3 * c_duration_2sec;
const ValidityDuration c_duration2 := c_duration_10sec;
const TransmissionInterval c_interval1 := c_interval_1sec;
const float c_lowerTransmissionInterval := int2float(c_interval1)*0.95;
const float c_upperTransmissionInterval := int2float(c_interval1)*1.05;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expectedDenmInd :=
mw_denmInd(mw_denmPdu(mw_denm( mw_denmMgmtCon( mw_actionId, -, -, c_duration2))));
var ActionID v_actionId;
var DenmInd v_denmInd;
// Local timers
timer t_repetition;
// Test component configuration
f_cfUp();
// Preamble
f_prInitialState();
f_utTriggerEvent( m_utTriggerEvent( v_situation, m_denmLocation_zeroDelta, c_duration2, c_duration1, c_interval1 ) );
f_awaitDenMessage(v_expectedDenmInd, v_denmInd);
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_expectedDenmInd.msgIn.denm.management.actionID := v_actionId;
t_repetition.start(2.0 * int2float(c_interval1/1000));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
alt { //FIXME rewrite TC
[] denmPort.receive(v_expectedDenmInd) -> value v_denmInd {
if (match(t_repetition.read*1000.0, (c_lowerTransmissionInterval..c_upperTransmissionInterval))) {
t_repetition.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM in the expected interval. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received expected DENM, interval was not correct. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] t_repetition.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_iut, v_actionId);
f_cfDown();
 
} // end TC_DEN_EVRP_BV_09
/**
* @desc Check that actionID is not modified in repetitions of DENM if stationID is not modified
*
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having received an AppDENM_trigger request from application layer
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1
* and containing validityDuration
* indicating DURATION_2 > DURATION_1
* and the IUT having generated the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID_1
* and containing validityDuration
* indicating DURATION_2
* and containing referenceTime
* indicating REFERENCE_TIME_1
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is alerted of expiration of the time associated with INTERVAL_1
* }
* then {
* the IUT repeats the transmission of the valid DENM
* containing management container
* containing actionID
* indicating its ACTION_ID_1
* and containing referenceTime
* indicating REFERENCE_TIME_1
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-10, ETSI EN 302 637-3, clause 8.2.1.2
*/
testcase TC_DEN_EVRP_BV_10() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_duration1 := 3 * c_duration_2sec;
const ValidityDuration c_duration2 := c_duration_10sec;
const TransmissionInterval c_interval1 := c_interval_1sec;
const float c_lowerTransmissionInterval := int2float(c_interval1)*0.95;
const float c_upperTransmissionInterval := int2float(c_interval1)*1.05;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expected := mw_denmInd(mw_denmPdu(mw_denm( mw_denmMgmtCon( mw_actionId, -, -, c_duration2 ))));
var ActionID v_actionId;
var DenmInd v_denmInd;
var TimestampIts v_referenceTime;
// Local timers
timer t_repetition;
// Test component configuration
f_cfUp();
// Preamble
f_prInitialState();
f_utTriggerEvent( m_utTriggerEvent( v_situation, m_denmLocation_zeroDelta, c_duration2, c_duration1, c_interval1 ) );
f_awaitDenMessage ( v_expected, v_denmInd );
t_repetition.start(2.0 * int2float(c_interval1/1000));
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_referenceTime := v_denmInd.msgIn.denm.management.referenceTime;
v_expected.msgIn.denm.management.actionID := v_actionId;
v_expected.msgIn.denm.management.referenceTime := v_referenceTime;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
alt { //FIXME rewrite TC
[] denmPort.receive ( v_expected ) -> value v_denmInd {
if (match(t_repetition.read*1000.0, (c_lowerTransmissionInterval..c_upperTransmissionInterval))) {
t_repetition.stop;
log("*** " & testcasename() & ": PASS: Successfully received expected DENM in the expected interval. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received expected DENM, interval was not correct. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] t_repetition.timeout {
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_iut, v_actionId);
f_cfDown();
 
} // end TC_DEN_EVRP_BV_10
/**
* @desc Check that DEN Basic Service stops retransmitting DENM after event's validityDuration expiration
*
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT having received an AppDENM_trigger request from application layer
* containing repetitionInterval
* indicating INTERVAL_1
* and containing repetitionDuration
* indicating DURATION_1 > defaultValidityDuration
* and not containing validityDuration
* and the IUT having generated the corresponding event
* containing management container
* containing actionID
* indicating ACTION_ID_1
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is alerted of expiration of the defaultValidityDuration
* }
* then {
* the IUT stops the retransmission of the DENM associated with ACTION_ID1
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/EVRP/BV-11, ETSI EN 302 637-3, clause 8.2.1.5
*/
testcase TC_DEN_EVRP_BV_11() runs on ItsDenm system ItsDenmSystem {
// Local constants
const ValidityDuration c_duration1 := c_defaultValidity + 100;
const ValidityDuration c_duration2 := c_defaultValidity;
const TransmissionInterval c_interval1 := c_interval_10sec;
const float c_diffValidity := int2float ( ( c_duration1 - c_duration2 ) );
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var template (present) DenmInd v_expected := mw_denmInd(mw_denmPdu(mw_denm( mw_denmMgmtCon( mw_actionId, -, -, c_duration2))));
var ActionID v_actionId;
var DenmInd v_denmInd;
var TimestampIts v_referenceTime;
// Local timers
timer t_repetition;
timer t_default;
// Test component configuration
f_cfUp();
// Preamble
f_prInitialState();
f_utTriggerEvent( m_utTriggerEvent( v_situation, m_denmLocation_zeroDelta, omit, c_duration1, c_interval1 ) );
f_awaitDenMessage ( v_expected, v_denmInd );
t_repetition.start(2.0 * int2float(c_interval1/1000));
t_default.start ( int2float( c_duration1/1000 ) );
v_actionId := v_denmInd.msgIn.denm.management.actionID;
v_expected.msgIn.denm.management.actionID := v_actionId;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
alt {
[] denmPort.receive ( v_expected ) -> value v_denmInd {
t_repetition.stop;
if ( t_default.read*1000.0 < c_diffValidity ) {
log("*** " & testcasename() & ": FAIL: DENM received after validity duration. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": INFO: DENM retransmission. ***");
t_repetition.start(2.0 * int2float(c_interval1/1000));
repeat;
}
}
[] denmPort.receive(mw_denmInd(mw_anyDenmPdu)) {
t_repetition.stop;
log("*** " & testcasename() & ": FAIL: Received an unexpected DENM. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] t_repetition.timeout {
if ( t_default.read*1000.0 < c_diffValidity ) {
t_default.stop;
log("*** " & testcasename() & ": PASS: Retransmission of DENM stopped. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
t_default.stop;
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
[] t_default.timeout {
t_repetition.stop;
log("*** " & testcasename() & ": INCONC: Timeout while awaiting the reception of a message. ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_iut, v_actionId);
f_cfDown();
 
} // end TC_DEN_EVRP_BV_11
} // end denMessageRepetition
} // end denMessageTransmission
2849,17 → 3032,13
group denMessageReception {
/**
* @desc Check that receiver ITS-S transmits DENM to application if it concerns an unknown ActionID
* and if it is not a termination DENM
* @desc Check that receiving ITS-S transmits DENM to application if it concerns an unknown ActionID and if it is not a termination DENM
*
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* and the IUT not having send DENM
* containing management container
* containing actionID
* indicating ACTION_ID1
* and the IUT not having received DENM
* containing management container
* containing actionID
2880,7 → 3059,7
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/MSRV/BV-01, ETSI EN 302 637-3, clause 8.3.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/MSRV/BV-01, ETSI EN 302 637-3, clause 8.4.2
*/
testcase TC_DEN_MSRV_BV_01() runs on ItsDenm system ItsDenmSystem {
2931,7 → 3110,7
} // end TC_DEN_MSRV_BV_01
/**
* @desc Check that receiver ITS-S transmits DENM to application if it concerns a known ActionID
* @desc Check that receiving ITS-S transmits DENM to application if it concerns a known ActionID
* and referenceTime is greater than highest value received for this ActionID
* <pre>
* PICS Selection: none
2963,7 → 3142,7
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/MSRV/BV-02, ETSI EN 302 637-3, clause 8.3.2
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/MSRV/BV-02, ETSI EN 302 637-3, clause 8.4.2
*/
testcase TC_DEN_MSRV_BV_02() runs on ItsDenm system ItsDenmSystem {
3002,8 → 3181,7
m_denm(
m_denmMgmtCon(
v_actionId,
-, -, -, -, -,
v_referenceTime2
-, -, -, v_referenceTime2
),
v_situation2,
m_denmLocation_zeroDelta
3032,7 → 3210,7
} // end TC_DEN_MSRV_BV_02
/**
* @desc Check that receiver ITS-S discards termination DENM if it concerns an unknown ActionID
* @desc Check that receiving ITS-S discards termination DENM if it concerns an unknown ActionID (own actionID)
* <pre>
* PICS Selection: none
* Initial conditions:
3083,8 → 3261,7
m_denm(
m_denmMgmtCon(
m_tsActionId,
-,
true
-
),
v_situation,
m_denmLocation_zeroDelta
3111,7 → 3288,7
} // end TC_DEN_MSRV_BV_03
/**
* @desc Check that receiver ITS-S discards termination DENM if it concerns an unknown ActionID
* @desc Check that receiving ITS-S discards termination DENM if it concerns an unknown ActionID (other actionID)
* <pre>
* PICS Selection: none
* Initial conditions:
3163,9 → 3340,8
m_denmMgmtCon(
m_actionId(
f_increaseSequenceNumber(v_actionId.sequenceNumber)
)
),
true
),
v_situation,
m_denmLocation_zeroDelta
)
3191,7 → 3367,7
} // end TC_DEN_MSRV_BV_04
/**
* @desc Check that receiver ITS-S discards DENM if referenceTime is lower than highest value received for this ActionID
* @desc Check that receiving ITS-S discards DENM if referenceTime is lower than highest value received for this ActionID
* <pre>
* PICS Selection: none
* Initial conditions:
3250,8 → 3426,7
m_denm(
m_denmMgmtCon(
m_tsActionId,
-, -, -, -, -,
v_referenceTime1
-, -, -, v_referenceTime1
),
v_situation1,
m_denmLocation_zeroDelta
3259,17 → 3434,7
);
f_sleep(1.0);
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
v_actionId,
-, -, -, -, -,
v_referenceTime2
),
v_situation2,
m_denmLocation_zeroDelta
)
);
v_actionId := f_sendDenMessage ( m_denm ( m_denmMgmtCon ( v_actionId, -, -, -, v_referenceTime2 ), v_situation2, m_denmLocation_zeroDelta ) );
f_sleep(PX_TNOAC);
for(i:=0; i < lengthof(vc_utEvents)
3293,8 → 3458,8
} // end TC_DEN_MSRV_BV_05
/**
* @desc Check that receiver ITS-S discards DENM if referenceTime is equal to highest
* received value and detectionTime is not more recent
* @desc Check that receiving ITS-S discards DENM if detectionTime is smaller than highest value received for this ActionID
*
* <pre>
* PICS Selection: none
* Initial conditions:
3358,7 → 3523,7
v_denm := m_denm(
m_denmMgmtCon(
m_tsActionId,
-, - ,- ,-,
-, - , -,
v_detectionTime1,
v_referenceTime1
),
3370,18 → 3535,7
f_sleep(1.0);
v_detectionTime2 := valueof(v_denm.management.detectionTime) - 1000;
v_actionId := f_sendDenMessage(
m_denm(
m_denmMgmtCon(
v_actionId,
-, - ,- ,-,
v_detectionTime2,
v_referenceTime1
),
v_situation2,
m_denmLocation_zeroDelta
)
);
m_denm ( m_denmMgmtCon ( v_actionId, -, - , -, v_detectionTime2, v_referenceTime1 ), v_situation2, m_denmLocation_zeroDelta ) );
f_sleep(PX_TNOAC);
for(i:=0; i < lengthof(vc_utEvents)
and not match(v_actionId, vc_utEvents[i].denMsg.denm.management.actionID)
3404,7 → 3558,7
} // end TC_DEN_MSRV_BV_06
/**
* @desc Check that receiver ITS-S transmits DENM to application if it concerns a known ActionID and referenceTime
* @desc Check that receiving ITS-S transmits DENM to application if it concerns a known ActionID and referenceTime
* is equal to highest received value and detectionTime is more recent
* <pre>
* PICS Selection: none
3468,7 → 3622,7
v_denm := m_denm(
m_denmMgmtCon(
m_tsActionId,
-, - ,- ,-,
-, - , -,
v_detectionTime1,
v_referenceTime1
),
3483,7 → 3637,7
m_denm(
m_denmMgmtCon(
v_actionId,
-, - ,- ,-,
-, - , -,
v_detectionTime2,
v_referenceTime1
),
3513,6 → 3667,87
} // end TC_DEN_MSRV_BV_07
/**
* @desc Check that receiving ITS-S replies to requestResponseIndication
*
* <pre>
* PICS Selection: none
* Initial conditions:
* with {
* the IUT being in the "initial state"
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives a DENM
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing alacarte container
* containing ImpactReductionContainer
* containing requestResponseIndication
* indicating request(0)
* }
* then {
* the IUT sends a DENM
* containing management container
* containing actionID
* indicating ACTION_ID2
* and containing alacarte container
* containing ImpactReductionContainer
* containing requestResponseIndication
* indicating response(1)
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/MSRV/BV-10, ETSI EN 302 637-3, clause B.40
*/
testcase TC_DEN_MSRV_BV_10() runs on ItsDenm system ItsDenmSystem {
 
//Local constants
 
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
// Test component configuration
f_cfUp();
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage (
m_denm ( m_denmMgmtCon ( m_tsActionId), v_situation, m_denmLocation_zeroDelta, m_alacarteConImpactReduction ) );
tc_ac.start;
alt {
[] denmPort.receive ( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_actionId ( f_getTsStationId() ) ), v_situation, mw_anyDenmLocation,
mw_alacarteConImpactReduction ) ) ) ) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: DENM with correct alacarte container ***");
f_clientSyncAndVerdict(c_tbDone, e_success);
}
[] denmPort.receive ( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( mw_actionId ( f_getTsStationId() ) ) ) ) ) ) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: DENM with incorrect containers ***");
f_clientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: DENM not rreceived ***");
f_clientSyncAndVerdict(c_tbDone, e_timeout);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
 
} // end TC_DEN_MSRV_BV_10
} // end denMessageReception
// 5.2.3
3519,7 → 3754,7
group denKeepAliveForwarding {
 
/**
* @desc Check that forwarder ITS-S forwards DENM if no DENM with same ActionId has been received during forwarding delay
* @desc Check that forwarding ITS-S forwards DENM if no DENM with same ActionId has been received during forwarding delay
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
3554,7 → 3789,7
testcase TC_DEN_KAFW_BV_01() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
3578,7 → 3813,6
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval
),
3627,7 → 3861,7
} // end TC_DEN_KAFW_BV_01
/**
* @desc Check that forwarder ITS-S forwards DENM if no DENM with same ActionId and referenceTime greater
* @desc Check that forwarding ITS-S forwards DENM if no DENM with same ActionId and referenceTime greater
* or equal to the last received DENM has been received during forwarding delay
* <pre>
* PICS Selection: PICS_KAF
3672,7 → 3906,7
testcase TC_DEN_KAFW_BV_02() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var TimestampIts v_referenceTime1 := f_getCurrentTime();
3698,10 → 3932,8
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval,
-,
v_referenceTime1
),
v_situation,
3717,10 → 3949,8
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval,
-,
v_referenceTime2
),
v_situation,
3811,7 → 4041,7
testcase TC_DEN_KAFW_BV_03() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
3836,7 → 4066,6
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval
),
3885,7 → 4114,7
} // end TC_DEN_KAFW_BV_03
 
/**
* @desc Check that Forwarder ITS-S replaces the ITS PDU header of forwarded DENMs
* @desc Check that Forwarding ITS-S replaces the ITS PDU header of forwarded DENMs
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
3923,7 → 4152,7
testcase TC_DEN_KAFW_BV_04() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
3945,7 → 4174,6
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval
),
3997,7 → 4225,7
} // end TC_DEN_KAFW_BV_04
 
/**
* @desc Check that forwarder ITS-S does not change actionID
* @desc Check that forwarding ITS-S does not change actionID
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
4034,7 → 4262,7
testcase TC_DEN_KAFW_BV_05() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
4056,7 → 4284,6
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval
),
4106,7 → 4333,7
} // end TC_DEN_KAFW_BV_05
/**
* @desc Check that forwarder ITS-S does not change referenceTime
* @desc Check that forwarding ITS-S does not change referenceTime
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
4146,7 → 4373,7
testcase TC_DEN_KAFW_BV_06() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var TimestampIts v_referenceTime1 := f_getCurrentTime();
4169,10 → 4396,8
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval,
-,
v_referenceTime1
),
v_situation,
4221,7 → 4446,7
} // end TC_DEN_KAFW_BV_06
 
/**
* @desc Check that forwarder ITS-S does not change isNegation
* @desc Check that forwarding ITS-S does not change termination
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
4234,8 → 4459,8
* indicating TRANS_INTERVAL1
* and containing validityDuration
* indicating value DURATION_1 more than 3 times greater than TRANS_INTERVAL1
* and containing isNegation
* indicating ISNEGATION_1
* and containing termination
* indicating isNegation
* and the IUT having starting timer T_Forwarding for this DENM
* and the IUT not having received further DENM
* containing actionID
4249,8 → 4474,8
* then {
* the IUT reconstructs and sends the DENM associated to ACTION_ID1
* containing management container
* containing isNegation
* indicating ISNEGATION_1
* containing termination
* indicating isNegation
* }
* }
* </pre>
4261,7 → 4486,7
testcase TC_DEN_KAFW_BV_07() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
4282,7 → 4507,6
m_denm(
m_denmMgmtCon(
m_tsActionId,
false,
-,
c_transmissionInterval * 3,
c_transmissionInterval
4298,7 → 4522,7
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId, -, false)
mw_denmMgmtCon ( v_actionId, - )
)
)
)
4311,7 → 4535,7
mw_denmInd(
mw_denmPdu(
mw_denm(
mw_denmMgmtCon(v_actionId, -, true)
mw_denmMgmtCon ( v_actionId, - )
)
)
)
4333,7 → 4557,7
} // end TC_DEN_KAFW_BV_07
 
/**
* @desc Check that Forwarder ITS-S does not modify management, situation, location and alacarte containers
* @desc Check that Forwarding ITS-S does not modify management, situation, location and alacarte containers
* when forwarding a DENM
* <pre>
* PICS Selection: PICS_KAF
4349,6 → 4573,8
* indicating LOCATION_1
* and containing alacarte container
* indicating ALACARTE_1
* and containing transmissionInterval
* indicating TRANS_INTERVAL1
* and the IUT having starting timer T_Forwarding for this DENM
* and the IUT not having received further DENM
* containing actionID
4379,7 → 4605,7
testcase TC_DEN_KAFW_BV_08() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
4401,7 → 4627,6
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval
),
4455,7 → 4680,7
} // end TC_DEN_KAFW_BV_08
 
/**
* @desc Check that forwarder ITS-S stops forwarding DENM after validity expiration
* @desc Check that forwarding ITS-S stops forwarding DENM after validity expiration
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
4467,6 → 4692,8
* indicating ACTION_ID1
* and containing validityDuration
* indicating DURATION_1
* and containing transmissionInterval
* indicating TRANS_INTERVAL1
* and the IUT having starting timer T_Forwarding for this DENM
* and the IUT not having received further DENM
* containing actionID
4489,7 → 4716,7
testcase TC_DEN_KAFW_BV_09() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
4513,7 → 4740,6
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 3,
c_transmissionInterval
),
4569,7 → 4795,7
} // end TC_DEN_KAFW_BV_09
/**
* @desc Check that forwarder ITS-S stops forwarding DENM if it is outside relevance area
* @desc Check that forwarding ITS-S stops forwarding DENM if it is outside relevance area
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
4579,6 → 4805,8
* containing management container
* containing actionID
* indicating ACTION_ID1
* and containing transmissionInterval
* indicating TRANS_INTERVAL1
* and the IUT having starting timer T_Forwarding for this DENM
* and the IUT not having received further DENM
* containing actionID
4601,7 → 4829,7
testcase TC_DEN_KAFW_BV_10() runs on ItsDenm system ItsDenmSystem {
//Local constants
const TransmissionInterval c_transmissionInterval := c_transmissionInterval_10sec;
const TransmissionInterval c_transmissionInterval := c_interval_10sec;
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
4624,7 → 4852,6
m_denmMgmtCon(
m_tsActionId,
-,
-,
c_transmissionInterval * 5,
c_transmissionInterval
),
4675,6 → 4902,66
} // end TC_DEN_KAFW_BV_10
/**
* @desc Check that forwarding ITS-S does not forward DENM is transmissionInterval is not present
* <pre>
* PICS Selection: PICS_KAF
* Initial conditions:
* with {
* the IUT being in the "initial state"
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives a DENM
* containing actionID
* indicating ACTION_ID1
* and not containing transmissionInterval
* }
* then {
* the IUT does not reconstruct and send the DENM associated with ACTION_ID1
* }
* }
* </pre>
*
* @version 1.2.1
* @see ETSI TS 102 869-2 v1.2.1 TP/DEN/KAFW/BV-10, ETSI EN 302 637-3, clause 8.2.2
*/
testcase TC_DEN_KAFW_BV_11() runs on ItsDenm system ItsDenmSystem {
 
// Local variables
var template (value) SituationContainer v_situation := m_situation(c_causeVehicleBreakdown, c_subCauseCode_Unavailable);
var ActionID v_actionId;
// Test component configuration
f_cfUp();
// Preamble
f_prInitialState();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
v_actionId := f_sendDenMessage( m_denm ( m_denmMgmtCon ( m_tsActionId ), v_situation, m_denmLocation_zeroDelta ) );
tc_ac.start;
alt {
[] denmPort.receive ( mw_denmInd ( mw_denmPdu ( mw_denm ( mw_denmMgmtCon ( v_actionId ) ) ) ) ) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: IUT reconstructs and sends the DENM associated with ACTION_ID ***");
f_clientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": PASS: IUT does not reconstruct and send the DENM associated with ACTION_ID1 ***");
f_clientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poCancelEvent(e_ets, v_actionId);
f_cfDown();
 
} // end TC_DEN_KAFW_BV_11
} // end denKeepAliveForwarding
} // end ItsDenm_TestCases
/trunk/ttcn/AtsDENM/ItsDenm_TestControl.ttcn
21,10 → 21,8
execute(TC_DEN_EVGN_BV_03());
execute(TC_DEN_EVGN_BV_04());
execute(TC_DEN_EVGN_BV_05());
execute(TC_DEN_EVGN_BV_06());
execute(TC_DEN_EVGN_BV_07());
execute(TC_DEN_EVGN_BV_08());
execute(TC_DEN_EVGN_BV_09());
execute(TC_DEN_EVUP_BV_01());
execute(TC_DEN_EVUP_BV_02());
/trunk/ttcn/AtsGeoNetworking/ItsGeoNetworking_TestCases.ttcn
52,7 → 52,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/BAH/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/BAH/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.2 , 8.6.2 and Annex G
*/
testcase TC_GEONW_FDV_BAH_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
70,12 → 70,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
82,11 → 82,11
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwUnicastPacket(?, ?), -, f_getDefaultHopLimit()))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Basic Header correctly formatted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
119,7 → 119,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/BAH/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/BAH/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.3
*/
testcase TC_GEONW_FDV_BAH_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
138,7 → 138,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
152,11 → 152,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: GN was discarded and not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
197,7 → 197,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/COH/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/COH/BV/01
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.7.4, 8.8.6 and 9.3.6
*/
testcase TC_GEONW_FDV_COH_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
216,7 → 216,7
// Preamble
f_prNeighbour();
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
224,11 → 224,11
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(?)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Common Header correclty formatted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
270,7 → 270,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/COH/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/COH/BV/02
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.7.4, 8.8.4, 9.3.4 and 9.3.10
*/
testcase TC_GEONW_FDV_COH_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
290,9 → 290,9
f_prNeighbour();
if ( not f_utTriggerEvent(m_generateShbMessageWithPayload(v_payload)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
302,7 → 302,7
if(ispresent(v_geoNwInd.msgIn.gnPacket.packet.payload)) {
if(v_geoNwInd.msgIn.gnPacket.packet.commonHeader.plLength == lengthof(v_geoNwInd.msgIn.gnPacket.packet.payload.rawPayload)) {
log("*** " & testcasename() & ": PASS: PL field correctly indicates payload size ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: PL does correctly not indicate payload size ("
310,23 → 310,23
& " != "
& int2str(lengthof(v_geoNwInd.msgIn.gnPacket.packet.payload.rawPayload))
& ")***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
else {
if(v_geoNwInd.msgIn.gnPacket.packet.commonHeader.plLength == 0) {
log("*** " & testcasename() & ": PASS: PL field correctly indicates empty payload ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: PL does not indicate empty payload ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
362,7 → 362,7
* </pre>
*
* @version 0.0.11
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/COH/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/COH/BV/03
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.8.2, 9.3.4 and Annex G
*/
testcase TC_GEONW_FDV_COH_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
380,12 → 380,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
394,16 → 394,16
mw_geoNwUnicastPacketWithHlAndFlags(?, ?, f_getDefaultHopLimit(), f_isMobile())))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Correct GeoNetworking Common Header received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] a_receiveAnyGeoUnicast() {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Incorrect GeoNetworking Common Header received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
444,7 → 444,7
* </pre>
*
* @version 0.0.11
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/COH/BV/04
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/COH/BV/04
* @reference EN 302 636-4-1 [1], clauses 9.3.5
*/
testcase TC_GEONW_FDV_COH_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
485,7 → 485,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
516,11 → 516,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: TSB packet was not discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: TSB was correctly discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
539,7 → 539,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
556,11 → 556,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: TSB packet was not discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: TSB was correctly discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
606,7 → 606,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/BEA/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/BEA/BV/01
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.8.6 and 9.3.6
*/
testcase TC_GEONW_FDV_BEA_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
625,7 → 625,7
// Preamble
f_prNeighbour();
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
633,11 → 633,11
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(mw_longPosVectorPosition(v_longPosVectorIut), e_any)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Common Header correclty formatted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
675,7 → 675,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/BEA/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/BEA/BV/02
* @reference EN 302 636-4-1 [1], clauses 6.3 and 8.8.6.2
*/
testcase TC_GEONW_FDV_BEA_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
694,7 → 694,7
// Preamble
f_prNeighbour();
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
703,11 → 703,11
mw_longPosVectorAny(f_getIutGnLocalAddress()))))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GN address correctly received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
739,7 → 739,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/BEA/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/BEA/BV/03
* @reference EN 302 636-4-1 [1], clauses 8.5.2.2 and 8.8.6.2
*/
testcase TC_GEONW_FDV_BEA_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
758,7 → 758,7
// Preamble
f_prNeighbour();
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
766,11 → 766,11
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Position equaling GN-MNGT primitive value received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
802,7 → 802,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/BEA/BV/04
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/BEA/BV/04
* @reference EN 302 636-4-1 [1], clauses 8.5.2.2 and 8.8.6.2
*/
testcase TC_GEONW_FDV_BEA_BV_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
821,7 → 821,7
// Preamble
f_prNeighbour();
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
829,11 → 829,11
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Timestamp equaling GN-MNGT primitive value received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
879,7 → 879,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/GUC/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/GUC/BV/01
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.8.2.2 and 9.3.8
*/
testcase TC_GEONW_FDV_GUC_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
899,12 → 899,12
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
v_longPosVectorIut := f_getPosition(c_compIut);
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
923,11 → 923,11
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Fields of the received GeoUnicast message correctly set ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: GeoUnicast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
969,7 → 969,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/GBC/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/GBC/BV/01
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.7.4, 8.8.5.2 and 9.3.11
*/
testcase TC_GEONW_FDV_GBC_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
990,12 → 990,12
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
v_longPosVectorIut := f_getPosition(c_compIut);
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessageWithPayload(f_getArea(c_area1), v_payload)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
1014,11 → 1014,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Fields of the received GeoBroadcast message correctly set ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1060,7 → 1060,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/GAC/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/GAC/BV/01
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.7.4, 8.8.5.2 and 9.3.12
*/
testcase TC_GEONW_FDV_GAC_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1079,12 → 1079,12
// Preamble
v_longPosVectorIut := f_getPosition(c_compIut);
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoAnycastMessageWithPayload(f_getArea(c_area1), v_payload)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
1103,11 → 1103,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Fields of the received GeoAnycast message correctly set ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1153,7 → 1153,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/SHB/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/SHB/BV/01
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.7.4, 9.3.4, 8.8.4.2 and 9.3.10
*/
testcase TC_GEONW_FDV_SHB_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1171,12 → 1171,12
// Preamble
v_longPosVectorIut := f_getPosition(c_compIut);
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateShbMessage) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
1192,11 → 1192,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Fields of the received SHB message correctly set ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: SHB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1240,7 → 1240,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/FDV/TSB/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/FDV/TSB/BV/01
* @reference EN 302 636-4-1 [1], clauses 8.7.2, 8.7.4, 8.8.3.2 and 9.3.9
*/
testcase TC_GEONW_FDV_TSB_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1258,12 → 1258,12
// Preamble
v_longPosVectorIut := f_getPosition(c_compIut);
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateTsbMessage) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
1279,11 → 1279,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: message received with correct common and extended headers ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: TSB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1337,8 → 1337,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.6.2 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.10.3, 9.3.6.2 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1355,12 → 1355,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
1368,16 → 1368,16
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeB))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] a_receiveAnyLsRequest() {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": TIMEOUT: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1429,8 → 1429,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.7.1.2, 9.3.7.1.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.7.1.4, 9.3.7.1.2 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1456,7 → 1456,7
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
1475,20 → 1475,20
}
else {
log("*** " & testcasename() & ": Pre-conditions: GeoUnicast packet received without LS Request ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Pre-conditions: Initial conditions not satisfied. ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
1495,17 → 1495,17
[] a_receiveLsRequest(?, v_gnAddressNodeA.mid, v_longPosVectorIut) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Received second GeoUnicast packet without LS Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
1553,8 → 1553,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1607,8 → 1607,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1663,8 → 1663,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1719,8 → 1719,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1775,8 → 1775,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1830,8 → 1830,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1884,8 → 1884,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_07() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1942,8 → 1942,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.9.3, 9.3.10.3, 9.3.7.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOT_BV_03_08() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
1993,7 → 1993,7
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(p_packet))
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
} // end f_TP_GEONW_PON_LOT_BV_03_pre_2
/**
2004,7 → 2004,7
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(valueof(p_longPosVectorNodeA.gnAddr))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
2012,16 → 2012,16
[] a_receiveAnyLsRequest() {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_longPosVectorNodeA)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2058,7 → 2058,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/04
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/04
* @reference EN 302 636-4-1 [1], clauses 7.1.3, 9.3.8.2, 9.3.7.1.2 and Annex G
*/
testcase TC_GEONW_PON_LOT_BV_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2076,13 → 2076,13
// Preamble
f_prDefault(); // NodeB will send Beacon only once
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(m_geoNwBeaconPacket(f_getPosition(c_compNodeB)), -, c_hopLimit1)));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(f_getLifetimeLocTableEntry());
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
2089,11 → 2089,11
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeB.gnAddr.mid, v_longPosVectorIut ) {
log("*** " & testcasename() & ": PASS: LS Request received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: LS Request not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2144,8 → 2144,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.11.3, 9.3.9.3, 9.3.7.3, 9.3.8.2 and Annex C2
*/
testcase TC_GEONW_PON_LOT_BV_05_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2206,8 → 2206,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.11.3, 9.3.9.3, 9.3.7.3, 9.3.8.2 and Annex C2
*/
testcase TC_GEONW_PON_LOT_BV_05_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2268,8 → 2268,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.11.3, 9.3.9.3, 9.3.7.3, 9.3.8.2 and Annex C2
*/
testcase TC_GEONW_PON_LOT_BV_05_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2330,8 → 2330,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.11.3, 9.3.9.3, 9.3.7.3, 9.3.8.2 and Annex C2
*/
testcase TC_GEONW_PON_LOT_BV_05_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2391,8 → 2391,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.11.3, 9.3.9.3, 9.3.7.3, 9.3.8.2 and Annex C2
*/
testcase TC_GEONW_PON_LOT_BV_05_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2451,8 → 2451,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.11.3, 9.3.9.3, 9.3.7.3, 9.3.8.2 and Annex C2
*/
testcase TC_GEONW_PON_LOT_BV_05_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2515,8 → 2515,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4 and 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOT/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.12.3, 9.3.11.3, 9.3.9.3, 9.3.7.3, 9.3.8.2 and Annex C2
*/
testcase TC_GEONW_PON_LOT_BV_05_07() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2572,7 → 2572,7
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(m_geoNwPdu(p_packet))
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
} // end f_TP_GEONW_PON_LOT_BV_05_pre_2
/**
2583,7 → 2583,7
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(valueof(p_longPosVectorNodeB.gnAddr)))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
2591,21 → 2591,21
[] a_receiveAnyLsRequest() {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Received Location Service Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_obsoleteLongPosVectorNodeB)))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: GeoUnicast received with obsolete Destination Position Vector ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(valueof(p_longPosVectorNodeB)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2651,7 → 2651,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LPV/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LPV/BV/01
* @reference EN 302 636-4-1 [1], clauses 7.2.3, 9.2.2.2, 9.3.6.1 and Annex G
*/
testcase TC_GEONW_PON_LPV_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2687,11 → 2687,11
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
f_utChangePosition();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
geoNetworkingPort.clear;
2706,16 → 2706,16
//check if the position vector has changed
if (match(v_geoNwInd.msgIn.gnPacket.packet.extendedHeader.beaconHeader.srcPosVector, v_previouslongPosVectorIut)) {
log("*** " & testcasename() & ": FAIL: Sender Postion Vector not correctly updated ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: Sender Postion Vector correctly updated ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
f_acTriggerEvent(m_stopPassBeaconing);
2739,6 → 2739,7
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT not having sent any GUC and
* the IUT having received Beacon information from ItsNodeB
* }
* Expected behaviour:
2760,7 → 2761,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/SQN/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/SQN/BV/01
* @reference EN 302 636-4-1 [1], clauses 7.2.3, 9.3.8.2
*/
testcase TC_GEONW_PON_SQN_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2779,12 → 2780,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
2792,16 → 2793,16
[] a_receiveGeoUnicast(mw_shortPosVectorPosition_anyPos(f_longPosVector2ShortPosVector(v_longPosVectorNodeB)), v_expectedSequenceNumber) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] a_receiveGeoUnicast(mw_shortPosVectorPosition_anyPos(f_longPosVector2ShortPosVector(v_longPosVectorNodeB)), ?) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: GeoUnicast packet received with incorrect sequence number ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2841,7 → 2842,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/SQN/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/SQN/BV/02
* @reference EN 302 636-4-1 [1], clauses 7.2.3, 9.3.8.2
*/
testcase TC_GEONW_PON_SQN_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2866,7 → 2867,7
// receive first packet
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
2880,15 → 2881,15
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
2897,13 → 2898,13
v_nbReceivedPackets := v_nbReceivedPackets + 1;
if(v_nbReceivedPackets >= vc_multipleMessagesCount) {
log("*** " & testcasename() & ": PASS: GeoUnicast packets received with correct sequence numbers ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
v_expectedSequenceNumber := v_expectedSequenceNumber + 1;
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
repeat;
2912,11 → 2913,11
[] a_receiveGeoUnicast(mw_shortPosVectorPosition_anyPos(f_longPosVector2ShortPosVector(v_longPosVectorNodeB)), ?) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: GeoUnicast packet received with incorrect sequence number ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
2962,8 → 2963,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2, 9.2.4 and 9.3.7.1.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2, 9.2.4, 6.3 and 9.3.7.1.2
*/
testcase TC_GEONW_PON_LOS_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
2981,12 → 2982,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_gnAddressNodeA)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
2998,16 → 2999,16
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: LS Request received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] a_receiveAnyLsRequest() {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: LS Request does not contain GN Address of nodeA ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3047,7 → 3048,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2, 9.2.4 and 9.3.7.1.2
*/
testcase TC_GEONW_PON_LOS_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
3068,7 → 3069,7
f_prNeighbour();
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_gnAddressNodeA)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
3078,12 → 3079,12
tc_ac.start(f_getLsRetransmitTimer() - f_getDeltaTimer());
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_gnAddressNodeA)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
alt {
3090,11 → 3091,11
[] a_receiveLsRequest(?, v_gnAddressNodeA.mid, v_longPosVectorIut) {
tc_ac.stop;
log("*** " & testcasename() & ": Second LS_REQUEST received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": No second LS_REQUEST received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
3134,8 → 3135,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/03
* @reference EN 302 636-4-1 [1], clauses 7.4.2, 9.3.8.2, 9.2.4 and 9.3.7.1.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/03
* @reference EN 302 636-4-1 [1], clauses 7.4.3, 9.3.7.1.4, 9.3.8.2, 9.2.4 and 9.3.7.1.2
*/
testcase TC_GEONW_PON_LOS_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
3156,7 → 3157,7
f_prNeighbour();
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
3164,7 → 3165,7
tc_ac.stop;
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
3197,16 → 3198,16
//we do not know exactly the time passed at IUT
if (f_getLifetimeValue(v_geoNetInd.msgIn.basicHeader.lifeTime)<f_getMaxPacketLifeTime()) {
log("*** " & testcasename() & ": Lifetime was handled properly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": Lifetime was not handled properly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3257,8 → 3258,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/04
* @reference EN 302 636-4-1 [1], clauses 7.4.2, 9.3.8.2, 9.2.4 and 9.3.7.1.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/04
* @reference EN 302 636-4-1 [1], clauses 7.4.3, 9.3.8.2, 9.2.4 and 9.3.7.1.2
*/
testcase TC_GEONW_PON_LOS_BV_04() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
3284,7 → 3285,7
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithPayload(v_longPosVectorNodeA.gnAddr, v_payload1)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
3299,7 → 3300,7
v_longPosVectorNodeA,
f_longPosVector2ShortPosVector(v_longPosVectorIut),
vc_localSeqNumber ) ) ) );
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
else {
log("*** " & testcasename() & ": First LsRequest received ***");
3306,7 → 3307,7
v_firstLsRequestReceived := true;
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithPayload(v_longPosVectorNodeA.gnAddr, v_payload2)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
repeat;
3314,7 → 3315,7
}
[] tc_ac.timeout{
log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
3337,7 → 3338,7
v_msg1Received := true;
if ( v_msg2Received ) {
log("*** " & testcasename() & ": FAIL: Messages received in incorrect order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": First Message received ***");
3360,7 → 3361,7
v_msg2Received := true;
if ( v_msg1Received ) {
log("*** " & testcasename() & ": PASS: Messages received in correct order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": Second Message received ***");
3369,7 → 3370,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Expected messages not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
3405,8 → 3406,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/05
* @reference EN 302 636-4-1 [1], clauses 7.4.2, 9.3.8.2, 9.2.4 and 9.3.7.1.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/05
* @reference EN 302 636-4-1 [1], clauses 7.4.3, 9.3.8.2, 9.2.4 and 9.3.7.1.2
*/
testcase TC_GEONW_PON_LOS_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
3429,11 → 3430,11
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithPayload(v_longPosVectorNodeA.gnAddr, v_payload1)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithPayload(v_longPosVectorNodeA.gnAddr, v_payload2)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
3440,13 → 3441,13
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
//start retransmission timer
tc_ac.start(f_getMaxPacketLifeTime() + f_getDeltaTimer());
}
[] tc_ac.timeout{
log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
3480,11 → 3481,11
[] geoNetworkingPort.receive (mw_geoNwInd(mw_geoNwPdu(?))){
tc_noac.stop;
log("*** " & testcasename() & ": Message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": No message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
3517,12 → 3518,12
* }
* then {
* the IUT retransmits the LS_REQUEST packet
* after expiry of itsGnLocationServiceTimer
* upon expiry of itsGnLocationServiceTimer
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/06
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/06
* @reference EN 302 636-4-1 [1], clauses 9.3.7.1.3, 9.3.7.1.2 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOS_BV_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
3548,7 → 3549,7
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithLifetime(v_longPosVectorNodeA.gnAddr, float2int(int2float(v_maxNbrRetrans + 2) * f_getLsRetransmitTimer() * 1000.0))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
3555,13 → 3556,13
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
//start retransmission timer
t_minRetrans.start;
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
3577,16 → 3578,16
tc_ac.stop;
if(v_retransmitOk == true) {
log("*** " & testcasename() & ": LS_REQUEST correctly retransmitted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": LS_REQUEST retransmitted too early ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": No LS_REQUEST retransmitted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
3623,7 → 3624,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/07
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/07
* @reference EN 302 636-4-1 [1], clauses 9.3.7.1.2, 9.3.7.1.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOS_BV_07() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
3648,7 → 3649,7
v_longPosVectorNodeA.gnAddr,
float2int(int2float(v_maxNbrRetrans + 2) * f_getLsRetransmitTimer() * 1000.0))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
3655,11 → 3656,11
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
3672,7 → 3673,7
if(v_nbLsReceived > v_maxNbrRetrans) {
//first LS request is not counted as a retransmission
log("*** " & testcasename() & ": LS_REQUEST retransmitted more than itsGnLocationServiceMaxRetrans times ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
tc_ac.start;
3683,11 → 3684,11
if(v_nbLsReceived == (v_maxNbrRetrans)) {
//first LS request is not counted as a retransmission
log("*** " & testcasename() & ": LS_REQUEST retransmitted itsGnLocationServiceMaxRetrans times ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": LS_REQUEST retransmitted less than itsGnLocationServiceMaxRetrans times ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
}
3726,8 → 3727,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/08
* @reference EN 302 636-4-1 [1], clauses 9.3.7.1.4 and 9.3.5
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/08
* @reference EN 302 636-4-1 [1], clauses 9.3.7.3 and 9.3.5
*/
testcase TC_GEONW_PON_LOS_BV_08() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
3749,17 → 3750,17
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_ret := f_processLocationService(v_longPosVectorNodeA, v_seqNbr, v_iutGnAddress, v_longPosVectorIut);
if (v_ret == e_success) {
log("*** " & testcasename() & ": LS_REPLY packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": LS_REPLY packet not received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
// Postamble
3792,8 → 3793,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/09
* @reference EN 302 636-4-1 [1], clauses 9.3.7.1.4 and 9.3.5
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/09
* @reference EN 302 636-4-1 [1], clauses 9.3.7.3 and 9.3.5
*/
testcase TC_GEONW_PON_LOS_BV_09() runs on ItsMtc system ItsGeoNetworkingSystem {
3840,10 → 3841,10
v_longPosVectorIut.gnAddr,
v_longPosVectorIut);
if (v_ret == e_error) {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
else {
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
// Test Body
3861,11 → 3862,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: LS_REQUEST has not been discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: LS_REQUEST discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
3887,7 → 3888,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
3916,11 → 3917,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: LS_REQUEST has not been discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: LS_REQUEST discarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
3966,7 → 3967,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/10
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/10
* @reference EN 302 636-4-1 [1], clauses 9.3.7.2
*/
testcase TC_GEONW_PON_LOS_BV_10() runs on ItsMtc system ItsGeoNetworkingSystem {
4006,7 → 4007,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
4025,11 → 4026,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Re-broadcasted LS Request received with HL field decreased by 1 ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: LS Request was not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
4047,7 → 4048,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
4063,7 → 4064,7
)
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
4102,7 → 4103,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/11
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/11
* @reference EN 302 636-4-1 [1], clauses 9.3.7.2
*/
testcase TC_GEONW_PON_LOS_BV_11() runs on ItsMtc system ItsGeoNetworkingSystem {
4143,7 → 4144,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
4161,11 → 4162,11
)
) {
log("*** " & testcasename() & ": PASS: Forwarded LS Reply received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: LS Reply was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
4184,7 → 4185,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
4200,7 → 4201,7
)
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
4226,7 → 4227,7
* Expected behaviour:
* ensure that {
* when {
* the IUT receives a GeoUnicast packet from ItsNodeA before expiry of LT1
* the IUT receives a GeoUnicast packet addressed to it from ItsNodeA before expiry of LT1
* }
* then {
* the IUT sends the waiting GeoUnicast packet to ItsNodeA
4234,7 → 4235,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/12
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/12
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.7.1.2 and 7.4.2
*/
testcase TC_GEONW_PON_LOS_BV_12() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
4256,17 → 4257,17
f_prNeighbour();
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: LS Request not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
4287,12 → 4288,12
alt {
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA))) {
tc_ac.stop;
log("*** " & testcasename() & ": GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
4340,8 → 4341,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/13
* @reference EN 302 636-4-1 [1], clauses 7.4.2, 9.3.7.1.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/13
* @reference EN 302 636-4-1 [1], clauses 7.4.3, 9.3.7.1.2
*/
testcase TC_GEONW_PON_LOS_BV_13() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
4367,11 → 4368,11
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithLifetimeWithPayload(v_longPosVectorNodeA.gnAddr, v_lt2*1000, v_payload2)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithLifetimeWithPayload(v_longPosVectorNodeA.gnAddr, v_lt1*1000, v_payload1)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
4378,15 → 4379,15
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: LS Request not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
//Send LS-REPLY after LT2 expiry
4441,16 → 4442,16
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: message with elapsed lifetime received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
if(v_msg1Received == true) {
log("*** " & testcasename() & ": PASS: message with running lifetime received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: message with running lifetime not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
}
4490,8 → 4491,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/LOS/BV/14
* @reference EN 302 636-4-1 [1], clauses 7.4.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/14
* @reference EN 302 636-4-1 [1], clauses 7.4.3
*/
testcase TC_GEONW_PON_LOS_BV_14() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
4515,7 → 4516,7
v_LT1 := float2int(int2float(v_maxNbrRetrans + 2) * f_getLsRetransmitTimer() * 1000.0);
if ( not f_utTriggerEvent(m_generateGeoUnicastMessageWithLifetime(v_longPosVectorNodeA.gnAddr,v_LT1)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_wait.start(int2float(v_LT1));
4523,11 → 4524,11
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Pre-conditions: Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
4539,7 → 4540,7
if(v_nbLsReceived > v_maxNbrRetrans) {
//first LS request is not counted as a retransmission
log("*** " & testcasename() & ": Pre-conditions: LS_REQUEST retransmitted more than itsGnLocationServiceMaxRetrans times ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
else {
tc_ac.start;
4550,11 → 4551,11
if(v_nbLsReceived == (v_maxNbrRetrans)) {
//first LS request is not counted as a retransmission
log("*** " & testcasename() & ": Pre-conditions: LS_REQUEST retransmitted itsGnLocationServiceMaxRetrans times ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
else {
log("*** " & testcasename() & ": Pre-conditions: LS_REQUEST retransmitted less than itsGnLocationServiceMaxRetrans times ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
}
4579,18 → 4580,18
// no check for ItsNodeA address as no other trigger for messages exists
[] geoNetworkingPort.receive {
tc_noac.stop;
log("*** " & testcasename() & ": Unexpected message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
log("*** " & testcasename() & ": FAIL: Unexpected message received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": No message was sent ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
log("*** " & testcasename() & ": PASS: No message was sent ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
}
else {
log("*** " & testcasename() & ": LT1 expired ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
log("*** " & testcasename() & ": FAIL: LT1 expired ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
// Postamble
4598,6 → 4599,303
f_cf01Down();
} // end TC_GEONW_PON_LOS_BV_14
 
/**
* @desc Test flushing of the LS buffer, initiated by the processing of a common header from the target destination
* <pre>
* Pics Selection: none
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT having no Location Table Entry for ItsNodeA and
* the IUT having been requested to send a GeoUnicast packet ItsNodeA
* containing LT field
* indicating LT1 and
* the IUT having sent a LS_REQUEST packet
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives a GeoUnicast packet addressed to ItsNodeB from ItsNodeA before expiry of LT1
* }
* then {
* the IUT sends the waiting GeoUnicast packet to ItsNodeA
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/15
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, 9.3.7.1.2 and 7.4.2
*/
testcase TC_GEONW_PON_LOS_BV_15() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
// Local variables
var LongPosVector v_longPosVectorNodeA;
var LongPosVector v_longPosVectorNodeB;
var LongPosVector v_longPosVectorIut;
var UInt16 v_seqNbr := vc_localSeqNumber;
// Test control
// Test component configuration
f_cf01Up();
v_longPosVectorNodeA := f_getPosition(c_compNodeA);
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Test adapter configuration
// Preamble
f_prNeighbour();
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: LS Request not received ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwUnicastPacket(
v_longPosVectorNodeA,
f_longPosVector2ShortPosVector(v_longPosVectorNodeB),
vc_localSeqNumber
)
)
)
);
tc_ac.start;
alt {
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast packet received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poNeighbour();
f_cf01Down();
} // end TC_GEONW_PON_LOS_BV_15
 
/**
* @desc Test of LS Request retransmission termination when indirect response is received
* <pre>
* Pics Selection: none
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT having no Location Table Entry for ItsNodeA and
* the IUT having been requested to send a GeoUnicast packet to ItsNodeA
* containing TrafficClass.SCF set to 1
* containing LT field
* indicating value LT1 higher than (itsGnLocationServiceTimer * itsGnLocationServiceMaxRetrans) and
* the IUT having sent a LS_REQUEST packet
* the IUT having retransmitted the LS_REQUEST packet less than itsGnLocationServiceMaxRetrans
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives a GeoUnicast packet addressed to it from ItsNodeA before expiry of LT1
* }
* then {
* the IUT does not retransmits the LS_REQUEST packet
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/16
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4, 9.3.7.1.2, 9.3.7.1.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOS_BV_16() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
// Local variables
var LongPosVector v_longPosVectorNodeA;
var LongPosVector v_longPosVectorNodeB;
var LongPosVector v_longPosVectorIut;
var UInt16 v_seqNbr := vc_localSeqNumber;
// Test control
// Test component configuration
f_cf01Up();
v_longPosVectorNodeA := f_getPosition(c_compNodeA);
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Test adapter configuration
// Preamble
f_prNeighbour();
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: LS Request not received ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwUnicastPacket(
v_longPosVectorNodeA,
f_longPosVector2ShortPosVector(v_longPosVectorIut),
vc_localSeqNumber
)
)
)
);
tc_noac.start;
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: LS Request retransmitted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA))) {
log("*** " & testcasename() & ": INFO: GeoUnicast packet received ***");
repeat;
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: LS Request not retransmitted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poNeighbour();
f_cf01Down();
} // end TC_GEONW_PON_LOS_BV_16
 
/**
* @desc Test of LS Request retransmission termination when indirect response is received
* <pre>
* Pics Selection: none
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT having no Location Table Entry for ItsNodeA and
* the IUT having been requested to send a GeoUnicast packet to ItsNodeA
* containing TrafficClass.SCF set to 1
* containing LT field
* indicating value LT1 higher than (itsGnLocationServiceTimer * itsGnLocationServiceMaxRetrans) and
* the IUT having sent a LS_REQUEST packet
* the IUT having retransmitted the LS_REQUEST packet less than itsGnLocationServiceMaxRetrans
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives a GeoUnicast packet addressed to ItsNodeB from ItsNodeA before expiry of LT1
* }
* then {
* the IUT does not retransmits the LS_REQUEST packet
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/LOS/BV/17
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, 9.3.7.1.2, 9.3.7.1.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_LOS_BV_17() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
// Local variables
var LongPosVector v_longPosVectorNodeA;
var LongPosVector v_longPosVectorNodeB;
var LongPosVector v_longPosVectorIut;
var UInt16 v_seqNbr := vc_localSeqNumber;
// Test control
// Test component configuration
f_cf01Up();
v_longPosVectorNodeA := f_getPosition(c_compNodeA);
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Test adapter configuration
// Preamble
f_prNeighbour();
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
tc_ac.start;
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_ac.stop;
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: LS Request not received ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwUnicastPacket(
v_longPosVectorNodeA,
f_longPosVector2ShortPosVector(v_longPosVectorNodeB),
vc_localSeqNumber
)
)
)
);
tc_noac.start;
alt {
[] a_receiveLsRequest(?, v_longPosVectorNodeA.gnAddr.mid, v_longPosVectorIut) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: LS Request retransmitted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] a_receiveGeoUnicastWithDestination(mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA))) {
log("*** " & testcasename() & ": INFO: GeoUnicast packet received ***");
repeat;
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: LS Request not retransmitted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poNeighbour();
f_cf01Down();
} // end TC_GEONW_PON_LOS_BV_17
} // end geoLocationService
4634,8 → 4932,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/01
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3 and 9.3.4.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/01
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3, 9.3.4.2 and 9.3.8.3
*/
testcase TC_GEONW_PON_FPB_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
4675,7 → 4973,7
// Preamble
f_prDefault(); // NodeB is not yet a neighbour
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleepIgnoreDef(1.0);
4686,7 → 4984,7
[] a_receiveAnyLsRequest() {
tc_ac.stop;
log("*** " & testcasename() & ": INCONC: Received Location Service Request ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwUnicastPacket(
mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA)),
4693,11 → 4991,11
?)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: packet correctly forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
4727,13 → 5025,13
)
)));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
// /!\ This pre-condition has impact on test body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_noac.start;
alt {
4740,11 → 5038,11
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(?))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoUnicast packet received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: No message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
4796,7 → 5094,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, 7.5.3, 9.3.6.3
*/
testcase TC_GEONW_PON_FPB_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
4839,7 → 5137,7
// Preamble
f_prDefault(); // NodeB is not yet a neighbour
vc_localSeqNumber := p_sequenceNumberC;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(1.0);
4861,11 → 5159,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Packet correctly forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
4901,10 → 5199,10
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
4965,7 → 5263,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/03
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3 and 9.3.8.3
*/
testcase TC_GEONW_PON_FPB_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
5012,7 → 5310,7
// Preamble
f_prDefault(); // NodeB is not yet a neighbour
vc_multipleMessagesCount := p_messageCount;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(1.0);
5027,7 → 5325,7
v_nbReceivedPackets := v_nbReceivedPackets + 1;
if(v_nbReceivedPackets >= vc_multipleMessagesCount) {
log("*** " & testcasename() & ": PASS: GeoUnicast packets received in correct order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
v_expectedSequenceNumber := v_expectedSequenceNumber + 1;
5040,11 → 5338,11
?) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: GeoUnicast packet received in incorrect order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
5082,10 → 5380,10
);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
5125,7 → 5423,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/03
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3 and 9.3.8.3
*/
testcase TC_GEONW_PON_FPB_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
5169,7 → 5467,7
// Preamble
f_prDefault(); // NodeB is not yet a neighbour
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(int2float(p_packetLifetime + 1));
5182,11 → 5480,11
?) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoUnicast packet received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: No message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
5221,10 → 5519,10
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
5236,7 → 5534,7
group GEONW_PON_FPB_BV_06 {
/**
* @desc Test of Source packet buffering into BC forwarding buffer for no GeoBroadcast recipients
* @desc Test of Source packet buffering into BC forwarding buffer for no recipients
* <pre>
* Pics Selection: none
* Config Id: CF02
5245,7 → 5543,7
* the IUT being in the "initial state" and
* the IUT not having received Beacon information from ItsNodeD and
* the IUT not having received Beacon information from ItsNodeB and
* the IUT having been requested to send a GeoBroadcast packet to AREA1
* the IUT having been requested to send a TSB packet
* containing TrafficClass.SCF set to 1
* }
* Expected behaviour:
5254,12 → 5552,12
* the IUT receives a Beacon packet from either ItsNodeB or ItsNodeD
* }
* then {
* the IUT broadcasts the buffered GeoBroadcast packet
* the IUT broadcasts the buffered TSB packet
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/06
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/06
* @reference EN 302 636-4-1 [1], clauses 9.3.5, 7.5.3, 9.3.6.3 and 9.3.11.2
*/
testcase TC_GEONW_PON_FPB_BV_06() runs on ItsMtc system ItsGeoNetworkingSystem {
5300,11 → 5598,11
// Preamble
f_prDefault();
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1))) ) {
if (not f_utTriggerEvent(m_generateTsbMessage)) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(1.0);
5311,16 → 5609,15
f_startBeingNeighbour();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) -> value v_geoNetInd {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) -> value v_geoNetInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
5340,21 → 5637,20
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) -> value v_geoNetInd {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) -> value v_geoNetInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
5377,20 → 5673,20
* the IUT being in the "initial state" and
* the IUT not having received Beacon information from ItsNodeD and
* the IUT not having received Beacon information from ItsNodeB and
* the IUT having been requested to send a GeoBroadcast (GEOBROAD1) packet to AREA1
* the IUT having been requested to send a TSB (TSB1) packet
* containing TrafficClass.SCF set to 1
* containing Basic Header
* containing LT field
* indicating LT1
* containing GBC Extended Header
* containing TSB Extended Header
* containing SN field
* indicating value SN1
* the IUT having been requested to send a GeoBroadcast (GEOBROAD2) packet to AREA1
* the IUT having been requested to send a TSB (TSB2) packet
* containing TrafficClass.SCF set to 1
* containing Basic Header
* containing LT field
* indicating LT2
* containing GBC Extended Header
* containing TSB Extended Header
* containing SN field
* indicating value SN2
* }
5401,12 → 5697,12
* before expiry of LT1 and LT2
* }
* then {
* the IUT broadcasts GEOBROAD1 packet
* containing GBC Extended Header
* the IUT broadcasts TSB1 packet
* containing TSB Extended Header
* containing SN field
* indicating value SN1
* the IUT broadcasts GEOBROAD2 packet
* containing GBC Extended Header
* the IUT broadcasts TSB2 packet
* containing TSB Extended Header
* containing SN field
* indicating value SN2
* }
5413,7 → 5709,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/07
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/07
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3 and 9.3.11.2
*/
testcase TC_GEONW_PON_FPB_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
5460,24 → 5756,23
f_prDefault();
vc_multipleMessagesCount := p_messageCount;
for(i:=0; i < vc_multipleMessagesCount; i:=i+1) {
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1))) ) {
if(not f_utTriggerEvent(m_generateTsbMessage)) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
 
tc_ac.start(1.0);
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_ac.stop;
log("*** " & testcasename() & ": INCONC: GeoBroadcast packet not buffered ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast packet buffered ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
5485,31 → 5780,30
f_startBeingNeighbour();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
v_expectedSequenceNumber)))) -> value v_geoNetInd {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(
v_expectedSequenceNumber,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) -> value v_geoNetInd {
tc_ac.stop;
v_nbReceivedPackets := v_nbReceivedPackets + 1;
if(v_nbReceivedPackets >= vc_multipleMessagesCount) {
log("*** " & testcasename() & ": PASS: GeoBroadcast packets received in correct order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
log("*** " & testcasename() & ": PASS: TSB packets received in correct order ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
v_expectedSequenceNumber := v_geoNetInd.msgIn.gnPacket.packet.extendedHeader.geoBroadcastHeader.seqNumber + 1;
v_expectedSequenceNumber := v_geoNetInd.msgIn.gnPacket.packet.extendedHeader.tsbHeader.seqNumber + 1;
tc_ac.start;
repeat;
}
}
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast packet received in incorrect order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
log("*** " & testcasename() & ": FAIL: TSB packet received in incorrect order ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
5533,36 → 5827,34
// Preamble
f_prDefault();
vc_multipleMessagesCount := p_messageCount;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
v_expectedSequenceNumber)))) -> value v_geoNetInd {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(v_expectedSequenceNumber,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) -> value v_geoNetInd {
tc_ac.stop;
v_nbReceivedPackets := v_nbReceivedPackets + 1;
if(v_nbReceivedPackets >= vc_multipleMessagesCount) {
log("*** " & testcasename() & ": PASS: GeoBroadcast packets received in correct order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
log("*** " & testcasename() & ": PASS: TSB packets received in correct order ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
v_expectedSequenceNumber := v_geoNetInd.msgIn.gnPacket.packet.extendedHeader.geoBroadcastHeader.seqNumber + 1;
v_expectedSequenceNumber := v_geoNetInd.msgIn.gnPacket.packet.extendedHeader.tsbHeader.seqNumber + 1;
tc_ac.start;
repeat;
}
}
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast packet received in incorrect order ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
log("*** " & testcasename() & ": FAIL: TSB packet received in incorrect order ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
5585,12 → 5877,12
* the IUT being in the "initial state" and
* the IUT not having received Beacon information from ItsNodeD and
* the IUT not having received Beacon information from ItsNodeB and
* the IUT having been requested to send a GeoBroadcast (GEOBROAD1) packet to AREA1
* the IUT having been requested to send a TSB (TSB1) packet
* containing TrafficClass.SCF set to 1
* containing Basic Header
* containing LT field
* indicating LT1
* the IUT having been requested to send a GeoBroadcast (GEOBROAD2) packet to AREA1
* the IUT having been requested to send a TSB (TSB2) packet
* containing TrafficClass.SCF set to 1
* containing Basic Header
* containing LT field
5603,12 → 5895,12
* after expiry of LT1 and LT2
* }
* then {
* the IUT does not broadcast any of the buffered GEOBROAD1 and GEOBROAD2
* the IUT does not broadcast any of the buffered TSB1 and TSB2
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/08
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/08
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3 and 9.3.11.2
*/
testcase TC_GEONW_PON_FPB_BV_08() runs on ItsMtc system ItsGeoNetworkingSystem {
5649,15 → 5941,15
// Preamble
f_prDefault();
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessageWithLifetime(f_getArea(c_area1), c_lifetime )) ) {
if(not f_utTriggerEvent(m_generateTsbMessageWithLifetime(c_lifetime))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessageWithLifetime(f_getArea(c_area1), c_lifetime)) ) {
if(not f_utTriggerEvent(m_generateTsbMessageWithLifetime(c_lifetime))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(int2float(c_defaultLifetime + 1));
5666,16 → 5958,15
tc_noac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast packet received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: No message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
5695,7 → 5986,7
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(int2float(c_defaultLifetime + 1));
5704,16 → 5995,15
tc_noac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast packet received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: No message received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
5757,7 → 6047,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/09
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/09
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3 and 9.3.8.2
*/
testcase TC_GEONW_PON_FPB_BV_09() runs on ItsMtc system ItsGeoNetworkingSystem {
5799,7 → 6089,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(1.0);
5815,16 → 6105,16
//we do not know exactly the time passed at IUT
if (f_getLifetimeValue(v_geoNetInd.msgIn.basicHeader.lifeTime) < f_getMaxPacketLifeTime()) {
log("*** " & testcasename() & ": PASS: Lifetime was handled properly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: Lifetime was not handled properly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
5857,12 → 6147,12
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeA.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
5875,7 → 6165,7
/**
* @desc Test of Source packet buffering into BC forwarding buffer for handling of LT fields for no
* GeoBroadcast recipients
* recipients
* <pre>
* Pics Selection: none
* Config Id: CF02
5884,7 → 6174,7
* the IUT being in the "initial state" and
* the IUT not having received Beacon information from ItsNodeD and
* the IUT not having received Beacon information from ItsNodeB and
* the IUT having been requested to send a GeoBroadcast packet to AREA1
* the IUT having been requested to send a TSB packet
* containing TrafficClass.SCF set to 1
* }
* Expected behaviour:
5893,8 → 6183,8
* the IUT receives a Beacon packet from either ItsNodeB or ItsNodeD
* }
* then {
* the IUT broadcasts the buffered GeoBroadcast packet
* containing GBC Extended Header
* the IUT broadcasts the buffered TSB packet
* containing TSB Extended Header
* containing LT field
* indicating (default LT value - WaitingTime (see note))
* }
5903,7 → 6193,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/10
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/10
* @reference EN 302 636-4-1 [1], clauses 7.5.3, 9.3.6.3 and 9.3.11.2
*/
testcase TC_GEONW_PON_FPB_BV_10() runs on ItsMtc system ItsGeoNetworkingSystem {
5944,11 → 6234,11
// Preamble
f_prDefault();
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1))) ) {
if(not f_utTriggerEvent(m_generateTsbMessage)) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleep(1.0);
5955,9 → 6245,8
f_startBeingNeighbour();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) -> value v_geoNetInd {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) -> value v_geoNetInd {
tc_ac.stop;
//we only check that the lifetime is less than the default lifetime due to
5964,16 → 6253,16
//we do not know exactly the time passed at IUT
if (f_getLifetimeValue(v_geoNetInd.msgIn.basicHeader.lifeTime) < f_getMaxPacketLifeTime()) {
log("*** " & testcasename() & ": PASS: Lifetime was handled properly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: Lifetime was not handled properly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
5992,22 → 6281,21
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBroadcastPacket(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?)))) {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwTsbPacket(?,
mw_longPosVectorPosition_withDelta(v_longPosVectorIut))))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6047,8 → 6335,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_11_01() runs on ItsMtc system ItsGeoNetworkingSystem {
6087,7 → 6375,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
6104,11 → 6392,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6136,7 → 6424,7
vc_localSeqNumber
)
)));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(m_generateGeoUnicastMessageWithTrafficClass(
6143,7 → 6431,7
v_longPosVectorNodeA.gnAddr,
valueof(m_trafficClass(e_scfDisabled))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
6159,11 → 6447,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6201,8 → 6489,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_11_02() runs on ItsMtc system ItsGeoNetworkingSystem {
6241,7 → 6529,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
6258,11 → 6546,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6281,7 → 6569,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(m_generateGeoAnycastMessageWithTrafficClass(
6288,7 → 6576,7
f_getArea(c_area2),
valueof(m_trafficClass(e_scfDisabled))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
6304,11 → 6592,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6346,8 → 6634,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_11_03() runs on ItsMtc system ItsGeoNetworkingSystem {
6386,7 → 6674,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
6403,11 → 6691,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6426,7 → 6714,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(m_generateGeoBroadcastMessageWithTrafficClass(
6433,7 → 6721,7
f_getArea(c_area2),
valueof(m_trafficClass(e_scfDisabled))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
6449,11 → 6737,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6489,8 → 6777,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_11_04() runs on ItsMtc system ItsGeoNetworkingSystem {
6529,7 → 6817,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
6546,11 → 6834,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6569,12 → 6857,12
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(valueof(m_generateTsbMessageWithTrafficClass(valueof(m_trafficClass(e_scfDisabled)))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
6590,11 → 6878,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6630,8 → 6918,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/11-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_11_05() runs on ItsMtc system ItsGeoNetworkingSystem {
6670,7 → 6958,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
6686,11 → 6974,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6709,12 → 6997,12
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(valueof(m_generateShbMessageWithTrafficClass(valueof(m_trafficClass(e_scfDisabled)))))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
6729,11 → 7017,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6772,8 → 7060,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_12_01() runs on ItsMtc system ItsGeoNetworkingSystem {
6812,7 → 7100,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
6829,11 → 7117,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6853,7 → 7141,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
6887,11 → 7175,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
6928,8 → 7216,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_12_02() runs on ItsMtc system ItsGeoNetworkingSystem {
6968,7 → 7256,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
6985,11 → 7273,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
7008,7 → 7296,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
7039,11 → 7327,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
7080,8 → 7368,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_12_03() runs on ItsMtc system ItsGeoNetworkingSystem {
7120,7 → 7408,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
7137,11 → 7425,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
7160,7 → 7448,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
7191,11 → 7479,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
7230,8 → 7518,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/FPB/BV/12-X
* @reference EN 302 636-4-1 [1], Annex D2
*/
testcase TC_GEONW_PON_FPB_BV_12_04() runs on ItsMtc system ItsGeoNetworkingSystem {
7270,7 → 7558,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
7287,11 → 7575,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
7310,7 → 7598,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
7342,11 → 7630,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: TSB not broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
7392,7 → 7680,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GNA/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GNA/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.2.1.2 and 9.3.6.2
*/
testcase TC_GEONW_PON_GNA_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
7416,7 → 7704,7
// Preamble
f_prDefault();
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
7427,7 → 7715,7
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": GN address is correct ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(
mw_geoNwBeaconPacket(
7435,11 → 7723,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": GN address is not correct ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
7478,7 → 7766,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GNA/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GNA/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.2.1.4
*/
testcase TC_GEONW_PON_GNA_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
7512,10 → 7800,10
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Expected message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_longPosVectorNodeB.gnAddr := v_iutGnAddress;
7536,11 → 7824,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": IUT used new GN address ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
7578,7 → 7866,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/BEA/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/BEA/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.6.2
*/
testcase TC_GEONW_PON_BEA_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
7599,7 → 7887,7
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
7616,11 → 7904,11
}
if(t_minRetransTimer.running) {
log("*** " & testcasename() & ": Beacon not transmitted at prescribed periodicity (too early) ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": Beacon transmitted at prescribed periodicity ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] t_minRetransTimer.timeout {
7629,7 → 7917,7
}
[] t_maxRetransTimer.timeout {
log("*** " & testcasename() & ": Beacon not transmitted at prescribed periodicity (too late) ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
f_acTriggerEvent(m_stopPassBeaconing);
7664,7 → 7952,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/BEA/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/BEA/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.2.3 and 9.3.10.2
*/
testcase TC_GEONW_PON_BEA_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
7689,12 → 7977,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateShbMessage) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
7711,11 → 7999,11
}
if(not(v_readyForRetransmission)) {
log("*** " & testcasename() & ": Beacon not transmitted at prescribed periodicity (too early) ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": Beacon transmitted at prescribed periodicity ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] t_minRetransTimer.timeout {
7725,11 → 8013,11
}
[] t_maxRetransTimer.timeout {
log("*** " & testcasename() & ": Beacon not transmitted at prescribed periodicity (too late) ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": GeoUnicast not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
f_acTriggerEvent(m_stopPassBeaconing);
7739,6 → 8027,72
f_cf01Down();
} // end TC_GEONW_PON_BEA_BV_02
 
/**
* @desc Check that IUT sends a Beacon at startup
* <pre>
* Pics Selection: none
* Config Id: CF01
* Initial conditions:
* with {
* the IUT being switched off
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is switched on
* }
* then {
* the IUT sends a Beacon packet immediately
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/BEA/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.2.3 and 9.3.10.2
*/
testcase TC_GEONW_PON_BEA_BV_03() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
// Local variables
var LongPosVector v_longPosVectorIut;
// Test control
// Test component configuration
f_cf01Up();
v_longPosVectorIut := f_getPosition(c_compIut);
// Test adapter configuration
// Preamble
f_prDefault();
action("Please turn IUT OFF");
f_sleep(PX_TWAIT);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
geoNetworkingPort.clear;
action("Please turn IUT ON");
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwBeaconPacket(?)))) {
log("*** " & testcasename() & ": PASS: Initial Beacon received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Initial Beacon not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
f_acTriggerEvent(m_stopPassBeaconing);
// Postamble
f_poDefault();
f_cf01Down();
} // end TC_GEONW_PON_BEA_BV_03
} // end geoBeaconing
7749,7 → 8103,8
* @desc Test that the reception of a unicast packet over upper Gn SAP triggers the origination of a
* GeoUnicast packet
* <pre>
* Pics Selection: none
* Pics Selection: PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == 'GREEDY'
* OR PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == 'UNSPECIFIED'
* Config Id: CF01
* Initial conditions:
* with {
7773,7 → 8128,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.8.2, 9.3.6.3
*/
testcase TC_GEONW_PON_GUC_BV_01() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
7782,7 → 8137,12
var LongPosVector v_longPosVectorNodeB;
// Test control
if ((f_getGeoUnicastForwardingAlgorithm() != e_greedy) and (f_getGeoUnicastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == (e_greedy or e_unspecified) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf01Up();
v_longPosVectorNodeB := f_getPosition(c_compNodeB);
7791,12 → 8151,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr)) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
7812,7 → 8172,7
) {
tc_ac.stop;
log("*** " & testcasename() & ": DEPV of the received GeoUnicast message correctly set ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
7826,11 → 8186,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": DEPV of the received GeoUnicast message incorrectly set ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": Expected message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
7872,7 → 8232,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, Annex D.2
*/
testcase TC_GEONW_PON_GUC_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
7920,7 → 8280,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
7937,11 → 8297,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
7959,7 → 8319,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
7977,7 → 8337,7
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
7993,10 → 8353,10
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
8052,7 → 8412,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3
*/
testcase TC_GEONW_PON_GUC_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
8105,7 → 8465,7
f_getIutMacAddress()
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
8125,7 → 8485,7
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
8139,11 → 8499,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Fields not correctly updated ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
8164,7 → 8524,7
f_prNeighbour();
v_obsoleteLongPosVectorNodeA.timestamp := v_obsoleteLongPosVectorNodeA.timestamp - 1000;
v_obsoleteLongPosVectorNodeA.latitude := v_obsoleteLongPosVectorNodeA.latitude - 1;
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
8183,7 → 8543,7
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
8220,7 → 8580,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/04
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/04
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3
*/
testcase TC_GEONW_PON_GUC_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
8260,7 → 8620,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
8279,11 → 8639,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
8302,7 → 8662,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
8320,7 → 8680,7
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
8350,7 → 8710,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/05
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.8.4
*/
testcase TC_GEONW_PON_GUC_BV_05() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
8368,7 → 8728,7
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(
8386,11 → 8746,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
// Postamble
8426,7 → 8786,7
* }
* then {
* the IUT re-broadcasts the received GeoUnicast packet
* after expiry of calculated CBF delay (see note)
* upon expiry of calculated CBF delay (see note)
* }
* }
* NOTE: The CBF delay timer value is calculated from the itsGnDefaultMaxCommunicationRange,
8435,7 → 8795,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/06
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/06
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, Annex D.3
*/
testcase TC_GEONW_PON_GUC_BV_06() runs on ItsMtc system ItsGeoNetworkingSystem {
8492,7 → 8852,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
log("*** " & testcasename() & ": INFO: Message sent ***");
8515,11 → 8875,11
if(t_toCbf.running) {
t_toCbf.stop;
log("*** " & testcasename() & ": FAIL: IUT re-broadcasted the packet too early ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] t_toCbf.timeout {
8528,7 → 8888,7
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
8547,7 → 8907,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
8581,11 → 8941,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Re-broadcasted GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
8623,12 → 8983,12
* }
* then {
* the IUT re-broadcasts the received GeoUnicast packet
* after expiry of itsGnGeoUnicastCbfMinTime delay
* upon expiry of itsGnGeoUnicastCbfMinTime delay
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/07
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/07
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, Annex D.3
*/
testcase TC_GEONW_PON_GUC_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
8680,7 → 9040,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
log("*** " & testcasename() & ": INFO: Message sent ***");
8703,11 → 9063,11
if(t_toCbf.running) {
t_toCbf.stop;
log("*** " & testcasename() & ": FAIL: IUT re-broadcasted the packet too early ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
[] t_toCbf.timeout {
8717,7 → 9077,7
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
8736,7 → 9096,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
8770,11 → 9130,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
8823,7 → 9183,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/08
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/08
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, Annex D.3
*/
testcase TC_GEONW_PON_GUC_BV_08() runs on ItsMtc system ItsGeoNetworkingSystem {
8874,7 → 9234,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleepIgnoreDef(int2float(f_getGeoUnicastCbfMaxTime())/2000.0);
8908,12 → 9268,12
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
8932,7 → 9292,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
//Note: Sending of the GeoUnicast packet move to test body in contrast to the test purpose due to time critical behaviour
8965,11 → 9325,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: Forwarded GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
9007,13 → 9367,13
* }
* then {
* the IUT re-broadcasts the received GeoUnicast packet
* after expiry of CBF_MAX
* upon expiry of CBF_MAX
* }
* }
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GUC/BV/10
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/10
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, Annex D.3
*/
testcase TC_GEONW_PON_GUC_BV_10() runs on ItsMtc system ItsGeoNetworkingSystem {
9064,7 → 9424,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sleepIgnoreDef(int2float(f_getGeoUnicastCbfMaxTime())/2000.0);
9083,12 → 9443,12
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Re-broadcasted GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9107,7 → 9467,7
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
9141,11 → 9501,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Re-broadcasted GeoUnicast received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9155,7 → 9515,519
} // end f_GEONW_PON_GUC_BV_10_nodeC
} // end GEONW_PON_GUC_BV_10
 
group GEONW_PON_GUC_BV_11 {
/**
* @desc Test that the reception of a unicast packet over upper Gn SAP triggers the origination of a GeoUnicast packet
* <pre>
* Pics Selection: PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == 'CBF'
* Config Id: CF03
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT having received Beacon information from ItsNodeB
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT is requested to send a GeoUnicast packet to ItsNodeB
* }
* then {
* the IUT broadcasts a GeoNetworking packet
* containing a correctly formatted Common Header
* containing HT field
* set to '2' (GEOUNICAST)
* containing GeoUnicast Extended Header
* containing DEPV field
* indicating same position as the SOPV value of the received Beacon information
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/11
* @reference EN 302 636-4-1 [1], clauses 9.3.8.3, Annex D.3
*/
testcase TC_GEONW_PON_GUC_BV_11() runs on ItsMtc system ItsGeoNetworkingSystem {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
// Test control
if (f_getGeoUnicastForwardingAlgorithm() != e_cbf) {
log("*** " & testcasename() & ": PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == e_cbf required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf03Up();
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeC := f_getComponent(c_compNodeC);
v_nodeB.start(f_GEONW_PON_GUC_BV_11_nodeB());
v_nodeC.start(f_GEONW_PON_GUC_BV_11_nodeC());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
f_cf03Down();
} // end TC_GEONW_PON_GUC_BV_11
/**
* @desc Behavior function for NodeB (TC_GEONW_PON_GUC_BV_11)
*/
function f_GEONW_PON_GUC_BV_11_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if(not f_utTriggerEvent(m_generateGeoUnicastMessage(v_longPosVectorNodeB.gnAddr))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwUnicastPacket(
mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeB)),
?
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoUnicast received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GUC_BV_11_nodeB
/**
* @desc Behavior function for NodeC (TC_GEONW_PON_GUC_BV_11)
*/
function f_GEONW_PON_GUC_BV_11_nodeC() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeB := f_getPosition(c_compNodeB);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwUnicastPacket(
mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeB)),
?
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: broadcasted GeoUnicast received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoUnicast was not broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GUC_BV_11_nodeC
} // end GEONW_PON_GUC_BV_11
 
group GEONW_PON_GUC_BV_12 {
/**
* @desc Test that a received GUC packet is not triggering forwarding if received twice or more
* <pre>
* Pics Selection: PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == ‘GREEDY’ OR
* PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == ‘UNSPECIFIED’
* Config Id: CF03
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT having received Beacon information from ItsNodeC and
* the IUT having received Beacon information from ItsNodeB and
* the IUT having received a GeoUnicast packet addressed to ItsNodeA from ItsNodeC
* containing TrafficClass.SCF set to 1
* containing Basic Header
* containing RHL field
* indicating value greater than 1 and
* the IUT having forwarded the GUC packet
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives the same GUC packet from ItsNodeB
* containing Basic Header
* containing RHL field
* indicating HL1 - 1
* }
* then {
* the IUT does forward the packet
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/12
* @reference EN 302 636-4-1 [1], clause 9.3.9.3
*/
testcase TC_GEONW_PON_GUC_BV_12() runs on ItsMtc system ItsGeoNetworkingSystem {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
// Test control
if ((f_getGeoUnicastForwardingAlgorithm() != e_greedy) and (f_getGeoUnicastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == (e_greedy or e_unspecified) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf03Up();
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeC := f_getComponent(c_compNodeC);
v_nodeB.start(f_GEONW_PON_GUC_BV_12_nodeB());
v_nodeC.start(f_GEONW_PON_GUC_BV_12_nodeC());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
f_cf03Down();
} // end TC_GEONW_PON_GUC_BV_12
/**
* @desc Behavior function for NodeB (TC_GEONW_PON_GUC_BV_12)
*/
function f_GEONW_PON_GUC_BV_12_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeA := f_getPosition(c_compNodeA);
// Preamble
f_prNeighbour();
tc_ac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwUnicastPacket(
mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA)),
?
)
)
)
) {
tc_ac.stop;
log("*** " & testcasename() & ": INFO: First GeoUnicast forwarded ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: First GeoUnicast was not forwarded ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_withLinkLayerDestination(
m_geoNwPdu(
m_geoNwUnicastPacket(
f_getPosition(c_compNodeC),
f_longPosVector2ShortPosVector(v_longPosVectorNodeA),
vc_localSeqNumber
),
-,
c_defaultHopLimit - 1
),
f_getIutMacAddress()
)
);
tc_noac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwUnicastPacket(
mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA)),
?
)
)
)
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: Duplicate GeoUnicast was forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: Duplicate GeoUnicast not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GUC_BV_12_nodeB
/**
* @desc Behavior function for NodeC (TC_GEONW_PON_GUC_BV_12)
*/
function f_GEONW_PON_GUC_BV_12_nodeC() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeA := f_getPosition(c_compNodeA);
// Preamble
f_prNeighbour();
f_sendGeoNetMessage(
m_geoNwReq_withLinkLayerDestination(
m_geoNwPdu(
m_geoNwUnicastPacket(
f_getPosition(c_compNodeC),
f_longPosVector2ShortPosVector(v_longPosVectorNodeA),
vc_localSeqNumber
),
-,
c_defaultHopLimit
),
f_getIutMacAddress()
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
alt {
[] geoNetworkingPort.receive(
mw_geoNwInd(
mw_geoNwPdu(
mw_geoNwUnicastPacket(
mw_shortPosVectorPosition(f_longPosVector2ShortPosVector(v_longPosVectorNodeA)),
?
)
)
)
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: Duplicate GeoUnicast was forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: Duplicate GeoUnicast not forwarded ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GUC_BV_12_nodeC
} // end GEONW_PON_GUC_BV_12
 
group GEONW_PON_GUC_BV_13 {
/**
* @desc Test that a received GUC packet is not passed over the Gn SAP to the correct upper protocol
* when the Destination address matches the IUT address if received twice or more
* <pre>
* Pics Selection: PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == ‘GREEDY’ OR
* PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == ‘UNSPECIFIED’
* Config Id: CF03
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT having received Beacon information from ItsNodeC and
* the IUT having received Beacon information from ItsNodeB and
* the IUT having received a GeoUnicast packet addressed to IUT from ItsNodeC
* containing TrafficClass.SCF set to 1
* containing Basic Header
* containing RHL field
* indicating value greater than 1 and
* the IUT having forwarded the GUC packet
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives the same GUC packet from ItsNodeB
* containing Basic Header
* containing RHL field
* indicating HL1 - 1
* }
* then {
* the IUT does not pass the received GUC packet to any Upper Layer protocol
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GUC/BV/13
* @reference EN 302 636-4-1 [1], clause 9.3.9.3
*/
testcase TC_GEONW_PON_GUC_BV_13() runs on ItsMtc system ItsGeoNetworkingSystem {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
// Test control
if ((f_getGeoUnicastForwardingAlgorithm() != e_greedy) and (f_getGeoUnicastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == (e_greedy or e_unspecified) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf03Up(c_compNodeB);
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeC := f_getComponent(c_compNodeC);
v_nodeB.start(f_GEONW_PON_GUC_BV_13_nodeB());
v_nodeC.start(f_GEONW_PON_GUC_BV_13_nodeC());
// Synchronization
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
f_cf03Down();
} // end TC_GEONW_PON_GUC_BV_13
/**
* @desc Behavior function for NodeB (TC_GEONW_PON_GUC_BV_13)
*/
function f_GEONW_PON_GUC_BV_13_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut);
var integer i;
var template (present) GeoNetworkingPdu v_gnPacket := m_geoNwPdu(
m_geoNwUnicastPacket(
f_getPosition(c_compNodeC),
f_longPosVector2ShortPosVector(v_longPosVectorIut),
vc_localSeqNumber
),
-,
c_defaultHopLimit - 1
);
// Preamble
f_prNeighbour();
f_sleep(PX_TAC);
for(i:=0; i < lengthof(vc_utInds) and not match(vc_utInds[i].rawPayload, v_gnPacket.gnPacket.packet.payload.rawPayload); i:=i+1) {
// empty on purpose
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
//flush received upper indications
vc_utInds := {};
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
// Test Body
f_sendGeoNetMessage(m_geoNwReq_withLinkLayerDestination(valueof(v_gnPacket), f_getIutMacAddress()));
f_sleep(PX_TAC);
for(i:=0; i < lengthof(vc_utInds) and not match(vc_utInds[i].rawPayload, v_gnPacket.gnPacket.packet.payload.rawPayload); i:=i+1) {
// empty on purpose
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GUC_BV_13_nodeB
/**
* @desc Behavior function for NodeC (TC_GEONW_PON_GUC_BV_13)
*/
function f_GEONW_PON_GUC_BV_13_nodeC() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut);
// Preamble
f_prNeighbour();
f_sendGeoNetMessage(
m_geoNwReq_withLinkLayerDestination(
m_geoNwPdu(
m_geoNwUnicastPacket(
f_getPosition(c_compNodeC),
f_longPosVector2ShortPosVector(v_longPosVectorIut),
vc_localSeqNumber
),
-,
c_defaultHopLimit
),
f_getIutMacAddress()
)
);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GUC_BV_13_nodeC
} // end GEONW_PON_GUC_BV_13
} // end geoGeoUnicast
// 6.2.2.9
9191,7 → 10063,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.11.2
*/
testcase TC_GEONW_PON_GBC_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
9231,12 → 10103,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
9247,11 → 10119,11
f_getGeoBroadcastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9270,7 → 10142,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
9281,11 → 10153,11
f_getGeoBroadcastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9302,7 → 10174,9
* @desc Test that the reception of a broadcast indication over upper Gn SAP triggers the origination of a
* GeoBroadcast packet's line forwarding if the IUT is outside the Destination Area
* <pre>
* Pics Selection: none
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'SIMPLE' OR
* PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'UNSPECIFIED' OR
* PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'ADVANCED'
* Config Id: CF02
* Initial conditions:
* with {
9327,7 → 10201,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.11.2, Annex E.2
*/
testcase TC_GEONW_PON_GBC_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
9337,7 → 10211,12
var ItsGeoNetworking v_nodeD;
// Test control
if ((f_getGeoBroadcastForwardingAlgorithm() != e_simple) and (f_getGeoBroadcastForwardingAlgorithm() != e_unspecified) and (f_getGeoBroadcastForwardingAlgorithm() != e_advanced)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_simple or e_unspecified ) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf02Up();
9367,12 → 10246,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area2))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
9383,11 → 10262,11
f_getGeoBroadcastArea(c_area2)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9406,7 → 10285,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
9417,11 → 10296,11
f_getGeoBroadcastArea(c_area2)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: received GeoBroadcast message ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
9460,7 → 10339,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex E.2
*/
testcase TC_GEONW_PON_GBC_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
9505,7 → 10384,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
9528,11 → 10407,11
f_getGeoBroadcastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9551,7 → 10430,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
9562,11 → 10441,11
f_getGeoBroadcastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9620,7 → 10499,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/04
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/04
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex A.2
*/
testcase TC_GEONW_PON_GBC_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
9686,11 → 10565,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
9702,11 → 10581,11
?) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
9735,11 → 10614,11
)))) -> value v_msgInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Pre-conditions: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
}
9756,11 → 10635,11
?) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
9775,7 → 10654,7
/**
* @desc Test that a received GeoBroadcast packet is triggering line forwarding if received out of its
* destination area for the first time
* destination area for the first time from a known ITS-Station
* <pre>
* Pics Selection: none
* Config Id: CF04
9783,7 → 10662,8
* with {
* the IUT being in the "initial state" and
* the IUT having received Beacon information from ItsNodeB and
* the IUT having received Beacon information from ItsNodeD
* the IUT having received Beacon information from ItsNodeD and
* the IUT having received Beacon information from ItsNodeC
* }
* Expected behaviour:
* ensure that {
9802,7 → 10682,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/05
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex E.2
*/
testcase TC_GEONW_PON_GBC_BV_05() runs on ItsMtc system ItsGeoNetworkingSystem {
9845,7 → 10725,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
9856,11 → 10736,11
f_getGeoBroadcastArea(c_area2)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message correctly forwarded to area center ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
9880,7 → 10760,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
9894,7 → 10774,7
)
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
9911,7 → 10791,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
9922,12 → 10802,12
f_getGeoBroadcastArea(c_area2)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not forwarded to area center ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
9944,7 → 10824,8
* @desc Test that a received GeoBroadcast packet is not triggering line forwarding if received out of its
* destination area for the second or more time
* <pre>
* Pics Selection: none
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'SIMPLE' OR
* PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'UNSPECIFIED'
* Config Id: CF04
* Initial conditions:
* with {
9980,7 → 10861,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/06
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/06
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3
*/
testcase TC_GEONW_PON_GBC_BV_06() runs on ItsMtc system ItsGeoNetworkingSystem {
9992,6 → 10873,11
var UInt16 v_sequenceNumber := f_getInitialSequenceNumber();
// Test control
if ((f_getGeoBroadcastForwardingAlgorithm() != e_simple) and (f_getGeoBroadcastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_simple or e_unspecified ) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf04Up();
10034,11 → 10920,11
)))) -> value v_msgInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: GeoBroadcast message correctly forwarded to area center ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
10049,11 → 10935,11
[] geoNetworkingPort.receive(v_msgInd) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-forwarded to area center ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
10085,10 → 10971,10
)
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
10114,11 → 11000,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": INCONC: Pre-conditions: GeoBroadcast message not forwarded to area center ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: Pre-conditions: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
10147,11 → 11033,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast re-forwarded! (not to area center!) ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
10168,8 → 11054,7
* @desc Test that the protocol header fields (RHL) are correctly updated during a GeoBroadcast re-
* broadcasting step
* <pre>
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'SIMPLE'
* OR PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'UNSPECIFIED'
* Pics Selection: none
* Config Id: CF02
* Initial conditions:
* with {
10203,7 → 11088,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/07
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/07
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3
*/
testcase TC_GEONW_PON_GBC_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
10213,11 → 11098,6
var ItsGeoNetworking v_nodeD;
// Test control
if ((f_getGeoBroadcastForwardingAlgorithm() != e_simple) and (f_getGeoBroadcastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_simple or e_unspecified ) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf02Up();
10248,7 → 11128,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
10276,11 → 11156,11
c_defaultHopLimit) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message correctly re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
10300,7 → 11180,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
10313,11 → 11193,11
c_defaultHopLimit) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message correctly re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
10333,8 → 11213,7
/**
* @desc Test that the RHL restriction is correctly handled at a GeoBroadcast re-broadcasting step
* <pre>
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'SIMPLE'
* OR PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'UNSPECIFIED'
* Pics Selection: none
* Config Id: CF02
* Initial conditions:
* with {
10360,7 → 11239,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/08
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/08
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3
*/
testcase TC_GEONW_PON_GBC_BV_08() runs on ItsMtc system ItsGeoNetworkingSystem {
10370,11 → 11249,6
var ItsGeoNetworking v_nodeD;
// Test control
if ((f_getGeoBroadcastForwardingAlgorithm() != e_simple) and (f_getGeoBroadcastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_simple or e_unspecified ) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf02Up();
10405,7 → 11279,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
10429,11 → 11303,11
?) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
10452,7 → 11326,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
10462,11 → 11336,11
?) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
10502,7 → 11376,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/09
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/09
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3
*/
testcase TC_GEONW_PON_GBC_BV_09() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
10522,7 → 11396,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwBroadcastPacket(
10540,11 → 11414,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
// Postamble
10559,7 → 11433,8
* @desc Test that a received GeoBroadcast packet is not passed over the Gn SAP if it is received for the
* second or more time
* <pre>
* Pics Selection: none
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'SIMPLE' OR
* PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'UNSPECIFIED'
* Config Id: CF02
* Initial conditions:
* with {
10594,8 → 11469,8
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/10
* @reference EN 302 636-4-1 [1], clauses 9.3.11.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/10
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3
*/
testcase TC_GEONW_PON_GBC_BV_10() runs on ItsMtc system ItsGeoNetworkingSystem {
10604,6 → 11479,11
var ItsGeoNetworking v_nodeD;
// Test control
if ((f_getGeoBroadcastForwardingAlgorithm() != e_simple) and (f_getGeoBroadcastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_simple or e_unspecified ) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf02Up(c_compNodeB);
10670,11 → 11550,11
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
//flush received upper indications
vc_utInds := {};
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
// Test Body
10685,11 → 11565,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
10720,11 → 11600,11
)))) -> value v_msgInd {
tc_ac.stop;
log("*** " & testcasename() & ": INFO: Pre-conditions: GeoBroadcast message rebroadcasted ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INFO: Pre-conditions: GeoBroadcast message not rebroadcasted ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
10731,7 → 11611,7
// Test Body
v_msgInd.msgIn.basicHeader.routerHopLimit := valueof(v_msgInd.msgIn.basicHeader.routerHopLimit) / 2;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_msgInd.msgIn));
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
10765,7 → 11645,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/11
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/11
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3
*/
testcase TC_GEONW_PON_GBC_BV_11() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
10785,7 → 11665,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwBroadcastPacket(
10802,11 → 11682,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
10821,8 → 11701,7
* @desc Test that the reception of a broadcast indication over upper Gn SAP triggers the origination of a
* Simple GeoBroadcast if this method is selected in the MIB
* <pre>
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'SIMPLE'
* OR PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'UNSPECIFIED'
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'CBF'
* Config Id: CF02
* Initial conditions:
* with {
10844,7 → 11723,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/12
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/12
* @reference EN 302 636-4-1 [1], clauses 9.3.11.2, Annex D.2
*/
testcase TC_GEONW_PON_GBC_BV_12() runs on ItsMtc system ItsGeoNetworkingSystem {
10854,8 → 11733,8
var ItsGeoNetworking v_nodeD;
// Test control
if ((f_getGeoBroadcastForwardingAlgorithm() != e_simple) and (f_getGeoBroadcastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_simple or e_unspecified ) required for executing the TC ***");
if ((f_getGeoBroadcastForwardingAlgorithm() != e_cbf)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_cbf ) required for executing the TC ***");
setverdict(inconc);
stop;
}
10889,12 → 11768,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoBroadcastMessage(f_getArea(c_area1))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
10905,11 → 11784,11
f_getGeoBroadcastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
10928,7 → 11807,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
10939,11 → 11818,11
f_getGeoBroadcastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
10981,7 → 11860,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/19
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/19
* @reference EN 302 636-4-1 [1], Annex B.3
*/
testcase TC_GEONW_PON_GBC_BV_19() runs on ItsMtc system ItsGeoNetworkingSystem {
11031,7 → 11910,7
f_getPosition(c_compNodeB),
p_distanceTooBig
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
11043,11 → 11922,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
11082,10 → 11961,10
)
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
11107,7 → 11986,7
f_getPosition(c_compNodeB),
p_distanceTooBig
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
11119,11 → 11998,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
11157,13 → 12036,13
* indicating AREA2
* }
* then {
* the IUT re-broadcasts the GeoBroadcast packet
* the IUT re-broadcasts the GeoBroadcast packet immediately
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/20
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex E.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/20
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex E.2, E3 and E.4
*/
testcase TC_GEONW_PON_GBC_BV_20() runs on ItsMtc system ItsGeoNetworkingSystem {
11205,7 → 12084,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
11217,11 → 12096,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11240,7 → 12119,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
11252,11 → 12131,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11275,7 → 12154,7
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
11298,11 → 12177,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11337,13 → 12216,13
* indicating AREA2
* }
* then {
* the IUT re-broadcasts the GeoBroadcast packet
* the IUT re-broadcasts the GeoBroadcast packet immediately
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GBC/BV/21
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex E.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GBC/BV/21
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex E.2, E.3 and E.4
*/
testcase TC_GEONW_PON_GBC_BV_21() runs on ItsMtc system ItsGeoNetworkingSystem {
11385,7 → 12264,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
11397,11 → 12276,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11420,7 → 12299,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
11432,11 → 12311,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11458,7 → 12337,7
v_longPosVectorNodeD.pai := int2bit(0,1);
f_changePositon(c_compNodeD, v_longPosVectorNodeD);
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
11481,11 → 12360,11
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11525,7 → 12404,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/TSB/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/TSB/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.9.2
*/
testcase TC_GEONW_PON_TSB_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
11565,12 → 12444,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateTsbMessage) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
alt {
11583,11 → 12462,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11606,7 → 12485,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
11620,11 → 12499,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11662,7 → 12541,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/TSB/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/TSB/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.9.3
*/
testcase TC_GEONW_PON_TSB_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
11702,7 → 12581,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
11732,11 → 12611,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11755,7 → 12634,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
11772,11 → 12651,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
11826,7 → 12705,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/TSB/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/TSB/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.9.3
*/
testcase TC_GEONW_PON_TSB_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
11892,11 → 12771,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
11915,11 → 12794,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: The same TSB packet was re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: The same TSB packet was not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
11953,11 → 12832,11
) -> value v_msgInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
11970,11 → 12849,11
[] geoNetworkingPort.receive(v_msgInd) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: The same TSB packet was re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: The same TSB packet was not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
12022,7 → 12901,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/TSB/BV/04
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/TSB/BV/04
* @reference EN 302 636-4-1 [1], clauses 9.3.9.3
*/
testcase TC_GEONW_PON_TSB_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
12062,7 → 12941,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
12095,7 → 12974,7
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
12111,11 → 12990,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: TSB packet received with incorrect HopLimit ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
12134,7 → 13013,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
12154,7 → 13033,7
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: TSB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] geoNetworkingPort.receive(
mw_geoNwInd(
12170,11 → 13049,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": FAIL: TSB packet received with incorrect HopLimit ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Expected TSB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
}
12210,7 → 13089,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/TSB/BV/05
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/TSB/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.9.3
*/
testcase TC_GEONW_PON_TSB_BV_05() runs on ItsMtc system ItsGeoNetworkingSystem {
12250,7 → 13129,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
12265,7 → 13144,7
)
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
12282,7 → 13161,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
12299,11 → 13178,11
) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: TSB message was re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: TSB message was not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
12335,7 → 13214,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/TSB/BV/06
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/TSB/BV/06
* @reference EN 302 636-4-1 [1], clauses 9.3.9.3
*/
testcase TC_GEONW_PON_TSB_BV_06() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
12355,7 → 13234,7
// Preamble
f_prDefault();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwTsbPacket(
12371,15 → 13250,15
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
log("*** " & testcasename() & ": TSB packet passed to Upper Layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poDefault();
12424,7 → 13303,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/TSB/BV/07
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/TSB/BV/07
* @reference EN 302 636-4-1 [1], clauses 9.3.9.3
*/
testcase TC_GEONW_PON_TSB_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
12495,16 → 13374,16
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly rebroadcasted and passed to Upper Layer ***");
f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": INCONC: TSB was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: TSB not rebroadcasted ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
12515,11 → 13394,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: Same TSB packet was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: Same TSB packet was not passed to Upper Layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
12555,11 → 13434,11
) -> value v_msgInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: TSB correctly rebroadcasted ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: TSB not rebroadcasted ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
12567,7 → 13446,7
v_msgInd.msgIn.basicHeader.routerHopLimit := valueof(v_msgInd.msgIn.basicHeader.routerHopLimit) - 1;
v_gnPacket := v_msgInd.msgIn;
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_msgInd.msgIn));
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
12606,7 → 13485,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/SHB/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/SHB/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.10.2
*/
testcase TC_GEONW_PON_SHB_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
12646,12 → 13525,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateShbMessage) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
12665,11 → 13544,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: SHB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected SHB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
12688,7 → 13567,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
12702,11 → 13581,11
) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: SHB packet received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: Expected SHB message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
12738,7 → 13617,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/SHB/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/SHB/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.10.3
*/
testcase TC_GEONW_PON_SHB_BV_02() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
12758,7 → 13637,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwShbPacket(v_longPosVectorNodeB));
12770,11 → 13649,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
// Postamble
12818,7 → 13697,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/01
* @reference EN 302 636-4-1 [1], clauses 9.3.12.2
*/
testcase TC_GEONW_PON_GAC_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
12858,12 → 13737,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoAnycastMessage(f_getArea(c_area1))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
12874,11 → 13753,11
f_getGeoAnycastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
12897,7 → 13776,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
12908,11 → 13787,11
f_getGeoAnycastArea(c_area1)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
12929,7 → 13808,8
* @desc Test that the reception of an anycast indication over upper Gn SAP triggers the origination of a
* GeoAnycast packet's line forwarding if the IUT is outside the Destination Area
* <pre>
* Pics Selection: none
* Pics Selection: PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == 'GREEDY' OR
* PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == 'UNSPECIFIED'
* Config Id: CF02
* Initial conditions:
* with {
12956,8 → 13836,8
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.12.2, Annex E.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/02
* @reference EN 302 636-4-1 [1], clauses 9.3.12.2, Annex D.2
*/
testcase TC_GEONW_PON_GAC_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
12966,7 → 13846,12
var ItsGeoNetworking v_nodeD;
// Test control
if ((f_getGeoBroadcastForwardingAlgorithm() != e_simple) and (f_getGeoBroadcastForwardingAlgorithm() != e_unspecified)) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_simple or e_unspecified ) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf02Up();
12996,12 → 13881,12
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
if ( not f_utTriggerEvent(m_generateGeoAnycastMessage(f_getArea(c_area2))) ) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
tc_ac.start;
13012,11 → 13897,11
f_getGeoAnycastArea(c_area2)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message received correctly ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
13035,7 → 13920,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
13046,11 → 13931,11
f_getGeoAnycastArea(c_area2)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: received GeoAnycast message ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13089,7 → 13974,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/03
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/03
* @reference EN 302 636-4-1 [1], clauses 9.3.12.3
*/
testcase TC_GEONW_PON_GAC_BV_03() runs on ItsMtc system ItsGeoNetworkingSystem {
13129,7 → 14014,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
13152,11 → 14037,11
f_getGeoAnycastArea(c_area1)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast message re-forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13175,7 → 14060,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
13186,11 → 14071,11
f_getGeoAnycastArea(c_area1)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast message re-forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13232,7 → 14117,7
*
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/04
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/04
* @reference EN 302 636-4-1 [1], clauses 9.3.12.3, Annex E.2
*/
testcase TC_GEONW_PON_GAC_BV_04() runs on ItsMtc system ItsGeoNetworkingSystem {
13275,7 → 14160,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
13286,11 → 14171,11
f_getGeoAnycastArea(c_area2)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message correctly forwarded to area center ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
13309,7 → 14194,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
13323,7 → 14208,7
)
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
13340,7 → 14225,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
13351,11 → 14236,11
f_getGeoAnycastArea(c_area2)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast message not forwarded to area center ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13408,7 → 14293,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/05
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/05
* @reference EN 302 636-4-1 [1], clauses 9.3.12.3
*/
testcase TC_GEONW_PON_GAC_BV_05() runs on ItsMtc system ItsGeoNetworkingSystem {
13468,11 → 14353,11
) -> value v_msgInd {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: Pre-conditions: GeoAnycast message correctly forwarded to area center ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": INCONC: Pre-conditions: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout);
f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
}
}
13483,11 → 14368,11
[] geoNetworkingPort.receive(v_msgInd) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast message re-forwarded to area center ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not re-forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13519,7 → 14404,7
)
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
13530,11 → 14415,11
f_getGeoAnycastArea(c_area2)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast re-forwarded! (not to area center!) ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13562,11 → 14447,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": INCONC: Pre-conditions: GeoAnycast message not forwarded to area center ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: Pre-conditions: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
}
13594,11 → 14479,11
f_getGeoAnycastArea(c_area2)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast re-forwarded! (not to area center!) ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13651,7 → 14536,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/06
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/06
* @reference EN 302 636-4-1 [1], clauses 9.3.6.3 and 9.3.12.3
*/
testcase TC_GEONW_PON_GAC_BV_06() runs on ItsMtc system ItsGeoNetworkingSystem {
13691,7 → 14576,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
13704,11 → 14589,11
c_defaultHopLimit) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message correctly forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
13728,7 → 14613,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
13745,7 → 14630,7
)
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
13784,7 → 14669,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/07
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/07
* @reference EN 302 636-4-1 [1], clauses 9.3.12.3
*/
testcase TC_GEONW_PON_GAC_BV_07() runs on ItsMtc system ItsGeoNetworkingSystem {
13824,7 → 14709,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
13835,11 → 14720,11
f_getGeoAnycastArea(c_area2)) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast message re-forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not re-forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
13858,7 → 14743,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
13874,7 → 14759,7
)
)
);
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
13907,7 → 14792,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/08
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/08
* @reference EN 302 636-4-1 [1], clauses 9.3.12.3
*/
testcase TC_GEONW_PON_GAC_BV_08() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
13927,7 → 14812,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwAnycastPacket(
13944,15 → 14829,15
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
else {
log("*** " & testcasename() & ": FAIL: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
log("*** " & testcasename() & ": GeoAnycast packet passed to Upper Layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
14000,7 → 14885,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/09
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/09
* @reference EN 302 636-4-1 [1], clauses 9.3.12.3
*/
testcase TC_GEONW_PON_GAC_BV_09() runs on ItsMtc system ItsGeoNetworkingSystem {
14050,11 → 14935,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": PASS: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
}
else {
log("*** " & testcasename() & ": INCONC: GN was not transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error);
f_selfOrClientSyncAndVerdict(c_prDone, e_error);
}
// Test Body
14074,11 → 14959,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
14108,10 → 14993,10
);
f_sendGeoNetMessage(m_geoNwReq_linkLayerBroadcast(v_gnPacket));
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
14144,7 → 15029,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/10
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/10
* @reference EN 302 636-4-1 [1], clauses 9.3.12.3
*/
testcase TC_GEONW_PON_GAC_BV_10() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
14164,7 → 15049,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
v_gnPacket := m_geoNwPdu(m_geoNwAnycastPacket(
14181,11 → 15066,11
}
if(i < lengthof(vc_utInds)) {
log("*** " & testcasename() & ": FAIL: GN was transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
else {
log("*** " & testcasename() & ": PASS: GN was NOT transmitted to upper layer ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
// Postamble
14221,7 → 15106,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/11
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/11
* @reference EN 302 636-4-1 [1], Annex B.3
*/
testcase TC_GEONW_PON_GAC_BV_11() runs on ItsMtc system ItsGeoNetworkingSystem {
14271,7 → 15156,7
f_computePosition(f_getPosition(c_compNodeB), 1000, 0),
p_distanceTooBig
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
14283,11 → 15168,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast message forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
14322,10 → 15207,10
)
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
// Postamble
f_poNeighbour();
14347,7 → 15232,7
f_computePosition(f_getPosition(c_compNodeB), 1000, 0),
p_distanceTooBig
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
14359,11 → 15244,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoAnycast message forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoAnycast message not forwarded ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
14373,130 → 15258,101
} // end f_GEONW_PON_GAC_BV_11_nodeD
} // end GEONW_PON_GAC_BV_11
group GEONW_PON_GAC_BV_12 {
 
group GEONW_PON_GAC_BV_13 {
/**
* @desc Test that a received GeoAnycast packet is triggering rebroadcast if received out of its
* destination area for the first time from an unknown sender
* @desc Test that the reception of an anycast indication over upper Gn SAP triggers the origination of a
* GeoAnycast packet immediate broadcast if the IUT is outside the Destination Area
* <pre>
* Pics Selection: none
* Config Id: CF04
* Pics Selection: PICS_GN_GEOUNICAST_FORWARDING_ALGORITHM == 'CBF'
* Config Id: CF02
* Initial conditions:
* with {
* the IUT being in the "initial state" and
* the IUT having received Beacon information from ItsNodeB and
* the IUT not having received any message from ItsNodeD
* the IUT being in the "initial state" and
* the IUT having received Beacon information from ItsNodeD and
* the IUT having received Beacon information from ItsNodeB
* }
* Expected behaviour:
* ensure that {
* when {
* the IUT receives a GeoAnycast packet generated by ItsNodeC from ItsNodeD
* containing TrafficClass.SCF set to 1
* containing GeoAnycast DestinationArea
* indicating AREA2
* }
* then {
* the IUT re-broadcasts the GeoAnycast packet
* }
* when {
* the IUT is requested to send a GeoAnycast packet
* containing TrafficClass.SCF set to 1
* containing GeoAnycast DestinationArea
* indicating AREA2
* }
* then {
* the IUT broadcasts the packet immediately
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/GAC/BV/12
* @reference EN 302 636-4-1 [1], clauses 9.3.11.3, Annex E.2
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/GAC/BV/13
* @reference EN 302 636-4-1 [1], clauses 9.3.12.2
*/
testcase TC_GEONW_PON_GAC_BV_12() runs on ItsMtc system ItsGeoNetworkingSystem {
testcase TC_GEONW_PON_GAC_BV_13() runs on ItsMtc system ItsGeoNetworkingSystem {
// Local variables
var ItsGeoNetworking v_nodeB;
var ItsGeoNetworking v_nodeC;
var ItsGeoNetworking v_nodeD;
// Test control
if(f_getGeoBroadcastForwardingAlgorithm() != e_cbf) {
log("*** " & testcasename() & ": PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == ( e_cbf ) required for executing the TC ***");
setverdict(inconc);
stop;
}
// Test component configuration
f_cf04Up();
f_cf02Up();
// Preamble
// Start components
v_nodeB := f_getComponent(c_compNodeB);
v_nodeC := f_getComponent(c_compNodeC);
v_nodeD := f_getComponent(c_compNodeD);
v_nodeB.start(f_GEONW_PON_GAC_BV_12_nodeB());
v_nodeC.start(f_GEONW_PON_GAC_BV_12_nodeC());
v_nodeD.start(f_GEONW_PON_GAC_BV_12_nodeD());
v_nodeB.start(f_GEONW_PON_GAC_BV_13_nodeB());
v_nodeD.start(f_GEONW_PON_GAC_BV_13_nodeD());
// Synchronization
f_serverSync3ClientsAndStop({c_prDone, c_tbDone});
f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
// Cleanup
f_cf04Down();
f_cf02Down();
} // end TC_GEONW_PON_GAC_BV_12
} // end TC_GEONW_PON_GAC_BV_13
/**
* @desc Behavior function for NodeB (TC_GEONW_PON_GAC_BV_12)
* @desc Behavior function for NodeB (TC_GEONW_PON_GAC_BV_13)
*/
function f_GEONW_PON_GAC_BV_12_nodeB() runs on ItsGeoNetworking {
function f_GEONW_PON_GAC_BV_13_nodeB() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea(
mw_longPosVectorPosition(v_longPosVectorNodeC),
?,
f_getGeoAnycastArea(c_area2)
)))) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
}
if(not f_utTriggerEvent(m_generateGeoAnycastMessage(f_getArea(c_area2)))) {
log("*** " & testcasename() & ": INCONC: Trigger failed ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
}
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GAC_BV_12_nodeB
/**
* @desc Behavior function for NodeC (TC_GEONW_PON_GAC_BV_12)
*/
function f_GEONW_PON_GAC_BV_12_nodeC() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
// Test Body
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea(
mw_longPosVectorPosition(v_longPosVectorNodeC),
[] a_receiveGeoAnycastWithArea(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?,
f_getGeoAnycastArea(c_area2)
)))) {
f_getGeoAnycastArea(c_area2)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
log("*** " & testcasename() & ": PASS: GeoAnycast message received correctly ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
log("*** " & testcasename() & ": FAIL: GeoAnycast message not received ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
14503,46 → 15359,34
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GAC_BV_12_nodeC
} // end f_GEONW_PON_GAC_BV_13_nodeB
/**
* @desc Behavior function for NodeD (TC_GEONW_PON_GAC_BV_12)
* @desc Behavior function for NodeD (TC_GEONW_PON_GAC_BV_13)
*/
function f_GEONW_PON_GAC_BV_12_nodeD() runs on ItsGeoNetworking {
function f_GEONW_PON_GAC_BV_13_nodeD() runs on ItsGeoNetworking {
// Local variables
var LongPosVector v_longPosVectorNodeC := f_getPosition(c_compNodeC);
var LongPosVector v_longPosVectorIut := f_getPosition(c_compIut);
// Preamble
f_prNonNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_prNeighbour();
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
m_geoNwReq_linkLayerBroadcast(
m_geoNwPdu(
m_geoNwAnycastPacket(
v_longPosVectorNodeC,
vc_localSeqNumber,
f_getGeoAnycastArea(c_area2)
)
)
)
);
tc_ac.start;
alt {
[] geoNetworkingPort.receive(mw_geoNwInd(mw_geoNwPdu(mw_geoNwAnycastPacketWithArea(
mw_longPosVectorPosition(v_longPosVectorNodeC),
[] a_receiveGeoAnycastWithArea(
mw_longPosVectorPosition_withDelta(v_longPosVectorIut),
?,
f_getGeoAnycastArea(c_area2)
)))) {
f_getGeoAnycastArea(c_area2)) {
tc_ac.stop;
log("*** " & testcasename() & ": PASS: GeoAnycast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
log("*** " & testcasename() & ": PASS: received GeoAnycast message ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
[] tc_ac.timeout {
log("*** " & testcasename() & ": FAIL: GeoAnycast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
log("*** " & testcasename() & ": FAIL: GeoAnycast message not broadcasted ***");
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
}
14549,9 → 15393,9
// Postamble
f_poNeighbour();
} // end f_GEONW_PON_GAC_BV_12_nodeD
} // end f_GEONW_PON_GAC_BV_13_nodeD
} // end GEONW_PON_GAC_BV_12
} // end GEONW_PON_GAC_BV_13
} // end geoGeoAnycast
14589,7 → 15433,7
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/BCA/BV/01
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/BCA/BV/01
* @reference EN 302 636-4-1 [1], Annex E.3
*/
testcase TC_GEONW_PON_BCA_BV_01() runs on ItsMtc system ItsGeoNetworkingSystem {
14644,7 → 15488,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
14656,11 → 15500,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
14690,7 → 15534,7
)
)
);
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_noac.start;
14702,11 → 15546,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
14725,7 → 15569,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
f_sendGeoNetMessage(
14749,11 → 15593,11
)))) {
tc_noac.stop;
log("*** " & testcasename() & ": FAIL: GeoBroadcast message re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error);
f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
}
[] tc_noac.timeout {
log("*** " & testcasename() & ": PASS: GeoBroadcast message not re-broadcasted ***");
f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success);
f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
}
}
14767,7 → 15611,7
group GEONW_PON_BCA_BV_02 {
/**
* @desc Test that a received GeoBroadcast packet is triggering contention if received for the first time
* @desc Test that a received GeoBroadcast packet is triggering contention if received for the first time from a known sender
* when inside of the destination area
* <pre>
* Pics Selection: PICS_GN_GEOBROADCAST_FORWARDING_ALGORITHM == 'CBF'
14776,7 → 15620,8
* with {
* the IUT being in the "initial state" and
* the IUT having received Beacon information from ItsNodeB and
* the IUT having received Beacon information from ItsNodeD
* the IUT having received Beacon information from ItsNodeD and
* the IUT having received Beacon information from ItsNodeC
* }
* Expected behaviour:
* ensure that {
14790,13 → 15635,13
* then {
* the IUT saves the GeoBroadcast packet into the CBF buffer and
* the IUT starts the contention timer and
* the IUT broadcasts the received GeoBroadcast packet
* after expiry of the contention timer
* the IUT re-broadcasts the received GeoBroadcast packet
* upon expiry of the contention timer
* }
* }
* </pre>
*
* @see ETSI TS 102 871-2 v2.1.1 TP/GEONW/PON/BCA/BV/02
* @see ETSI TS 102 871-2 v1.3.1 TP/GEONW/PON/BCA/BV/02
* @reference EN 302 636-4-1 [1], Annex E.3
*/
testcase TC_GEONW_PON_BCA_BV_02() runs on ItsMtc system ItsGeoNetworkingSystem {
14850,7 → 15695,7
// Preamble
f_prNeighbour();
f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success);
f_selfOrClientSyncAndVerdict(c_prDone, e_success);
// Test Body
tc_ac.start;
1486