Chromium Code Reviews| 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..f3d085cb54e753bb56c5c1520ac045bd4fc4f723 |
| --- /dev/null |
| +++ b/webrtc/p2p/base/session_unittest.cc |
| @@ -0,0 +1,103 @@ |
| +/* |
| + * 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)) {} |
|
pthatcher1
2015/07/11 00:24:54
Can you run "git cl format"? This format looks ki
honghaiz3
2015/08/05 23:57:39
Done. This also fixed the formatting of a few othe
|
| + 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()); |
| +} |