Commit d94f6a9e authored by Garcia's avatar Garcia
Browse files

Start sSip2 development

parent 57402bdb
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -332,18 +332,16 @@ int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody&
    const LibItsHttp__XmlMessageBodyTypes::XmlBody& xml_body = p_message_body.xml__body();
    if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) {
      p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast<const char*>(xml_body.raw()));
      } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationRequest)) {
        if (_codecs["held"].get() != nullptr) {
    } else {
      std::map<std::string, std::unique_ptr<codec<Record_Type, Record_Type> > >::const_iterator it = _codecs.find("held");
      if (it != _codecs.cend()) {
        loggers::get_instance().log("http_codec::encode_body: Call 'held_codec'");
        _codecs["held"]->encode((Record_Type&)xml_body, p_encoding_buffer);
      } else {
          loggers::get_instance().warning("http_codec::encode_body: Failed to encode HELD message");
          return -1;
        loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default");
        p_encoding_buffer = OCTETSTRING(xml_body.raw().lengthof(), (unsigned char*)static_cast<const char*>(xml_body.raw()));
        // TODO Add new HTTP message codec here
      }
      } else if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_locationResponse)) {
        loggers::get_instance().warning("http_codec::encode_body: No variant to encode");
      } else {
        // TODO To be continued
    }
  } else {
    loggers::get_instance().warning("http_codec::encode_body: Failed to encode HTTP message body");
+18 −125
Original line number Diff line number Diff line
@@ -3,33 +3,17 @@
#include "sip_codec_register_request.hh"
#include "loggers.hh"

//#include "osipparser2/osip_parser.h"

int sip_codec_register_request::encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data)
{
  loggers::get_instance().log_msg(">>> sip_codec_register_request::encode: ", (const Base_Type&)msg);





//  TTCN_EncDec::clear_error();
//  TTCN_Buffer encoding_buffer;

  int result = -1;
//  if (msg.ischosen(LibItsSip__TypesAndValues::SipMessage::ALT_request)) {
//    result = encode_request(msg.request(), encoding_buffer);
//  } else if (msg.ischosen(LibItsSip__TypesAndValues::SipMessage::ALT_response)) {
//    //result = encode_response(msg.response(), encoding_buffer);
//  } else {
//    loggers::get_instance().warning("sip_codec_register_request::encode: Unbound SipMessage");
//    return -1;
//  }

//  data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data());

  loggers::get_instance().log_msg("<<< sip_codec_register_request::encode: data=", data);
  return result;
  if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) {
    loggers::get_instance().warning("sip_codec_register_request::encode: Failed to encode message");
    return -1;
  }
  
  return 0;
}

int sip_codec_register_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params)
@@ -38,116 +22,25 @@ int sip_codec_register_request::decode (const OCTETSTRING& data, LibSip__SIPType

  // Sanity checks
  if (data.lengthof() == 0) {
    loggers::get_instance().warning(">>> sip_codec_register_request::decode: Wrong parameters");
    loggers::get_instance().warning("sip_codec_register_request::decode: Wrong parameters");
    return -1;
  }

  /*::parser_init();
  osip_message_t* _sip_message;
  int result = ::osip_message_init(&_sip_message);
  if (result != 0) {
    loggers::get_instance().warning("sip_codec_register_request::decode: Failed to initialise internal data structures");
  //  LibSip__SIPTypesAndValues::Request request;
  if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) {
    //  if (_codec.decode(data, request) == -1) {
    loggers::get_instance().warning("sip_codec_register_request::decode: Failed to decode message");
    return -1;
  }
  result = ::osip_message_parse(_sip_message, (const char*)static_cast<const unsigned char*>(data), data.lengthof());
  if (result != 0) {
    loggers::get_instance().warning("sip_codec_register_request::decode: Failed to parse SIP message");
  // msg.requestLine() = request.requestLine();
  // msg.msgHeader() = request.msgHeader();
  // msg.messageBody() = request.messageBody();
  // msg.payload() = request.payload();

  if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::REGISTER__E) {
    loggers::get_instance().warning("sip_codec_register_request::decode: Wrong SIP Method, expected REGISTER");
    return -1;
  }
  loggers::get_instance().log("sip_codec_register_request::decode: %s - %s - %s - %d", _sip_message->sip_version, osip_uri_get_host(_sip_message->req_uri), _sip_message->sip_method, *osip_message_get_content_length(_sip_message));







  ::osip_message_free(_sip_message);*/
  
  return 0;
}

