--- a/media/webrtc/signaling/gtest/sdp_unittests.cpp
+++ b/media/webrtc/signaling/gtest/sdp_unittests.cpp
@@ -13,30 +13,33 @@
#include "gtest/gtest.h"
#include "nspr.h"
#include "nss.h"
#include "ssl.h"
#include "nsThreadUtils.h"
+#include "signaling/src/sdp/RsdparsaSdpParser.h"
#include "signaling/src/sdp/SipccSdpParser.h"
#include "signaling/src/sdp/SdpMediaSection.h"
#include "signaling/src/sdp/SdpAttribute.h"
extern "C" {
#include "signaling/src/sdp/sipcc/sdp.h"
#include "signaling/src/sdp/sipcc/sdp_private.h"
}
#ifdef CRLF
#undef CRLF
#endif
#define CRLF "\r\n"
+#define SKIP_TEST_WITH_RUST_PARSER if (!::testing::get<1>(GetParam())) {return;}
+
using namespace mozilla;
namespace test {
class SdpTest : public ::testing::Test {
public:
SdpTest() : sdp_ptr_(nullptr) {
}
@@ -1495,66 +1498,75 @@ TEST_F(SdpTest, parseIceLite) {
"t=0 0\r\n"
"a=ice-lite\r\n";
ParseSdp(sdp);
ASSERT_TRUE(sdp_attr_is_present(sdp_ptr_, SDP_ATTR_ICE_LITE,
SDP_SESSION_LEVEL, 0));
}
class NewSdpTest : public ::testing::Test,
- public ::testing::WithParamInterface<bool> {
+ public ::testing::WithParamInterface<
+ ::testing::tuple<bool, bool> > {
public:
NewSdpTest() {}
void ParseSdp(const std::string &sdp, bool expectSuccess = true) {
- mSdp = mozilla::Move(mParser.Parse(sdp));
+ if (::testing::get<1>(GetParam())) {
+ mSdpErrorHolder = &mSipccParser;
+ mSdp = mozilla::Move(mSipccParser.Parse(sdp));
+ } else {
+ mSdpErrorHolder = &mRustParser;
+ mSdp = mozilla::Move(mRustParser.Parse(sdp));
+ }
// Are we configured to do a parse and serialize before actually
// running the test?
- if (GetParam()) {
+ if (::testing::get<0>(GetParam())) {
std::stringstream os;
if (expectSuccess) {
ASSERT_TRUE(!!mSdp) << "Parse failed on first pass: "
<< GetParseErrors();
}
if (mSdp) {
// Serialize and re-parse
mSdp->Serialize(os);
- mSdp = mozilla::Move(mParser.Parse(os.str()));
+ if (::testing::get<1>(GetParam())) {
+ mSdp = mozilla::Move(mSipccParser.Parse(os.str()));
+ } else {
+ mSdp = mozilla::Move(mRustParser.Parse(os.str()));
+ }
// Whether we expected the parse to work or not, it should
// succeed the second time if it succeeded the first.
ASSERT_TRUE(!!mSdp) << "Parse failed on second pass, SDP was: "
<< std::endl << os.str() << std::endl
<< "Errors were: " << GetParseErrors();
// Serialize again and compare
std::stringstream os2;
mSdp->Serialize(os2);
ASSERT_EQ(os.str(), os2.str());
}
}
if (expectSuccess) {
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
- ASSERT_EQ(0U, mParser.GetParseErrors().size())
+ ASSERT_EQ(0U, mSdpErrorHolder->GetParseErrors().size())
<< "Got unexpected parse errors/warnings: "
<< GetParseErrors();
}
}
// For streaming parse errors
std::string GetParseErrors() const {
std::stringstream output;
- for (auto e = mParser.GetParseErrors().begin();
- e != mParser.GetParseErrors().end();
- ++e) {
- output << e->first << ": " << e->second << std::endl;
+ for (auto e: mSdpErrorHolder->GetParseErrors()) {
+ output << e.first << ": " << e.second << std::endl;
}
return output.str();
}
void CheckRtpmap(const std::string& expected_pt,
SdpRtpmapAttributeList::CodecType codec,
const std::string& name,
uint32_t clock,
@@ -1612,54 +1624,56 @@ class NewSdpTest : public ::testing::Tes
void CheckSerialize(const std::string& expected,
const SdpAttribute& attr) const {
std::stringstream str;
attr.Serialize(str);
ASSERT_EQ(expected, str.str());
}
- SipccSdpParser mParser;
+ SdpErrorHolder* mSdpErrorHolder;
+ SipccSdpParser mSipccParser;
+ RsdparsaSdpParser mRustParser;
mozilla::UniquePtr<Sdp> mSdp;
}; // class NewSdpTest
TEST_P(NewSdpTest, CreateDestroy) {
}
TEST_P(NewSdpTest, ParseEmpty) {
ParseSdp("", false);
ASSERT_FALSE(mSdp);
- ASSERT_NE(0U, mParser.GetParseErrors().size())
+ ASSERT_NE(0U, mSdpErrorHolder->GetParseErrors().size())
<< "Expected at least one parse error.";
}
const std::string kBadSdp = "This is SDPARTA!!!!";
TEST_P(NewSdpTest, ParseGarbage) {
ParseSdp(kBadSdp, false);
ASSERT_FALSE(mSdp);
- ASSERT_NE(0U, mParser.GetParseErrors().size())
+ ASSERT_NE(0U, mSdpErrorHolder->GetParseErrors().size())
<< "Expected at least one parse error.";
}
TEST_P(NewSdpTest, ParseGarbageTwice) {
ParseSdp(kBadSdp, false);
ASSERT_FALSE(mSdp);
- size_t errorCount = mParser.GetParseErrors().size();
+ size_t errorCount = mSdpErrorHolder->GetParseErrors().size();
ASSERT_NE(0U, errorCount)
<< "Expected at least one parse error.";
ParseSdp(kBadSdp, false);
ASSERT_FALSE(mSdp);
- ASSERT_EQ(errorCount, mParser.GetParseErrors().size())
+ ASSERT_EQ(errorCount, mSdpErrorHolder->GetParseErrors().size())
<< "Expected same error count for same SDP.";
}
TEST_P(NewSdpTest, ParseMinimal) {
ParseSdp(kVideoSdp);
- ASSERT_EQ(0U, mParser.GetParseErrors().size()) <<
+ ASSERT_EQ(0U, mSdpErrorHolder->GetParseErrors().size()) <<
"Got parse errors: " << GetParseErrors();
}
TEST_P(NewSdpTest, CheckOriginGetUsername) {
ParseSdp(kVideoSdp);
ASSERT_EQ("-", mSdp->GetOrigin().GetUsername())
<< "Wrong username in origin";
}
@@ -1766,16 +1780,17 @@ TEST_P(NewSdpTest, CheckMediaSectionGetM
ParseSdp(kVideoSdp);
ASSERT_EQ(0U, mSdp->GetMediaSection(0).GetBandwidth("CT"))
<< "Wrong bandwidth in media section";
}
TEST_P(NewSdpTest, CheckMediaSectionGetBandwidth) {
ParseSdp("v=0\r\n"
"o=- 4294967296 2 IN IP4 127.0.0.1\r\n"
+ "s=SIP Call\r\n"
"c=IN IP4 198.51.100.7\r\n"
"t=0 0\r\n"
"m=video 56436 RTP/SAVPF 120\r\n"
"b=CT:1000\r\n"
"a=rtpmap:120 VP8/90000\r\n");
ASSERT_EQ(1000U, mSdp->GetMediaSection(0).GetBandwidth("CT"))
<< "Wrong bandwidth in media section";
}
@@ -1875,26 +1890,26 @@ const std::string kBasicAudioVideoOffer
"a=ssrc:1111 foo:bar" CRLF
"a=imageattr:120 send * recv *" CRLF
"a=imageattr:121 send [x=640,y=480] recv [x=640,y=480]" CRLF
"a=simulcast:recv pt=120;121" CRLF
"a=rid:bar recv pt=96;max-width=800;max-height=600" CRLF
"m=audio 9 RTP/SAVPF 0" CRLF
"a=mid:third" CRLF
"a=rtpmap:0 PCMU/8000" CRLF
-"a=ice-lite" CRLF
"a=ice-options:foo bar" CRLF
"a=msid:noappdata" CRLF
"a=bundle-only" CRLF;
TEST_P(NewSdpTest, BasicAudioVideoSdpParse) {
ParseSdp(kBasicAudioVideoOffer);
}
TEST_P(NewSdpTest, CheckRemoveFmtp) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kBasicAudioVideoOffer);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(3U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
SdpAttributeList& audioAttrList = mSdp->GetMediaSection(0).GetAttributeList();
ASSERT_TRUE(audioAttrList.HasAttribute(SdpAttribute::kFmtpAttribute));
@@ -2037,16 +2052,17 @@ TEST_P(NewSdpTest, CheckIdentity) {
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_TRUE(mSdp->GetAttributeList().HasAttribute(
SdpAttribute::kIdentityAttribute));
auto identity = mSdp->GetAttributeList().GetIdentity();
ASSERT_EQ(LONG_IDENTITY, identity) << "Wrong identity assertion";
}
TEST_P(NewSdpTest, CheckDtlsMessage) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432920
ParseSdp(kBasicAudioVideoOffer);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_TRUE(mSdp->GetAttributeList().HasAttribute(
SdpAttribute::kDtlsMessageAttribute));
auto dtls_message = mSdp->GetAttributeList().GetDtlsMessage();
ASSERT_EQ(SdpDtlsMessageAttribute::kClient, dtls_message.mRole)
<< "Wrong dtls-message role";
ASSERT_EQ(BASE64_DTLS_HELLO, dtls_message.mValue)
@@ -2237,16 +2253,17 @@ static const std::string kAudioWithTelep
"a=ptime:20" CRLF
"a=maxptime:20" CRLF
"a=rtpmap:9 G722/8000" CRLF
"a=rtpmap:0 PCMU/8000" CRLF
"a=rtpmap:8 PCMA/8000" CRLF
"a=rtpmap:101 telephone-event/8000" CRLF;
TEST_P(NewSdpTest, CheckTelephoneEventNoFmtp) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
ASSERT_TRUE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kFmtpAttribute));
auto audio_format_params =
@@ -2255,108 +2272,118 @@ TEST_P(NewSdpTest, CheckTelephoneEventNo
// make sure we don't get a fmtp for codec 101
for (size_t i = 0; i < audio_format_params.size(); ++i) {
ASSERT_NE("101", audio_format_params[i].format);
}
}
TEST_P(NewSdpTest, CheckTelephoneEventWithDefaultEvents) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 0-15" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventWithBadCharacter) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 0-5." CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventIncludingCommas) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 0-15,66,67" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
CheckDtmfFmtp("0-15,66,67");
}
TEST_P(NewSdpTest, CheckTelephoneEventComplexEvents) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 0,1,2-4,5-15,66,67" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
CheckDtmfFmtp("0,1,2-4,5-15,66,67");
}
TEST_P(NewSdpTest, CheckTelephoneEventNoHyphen) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 5,6,7" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
CheckDtmfFmtp("5,6,7");
}
TEST_P(NewSdpTest, CheckTelephoneEventOnlyZero) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 0" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
CheckDtmfFmtp("0");
}
TEST_P(NewSdpTest, CheckTelephoneEventOnlyOne) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 1" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
CheckDtmfFmtp("1");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadThreeDigit) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 123" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadThreeDigitWithHyphen) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 0-123" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadLeadingHyphen) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 -12" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
@@ -2368,82 +2395,89 @@ TEST_P(NewSdpTest, CheckTelephoneEventBa
}
TEST_P(NewSdpTest, CheckTelephoneEventBadTrailingHyphenInMiddle) {
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 1,12-,4" CRLF, false);
}
TEST_P(NewSdpTest, CheckTelephoneEventBadLeadingComma) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 ,2,3" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadMultipleLeadingComma) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 ,,,2,3" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadConsecutiveCommas) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 1,,,,,,,,3" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadTrailingComma) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 1,2,3," CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadTwoHyphens) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 1-2-3" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadSixDigit) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 112233" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
}
TEST_P(NewSdpTest, CheckTelephoneEventBadRangeReversed) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kAudioWithTelephoneEvent
+ "a=fmtp:101 33-2" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
// check for the default dtmf tones
CheckDtmfFmtp("0-15");
@@ -2463,16 +2497,17 @@ static const std::string kVideoWithRedAn
"a=rtpmap:120 VP8/90000" CRLF
"a=fmtp:120 max-fs=3600;max-fr=30" CRLF
"a=rtpmap:121 VP9/90000" CRLF
"a=fmtp:121 max-fs=3600;max-fr=30" CRLF
"a=rtpmap:122 red/90000" CRLF
"a=rtpmap:123 ulpfec/90000" CRLF;
TEST_P(NewSdpTest, CheckRedNoFmtp) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kVideoWithRedAndUlpfecSdp);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
ASSERT_TRUE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kFmtpAttribute));
auto video_format_params =
@@ -2481,18 +2516,19 @@ TEST_P(NewSdpTest, CheckRedNoFmtp) {
// make sure we don't get a fmtp for codec 122
for (size_t i = 0; i < video_format_params.size(); ++i) {
ASSERT_NE("122", video_format_params[i].format);
}
}
TEST_P(NewSdpTest, CheckRedEmptyFmtp) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
// if serializing and re-parsing, we expect errors
- if (GetParam()) {
+ if (::testing::get<0>(GetParam())) {
ParseSdp(kVideoWithRedAndUlpfecSdp + "a=fmtp:122" CRLF);
} else {
ParseSdp(kVideoWithRedAndUlpfecSdp + "a=fmtp:122" CRLF, false);
ASSERT_NE(0U, GetParseErrors().size());
}
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
@@ -2506,16 +2542,17 @@ TEST_P(NewSdpTest, CheckRedEmptyFmtp) {
// make sure we don't get a fmtp for codec 122
for (size_t i = 0; i < video_format_params.size(); ++i) {
ASSERT_NE("122", video_format_params[i].format);
}
}
TEST_P(NewSdpTest, CheckRedFmtpWith2Codecs) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kVideoWithRedAndUlpfecSdp + "a=fmtp:122 120/121" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
ASSERT_TRUE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kFmtpAttribute));
auto video_format_params =
@@ -2530,16 +2567,17 @@ TEST_P(NewSdpTest, CheckRedFmtpWith2Code
static_cast<SdpFmtpAttributeList::RedParameters*>(
video_format_params[3].parameters.get()));
ASSERT_EQ(2U, red_parameters->encodings.size());
ASSERT_EQ(120U, red_parameters->encodings[0]);
ASSERT_EQ(121U, red_parameters->encodings[1]);
}
TEST_P(NewSdpTest, CheckRedFmtpWith3Codecs) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kVideoWithRedAndUlpfecSdp + "a=fmtp:122 120/121/123" CRLF);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(1U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
ASSERT_TRUE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kFmtpAttribute));
auto video_format_params =
@@ -2620,20 +2658,20 @@ const std::string kH264AudioVideoOffer =
"a=candidate:6 2 UDP 16515070 162.222.183.171 64941 typ relay raddr 162.222.183.171 rport 64941" CRLF
"a=candidate:6 1 UDP 16515071 162.222.183.171 64800 typ relay raddr 162.222.183.171 rport 64800" CRLF
"a=candidate:2 1 UDP 1694236671 24.6.134.204 59530 typ srflx raddr 10.0.0.36 rport 59530" CRLF
"a=candidate:3 1 UDP 100401151 162.222.183.171 62935 typ relay raddr 162.222.183.171 rport 62935" CRLF
"a=candidate:3 2 UDP 100401150 162.222.183.171 61026 typ relay raddr 162.222.183.171 rport 61026" CRLF
"m=audio 9 RTP/SAVPF 0" CRLF
"a=mid:third" CRLF
"a=rtpmap:0 PCMU/8000" CRLF
-"a=ice-lite" CRLF
"a=msid:noappdata" CRLF;
TEST_P(NewSdpTest, CheckFormatParameters) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432918
ParseSdp(kH264AudioVideoOffer);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(3U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
ASSERT_TRUE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kFmtpAttribute));
auto audio_format_params =
@@ -2776,16 +2814,17 @@ TEST_P(NewSdpTest, CheckDirections) {
mSdp->GetMediaSection(0).GetAttributeList().GetDirection());
ASSERT_EQ(SdpDirectionAttribute::kRecvonly,
mSdp->GetMediaSection(1).GetAttributeList().GetDirection());
ASSERT_EQ(SdpDirectionAttribute::kSendrecv,
mSdp->GetMediaSection(2).GetAttributeList().GetDirection());
}
TEST_P(NewSdpTest, CheckCandidates) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432920
ParseSdp(kBasicAudioVideoOffer);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(3U, mSdp->GetMediaSectionCount()) << "Wrong number of media sections";
ASSERT_TRUE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kCandidateAttribute));
auto audio_candidates =
mSdp->GetMediaSection(0).GetAttributeList().GetCandidate();
@@ -3003,22 +3042,24 @@ const std::string kBasicAudioVideoDataOf
"a=setup:actpass" CRLF
"a=rtcp-mux" CRLF
"m=application 9 DTLS/SCTP 5000" CRLF
"c=IN IP4 0.0.0.0" CRLF
"a=sctpmap:5000 webrtc-datachannel 16" CRLF
"a=setup:actpass" CRLF;
TEST_P(NewSdpTest, BasicAudioVideoDataSdpParse) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432922
ParseSdp(kBasicAudioVideoDataOffer);
- ASSERT_EQ(0U, mParser.GetParseErrors().size()) <<
+ ASSERT_EQ(0U, mSdpErrorHolder->GetParseErrors().size()) <<
"Got parse errors: " << GetParseErrors();
}
TEST_P(NewSdpTest, CheckApplicationParameters) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432922
ParseSdp(kBasicAudioVideoDataOffer);
ASSERT_TRUE(!!mSdp);
ASSERT_EQ(3U, mSdp->GetMediaSectionCount()) << "Wrong number of media sections";
ASSERT_EQ(SdpMediaSection::kAudio, mSdp->GetMediaSection(0).GetMediaType())
<< "Wrong type for first media section";
ASSERT_EQ(SdpMediaSection::kVideo, mSdp->GetMediaSection(1).GetMediaType())
<< "Wrong type for second media section";
ASSERT_EQ(SdpMediaSection::kApplication, mSdp->GetMediaSection(2).GetMediaType())
@@ -3039,16 +3080,17 @@ TEST_P(NewSdpTest, CheckApplicationParam
ASSERT_TRUE(mSdp->GetMediaSection(2).GetAttributeList().HasAttribute(
SdpAttribute::kSetupAttribute));
ASSERT_EQ(SdpSetupAttribute::kActpass,
mSdp->GetMediaSection(2).GetAttributeList().GetSetup().mRole);
}
TEST_P(NewSdpTest, CheckExtmap) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432922
ParseSdp(kBasicAudioVideoDataOffer);
ASSERT_TRUE(!!mSdp);
ASSERT_EQ(3U, mSdp->GetMediaSectionCount()) << "Wrong number of media sections";
ASSERT_TRUE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kExtmapAttribute));
auto extmaps =
@@ -3074,16 +3116,17 @@ TEST_P(NewSdpTest, CheckExtmap) {
ASSERT_FALSE(extmaps[2].direction_specified);
ASSERT_EQ("some_other_extension",
extmaps[2].extensionname);
ASSERT_EQ("some_params some more params",
extmaps[2].extensionattributes);
}
TEST_P(NewSdpTest, CheckRtcpFb) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432922
ParseSdp(kBasicAudioVideoDataOffer);
ASSERT_TRUE(!!mSdp);
ASSERT_EQ(3U, mSdp->GetMediaSectionCount()) << "Wrong number of media sections";
auto& video_attrs = mSdp->GetMediaSection(1).GetAttributeList();
ASSERT_TRUE(video_attrs.HasAttribute(SdpAttribute::kRtcpFbAttribute));
auto& rtcpfbs = video_attrs.GetRtcpFb().mFeedbacks;
ASSERT_EQ(20U, rtcpfbs.size());
@@ -3175,16 +3218,17 @@ TEST_P(NewSdpTest, CheckImageattr)
ASSERT_EQ(1U, imageattr_1.recvSets[0].xRange.discreteValues.size());
ASSERT_EQ(640U, imageattr_1.recvSets[0].xRange.discreteValues.front());
ASSERT_EQ(1U, imageattr_1.recvSets[0].yRange.discreteValues.size());
ASSERT_EQ(480U, imageattr_1.recvSets[0].yRange.discreteValues.front());
}
TEST_P(NewSdpTest, CheckSimulcast)
{
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432920
ParseSdp(kBasicAudioVideoOffer);
ASSERT_TRUE(!!mSdp);
ASSERT_EQ(3U, mSdp->GetMediaSectionCount()) << "Wrong number of media sections";
ASSERT_FALSE(mSdp->GetAttributeList().HasAttribute(
SdpAttribute::kSimulcastAttribute));
ASSERT_FALSE(mSdp->GetMediaSection(0).GetAttributeList().HasAttribute(
SdpAttribute::kSimulcastAttribute));
@@ -3202,16 +3246,17 @@ TEST_P(NewSdpTest, CheckSimulcast)
ASSERT_EQ("120", simulcast.recvVersions[0].choices[0]);
ASSERT_EQ(1U, simulcast.recvVersions[1].choices.size());
ASSERT_EQ("121", simulcast.recvVersions[1].choices[0]);
ASSERT_EQ(SdpSimulcastAttribute::Versions::kPt,
simulcast.recvVersions.type);
}
TEST_P(NewSdpTest, CheckSctpmap) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432922
ParseSdp(kBasicAudioVideoDataOffer);
ASSERT_TRUE(!!mSdp) << "Parse failed: " << GetParseErrors();
ASSERT_EQ(3U, mSdp->GetMediaSectionCount())
<< "Wrong number of media sections";
const SdpMediaSection& appsec = mSdp->GetMediaSection(2);
ASSERT_TRUE(
appsec.GetAttributeList().HasAttribute(SdpAttribute::kSctpmapAttribute));
@@ -3245,17 +3290,18 @@ const std::string kNewSctpportOfferDraft
"a=setup:actpass" CRLF;
TEST_P(NewSdpTest, NewSctpportSdpParse) {
ParseSdp(kNewSctpportOfferDraft21, false);
}
INSTANTIATE_TEST_CASE_P(RoundTripSerialize,
NewSdpTest,
- ::testing::Values(false, true));
+ ::testing::Combine(::testing::Bool(),
+ ::testing::Bool()));
const std::string kCandidateInSessionSDP =
"v=0" CRLF
"o=Mozilla-SIPUA-35.0a1 5184 0 IN IP4 0.0.0.0" CRLF
"s=SIP Call" CRLF
"c=IN IP4 224.0.0.1/100/12" CRLF
"t=0 0" CRLF
"a=candidate:0 1 UDP 2130379007 10.0.0.36 62453 typ host" CRLF
@@ -3696,86 +3742,92 @@ const std::string kMalformedImageattr =
"t=0 0" CRLF
"m=video 9 RTP/SAVPF 120" CRLF
"c=IN IP4 0.0.0.0" CRLF
"a=rtpmap:120 VP8/90000" CRLF
"a=imageattr:flob" CRLF;
TEST_P(NewSdpTest, CheckMalformedImageattr)
{
- if (GetParam()) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432930
+ if (::testing::get<0>(GetParam())) {
// Don't do a parse/serialize before running this test
return;
}
ParseSdp(kMalformedImageattr, false);
ASSERT_NE("", GetParseErrors());
}
TEST_P(NewSdpTest, ParseInvalidSimulcastNoSuchSendRid) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432931
ParseSdp("v=0" CRLF
"o=- 4294967296 2 IN IP4 127.0.0.1" CRLF
"s=SIP Call" CRLF
"c=IN IP4 198.51.100.7" CRLF
"b=CT:5000" CRLF
"t=0 0" CRLF
"m=video 56436 RTP/SAVPF 120" CRLF
"a=rtpmap:120 VP8/90000" CRLF
"a=sendrecv" CRLF
"a=simulcast: send rid=9" CRLF,
false);
ASSERT_NE("", GetParseErrors());
}
TEST_P(NewSdpTest, ParseInvalidSimulcastNoSuchRecvRid) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432932
ParseSdp("v=0" CRLF
"o=- 4294967296 2 IN IP4 127.0.0.1" CRLF
"s=SIP Call" CRLF
"c=IN IP4 198.51.100.7" CRLF
"b=CT:5000" CRLF
"t=0 0" CRLF
"m=video 56436 RTP/SAVPF 120" CRLF
"a=rtpmap:120 VP8/90000" CRLF
"a=sendrecv" CRLF
"a=simulcast: recv rid=9" CRLF,
false);
ASSERT_NE("", GetParseErrors());
}
TEST_P(NewSdpTest, ParseInvalidSimulcastNoSuchPt) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432933
ParseSdp("v=0" CRLF
"o=- 4294967296 2 IN IP4 127.0.0.1" CRLF
"s=SIP Call" CRLF
"c=IN IP4 198.51.100.7" CRLF
"b=CT:5000" CRLF
"t=0 0" CRLF
"m=video 56436 RTP/SAVPF 120" CRLF
"a=rtpmap:120 VP8/90000" CRLF
"a=sendrecv" CRLF
"a=simulcast: send pt=9" CRLF,
false);
ASSERT_NE("", GetParseErrors());
}
TEST_P(NewSdpTest, ParseInvalidSimulcastNotSending) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432934
ParseSdp("v=0" CRLF
"o=- 4294967296 2 IN IP4 127.0.0.1" CRLF
"s=SIP Call" CRLF
"c=IN IP4 198.51.100.7" CRLF
"b=CT:5000" CRLF
"t=0 0" CRLF
"m=video 56436 RTP/SAVPF 120" CRLF
"a=rtpmap:120 VP8/90000" CRLF
"a=recvonly" CRLF
"a=simulcast: send pt=120" CRLF,
false);
ASSERT_NE("", GetParseErrors());
}
TEST_P(NewSdpTest, ParseInvalidSimulcastNotReceiving) {
+ SKIP_TEST_WITH_RUST_PARSER; // See Bug 1432936
ParseSdp("v=0" CRLF
"o=- 4294967296 2 IN IP4 127.0.0.1" CRLF
"s=SIP Call" CRLF
"c=IN IP4 198.51.100.7" CRLF
"b=CT:5000" CRLF
"t=0 0" CRLF
"m=video 56436 RTP/SAVPF 120" CRLF
"a=rtpmap:120 VP8/90000" CRLF