| 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 |