//int sip_codec_register_request::encode_request(const LibItsSip__TypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer)
//{
//  loggers::get_instance().log_msg(">>> sip_codec_register_request::encode_request: ", (const Base_Type&)p_request);
//
//  const OPTIONAL<CHARSTRING>& v = p_request.body();
//  CHARSTRING body("");
//  if (v.ispresent()) {
//    body = static_cast<const CHARSTRING&>(*v.get_opt_value());
//    loggers::get_instance().log_msg("sip_codec_register_request::encode_request: body: ", body);
//  }
//
//  // Encode generic part
//  p_encoding_buffer.put_cs(p_request.method());
//  p_encoding_buffer.put_c(' ');
//  p_encoding_buffer.put_cs(p_request.uri());
//  p_encoding_buffer.put_cs(" HTTP/");
//  p_encoding_buffer.put_cs(int2str(p_request.version__major()));
//  p_encoding_buffer.put_c('.');
//  p_encoding_buffer.put_cs(int2str(p_request.version__minor()));
//  p_encoding_buffer.put_cs("\r\n");
//  // Encode headers
//  const LibItsSip__TypesAndValues::HeaderLines& headers = p_request.header();
//  for (int i = 0; i < headers.size_of(); i++) {
//    const LibItsSip__TypesAndValues::HeaderLine& header = headers[i];
//    loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing header ", header.header__name());
//    p_encoding_buffer.put_cs(header.header__name());
//    p_encoding_buffer.put_cs(": ");
//    if (std::string(static_cast<const char*>(header.header__name())).compare("Content-Length") == 0) {
//      loggers::get_instance().log("sip_codec_register_request::encode_request: body length: %d", body.lengthof());
//      p_encoding_buffer.put_cs(int2str(body.lengthof()));
//    } else {
//    if (header.header__value().size_of() > 0) {
//      loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing value ", header.header__value()[0]);
//      p_encoding_buffer.put_cs(header.header__value()[0]);
//      int j = 1;
//      while (j < header.header__value().size_of()) {
//        p_encoding_buffer.put_cs("; ");
//        loggers::get_instance().log_msg("sip_codec_register_request::encode_request: Processing value ", header.header__value()[j]);
//        p_encoding_buffer.put_cs(header.header__value()[j]);
//        j += 1;
//      } // End of 'while' statement
//    }
//    }
//    p_encoding_buffer.put_cs("\r\n");
//  } // End of 'for' statement
//
//  if (body.lengthof() != 0) {
//    p_encoding_buffer.put_cs(body);
//  }
//
//  p_encoding_buffer.put_cs("\r\n");
//
//  return 0;
//}
//
//
//int sip_codec_register_request::decode_headers(TTCN_Buffer& decoding_buffer, LibItsSip__TypesAndValues::HeaderLines& headers) {
//  loggers::get_instance().log(">>> sip_codec_register_request::decode_headers");
//  loggers::get_instance().log_to_hexa("sip_codec_register_request::decode_headers", decoding_buffer);
//
//  CHARSTRING cstr;
//  int i = 0;
//  while (true) {
//    switch(get_line(decoding_buffer, cstr, true)) {
//    case 0: {
//      loggers::get_instance().log_msg("sip_codec_register_request::decode_headers: ", cstr);
//      LibItsSip__TypesAndValues::HeaderLine header;
//      if (decode_header(cstr, header) == -1) {
//        loggers::get_instance().warning("sip_codec_register_request::decode_headers: Failed to decode header %s", static_cast<const char*>(cstr));
//        return -1;
//      }
//      headers[i++] = header;
//      }
//      break;
//    case 1:
//      loggers::get_instance().log_msg("<<< sip_codec_register_request::decode_headers: ", headers);
//      return 0;
//    case -1:
//      loggers::get_instance().warning("sip_codec_register_request::decode_headers: Failed to decode headers");
//      return -1;
//
//    } // End of 'switch' statement
//  } // End of 'while' statement
//}
+4 −6
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@
#include "codec.hh"
#include "params.hh"

#include "sip_codec_request.hh"

