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 <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 } | 211 } |
212 | 212 |
213 virtual void TearDown() { | 213 virtual void TearDown() { |
214 StopServer(); | 214 StopServer(); |
215 } | 215 } |
216 | 216 |
217 void StartServer() { | 217 void StartServer() { |
218 server_thread_.reset(new ServerThread(server_address_, server_config_, | 218 server_thread_.reset(new ServerThread(server_address_, server_config_, |
219 server_supported_versions_, | 219 server_supported_versions_, |
220 strike_register_no_startup_period_)); | 220 strike_register_no_startup_period_)); |
221 server_thread_->Start(); | 221 server_thread_->Initialize(); |
222 server_thread_->WaitForServerStartup(); | |
223 server_address_ = IPEndPoint(server_address_.address(), | 222 server_address_ = IPEndPoint(server_address_.address(), |
224 server_thread_->GetPort()); | 223 server_thread_->GetPort()); |
225 QuicDispatcher* dispatcher = | 224 QuicDispatcher* dispatcher = |
226 QuicServerPeer::GetDispatcher(server_thread_->server()); | 225 QuicServerPeer::GetDispatcher(server_thread_->server()); |
| 226 QuicDispatcherPeer::UseWriter(dispatcher, server_writer_); |
227 server_writer_->SetConnectionHelper( | 227 server_writer_->SetConnectionHelper( |
228 QuicDispatcherPeer::GetHelper(dispatcher)); | 228 QuicDispatcherPeer::GetHelper(dispatcher)); |
229 // TODO(rtenneti): Enable server_thread's Pause/Resume. | 229 server_thread_->Start(); |
230 // server_thread_->Pause(); | |
231 QuicDispatcherPeer::UseWriter(dispatcher, server_writer_); | |
232 // TODO(rtenneti): Enable server_thread's Pause/Resume. | |
233 // server_thread_->Resume(); | |
234 server_started_ = true; | 230 server_started_ = true; |
235 } | 231 } |
236 | 232 |
237 void StopServer() { | 233 void StopServer() { |
238 if (!server_started_) | 234 if (!server_started_) |
239 return; | 235 return; |
240 if (server_thread_.get()) { | 236 if (server_thread_.get()) { |
241 server_thread_->Quit(); | 237 server_thread_->Quit(); |
242 server_thread_->Join(); | 238 server_thread_->Join(); |
243 } | 239 } |
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
721 TEST_P(EndToEndTest, InitialRTT) { | 717 TEST_P(EndToEndTest, InitialRTT) { |
722 // Client tries to negotiate twice the server's max and negotiation settles | 718 // Client tries to negotiate twice the server's max and negotiation settles |
723 // on the max. | 719 // on the max. |
724 client_config_.set_initial_round_trip_time_us(2 * kMaxInitialRoundTripTimeUs, | 720 client_config_.set_initial_round_trip_time_us(2 * kMaxInitialRoundTripTimeUs, |
725 0); | 721 0); |
726 | 722 |
727 ASSERT_TRUE(Initialize()); | 723 ASSERT_TRUE(Initialize()); |
728 client_->client()->WaitForCryptoHandshakeConfirmed(); | 724 client_->client()->WaitForCryptoHandshakeConfirmed(); |
729 server_thread_->WaitForCryptoHandshakeConfirmed(); | 725 server_thread_->WaitForCryptoHandshakeConfirmed(); |
730 | 726 |
731 // Pause the server so we can access the server's internals without races. | 727 server_thread_->Pause(); |
732 // TODO(rtenneti): Enable server_thread's Pause/Resume. | |
733 // server_thread_->Pause(); | |
734 QuicDispatcher* dispatcher = | 728 QuicDispatcher* dispatcher = |
735 QuicServerPeer::GetDispatcher(server_thread_->server()); | 729 QuicServerPeer::GetDispatcher(server_thread_->server()); |
736 ASSERT_EQ(1u, dispatcher->session_map().size()); | 730 ASSERT_EQ(1u, dispatcher->session_map().size()); |
737 QuicSession* session = dispatcher->session_map().begin()->second; | 731 QuicSession* session = dispatcher->session_map().begin()->second; |
738 QuicConfig* client_negotiated_config = client_->client()->session()->config(); | 732 QuicConfig* client_negotiated_config = client_->client()->session()->config(); |
739 QuicConfig* server_negotiated_config = session->config(); | 733 QuicConfig* server_negotiated_config = session->config(); |
740 const QuicSentPacketManager& client_sent_packet_manager = | 734 const QuicSentPacketManager& client_sent_packet_manager = |
741 client_->client()->session()->connection()->sent_packet_manager(); | 735 client_->client()->session()->connection()->sent_packet_manager(); |
742 const QuicSentPacketManager& server_sent_packet_manager = | 736 const QuicSentPacketManager& server_sent_packet_manager = |
743 session->connection()->sent_packet_manager(); | 737 session->connection()->sent_packet_manager(); |
744 | 738 |
745 EXPECT_EQ(kMaxInitialRoundTripTimeUs, | 739 EXPECT_EQ(kMaxInitialRoundTripTimeUs, |
746 client_negotiated_config->initial_round_trip_time_us()); | 740 client_negotiated_config->initial_round_trip_time_us()); |
747 EXPECT_EQ(kMaxInitialRoundTripTimeUs, | 741 EXPECT_EQ(kMaxInitialRoundTripTimeUs, |
748 server_negotiated_config->initial_round_trip_time_us()); | 742 server_negotiated_config->initial_round_trip_time_us()); |
749 // Now that acks have been exchanged, the RTT estimate has decreased on the | 743 // Now that acks have been exchanged, the RTT estimate has decreased on the |
750 // server and is not infinite on the client. | 744 // server and is not infinite on the client. |
751 EXPECT_FALSE(client_sent_packet_manager.SmoothedRtt().IsInfinite()); | 745 EXPECT_FALSE(client_sent_packet_manager.SmoothedRtt().IsInfinite()); |
752 EXPECT_GE(static_cast<int64>(kMaxInitialRoundTripTimeUs), | 746 EXPECT_GE(static_cast<int64>(kMaxInitialRoundTripTimeUs), |
753 server_sent_packet_manager.SmoothedRtt().ToMicroseconds()); | 747 server_sent_packet_manager.SmoothedRtt().ToMicroseconds()); |
754 // TODO(rtenneti): Enable server_thread's Pause/Resume. | 748 server_thread_->Resume(); |
755 // server_thread_->Resume(); | |
756 } | 749 } |
757 | 750 |
758 TEST_P(EndToEndTest, ResetConnection) { | 751 TEST_P(EndToEndTest, ResetConnection) { |
759 ASSERT_TRUE(Initialize()); | 752 ASSERT_TRUE(Initialize()); |
760 client_->client()->WaitForCryptoHandshakeConfirmed(); | 753 client_->client()->WaitForCryptoHandshakeConfirmed(); |
761 | 754 |
762 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); | 755 EXPECT_EQ(kFooResponseBody, client_->SendSynchronousRequest("/foo")); |
763 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code()); | 756 EXPECT_EQ(200u, client_->response_headers()->parsed_response_code()); |
764 client_->ResetConnection(); | 757 client_->ResetConnection(); |
765 EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest("/bar")); | 758 EXPECT_EQ(kBarResponseBody, client_->SendSynchronousRequest("/bar")); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
863 client_->SendSynchronousRequest("/bar"); | 856 client_->SendSynchronousRequest("/bar"); |
864 | 857 |
865 EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error()); | 858 EXPECT_EQ(QUIC_STREAM_CONNECTION_ERROR, client_->stream_error()); |
866 EXPECT_EQ(QUIC_ERROR_MIGRATING_ADDRESS, client_->connection_error()); | 859 EXPECT_EQ(QUIC_ERROR_MIGRATING_ADDRESS, client_->connection_error()); |
867 } | 860 } |
868 | 861 |
869 } // namespace | 862 } // namespace |
870 } // namespace test | 863 } // namespace test |
871 } // namespace tools | 864 } // namespace tools |
872 } // namespace net | 865 } // namespace net |
OLD | NEW |