| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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 | 
| OLD | NEW | 
|---|