📄 testsdp.cxx
字号:
#include "rutil/Logger.hxx"#include "rutil/DataStream.hxx"#include "resip/stack/SdpContents.hxx"#include "resip/stack/HeaderFieldValue.hxx"#include "rutil/ParseBuffer.hxx"#include <iostream>#include "TestSupport.hxx"#include "tassert.h"using namespace resip;using namespace std;#define RESIPROCATE_SUBSYSTEM Subsystem::TESTintmain(int argc, char* argv[]){ Log::Level l = Log::Debug; if (argc > 1) { switch(*argv[1]) { case 'd': l = Log::Debug; break; case 'i': l = Log::Info; break; case 's': l = Log::Stack; break; case 'c': l = Log::Crit; break; } } Log::initialize(Log::Cout, l, argv[0]); CritLog(<<"Test Driver Starting"); { Data txt("v=0\r\n" "o=- 333525334858460 333525334858460 IN IP4 192.168.0.156\r\n" "s=test123\r\n" "c=IN IP4 192.168.0.156\r\n" "t=4058038202 0\r\n" "m=audio 41466 RTP/AVP 0 101\r\n" "a=ptime:20\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-11\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); assert(sdp.session().media().size() == 1); resip::SdpContents::Session::Codec testCodec("PCMU", 8000, "", "1"); for (std::list<resip::SdpContents::Session::Medium>::const_iterator i = sdp.session().media().begin(); i != sdp.session().media().end(); i++) { const std::list<resip::SdpContents::Session::Codec> &codecs = i->codecs(); assert(testCodec == codecs.front()); } //assert(sdp.session.getAttributes().count == 2); CritLog(<< "ftmp test: " << sdp); } exit(0); { Data txt("v=0\r\n" "o=- 333525334858460 333525334858460 IN IP4 192.168.0.156\r\n" "s=test123\r\n" "e=unknown@invalid.net\r\n" "p=+972 683 1000\r\n" "t=4058038202 0\r\n" "m=audio 41466 RTP/AVP 0 101\r\n" "c=IN IP4 192.168.0.156\r\n" "a=fmtp:101 0-11\r\n" "a=ptime:20\r\n" "a=rtpmap:101 telephone-event/8000\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); assert(sdp.session().getPhones().size() == 1); assert(sdp.session().getEmails().size() == 1); assert(Data::from(sdp) == txt); CritLog(<< "Email + Phone Test Ok"); } { Data txt("v=0\r\n" "o=ViPr 1 1 IN IP4 72.29.231.47\r\n" "s=eyeBeam\r\n" "i=\"q2\"<sip:q2@host1.marc.sipit.net>\r\n" "e=NoEmail@NoEmail.com\r\n" "t=0 0\r\n" "a=X-app:ViPr 11 ViPrTerminal\r\n" "a=X-GUID:4a8f41cc8a50_72.29.231.47_\r\n" "a=X-CollabStatus: CollabState_Idle\r\n" "m=audio 50958 RTP/AVP 0\r\n" "i=\"q2\"<sip:q2@host1.marc.sipit.net>\r\n" "c=IN IP4 72.29.231.47\r\n" "a=rtpmap:0 PCMU/8000/1\r\n" "a=sendrecv\r\n" "a=X-app:ViPr 11 ViPrTerminal\r\n" "m=video 0 RTP/AVP 32\r\n" "c=IN IP4 72.29.231.47\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); CritLog ( << sdp.session().media().size()); assert(sdp.session().media().size() == 2); CritLog(<< "Marconi Test Ok"); } { Data txt("v=0\r\n" "o=ff_AT_tye.idv.tw 170748954 170754822 IN IP4 202.5.224.96\r\n" "s=X-Lite\r\n" "c=IN IP4 202.5.224.96\r\n" "t=0 0\r\n" "m=audio 12000 RTP/AVP 98 101\r\n" "a=fmtp:101 0-15\r\n" "a=rtpmap:98 iLBC/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); assert(sdp.session().connection().getAddress() == "202.5.224.96"); assert(sdp.session().media().front().port() == 12000); assert(sdp.session().media().front().getValues("fmtp").front() == "101 0-15"); assert(sdp.session().media().front().getValues("rtpmap").front() == "98 iLBC/8000"); assert(*++sdp.session().media().front().getValues("rtpmap").begin() == "101 telephone-event/8000"); assert(sdp.session().media().front().codecs().front().getName() == "iLBC"); CritLog(<< "Ok"); } //exit(0); { Data txt("v=0\r\n" "o=CiscoSystemsSIP-GW-UserAgent 2087 3916 IN IP4 64.124.66.33\r\n" "s=SIP Call\r\n" "c=IN IP4 64.124.66.33\r\n" "t=0 0\r\n" "m=audio 12004 RTP/AVP 0 19\r\n" "c=IN IP4 64.124.66.33\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:19 CN/8000\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); assert(sdp.session().connection().getAddress() == "64.124.66.33"); assert(sdp.session().media().front().port() == 12004); } { Data txt("v=0\r\n" "o=1900 369696545 369696545 IN IP4 192.168.2.15\r\n" "s=X-Lite\r\n" "c=IN IP4 192.168.2.15\r\n" "t=0 0\r\n" "m=audio 8000 RTP/AVP 8 3 98 97 101\r\n" "a=rtpmap:8 pcma/8000\r\n" "a=rtpmap:3 gsm/8000\r\n" "a=rtpmap:98 iLBC\r\n" "a=rtpmap:97 speex/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-15\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); assert(sdp.session().media().front().codecs().size() == 4); } { Data txt("v=0\r\n" "o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com\r\n" "s=-\r\n" "c=IN IP4 pc33.atlanta.com\r\n" "t=0 0\r\n" "m=audio 3456 RTP/AVP 0 1 3 99\r\n" "a=rtpmap:0 PCMU/8000\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); HeaderFieldValue hfv2(txt.data(), txt.size()); SdpContents sdp2(&hfv2, type); sdp.session(); sdp2.session(); Data sdpO = Data::from(sdp); sdp = sdp2; Data sdpO2 = Data::from(sdp); cerr << "!! " << sdp << endl; assert(sdpO == sdpO2); } tassert_init(4); { Data txt("v=0\r\n" "o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com\r\n" "s=-\r\n" "c=IN IP4 pc33.atlanta.com\r\n" "t=0 0\r\n" "m=audio 3456 RTP/AVP 0 1 3 99\r\n" "a=rtpmap:0 PCMU/8000\r\n"); HeaderFieldValue hfv(txt.data(), txt.size()); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); tassert_reset(); tassert(sdp.session().version() == 0); tassert(sdp.session().origin().user() == "alice"); tassert(!sdp.session().media().empty()); //this fails, but should probably not parse(t before c not in sdp) tassert(sdp.session().media().front().getValues("rtpmap").front() == "0 PCMU/8000"); tassert_verify(1); } { const char* txt = ("v=0\r\n" "o=UserA 2890844526 2890844527 IN IP4 here.com\r\n" "s=Session SDP\r\n" "c=IN IP4 pc33.atlanta.com\r\n" "t=5 17\r\n" "m=audio 49172 RTP/AVP 0\r\n" "a=rtpmap:0 PCMU/8000\r\n" "\r\n"); HeaderFieldValue hfv(txt, strlen(txt)); Mime type("application", "sdp"); SdpContents sdp(&hfv, type); tassert_reset(); tassert(sdp.session().version() == 0); tassert(sdp.session().origin().user() == "UserA"); tassert(sdp.session().origin().getSessionId() == 2890844526UL); tassert(sdp.session().origin().getVersion() == 2890844527UL); tassert(sdp.session().origin().getAddressType() == SdpContents::IP4); tassert(sdp.session().origin().getAddress() == "here.com"); tassert(sdp.session().name() == "Session SDP"); tassert(sdp.session().connection().getAddressType() == SdpContents::IP4); tassert(sdp.session().connection().getAddress() == "pc33.atlanta.com"); tassert(sdp.session().connection().ttl() == 0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -