blob: dd3c064ae793e237e6a377779c183aaee059de20 [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// Copyright (c) 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "net/third_party/quiche/src/quic/core/quic_version_manager.h"
6
7#include "net/third_party/quiche/src/quic/core/quic_versions.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -05008#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
9#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
bnc4e9283d2019-12-17 07:08:57 -080010#include "net/third_party/quiche/src/common/platform/api/quiche_arraysize.h"
QUICHE teama6ef0a62019-03-07 20:34:33 -050011
12namespace quic {
13namespace test {
14namespace {
15
16class QuicVersionManagerTest : public QuicTest {};
17
18TEST_F(QuicVersionManagerTest, QuicVersionManager) {
dschinazi40f0b3d2020-02-19 17:54:05 -080019 static_assert(SupportedVersions().size() == 8u,
QUICHE teama6ef0a62019-03-07 20:34:33 -050020 "Supported versions out of sync");
dschinazi76881f02019-12-09 14:56:14 -080021 SetQuicReloadableFlag(quic_enable_version_t099, false);
dschinazi40f0b3d2020-02-19 17:54:05 -080022 SetQuicReloadableFlag(quic_enable_version_draft_25, false);
dschinazi76881f02019-12-09 14:56:14 -080023 SetQuicReloadableFlag(quic_enable_version_t050, false);
24 SetQuicReloadableFlag(quic_disable_version_q050, false);
25 SetQuicReloadableFlag(quic_disable_version_q049, false);
26 SetQuicReloadableFlag(quic_disable_version_q048, false);
27 SetQuicReloadableFlag(quic_disable_version_q046, false);
28 SetQuicReloadableFlag(quic_disable_version_q043, false);
QUICHE teama6ef0a62019-03-07 20:34:33 -050029 QuicVersionManager manager(AllSupportedVersions());
30
dschinazi4101ead2019-12-06 15:26:07 -080031 ParsedQuicVersionVector expected_parsed_versions;
32 expected_parsed_versions.push_back(
33 ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50));
34 expected_parsed_versions.push_back(
35 ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49));
36 expected_parsed_versions.push_back(
37 ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48));
38 expected_parsed_versions.push_back(
39 ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46));
40 expected_parsed_versions.push_back(
41 ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43));
QUICHE teama6ef0a62019-03-07 20:34:33 -050042
dschinazi4101ead2019-12-06 15:26:07 -080043 EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
44
45 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
46 manager.GetSupportedVersions());
dschinazi8b1c45a2019-10-17 08:48:13 -070047
dschinazi76881f02019-12-09 14:56:14 -080048 SetQuicReloadableFlag(quic_enable_version_t099, true);
49 expected_parsed_versions.push_back(
50 ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_99));
51 EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
52 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
53 manager.GetSupportedVersions());
54
dschinazi40f0b3d2020-02-19 17:54:05 -080055 SetQuicReloadableFlag(quic_enable_version_draft_25, true);
56 expected_parsed_versions.push_back(
57 ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25));
58 EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
59 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
60 manager.GetSupportedVersions());
61
dschinazi76881f02019-12-09 14:56:14 -080062 SetQuicReloadableFlag(quic_enable_version_t050, true);
63 expected_parsed_versions.push_back(
64 ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_50));
65 EXPECT_EQ(expected_parsed_versions, manager.GetSupportedVersions());
66 EXPECT_EQ(FilterSupportedVersions(AllSupportedVersions()),
67 manager.GetSupportedVersions());
QUICHE teama6ef0a62019-03-07 20:34:33 -050068}
69
70} // namespace
71} // namespace test
72} // namespace quic