Commit 745f7e8c authored by garciay's avatar garciay
Browse files

Validate AtsRSUSimulator for CAM & DENM

parent 7b5b5790
Loading
Loading
Loading
Loading
+245 −11
Original line number Diff line number Diff line
@@ -3,6 +3,9 @@ module TestCodec_GeoNetworking {
  // LibCommon
  import from LibCommon_BasicTypesAndValues all;
  import from LibCommon_DataStrings all;
  import from LibCommon_Time all;
  import from LibCommon_VerdictControl all;
  import from LibCommon_Sync all;
  
  // LibIts
  //    import from ITS_Container language "ASN.1:1997" all;
@@ -961,10 +964,10 @@ module TestCodec_GeoNetworking {
       * @desc validate GeoNetworkingReq/Broadcast
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNet_Port() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
      testcase tc_GeoNet_Port_1() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
        var GeoNetworkingReq v_gnReq;
        var ExtendedHeader v_header;
        var boolean v_got_it := false;
        var boolean v_got_cam := false;
        var GeoNetworkingInd v_msg;
                
        if (PX_GN_UPPER_LAYER != e_any) {
@@ -974,6 +977,238 @@ module TestCodec_GeoNetworking {
                
        map(self:geoNetworkingPort, system:geoNetworkingPort);

      v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast(
                                                       m_geoNwPdu(
                                                                  m_geoNwBroadcastPacket(
                                                                                         m_dummyLongPosVectorNodeB, 
                                                                                         3456, 
                                                                                         m_dummyGeoBroadcastArea1
                                                                                         ))));
                
        geoNetworkingPort.send(v_gnReq);
        tc_ac.start;
        alt {
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   mw_geoNwPdu(
                                                               mw_geoNwTsbPacketWithNextHeader_cam(
                                                                                                   -,
                                                                                                   -,
                                                                                                   e_btpB
                                                                                                   )))) {
            if (v_got_cam == false) {
              v_got_cam := true;
              setverdict(pass);
            }
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   mw_geoNwPdu(
                                                               mw_geoNwLsRequestPacket(
                                                                                       ?,
                                                                                       ?
                                                                                       )))) -> value v_msg {
            log("Receive LsRequest: ", v_msg.msgIn);
            // Send LsReply
            f_sendGeoNetMessage(
                                valueof(m_geoNwReq_linkLayerBroadcast(
                                                                      m_geoNwPdu(
                                                                                 m_geoNwLsReplyPacket(
                                                                                                      m_dummyLongPosVectorNodeA,
                                                                                                      f_longPosVector2ShortPosVector(
                                                                                                                                     valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsRequestHeader.srcPosVector)
                                                                                                                                     ),
                                                                                                      vc_localSeqNumber
                                                                                                      )))));
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   ?
                                                   )) -> value v_msg {
            log("Receive beacon: ", v_msg.msgIn);
            setverdict(fail);
          }
          [] tc_ac.timeout {
            if (v_got_cam == false) {
              setverdict(inconc, "Expected message not received");
            }
          }
        }
                
        unmap(self:geoNetworkingPort, system:geoNetworkingPort);
                
      } // End of testcase tc_GeoNet_Port_1
            
      /**
       * @desc validate GeoNetworkingReq/Broadcast
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNet_Port_2() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
        var GeoNetworkingReq v_gnReq;
        var ExtendedHeader v_header;
        var boolean v_got_cam := false;
        var boolean v_got_beacon := false;
        var LongPosVector v_longPosVectorIut;
        var GeoNetworkingInd v_msg;
        
        if (PX_GN_UPPER_LAYER != e_any) {
          log("PX_GN_UPPER_LAYER shall be set to e_any");
          stop;
        }
        
        map(self:geoNetworkingPort, system:geoNetworkingPort);
        map(self:acPort, system:acPort);
        
        // A small sleep to provide TA to read pcap file is it used
        tc_noac.start;
        alt {
          [] tc_noac.timeout {
          }
        } // end of 'alt' statement
        
        f_acTriggerEvent(m_getLongPosVector(f_getIutGnLocalAddress()));
        tc_ac.start;
        alt {
          [] acPort.receive(mw_getLongPosVectorAny(f_getIutGnLocalAddress())) {
            tc_ac.stop;
            setverdict(pass);
          }
          [] acPort.receive {
            tc_ac.stop;
            setverdict(fail, "GnAddress mismatch, check LibItsGeoNetworking_Pics.PICS_GN_LOCAL_GN_ADDR value in configuration file");
          }
          [] tc_ac.timeout {
            setverdict(inconc, "timeout");
          }
        } // End of 'alt' statement

        v_longPosVectorIut := f_getPosition(c_compIut);
        f_acTriggerEvent(m_startPassBeaconing(m_beaconHeader(v_longPosVectorIut).beaconHeader));
        
      v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast(
                                                       m_geoNwPdu(
                                                                  m_geoNwBroadcastPacket(
                                                                                         m_dummyLongPosVectorNodeB, 
                                                                                         3456, 
                                                                                         m_dummyGeoBroadcastArea1
                                                                                         ))));
                
        geoNetworkingPort.send(v_gnReq);
        tc_ac.start;
        alt {
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   mw_geoNwPdu(
                                                               mw_geoNwTsbPacketWithNextHeader_cam(
                                                                                                   -,
                                                                                                   -,
                                                                                                   e_btpB
                                                                                                   )))) {
            if (v_got_cam == false) {
              v_got_cam := true;
              setverdict(pass);
            }
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   mw_geoNwPdu(
                                                               mw_geoNwLsRequestPacket(
                                                                                       ?,
                                                                                       ?
                                                                                       )))) -> value v_msg {
            log("Receive LsRequest: ", v_msg.msgIn);
            // Send LsReply
            f_sendGeoNetMessage(
                                valueof(m_geoNwReq_linkLayerBroadcast(
                                                                      m_geoNwPdu(
                                                                                 m_geoNwLsReplyPacket(
                                                                                                      m_dummyLongPosVectorNodeA,
                                                                                                      f_longPosVector2ShortPosVector(
                                                                                                                                     valueof(v_msg.msgIn.gnPacket.packet.extendedHeader.lsRequestHeader.srcPosVector)
                                                                                                                                     ),
                                                                                                      vc_localSeqNumber
                                                                                                      )))));
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   mw_geoNwPdu(
                                                               mw_geoNwBeaconPacket(?)
                                                               )
                                                   )) -> value v_msg {
            log("Receive beacon: ", v_msg.msgIn);
            if (v_got_beacon == false) {
              v_got_beacon := true;
              setverdict(pass);
            }
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   ?
                                                   )) -> value v_msg {
            log("Receive beacon: ", v_msg.msgIn);
            setverdict(fail);
          }
          [] tc_ac.timeout {
            if ((v_got_cam == false) and (v_got_beacon == false)) {
              setverdict(inconc, "Expected messages not received");
            }
          }
        }

        f_acTriggerEvent(m_stopPassBeaconing);
        
        unmap(self:geoNetworkingPort, system:geoNetworkingPort);
        unmap(self:acPort, system:acPort);
        
      } // End of testcase tc_GeoNet_Port_2
            
      /**
       * @desc validate GeoNetworkingReq/Broadcast
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNet_MultiPort() runs on ItsMtc system ItsGeoNetworkingSystem {
        var ItsGeoNetworking v_comp1;
        var ItsGeoNetworking v_comp2;

      v_comp1 := ItsGeoNetworking.create("Comp1") alive;
      v_comp2 := ItsGeoNetworking.create("Comp2") alive;
	
        connect(self:syncPort, mtc:syncPort);
        connect(v_comp1:syncPort, self:syncPort);
        connect(v_comp2:syncPort, self:syncPort);
        map(v_comp1:geoNetworkingPort, system:geoNetworkingPort);
        map(v_comp2:geoNetworkingPort, system:geoNetworkingPort);
	
        v_comp1.start(f_tc_GeoNet_MultiPort());
        v_comp2.start(f_tc_GeoNet_MultiPort());
        // Synchronization
        f_serverSync2ClientsAndStop({c_prDone, c_tbDone});
	

        disconnect(self:syncPort, mtc:syncPort);
        disconnect(v_comp1:syncPort, self:syncPort);
        disconnect(v_comp2:syncPort, self:syncPort);
        unmap(v_comp1:geoNetworkingPort, system:geoNetworkingPort);
        unmap(v_comp2:geoNetworkingPort, system:geoNetworkingPort);
      }

      function f_tc_GeoNet_MultiPort() runs on ItsGeoNetworking {
        var GeoNetworkingReq v_gnReq;
        var ExtendedHeader v_header;
        var boolean v_got_it := false;
        var GeoNetworkingInd v_msg;
                
        if (PX_GN_UPPER_LAYER != e_any) {
          log("PX_GN_UPPER_LAYER shall be set to e_any");
          stop;
        }
                
        f_selfOrClientSyncAndVerdict(c_prDone, e_success);                
      v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast(
                                                       m_geoNwPdu(
                                                                  m_geoNwBroadcastPacket(
@@ -1041,10 +1276,9 @@ module TestCodec_GeoNetworking {
            }
          }
        }
        f_selfOrClientSyncAndVerdict(c_tbDone, e_success);
	
        unmap(self:geoNetworkingPort, system:geoNetworkingPort);
                
      } // End of testcase tc_GeoNet_Port
      } // End of function f_tc_GeoNet_MultiPort
        
      /**
       * @desc validate GeoNetworkingReq/Broadcast with UtPort
@@ -1259,10 +1493,6 @@ module TestCodec_GeoNetworking {
            tc_ac.stop;
            setverdict(pass, "Received AC ACK");
          }
          [] acPort.receive {
            tc_ac.stop;
            setverdict(fail, "Received unexpected AC message");
          }
          [] tc_ac.timeout {
            setverdict(inconc, "Timeout while waiting for adapter control event result");
            stop;
@@ -1405,6 +1635,10 @@ module TestCodec_GeoNetworking {
            tc_ac.stop;
            setverdict(pass);
          }
          [] geoNetworkingPort.receive {
            tc_ac.stop;
            setverdict(fail, "Unexpected message received");
          }
          [] tc_ac.timeout {
            setverdict(inconc, "Expected message not received");
          }
+41 −310

File changed.

Preview size limit exceeded, changes collapsed.