Index: webrtc/p2p/base/session_unittest.cc |
diff --git a/webrtc/p2p/base/session_unittest.cc b/webrtc/p2p/base/session_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3419cc3c468bbf47fe9c2b4cbd4db9ed814ee297 |
--- /dev/null |
+++ b/webrtc/p2p/base/session_unittest.cc |
@@ -0,0 +1,100 @@ |
+/* |
+ * Copyright 2015 The WebRTC Project Authors. All rights reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#include "webrtc/base/gunit.h" |
+#include "webrtc/base/helpers.h" |
+#include "webrtc/base/scoped_ptr.h" |
+#include "webrtc/base/thread.h" |
+#include "webrtc/p2p/base/dtlstransportchannel.h" |
+#include "webrtc/p2p/base/p2ptransportchannel.h" |
+#include "webrtc/p2p/base/portallocator.h" |
+#include "webrtc/p2p/base/session.h" |
+#include "webrtc/p2p/base/transportchannelproxy.h" |
+#include "webrtc/p2p/client/fakeportallocator.h" |
+ |
+using cricket::BaseSession; |
+using cricket::DtlsTransportChannelWrapper; |
+using cricket::FakePortAllocator; |
+using cricket::P2PTransportChannel; |
+using cricket::PortAllocator; |
+using cricket::TransportChannelProxy; |
+using cricket::TransportProxy; |
+ |
+class BaseSessionForTest : public BaseSession { |
+ public: |
+ BaseSessionForTest(rtc::Thread* signaling_thread, |
+ rtc::Thread* worker_thread, |
+ PortAllocator* port_allocator, |
+ const std::string& sid, |
+ const std::string& content_type, |
+ bool initiator) |
+ : BaseSession(signaling_thread, |
+ worker_thread, |
+ port_allocator, |
+ sid, |
+ content_type, |
+ initiator) {} |
+ using BaseSession::GetOrCreateTransportProxy; |
+}; |
+ |
+class BaseSessionTest : public testing::Test { |
+ public: |
+ BaseSessionTest() |
+ : port_allocator_(new FakePortAllocator(rtc::Thread::Current(), nullptr)), |
+ session_(new BaseSessionForTest(rtc::Thread::Current(), |
+ rtc::Thread::Current(), |
+ port_allocator_.get(), |
+ "123", |
+ cricket::NS_JINGLE_RTP, |
+ false)) {} |
+ P2PTransportChannel* CreateChannel(const std::string& content, |
+ int component) { |
+ TransportProxy* transport_proxy = |
+ session_->GetOrCreateTransportProxy(content); |
+ // This hacking is needed in order that the p2p transport channel |
+ // will be created in the following. |
+ transport_proxy->CompleteNegotiation(); |
+ |
+ TransportChannelProxy* channel_proxy = static_cast<TransportChannelProxy*>( |
+ session_->CreateChannel(content, component)); |
+ DtlsTransportChannelWrapper* dtls_channel = |
+ static_cast<DtlsTransportChannelWrapper*>(channel_proxy->impl()); |
+ return static_cast<P2PTransportChannel*>(dtls_channel->channel()); |
+ } |
+ |
+ rtc::scoped_ptr<PortAllocator> port_allocator_; |
+ rtc::scoped_ptr<BaseSessionForTest> session_; |
+}; |
+ |
+TEST_F(BaseSessionTest, TestSetIceReceivingTimeout) { |
+ P2PTransportChannel* channel1 = CreateChannel("audio", 1); |
+ ASSERT_NE(channel1, nullptr); |
+ // These are the default values. |
+ EXPECT_EQ(2500, channel1->receiving_timeout()); |
+ EXPECT_EQ(250, channel1->check_receiving_delay()); |
+ // Set the timeout to a different value. |
+ session_->SetIceConnectionReceivingTimeout(1000); |
+ EXPECT_EQ(1000, channel1->receiving_timeout()); |
+ EXPECT_EQ(100, channel1->check_receiving_delay()); |
+ |
+ // Even if a channel is created after setting the receiving timeout, |
+ // the set timeout value is applied to the new channel. |
+ P2PTransportChannel* channel2 = CreateChannel("video", 2); |
+ ASSERT_NE(channel2, nullptr); |
+ EXPECT_EQ(1000, channel2->receiving_timeout()); |
+ EXPECT_EQ(100, channel2->check_receiving_delay()); |
+ |
+ // Test minimum checking delay. |
+ session_->SetIceConnectionReceivingTimeout(200); |
+ EXPECT_EQ(200, channel1->receiving_timeout()); |
+ EXPECT_EQ(50, channel1->check_receiving_delay()); |
+ EXPECT_EQ(200, channel2->receiving_timeout()); |
+ EXPECT_EQ(50, channel2->check_receiving_delay()); |
+} |