Refactor: Separate header extension tests for Unified Plan
The tests in `pc/peer_connection_header_extension_unittest.cc` were parameterized to run for both Plan B and Unified Plan SDP semantics. However, several of the tests were specific to Unified Plan and would return early for Plan B.
This CL separates these tests into a new test suite, `PeerConnectionHeaderExtensionUnifiedPlanTest`, which is instantiated only for Unified Plan. This improves test clarity and organization.
Bug: None
Change-Id: I53e28b5b0e4c8909538cf7b2aa9145607e203447
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/408001
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45575}
diff --git a/pc/peer_connection_header_extension_unittest.cc b/pc/peer_connection_header_extension_unittest.cc
index 929b439..c6d687b 100644
--- a/pc/peer_connection_header_extension_unittest.cc
+++ b/pc/peer_connection_header_extension_unittest.cc
@@ -114,12 +114,14 @@
std::vector<RtpHeaderExtensionCapability> extensions_;
};
-TEST_P(PeerConnectionHeaderExtensionTest, TransceiverOffersHeaderExtensions) {
+class PeerConnectionHeaderExtensionUnifiedPlanTest
+ : public PeerConnectionHeaderExtensionTest {};
+
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ TransceiverOffersHeaderExtensions) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> wrapper =
CreatePeerConnection(media_type, semantics);
auto transceiver = wrapper->AddTransceiver(media_type);
@@ -147,12 +149,11 @@
.header_extensions);
}
-TEST_P(PeerConnectionHeaderExtensionTest, OffersUnstoppedDefaultExtensions) {
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ OffersUnstoppedDefaultExtensions) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> wrapper =
CreatePeerConnection(media_type, semantics);
auto transceiver = wrapper->AddTransceiver(media_type);
@@ -166,12 +167,11 @@
Field(&RtpExtension::uri, "uri4")));
}
-TEST_P(PeerConnectionHeaderExtensionTest, OffersUnstoppedModifiedExtensions) {
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ OffersUnstoppedModifiedExtensions) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> wrapper =
CreatePeerConnection(media_type, semantics);
auto transceiver = wrapper->AddTransceiver(media_type);
@@ -190,12 +190,11 @@
Field(&RtpExtension::uri, "uri3")));
}
-TEST_P(PeerConnectionHeaderExtensionTest, AnswersUnstoppedModifiedExtensions) {
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ AnswersUnstoppedModifiedExtensions) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc1 =
CreatePeerConnection(media_type, semantics);
std::unique_ptr<PeerConnectionWrapper> pc2 =
@@ -225,12 +224,11 @@
Field(&RtpExtension::uri, "uri3")));
}
-TEST_P(PeerConnectionHeaderExtensionTest, NegotiatedExtensionsAreAccessible) {
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ NegotiatedExtensionsAreAccessible) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc1 =
CreatePeerConnection(media_type, semantics);
auto transceiver1 = pc1->AddTransceiver(media_type);
@@ -263,12 +261,11 @@
RtpTransceiverDirection::kStopped)));
}
-TEST_P(PeerConnectionHeaderExtensionTest, OfferedExtensionsArePerTransceiver) {
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ OfferedExtensionsArePerTransceiver) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc1 =
CreatePeerConnection(media_type, semantics);
auto transceiver1 = pc1->AddTransceiver(media_type);
@@ -293,12 +290,11 @@
Field(&RtpExtension::uri, "uri4")));
}
-TEST_P(PeerConnectionHeaderExtensionTest, RemovalAfterRenegotiation) {
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ RemovalAfterRenegotiation) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc1 =
CreatePeerConnection(media_type, semantics);
std::unique_ptr<PeerConnectionWrapper> pc2 =
@@ -326,13 +322,11 @@
Field(&RtpExtension::uri, "uri3")));
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
StoppedByDefaultExtensionCanBeActivatedByRemoteSdp) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc1 =
CreatePeerConnection(media_type, semantics);
std::unique_ptr<PeerConnectionWrapper> pc2 =
@@ -363,13 +357,11 @@
RtpTransceiverDirection::kSendRecv)));
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
UnknownExtensionInRemoteOfferDoesNotShowUp) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc =
CreatePeerConnection(media_type, semantics);
std::string sdp =
@@ -418,13 +410,11 @@
// These tests are regression tests for behavior that the API
// enables in a proper way. It conflicts with the behavior
// of the API to only offer non-stopped extensions.
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
SdpMungingAnswerWithoutApiUsageEnablesExtensions) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc = CreatePeerConnection(
media_type, semantics, "WebRTC-HeaderExtensionNegotiateMemory/Disabled/");
std::string sdp =
@@ -475,13 +465,11 @@
Field(&RtpExtension::uri, "uri3"),
Field(&RtpExtension::uri, "uri4")));
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
SdpMungingAnswerWithoutApiUsageEnablesExtensionsWithMemory) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc = CreatePeerConnection(
media_type, semantics, "WebRTC-HeaderExtensionNegotiateMemory/Enabled/");
std::string sdp =
@@ -532,13 +520,11 @@
ElementsAre(Field(&RtpExtension::uri, "uri1")));
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
SdpMungingOfferWithoutApiUsageEnablesExtensions) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc =
CreatePeerConnection(media_type, semantics);
pc->AddTransceiver(media_type);
@@ -563,13 +549,11 @@
Field(&RtpExtension::uri, "uri1")));
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
EnablingExtensionsAfterRemoteOfferWithoutHeaderExtensionMemory) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc = CreatePeerConnection(
media_type, semantics, "WebRTC-HeaderExtensionNegotiateMemory/Disabled/");
std::string sdp =
@@ -624,13 +608,11 @@
EXPECT_EQ(extensions[0].id, 5);
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
EnablingExtensionsAfterRemoteOfferWithHeaderExtensionMemory) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan)
- return;
std::unique_ptr<PeerConnectionWrapper> pc = CreatePeerConnection(
media_type, semantics, "WebRTC-HeaderExtensionNegotiateMemory/Enabled/");
std::string sdp =
@@ -682,13 +664,11 @@
EXPECT_EQ(extensions[0].id, 5);
}
-TEST_P(PeerConnectionHeaderExtensionTest, SenderParametersReflectNegotiation) {
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
+ SenderParametersReflectNegotiation) {
SdpSemantics semantics;
MediaType media_type;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan) {
- GTEST_SKIP() << "This test only works with Unified Plan";
- }
std::unique_ptr<PeerConnectionWrapper> pc1 =
CreatePeerConnection(media_type, semantics);
std::unique_ptr<PeerConnectionWrapper> pc2 =
@@ -718,14 +698,11 @@
}
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
TransceiversAddedAfterFirstDoNotCopy) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan) {
- GTEST_SKIP() << "This test only works with Unified Plan";
- }
std::unique_ptr<PeerConnectionWrapper> pc1 = CreatePeerConnection(
media_type, semantics, "WebRTC-HeaderExtensionNegotiateMemory/Disabled/");
@@ -751,14 +728,11 @@
Field(&RtpExtension::uri, "uri4")));
}
-TEST_P(PeerConnectionHeaderExtensionTest,
+TEST_P(PeerConnectionHeaderExtensionUnifiedPlanTest,
TransceiversAddedAfterFirstTransceiverCopyExtensions) {
MediaType media_type;
SdpSemantics semantics;
std::tie(media_type, semantics) = GetParam();
- if (semantics != SdpSemantics::kUnifiedPlan) {
- GTEST_SKIP() << "This test only works with Unified Plan";
- }
std::unique_ptr<PeerConnectionWrapper> pc1 = CreatePeerConnection(
media_type, semantics, "WebRTC-HeaderExtensionNegotiateMemory/Enabled/");
auto transceiver1 = pc1->AddTransceiver(media_type);
@@ -801,4 +775,22 @@
.str();
});
+INSTANTIATE_TEST_SUITE_P(
+ ,
+ PeerConnectionHeaderExtensionUnifiedPlanTest,
+ Combine(Values(MediaType::AUDIO, MediaType::VIDEO),
+ Values(SdpSemantics::kUnifiedPlan)),
+ [](const testing::TestParamInfo<
+ PeerConnectionHeaderExtensionUnifiedPlanTest::ParamType>& info) {
+ MediaType media_type;
+ SdpSemantics semantics;
+ std::tie(media_type, semantics) = info.param;
+ return (StringBuilder("With")
+ << (semantics == SdpSemantics::kPlanB_DEPRECATED ? "PlanB"
+ : "UnifiedPlan")
+ << "And" << (media_type == MediaType::AUDIO ? "Voice" : "Video")
+ << "Engine")
+ .str();
+ });
+
} // namespace webrtc