Index: net/quic/quic_client_session_test.cc |
diff --git a/net/quic/quic_client_session_test.cc b/net/quic/quic_client_session_test.cc |
deleted file mode 100644 |
index ee7ee0cb637a4318bdec6cbd576c2bec8ce99182..0000000000000000000000000000000000000000 |
--- a/net/quic/quic_client_session_test.cc |
+++ /dev/null |
@@ -1,234 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/quic/quic_client_session.h" |
- |
-#include <vector> |
- |
-#include "base/base64.h" |
-#include "base/files/file_path.h" |
-#include "base/rand_util.h" |
-#include "net/base/capturing_net_log.h" |
-#include "net/base/test_completion_callback.h" |
-#include "net/base/test_data_directory.h" |
-#include "net/cert/cert_verify_result.h" |
-#include "net/http/transport_security_state.h" |
-#include "net/quic/crypto/aes_128_gcm_12_encrypter.h" |
-#include "net/quic/crypto/crypto_protocol.h" |
-#include "net/quic/crypto/proof_verifier_chromium.h" |
-#include "net/quic/crypto/quic_decrypter.h" |
-#include "net/quic/crypto/quic_encrypter.h" |
-#include "net/quic/crypto/quic_server_info.h" |
-#include "net/quic/test_tools/crypto_test_utils.h" |
-#include "net/quic/test_tools/quic_client_session_peer.h" |
-#include "net/quic/test_tools/quic_test_utils.h" |
-#include "net/quic/test_tools/simple_quic_framer.h" |
-#include "net/socket/socket_test_util.h" |
-#include "net/spdy/spdy_test_utils.h" |
-#include "net/test/cert_test_util.h" |
-#include "net/udp/datagram_client_socket.h" |
- |
-using testing::_; |
- |
-namespace net { |
-namespace test { |
-namespace { |
- |
-const char kServerHostname[] = "www.example.org"; |
-const uint16 kServerPort = 80; |
- |
-class QuicClientSessionTest : public ::testing::TestWithParam<QuicVersion> { |
- protected: |
- QuicClientSessionTest() |
- : connection_( |
- new PacketSavingConnection(false, SupportedVersions(GetParam()))), |
- session_(connection_, GetSocket().Pass(), nullptr, |
- &transport_security_state_, |
- make_scoped_ptr((QuicServerInfo*)nullptr), DefaultQuicConfig(), |
- base::MessageLoop::current()->message_loop_proxy().get(), |
- &net_log_) { |
- session_.InitializeSession(QuicServerId(kServerHostname, kServerPort, |
- /*is_secure=*/false, |
- PRIVACY_MODE_DISABLED), |
- &crypto_config_, nullptr); |
- // Advance the time, because timers do not like uninitialized times. |
- connection_->AdvanceTime(QuicTime::Delta::FromSeconds(1)); |
- } |
- |
- void TearDown() override { session_.CloseSessionOnError(ERR_ABORTED); } |
- |
- scoped_ptr<DatagramClientSocket> GetSocket() { |
- socket_factory_.AddSocketDataProvider(&socket_data_); |
- return socket_factory_.CreateDatagramClientSocket( |
- DatagramSocket::DEFAULT_BIND, base::Bind(&base::RandInt), |
- &net_log_, NetLog::Source()); |
- } |
- |
- void CompleteCryptoHandshake() { |
- ASSERT_EQ(ERR_IO_PENDING, |
- session_.CryptoConnect(false, callback_.callback())); |
- CryptoTestUtils::HandshakeWithFakeServer( |
- connection_, session_.GetCryptoStream()); |
- ASSERT_EQ(OK, callback_.WaitForResult()); |
- } |
- |
- PacketSavingConnection* connection_; |
- CapturingNetLog net_log_; |
- MockClientSocketFactory socket_factory_; |
- StaticSocketDataProvider socket_data_; |
- TransportSecurityState transport_security_state_; |
- QuicClientSession session_; |
- MockClock clock_; |
- MockRandom random_; |
- QuicConnectionVisitorInterface* visitor_; |
- TestCompletionCallback callback_; |
- QuicCryptoClientConfig crypto_config_; |
-}; |
- |
-INSTANTIATE_TEST_CASE_P(Tests, QuicClientSessionTest, |
- ::testing::ValuesIn(QuicSupportedVersions())); |
- |
-TEST_P(QuicClientSessionTest, CryptoConnect) { |
- CompleteCryptoHandshake(); |
-} |
- |
-TEST_P(QuicClientSessionTest, MaxNumStreams) { |
- CompleteCryptoHandshake(); |
- |
- std::vector<QuicReliableClientStream*> streams; |
- for (size_t i = 0; i < kDefaultMaxStreamsPerConnection; i++) { |
- QuicReliableClientStream* stream = session_.CreateOutgoingDataStream(); |
- EXPECT_TRUE(stream); |
- streams.push_back(stream); |
- } |
- EXPECT_FALSE(session_.CreateOutgoingDataStream()); |
- |
- // Close a stream and ensure I can now open a new one. |
- session_.CloseStream(streams[0]->id()); |
- EXPECT_TRUE(session_.CreateOutgoingDataStream()); |
-} |
- |
-TEST_P(QuicClientSessionTest, MaxNumStreamsViaRequest) { |
- CompleteCryptoHandshake(); |
- |
- std::vector<QuicReliableClientStream*> streams; |
- for (size_t i = 0; i < kDefaultMaxStreamsPerConnection; i++) { |
- QuicReliableClientStream* stream = session_.CreateOutgoingDataStream(); |
- EXPECT_TRUE(stream); |
- streams.push_back(stream); |
- } |
- |
- QuicReliableClientStream* stream; |
- QuicClientSession::StreamRequest stream_request; |
- TestCompletionCallback callback; |
- ASSERT_EQ(ERR_IO_PENDING, |
- stream_request.StartRequest(session_.GetWeakPtr(), &stream, |
- callback.callback())); |
- |
- // Close a stream and ensure I can now open a new one. |
- session_.CloseStream(streams[0]->id()); |
- ASSERT_TRUE(callback.have_result()); |
- EXPECT_EQ(OK, callback.WaitForResult()); |
- EXPECT_TRUE(stream != nullptr); |
-} |
- |
-TEST_P(QuicClientSessionTest, GoAwayReceived) { |
- CompleteCryptoHandshake(); |
- |
- // After receiving a GoAway, I should no longer be able to create outgoing |
- // streams. |
- session_.OnGoAway(QuicGoAwayFrame(QUIC_PEER_GOING_AWAY, 1u, "Going away.")); |
- EXPECT_EQ(nullptr, session_.CreateOutgoingDataStream()); |
-} |
- |
-TEST_P(QuicClientSessionTest, CanPool) { |
- // Load a cert that is valid for: |
- // www.example.org |
- // mail.example.org |
- // www.example.com |
- |
- ProofVerifyDetailsChromium details; |
- details.cert_verify_result.verified_cert = |
- ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); |
- ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); |
- |
- session_.OnProofVerifyDetailsAvailable(details); |
- CompleteCryptoHandshake(); |
- |
- EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED)); |
- EXPECT_FALSE(session_.CanPool("www.example.org", PRIVACY_MODE_ENABLED)); |
- EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); |
- EXPECT_TRUE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED)); |
- EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED)); |
-} |
- |
-TEST_P(QuicClientSessionTest, ConnectionPooledWithTlsChannelId) { |
- // Load a cert that is valid for: |
- // www.example.org |
- // mail.example.org |
- // www.example.com |
- |
- ProofVerifyDetailsChromium details; |
- details.cert_verify_result.verified_cert = |
- ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); |
- ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); |
- |
- session_.OnProofVerifyDetailsAvailable(details); |
- CompleteCryptoHandshake(); |
- QuicClientSessionPeer::SetChannelIDSent(&session_, true); |
- |
- EXPECT_TRUE(session_.CanPool("www.example.org", PRIVACY_MODE_DISABLED)); |
- EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); |
- EXPECT_FALSE(session_.CanPool("mail.example.com", PRIVACY_MODE_DISABLED)); |
- EXPECT_FALSE(session_.CanPool("mail.google.com", PRIVACY_MODE_DISABLED)); |
-} |
- |
-TEST_P(QuicClientSessionTest, ConnectionNotPooledWithDifferentPin) { |
- uint8 primary_pin = 1; |
- uint8 backup_pin = 2; |
- uint8 bad_pin = 3; |
- AddPin(&transport_security_state_, "mail.example.org", primary_pin, |
- backup_pin); |
- |
- ProofVerifyDetailsChromium details; |
- details.cert_verify_result.verified_cert = |
- ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); |
- details.cert_verify_result.is_issued_by_known_root = true; |
- details.cert_verify_result.public_key_hashes.push_back( |
- GetTestHashValue(bad_pin)); |
- |
- ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); |
- |
- session_.OnProofVerifyDetailsAvailable(details); |
- CompleteCryptoHandshake(); |
- QuicClientSessionPeer::SetChannelIDSent(&session_, true); |
- |
- EXPECT_FALSE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); |
-} |
- |
-TEST_P(QuicClientSessionTest, ConnectionPooledWithMatchingPin) { |
- uint8 primary_pin = 1; |
- uint8 backup_pin = 2; |
- AddPin(&transport_security_state_, "mail.example.org", primary_pin, |
- backup_pin); |
- |
- ProofVerifyDetailsChromium details; |
- details.cert_verify_result.verified_cert = |
- ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); |
- details.cert_verify_result.is_issued_by_known_root = true; |
- details.cert_verify_result.public_key_hashes.push_back( |
- GetTestHashValue(primary_pin)); |
- |
- ASSERT_TRUE(details.cert_verify_result.verified_cert.get()); |
- |
- session_.OnProofVerifyDetailsAvailable(details); |
- CompleteCryptoHandshake(); |
- QuicClientSessionPeer::SetChannelIDSent(&session_, true); |
- |
- EXPECT_TRUE(session_.CanPool("mail.example.org", PRIVACY_MODE_DISABLED)); |
-} |
- |
-} // namespace |
-} // namespace test |
-} // namespace net |