Loading ccsrc/Protocols/Http/http_codec.cc +12 −14 Original line number Diff line number Diff line Loading @@ -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"); Loading ccsrc/Protocols/Sip/sip_codec_register_request.cc +18 −125 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 //} ccsrc/Protocols/Sip/sip_codec_register_request.hh +4 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 docker/Dockerfile +31 −30 Original line number Diff line number Diff line Loading @@ -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 \ Loading Loading @@ -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 test_purposes/LIS_HTTP_POST_BV_xx.tplan2 +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 Loading Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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" ; ; ; ; Loading @@ -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 Loading Loading @@ -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
ccsrc/Protocols/Http/http_codec.cc +12 −14 Original line number Diff line number Diff line Loading @@ -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"); Loading
ccsrc/Protocols/Sip/sip_codec_register_request.cc +18 −125 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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 //}
ccsrc/Protocols/Sip/sip_codec_register_request.hh +4 −6 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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
docker/Dockerfile +31 −30 Original line number Diff line number Diff line Loading @@ -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 \ Loading Loading @@ -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
test_purposes/LIS_HTTP_POST_BV_xx.tplan2 +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 Loading Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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" ; ; ; ; Loading @@ -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 Loading Loading @@ -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