Commit 1235e9dc authored by garciay's avatar garciay
Browse files

Review Geo-broadcast message caching scenario test

parent a2c16407
Loading
Loading
Loading
Loading
+81 −145
Original line number Diff line number Diff line
@@ -157,7 +157,7 @@ module ItsAutoInterop_TestCases {
        v_eut4.start(f_TC_AUTO_IOT_DENM_MFW_BV_01_eut4(v_eut4, PX_EUT4_ID));
        
        // Synchronization
        f_serverSyncNClientsAndStop(4, {c_prDone, c_tbDone, c_poDone});
        f_serverSyncNClientsAndStop(4, {c_prDone, c_tbDone});
        
        // Cleanup
        f_mtcCf01Down(v_eut1, v_eut2, v_eut3, v_eut4);
@@ -564,7 +564,7 @@ module ItsAutoInterop_TestCases {
        v_eut2.start(f_TC_AUTO_IOT_DENM_RWW_BV_01_eut2(v_eut2, PX_EUT2_ID));
        
        // Synchronization
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone});
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone});
        
        // Cleanup
        f_mtcCf02Down(v_eut1, v_eut2);
@@ -865,7 +865,7 @@ module ItsAutoInterop_TestCases {
        v_eut2.start(f_TC_AUTO_IOT_DENM_RHS_BV_01_eut2(v_eut2, PX_EUT2_ID));
        
        // Synchronization
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone});
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone});
        
        // Cleanup
        f_mtcCf02Down(v_eut1, v_eut2);
@@ -1093,7 +1093,7 @@ module ItsAutoInterop_TestCases {
        v_eut2.start(f_TC_AUTO_IOT_DENM_SVW_BV_01_eut2(v_eut2, PX_EUT2_ID));
        
        // Synchronization
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone});
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone});
        
        // Cleanup
        f_mtcCf02Down(v_eut1, v_eut2);
@@ -1396,7 +1396,7 @@ module ItsAutoInterop_TestCases {
        v_eut4.start(f_TC_AUTO_IOT_DENM_GMC_BV_01_eut4(v_eut4, PX_EUT4_ID));
        
        // Synchronization
        f_serverSyncNClientsAndStop(4, {c_prDone, c_tbDone, c_poDone});
        f_serverSyncNClientsAndStop(4, {c_prDone, c_initDone, c_tbDone});
        
        // Cleanup
        f_mtcCf01Down(v_eut1, v_eut2, v_eut3, v_eut4);
@@ -1415,16 +1415,12 @@ module ItsAutoInterop_TestCases {
            
            // Local variables
            var GeoNetworkingInd v_gnInd;
            var template (value) Payload v_payload;
            
            // Test component configuration
            f_cfPtcUp(p_eut);
            
            // Preamble
            f_prDefault();
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            
            // Test Body
            tc_ac.start;
            alt {
                [] geoNetworkingPort.receive( // Filter broadcasted DENM
@@ -1445,9 +1441,19 @@ module ItsAutoInterop_TestCases {
                                              m_forward_geoNetworkingInd(
                                                  v_gnInd
                    ));
                    tc_ac.start;
                    repeat;
                    log("*** " & testcasename() & ": INFO: EUT1 sends a GBC packet ***");
                    f_selfOrClientSyncAndVerdict(c_prDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: EUT1 does not send requested DEN message ***");
                    f_selfOrClientSyncAndVerdict(c_prDone, e_timeout);
                }
            }
            
            // Test Body
            f_selfOrClientSyncAndVerdict(c_initDone, e_success);
            tc_ac.start;
            alt {
                [] geoNetworkingPort.receive( 
                    mw_geoNwInd_withLinkLayerDestination(
                        mw_geoNwPdu(
@@ -1465,7 +1471,7 @@ module ItsAutoInterop_TestCases {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": PASS: Forwarding message scenario (GREEDY, GREEDY, GREEDY) succeed ***");
                    log("*** " & testcasename() & ": PASS: Geo-broadcast message caching scenario succeed ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
            }
@@ -1506,9 +1512,11 @@ module ItsAutoInterop_TestCases {
                                e_btpB,
                                mw_denm_stationId(
                                    PX_EUT_DESC[PX_EUT1_ID].stationId
                ))))) -> value v_eutGeoNw { // Unexpected DEN message
                ))))) -> value v_eutGeoNw { // EUT2 receives the GBC packet from EUT1
                    tc_ac.stop;
                    // Now, we have to check for EUT4 to broadcast the DENM message
                    // Here, GBC packet should be buffered
                    f_selfOrClientSyncAndVerdict(c_initDone, e_success);
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    tc_ac.start;
                    repeat;
                }
@@ -1529,7 +1537,7 @@ module ItsAutoInterop_TestCases {
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": FAIL: Forwarding message scenario (GREEDY, GREEDY, GREEDY) is incomplete ***");
                    log("*** " & testcasename() & ": FAIL: Geo-broadcast message caching scenario is incomplete ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                }
            } // End of 'alt' statement
