Loading ccsrc/Protocols/Sip/sip_codec_headers.cc +147 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,22 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe ::osip_cseq_free(cseq_header); osip_free(hvalue); // Event if (p_msg_header.event().is_present()) { if (encode_event_header(p_msg_header.event(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Event header"); return -1; } } // Expires if (p_msg_header.expires().is_present()) { if (encode_expires_header(p_msg_header.expires(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Expires header"); return -1; } } // Geolocation if (p_msg_header.geolocation().is_present()) { if (encode_geolocation_header(p_msg_header.geolocation(), &p_sip_message) == -1) { Loading Loading @@ -471,6 +487,22 @@ void sip_codec_headers::decode_headers(const osip_message_t* p_sip_message, LibS p_headers.infoPackage().set_to_omit(); p_headers.inReplyTo().set_to_omit(); LibSip__SIPTypesAndValues::Event event_header; decode_event_header(p_sip_message, event_header); if (event_header.is_value()) { p_headers.event() = event_header; } else { p_headers.event().set_to_omit(); } LibSip__SIPTypesAndValues::Expires expires_header; decode_expires_header(p_sip_message, expires_header); if (expires_header.is_value()) { p_headers.expires() = expires_header; } else { p_headers.expires().set_to_omit(); } LibSip__SIPTypesAndValues::MaxForwards max_forwards_header; decode_max_forwards_header(p_sip_message, max_forwards_header); if (max_forwards_header.is_value()) { Loading Loading @@ -1056,6 +1088,62 @@ int sip_codec_headers::encode_c_seq_header(const LibSip__SIPTypesAndValues::CSeq return 0; } // End of method encode_c_seq_header int sip_codec_headers::encode_event_header(const OPTIONAL<LibSip__SIPTypesAndValues::Event>& p_event, osip_message_t** p_sip_message) { loggers::get_instance().log(">>> sip_codec_headers::encode_event_header"); if (!p_event.is_present()) { return 0; } const LibSip__SIPTypesAndValues::Event& event = static_cast<const LibSip__SIPTypesAndValues::Event&>(*p_event.get_opt_value()); // eventType std::string value(static_cast<const char*>(event.eventType())); loggers::get_instance().log("sip_codec_headers::encode_event_header: eventType: %s", value.c_str()); // eventParam const OPTIONAL<LibSip__Common::SemicolonParam__List>& event_param = event.eventParams(); // TODO Create a method to fill an std::string with SemicolonParam__List if (event_param.is_present()) { const LibSip__Common::SemicolonParam__List& l = static_cast<const LibSip__Common::SemicolonParam__List&>(*event_param.get_opt_value()); int i = 0; do { value += ";"; const LibSip__Common::GenericParam& g = l[i]; value += static_cast<const char*>(g.id()); if (g.paramValue().is_present()) { value += "="; const LibSip__Common::GenValue& v = static_cast<const LibSip__Common::GenValue&>(*g.paramValue().get_opt_value()); if (v.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { value += static_cast<const char*>(v.tokenOrHost()); } else { value += static_cast<const char*>(v.quotedString()); } } i += 1; } while (i < l.lengthof()); } loggers::get_instance().log("sip_codec_headers::encode_event_header: %s", value.c_str()); ::osip_message_set_header((osip_message_t *)*p_sip_message,(const char *)"Event", value.c_str()); return 0; } int sip_codec_headers::encode_expires_header(const OPTIONAL<LibSip__SIPTypesAndValues::Expires>& p_expires, osip_message_t** p_sip_message) { loggers::get_instance().log(">>> sip_codec_headers::encode_expires_header"); if (!p_expires.is_present()) { return 0; } const LibSip__SIPTypesAndValues::Expires& expires = static_cast<const LibSip__SIPTypesAndValues::Expires&>(*p_expires.get_opt_value()); // deltaSec std::string value(static_cast<const char*>(expires.deltaSec())); loggers::get_instance().log("sip_codec_headers::encode_expires_header: %s", value.c_str()); ::osip_message_set_header((osip_message_t *)*p_sip_message,(const char *)"Expires", value.c_str()); return 0; } int sip_codec_headers::encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t** p_from_header) { loggers::get_instance().log(">>> sip_codec_headers::encode_from_header"); Loading Loading @@ -2448,6 +2536,65 @@ void sip_codec_headers::decode_contact_header(const osip_message_t* p_sip_messag loggers::get_instance().log_msg("<<< sip_codec_headers::decode_contact_header: ", p_contact_header); } // End of method decode_contact_header void sip_codec_headers::decode_event_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Event& p_event_header) { loggers::get_instance().log("sip_codec_headers::decode_event_header"); // Sanity checks osip_header_t *dest = nullptr; ::osip_message_header_get_byname(p_sip_message, (const char *)"Event", 0, &dest); // TODO Create osip_message_[g|s]et_event if (dest == nullptr) { loggers::get_instance().warning("sip_codec_headers::decode_event_header: Not found"); return; } loggers::get_instance().log("sip_codec_headers::decode_event_header: hname='%s' : hvalue='%s'\n", dest->hname, dest->hvalue); // FieldName p_event_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("EVENT_E")); // EventType std::string str(dest->hvalue); size_t p1 = str.find("<"); size_t p2 = str.find(">"); size_t p3 = str.find(";"); std::string u = str.substr(p1 + 1, p2 - p1 - 1); loggers::get_instance().log("sip_codec_headers::decode_event_header: u='%s'\n", u.c_str()); p_event_header.eventType() = CHARSTRING(u.c_str()); // eventParam if (p3 != std::string::npos) { std::string p = str.substr(p3 + 1); loggers::get_instance().log("sip_codec_headers::decode_event_header: p='%s'\n", p.c_str()); LibSip__Common::SemicolonParam__List params; decode_semi_colon_params(p.c_str(), params); if (params.is_bound()) { p_event_header.eventParams() = OPTIONAL<LibSip__Common::SemicolonParam__List>(params); } else { p_event_header.eventParams().set_to_omit(); } } else { p_event_header.eventParams().set_to_omit(); } } // End of method decode_event_header void sip_codec_headers::decode_expires_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Expires& p_expires_header) { loggers::get_instance().log("sip_codec_headers::decode_expires_header"); // Sanity checks osip_header_t *dest = nullptr; ::osip_message_header_get_byname(p_sip_message, (const char *)"Expires", 0, &dest); // TODO Create osip_message_[g|s]et_expires if (dest == nullptr) { loggers::get_instance().warning("sip_codec_headers::decode_expires_header: Not found"); return; } loggers::get_instance().log("sip_codec_headers::decode_expires_header: hname='%s' : hvalue='%s'\n", dest->hname, dest->hvalue); // FieldName p_expires_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("EXPIRES_E")); // DeltaSec std::string str(dest->hvalue); p_expires_header.deltaSec() = CHARSTRING(str.c_str()); } // End of method decode_expires_header void sip_codec_headers::decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) { loggers::get_instance().log("sip_codec_headers::decode_from_header"); Loading ccsrc/Protocols/Sip/sip_codec_headers.hh +6 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ namespace LibSip__SIPTypesAndValues { class ContentLength; class ContentType; class CSeq; class Event; class Expires; class From; class Geolocation; class GeolocationRouting; Loading Loading @@ -52,6 +54,8 @@ public: virtual int encode_content_length_header(const LibSip__SIPTypesAndValues::ContentLength& p_contact, osip_content_length_t** p_content_length_header); virtual int encode_content_type_header(const LibSip__SIPTypesAndValues::ContentType& p_contact, osip_content_type_t** p_content_type_header); virtual int encode_c_seq_header(const LibSip__SIPTypesAndValues::CSeq& p_c_seq, osip_cseq_t** p_c_seq_header); virtual int encode_event_header(const OPTIONAL<LibSip__SIPTypesAndValues::Event>& p_event, osip_message_t** p_sip_message); virtual int encode_expires_header(const OPTIONAL<LibSip__SIPTypesAndValues::Expires>& p_expires, osip_message_t** p_sip_message); virtual int encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t** p_from_header); virtual int encode_geolocation_header(const OPTIONAL<LibSip__SIPTypesAndValues::Geolocation>& p_geolocation, osip_message_t** p_sip_message); virtual int encode_geolocation_routing_header(const OPTIONAL<LibSip__SIPTypesAndValues::GeolocationRouting>& p_geolocation, osip_message_t** p_sip_message); Loading Loading @@ -87,6 +91,8 @@ public: virtual void decode_content_type_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentType& p_content_type_header); virtual void decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header); virtual void decode_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Contact& p_contact_header); virtual void decode_event_header(const osip_message_t* p_sip_event, LibSip__SIPTypesAndValues::Event& p_event_header); virtual void decode_expires_header(const osip_message_t* p_sip_expires, LibSip__SIPTypesAndValues::Expires& p_expires_header); virtual void decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); virtual void decode_geolocation_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Geolocation& p_geolocation_header); virtual void decode_geolocation_routing_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::GeolocationRouting& p_geolocation_routing_header); Loading ttcn/AtsLIS/AtsLIS_Pics.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ module AtsLIS_Pics { /** * @desc HTTP post URI for LIS protocol */ modulepar charstring PICS_LIS_URI := "/"; modulepar charstring PICS_PSAP_LIS_URI := "/"; /** Loading ttcn/AtsPSAP/AtsPSAP_Pics.ttcn +20 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,26 @@ module AtsPSAP_Pics { */ modulepar boolean PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION := true; /** * @desc Does the IUT support HELD protocol */ modulepar boolean PICS_PSAP_S_HELD := true; /** * @desc Does the IUT support LoST protocol */ modulepar boolean PICS_PSAP_S_LoST := true; /** * @desc HTTP post URI for LIS protocol */ modulepar charstring PICS_PSAP_LIS_URI := "/"; /** * @desc HTTP post URI for LIS protocol */ modulepar charstring PICS_PSAP_LoST_URI := "/"; /** * @desc URI to ESRP Dequeue Registration web service */ Loading ttcn/AtsPSAP/AtsPSAP_TestCases.ttcn +111 −23 Original line number Diff line number Diff line Loading @@ -886,23 +886,14 @@ module AtsPSAP_TestCases { m_presence( PX_PRESENCE_USER, { //tuple_list { m_tuple( "0ehvxv4kxwrzzbp", { omit, m_geopriv({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }, m_LocPolicyType), { } }, {}, omit, {}, omit } // m_tuple( // "fclnzj22sbtoxpj", // { basic := omit, elem_list := { v_location_info } } // ) ) } ) ) Loading Loading @@ -2463,7 +2454,7 @@ module AtsPSAP_TestCases { ))))) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue successfully ***"); log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -2567,7 +2558,7 @@ module AtsPSAP_TestCases { ))))) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue successfully ***"); log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -2728,7 +2719,7 @@ module AtsPSAP_TestCases { ))))) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": INFO: IUT successfully de-registers from ESRP dequeue successfully ***"); log("*** " & testcasename() & ": INFO: IUT successfully de-registers from ESRP dequeue ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { Loading @@ -2745,10 +2736,107 @@ module AtsPSAP_TestCases { group HELD { testcase TC_PSAP_HELD_BV_01() runs on HttpComponent system TestAdapter { // Local variables var HttpMessage v_request; // Test control if ((not PICS_PSAP_S_HELD)) { log("*** " & testcasename() & ": PICS_PSAP_S_HELD required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_checkUserInfo("Trigger HELD request", 30.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_request( mw_http_request_post( PICS_PSAP_LIS_URI, ?, mw_http_message_body_xml( mw_body_xml_location_request )))) -> value v_request { var HttpMessage v_response; tc_ac.stop; // TODO Send response log("*** " & testcasename() & ": INFO: IUT successfully sends LIS request ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); } } } } // End of group HELD group LoST { testcase TC_PSAP_LoST_BV_01() runs on HttpComponent system TestAdapter { // Local variables var HttpMessage v_request; // Test control if ((not PICS_PSAP_S_LoST)) { log("*** " & testcasename() & ": PICS_PSAP_S_LoST required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_checkUserInfo("Trigger LoST request", 30.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_request( mw_http_request_post( PICS_PSAP_LoST_URI, ?, mw_http_message_body_xml( mw_body_xml_find_service_request( mw_find_service_request ))))) -> value v_request { var HttpMessage v_response; tc_ac.stop; // TODO Send response log("*** " & testcasename() & ": INFO: IUT successfully sends LoST request ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); } } } } // End of group LoST group Security { Loading Loading
ccsrc/Protocols/Sip/sip_codec_headers.cc +147 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,22 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe ::osip_cseq_free(cseq_header); osip_free(hvalue); // Event if (p_msg_header.event().is_present()) { if (encode_event_header(p_msg_header.event(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Event header"); return -1; } } // Expires if (p_msg_header.expires().is_present()) { if (encode_expires_header(p_msg_header.expires(), &p_sip_message) == -1) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Expires header"); return -1; } } // Geolocation if (p_msg_header.geolocation().is_present()) { if (encode_geolocation_header(p_msg_header.geolocation(), &p_sip_message) == -1) { Loading Loading @@ -471,6 +487,22 @@ void sip_codec_headers::decode_headers(const osip_message_t* p_sip_message, LibS p_headers.infoPackage().set_to_omit(); p_headers.inReplyTo().set_to_omit(); LibSip__SIPTypesAndValues::Event event_header; decode_event_header(p_sip_message, event_header); if (event_header.is_value()) { p_headers.event() = event_header; } else { p_headers.event().set_to_omit(); } LibSip__SIPTypesAndValues::Expires expires_header; decode_expires_header(p_sip_message, expires_header); if (expires_header.is_value()) { p_headers.expires() = expires_header; } else { p_headers.expires().set_to_omit(); } LibSip__SIPTypesAndValues::MaxForwards max_forwards_header; decode_max_forwards_header(p_sip_message, max_forwards_header); if (max_forwards_header.is_value()) { Loading Loading @@ -1056,6 +1088,62 @@ int sip_codec_headers::encode_c_seq_header(const LibSip__SIPTypesAndValues::CSeq return 0; } // End of method encode_c_seq_header int sip_codec_headers::encode_event_header(const OPTIONAL<LibSip__SIPTypesAndValues::Event>& p_event, osip_message_t** p_sip_message) { loggers::get_instance().log(">>> sip_codec_headers::encode_event_header"); if (!p_event.is_present()) { return 0; } const LibSip__SIPTypesAndValues::Event& event = static_cast<const LibSip__SIPTypesAndValues::Event&>(*p_event.get_opt_value()); // eventType std::string value(static_cast<const char*>(event.eventType())); loggers::get_instance().log("sip_codec_headers::encode_event_header: eventType: %s", value.c_str()); // eventParam const OPTIONAL<LibSip__Common::SemicolonParam__List>& event_param = event.eventParams(); // TODO Create a method to fill an std::string with SemicolonParam__List if (event_param.is_present()) { const LibSip__Common::SemicolonParam__List& l = static_cast<const LibSip__Common::SemicolonParam__List&>(*event_param.get_opt_value()); int i = 0; do { value += ";"; const LibSip__Common::GenericParam& g = l[i]; value += static_cast<const char*>(g.id()); if (g.paramValue().is_present()) { value += "="; const LibSip__Common::GenValue& v = static_cast<const LibSip__Common::GenValue&>(*g.paramValue().get_opt_value()); if (v.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { value += static_cast<const char*>(v.tokenOrHost()); } else { value += static_cast<const char*>(v.quotedString()); } } i += 1; } while (i < l.lengthof()); } loggers::get_instance().log("sip_codec_headers::encode_event_header: %s", value.c_str()); ::osip_message_set_header((osip_message_t *)*p_sip_message,(const char *)"Event", value.c_str()); return 0; } int sip_codec_headers::encode_expires_header(const OPTIONAL<LibSip__SIPTypesAndValues::Expires>& p_expires, osip_message_t** p_sip_message) { loggers::get_instance().log(">>> sip_codec_headers::encode_expires_header"); if (!p_expires.is_present()) { return 0; } const LibSip__SIPTypesAndValues::Expires& expires = static_cast<const LibSip__SIPTypesAndValues::Expires&>(*p_expires.get_opt_value()); // deltaSec std::string value(static_cast<const char*>(expires.deltaSec())); loggers::get_instance().log("sip_codec_headers::encode_expires_header: %s", value.c_str()); ::osip_message_set_header((osip_message_t *)*p_sip_message,(const char *)"Expires", value.c_str()); return 0; } int sip_codec_headers::encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t** p_from_header) { loggers::get_instance().log(">>> sip_codec_headers::encode_from_header"); Loading Loading @@ -2448,6 +2536,65 @@ void sip_codec_headers::decode_contact_header(const osip_message_t* p_sip_messag loggers::get_instance().log_msg("<<< sip_codec_headers::decode_contact_header: ", p_contact_header); } // End of method decode_contact_header void sip_codec_headers::decode_event_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Event& p_event_header) { loggers::get_instance().log("sip_codec_headers::decode_event_header"); // Sanity checks osip_header_t *dest = nullptr; ::osip_message_header_get_byname(p_sip_message, (const char *)"Event", 0, &dest); // TODO Create osip_message_[g|s]et_event if (dest == nullptr) { loggers::get_instance().warning("sip_codec_headers::decode_event_header: Not found"); return; } loggers::get_instance().log("sip_codec_headers::decode_event_header: hname='%s' : hvalue='%s'\n", dest->hname, dest->hvalue); // FieldName p_event_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("EVENT_E")); // EventType std::string str(dest->hvalue); size_t p1 = str.find("<"); size_t p2 = str.find(">"); size_t p3 = str.find(";"); std::string u = str.substr(p1 + 1, p2 - p1 - 1); loggers::get_instance().log("sip_codec_headers::decode_event_header: u='%s'\n", u.c_str()); p_event_header.eventType() = CHARSTRING(u.c_str()); // eventParam if (p3 != std::string::npos) { std::string p = str.substr(p3 + 1); loggers::get_instance().log("sip_codec_headers::decode_event_header: p='%s'\n", p.c_str()); LibSip__Common::SemicolonParam__List params; decode_semi_colon_params(p.c_str(), params); if (params.is_bound()) { p_event_header.eventParams() = OPTIONAL<LibSip__Common::SemicolonParam__List>(params); } else { p_event_header.eventParams().set_to_omit(); } } else { p_event_header.eventParams().set_to_omit(); } } // End of method decode_event_header void sip_codec_headers::decode_expires_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Expires& p_expires_header) { loggers::get_instance().log("sip_codec_headers::decode_expires_header"); // Sanity checks osip_header_t *dest = nullptr; ::osip_message_header_get_byname(p_sip_message, (const char *)"Expires", 0, &dest); // TODO Create osip_message_[g|s]et_expires if (dest == nullptr) { loggers::get_instance().warning("sip_codec_headers::decode_expires_header: Not found"); return; } loggers::get_instance().log("sip_codec_headers::decode_expires_header: hname='%s' : hvalue='%s'\n", dest->hname, dest->hvalue); // FieldName p_expires_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("EXPIRES_E")); // DeltaSec std::string str(dest->hvalue); p_expires_header.deltaSec() = CHARSTRING(str.c_str()); } // End of method decode_expires_header void sip_codec_headers::decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) { loggers::get_instance().log("sip_codec_headers::decode_from_header"); Loading
ccsrc/Protocols/Sip/sip_codec_headers.hh +6 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ namespace LibSip__SIPTypesAndValues { class ContentLength; class ContentType; class CSeq; class Event; class Expires; class From; class Geolocation; class GeolocationRouting; Loading Loading @@ -52,6 +54,8 @@ public: virtual int encode_content_length_header(const LibSip__SIPTypesAndValues::ContentLength& p_contact, osip_content_length_t** p_content_length_header); virtual int encode_content_type_header(const LibSip__SIPTypesAndValues::ContentType& p_contact, osip_content_type_t** p_content_type_header); virtual int encode_c_seq_header(const LibSip__SIPTypesAndValues::CSeq& p_c_seq, osip_cseq_t** p_c_seq_header); virtual int encode_event_header(const OPTIONAL<LibSip__SIPTypesAndValues::Event>& p_event, osip_message_t** p_sip_message); virtual int encode_expires_header(const OPTIONAL<LibSip__SIPTypesAndValues::Expires>& p_expires, osip_message_t** p_sip_message); virtual int encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t** p_from_header); virtual int encode_geolocation_header(const OPTIONAL<LibSip__SIPTypesAndValues::Geolocation>& p_geolocation, osip_message_t** p_sip_message); virtual int encode_geolocation_routing_header(const OPTIONAL<LibSip__SIPTypesAndValues::GeolocationRouting>& p_geolocation, osip_message_t** p_sip_message); Loading Loading @@ -87,6 +91,8 @@ public: virtual void decode_content_type_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentType& p_content_type_header); virtual void decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header); virtual void decode_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Contact& p_contact_header); virtual void decode_event_header(const osip_message_t* p_sip_event, LibSip__SIPTypesAndValues::Event& p_event_header); virtual void decode_expires_header(const osip_message_t* p_sip_expires, LibSip__SIPTypesAndValues::Expires& p_expires_header); virtual void decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); virtual void decode_geolocation_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Geolocation& p_geolocation_header); virtual void decode_geolocation_routing_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::GeolocationRouting& p_geolocation_routing_header); Loading
ttcn/AtsLIS/AtsLIS_Pics.ttcn +1 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ module AtsLIS_Pics { /** * @desc HTTP post URI for LIS protocol */ modulepar charstring PICS_LIS_URI := "/"; modulepar charstring PICS_PSAP_LIS_URI := "/"; /** Loading
ttcn/AtsPSAP/AtsPSAP_Pics.ttcn +20 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,26 @@ module AtsPSAP_Pics { */ modulepar boolean PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION := true; /** * @desc Does the IUT support HELD protocol */ modulepar boolean PICS_PSAP_S_HELD := true; /** * @desc Does the IUT support LoST protocol */ modulepar boolean PICS_PSAP_S_LoST := true; /** * @desc HTTP post URI for LIS protocol */ modulepar charstring PICS_PSAP_LIS_URI := "/"; /** * @desc HTTP post URI for LIS protocol */ modulepar charstring PICS_PSAP_LoST_URI := "/"; /** * @desc URI to ESRP Dequeue Registration web service */ Loading
ttcn/AtsPSAP/AtsPSAP_TestCases.ttcn +111 −23 Original line number Diff line number Diff line Loading @@ -886,23 +886,14 @@ module AtsPSAP_TestCases { m_presence( PX_PRESENCE_USER, { //tuple_list { m_tuple( "0ehvxv4kxwrzzbp", { omit, m_geopriv({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }, m_LocPolicyType), { } }, {}, omit, {}, omit } // m_tuple( // "fclnzj22sbtoxpj", // { basic := omit, elem_list := { v_location_info } } // ) ) } ) ) Loading Loading @@ -2463,7 +2454,7 @@ module AtsPSAP_TestCases { ))))) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue successfully ***"); log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -2567,7 +2558,7 @@ module AtsPSAP_TestCases { ))))) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue successfully ***"); log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue ***"); f_selfOrClientSyncAndVerdictPreamble(c_tbDone, e_success); } [] tc_ac.timeout { Loading Loading @@ -2728,7 +2719,7 @@ module AtsPSAP_TestCases { ))))) -> value v_response { tc_ac.stop; log("*** " & testcasename() & ": INFO: IUT successfully de-registers from ESRP dequeue successfully ***"); log("*** " & testcasename() & ": INFO: IUT successfully de-registers from ESRP dequeue ***"); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); } [] tc_ac.timeout { Loading @@ -2745,10 +2736,107 @@ module AtsPSAP_TestCases { group HELD { testcase TC_PSAP_HELD_BV_01() runs on HttpComponent system TestAdapter { // Local variables var HttpMessage v_request; // Test control if ((not PICS_PSAP_S_HELD)) { log("*** " & testcasename() & ": PICS_PSAP_S_HELD required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_checkUserInfo("Trigger HELD request", 30.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_request( mw_http_request_post( PICS_PSAP_LIS_URI, ?, mw_http_message_body_xml( mw_body_xml_location_request )))) -> value v_request { var HttpMessage v_response; tc_ac.stop; // TODO Send response log("*** " & testcasename() & ": INFO: IUT successfully sends LIS request ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); } } } } // End of group HELD group LoST { testcase TC_PSAP_LoST_BV_01() runs on HttpComponent system TestAdapter { // Local variables var HttpMessage v_request; // Test control if ((not PICS_PSAP_S_LoST)) { log("*** " & testcasename() & ": PICS_PSAP_S_LoST required for executing the TC ***"); setverdict(inconc); stop; } // Test component configuration f_cf_01_http_up(); // Test adapter configuration // Preamble f_checkUserInfo("Trigger LoST request", 30.0); f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); // Test Body tc_ac.start; alt { [] httpPort.receive( mw_http_request( mw_http_request_post( PICS_PSAP_LoST_URI, ?, mw_http_message_body_xml( mw_body_xml_find_service_request( mw_find_service_request ))))) -> value v_request { var HttpMessage v_response; tc_ac.stop; // TODO Send response log("*** " & testcasename() & ": INFO: IUT successfully sends LoST request ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); } [] tc_ac.timeout { log("*** " & testcasename() & ": INCONC: Expected message not received ***"); f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); } } } } // End of group LoST group Security { Loading