class Base_Type;
class TTCN_Typedescriptor_t;
class TTCN_Buffer;
@@ -15,15 +17,11 @@ class sip_codec_register_request: public codec <
LibSip__SIPTypesAndValues::REGISTER__Request,
LibSip__SIPTypesAndValues::REGISTER__Request>
{
  sip_codec_request _codec;
public:
  explicit sip_codec_register_request() : codec<LibSip__SIPTypesAndValues::REGISTER__Request, LibSip__SIPTypesAndValues::REGISTER__Request>() { };
  explicit sip_codec_register_request() : codec<LibSip__SIPTypesAndValues::REGISTER__Request, LibSip__SIPTypesAndValues::REGISTER__Request>(), _codec() { };
  virtual ~sip_codec_register_request() { };

  virtual int encode (const LibSip__SIPTypesAndValues::REGISTER__Request& msg, OCTETSTRING& data);
  virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::REGISTER__Request& msg, params* p_params = NULL);

private:
//  int encode_request (const LibSip__SIPTypesAndValues::Request& p_request, TTCN_Buffer& p_encoding_buffer);
//  int encode_response (const LibSip__SIPTypesAndValues::Request&, TTCN_Buffer& p_encoding_buffer);

}; // End of class sip_codec_register_request
+31 −30
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@ ARG PASSWORD
RUN echo "docker-titan" > /etc/hostname \
    && DEBIAN_FRONTEND=noninteractive apt-get update \
    && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \
    && DEBIAN_FRONTEND=noninteractive apt-get autoremove -y \
    && DEBIAN_FRONTEND=noninteractive apt-get autoclean -y \
    && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \
    && DEBIAN_FRONTEND=noninteractive apt-get update \
    && DEBIAN_FRONTEND=noninteractive apt-get install -y \
      autoconf \
      bison \
@@ -59,47 +59,48 @@ RUN echo "docker-titan" > /etc/hostname \
      tree \
      unzip \
      wget \
    && DEBIAN_FRONTEND=noninteractive apt-get install oracle-java10-installer oracle-java10-set-default -y \
    && DEBIAN_FRONTEND=noninteractive apt-get autoremove -y \
    && DEBIAN_FRONTEND=noninteractive apt-get autoclean -y \
    && useradd --create-home --shell /bin/bash stf549 \
    && echo "stf549:stf549" | chpasswd \
    && adduser stf549 sudo \
    && su - stf549 \
    && useradd --create-home --shell /bin/bash etsi \
    && echo "etsi:etsi" | chpasswd \
    && adduser etsi sudo \
    && su - etsi \
    && whoami \
    && cd /home/stf549 \
    && mkdir -p bin lib include dev tmp frameworks docs \
    && cd /home/etsi \
    && mkdir -p bin lib include tmp frameworks docs dev \
    && ls -ltr \
    && cd /home/stf549/frameworks \
    && git clone https://github.com/YannGarcia/osip osip \
    && cd /home/stf549/frameworks/osip \
    && ./autogen.sh \
    && make check \
    && cd /home/stf549/dev \
    && cd /home/etsi/dev \
    && git clone http://forge.etsi.org/gitlab/emergency-communications/NG112.git STF549_Ng112 \
    && cd /home/stf549/dev/STF549_Ng112/ttcn \
    && cd /home/etsi/dev/STF549_Ng112/ttcn \
        && svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/LibCommon/tags/v1.4.0/ttcn \
        && svn co --username $USERNAME --password $PASSWORD --non-interactive https://oldforge.etsi.org/svn/LibSip/trunk \
    && cd /home/stf549/dev/STF549_Ng112/scripts \
    && cd /home/etsi/dev/STF549_Ng112/scripts \
    && chmod 775 *.bash devenv.bash.ubuntu \
    && cd /home/stf549 \
    && ln -sf /home/stf549/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/stf549/devenv.bash \
    && export HOME=/home/stf549 \
    && . /home/stf549/devenv.bash \
    && echo "" >> /home/stf549/.bashrc \
    && echo ". ./devenv.bash" >> /home/stf549/.bashrc \
    && echo "" >> /home/stf549/.bashrc \
    && cd /home/stf549/dev/STF549_Ng112/scripts \
    && cd /home/etsi \
    && ln -sf /home/etsi/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash \
    && export HOME=/home/etsi \
    && . /home/etsi/devenv.bash \
    && cd /home/etsi/frameworks \
    && git clone https://github.com/YannGarcia/osip osip \
    && cd /home/etsi/frameworks/osip \
    && ./autogen.sh \
    && make check \
    && echo "" >> /home/etsi/.bashrc \
    && echo ". ./devenv.bash" >> /home/etsi/.bashrc \
    && echo "" >> /home/etsi/.bashrc \
    && cd /home/etsi/dev/STF549_Ng112/scripts \
    && ./build_titan.bash \
    && cd /home/stf549 \
    && . /home/stf549/devenv.bash \
    && cd /home/stf549/dev/STF549_Ng112/scripts \
    && cd /home/etsi \
    && . /home/etsi/devenv.bash \
    && cd /home/etsi/dev/STF549_Ng112/scripts \
    && ./update_emcom_project.bash \
    && ls -ltr /home/stf549/dev/STF549_Ng112 \
    && cd /home/stf549/dev/STF549_Ng112/etsi_emcom/src/AtsNg112/objs \
    && ls -ltr /home/etsi/dev/STF549_Ng112 \
    && cd /home/etsi/dev/STF549_Ng112/etsi_emcom/src/AtsNg112/objs \
    && ../bin/ng112.bash



