⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 siptorturetests.cxx

📁 这是国外的resip协议栈
💻 CXX
📖 第 1 页 / 共 3 页
字号:
#include <iostream>#include <memory>#include "TestSupport.hxx"#include "resip/stack/Contents.hxx"#include "resip/stack/SdpContents.hxx"#include "resip/stack/SipMessage.hxx"#include "resip/stack/ExtensionHeader.hxx"#include "resip/stack/Uri.hxx"#include "rutil/Logger.hxx"#include "tassert.h"using namespace resip;using namespace std;#define RESIPROCATE_SUBSYSTEM Subsystem::TEST#define BUGTRAILINGSPACE " "void test1(){  CritLog(<< "2.1 INVITE Parser Torture Test Message" );            const char *txt = ("INVITE sip:called@called-company.com SIP/2.0\r\n"                   "TO :\r\n"                   " sip:called@called-company.com ;       tag      = 1918181833n\r\n"                   "From     : \"Caller Name \\\\\\\"\" <sip:caller@caller-company.com>\r\n"                   "  ;\r\n"                   "  tag = 98asjd8\r\n"                   "Max-Forwards: 8\r\n"                   "Call-ID: 0ha0isndaksdj@10.0.0.1\r\n"                   "Date: Mon, 02 Jun 1982 08:21:11 GMT\r\n"                   "CSeq: 8\r\n"                   "   INVITE\r\n"                   "Via  : SIP  /   2.0\r\n"                    " /UDP\r\n"                    "    135.180.130.133;branch=z9hG4bKkdjuw\r\n"                    "Subject : \r\n"                   "NewFangledHeader:   newfangled value\r\n"                    " more newfangled value \r\n"                    "Content-Type: application/sdp \r\n"                    "v:  SIP  / 2.0  / TCP     1192.168.156.222   ;\r\n"                    "  branch  =   9ikj8  , \r\n"                   " SIP  /    2.0   / UDP  192.168.255.111   ; hidden\r\n"                    "m:\"Quoted string\\\"\\\"\"<sip:caller@caller-company.com>; newparam =\r\n"                    " newvalue ;\r\n"                    "  secondparam = secondvalue  ; q = 0.33,\r\n"                    " tel:4443322 \r\n"                   "\r\n"                   "v=0\r\n"                    "o=mhandley 29739 7272939 IN IP4 126.5.4.3 \r\n"                   "s=-\r\n"                    "c=IN IP4 135.180.130.88 \r\n"                   "t=0 0 \r\n"                   "m=audio 492170 RTP/AVP 0 12 \r\n"                   "m=video 3227 RTP/AVP 31 \r\n"                   "a=rtpmap:31 LPC \r\n\r\n");      SipMessage* msg = TestSupport::makeMessage(txt);            tassert_reset();      tassert(msg);      auto_ptr<SipMessage> message(msg);      tassert(message->isRequest());      tassert(message->isResponse() == false);      tassert(message->exists(h_To));      tassert(message->header(h_To).uri().user() == "called");      tassert(message->header(h_To).uri().host() == "called-company.com");      tassert(message->header(h_To).param(p_tag) == "1918181833n");      tassert(message->exists(h_From));      tassert(message->header(h_From).uri().user() == "caller");      tassert(message->header(h_From).uri().host() == "caller-company.com");      tassert(message->header(h_From).param(p_tag) == "98asjd8");      tassert(message->exists(h_MaxForwards));      tassert(message->header(h_MaxForwards).value() == 8);      tassert(message->header(h_MaxForwards).exists(p_tag) == false);      // !ah! compact headers not working.      // skip if ''not present'' -- actually check by unknown hdr... :-)      if (message->exists(h_Contacts))      {                tassert(message->exists(h_Contacts) == true);        tassert(message->header(h_Contacts).empty() == false);        tassert(message->header(h_Contacts).front().uri().user() == "caller");        tassert(message->header(h_Contacts).front().uri().host() == "caller-company.com");        tassert(message->header(h_Contacts).front().uri().port() == 0);              }      else      {         CritLog(<<"TODO: Compact headers .. doing by unknown interface!!");         tassert(message->exists(h_Contacts) == false);         tassert(message->exists(ExtensionHeader("m")) == true);         tassert(message->header(ExtensionHeader("m")).empty() == false);         //!ah! temporary until compact headers fixed.         tassert(message->header(ExtensionHeader("m")).front().value() ==                  "\"Quoted string\\\"\\\"\"<sip:caller@caller-company.com>;"                 " newparam =   newvalue ;    secondparam = secondvalue  ; q"                 " = 0.33,   tel:4443322 ");      }      tassert(message->exists(h_CallId));      tassert(message->header(h_CallId).value() == "0ha0isndaksdj@10.0.0.1");      tassert(message->exists(h_CSeq));      tassert(message->header(h_CSeq).sequence() == 8);      tassert(message->header(h_CSeq).method() == INVITE);      tassert(message->exists(h_Vias));      tassert(message->header(h_Vias).empty() == false);      tassert(message->header(h_Vias).front().protocolName() == "SIP");      tassert(message->header(h_Vias).front().protocolVersion() == "2.0");      tassert(message->header(h_Vias).front().transport() == "UDP");      tassert(message->header(h_Vias).front().sentHost() == "135.180.130.133");      tassert(message->header(h_Vias).front().sentPort() == 0);      tassert(message->header(h_Vias).front().exists(p_branch));      tassert(message->header(h_Vias).front().param(p_branch).hasMagicCookie());      tassert(message->header(h_Vias).front().param(p_branch).getTransactionId() == "kdjuw");      tassert(message->exists(h_Subject));      tassert(message->header(h_Subject).value().empty());      tassert(message->exists(ExtensionHeader("NewFangledHeader")));      tassert(message->header(ExtensionHeader("NewFangledHeader")).front().value() == "newfangled value   more newfangled value"BUGTRAILINGSPACE);      //TODO: Need to check the ContentType header value      tassert(message->exists(h_ContentType));      CritLog(<<"TODO:Check content type"); // << *message);      tassert_verify(1);   }   void 	   test2()   {      CritLog( << "2.2 INVITE with Proxy-Require and Require");             const char *txt = ("INVITE sip:called@called-company.com SIP/2.0\r\n"                   "To: sip:called@called-company.com\r\n"                   "From: sip:caller@caller-company.com;tag=242etr\r\n"                   "Max-Forwards: 6\r\n"                   "Call-ID: 0ha0isndaksdj@10.0.0.1\r\n"                   "Require: newfeature1, newfeature2\r\n"                   "Proxy-Require: newfeature3, newfeature4\r\n"                    "CSeq: 8 INVITE\r\n"                   "Via: SIP/2.0/UDP 135.180.130.133;branch=z9hG4bKkdjuw\r\n\r\n");      auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));      tassert_reset();            tassert(message->isRequest());      tassert(message->isResponse() == false);      tassert(message->exists(h_To));      tassert(message->header(h_To).uri().user() == "called");      tassert(message->header(h_To).uri().host() == "called-company.com");      tassert(!message->header(h_To).exists(p_tag));      tassert(message->exists(h_From));      tassert(message->header(h_From).uri().user() == "caller");      tassert(message->header(h_From).uri().host() == "caller-company.com");      tassert(message->header(h_From).exists(p_tag));      tassert(message->header(h_From).param(p_tag) == "242etr");      tassert(message->exists(h_MaxForwards));      tassert(message->header(h_MaxForwards).value() == 6);      tassert(message->header(h_MaxForwards).exists(p_tag) == false);      tassert(message->exists(h_Contacts) == false);      tassert(message->exists(h_CallId));      tassert(message->header(h_CallId).value() == "0ha0isndaksdj@10.0.0.1");      //TODO: Check Values      CritLog(<<"TODO: Check values h_Requires");      tassert(message->exists(h_Requires));      //TODO: Check values      CritLog(<<"TODO: Check values h_ProxyRequires");      tassert(message->exists(h_ProxyRequires));      tassert(message->exists(h_CSeq));      tassert(message->header(h_CSeq).sequence() == 8);      tassert(message->header(h_CSeq).method() == INVITE);      tassert(message->exists(h_Vias));      tassert(message->header(h_Vias).empty() == false);      tassert(message->header(h_Vias).front().protocolName() == "SIP");      tassert(message->header(h_Vias).front().protocolVersion() == "2.0");      tassert(message->header(h_Vias).front().transport() == "UDP");      tassert(message->header(h_Vias).front().sentHost() == "135.180.130.133");      tassert(message->header(h_Vias).front().sentPort() == 0);      tassert(message->header(h_Vias).front().exists(p_branch));      // !ah! -- transaction id DOES NOT include the magic cookie      // (removed z9hG4bK)      tassert(message->header(h_Vias).front().param(p_branch).getTransactionId() == "kdjuw");      tassert_verify(2);   }void test3(){       CritLog( << "2.3 INVITE with Unknown Schemes in URIs");                   const char *txt = ("INVITE name:John_Smith SIP/2.0\r\n"                   "To: isbn:2983792873\r\n"                   "From: <sip:www.cs.columbia.edu>;tag=3234233\r\n" // was http//                   "Call-ID: 0ha0isndaksdj@10.0.0.1\r\n"                   "CSeq: 8 INVITE\r\n"                   "Max-Forwards: 7\r\n"                   "Via: SIP/2.0/UDP 135.180.130.133;branch=z9hG4bKkdjuw\r\n"                   "Content-Type: application/sdp\r\n"                    "\r\n"                   "v=0\r\n"                    "o=mhandley 29739 7272939 IN IP4 126.5.4.3 \r\n"                   "s=- \r\n"                   "c=IN IP4 135.180.130.88 \r\n"                   "t=0 0\r\n"                   "m=audio 492170 RTP/AVP 0 12 \r\n"                   "m=video 3227 RTP/AVP 31 \r\n"                   "a=rtpmap:31 LPC \r\n\r\n");      auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));            tassert(message->isRequest());      tassert(message->isResponse() == false);      // !ah! this will assert(0) in Uri.cxx -- so let's skip this for now      CritLog(<<"TODO: fix generic Uri handling.");      tassert_push();      tassert(message->header(h_RequestLine).getSipVersion() == "SIP/2.0");      tassert_pop();            tassert(message->exists(h_To));      tassert(!message->header(h_To).exists(p_tag));      tassert(message->exists(h_From));      tassert(message->header(h_From).param(p_tag) == "3234233");      tassert(message->exists(h_CallId));      tassert(message->header(h_CallId).value() == "0ha0isndaksdj@10.0.0.1");      tassert(message->exists(h_CSeq));      tassert(message->header(h_CSeq).sequence() == 8);      tassert(message->header(h_CSeq).method() == INVITE);      tassert(message->exists(h_MaxForwards));      tassert(message->header(h_MaxForwards).value() == 7);      tassert(message->header(h_MaxForwards).exists(p_tag) == false);      tassert(message->exists(h_Contacts) == false);      tassert(message->exists(h_Vias));      tassert(message->header(h_Vias).empty() == false);      tassert(message->header(h_Vias).front().protocolName() == "SIP");      tassert(message->header(h_Vias).front().protocolVersion() == "2.0");      tassert(message->header(h_Vias).front().transport() == "UDP");      tassert(message->header(h_Vias).front().sentHost() == "135.180.130.133");      tassert(message->header(h_Vias).front().sentPort() == 0);      tassert(message->header(h_Vias).front().exists(p_branch));      tassert(message->header(h_Vias).front().param(p_branch).getTransactionId() == "kdjuw");      //TODO: Check value       CritLog(<<"TODO: Check value of ContentType");      tassert(message->exists(h_ContentType));      tassert_verify(3);         }void test4(){      CritLog( << "2.4 REGISTER with Y2038 Test (This tests for Absolute Time in Expires)");             const char *txt = ("REGISTER sip:company.com SIP/2.0\r\n"                   "To: sip:user@company.com\r\n"                   "From: sip:user@company.com;tag=3411345\r\n"                   "Max-Forwards: 8\r\n"                   "Contact: sip:user@host.company.com\r\n"                   "Call-ID: 0ha0isndaksdj@10.0.0.1\r\n"                   "CSeq: 8 REGISTER\r\n"                   "Via: SIP/2.0/UDP 135.180.130.133;branch=z9hG4bKkdjuw\r\n"                   "Expires: Sat, 01 Dec 2040 16:00:00 GMT\r\n\r\n");      auto_ptr<SipMessage> message(TestSupport::makeMessage(txt));      tassert_reset();            tassert(message->isRequest());      tassert(message->isResponse() == false);      tassert(message->header(h_RequestLine).getSipVersion() == "SIP/2.0");      tassert(message->exists(h_To));      tassert(message->header(h_To).uri().user() == "user");      tassert(message->header(h_To).uri().host() == "company.com");      tassert(!message->header(h_To).exists(p_tag));      tassert(message->exists(h_From));      tassert(message->header(h_From).uri().user() == "user");      tassert(message->header(h_From).uri().host() == "company.com");      tassert(message->header(h_From).exists(p_tag));      tassert(message->header(h_From).param(p_tag) == "3411345");      tassert(message->exists(h_MaxForwards));      tassert(message->header(h_MaxForwards).value() == 8);      tassert(message->header(h_MaxForwards).exists(p_tag) == false);      tassert(message->exists(h_Contacts));      tassert(message->header(h_Contacts).empty() == false);      tassert(message->header(h_Contacts).front().uri().user() == "user");      tassert(message->header(h_Contacts).front().uri().host() == "host.company.com");      tassert(message->header(h_Contacts).front().uri().port() == 0);      tassert(message->exists(h_CallId));      tassert(message->header(h_CallId).value() == "0ha0isndaksdj@10.0.0.1");      tassert(message->exists(h_CSeq));      tassert(message->header(h_CSeq).sequence() == 8);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -