Rewrite the remaining few WebRtcSession tests.
Bug: webrtc:8222
Change-Id: I18e2a449b77cee2ecb8c0c2ae94c105247116458
Reviewed-on: https://webrtc-review.googlesource.com/8740
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20399}
diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc
index ff5cea5..c040854 100644
--- a/pc/channel_unittest.cc
+++ b/pc/channel_unittest.cc
@@ -2051,6 +2051,35 @@
EXPECT_EQ(-1, media_channel1_->max_bps());
}
+ // Test that when a channel gets new transports with a call to
+ // |SetTransports|, the socket options from the old transports are merged with
+ // the options on the new transport.
+ // For example, audio and video may use separate socket options, but initially
+ // be unbundled, then later become bundled. When this happens, their preferred
+ // socket options should be merged to the underlying transport they share.
+ void SocketOptionsMergedOnSetTransport() {
+ constexpr int kSndBufSize = 4000;
+ constexpr int kRcvBufSize = 8000;
+
+ CreateChannels(0, 0);
+
+ channel1_->SetOption(cricket::BaseChannel::ST_RTP,
+ rtc::Socket::Option::OPT_SNDBUF, kSndBufSize);
+ channel2_->SetOption(cricket::BaseChannel::ST_RTP,
+ rtc::Socket::Option::OPT_RCVBUF, kRcvBufSize);
+
+ channel1_->SetTransports(channel2_->rtp_dtls_transport(),
+ channel2_->rtcp_dtls_transport());
+
+ int option_val;
+ ASSERT_TRUE(channel1_->rtp_dtls_transport()->GetOption(
+ rtc::Socket::Option::OPT_SNDBUF, &option_val));
+ EXPECT_EQ(kSndBufSize, option_val);
+ ASSERT_TRUE(channel1_->rtp_dtls_transport()->GetOption(
+ rtc::Socket::Option::OPT_RCVBUF, &option_val));
+ EXPECT_EQ(kRcvBufSize, option_val);
+ }
+
protected:
void WaitForThreads() { WaitForThreads(rtc::ArrayView<rtc::Thread*>()); }
static void ProcessThreadQueue(rtc::Thread* thread) {
@@ -2617,6 +2646,10 @@
Base::CanChangeMaxBitrate();
}
+TEST_F(VoiceChannelSingleThreadTest, SocketOptionsMergedOnSetTransport) {
+ Base::SocketOptionsMergedOnSetTransport();
+}
+
// VoiceChannelDoubleThreadTest
TEST_F(VoiceChannelDoubleThreadTest, TestInit) {
Base::TestInit();
@@ -2976,6 +3009,10 @@
Base::CanChangeMaxBitrate();
}
+TEST_F(VoiceChannelDoubleThreadTest, SocketOptionsMergedOnSetTransport) {
+ Base::SocketOptionsMergedOnSetTransport();
+}
+
// VideoChannelSingleThreadTest
TEST_F(VideoChannelSingleThreadTest, TestInit) {
Base::TestInit();
@@ -3207,6 +3244,10 @@
Base::CanChangeMaxBitrate();
}
+TEST_F(VideoChannelSingleThreadTest, SocketOptionsMergedOnSetTransport) {
+ Base::SocketOptionsMergedOnSetTransport();
+}
+
// VideoChannelDoubleThreadTest
TEST_F(VideoChannelDoubleThreadTest, TestInit) {
Base::TestInit();
@@ -3438,6 +3479,10 @@
Base::CanChangeMaxBitrate();
}
+TEST_F(VideoChannelDoubleThreadTest, SocketOptionsMergedOnSetTransport) {
+ Base::SocketOptionsMergedOnSetTransport();
+}
+
// RtpDataChannelSingleThreadTest
class RtpDataChannelSingleThreadTest : public ChannelTest<DataTraits> {
public:
@@ -3634,6 +3679,10 @@
Base::TestMediaMonitor();
}
+TEST_F(RtpDataChannelSingleThreadTest, SocketOptionsMergedOnSetTransport) {
+ Base::SocketOptionsMergedOnSetTransport();
+}
+
TEST_F(RtpDataChannelSingleThreadTest, TestSendData) {
CreateChannels(0, 0);
EXPECT_TRUE(SendInitiate());
@@ -3766,6 +3815,10 @@
Base::TestMediaMonitor();
}
+TEST_F(RtpDataChannelDoubleThreadTest, SocketOptionsMergedOnSetTransport) {
+ Base::SocketOptionsMergedOnSetTransport();
+}
+
TEST_F(RtpDataChannelDoubleThreadTest, TestSendData) {
CreateChannels(0, 0);
EXPECT_TRUE(SendInitiate());