| Index: net/quic/quic_connection_test.cc
|
| diff --git a/net/quic/quic_connection_test.cc b/net/quic/quic_connection_test.cc
|
| index b170d0dde15f27fe92c13037a8b024098dd1792c..00961aa112ee2d9afff7980fbcfc876f3667619e 100644
|
| --- a/net/quic/quic_connection_test.cc
|
| +++ b/net/quic/quic_connection_test.cc
|
| @@ -13,6 +13,7 @@
|
| #include "net/quic/crypto/quic_decrypter.h"
|
| #include "net/quic/crypto/quic_encrypter.h"
|
| #include "net/quic/crypto/quic_random.h"
|
| +#include "net/quic/quic_protocol.h"
|
| #include "net/quic/quic_utils.h"
|
| #include "net/quic/test_tools/mock_clock.h"
|
| #include "net/quic/test_tools/mock_random.h"
|
| @@ -250,7 +251,7 @@ class TestConnectionHelper : public QuicConnectionHelperInterface {
|
| sizeof(final_bytes_of_last_packet_));
|
| }
|
|
|
| - QuicFramer framer(kQuicVersion1, QuicTime::Zero(), is_server_);
|
| + QuicFramer framer(QuicVersionMax(), QuicTime::Zero(), is_server_);
|
| if (use_tagging_decrypter_) {
|
| framer.SetDecrypter(new TaggingDecrypter);
|
| }
|
| @@ -380,7 +381,7 @@ class TestConnection : public QuicConnection {
|
| IPEndPoint address,
|
| TestConnectionHelper* helper,
|
| bool is_server)
|
| - : QuicConnection(guid, address, helper, is_server),
|
| + : QuicConnection(guid, address, helper, is_server, QuicVersionMax()),
|
| helper_(helper) {
|
| helper_->set_is_server(!is_server);
|
| }
|
| @@ -409,6 +410,10 @@ class TestConnection : public QuicConnection {
|
| return QuicConnectionPeer::IsServer(this);
|
| }
|
|
|
| + void set_version(QuicVersion version) {
|
| + framer_.set_version(version);
|
| + }
|
| +
|
| void set_is_server(bool is_server) {
|
| helper_->set_is_server(!is_server);
|
| QuicPacketCreatorPeer::SetIsServer(
|
| @@ -418,6 +423,7 @@ class TestConnection : public QuicConnection {
|
|
|
| using QuicConnection::SendOrQueuePacket;
|
| using QuicConnection::DontWaitForPacketsBefore;
|
| + using QuicConnection::SelectMutualVersion;
|
|
|
| private:
|
| TestConnectionHelper* helper_;
|
| @@ -429,7 +435,7 @@ class QuicConnectionTest : public ::testing::Test {
|
| protected:
|
| QuicConnectionTest()
|
| : guid_(42),
|
| - framer_(kQuicVersion1, QuicTime::Zero(), false),
|
| + framer_(QuicVersionMax(), QuicTime::Zero(), false),
|
| creator_(guid_, &framer_, QuicRandom::GetInstance(), false),
|
| send_algorithm_(new StrictMock<MockSendAlgorithm>),
|
| helper_(new TestConnectionHelper(&clock_, &random_generator_)),
|
| @@ -2093,8 +2099,7 @@ TEST_F(QuicConnectionTest, CheckSentEntropyHash) {
|
|
|
| // TODO(satyamsehkhar): Add more test when we start supporting more versions.
|
| TEST_F(QuicConnectionTest, SendVersionNegotiationPacket) {
|
| - QuicTag kRandomVersion = 143;
|
| - QuicFramerPeer::SetVersion(&framer_, kRandomVersion);
|
| + framer_.set_version_for_tests(QUIC_VERSION_UNSUPPORTED);
|
|
|
| QuicPacketHeader header;
|
| header.public_header.guid = guid_;
|
| @@ -2113,14 +2118,21 @@ TEST_F(QuicConnectionTest, SendVersionNegotiationPacket) {
|
| scoped_ptr<QuicEncryptedPacket> encrypted(
|
| framer_.EncryptPacket(ENCRYPTION_NONE, 12, *packet));
|
|
|
| - QuicFramerPeer::SetVersion(&framer_, kQuicVersion1);
|
| + framer_.set_version(QuicVersionMax());
|
| connection_.set_is_server(true);
|
| connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted);
|
| EXPECT_TRUE(helper_->version_negotiation_packet() != NULL);
|
| - EXPECT_EQ(1u,
|
| +
|
| + size_t num_versions = arraysize(kSupportedQuicVersions);
|
| + EXPECT_EQ(num_versions,
|
| helper_->version_negotiation_packet()->versions.size());
|
| - EXPECT_EQ(kQuicVersion1,
|
| - helper_->version_negotiation_packet()->versions[0]);
|
| +
|
| + // We expect all versions in kSupportedQuicVersions to be
|
| + // included in the packet.
|
| + for (size_t i = 0; i < num_versions; ++i) {
|
| + EXPECT_EQ(kSupportedQuicVersions[i],
|
| + helper_->version_negotiation_packet()->versions[i]);
|
| + }
|
| }
|
|
|
| TEST_F(QuicConnectionTest, CheckSendStats) {
|
| @@ -2251,6 +2263,27 @@ TEST_F(QuicConnectionTest, DontProcessFramesIfPacketClosedConnection) {
|
| connection_.ProcessUdpPacket(IPEndPoint(), IPEndPoint(), *encrypted);
|
| }
|
|
|
| +//// The QUIC_VERSION_X versions are deliberately set, rather than using all
|
| +//// values in kSupportedQuicVersions.
|
| +//TEST_F(QuicConnectionTest, SelectMutualVersion) {
|
| +// // Set the connection to speak QUIC_VERSION_6.
|
| +// connection_.set_version(QUIC_VERSION_6);
|
| +// EXPECT_EQ(connection_.version(), QUIC_VERSION_6);
|
| +//
|
| +// // Pass in available versions which includes a higher mutually supported
|
| +// // version. The higher mutually supported version should be selected.
|
| +// EXPECT_TRUE(
|
| +// connection_.SelectMutualVersion({QUIC_VERSION_6, QUIC_VERSION_7}));
|
| +// EXPECT_EQ(connection_.version(), QUIC_VERSION_7);
|
| +//
|
| +// // Expect that the lower version is selected.
|
| +// EXPECT_TRUE(connection_.SelectMutualVersion({QUIC_VERSION_6}));
|
| +// EXPECT_EQ(connection_.version(), QUIC_VERSION_6);
|
| +//
|
| +// // Shouldn't be able to find a mutually supported version.
|
| +// EXPECT_FALSE(connection_.SelectMutualVersion({QUIC_VERSION_UNSUPPORTED}));
|
| +//}
|
| +
|
| } // namespace
|
| } // namespace test
|
| } // namespace net
|
|
|