| 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 "net/quic/core/quic_protocol.h" | 5 #include "net/quic/core/quic_protocol.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "net/quic/core/quic_flags.h" | 10 #include "net/quic/core/quic_flags.h" |
| 11 #include "net/quic/core/quic_utils.h" | 11 #include "net/quic/core/quic_utils.h" |
| 12 #include "net/quic/test_tools/quic_test_utils.h" | 12 #include "net/quic/test_tools/quic_test_utils.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 14 |
| 15 namespace net { | 15 namespace net { |
| 16 namespace test { | 16 namespace test { |
| 17 namespace { | 17 namespace { |
| 18 | 18 |
| 19 TEST(QuicProtocolTest, MakeQuicTag) { | 19 TEST(QuicProtocolTest, MakeQuicTag) { |
| 20 QuicTag tag = MakeQuicTag('A', 'B', 'C', 'D'); | 20 QuicTag tag = MakeQuicTag('A', 'B', 'C', 'D'); |
| 21 char bytes[4]; | 21 char bytes[4]; |
| 22 memcpy(bytes, &tag, 4); | 22 memcpy(bytes, &tag, 4); |
| 23 EXPECT_EQ('A', bytes[0]); | 23 EXPECT_EQ('A', bytes[0]); |
| 24 EXPECT_EQ('B', bytes[1]); | 24 EXPECT_EQ('B', bytes[1]); |
| 25 EXPECT_EQ('C', bytes[2]); | 25 EXPECT_EQ('C', bytes[2]); |
| 26 EXPECT_EQ('D', bytes[3]); | 26 EXPECT_EQ('D', bytes[3]); |
| 27 } | 27 } |
| 28 | 28 |
| 29 TEST(QuicProtocolTest, IsAawaitingPacket) { | 29 TEST(QuicProtocolTest, IsAwaitingPacket) { |
| 30 QuicAckFrame ack_frame; | |
| 31 ack_frame.largest_observed = 10u; | |
| 32 EXPECT_TRUE(IsAwaitingPacket(ack_frame, 11u, 0u)); | |
| 33 EXPECT_FALSE(IsAwaitingPacket(ack_frame, 1u, 0u)); | |
| 34 | |
| 35 ack_frame.packets.Add(10); | |
| 36 EXPECT_TRUE(IsAwaitingPacket(ack_frame, 10u, 0u)); | |
| 37 | |
| 38 QuicAckFrame ack_frame1; | 30 QuicAckFrame ack_frame1; |
| 39 ack_frame1.missing = false; | |
| 40 ack_frame1.largest_observed = 10u; | 31 ack_frame1.largest_observed = 10u; |
| 41 ack_frame1.packets.Add(1, 11); | 32 ack_frame1.packets.Add(1, 11); |
| 42 EXPECT_TRUE(IsAwaitingPacket(ack_frame1, 11u, 0u)); | 33 EXPECT_TRUE(IsAwaitingPacket(ack_frame1, 11u, 0u)); |
| 43 EXPECT_FALSE(IsAwaitingPacket(ack_frame1, 1u, 0u)); | 34 EXPECT_FALSE(IsAwaitingPacket(ack_frame1, 1u, 0u)); |
| 44 | 35 |
| 45 ack_frame1.packets.Remove(10); | 36 ack_frame1.packets.Remove(10); |
| 46 EXPECT_TRUE(IsAwaitingPacket(ack_frame1, 10u, 0u)); | 37 EXPECT_TRUE(IsAwaitingPacket(ack_frame1, 10u, 0u)); |
| 47 | 38 |
| 48 QuicAckFrame ack_frame2; | 39 QuicAckFrame ack_frame2; |
| 49 ack_frame2.missing = false; | |
| 50 ack_frame2.largest_observed = 100u; | 40 ack_frame2.largest_observed = 100u; |
| 51 ack_frame2.packets.Add(21, 100); | 41 ack_frame2.packets.Add(21, 100); |
| 52 EXPECT_FALSE(IsAwaitingPacket(ack_frame2, 11u, 20u)); | 42 EXPECT_FALSE(IsAwaitingPacket(ack_frame2, 11u, 20u)); |
| 53 EXPECT_FALSE(IsAwaitingPacket(ack_frame2, 80u, 20u)); | 43 EXPECT_FALSE(IsAwaitingPacket(ack_frame2, 80u, 20u)); |
| 54 EXPECT_TRUE(IsAwaitingPacket(ack_frame2, 101u, 20u)); | 44 EXPECT_TRUE(IsAwaitingPacket(ack_frame2, 101u, 20u)); |
| 55 | 45 |
| 56 ack_frame2.packets.Remove(50); | 46 ack_frame2.packets.Remove(50); |
| 57 EXPECT_TRUE(IsAwaitingPacket(ack_frame2, 50u, 20u)); | 47 EXPECT_TRUE(IsAwaitingPacket(ack_frame2, 50u, 20u)); |
| 58 } | 48 } |
| 59 | 49 |
| 60 TEST(QuicProtocolTest, QuicVersionToQuicTag) { | 50 TEST(QuicProtocolTest, QuicVersionToQuicTag) { |
| 61 // If you add a new version to the QuicVersion enum you will need to add a new | 51 // If you add a new version to the QuicVersion enum you will need to add a new |
| 62 // case to QuicVersionToQuicTag, otherwise this test will fail. | 52 // case to QuicVersionToQuicTag, otherwise this test will fail. |
| 63 | 53 |
| 64 // TODO(rtenneti): Enable checking of Log(ERROR) messages. | 54 // TODO(rtenneti): Enable checking of Log(ERROR) messages. |
| 65 #if 0 | 55 #if 0 |
| 66 // Any logs would indicate an unsupported version which we don't expect. | 56 // Any logs would indicate an unsupported version which we don't expect. |
| 67 ScopedMockLog log(kDoNotCaptureLogsYet); | 57 ScopedMockLog log(kDoNotCaptureLogsYet); |
| 68 EXPECT_CALL(log, Log(_, _, _)).Times(0); | 58 EXPECT_CALL(log, Log(_, _, _)).Times(0); |
| 69 log.StartCapturingLogs(); | 59 log.StartCapturingLogs(); |
| 70 #endif | 60 #endif |
| 71 | 61 |
| 72 // Explicitly test a specific version. | 62 // Explicitly test a specific version. |
| 73 EXPECT_EQ(MakeQuicTag('Q', '0', '3', '2'), | 63 EXPECT_EQ(MakeQuicTag('Q', '0', '3', '4'), |
| 74 QuicVersionToQuicTag(QUIC_VERSION_32)); | 64 QuicVersionToQuicTag(QUIC_VERSION_34)); |
| 75 | 65 |
| 76 // Loop over all supported versions and make sure that we never hit the | 66 // Loop over all supported versions and make sure that we never hit the |
| 77 // default case (i.e. all supported versions should be successfully converted | 67 // default case (i.e. all supported versions should be successfully converted |
| 78 // to valid QuicTags). | 68 // to valid QuicTags). |
| 79 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { | 69 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { |
| 80 QuicVersion version = kSupportedQuicVersions[i]; | 70 QuicVersion version = kSupportedQuicVersions[i]; |
| 81 EXPECT_LT(0u, QuicVersionToQuicTag(version)); | 71 EXPECT_LT(0u, QuicVersionToQuicTag(version)); |
| 82 } | 72 } |
| 83 } | 73 } |
| 84 | 74 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 103 | 93 |
| 104 // TODO(rtenneti): Enable checking of Log(ERROR) messages. | 94 // TODO(rtenneti): Enable checking of Log(ERROR) messages. |
| 105 #if 0 | 95 #if 0 |
| 106 // Any logs would indicate an unsupported version which we don't expect. | 96 // Any logs would indicate an unsupported version which we don't expect. |
| 107 ScopedMockLog log(kDoNotCaptureLogsYet); | 97 ScopedMockLog log(kDoNotCaptureLogsYet); |
| 108 EXPECT_CALL(log, Log(_, _, _)).Times(0); | 98 EXPECT_CALL(log, Log(_, _, _)).Times(0); |
| 109 log.StartCapturingLogs(); | 99 log.StartCapturingLogs(); |
| 110 #endif | 100 #endif |
| 111 | 101 |
| 112 // Explicitly test specific versions. | 102 // Explicitly test specific versions. |
| 113 EXPECT_EQ(QUIC_VERSION_32, | 103 EXPECT_EQ(QUIC_VERSION_34, |
| 114 QuicTagToQuicVersion(MakeQuicTag('Q', '0', '3', '2'))); | 104 QuicTagToQuicVersion(MakeQuicTag('Q', '0', '3', '4'))); |
| 115 | 105 |
| 116 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { | 106 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { |
| 117 QuicVersion version = kSupportedQuicVersions[i]; | 107 QuicVersion version = kSupportedQuicVersions[i]; |
| 118 | 108 |
| 119 // Get the tag from the version (we can loop over QuicVersions easily). | 109 // Get the tag from the version (we can loop over QuicVersions easily). |
| 120 QuicTag tag = QuicVersionToQuicTag(version); | 110 QuicTag tag = QuicVersionToQuicTag(version); |
| 121 EXPECT_LT(0u, tag); | 111 EXPECT_LT(0u, tag); |
| 122 | 112 |
| 123 // Now try converting back. | 113 // Now try converting back. |
| 124 QuicVersion tag_to_quic_version = QuicTagToQuicVersion(tag); | 114 QuicVersion tag_to_quic_version = QuicTagToQuicVersion(tag); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 137 .Times(1); | 127 .Times(1); |
| 138 #endif | 128 #endif |
| 139 log.StartCapturingLogs(); | 129 log.StartCapturingLogs(); |
| 140 #endif | 130 #endif |
| 141 | 131 |
| 142 EXPECT_EQ(QUIC_VERSION_UNSUPPORTED, | 132 EXPECT_EQ(QUIC_VERSION_UNSUPPORTED, |
| 143 QuicTagToQuicVersion(MakeQuicTag('F', 'A', 'K', 'E'))); | 133 QuicTagToQuicVersion(MakeQuicTag('F', 'A', 'K', 'E'))); |
| 144 } | 134 } |
| 145 | 135 |
| 146 TEST(QuicProtocolTest, QuicVersionToString) { | 136 TEST(QuicProtocolTest, QuicVersionToString) { |
| 147 EXPECT_EQ("QUIC_VERSION_32", QuicVersionToString(QUIC_VERSION_32)); | 137 EXPECT_EQ("QUIC_VERSION_34", QuicVersionToString(QUIC_VERSION_34)); |
| 148 EXPECT_EQ("QUIC_VERSION_UNSUPPORTED", | 138 EXPECT_EQ("QUIC_VERSION_UNSUPPORTED", |
| 149 QuicVersionToString(QUIC_VERSION_UNSUPPORTED)); | 139 QuicVersionToString(QUIC_VERSION_UNSUPPORTED)); |
| 150 | 140 |
| 151 QuicVersion single_version[] = {QUIC_VERSION_32}; | 141 QuicVersion single_version[] = {QUIC_VERSION_34}; |
| 152 QuicVersionVector versions_vector; | 142 QuicVersionVector versions_vector; |
| 153 for (size_t i = 0; i < arraysize(single_version); ++i) { | 143 for (size_t i = 0; i < arraysize(single_version); ++i) { |
| 154 versions_vector.push_back(single_version[i]); | 144 versions_vector.push_back(single_version[i]); |
| 155 } | 145 } |
| 156 EXPECT_EQ("QUIC_VERSION_32", QuicVersionVectorToString(versions_vector)); | 146 EXPECT_EQ("QUIC_VERSION_34", QuicVersionVectorToString(versions_vector)); |
| 157 | 147 |
| 158 QuicVersion multiple_versions[] = {QUIC_VERSION_UNSUPPORTED, QUIC_VERSION_32}; | 148 QuicVersion multiple_versions[] = {QUIC_VERSION_UNSUPPORTED, QUIC_VERSION_34}; |
| 159 versions_vector.clear(); | 149 versions_vector.clear(); |
| 160 for (size_t i = 0; i < arraysize(multiple_versions); ++i) { | 150 for (size_t i = 0; i < arraysize(multiple_versions); ++i) { |
| 161 versions_vector.push_back(multiple_versions[i]); | 151 versions_vector.push_back(multiple_versions[i]); |
| 162 } | 152 } |
| 163 EXPECT_EQ("QUIC_VERSION_UNSUPPORTED,QUIC_VERSION_32", | 153 EXPECT_EQ("QUIC_VERSION_UNSUPPORTED,QUIC_VERSION_34", |
| 164 QuicVersionVectorToString(versions_vector)); | 154 QuicVersionVectorToString(versions_vector)); |
| 165 | 155 |
| 166 // Make sure that all supported versions are present in QuicVersionToString. | 156 // Make sure that all supported versions are present in QuicVersionToString. |
| 167 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { | 157 for (size_t i = 0; i < arraysize(kSupportedQuicVersions); ++i) { |
| 168 QuicVersion version = kSupportedQuicVersions[i]; | 158 QuicVersion version = kSupportedQuicVersions[i]; |
| 169 EXPECT_NE("QUIC_VERSION_UNSUPPORTED", QuicVersionToString(version)); | 159 EXPECT_NE("QUIC_VERSION_UNSUPPORTED", QuicVersionToString(version)); |
| 170 } | 160 } |
| 171 } | 161 } |
| 172 | 162 |
| 173 TEST(QuicProtocolTest, AckFrameToString) { | 163 TEST(QuicProtocolTest, AckFrameToString) { |
| 174 QuicAckFrame frame; | 164 QuicAckFrame frame; |
| 175 frame.entropy_hash = 1; | |
| 176 frame.largest_observed = 2; | 165 frame.largest_observed = 2; |
| 177 frame.ack_delay_time = QuicTime::Delta::FromMicroseconds(3); | 166 frame.ack_delay_time = QuicTime::Delta::FromMicroseconds(3); |
| 178 frame.packets.Add(4); | 167 frame.packets.Add(4); |
| 179 frame.packets.Add(5); | 168 frame.packets.Add(5); |
| 180 frame.received_packet_times = { | 169 frame.received_packet_times = { |
| 181 {6, QuicTime::Zero() + QuicTime::Delta::FromMicroseconds(7)}}; | 170 {6, QuicTime::Zero() + QuicTime::Delta::FromMicroseconds(7)}}; |
| 182 std::ostringstream stream; | 171 std::ostringstream stream; |
| 183 stream << frame; | 172 stream << frame; |
| 184 EXPECT_EQ( | 173 EXPECT_EQ( |
| 185 "{ entropy_hash: 1, largest_observed: 2, ack_delay_time: 3, " | 174 "{ largest_observed: 2, ack_delay_time: 3, " |
| 186 "packets: [ 4 5 ], is_truncated: 0, received_packets: [ 6 at 7 ] }\n", | 175 "packets: [ 4 5 ], received_packets: [ 6 at 7 ] }\n", |
| 187 stream.str()); | 176 stream.str()); |
| 188 } | 177 } |
| 189 | 178 |
| 190 TEST(QuicProtocolTest, PaddingFrameToString) { | 179 TEST(QuicProtocolTest, PaddingFrameToString) { |
| 191 QuicPaddingFrame frame; | 180 QuicPaddingFrame frame; |
| 192 frame.num_padding_bytes = 1; | 181 frame.num_padding_bytes = 1; |
| 193 std::ostringstream stream; | 182 std::ostringstream stream; |
| 194 stream << frame; | 183 stream << frame; |
| 195 EXPECT_EQ("{ num_padding_bytes: 1 }\n", stream.str()); | 184 EXPECT_EQ("{ num_padding_bytes: 1 }\n", stream.str()); |
| 196 } | 185 } |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 frame.fin = false; | 239 frame.fin = false; |
| 251 frame.offset = 2; | 240 frame.offset = 2; |
| 252 frame.data_length = 3; | 241 frame.data_length = 3; |
| 253 std::ostringstream stream; | 242 std::ostringstream stream; |
| 254 stream << frame; | 243 stream << frame; |
| 255 EXPECT_EQ("{ stream_id: 1, fin: 0, offset: 2, length: 3 }\n", stream.str()); | 244 EXPECT_EQ("{ stream_id: 1, fin: 0, offset: 2, length: 3 }\n", stream.str()); |
| 256 } | 245 } |
| 257 | 246 |
| 258 TEST(QuicProtocolTest, StopWaitingFrameToString) { | 247 TEST(QuicProtocolTest, StopWaitingFrameToString) { |
| 259 QuicStopWaitingFrame frame; | 248 QuicStopWaitingFrame frame; |
| 260 frame.entropy_hash = 1; | |
| 261 frame.least_unacked = 2; | 249 frame.least_unacked = 2; |
| 262 std::ostringstream stream; | 250 std::ostringstream stream; |
| 263 stream << frame; | 251 stream << frame; |
| 264 EXPECT_EQ("{ entropy_hash: 1, least_unacked: 2 }\n", stream.str()); | 252 EXPECT_EQ("{ least_unacked: 2 }\n", stream.str()); |
| 265 } | 253 } |
| 266 | 254 |
| 267 TEST(QuicProtocolTest, PathCloseFrameToString) { | 255 TEST(QuicProtocolTest, PathCloseFrameToString) { |
| 268 QuicPathCloseFrame frame; | 256 QuicPathCloseFrame frame; |
| 269 frame.path_id = 1; | 257 frame.path_id = 1; |
| 270 std::ostringstream stream; | 258 std::ostringstream stream; |
| 271 stream << frame; | 259 stream << frame; |
| 272 EXPECT_EQ("{ path_id: 1 }\n", stream.str()); | 260 EXPECT_EQ("{ path_id: 1 }\n", stream.str()); |
| 273 } | 261 } |
| 274 | 262 |
| 275 TEST(QuicProtocolTest, FilterSupportedVersions) { | 263 TEST(QuicProtocolTest, FilterSupportedVersions) { |
| 276 QuicFlagSaver flags; | 264 QuicFlagSaver flags; |
| 277 QuicVersionVector all_versions = {QUIC_VERSION_32, QUIC_VERSION_33, | 265 QuicVersionVector all_versions = {QUIC_VERSION_34, QUIC_VERSION_35, |
| 278 QUIC_VERSION_34, QUIC_VERSION_35, | |
| 279 QUIC_VERSION_36}; | 266 QUIC_VERSION_36}; |
| 280 | 267 |
| 281 FLAGS_quic_disable_pre_34 = true; | |
| 282 FLAGS_quic_enable_version_35 = false; | 268 FLAGS_quic_enable_version_35 = false; |
| 283 FLAGS_quic_enable_version_36_v2 = false; | 269 FLAGS_quic_enable_version_36_v2 = false; |
| 284 | 270 |
| 285 QuicVersionVector filtered_versions = FilterSupportedVersions(all_versions); | 271 QuicVersionVector filtered_versions = FilterSupportedVersions(all_versions); |
| 286 ASSERT_EQ(1u, filtered_versions.size()); | 272 ASSERT_EQ(1u, filtered_versions.size()); |
| 287 EXPECT_EQ(QUIC_VERSION_34, filtered_versions[0]); | 273 EXPECT_EQ(QUIC_VERSION_34, filtered_versions[0]); |
| 288 } | 274 } |
| 289 | 275 |
| 290 TEST(QuicProtocolTest, FilterSupportedVersionsAllVersions) { | 276 TEST(QuicProtocolTest, FilterSupportedVersionsAllVersions) { |
| 291 QuicFlagSaver flags; | 277 QuicFlagSaver flags; |
| 292 QuicVersionVector all_versions = {QUIC_VERSION_32, QUIC_VERSION_33, | 278 QuicVersionVector all_versions = {QUIC_VERSION_34, QUIC_VERSION_35, |
| 293 QUIC_VERSION_34, QUIC_VERSION_35, | |
| 294 QUIC_VERSION_36}; | 279 QUIC_VERSION_36}; |
| 295 | 280 |
| 296 FLAGS_quic_disable_pre_34 = false; | |
| 297 FLAGS_quic_enable_version_35 = true; | 281 FLAGS_quic_enable_version_35 = true; |
| 298 FLAGS_quic_enable_version_36_v2 = true; | 282 FLAGS_quic_enable_version_36_v2 = true; |
| 299 | 283 |
| 300 QuicVersionVector filtered_versions = FilterSupportedVersions(all_versions); | 284 QuicVersionVector filtered_versions = FilterSupportedVersions(all_versions); |
| 301 ASSERT_EQ(all_versions, filtered_versions); | 285 ASSERT_EQ(all_versions, filtered_versions); |
| 302 } | 286 } |
| 303 | 287 |
| 304 TEST(QuicProtocolTest, FilterSupportedVersionsNo36) { | 288 TEST(QuicProtocolTest, FilterSupportedVersionsNo36) { |
| 305 QuicFlagSaver flags; | 289 QuicFlagSaver flags; |
| 306 QuicVersionVector all_versions = {QUIC_VERSION_32, QUIC_VERSION_33, | 290 QuicVersionVector all_versions = {QUIC_VERSION_34, QUIC_VERSION_35, |
| 307 QUIC_VERSION_34, QUIC_VERSION_35, | |
| 308 QUIC_VERSION_36}; | 291 QUIC_VERSION_36}; |
| 309 | 292 |
| 310 FLAGS_quic_disable_pre_34 = false; | |
| 311 FLAGS_quic_enable_version_35 = true; | 293 FLAGS_quic_enable_version_35 = true; |
| 312 FLAGS_quic_enable_version_36_v2 = false; | 294 FLAGS_quic_enable_version_36_v2 = false; |
| 313 | 295 |
| 314 all_versions.pop_back(); // Remove 36 | 296 all_versions.pop_back(); // Remove 36 |
| 315 | 297 |
| 316 ASSERT_EQ(all_versions, FilterSupportedVersions(all_versions)); | 298 ASSERT_EQ(all_versions, FilterSupportedVersions(all_versions)); |
| 317 } | 299 } |
| 318 | 300 |
| 319 TEST(QuicProtocolTest, FilterSupportedVersionsNo35) { | 301 TEST(QuicProtocolTest, FilterSupportedVersionsNo35) { |
| 320 QuicFlagSaver flags; | 302 QuicFlagSaver flags; |
| 321 QuicVersionVector all_versions = {QUIC_VERSION_32, QUIC_VERSION_33, | 303 QuicVersionVector all_versions = {QUIC_VERSION_34, QUIC_VERSION_35, |
| 322 QUIC_VERSION_34, QUIC_VERSION_35, | |
| 323 QUIC_VERSION_36}; | 304 QUIC_VERSION_36}; |
| 324 | 305 |
| 325 FLAGS_quic_disable_pre_34 = false; | |
| 326 FLAGS_quic_enable_version_35 = true; | 306 FLAGS_quic_enable_version_35 = true; |
| 327 FLAGS_quic_enable_version_36_v2 = true; | 307 FLAGS_quic_enable_version_36_v2 = true; |
| 328 | 308 |
| 329 all_versions.pop_back(); // Remove 36 | 309 all_versions.pop_back(); // Remove 36 |
| 330 all_versions.pop_back(); // Remove 35 | 310 all_versions.pop_back(); // Remove 35 |
| 331 | 311 |
| 332 ASSERT_EQ(all_versions, FilterSupportedVersions(all_versions)); | 312 ASSERT_EQ(all_versions, FilterSupportedVersions(all_versions)); |
| 333 } | 313 } |
| 334 | 314 |
| 335 TEST(QuicProtocolTest, FilterSupportedVersionsNoPre34) { | |
| 336 QuicFlagSaver flags; | |
| 337 QuicVersionVector all_versions = {QUIC_VERSION_32, QUIC_VERSION_33, | |
| 338 QUIC_VERSION_34, QUIC_VERSION_35, | |
| 339 QUIC_VERSION_36}; | |
| 340 | |
| 341 FLAGS_quic_disable_pre_34 = true; | |
| 342 FLAGS_quic_enable_version_35 = true; | |
| 343 FLAGS_quic_enable_version_36_v2 = true; | |
| 344 | |
| 345 all_versions.erase(all_versions.begin()); // Remove 32 | |
| 346 all_versions.erase(all_versions.begin()); // Remove 33 | |
| 347 | |
| 348 ASSERT_EQ(all_versions, FilterSupportedVersions(all_versions)); | |
| 349 } | |
| 350 | |
| 351 TEST(QuicProtocolTest, QuicVersionManager) { | 315 TEST(QuicProtocolTest, QuicVersionManager) { |
| 352 QuicFlagSaver flags; | 316 QuicFlagSaver flags; |
| 353 FLAGS_quic_enable_version_35 = false; | 317 FLAGS_quic_enable_version_35 = false; |
| 354 FLAGS_quic_enable_version_36_v2 = false; | 318 FLAGS_quic_enable_version_36_v2 = false; |
| 355 QuicVersionManager manager(AllSupportedVersions()); | 319 QuicVersionManager manager(AllSupportedVersions()); |
| 356 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), | 320 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), |
| 357 manager.GetSupportedVersions()); | 321 manager.GetSupportedVersions()); |
| 358 FLAGS_quic_enable_version_35 = true; | 322 FLAGS_quic_enable_version_35 = true; |
| 359 FLAGS_quic_enable_version_36_v2 = true; | 323 FLAGS_quic_enable_version_36_v2 = true; |
| 360 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), | 324 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()), |
| 361 manager.GetSupportedVersions()); | 325 manager.GetSupportedVersions()); |
| 362 EXPECT_EQ(QUIC_VERSION_36, manager.GetSupportedVersions()[0]); | 326 EXPECT_EQ(QUIC_VERSION_36, manager.GetSupportedVersions()[0]); |
| 363 EXPECT_EQ(QUIC_VERSION_35, manager.GetSupportedVersions()[1]); | 327 EXPECT_EQ(QUIC_VERSION_35, manager.GetSupportedVersions()[1]); |
| 364 } | 328 } |
| 365 | 329 |
| 366 TEST(QuicProtocolTest, LookUpVersionByIndex) { | 330 TEST(QuicProtocolTest, LookUpVersionByIndex) { |
| 367 QuicVersionVector all_versions = {QUIC_VERSION_32, QUIC_VERSION_33, | 331 QuicVersionVector all_versions = {QUIC_VERSION_34, QUIC_VERSION_35, |
| 368 QUIC_VERSION_34, QUIC_VERSION_35, | |
| 369 QUIC_VERSION_36}; | 332 QUIC_VERSION_36}; |
| 370 int version_count = all_versions.size(); | 333 int version_count = all_versions.size(); |
| 371 for (int i = -5; i <= version_count + 1; ++i) { | 334 for (int i = -5; i <= version_count + 1; ++i) { |
| 372 if (i >= 0 && i < version_count) { | 335 if (i >= 0 && i < version_count) { |
| 373 EXPECT_EQ(all_versions[i], VersionOfIndex(all_versions, i)[0]); | 336 EXPECT_EQ(all_versions[i], VersionOfIndex(all_versions, i)[0]); |
| 374 } else { | 337 } else { |
| 375 EXPECT_EQ(QUIC_VERSION_UNSUPPORTED, VersionOfIndex(all_versions, i)[0]); | 338 EXPECT_EQ(QUIC_VERSION_UNSUPPORTED, VersionOfIndex(all_versions, i)[0]); |
| 376 } | 339 } |
| 377 } | 340 } |
| 378 } | 341 } |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 EXPECT_EQ(2u, queue.NumIntervals()); | 471 EXPECT_EQ(2u, queue.NumIntervals()); |
| 509 EXPECT_TRUE(queue.Contains(10)); | 472 EXPECT_TRUE(queue.Contains(10)); |
| 510 EXPECT_TRUE(queue.Contains(11)); | 473 EXPECT_TRUE(queue.Contains(11)); |
| 511 EXPECT_TRUE(queue.Contains(20)); | 474 EXPECT_TRUE(queue.Contains(20)); |
| 512 EXPECT_TRUE(queue.Contains(21)); | 475 EXPECT_TRUE(queue.Contains(21)); |
| 513 } | 476 } |
| 514 | 477 |
| 515 } // namespace | 478 } // namespace |
| 516 } // namespace test | 479 } // namespace test |
| 517 } // namespace net | 480 } // namespace net |
| OLD | NEW |