Commit 9f4f9d00 authored by garciay's avatar garciay
Browse files

Start UpperTester changes

parent cdd544d7
Loading
Loading
Loading
Loading
+876 −575
Original line number Diff line number Diff line
@@ -622,28 +622,35 @@ module TestCodec_GeoNetworking {
          stop;
        }
        setverdict(pass, "Encoding passed.");
      } // End of tc_GeoNet_UtGnInitialize
      
	// Check decoding
	/*if (p_decode == true) {
	v_res := decvalue(v_encMsg, v_decMsg);
	  log("Decoded message: ", v_decMsg);
	  select (v_res) {
	  case (0) {
	    if(match(v_decMsg, p_geoNetworkingReq)) {
	      setverdict(pass);
	    } else {
	      setverdict(fail);
	    }
	  }
	  case (1) {
	    setverdict(fail, "Decoding failed.");
	  }
	  case (2) {
	    setverdict(fail, "Not enough bits.");
	  }
      /**
       * @desc Validate template GeoNetworking/UtGnChangePosition
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNet_UtGnChangePosition() runs on TCType system TCType {
        var bitstring v_encMsg;
        var UtGnInitialize v_decMsg;
        var integer v_res := 0;
        var template (value) UtGnChangePosition m_utGnChangePosition := { 1234, 5678, 9876 };
        var bitstring v_expEncMsg := oct2bit('000809AABBCCDDEEFF'O);
    
        // Encode template
        log("Encode template ", valueof(m_utGnChangePosition));
      v_encMsg := encvalue(m_utGnChangePosition);
        log("Encoded message:  ", bit2oct(v_encMsg));
        // Check result
        if (not isbound(v_encMsg)) {
          setverdict(fail, "Encoding failed!");
          stop;
        }
	  }*/
        if (not match(v_encMsg, v_expEncMsg)) {
          log("Expected message: ", bit2oct(valueof(v_expEncMsg)));
          setverdict(fail, "Encoding failed, not the expected result!");
          stop;
        }
        setverdict(pass, "Encoding passed.");
      } // End of tc_GeoNet_UtGnChangePosition
      
    } // End of group testGeoNetUpperTester
        
@@ -684,16 +691,213 @@ 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_it == false) {
            v_got_it := 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);
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   ?
                                                   )) -> value v_msg {
            setverdict(fail);
          }
          [] tc_ac.timeout {
            if (v_got_it == false) {
              setverdict(inconc, "Expected message not received1");
            }
          }
        }
                
        unmap(self:geoNetworkingPort, system:geoNetworkingPort);
                
      } // End of testcase tc_GeoNet_Port
            
      /**
       * @desc validate GeoNetworkingReq/Broadcast with UtPort
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNet_Port_utPort() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
        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;
        }
                
        map(self:geoNetworkingPort, system:geoNetworkingPort);
        map(self:utPort, system:utPort);

	utPort.send(m_gnInitialize);
        f_utInitializeIut(m_gnInitialize);
                
      v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast(
                                                       m_geoNwPdu(
                                                                  m_geoNwBroadcastPacket(
                                                                                         m_dummyLongPosVectorNodeB, 
                                                                                         3456, 
                                                                                         m_dummyGeoBroadcastArea1
                                                                                         ))));
                
        geoNetworkingPort.send(v_gnReq);
        tc_ac.start;
        alt {
	  [] utPort.receive(UtGnResults: { utGnInitializeResult := true }) {
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   mw_geoNwPdu(
                                                               mw_geoNwTsbPacketWithNextHeader_cam(
                                                                                                   -,
                                                                                                   -,
                                                                                                   e_btpB
                                                                                                   )))) {
            if (v_got_it == false) {
            v_got_it := 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);
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   ?
                                                   )) -> value v_msg {
            setverdict(fail);
          }
          [] tc_ac.timeout {
            if (v_got_it == false) {
              setverdict(inconc, "Expected message not received1");
            }
          }
        }
                
        unmap(self:geoNetworkingPort, system:geoNetworkingPort);
        unmap(self:utPort, system:utPort);
                
      } // End of testcase tc_GeoNet_utPort
            
      /**
       * @desc validate GeoNetworkingReq/Broadcast with AcPort/beaconing
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNet_Port_acPort_beaconing() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
        // Variables
        var PositionTable v_positionTable := {};
        var GeoAreaTable v_areaTable := {};
        var GeoNetworkingReq v_gnReq;
        var ExtendedHeader v_header;
        var boolean v_got_it := false;
        var GeoNetworkingInd v_msg;
        var AcGnResponse v_result;
        
        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);

        f_preparePositionsAndAreas(v_positionTable, v_areaTable);    
        f_initialiseComponent(v_positionTable, v_areaTable, c_compNodeB);
        f_acTriggerEvent(m_startBeaconing(m_beaconHeader(f_getPosition(vc_componentName)).beaconHeader)); 
        tc_ac.start;
        alt {
          [] acPort.receive(AcGnResponse: { failure := { failure := true } }) {
            tc_ac.stop;
          }
          [] acPort.receive(AcGnResponse: { failure := { failure := false } }) {
            tc_ac.stop;
            log("Received negative ack");
            stop;
          }
          [] acPort.receive {
            log("Received unexpected message");
            tc_ac.stop;
          }
          [] tc_ac.timeout {
	    setverdict(fail, "UtGnInitializeResult not receive");
            log("Timeout while waiting for adapter control event result");
            stop;
          }
        } // End of 'alt' statement
@@ -767,9 +971,106 @@ module TestCodec_GeoNetworking {
        }
                
        unmap(self:geoNetworkingPort, system:geoNetworkingPort);
	unmap(self:utPort, system:utPort);
        unmap(self:acPort, system:acPort);
                
      } // End of testcase tc_GeoNet_Port
      } // End of testcase tc_GeoNet_acPort_beaconing
            
      /**
       * @desc validate GeoNetworkingReq/Broadcast with AcPort/getLongposVector
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNet_Port_acPort_lpv() runs on ItsGeoNetworking system ItsGeoNetworkingSystem {
        // Variables
        var PositionTable v_positionTable := {};
        var GeoAreaTable v_areaTable := {};
        var GeoNetworkingReq v_gnReq;
        var ExtendedHeader v_header;
        var boolean v_got_it := false;
        var GeoNetworkingInd v_msg;
        var AcGnResponse v_result;
        
        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);
  
        f_acGetLongPosVector(f_getIutGnLocalAddress());
  
      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_it == false) {
            v_got_it := 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);
            repeat;
          }
          [] geoNetworkingPort.receive(
                                       mw_geoNwInd(
                                                   ?
                                                   )) -> value v_msg {
            setverdict(fail);
          }
          [] tc_ac.timeout {
            if (v_got_it == false) {
              setverdict(inconc, "Expected message not received1");
            }
          }
        }
                
        unmap(self:geoNetworkingPort, system:geoNetworkingPort);
        unmap(self:acPort, system:acPort);
                
      } // End of testcase tc_GeoNet_acPort_lpv
            
      /**
       * @desc validate GeoNetworkingReq/Broadcast