blob: 7c7a08d655c6cceb521b0825a5ec4dd5d5df01d1 [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"
8#include "net/third_party/quiche/src/quic/platform/api/quic_arraysize.h"
9#include "net/third_party/quiche/src/quic/platform/api/quic_flags.h"
10#include "net/third_party/quiche/src/quic/platform/api/quic_test.h"
11
12namespace quic {
13namespace test {
14namespace {
15
16class QuicVersionManagerTest : public QuicTest {};
17
18TEST_F(QuicVersionManagerTest, QuicVersionManager) {
19 static_assert(QUIC_ARRAYSIZE(kSupportedTransportVersions) == 6u,
20 "Supported versions out of sync");
21 SetQuicReloadableFlag(quic_enable_version_99, false);
22 SetQuicReloadableFlag(quic_enable_version_47, false);
23 SetQuicReloadableFlag(quic_enable_version_46, false);
24 SetQuicReloadableFlag(quic_enable_version_44, false);
25 SetQuicReloadableFlag(quic_enable_version_43, false);
26 SetQuicReloadableFlag(quic_disable_version_39, true);
27 QuicVersionManager manager(AllSupportedVersions());
28
29 EXPECT_EQ(FilterSupportedTransportVersions(AllSupportedTransportVersions()),
30 manager.GetSupportedTransportVersions());
31
32 EXPECT_TRUE(manager.GetSupportedTransportVersions().empty());
33
34 SetQuicReloadableFlag(quic_disable_version_39, false);
35 EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_39}),
36 manager.GetSupportedTransportVersions());
37
38 SetQuicReloadableFlag(quic_enable_version_43, true);
39 EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_43, QUIC_VERSION_39}),
40 manager.GetSupportedTransportVersions());
41
42 SetQuicReloadableFlag(quic_enable_version_44, true);
43 EXPECT_EQ(QuicTransportVersionVector(
44 {QUIC_VERSION_44, QUIC_VERSION_43, QUIC_VERSION_39}),
45 manager.GetSupportedTransportVersions());
46
47 SetQuicReloadableFlag(quic_enable_version_46, true);
48 EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_46, QUIC_VERSION_44,
49 QUIC_VERSION_43, QUIC_VERSION_39}),
50 manager.GetSupportedTransportVersions());
51
52 SetQuicReloadableFlag(quic_enable_version_47, true);
53 EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_47, QUIC_VERSION_46,
54 QUIC_VERSION_44, QUIC_VERSION_43,
55 QUIC_VERSION_39}),
56 manager.GetSupportedTransportVersions());
57
58 SetQuicReloadableFlag(quic_enable_version_99, true);
59 EXPECT_EQ(QuicTransportVersionVector({QUIC_VERSION_99, QUIC_VERSION_47,
60 QUIC_VERSION_46, QUIC_VERSION_44,
61 QUIC_VERSION_43, QUIC_VERSION_39}),
62 manager.GetSupportedTransportVersions());
63
64 // Ensure that all versions are now supported.
65 EXPECT_EQ(FilterSupportedTransportVersions(AllSupportedTransportVersions()),
66 manager.GetSupportedTransportVersions());
67}
68
69} // namespace
70} // namespace test
71} // namespace quic