| // Copyright (c) 2016 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/third_party/quiche/src/quic/core/quic_version_manager.h" |
| |
| #include "net/third_party/quiche/src/quic/core/quic_versions.h" |
| #include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h" |
| #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" |
| #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" |
| |
| namespace quic { |
| namespace test { |
| namespace { |
| |
| class QuicVersionManagerTest : public QuicTest {}; |
| |
| TEST_F(QuicVersionManagerTest, QuicVersionManager) { |
| static_assert(QUIC_ARRAYSIZE(kSupportedTransportVersions) == 7u, |
| "Supported versions out of sync"); |
| SetQuicReloadableFlag(quic_enable_version_99, false); |
| SetQuicReloadableFlag(quic_enable_version_48, false); |
| SetQuicReloadableFlag(quic_enable_version_47, false); |
| SetQuicReloadableFlag(quic_disable_version_44, true); |
| SetQuicReloadableFlag(quic_disable_version_39, true); |
| QuicVersionManager manager(AllSupportedVersions()); |
| |
| EXPECT_EQ(FilterSupportedTransportVersions(AllSupportedTransportVersions()), |
| manager.GetSupportedTransportVersions()); |
| |
| EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_46, QUIC_VERSION_43}), |
| manager.GetSupportedTransportVersions()); |
| |
| SetQuicReloadableFlag(quic_disable_version_39, false); |
| EXPECT_EQ(QuicTransportVersionVector( |
| {QUIC_VERSION_46, QUIC_VERSION_43, QUIC_VERSION_39}), |
| manager.GetSupportedTransportVersions()); |
| |
| SetQuicReloadableFlag(quic_disable_version_44, false); |
| EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_46, QUIC_VERSION_44, |
| QUIC_VERSION_43, QUIC_VERSION_39}), |
| manager.GetSupportedTransportVersions()); |
| |
| SetQuicReloadableFlag(quic_enable_version_47, true); |
| EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_47, QUIC_VERSION_46, |
| QUIC_VERSION_44, QUIC_VERSION_43, |
| QUIC_VERSION_39}), |
| manager.GetSupportedTransportVersions()); |
| |
| SetQuicReloadableFlag(quic_enable_version_48, true); |
| EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_48, QUIC_VERSION_47, |
| QUIC_VERSION_46, QUIC_VERSION_44, |
| QUIC_VERSION_43, QUIC_VERSION_39}), |
| manager.GetSupportedTransportVersions()); |
| |
| SetQuicReloadableFlag(quic_enable_version_99, true); |
| EXPECT_EQ( |
| QuicTransportVersionVector( |
| {QUIC_VERSION_99, QUIC_VERSION_48, QUIC_VERSION_47, QUIC_VERSION_46, |
| QUIC_VERSION_44, QUIC_VERSION_43, QUIC_VERSION_39}), |
| manager.GetSupportedTransportVersions()); |
| |
| // Ensure that all versions are now supported. |
| EXPECT_EQ(FilterSupportedTransportVersions(AllSupportedTransportVersions()), |
| manager.GetSupportedTransportVersions()); |
| } |
| |
| } // namespace |
| } // namespace test |
| } // namespace quic |