Index: webrtc/ortc/rtptransport_unittest.cc |
diff --git a/webrtc/ortc/rtptransport_unittest.cc b/webrtc/ortc/rtptransport_unittest.cc |
index 2fc1b23586bfbe8c847b38e2e737689b31582dff..9e92e4f55e627fd897fe1ee88fd20414c94b1c7f 100644 |
--- a/webrtc/ortc/rtptransport_unittest.cc |
+++ b/webrtc/ortc/rtptransport_unittest.cc |
@@ -10,7 +10,9 @@ |
#include <memory> |
+#include "webrtc/api/test/fakeconstraints.h" |
#include "webrtc/media/base/fakemediaengine.h" |
+#include "webrtc/media/base/fakevideocapturer.h" |
#include "webrtc/ortc/ortcfactory.h" |
#include "webrtc/ortc/testrtpparameters.h" |
#include "webrtc/p2p/base/fakepackettransport.h" |
@@ -45,18 +47,17 @@ TEST_F(RtpTransportTest, GetPacketTransports) { |
rtc::FakePacketTransport rtp("rtp"); |
rtc::FakePacketTransport rtcp("rtcp"); |
// With muxed RTCP. |
- RtcpParameters rtcp_parameters; |
- rtcp_parameters.mux = true; |
- auto result = ortc_factory_->CreateRtpTransport(rtcp_parameters, &rtp, |
- nullptr, nullptr); |
+ RtpTransportParameters parameters; |
+ parameters.rtcp.mux = true; |
+ auto result = |
+ ortc_factory_->CreateRtpTransport(parameters, &rtp, nullptr, nullptr); |
ASSERT_TRUE(result.ok()); |
EXPECT_EQ(&rtp, result.value()->GetRtpPacketTransport()); |
EXPECT_EQ(nullptr, result.value()->GetRtcpPacketTransport()); |
result.MoveValue().reset(); |
// With non-muxed RTCP. |
- rtcp_parameters.mux = false; |
- result = |
- ortc_factory_->CreateRtpTransport(rtcp_parameters, &rtp, &rtcp, nullptr); |
+ parameters.rtcp.mux = false; |
+ result = ortc_factory_->CreateRtpTransport(parameters, &rtp, &rtcp, nullptr); |
ASSERT_TRUE(result.ok()); |
EXPECT_EQ(&rtp, result.value()->GetRtpPacketTransport()); |
EXPECT_EQ(&rtcp, result.value()->GetRtcpPacketTransport()); |
@@ -70,16 +71,16 @@ TEST_F(RtpTransportTest, EnablingRtcpMuxingUnsetsRtcpTransport) { |
rtc::FakePacketTransport rtcp("rtcp"); |
// Create non-muxed. |
- RtcpParameters rtcp_parameters; |
- rtcp_parameters.mux = false; |
+ RtpTransportParameters parameters; |
+ parameters.rtcp.mux = false; |
auto result = |
- ortc_factory_->CreateRtpTransport(rtcp_parameters, &rtp, &rtcp, nullptr); |
+ ortc_factory_->CreateRtpTransport(parameters, &rtp, &rtcp, nullptr); |
ASSERT_TRUE(result.ok()); |
auto rtp_transport = result.MoveValue(); |
// Enable muxing. |
- rtcp_parameters.mux = true; |
- EXPECT_TRUE(rtp_transport->SetRtcpParameters(rtcp_parameters).ok()); |
+ parameters.rtcp.mux = true; |
+ EXPECT_TRUE(rtp_transport->SetParameters(parameters).ok()); |
EXPECT_EQ(nullptr, rtp_transport->GetRtcpPacketTransport()); |
} |
@@ -87,39 +88,39 @@ TEST_F(RtpTransportTest, GetAndSetRtcpParameters) { |
rtc::FakePacketTransport rtp("rtp"); |
rtc::FakePacketTransport rtcp("rtcp"); |
// Start with non-muxed RTCP. |
- RtcpParameters rtcp_parameters; |
- rtcp_parameters.mux = false; |
- rtcp_parameters.cname = "teST"; |
- rtcp_parameters.reduced_size = false; |
+ RtpTransportParameters parameters; |
+ parameters.rtcp.mux = false; |
+ parameters.rtcp.cname = "teST"; |
+ parameters.rtcp.reduced_size = false; |
auto result = |
- ortc_factory_->CreateRtpTransport(rtcp_parameters, &rtp, &rtcp, nullptr); |
+ ortc_factory_->CreateRtpTransport(parameters, &rtp, &rtcp, nullptr); |
ASSERT_TRUE(result.ok()); |
auto transport = result.MoveValue(); |
- EXPECT_EQ(rtcp_parameters, transport->GetRtcpParameters()); |
+ EXPECT_EQ(parameters, transport->GetParameters()); |
// Changing the CNAME is currently unsupported. |
- rtcp_parameters.cname = "different"; |
+ parameters.rtcp.cname = "different"; |
EXPECT_EQ(RTCErrorType::UNSUPPORTED_OPERATION, |
- transport->SetRtcpParameters(rtcp_parameters).type()); |
- rtcp_parameters.cname = "teST"; |
+ transport->SetParameters(parameters).type()); |
+ parameters.rtcp.cname = "teST"; |
// Enable RTCP muxing and reduced-size RTCP. |
- rtcp_parameters.mux = true; |
- rtcp_parameters.reduced_size = true; |
- EXPECT_TRUE(transport->SetRtcpParameters(rtcp_parameters).ok()); |
- EXPECT_EQ(rtcp_parameters, transport->GetRtcpParameters()); |
+ parameters.rtcp.mux = true; |
+ parameters.rtcp.reduced_size = true; |
+ EXPECT_TRUE(transport->SetParameters(parameters).ok()); |
+ EXPECT_EQ(parameters, transport->GetParameters()); |
// Empty CNAME should result in the existing CNAME being used. |
- rtcp_parameters.cname.clear(); |
- EXPECT_TRUE(transport->SetRtcpParameters(rtcp_parameters).ok()); |
- EXPECT_EQ("teST", transport->GetRtcpParameters().cname); |
+ parameters.rtcp.cname.clear(); |
+ EXPECT_TRUE(transport->SetParameters(parameters).ok()); |
+ EXPECT_EQ("teST", transport->GetParameters().rtcp.cname); |
// Disabling RTCP muxing after enabling shouldn't be allowed, since enabling |
// muxing should have made the RTP transport forget about the RTCP packet |
// transport initially passed into it. |
- rtcp_parameters.mux = false; |
+ parameters.rtcp.mux = false; |
EXPECT_EQ(RTCErrorType::INVALID_STATE, |
- transport->SetRtcpParameters(rtcp_parameters).type()); |
+ transport->SetParameters(parameters).type()); |
} |
// When Send or Receive is called on a sender or receiver, the RTCP parameters |
@@ -129,12 +130,12 @@ TEST_F(RtpTransportTest, GetAndSetRtcpParameters) { |
TEST_F(RtpTransportTest, SendAndReceiveApplyRtcpParametersToMediaEngine) { |
// First, create video transport with reduced-size RTCP. |
rtc::FakePacketTransport fake_packet_transport1("1"); |
- RtcpParameters rtcp_parameters; |
- rtcp_parameters.mux = true; |
- rtcp_parameters.reduced_size = true; |
- rtcp_parameters.cname = "foo"; |
+ RtpTransportParameters parameters; |
+ parameters.rtcp.mux = true; |
+ parameters.rtcp.reduced_size = true; |
+ parameters.rtcp.cname = "foo"; |
auto rtp_transport_result = ortc_factory_->CreateRtpTransport( |
- rtcp_parameters, &fake_packet_transport1, nullptr, nullptr); |
+ parameters, &fake_packet_transport1, nullptr, nullptr); |
auto video_transport = rtp_transport_result.MoveValue(); |
// Create video sender and call Send, expecting parameters to be applied. |
@@ -163,10 +164,10 @@ TEST_F(RtpTransportTest, SendAndReceiveApplyRtcpParametersToMediaEngine) { |
// Create audio transport with non-reduced size RTCP. |
rtc::FakePacketTransport fake_packet_transport2("2"); |
- rtcp_parameters.reduced_size = false; |
- rtcp_parameters.cname = "bar"; |
+ parameters.rtcp.reduced_size = false; |
+ parameters.rtcp.cname = "bar"; |
rtp_transport_result = ortc_factory_->CreateRtpTransport( |
- rtcp_parameters, &fake_packet_transport2, nullptr, nullptr); |
+ parameters, &fake_packet_transport2, nullptr, nullptr); |
auto audio_transport = rtp_transport_result.MoveValue(); |
// Create audio sender and call Send, expecting parameters to be applied. |
@@ -195,17 +196,17 @@ TEST_F(RtpTransportTest, SendAndReceiveApplyRtcpParametersToMediaEngine) { |
EXPECT_FALSE(fake_voice_channel->recv_rtcp_parameters().reduced_size); |
} |
-// When SetRtcpParameters is called, the modified parameters should be applied |
+// When SetParameters is called, the modified parameters should be applied |
// to the media engine. |
// TODO(deadbeef): Once the implementation supports changing the CNAME, |
// test that here. |
TEST_F(RtpTransportTest, SetRtcpParametersAppliesParametersToMediaEngine) { |
rtc::FakePacketTransport fake_packet_transport("fake"); |
- RtcpParameters rtcp_parameters; |
- rtcp_parameters.mux = true; |
- rtcp_parameters.reduced_size = false; |
+ RtpTransportParameters parameters; |
+ parameters.rtcp.mux = true; |
+ parameters.rtcp.reduced_size = false; |
auto rtp_transport_result = ortc_factory_->CreateRtpTransport( |
- rtcp_parameters, &fake_packet_transport, nullptr, nullptr); |
+ parameters, &fake_packet_transport, nullptr, nullptr); |
auto rtp_transport = rtp_transport_result.MoveValue(); |
// Create video sender and call Send, applying an initial set of parameters. |
@@ -215,8 +216,8 @@ TEST_F(RtpTransportTest, SetRtcpParametersAppliesParametersToMediaEngine) { |
EXPECT_TRUE(sender->Send(MakeMinimalVp8Parameters()).ok()); |
// Modify parameters and expect them to be changed at the media engine level. |
- rtcp_parameters.reduced_size = true; |
- EXPECT_TRUE(rtp_transport->SetRtcpParameters(rtcp_parameters).ok()); |
+ parameters.rtcp.reduced_size = true; |
+ EXPECT_TRUE(rtp_transport->SetParameters(parameters).ok()); |
cricket::FakeVideoMediaChannel* fake_video_channel = |
fake_media_engine_->GetVideoChannel(0); |
@@ -224,4 +225,45 @@ TEST_F(RtpTransportTest, SetRtcpParametersAppliesParametersToMediaEngine) { |
EXPECT_TRUE(fake_video_channel->send_rtcp_parameters().reduced_size); |
} |
+// SetParameters should set keepalive for all rtp transports. |
Taylor Brandstetter
2017/08/02 00:12:56
nit: Capitalize "RTP"
sprang_webrtc
2017/08/02 16:45:08
Done.
|
+// It is impossible to modify keepalive parameters if any streams are created. |
+TEST_F(RtpTransportTest, CantChangeKeepAliveAfterCreatedSendStreams) { |
Taylor Brandstetter
2017/08/02 00:12:56
From a "unit test" perspective, I'd think of this
sprang_webrtc
2017/08/02 16:45:08
I've removed the "real" parts and added validation
|
+ rtc::FakePacketTransport fake_packet_transport("fake"); |
+ RtpTransportParameters parameters; |
+ parameters.keepalive.timeout_interval_ms = 100; |
+ auto rtp_transport_result = ortc_factory_->CreateRtpTransport( |
+ parameters, &fake_packet_transport, nullptr, nullptr); |
+ ASSERT_TRUE(rtp_transport_result.ok()); |
+ std::unique_ptr<RtpTransportInterface> rtp_transport = |
+ rtp_transport_result.MoveValue(); |
+ |
+ // Make sure real video channels are create, so that webrtc::Call code is |
Taylor Brandstetter
2017/08/02 00:12:56
nit: "are created"
sprang_webrtc
2017/08/02 16:45:08
removed
|
+ // properly excercised. |
+ fake_media_engine_->GetVideoEngine()->SetCreateRealChannel(true); |
+ |
+ // Create video sender and call Send, applying an initial set of parameters. |
+ auto sender_result = ortc_factory_->CreateRtpSender(cricket::MEDIA_TYPE_VIDEO, |
+ rtp_transport.get()); |
+ ASSERT_TRUE(sender_result.ok()); |
+ std::unique_ptr<OrtcRtpSenderInterface> sender = sender_result.MoveValue(); |
+ |
+ // Need to explicitly call SetParameters() to actually set keepalive. |
Taylor Brandstetter
2017/08/02 00:12:56
Even though the keepalive parameters were passed i
sprang_webrtc
2017/08/02 16:45:08
Yes, wired that up now.
Taylor Brandstetter
2017/08/03 01:18:03
Where is that wired up? I don't see it.
I was thi
|
+ EXPECT_TRUE(rtp_transport->SetParameters(parameters).ok()); |
+ EXPECT_TRUE(sender->Send(MakeMinimalVp8Parameters()).ok()); |
+ |
+ std::unique_ptr<cricket::VideoCapturer> capturer( |
+ new cricket::FakeVideoCapturer(false)); |
+ FakeConstraints constraints; |
+ rtc::scoped_refptr<VideoTrackSourceInterface> source = |
+ ortc_factory_->CreateVideoSource(std::move(capturer), &constraints); |
+ rtc::scoped_refptr<VideoTrackInterface> video = |
+ ortc_factory_->CreateVideoTrack("TestVideo", source); |
+ sender->SetTrack(video); |
+ |
+ // Modify parameters second time after video send stream created. |
+ parameters.keepalive.timeout_interval_ms = 10; |
+ EXPECT_EQ(RTCErrorType::INTERNAL_ERROR, |
+ rtp_transport->SetParameters(parameters).type()); |
+} |
+ |
Taylor Brandstetter
2017/08/02 00:12:56
Is there way to have another test that verifies th
sprang_webrtc
2017/08/02 16:45:08
The previous test with the real stream did (since
Taylor Brandstetter
2017/08/03 01:18:03
The previous test verifies that the setting can't
|
} // namespace webrtc |