Commit e54cd694 authored by garciay's avatar garciay
Browse files

First DENM test case validation

parent c0d71ba5
Loading
Loading
Loading
Loading
+23 −5
Original line number Diff line number Diff line
@@ -93,16 +93,34 @@ namespace LibItsDenm__TestSystem {
    loggers::get_instance().set_stop_time(_time_key, duration);
  }

  void UpperTesterPort::outgoing_send(const LibItsDenm__TypesAndValues::UtDenmTrigger& /*send_par*/)
  void UpperTesterPort::outgoing_send(const LibItsDenm__TypesAndValues::UtDenmTrigger& send_par)
  {
    loggers::get_instance().log_msg(">>> UppertesterPort::outgoing_send: ", send_par);
    
    float duration;
    loggers::get_instance().set_start_time(_time_key);
    static_cast<UpperTesterDenmLayer *>(_layer)->sendMsg(send_par, _layer_params);
    loggers::get_instance().set_stop_time(_time_key, duration);
  }

  void UpperTesterPort::outgoing_send(const LibItsDenm__TypesAndValues::UtDenmUpdate& /*send_par*/)
  void UpperTesterPort::outgoing_send(const LibItsDenm__TypesAndValues::UtDenmUpdate& send_par)
  {
    loggers::get_instance().log_msg(">>> UppertesterPort::outgoing_send: ", send_par);
    
    float duration;
    loggers::get_instance().set_start_time(_time_key);
    static_cast<UpperTesterDenmLayer *>(_layer)->sendMsg(send_par, _layer_params);
    loggers::get_instance().set_stop_time(_time_key, duration);
  }

  void UpperTesterPort::outgoing_send(const LibItsDenm__TypesAndValues::UtDenmTermination& /*send_par*/)
  void UpperTesterPort::outgoing_send(const LibItsDenm__TypesAndValues::UtDenmTermination& send_par)
  {
    loggers::get_instance().log_msg(">>> UppertesterPort::outgoing_send: ", send_par);
    
    float duration;
    loggers::get_instance().set_start_time(_time_key);
    static_cast<UpperTesterDenmLayer *>(_layer)->sendMsg(send_par, _layer_params);
    loggers::get_instance().set_stop_time(_time_key, duration);
  }

  void UpperTesterPort::outgoing_send(const LibItsDenm__TypesAndValues::UtDenmChangePosition& send_par)