@@ -1551,7 +1559,6 @@ module ItsAutoInterop_TestCases {
            // Local variables
            var GeoNetworkingInd v_gnInd;
            var EutGeoNetworking v_eutGeoNw;
            var integer v_denm_counter := 0;
            
            // Test component configuration
            f_cfPtcUp(p_eut);
@@ -1561,6 +1568,9 @@ module ItsAutoInterop_TestCases {
            f_selfOrClientSyncAndVerdict(c_prDone, e_success);
            
            // Test Body
            f_selfOrClientSyncAndVerdict(c_initDone, e_success);
            // EUT2 and EUT4 become on-link
            ItsAutoInterop_Functions.f_utTriggerEvent(UtAutoInteropTrigger:{utRadioOnOff := true});
            tc_ac.start;
             alt {
                [] eutGeoNetworkingPort.receive(
@@ -1598,11 +1608,11 @@ module ItsAutoInterop_TestCases {
                                              m_forward_geoNetworkingInd(
                                                  v_gnInd
                    ));
                    log("*** " & testcasename() & ": PASS: Forwarding message scenario (GREEDY, GREEDY, GREEDY) succeed ***");
                    log("*** " & testcasename() & ": PASS: Geo-broadcast message caching scenario succeed ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": FAIL: Forwarding message scenario (GREEDY, GREEDY, GREEDY) is incomplete ***");
                    log("*** " & testcasename() & ": FAIL: Geo-broadcast message caching scenario is incomplete ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                }
            } // End of 'alt' statement
@@ -1693,7 +1703,7 @@ module ItsAutoInterop_TestCases {
        v_eut3.start(f_TC_AUTO_IOT_CAM_NBD_BV_01_eut(v_eut3, PX_EUT3_ID));
        
        // Synchronization
        f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone});
        f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone});
        
        // Cleanup
        f_mtcCf03Down(v_eut1, v_eut2, v_eut3);
@@ -1733,7 +1743,7 @@ module ItsAutoInterop_TestCases {
            
            // Test Body
            tc_wait.start;
            alt { // TODO Add beacon support
            alt { 
                [] geoNetworkingPort.receive( // Filter broadcasted CAM
                    mw_geoNwInd_withLinkLayerDestination(
                        mw_geoNwPdu(
@@ -1754,20 +1764,21 @@ module ItsAutoInterop_TestCases {
                    ));
                    repeat;
                }
                [] eutGeoNetworkingPort.receive( 
                    mw_eutGeoNwInd_withLinkLayerDestination(
                [] geoNetworkingPort.receive( // Filter broadcasted beacon
                    mw_geoNwInd_withLinkLayerDestination(
                        mw_geoNwPdu(
                            mw_geoNwShbPacketWithNextHeader_cam(
                                ?,
                                ?,
                                e_btpB, 
                                mw_cam_stationId(
                                    -,
                                    PX_EUT_DESC[p_eut_id].stationId
                         ))),
                            mw_geoNwShbPacket(
                                mw_longPosVectorAny(
                                    mw_gnAddressMid(
                                        complement(PX_EUT_DESC[p_eut_id].mid
                         ))))),
                         c_llBroadcast
                )) { //  Receives a broadcast MAC address
                    // Receive CAM from other EUTs
                )) -> value v_gnInd { //  Receives a broadcast MAC address
                    // Broadcast Beacon message to the other EUTs
                    eutGeoNetworkingPort.send(
                                              m_forward_geoNetworkingInd(
                                                  v_gnInd
                    ));
                    repeat;
                }
                [] hmiPort.receive(
@@ -2002,50 +2013,6 @@ module ItsAutoInterop_TestCases {
                        repeat;
                    } // else, nothing to do
                }
                [] geoNetworkingPort.receive( // TODO Move to default
                    mw_geoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwShbPacketWithNextHeader_cam
                ))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] eutGeoNetworkingPort.receive( // TODO Move to default
                    mw_eutGeoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwShbPacketWithNextHeader_cam
                ))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] geoNetworkingPort.receive( // TODO Move to default
                    mw_geoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwTsbPacketWithNextHeader_denm(
                                ?,
                                ?,
                                e_btpB,
                                mw_denm_stationId
                )))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] eutGeoNetworkingPort.receive( // TODO Move to default
                    mw_eutGeoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwTsbPacketWithNextHeader_denm(
                                ?,
                                ?,
                                e_btpB,
                                mw_denm_stationId
                )))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: CAM messages for EUT ", PX_EUT_DESC[p_eut_id].stationId, " not received ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
