OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stddef.h> | 5 #include <stddef.h> |
6 #include <string> | 6 #include <string> |
7 #include <sys/epoll.h> | 7 #include <sys/epoll.h> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
151 } | 151 } |
152 return params; | 152 return params; |
153 } | 153 } |
154 | 154 |
155 class ServerDelegate : public PacketDroppingTestWriter::Delegate { | 155 class ServerDelegate : public PacketDroppingTestWriter::Delegate { |
156 public: | 156 public: |
157 ServerDelegate(TestWriterFactory* writer_factory, | 157 ServerDelegate(TestWriterFactory* writer_factory, |
158 QuicDispatcher* dispatcher) | 158 QuicDispatcher* dispatcher) |
159 : writer_factory_(writer_factory), | 159 : writer_factory_(writer_factory), |
160 dispatcher_(dispatcher) {} | 160 dispatcher_(dispatcher) {} |
161 virtual ~ServerDelegate() {} | 161 ~ServerDelegate() override {} |
162 virtual void OnPacketSent(WriteResult result) override { | 162 void OnPacketSent(WriteResult result) override { |
163 writer_factory_->OnPacketSent(result); | 163 writer_factory_->OnPacketSent(result); |
164 } | 164 } |
165 virtual void OnCanWrite() override { dispatcher_->OnCanWrite(); } | 165 void OnCanWrite() override { dispatcher_->OnCanWrite(); } |
| 166 |
166 private: | 167 private: |
167 TestWriterFactory* writer_factory_; | 168 TestWriterFactory* writer_factory_; |
168 QuicDispatcher* dispatcher_; | 169 QuicDispatcher* dispatcher_; |
169 }; | 170 }; |
170 | 171 |
171 class ClientDelegate : public PacketDroppingTestWriter::Delegate { | 172 class ClientDelegate : public PacketDroppingTestWriter::Delegate { |
172 public: | 173 public: |
173 explicit ClientDelegate(QuicClient* client) : client_(client) {} | 174 explicit ClientDelegate(QuicClient* client) : client_(client) {} |
174 virtual ~ClientDelegate() {} | 175 ~ClientDelegate() override {} |
175 virtual void OnPacketSent(WriteResult result) override {} | 176 void OnPacketSent(WriteResult result) override {} |
176 virtual void OnCanWrite() override { | 177 void OnCanWrite() override { |
177 EpollEvent event(EPOLLOUT, false); | 178 EpollEvent event(EPOLLOUT, false); |
178 client_->OnEvent(client_->fd(), &event); | 179 client_->OnEvent(client_->fd(), &event); |
179 } | 180 } |
180 private: | 181 private: |
181 QuicClient* client_; | 182 QuicClient* client_; |
182 }; | 183 }; |
183 | 184 |
184 class EndToEndTest : public ::testing::TestWithParam<TestParams> { | 185 class EndToEndTest : public ::testing::TestWithParam<TestParams> { |
185 protected: | 186 protected: |
186 EndToEndTest() | 187 EndToEndTest() |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 } | 314 } |
314 static EpollEvent event(EPOLLOUT, false); | 315 static EpollEvent event(EPOLLOUT, false); |
315 client_writer_->Initialize( | 316 client_writer_->Initialize( |
316 reinterpret_cast<QuicEpollConnectionHelper*>( | 317 reinterpret_cast<QuicEpollConnectionHelper*>( |
317 QuicConnectionPeer::GetHelper( | 318 QuicConnectionPeer::GetHelper( |
318 client_->client()->session()->connection())), | 319 client_->client()->session()->connection())), |
319 new ClientDelegate(client_->client())); | 320 new ClientDelegate(client_->client())); |
320 return client_->client()->connected(); | 321 return client_->client()->connected(); |
321 } | 322 } |
322 | 323 |
323 virtual void SetUp() override { | 324 void SetUp() override { |
324 // The ownership of these gets transferred to the QuicPacketWriterWrapper | 325 // The ownership of these gets transferred to the QuicPacketWriterWrapper |
325 // and TestWriterFactory when Initialize() is executed. | 326 // and TestWriterFactory when Initialize() is executed. |
326 client_writer_ = new PacketDroppingTestWriter(); | 327 client_writer_ = new PacketDroppingTestWriter(); |
327 server_writer_ = new PacketDroppingTestWriter(); | 328 server_writer_ = new PacketDroppingTestWriter(); |
328 } | 329 } |
329 | 330 |
330 virtual void TearDown() override { | 331 void TearDown() override { StopServer(); } |
331 StopServer(); | |
332 } | |
333 | 332 |
334 void StartServer() { | 333 void StartServer() { |
335 server_thread_.reset( | 334 server_thread_.reset( |
336 new ServerThread( | 335 new ServerThread( |
337 new QuicServer(server_config_, server_supported_versions_), | 336 new QuicServer(server_config_, server_supported_versions_), |
338 server_address_, | 337 server_address_, |
339 strike_register_no_startup_period_)); | 338 strike_register_no_startup_period_)); |
340 server_thread_->Initialize(); | 339 server_thread_->Initialize(); |
341 server_address_ = IPEndPoint(server_address_.address(), | 340 server_address_ = IPEndPoint(server_address_.address(), |
342 server_thread_->GetPort()); | 341 server_thread_->GetPort()); |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 } | 1094 } |
1096 | 1095 |
1097 class WrongAddressWriter : public QuicPacketWriterWrapper { | 1096 class WrongAddressWriter : public QuicPacketWriterWrapper { |
1098 public: | 1097 public: |
1099 WrongAddressWriter() { | 1098 WrongAddressWriter() { |
1100 IPAddressNumber ip; | 1099 IPAddressNumber ip; |
1101 CHECK(net::ParseIPLiteralToNumber("127.0.0.2", &ip)); | 1100 CHECK(net::ParseIPLiteralToNumber("127.0.0.2", &ip)); |
1102 self_address_ = IPEndPoint(ip, 0); | 1101 self_address_ = IPEndPoint(ip, 0); |
1103 } | 1102 } |
1104 | 1103 |
1105 virtual WriteResult WritePacket( | 1104 WriteResult WritePacket(const char* buffer, |
1106 const char* buffer, | 1105 size_t buf_len, |
1107 size_t buf_len, | 1106 const IPAddressNumber& real_self_address, |
1108 const IPAddressNumber& real_self_address, | 1107 const IPEndPoint& peer_address) override { |
1109 const IPEndPoint& peer_address) override { | |
1110 // Use wrong address! | 1108 // Use wrong address! |
1111 return QuicPacketWriterWrapper::WritePacket( | 1109 return QuicPacketWriterWrapper::WritePacket( |
1112 buffer, buf_len, self_address_.address(), peer_address); | 1110 buffer, buf_len, self_address_.address(), peer_address); |
1113 } | 1111 } |
1114 | 1112 |
1115 virtual bool IsWriteBlockedDataBuffered() const override { | 1113 bool IsWriteBlockedDataBuffered() const override { return false; } |
1116 return false; | |
1117 } | |
1118 | 1114 |
1119 IPEndPoint self_address_; | 1115 IPEndPoint self_address_; |
1120 }; | 1116 }; |
1121 | 1117 |
1122 TEST_P(EndToEndTest, ConnectionMigrationClientIPChanged) { | 1118 TEST_P(EndToEndTest, ConnectionMigrationClientIPChanged) { |
1123 // Tests that the client's IP can not change during an established QUIC | 1119 // Tests that the client's IP can not change during an established QUIC |
1124 // connection. If it changes, the connection is closed by the server as we do | 1120 // connection. If it changes, the connection is closed by the server as we do |
1125 // not yet support IP migration. | 1121 // not yet support IP migration. |
1126 ASSERT_TRUE(Initialize()); | 1122 ASSERT_TRUE(Initialize()); |
1127 | 1123 |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1362 QuicSession* session = dispatcher->session_map().begin()->second; | 1358 QuicSession* session = dispatcher->session_map().begin()->second; |
1363 EXPECT_EQ(0u, QuicSessionPeer::GetLocallyClosedStreamsHighestOffset( | 1359 EXPECT_EQ(0u, QuicSessionPeer::GetLocallyClosedStreamsHighestOffset( |
1364 session).size()); | 1360 session).size()); |
1365 server_thread_->Resume(); | 1361 server_thread_->Resume(); |
1366 } | 1362 } |
1367 | 1363 |
1368 } // namespace | 1364 } // namespace |
1369 } // namespace test | 1365 } // namespace test |
1370 } // namespace tools | 1366 } // namespace tools |
1371 } // namespace net | 1367 } // namespace net |
OLD | NEW |