@@ -132,10 +150,10 @@ namespace LibItsDenm__TestSystem {
      return;
    }

    //loggers::get_instance().log("UpperTesterPort::receive_msg: %s", p_ind.get_descriptor()->name);
    loggers::get_instance().log("UpperTesterPort::receive_msg: %s", p_ind.get_descriptor()->name);
    if (std::string(p_ind.get_descriptor()->name).compare("@LibItsDenm_TypesAndValues.UtDenmResults") == 0) { // TODO To be refined
      incoming_message((LibItsDenm__TypesAndValues::UtDenmResults&)p_ind);
    }
    } // TODO Implement UtDenmEventInd part
  }

} /* end of namespace */
+6 −0
Original line number Diff line number Diff line
@@ -29,9 +29,15 @@ void DENMLayer::sendData(OCTETSTRING& data, Params& params) {
void DENMLayer::receiveData(OCTETSTRING& data, Params& params)
{
  loggers::get_instance().log_msg(">>> DENMLayer::receiveData: ", data);
  
  // Decode the payload
  LibItsDenm__TestSystem::DenmInd p;
  _codec.decode(data, p.msgIn());
  if (!p.msgIn().is_bound()) {
    // Discard it
    
    return;
  } // else, continue
  
  // Process lower layer data
  // gnNextHeader
+1 −1
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ void PcapLayer::sendData(OCTETSTRING& data, Params& params) {
}

void PcapLayer::receiveData(OCTETSTRING& data, Params& params) {
  //loggers::get_instance().log(">>> PcapLayer::receiveData: Received %d bytes", data.lengthof());
  loggers::get_instance().log(">>> PcapLayer::receiveData: Received %d bytes", data.lengthof());
  loggers::get_instance().log_to_hexa("Packet dump", data);
  
  // Pass the packet to the upper layers
+31 −15
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ int UpperTesterDenmCodec::encode (const Record_Type& msg, OCTETSTRING& data)
      flags |= 0x02;
    }
    encoding_buffer.put_c(flags);
    loggers::get_instance().log_to_hexa("UpperTesterDenmCodec::encode: flags=", encoding_buffer);
    // Continue with encoding
  } else if (std::string(msg.get_descriptor()->name).compare("@LibItsDenm_TypesAndValues.UtDenmUpdate") == 0) {
    encoding_buffer.put_c(static_cast<unsigned char>(UpperTesterDenmCodec::c_utDenmUpdate));
@@ -73,6 +74,7 @@ int UpperTesterDenmCodec::encode (const Record_Type& msg, OCTETSTRING& data)
      flags |= 0x02;
    }
    encoding_buffer.put_c(flags);
    loggers::get_instance().log_to_hexa("UpperTesterDenmCodec::encode: flags=", encoding_buffer);
  } else if (std::string(msg.get_descriptor()->name).compare("@LibItsDenm_TypesAndValues.UtDenmTermination") == 0) {
    encoding_buffer.put_c(static_cast<unsigned char>(UpperTesterDenmCodec::c_utDenmTermination));
  } else { // Error
@@ -101,11 +103,29 @@ int UpperTesterDenmCodec::encode_ (const Base_Type& type, const TTCN_Typedescrip
          loggers::get_instance().warning("UpperTesterDenmCodec::encode_: -1 result code returned");
          return -1;
        }
      } else {
        std::string s(r.fld_descr(i)->name);
        if (
            (s.rfind(".validityDuration") != string::npos) ||
            (s.rfind(".repetitionDuration") != string::npos)
            ) { // Pad with three bytes
          encoding_buffer.put_c((unsigned char)0x00);
          encoding_buffer.put_c((unsigned char)0x00);
          encoding_buffer.put_c((unsigned char)0x00);
        } else if (
                   (s.rfind(".transmissionInterval") != string::npos) ||
                 (s.rfind(".repetitionInterval") != string::npos)
                   ) { // Pad with two bytes
          encoding_buffer.put_c((unsigned char)0x00);
          encoding_buffer.put_c((unsigned char)0x00);
        } else if (s.rfind(".relevanceTrafficDirection") != string::npos) { // Pad with one byte
          encoding_buffer.put_c((unsigned char)0x00);
        } else if (std::string(r.fld_name(i)).compare("alacarte") == 0) {
          // Add empty field length
          loggers::get_instance().log("UpperTesterDenmCodec::encode_: alacarte is missing, add 0x00");
          encoding_buffer.put_c(0x00);
        }
      }
    } // End of 'for' statement
  } else {
    std::string s(field_descriptor.name);
@@ -138,12 +158,10 @@ int UpperTesterDenmCodec::encode_ (const Base_Type& type, const TTCN_Typedescrip
               (s.rfind(".validityDuration") != string::npos) ||
               (s.rfind(".repetitionDuration") != string::npos)
               ) {
      if (type.is_present()) {
      const OPTIONAL<INTEGER> &o = dynamic_cast<const OPTIONAL<INTEGER> &>(type);
      const INTEGER& i = static_cast<const INTEGER&>(*o.get_opt_value());
      loggers::get_instance().log_msg("UpperTesterDenmCodec::encode_: i=", i);
      encoding_buffer.put_string(int2oct(i, 3));
      }
    } else if (
               (s.rfind(".informationQuality") != string::npos) ||
               (s.rfind(".causeCode") != string::npos) ||
@@ -160,11 +178,9 @@ int UpperTesterDenmCodec::encode_ (const Base_Type& type, const TTCN_Typedescrip
               (s.rfind(".transmissionInterval") != string::npos) ||
               (s.rfind(".repetitionInterval") != string::npos)
               ) {
      if (type.is_present()) {
      const OPTIONAL<INTEGER> &o = dynamic_cast<const OPTIONAL<INTEGER> &>(type);
      const INTEGER& i = static_cast<const INTEGER&>(*o.get_opt_value());
      encoding_buffer.put_string(int2oct(i, 2));
      }
    } else if (s.rfind(".originatingStationID") != string::npos) {
      const INTEGER& i = static_cast<const INTEGER&>(type);
      encoding_buffer.put_string(int2oct(i, 4));
+15 −9
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmIniti
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  Params par(params); // FIXME Review all const Param& in method declarations
  sendData(data, params);
}

@@ -28,7 +27,6 @@ void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChang
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  Params par(params); // FIXME Review all const Param& in method declarations
  sendData(data, params);
}

@@ -40,11 +38,10 @@ void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChang
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  Params par(params); // FIXME Review all const Param& in method declarations
  sendData(data, params);
}

/*void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTrigger& send_par, Params& params)
void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTrigger& send_par, Params& params)
{
  loggers::get_instance().log_msg(">>> UpperTesterDenmLayer::sendMsg", send_par);

@@ -52,11 +49,21 @@ void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChang
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  Params par(params); // FIXME Review all const Param& in method declarations
  sendData(data, params);
  }*/
}

void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmUpdate& send_par, Params& params)
{
  loggers::get_instance().log_msg(">>> UpperTesterDenmLayer::sendMsg", send_par);

  // Encode UpperTester PDU
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  sendData(data, params);
}

/*void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtAutoInteropTrigger& send_par, Params& params)
void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmTermination& send_par, Params& params)
{
  loggers::get_instance().log_msg(">>> UpperTesterDenmLayer::sendMsg", send_par);

@@ -64,9 +71,8 @@ void UpperTesterDenmLayer::sendMsg(const LibItsDenm__TypesAndValues::UtDenmChang
  OCTETSTRING data;
  _codec.encode((const Record_Type &)send_par, data);
  // Update parameters
  Params par(params); // FIXME Review all const Param& in method declarations
  sendData(data, params);
  }*/
}

void UpperTesterDenmLayer::sendData(OCTETSTRING& data, Params& params) {
  loggers::get_instance().log_msg(">>> UpperTesterDenmLayer::sendData: ", data);
Loading