Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(690)

Side by Side Diff: webrtc/p2p/base/asyncstuntcpsocket_unittest.cc

Issue 2912523003: Fix issue with send-side bandwidth estimation over TURN TCP connections. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2013 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2013 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 kServerAddr.family(), SOCK_STREAM); 79 kServerAddr.family(), SOCK_STREAM);
80 server->Bind(kServerAddr); 80 server->Bind(kServerAddr);
81 recv_socket_.reset(new AsyncStunTCPSocket(server, true)); 81 recv_socket_.reset(new AsyncStunTCPSocket(server, true));
82 recv_socket_->SignalNewConnection.connect( 82 recv_socket_->SignalNewConnection.connect(
83 this, &AsyncStunTCPSocketTest::OnNewConnection); 83 this, &AsyncStunTCPSocketTest::OnNewConnection);
84 84
85 rtc::AsyncSocket* client = vss_->CreateAsyncSocket( 85 rtc::AsyncSocket* client = vss_->CreateAsyncSocket(
86 kClientAddr.family(), SOCK_STREAM); 86 kClientAddr.family(), SOCK_STREAM);
87 send_socket_.reset(AsyncStunTCPSocket::Create( 87 send_socket_.reset(AsyncStunTCPSocket::Create(
88 client, kClientAddr, recv_socket_->GetLocalAddress())); 88 client, kClientAddr, recv_socket_->GetLocalAddress()));
89 send_socket_->SignalSentPacket.connect(
90 this, &AsyncStunTCPSocketTest::OnSentPacket);
89 ASSERT_TRUE(send_socket_.get() != NULL); 91 ASSERT_TRUE(send_socket_.get() != NULL);
90 vss_->ProcessMessagesUntilIdle(); 92 vss_->ProcessMessagesUntilIdle();
91 } 93 }
92 94
93 void OnReadPacket(rtc::AsyncPacketSocket* socket, const char* data, 95 void OnReadPacket(rtc::AsyncPacketSocket* socket, const char* data,
94 size_t len, const rtc::SocketAddress& remote_addr, 96 size_t len, const rtc::SocketAddress& remote_addr,
95 const rtc::PacketTime& packet_time) { 97 const rtc::PacketTime& packet_time) {
96 recv_packets_.push_back(std::string(data, len)); 98 recv_packets_.push_back(std::string(data, len));
97 } 99 }
98 100
101 void OnSentPacket(rtc::AsyncPacketSocket* socket,
102 const rtc::SentPacket& packet) {
103 ++sent_packets_;
104 }
105
99 void OnNewConnection(rtc::AsyncPacketSocket* server, 106 void OnNewConnection(rtc::AsyncPacketSocket* server,
100 rtc::AsyncPacketSocket* new_socket) { 107 rtc::AsyncPacketSocket* new_socket) {
101 listen_socket_.reset(new_socket); 108 listen_socket_.reset(new_socket);
102 new_socket->SignalReadPacket.connect( 109 new_socket->SignalReadPacket.connect(
103 this, &AsyncStunTCPSocketTest::OnReadPacket); 110 this, &AsyncStunTCPSocketTest::OnReadPacket);
104 } 111 }
105 112
106 bool Send(const void* data, size_t len) { 113 bool Send(const void* data, size_t len) {
107 rtc::PacketOptions options; 114 rtc::PacketOptions options;
108 size_t ret = send_socket_->Send( 115 size_t ret = send_socket_->Send(
(...skipping 11 matching lines...) Expand all
120 } 127 }
121 return ret; 128 return ret;
122 } 129 }
123 130
124 std::unique_ptr<rtc::VirtualSocketServer> vss_; 131 std::unique_ptr<rtc::VirtualSocketServer> vss_;
125 rtc::AutoSocketServerThread thread_; 132 rtc::AutoSocketServerThread thread_;
126 std::unique_ptr<AsyncStunTCPSocket> send_socket_; 133 std::unique_ptr<AsyncStunTCPSocket> send_socket_;
127 std::unique_ptr<AsyncStunTCPSocket> recv_socket_; 134 std::unique_ptr<AsyncStunTCPSocket> recv_socket_;
128 std::unique_ptr<rtc::AsyncPacketSocket> listen_socket_; 135 std::unique_ptr<rtc::AsyncPacketSocket> listen_socket_;
129 std::list<std::string> recv_packets_; 136 std::list<std::string> recv_packets_;
137 int sent_packets_ = 0;
130 }; 138 };
131 139
132 // Testing a stun packet sent/recv properly. 140 // Testing a stun packet sent/recv properly.
133 TEST_F(AsyncStunTCPSocketTest, TestSingleStunPacket) { 141 TEST_F(AsyncStunTCPSocketTest, TestSingleStunPacket) {
134 EXPECT_TRUE(Send(kStunMessageWithZeroLength, 142 EXPECT_TRUE(Send(kStunMessageWithZeroLength,
135 sizeof(kStunMessageWithZeroLength))); 143 sizeof(kStunMessageWithZeroLength)));
136 EXPECT_EQ(1u, recv_packets_.size()); 144 EXPECT_EQ(1u, recv_packets_.size());
137 EXPECT_TRUE(CheckData(kStunMessageWithZeroLength, 145 EXPECT_TRUE(CheckData(kStunMessageWithZeroLength,
138 sizeof(kStunMessageWithZeroLength))); 146 sizeof(kStunMessageWithZeroLength)));
139 } 147 }
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // Investigate why WriteEvent is not signaled from VSS. 260 // Investigate why WriteEvent is not signaled from VSS.
253 TEST_F(AsyncStunTCPSocketTest, DISABLED_TestWithSmallSendBuffer) { 261 TEST_F(AsyncStunTCPSocketTest, DISABLED_TestWithSmallSendBuffer) {
254 vss_->set_send_buffer_capacity(1); 262 vss_->set_send_buffer_capacity(1);
255 Send(kTurnChannelDataMessageWithOddLength, 263 Send(kTurnChannelDataMessageWithOddLength,
256 sizeof(kTurnChannelDataMessageWithOddLength)); 264 sizeof(kTurnChannelDataMessageWithOddLength));
257 EXPECT_EQ(1u, recv_packets_.size()); 265 EXPECT_EQ(1u, recv_packets_.size());
258 EXPECT_TRUE(CheckData(kTurnChannelDataMessageWithOddLength, 266 EXPECT_TRUE(CheckData(kTurnChannelDataMessageWithOddLength,
259 sizeof(kTurnChannelDataMessageWithOddLength))); 267 sizeof(kTurnChannelDataMessageWithOddLength)));
260 } 268 }
261 269
270 // Test that SignalSentPacket is fired when a packet is sent.
271 TEST_F(AsyncStunTCPSocketTest, SignalSentPacketFiredWhenPacketSent) {
272 ASSERT_TRUE(
273 Send(kStunMessageWithZeroLength, sizeof(kStunMessageWithZeroLength)));
274 EXPECT_EQ(1, sent_packets_);
275 // Send another packet for good measure.
276 ASSERT_TRUE(
277 Send(kStunMessageWithZeroLength, sizeof(kStunMessageWithZeroLength)));
278 EXPECT_EQ(2, sent_packets_);
279 }
280
281 // Test that SignalSentPacket isn't fired when a packet isn't sent (for
282 // example, because it's invalid).
283 TEST_F(AsyncStunTCPSocketTest, SignalSentPacketNotFiredWhenPacketNotSent) {
284 // Attempt to send a packet that's too small; since it isn't sent,
285 // SignalSentPacket shouldn't fire.
286 char data[1];
287 ASSERT_FALSE(Send(data, sizeof(data)));
288 EXPECT_EQ(0, sent_packets_);
289 }
290
262 } // namespace cricket 291 } // namespace cricket
OLDNEW
« webrtc/p2p/base/asyncstuntcpsocket.cc ('K') | « webrtc/p2p/base/asyncstuntcpsocket.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698