CMD ["/bin/bash", "-c", "su - stf549"]
CMD ["/bin/bash", "-c", "su - etsi"]

# That's all Floks
+187 −194
Original line number Diff line number Diff line
/* ETSI Software License
* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted,
* free of charge, to use, reproduce and modify this software source code, under the following conditions:
* This source code is provided ���AS IS��� with no warranties, express or implied, including but not limited to,
* This source code is provided AS IS with no warranties, express or implied, including but not limited to,
* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement
* of intellectual property rights.
* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without
@@ -63,16 +63,13 @@ Package NG112_LIS {

Test Purpose {
TP Id TP_LIS_HTTP_POST_BV_01
                
Test objective 
    "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" 
Reference 
    "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)",
    "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10",
    "https://tools.ietf.org/html/rfc5985"

//Config Id CFG_LIS_01

PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD
Initial conditions with {
    the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
@@ -132,20 +129,17 @@ Package NG112_LIS {
            ;
        }
    }
        }
} // End of TP TP_LIS_HTTP_POST_BV_01
        
Test Purpose {
TP Id TP_LIS_HTTP_POST_BV_02
                
Test objective 
    "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" 
Reference 
    "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)",
    "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10",
    "https://tools.ietf.org/html/rfc5985"

//Config Id CFG_LIS_01

PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD
Initial conditions with {
    the IUT entity havingLocationMappingFor the DEVICE_NUMBER containing
@@ -195,7 +189,8 @@ Package NG112_LIS {
                                                    attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326",
                                                    element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_POS,
                                                    element "radius" indicating value CIRCLE_RADIUS containing
                                                                                    attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001";
                                                        attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001"
                                                    ;
                                                ;
                                            ;
                                        ;
@@ -208,20 +203,17 @@ Package NG112_LIS {
            ;
        }
    }
        }
} // End of TP TP_LIS_HTTP_POST_BV_02

Test Purpose {
TP Id TP_LIS_HTTP_POST_BV_03
                
Test objective 
    "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" 
Reference 
    "ETSI TS 103 479 Vm.t.e (yyyy-mm) Clause 5.5 Location Information Server (LIS)",
    "Next Generation 112 Long Term Definition http://www.eena.org/uploads/gallery/files/pdf/2013-03-15-eena_ng_longtermdefinitionupdated.pdf Clause 4.10",
    "https://tools.ietf.org/html/rfc5985"

//Config Id CFG_LIS_01

PICS Selection PICS_HTTP_POST_REQUEST PICS_LOCATION_HELD
Initial conditions with {
    the IUT entity havingLocationMappingFor the "deviceNumber" containing
@@ -260,11 +252,12 @@ Package NG112_LIS {
                    xmlMessage containing   
                        version indicating value "1.0",
                        element "error" inNamespace "urn:ietf:params:xml:ns:geopriv:held" containing
                                    attribute "code" indicating value "locationUnknown";
                            attribute "code" indicating value "locationUnknown"
                        ;
                    ;
                ;
            ;
        }
    }
        }
}
 No newline at end of file
} // End of TP TP_LIS_HTTP_POST_BV_03
} // End of Package NG112_LIS
 No newline at end of file
Loading