@@ -2180,50 +2147,6 @@ module ItsAutoInterop_TestCases {
                        repeat;
                    } // else, nothing to do
                }
                [] geoNetworkingPort.receive( // TODO Move to default
                    mw_geoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwShbPacketWithNextHeader_cam
                ))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] eutGeoNetworkingPort.receive( // TODO Move to default
                    mw_eutGeoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwShbPacketWithNextHeader_cam
                ))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] geoNetworkingPort.receive( // TODO Move to default
                    mw_geoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwTsbPacketWithNextHeader_denm(
                                ?,
                                ?,
                                e_btpB,
                                mw_denm_stationId
                )))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] eutGeoNetworkingPort.receive( // TODO Move to default
                    mw_eutGeoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwTsbPacketWithNextHeader_denm(
                                ?,
                                ?,
                                e_btpB,
                                mw_denm_stationId
                )))) {
                    tc_ac.stop;
                    tc_ac.start;
                    repeat;
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": INCONC: CAM messages for EUT ", PX_EUT_DESC[p_eut_id].stationId, " not received ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
@@ -2314,8 +2237,8 @@ module ItsAutoInterop_TestCases {
        // Preamble
        
        // Start components
        v_eut1.start(f_TC_AUTO_IOT_GN_DAD_BV_01_eut(v_eut1, PX_EUT1_ID));
        v_eut2.start(f_TC_AUTO_IOT_GN_DAD_BV_01_eut(v_eut2, PX_EUT2_ID));
        v_eut1.start(f_TC_AUTO_IOT_GN_DAD_BV_01_eut(v_eut1, PX_EUT1_ID, PX_EUT2_ID));
        v_eut2.start(f_TC_AUTO_IOT_GN_DAD_BV_01_eut(v_eut2, PX_EUT2_ID, PX_EUT1_ID));
        
        // Synchronization
        f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone});
@@ -2332,14 +2255,15 @@ module ItsAutoInterop_TestCases {
         */
        function f_TC_AUTO_IOT_GN_DAD_BV_01_eut(
                                                in ItsAutoInteropGeonetworking p_eut,
                                                in integer p_eut_id
                                                in integer p_eut_id,
                                                in integer p_eut_id_neighbour
        ) runs on ItsAutoInteropGeonetworking {
            
            // Local variables
            var GeoNetworkingInd v_gnInd;
            var EutGeoNetworking v_eutGeoNw;
            var GN_Address v_gnAddr;
            var boolean v_getFirstCam := false;
            var HmiNeighborEventInds v_hmiNeighborEventInds;
            
            // Test component configuration
            f_cfPtcUp(p_eut);
@@ -2392,32 +2316,44 @@ module ItsAutoInterop_TestCases {
                                              m_forward_geoNetworkingInd(
                                                  v_gnInd
                    ));
                    log("*** " & testcasename() & ": PASS: Test done ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                }
                [] geoNetworkingPort.receive( // TODO To be moved in a default
                    mw_geoNwInd(
                        mw_geoNwPdu(
                            mw_geoNwShbPacketWithNextHeader_cam(
                                ?,
                                ?,
                                e_btpB,
                                mw_cam_stationId(
                                    -,
                                    PX_EUT_DESC[p_eut_id].stationId
                ))))) -> value v_gnInd { // Receive a CAM message
                    // Re-send CA message to the other EUTs
                    eutGeoNetworkingPort.send(
                                              m_forward_geoNetworkingInd(
                                                  v_gnInd
                    ));
                    repeat;
                    tc_wait.stop;
                    log("*** " & testcasename() & ": INFO: GN duplicated address conflict resolved ***");
                    hmiPort.clear;
                }
                [] tc_wait.timeout {
                    log("*** " & testcasename() & ": INCONC: Expected CA message not received ***");
                    log("*** " & testcasename() & ": INCONC: GN duplicate address conflict scenario is incomplete ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_timeout);
                }
            } // End of 'alt' statement
            tc_ac.start;
            alt { // Check neighbours
                [] hmiPort.receive(
                    HmiNeighborEventInds:?
                ) -> value v_hmiNeighborEventInds {
                    var boolean v_found := false;
                    tc_ac.stop;
                    for (var integer v_i := 0; v_i < lengthof(v_hmiNeighborEventInds); v_i := v_i + 1) {
                        if (
                            (PX_EUT_DESC[p_eut_id_neighbour].mid == v_hmiNeighborEventInds[v_i].mid) and 
                            (PX_EUT_DESC[p_eut_id_neighbour].stationId == v_hmiNeighborEventInds[v_i].stationId)
                        ) {
                            v_found := true;
                            break; // Got it, leave the loop
                        } // else, continue
                    } // End of 'for' statement
                    if (v_found) {
                        log("*** " & testcasename() & ": PASS: GN duplicate address conflict scenario compeleted for EUT ", PX_EUT_DESC[p_eut_id].stationId, "***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
                    } else {
                        log("*** " & testcasename() & ": FAIL: GN duplicate address conflict scenario is incomplete ***");
                        f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                    }
                }
                [] tc_ac.timeout {
                    log("*** " & testcasename() & ": FAIL: Expected message not received ***");
                    f_selfOrClientSyncAndVerdict(c_tbDone, e_error);
                }
            }
            
            // Postamble
            f_poDefault();