| Index: net/quic/quic_stream_factory_test.cc
|
| diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc
|
| index 2ce6ef4dcb014c7c3f70f6fabfb5ef305b5ea97d..d62ab8d73bec9b5ed760195f578dcfbadad05fc1 100644
|
| --- a/net/quic/quic_stream_factory_test.cc
|
| +++ b/net/quic/quic_stream_factory_test.cc
|
| @@ -34,6 +34,7 @@
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| using base::StringPiece;
|
| +using std::ostream;
|
| using std::string;
|
| using std::vector;
|
|
|
| @@ -43,6 +44,34 @@ namespace test {
|
| namespace {
|
| const char kDefaultServerHostName[] = "www.google.com";
|
| const int kDefaultServerPort = 443;
|
| +
|
| +// Run all tests with all the combinations of versions and
|
| +// enable_connection_racing.
|
| +struct TestParams {
|
| + TestParams(const QuicVersion version, bool enable_connection_racing)
|
| + : version(version), enable_connection_racing(enable_connection_racing) {}
|
| +
|
| + friend ostream& operator<<(ostream& os, const TestParams& p) {
|
| + os << "{ version: " << QuicVersionToString(p.version);
|
| + os << " enable_connection_racing: " << p.enable_connection_racing << " }";
|
| + return os;
|
| + }
|
| +
|
| + QuicVersion version;
|
| + bool enable_connection_racing;
|
| +};
|
| +
|
| +// Constructs various test permutations.
|
| +vector<TestParams> GetTestParams() {
|
| + vector<TestParams> params;
|
| + QuicVersionVector all_supported_versions = QuicSupportedVersions();
|
| + for (const QuicVersion version : all_supported_versions) {
|
| + params.push_back(TestParams(version, false));
|
| + params.push_back(TestParams(version, true));
|
| + }
|
| + return params;
|
| +}
|
| +
|
| } // namespace anonymous
|
|
|
| class QuicStreamFactoryPeer {
|
| @@ -100,6 +129,11 @@ class QuicStreamFactoryPeer {
|
| size_t load_server_info_timeout) {
|
| factory->load_server_info_timeout_ms_ = load_server_info_timeout;
|
| }
|
| +
|
| + static void SetEnableConnectionRacing(QuicStreamFactory* factory,
|
| + bool enable_connection_racing) {
|
| + factory->enable_connection_racing_ = enable_connection_racing;
|
| + }
|
| };
|
|
|
| class MockQuicServerInfo : public QuicServerInfo {
|
| @@ -135,14 +169,13 @@ class MockQuicServerInfoFactory : public QuicServerInfoFactory {
|
| }
|
| };
|
|
|
| -
|
| -class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
|
| +class QuicStreamFactoryTest : public ::testing::TestWithParam<TestParams> {
|
| protected:
|
| QuicStreamFactoryTest()
|
| : random_generator_(0),
|
| clock_(new MockClock()),
|
| runner_(new TestTaskRunner(clock_)),
|
| - maker_(GetParam(), 0, clock_),
|
| + maker_(GetParam().version, 0, clock_),
|
| cert_verifier_(CertVerifier::CreateDefault()),
|
| channel_id_service_(
|
| new ChannelIDService(new DefaultChannelIDStore(nullptr),
|
| @@ -158,7 +191,7 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
|
| clock_,
|
| kDefaultMaxPacketSize,
|
| std::string(),
|
| - SupportedVersions(GetParam()),
|
| + SupportedVersions(GetParam().version),
|
| /*enable_port_selection=*/true,
|
| /*always_require_handshake_confirmation=*/false,
|
| /*disable_connection_pooling=*/false,
|
| @@ -171,6 +204,8 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
|
| privacy_mode_(PRIVACY_MODE_DISABLED) {
|
| factory_.set_require_confirmation(false);
|
| clock_->AdvanceTime(QuicTime::Delta::FromSeconds(1));
|
| + QuicStreamFactoryPeer::SetEnableConnectionRacing(
|
| + &factory_, GetParam().enable_connection_racing);
|
| }
|
|
|
| scoped_ptr<QuicHttpStream> CreateIfSessionExists(
|
| @@ -244,7 +279,7 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
|
| QuicStreamId stream_id = kClientDataStreamId1;
|
| return maker_.MakeRstPacket(
|
| 1, true, stream_id,
|
| - AdjustErrorForVersion(QUIC_RST_ACKNOWLEDGEMENT, GetParam()));
|
| + AdjustErrorForVersion(QUIC_RST_ACKNOWLEDGEMENT, GetParam().version));
|
| }
|
|
|
| MockQuicServerInfoFactory quic_server_info_factory_;
|
| @@ -266,8 +301,9 @@ class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> {
|
| TestCompletionCallback callback_;
|
| };
|
|
|
| -INSTANTIATE_TEST_CASE_P(Version, QuicStreamFactoryTest,
|
| - ::testing::ValuesIn(QuicSupportedVersions()));
|
| +INSTANTIATE_TEST_CASE_P(Version,
|
| + QuicStreamFactoryTest,
|
| + ::testing::ValuesIn(GetTestParams()));
|
|
|
| TEST_P(QuicStreamFactoryTest, CreateIfSessionExists) {
|
| EXPECT_EQ(nullptr, CreateIfSessionExists(host_port_pair_, net_log_).get());
|
| @@ -1562,6 +1598,10 @@ TEST_P(QuicStreamFactoryTest, CryptoConfigWhenProofIsInvalid) {
|
| }
|
|
|
| TEST_P(QuicStreamFactoryTest, CancelWaitForDataReady) {
|
| + // Don't race quic connections when testing cancel reading of server config
|
| + // from disk cache.
|
| + if (GetParam().enable_connection_racing)
|
| + return;
|
| factory_.set_quic_server_info_factory(&quic_server_info_factory_);
|
| QuicStreamFactoryPeer::SetTaskRunner(&factory_, runner_.get());
|
| const size_t kLoadServerInfoTimeoutMs = 50;
|
|
|