📄 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::TEST
int
main(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);
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(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);
tassert(sdp.session().getTimes().front().getStart() == 5);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -