| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "net/quic/core/quic_server_session_base.h" | 5 #include "net/quic/core/quic_server_session_base.h" |
| 6 | 6 |
| 7 #include <cstdint> | 7 #include <cstdint> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 } | 68 } |
| 69 }; | 69 }; |
| 70 | 70 |
| 71 namespace { | 71 namespace { |
| 72 | 72 |
| 73 class TestServerSession : public QuicServerSessionBase { | 73 class TestServerSession : public QuicServerSessionBase { |
| 74 public: | 74 public: |
| 75 TestServerSession(const QuicConfig& config, | 75 TestServerSession(const QuicConfig& config, |
| 76 QuicConnection* connection, | 76 QuicConnection* connection, |
| 77 QuicServerSessionBase::Visitor* visitor, | 77 QuicServerSessionBase::Visitor* visitor, |
| 78 QuicServerSessionBase::Helper* helper, | 78 QuicCryptoServerStream::Helper* helper, |
| 79 const QuicCryptoServerConfig* crypto_config, | 79 const QuicCryptoServerConfig* crypto_config, |
| 80 QuicCompressedCertsCache* compressed_certs_cache) | 80 QuicCompressedCertsCache* compressed_certs_cache) |
| 81 : QuicServerSessionBase(config, | 81 : QuicServerSessionBase(config, |
| 82 connection, | 82 connection, |
| 83 visitor, | 83 visitor, |
| 84 helper, | 84 helper, |
| 85 crypto_config, | 85 crypto_config, |
| 86 compressed_certs_cache) {} | 86 compressed_certs_cache) {} |
| 87 | 87 |
| 88 ~TestServerSession() override { delete connection(); }; | 88 ~TestServerSession() override { delete connection(); }; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 107 stream->SetPriority(priority); | 107 stream->SetPriority(priority); |
| 108 ActivateStream(stream); | 108 ActivateStream(stream); |
| 109 return stream; | 109 return stream; |
| 110 } | 110 } |
| 111 | 111 |
| 112 QuicCryptoServerStreamBase* CreateQuicCryptoServerStream( | 112 QuicCryptoServerStreamBase* CreateQuicCryptoServerStream( |
| 113 const QuicCryptoServerConfig* crypto_config, | 113 const QuicCryptoServerConfig* crypto_config, |
| 114 QuicCompressedCertsCache* compressed_certs_cache) override { | 114 QuicCompressedCertsCache* compressed_certs_cache) override { |
| 115 return new QuicCryptoServerStream( | 115 return new QuicCryptoServerStream( |
| 116 crypto_config, compressed_certs_cache, | 116 crypto_config, compressed_certs_cache, |
| 117 FLAGS_enable_quic_stateless_reject_support, this); | 117 FLAGS_enable_quic_stateless_reject_support, this, stream_helper()); |
| 118 } | 118 } |
| 119 }; | 119 }; |
| 120 | 120 |
| 121 const size_t kMaxStreamsForTest = 10; | 121 const size_t kMaxStreamsForTest = 10; |
| 122 | 122 |
| 123 class QuicServerSessionBaseTest : public ::testing::TestWithParam<QuicVersion> { | 123 class QuicServerSessionBaseTest : public ::testing::TestWithParam<QuicVersion> { |
| 124 protected: | 124 protected: |
| 125 QuicServerSessionBaseTest() | 125 QuicServerSessionBaseTest() |
| 126 : crypto_config_(QuicCryptoServerConfig::TESTING, | 126 : crypto_config_(QuicCryptoServerConfig::TESTING, |
| 127 QuicRandom::GetInstance(), | 127 QuicRandom::GetInstance(), |
| 128 CryptoTestUtils::ProofSourceForTesting()), | 128 CryptoTestUtils::ProofSourceForTesting()), |
| 129 compressed_certs_cache_( | 129 compressed_certs_cache_( |
| 130 QuicCompressedCertsCache::kQuicCompressedCertsCacheSize) { | 130 QuicCompressedCertsCache::kQuicCompressedCertsCacheSize) { |
| 131 config_.SetMaxStreamsPerConnection(kMaxStreamsForTest, kMaxStreamsForTest); | 131 config_.SetMaxStreamsPerConnection(kMaxStreamsForTest, kMaxStreamsForTest); |
| 132 config_.SetMaxIncomingDynamicStreamsToSend(kMaxStreamsForTest); | 132 config_.SetMaxIncomingDynamicStreamsToSend(kMaxStreamsForTest); |
| 133 QuicConfigPeer::SetReceivedMaxIncomingDynamicStreams(&config_, | 133 QuicConfigPeer::SetReceivedMaxIncomingDynamicStreams(&config_, |
| 134 kMaxStreamsForTest); | 134 kMaxStreamsForTest); |
| 135 config_.SetInitialStreamFlowControlWindowToSend( | 135 config_.SetInitialStreamFlowControlWindowToSend( |
| 136 kInitialStreamFlowControlWindowForTest); | 136 kInitialStreamFlowControlWindowForTest); |
| 137 config_.SetInitialSessionFlowControlWindowToSend( | 137 config_.SetInitialSessionFlowControlWindowToSend( |
| 138 kInitialSessionFlowControlWindowForTest); | 138 kInitialSessionFlowControlWindowForTest); |
| 139 | 139 |
| 140 connection_ = new StrictMock<MockQuicConnection>( | 140 connection_ = new StrictMock<MockQuicConnection>( |
| 141 &helper_, &alarm_factory_, Perspective::IS_SERVER, | 141 &helper_, &alarm_factory_, Perspective::IS_SERVER, |
| 142 SupportedVersions(GetParam())); | 142 SupportedVersions(GetParam())); |
| 143 session_.reset(new TestServerSession(config_, connection_, &owner_, | 143 session_.reset(new TestServerSession(config_, connection_, &owner_, |
| 144 &session_helper_, &crypto_config_, | 144 &stream_helper_, &crypto_config_, |
| 145 &compressed_certs_cache_)); | 145 &compressed_certs_cache_)); |
| 146 MockClock clock; | 146 MockClock clock; |
| 147 handshake_message_.reset(crypto_config_.AddDefaultConfig( | 147 handshake_message_.reset(crypto_config_.AddDefaultConfig( |
| 148 QuicRandom::GetInstance(), &clock, | 148 QuicRandom::GetInstance(), &clock, |
| 149 QuicCryptoServerConfig::ConfigOptions())); | 149 QuicCryptoServerConfig::ConfigOptions())); |
| 150 session_->Initialize(); | 150 session_->Initialize(); |
| 151 visitor_ = QuicConnectionPeer::GetVisitor(connection_); | 151 visitor_ = QuicConnectionPeer::GetVisitor(connection_); |
| 152 } | 152 } |
| 153 | 153 |
| 154 StrictMock<MockQuicServerSessionVisitor> owner_; | 154 StrictMock<MockQuicServerSessionVisitor> owner_; |
| 155 StrictMock<MockQuicServerSessionHelper> session_helper_; | 155 StrictMock<MockQuicCryptoServerStreamHelper> stream_helper_; |
| 156 MockQuicConnectionHelper helper_; | 156 MockQuicConnectionHelper helper_; |
| 157 MockAlarmFactory alarm_factory_; | 157 MockAlarmFactory alarm_factory_; |
| 158 StrictMock<MockQuicConnection>* connection_; | 158 StrictMock<MockQuicConnection>* connection_; |
| 159 QuicConfig config_; | 159 QuicConfig config_; |
| 160 QuicCryptoServerConfig crypto_config_; | 160 QuicCryptoServerConfig crypto_config_; |
| 161 QuicCompressedCertsCache compressed_certs_cache_; | 161 QuicCompressedCertsCache compressed_certs_cache_; |
| 162 std::unique_ptr<TestServerSession> session_; | 162 std::unique_ptr<TestServerSession> session_; |
| 163 std::unique_ptr<CryptoHandshakeMessage> handshake_message_; | 163 std::unique_ptr<CryptoHandshakeMessage> handshake_message_; |
| 164 QuicConnectionVisitorInterface* visitor_; | 164 QuicConnectionVisitorInterface* visitor_; |
| 165 }; | 165 }; |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 EXPECT_QUIC_BUG( | 364 EXPECT_QUIC_BUG( |
| 365 QuicServerSessionBasePeer::GetOrCreateDynamicStream(session_.get(), 5), | 365 QuicServerSessionBasePeer::GetOrCreateDynamicStream(session_.get(), 5), |
| 366 "ShouldCreateIncomingDynamicStream called when disconnected"); | 366 "ShouldCreateIncomingDynamicStream called when disconnected"); |
| 367 } | 367 } |
| 368 | 368 |
| 369 class MockQuicCryptoServerStream : public QuicCryptoServerStream { | 369 class MockQuicCryptoServerStream : public QuicCryptoServerStream { |
| 370 public: | 370 public: |
| 371 explicit MockQuicCryptoServerStream( | 371 explicit MockQuicCryptoServerStream( |
| 372 const QuicCryptoServerConfig* crypto_config, | 372 const QuicCryptoServerConfig* crypto_config, |
| 373 QuicCompressedCertsCache* compressed_certs_cache, | 373 QuicCompressedCertsCache* compressed_certs_cache, |
| 374 QuicServerSessionBase* session) | 374 QuicServerSessionBase* session, |
| 375 QuicCryptoServerStream::Helper* helper) |
| 375 : QuicCryptoServerStream(crypto_config, | 376 : QuicCryptoServerStream(crypto_config, |
| 376 compressed_certs_cache, | 377 compressed_certs_cache, |
| 377 FLAGS_enable_quic_stateless_reject_support, | 378 FLAGS_enable_quic_stateless_reject_support, |
| 378 session) {} | 379 session, |
| 380 helper) {} |
| 379 ~MockQuicCryptoServerStream() override {} | 381 ~MockQuicCryptoServerStream() override {} |
| 380 | 382 |
| 381 MOCK_METHOD1(SendServerConfigUpdate, | 383 MOCK_METHOD1(SendServerConfigUpdate, |
| 382 void(const CachedNetworkParameters* cached_network_parameters)); | 384 void(const CachedNetworkParameters* cached_network_parameters)); |
| 383 | 385 |
| 384 void set_encryption_established(bool has_established) { | 386 void set_encryption_established(bool has_established) { |
| 385 encryption_established_ = has_established; | 387 encryption_established_ = has_established; |
| 386 } | 388 } |
| 387 | 389 |
| 388 private: | 390 private: |
| (...skipping 15 matching lines...) Expand all Loading... |
| 404 session_->OnConfigNegotiated(); | 406 session_->OnConfigNegotiated(); |
| 405 EXPECT_TRUE( | 407 EXPECT_TRUE( |
| 406 QuicServerSessionBasePeer::IsBandwidthResumptionEnabled(session_.get())); | 408 QuicServerSessionBasePeer::IsBandwidthResumptionEnabled(session_.get())); |
| 407 | 409 |
| 408 int32_t bandwidth_estimate_kbytes_per_second = 123; | 410 int32_t bandwidth_estimate_kbytes_per_second = 123; |
| 409 int32_t max_bandwidth_estimate_kbytes_per_second = 134; | 411 int32_t max_bandwidth_estimate_kbytes_per_second = 134; |
| 410 int32_t max_bandwidth_estimate_timestamp = 1122334455; | 412 int32_t max_bandwidth_estimate_timestamp = 1122334455; |
| 411 const string serving_region = "not a real region"; | 413 const string serving_region = "not a real region"; |
| 412 session_->set_serving_region(serving_region); | 414 session_->set_serving_region(serving_region); |
| 413 | 415 |
| 414 MockQuicCryptoServerStream* crypto_stream = new MockQuicCryptoServerStream( | 416 MockQuicCryptoServerStream* crypto_stream = |
| 415 &crypto_config_, &compressed_certs_cache_, session_.get()); | 417 new MockQuicCryptoServerStream(&crypto_config_, &compressed_certs_cache_, |
| 418 session_.get(), &stream_helper_); |
| 416 QuicServerSessionBasePeer::SetCryptoStream(session_.get(), crypto_stream); | 419 QuicServerSessionBasePeer::SetCryptoStream(session_.get(), crypto_stream); |
| 417 | 420 |
| 418 // Set some initial bandwidth values. | 421 // Set some initial bandwidth values. |
| 419 QuicSentPacketManager* sent_packet_manager = | 422 QuicSentPacketManager* sent_packet_manager = |
| 420 QuicConnectionPeer::GetSentPacketManager(session_->connection(), | 423 QuicConnectionPeer::GetSentPacketManager(session_->connection(), |
| 421 kDefaultPathId); | 424 kDefaultPathId); |
| 422 QuicSustainedBandwidthRecorder& bandwidth_recorder = | 425 QuicSustainedBandwidthRecorder& bandwidth_recorder = |
| 423 QuicSentPacketManagerPeer::GetBandwidthRecorder(sent_packet_manager); | 426 QuicSentPacketManagerPeer::GetBandwidthRecorder(sent_packet_manager); |
| 424 // Seed an rtt measurement equal to the initial default rtt. | 427 // Seed an rtt measurement equal to the initial default rtt. |
| 425 RttStats* rtt_stats = | 428 RttStats* rtt_stats = |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 555 EXPECT_FALSE( | 558 EXPECT_FALSE( |
| 556 QuicServerSessionBasePeer::IsBandwidthResumptionEnabled(session_.get())); | 559 QuicServerSessionBasePeer::IsBandwidthResumptionEnabled(session_.get())); |
| 557 session_->OnConfigNegotiated(); | 560 session_->OnConfigNegotiated(); |
| 558 EXPECT_FALSE( | 561 EXPECT_FALSE( |
| 559 QuicServerSessionBasePeer::IsBandwidthResumptionEnabled(session_.get())); | 562 QuicServerSessionBasePeer::IsBandwidthResumptionEnabled(session_.get())); |
| 560 } | 563 } |
| 561 | 564 |
| 562 } // namespace | 565 } // namespace |
| 563 } // namespace test | 566 } // namespace test |
| 564 } // namespace net | 567 } // namespace net |
| OLD | NEW |