#include "quiche/quic/core/crypto/transport_parameters.h"
#include <cstring>
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "absl/base/macros.h"
#include "absl/strings/escaping.h"
#include "absl/strings/string_view.h"
#include "quiche/quic/core/crypto/crypto_protocol.h"
#include "quiche/quic/core/quic_connection_id.h"
#include "quiche/quic/core/quic_tag.h"
#include "quiche/quic/core/quic_types.h"
#include "quiche/quic/core/quic_versions.h"
#include "quiche/quic/platform/api/quic_expect_bug.h"
#include "quiche/quic/platform/api/quic_ip_address.h"
#include "quiche/quic/platform/api/quic_test.h"
#include "quiche/quic/test_tools/quic_test_utils.h"
namespace quic {
namespace test {
namespace {
const QuicVersionLabel kFakeVersionLabel = …;
const QuicVersionLabel kFakeVersionLabel2 = …;
const uint64_t kFakeIdleTimeoutMilliseconds = …;
const uint64_t kFakeInitialMaxData = …;
const uint64_t kFakeInitialMaxStreamDataBidiLocal = …;
const uint64_t kFakeInitialMaxStreamDataBidiRemote = …;
const uint64_t kFakeInitialMaxStreamDataUni = …;
const uint64_t kFakeInitialMaxStreamsBidi = …;
const uint64_t kFakeInitialMaxStreamsUni = …;
const bool kFakeDisableMigration = …;
const uint64_t kFakeInitialRoundTripTime = …;
const uint8_t kFakePreferredStatelessResetTokenData[16] = …;
const auto kCustomParameter1 = …;
const char* kCustomParameter1Value = …;
const auto kCustomParameter2 = …;
const char* kCustomParameter2Value = …;
const char kFakeGoogleHandshakeMessage[] = …;
QuicConnectionId CreateFakeOriginalDestinationConnectionId() { … }
QuicConnectionId CreateFakeInitialSourceConnectionId() { … }
QuicConnectionId CreateFakeRetrySourceConnectionId() { … }
QuicConnectionId CreateFakePreferredConnectionId() { … }
std::vector<uint8_t> CreateFakePreferredStatelessResetToken() { … }
QuicSocketAddress CreateFakeV4SocketAddress() { … }
QuicSocketAddress CreateFakeV6SocketAddress() { … }
std::unique_ptr<TransportParameters::PreferredAddress>
CreateFakePreferredAddress() { … }
TransportParameters::LegacyVersionInformation
CreateFakeLegacyVersionInformationClient() { … }
TransportParameters::LegacyVersionInformation
CreateFakeLegacyVersionInformationServer() { … }
TransportParameters::VersionInformation CreateFakeVersionInformation() { … }
QuicTagVector CreateFakeGoogleConnectionOptions() { … }
void RemoveGreaseParameters(TransportParameters* params) { … }
}
class TransportParametersTest : public QuicTestWithParam<ParsedQuicVersion> { … };
INSTANTIATE_TEST_SUITE_P(…);
TEST_P(TransportParametersTest, Comparator) { … }
TEST_P(TransportParametersTest, CopyConstructor) { … }
TEST_P(TransportParametersTest, RoundTripClient) { … }
TEST_P(TransportParametersTest, RoundTripServer) { … }
TEST_P(TransportParametersTest, AreValid) { … }
TEST_P(TransportParametersTest, NoClientParamsWithStatelessResetToken) { … }
TEST_P(TransportParametersTest, ParseClientParams) { … }
TEST_P(TransportParametersTest,
ParseClientParamsFailsWithFullStatelessResetToken) { … }
TEST_P(TransportParametersTest,
ParseClientParamsFailsWithEmptyStatelessResetToken) { … }
TEST_P(TransportParametersTest, ParseClientParametersRepeated) { … }
TEST_P(TransportParametersTest, ParseServerParams) { … }
TEST_P(TransportParametersTest, ParseServerParametersRepeated) { … }
TEST_P(TransportParametersTest,
ParseServerParametersEmptyOriginalConnectionId) { … }
TEST_P(TransportParametersTest, VeryLongCustomParameter) { … }
TEST_P(TransportParametersTest, SerializationOrderIsRandom) { … }
TEST_P(TransportParametersTest, Degrease) { … }
class TransportParametersTicketSerializationTest : public QuicTest { … };
TEST_F(TransportParametersTicketSerializationTest,
StatelessResetTokenDoesntChangeOutput) { … }
TEST_F(TransportParametersTicketSerializationTest,
ConnectionIDDoesntChangeOutput) { … }
TEST_F(TransportParametersTicketSerializationTest, StreamLimitChangesOutput) { … }
TEST_F(TransportParametersTicketSerializationTest,
ApplicationStateChangesOutput) { … }
}
}