Commit 9453ef1e authored by YannGarcia's avatar YannGarcia
Browse files

Add UpperTester support

parent c6a28be1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ namespace LibHttp__TestSystem {
  void HttpPort::user_map(const char * system_port)
  {
    loggers::get_instance().log(">>> HttpPort::user_map: '%s'", system_port);
    _cfg_params.log();
    // Build layer stack
    params::iterator it = _cfg_params.find(std::string("params"));
    if (it != _cfg_params.end()) {
+22 −0
Original line number Diff line number Diff line
@@ -42,6 +42,28 @@ bool http_codec_cise::decode_body_xml(const OCTETSTRING &p_data, LibHttp__XmlMes
  return true;
}

bool http_codec_cise::encode_body_json(const LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, OCTETSTRING &p_encoding_buffer, const std::string& p_content_type) {
  loggers::get_instance().log_msg(">>> http_codec_cise::encode_body_json: ", p_json_body);
  
  std::map<std::string, std::unique_ptr<codec_gen<Record_Type, Record_Type> > >::const_iterator it;
  bool processed = false;
  loggers::get_instance().log("http_codec_cise::encode_body_json: Content-Type:'%s'", p_content_type.c_str());
  if (p_content_type.find("json") != std::string::npos) {
    it = _codecs.find("json"); // TODO Use params
    if (it != _codecs.cend()) {
      loggers::get_instance().log("http_codec_cise::encode_body_json: Call 'json_codec'");
      _codecs["json"]->encode((Record_Type&)p_json_body, p_encoding_buffer); // TODO Use params
      processed = true;
    }
  } // TODO Add new HTTP message codec here
  if (!processed) {
    loggers::get_instance().warning("http_codec_cise::encode_body_json: Unsupported HTTP codec, use raw field as default");
    p_encoding_buffer = OCTETSTRING(0, nullptr);
  }

  return true;
}

bool http_codec_cise::decode_body_json(const OCTETSTRING &p_data, LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, const std::string& p_content_type, params* p_params) {
  loggers::get_instance().log(">>> http_codec_cise::decode_body_json: content: %s", p_content_type.c_str());
  loggers::get_instance().log_msg(">>> http_codec_cise::decode_body_json: data: ", p_data);
+1 −0
Original line number Diff line number Diff line
@@ -14,5 +14,6 @@ protected: //! \protectedsection
  bool encode_body_xml(const LibHttp__XmlMessageBodyTypes::XmlBody &p_xml_body, OCTETSTRING &p_encoding_buffer, const std::string& p_content_type);
  bool decode_body_xml(const OCTETSTRING &p_data, LibHttp__XmlMessageBodyTypes::XmlBody &p_body, const std::string& p_content_type, params* p_params);

  virtual bool encode_body_json(const LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, OCTETSTRING &p_encoding_buffer, const std::string& p_content_type);
  bool decode_body_json(const OCTETSTRING &p_data, LibHttp__JsonMessageBodyTypes::JsonBody &p_json_body, const std::string& p_content_type, params* p_params);
};
 No newline at end of file
+6 −12
Original line number Diff line number Diff line
@@ -8,21 +8,16 @@

#include "LibHttp_JsonMessageBodyTypes.hh"

/*int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTETSTRING& data)
{
int json_codec::encode (const LibHttp__JsonMessageBodyTypes::JsonBody& msg, OCTETSTRING& data) {
  loggers::get_instance().log_msg(">>> json_codec::encode: ", (const Base_Type&)msg);

  TTCN_EncDec::clear_error();
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
  TTCN_Buffer encoding_buffer;

  if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_dequeueRegistrationRequest)) {
    const LibNg112__DequeueRegistration::DequeueRegistrationRequest& dequeue_registration_request = msg.dequeueRegistrationRequest();
    dequeue_registration_request.encode(LibNg112__DequeueRegistration::DequeueRegistrationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
    data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data());
  } else if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_dequeueRegistrationResponse)) {
    const LibNg112__DequeueRegistration::DequeueRegistrationResponse& dequeue_registration_response = msg.dequeueRegistrationResponse();
    dequeue_registration_response.encode(LibNg112__DequeueRegistration::DequeueRegistrationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
  if (msg.ischosen(LibHttp__JsonMessageBodyTypes::JsonBody::ALT_ut__trigger)) {
    const LibCise__TypesAndValues::UtDescription& ut_trigger = msg.ut__trigger();
    ut_trigger.encode(LibCise__TypesAndValues::UtDescription_descr_, encoding_buffer, TTCN_EncDec::CT_JSON);
    data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data());
  } else {
    loggers::get_instance().error("json_codec::encode: Not supported");
@@ -31,9 +26,8 @@
  loggers::get_instance().log("<<< json_codec::encode");
  return 0;
}
*/
int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes::JsonBody& msg, params* p_params)
{

int json_codec::decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes::JsonBody& msg, params* p_params) {
  loggers::get_instance().log_msg(">>> json_codec::decode: p_data=", p_data);

  // Sanity checks
+2 −2
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@ public:
  explicit json_codec() : codec_gen<LibHttp__JsonMessageBodyTypes::JsonBody, LibHttp__JsonMessageBodyTypes::JsonBody>() { };
  virtual ~json_codec() { };

  virtual int encode (const LibHttp__JsonMessageBodyTypes::JsonBody&, OCTETSTRING& data) { return -1; };
  virtual int decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes::JsonBody&, params* p_params = NULL);
  virtual int encode (const LibHttp__JsonMessageBodyTypes::JsonBody&, OCTETSTRING& data);// { return -1; };
  virtual int decode (const OCTETSTRING& p_data, LibHttp__JsonMessageBodyTypes::JsonBody&, params* p_params = NULL);// { return -1; };

}; // End of class json_codec
Loading