Commit 26db76eb authored by garciay's avatar garciay
Browse files

Layers ongoing

parent 9321ff55
Loading
Loading
Loading
Loading
+144 −5
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ module TestCodec_GeoNetworking {
    
  // LibCommon
  import from LibCommon_BasicTypesAndValues all;
  //    import from LibCommon_DataStrings all;
  import from LibCommon_DataStrings all;
    
  // LibIts
  //    import from ITS_Container language "ASN.1:1997" all;
@@ -14,7 +14,7 @@ module TestCodec_GeoNetworking {
  //    import from LibItsCommon_Functions all;
    
  // LibItsExternal
  //    import from LibItsExternal_TypesAndValues all;
  import from LibItsExternal_TypesAndValues all;
    
  //    // LibItsCam
  //    import from LibItsCam_TypesAndValues all;
@@ -124,6 +124,13 @@ module TestCodec_GeoNetworking {
      heading := 23
      }
            
      template (value) ShortPosVector m_dummyShortPosVectorNodeC := {
      gnAddr := m_dummyGnAddrNodeC,
      timestamp_ := 23644,
      latitude := 23754,
      longitude := 49645
      }
            
      template (value) Area m_dummyArea1 := {
      geoAreaPosLatitude := 298376,
      geoAreaPosLongitude := 32745,
@@ -190,6 +197,18 @@ module TestCodec_GeoNetworking {
      }
      }

      template (value) GeoNetworkingInd m_geoNwInd_withLinkLayerDestination(
									    in template (value) GeoNetworkingPdu p_geoNwMsg,
									    in template (value) MacAddress p_llDestinationAdress := 'FFFFFFFFFFFF'O,
									    in template (value) Bit256 p_ssp := int2bit(0, 256),
									    in template (value) UInt32 p_its_aid := 0
      ) := {
	msgIn := p_geoNwMsg,
	macDestinationAddress := p_llDestinationAdress,
	ssp := p_ssp,
	its_aid := p_its_aid
      }

    } // End of group LibItsGeoNetworking_DummyTemplates
        
    group testGeoNetMessages {
@@ -200,7 +219,7 @@ module TestCodec_GeoNetworking {
       */
      testcase tc_GeoNetReq_AnycastPacket() runs on TCType system TCType {
	var GeoNetworkingReq v_gnReq;
	var octetstring v_buffer := '01002B0A00418000000F0A000D800000A832A40102030405000011E90000007E0000007B002D007D00048D8800007FE904D2162E23A3000044454641554C545F5041594C4F4144FFFFFFFFFFFFA0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
	var octetstring v_buffer := '01002B0A00308000000F0A0004D200008431A4FDEA5EA5ED0000036B00000109000003150050022400048D8800007FE904D2162E23A3000044454641554C545F5041594C4F4144FFFFFFFFFFFFA0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
                
	if (PX_GN_UPPER_LAYER != e_any) {
	  log("PX_GN_UPPER_LAYER shall be set to e_any");
@@ -226,6 +245,44 @@ module TestCodec_GeoNetworking {
				   );
      }
            
      /**
       * @desc validate GeoNetworkingInd/Anycast
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNetInd_AnycastPacket() runs on TCType system TCType {
	var template (value) GeoNetworkingInd v_gnInd;
	var octetstring v_buffer := '01002B0A00308000000F0A0004D200008431A4FDEA5EA5ED0000036B00000109000003150050022400048D8800007FE904D2162E23A3000044454641554C545F5041594C4F4144FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000A0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
                
	if (PX_GN_UPPER_LAYER != e_any) {
	  log("PX_GN_UPPER_LAYER shall be set to e_any");
	  stop;
	}
                
      v_gnInd := valueof(m_geoNwInd_withLinkLayerDestination(
							     m_geoNwPdu(
									m_geoNwAnycastPacket(
											     m_dummyLongPosVectorNodeA, 
											     1234, 
											     m_dummyGeoAnycastArea1
											     )),
	      -,
	      -,
	      oct2int('A0A0A0A0'O)
							     ));
      TestGeoNetworkingInd(
                           v_gnInd, 
                           false);

      v_gnInd.msgIn.gnPacket.packet.commonHeader.plLength := 15;
	TestDecodeGeoNetworkingInd(
				   mw_geoNwInd_withLinkLayerDestination(
									valueof(v_gnInd.msgIn),
									?
									), 
				   v_buffer
				   );
      }
            
      /**
       * @desc validate GeoNetworkingReq/Broadcast
       * @verdict Pass on success, Fail otherwise
@@ -259,13 +316,44 @@ module TestCodec_GeoNetworking {
                
      }
            
      /**
       * @desc validate GeoNetworkingReq/Unicast
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNetReq_UnicastPacket() runs on TCType system TCType {
	var GeoNetworkingReq v_gnReq;
	var octetstring v_buffer := '01002B0A00208000000F0A0010E100008C2ADEADBABEBEEF00005C5C00005CCA0000C1ED006E00178C2ADEADBABEBEEF00005C5C00005CCA0000C1ED44454641554C545F5041594C4F4144FFFFFFFFFFFFA0A0A0A0'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
                
	if (PX_GN_UPPER_LAYER != e_any) {
	  log("PX_GN_UPPER_LAYER shall be set to e_any");
	  stop;
	}
                
      v_gnReq := valueof(m_geoNwReq_linkLayerBroadcast(
						       m_geoNwPdu(
								  m_geoNwUnicastPacket(
											 m_dummyLongPosVectorNodeC,
											 m_dummyShortPosVectorNodeC,
											 4321									       )),
						       oct2int('A0A0A0A0'O)
						       ));
	TestGeoNetworkingReq(
			     v_gnReq, 
			     false);
      v_gnReq.msgOut.gnPacket.packet.commonHeader.plLength := 15;
	TestDecodeGeoNetworkingReq(
				   v_gnReq, 
				   v_buffer
				   );
      }
            
      /**
       * @desc validate GeoNetworkingReq/Beacon
       * @verdict Pass on success, Fail otherwise
       */
      testcase tc_GeoNetReq_BeaconPacket() runs on TCType system TCType {
	var GeoNetworkingReq v_gnReq;
	var octetstring v_buffer := '01001001001000000000010000004c5e0c14d2ea9ed6b19719f6674d062493eb80000000464b1442FFFFFFFFFFFF00000000'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
	var octetstring v_buffer := '01002B0A0010800000040100A832A40102030405000011E90000007E0000007B002D007D464B1442FFFFFFFFFFFF00000000'O; // Check for 'LibItsGeoNetworking_TypesAndValues.encode:' output in codec traces to get the dump
                
	if (PX_GN_UPPER_LAYER != e_any) {
	  log("PX_GN_UPPER_LAYER shall be set to e_any");
@@ -416,6 +504,57 @@ module TestCodec_GeoNetworking {
            
    }// End of function TestDecodeGeoNetworkingReq
        
    function TestGeoNetworkingInd(
				  in template (value) GeoNetworkingInd p_geoNetworkingInd,
				  in boolean p_decode := true, 
				  in template (omit) bitstring p_expEncMsg := omit 
				  ) runs on TCType {
      var bitstring v_encMsg;
      var template (omit) TestRecord v_tr := { bs := p_expEncMsg };
      var GeoNetworkingInd v_decMsg;
      var integer v_res := 0;
    
      // Encode template
      log("Encode template ", valueof(p_geoNetworkingInd));
    v_encMsg := encvalue(p_geoNetworkingInd);
      log("Encoded message:  ", bit2oct(v_encMsg));
      // Check result
      if (not isbound(v_encMsg)) {
	setverdict(fail, "Encoding failed!");
	stop;
      }
      if (ispresent(v_tr.bs)) {
	if (not match(v_encMsg, p_expEncMsg)) {
	  log("Expected message: ", bit2oct(valueof(p_expEncMsg)));
	  setverdict(fail, "Encoding failed, not the expected result!");
	  stop;
	}
      }
      setverdict(pass, "Encoding passed.");
    
      // 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_geoNetworkingInd)) {
	    setverdict(pass);
	  } else {
	    setverdict(fail);
	  }
	}
	case (1) {
	  setverdict(fail, "Decoding failed.");
	}
	case (2) {
	  setverdict(fail, "Not enough bits.");
	}
	}
      }
            
    } // End of function TestGeoNetworkingInd
        
    function TestDecodeGeoNetworkingInd(
					in template GeoNetworkingInd p_geoNetworkingInd, 
					in template (present) octetstring p_expEncMsg