Add AbslStringify() for PacketHeaderFormat and QuicTimeWaitListManager::TimeWaitAction This improves the legibility of the logging statements in QuicTimeWaitListManager::ProcessPacket(). PiperOrigin-RevId: 845345530
diff --git a/build/source_list.bzl b/build/source_list.bzl index 42b7ad0..1228670 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -1359,6 +1359,7 @@ "quic/core/quic_time_test.cc", "quic/core/quic_time_wait_list_manager_test.cc", "quic/core/quic_trace_visitor_test.cc", + "quic/core/quic_types_test.cc", "quic/core/quic_unacked_packet_map_test.cc", "quic/core/quic_utils_test.cc", "quic/core/quic_version_manager_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni index 57130b5..841dfc8 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -1360,6 +1360,7 @@ "src/quiche/quic/core/quic_time_test.cc", "src/quiche/quic/core/quic_time_wait_list_manager_test.cc", "src/quiche/quic/core/quic_trace_visitor_test.cc", + "src/quiche/quic/core/quic_types_test.cc", "src/quiche/quic/core/quic_unacked_packet_map_test.cc", "src/quiche/quic/core/quic_utils_test.cc", "src/quiche/quic/core/quic_version_manager_test.cc",
diff --git a/build/source_list.json b/build/source_list.json index 66de0ba..c25053b 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -1359,6 +1359,7 @@ "quiche/quic/core/quic_time_test.cc", "quiche/quic/core/quic_time_wait_list_manager_test.cc", "quiche/quic/core/quic_trace_visitor_test.cc", + "quiche/quic/core/quic_types_test.cc", "quiche/quic/core/quic_unacked_packet_map_test.cc", "quiche/quic/core/quic_utils_test.cc", "quiche/quic/core/quic_version_manager_test.cc",
diff --git a/quiche/quic/core/quic_time_wait_list_manager.h b/quiche/quic/core/quic_time_wait_list_manager.h index 3592e14..83ee551 100644 --- a/quiche/quic/core/quic_time_wait_list_manager.h +++ b/quiche/quic/core/quic_time_wait_list_manager.h
@@ -16,6 +16,7 @@ #include <vector> #include "absl/base/nullability.h" +#include "absl/strings/str_cat.h" #include "quiche/quic/core/quic_alarm.h" #include "quiche/quic/core/quic_alarm_factory.h" #include "quiche/quic/core/quic_blocked_writer_interface.h" @@ -347,6 +348,25 @@ Visitor* visitor_; }; +template <typename Sink> +void AbslStringify(Sink& sink, QuicTimeWaitListManager::TimeWaitAction action) { + switch (action) { + case QuicTimeWaitListManager::SEND_TERMINATION_PACKETS: + sink.Append("SEND_TERMINATION_PACKETS"); + return; + case QuicTimeWaitListManager::SEND_CONNECTION_CLOSE_PACKETS: + sink.Append("SEND_CONNECTION_CLOSE_PACKETS"); + return; + case QuicTimeWaitListManager::SEND_STATELESS_RESET: + sink.Append("SEND_STATELESS_RESET"); + return; + case QuicTimeWaitListManager::DO_NOTHING: + sink.Append("DO_NOTHING"); + return; + } + sink.Append(absl::StrCat("Unknown TimeWaitAction (", int{action}, ")")); +} + } // namespace quic #endif // QUICHE_QUIC_CORE_QUIC_TIME_WAIT_LIST_MANAGER_H_
diff --git a/quiche/quic/core/quic_time_wait_list_manager_test.cc b/quiche/quic/core/quic_time_wait_list_manager_test.cc index c20f1b2..4012d0d 100644 --- a/quiche/quic/core/quic_time_wait_list_manager_test.cc +++ b/quiche/quic/core/quic_time_wait_list_manager_test.cc
@@ -5,18 +5,32 @@ #include "quiche/quic/core/quic_time_wait_list_manager.h" #include <cerrno> +#include <cstddef> +#include <cstdint> #include <memory> +#include <string> #include <tuple> #include <utility> #include <vector> +#include "absl/strings/str_cat.h" +#include "quiche/quic/core/crypto/quic_random.h" +#include "quiche/quic/core/quic_alarm.h" +#include "quiche/quic/core/quic_alarm_factory.h" +#include "quiche/quic/core/quic_arena_scoped_ptr.h" #include "quiche/quic/core/quic_connection_id.h" #include "quiche/quic/core/quic_framer.h" +#include "quiche/quic/core/quic_one_block_arena.h" #include "quiche/quic/core/quic_packet_writer.h" #include "quiche/quic/core/quic_packets.h" +#include "quiche/quic/core/quic_time.h" +#include "quiche/quic/core/quic_types.h" #include "quiche/quic/core/quic_utils.h" +#include "quiche/quic/core/quic_versions.h" #include "quiche/quic/platform/api/quic_flags.h" +#include "quiche/quic/platform/api/quic_socket_address.h" #include "quiche/quic/platform/api/quic_test.h" +#include "quiche/quic/test_tools/mock_clock.h" #include "quiche/quic/test_tools/mock_quic_session_visitor.h" #include "quiche/quic/test_tools/quic_test_utils.h" #include "quiche/quic/test_tools/quic_time_wait_list_manager_peer.h" @@ -743,6 +757,20 @@ &time_wait_list_manager_)); } +TEST(TimeWaitActionTest, Stringify) { + EXPECT_EQ(absl::StrCat(QuicTimeWaitListManager::SEND_TERMINATION_PACKETS), + "SEND_TERMINATION_PACKETS"); + EXPECT_EQ( + absl::StrCat(QuicTimeWaitListManager::SEND_CONNECTION_CLOSE_PACKETS), + "SEND_CONNECTION_CLOSE_PACKETS"); + EXPECT_EQ(absl::StrCat(QuicTimeWaitListManager::SEND_STATELESS_RESET), + "SEND_STATELESS_RESET"); + EXPECT_EQ(absl::StrCat(QuicTimeWaitListManager::DO_NOTHING), "DO_NOTHING"); + EXPECT_EQ( + absl::StrCat(static_cast<QuicTimeWaitListManager::TimeWaitAction>(0xff)), + "Unknown TimeWaitAction (255)"); +} + } // namespace } // namespace test } // namespace quic
diff --git a/quiche/quic/core/quic_types.h b/quiche/quic/core/quic_types.h index 8b554d0..bb5e3e8 100644 --- a/quiche/quic/core/quic_types.h +++ b/quiche/quic/core/quic_types.h
@@ -581,6 +581,11 @@ QUICHE_EXPORT std::string PacketHeaderFormatToString(PacketHeaderFormat format); +template <typename Sink> +void AbslStringify(Sink& sink, PacketHeaderFormat format) { + sink.Append(PacketHeaderFormatToString(format)); +} + // Information about a newly acknowledged packet. struct QUICHE_EXPORT AckedPacket { constexpr AckedPacket(QuicPacketNumber packet_number,
diff --git a/quiche/quic/core/quic_types_test.cc b/quiche/quic/core/quic_types_test.cc new file mode 100644 index 0000000..075054a --- /dev/null +++ b/quiche/quic/core/quic_types_test.cc
@@ -0,0 +1,24 @@ +// Copyright 2025 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 "quiche/quic/core/quic_types.h" + +#include "absl/strings/str_cat.h" +#include "quiche/quic/platform/api/quic_test.h" + +namespace quic { +namespace { + +TEST(PacketHeaderFormatTest, Stringify) { + EXPECT_EQ(absl::StrCat(IETF_QUIC_LONG_HEADER_PACKET), + "IETF_QUIC_LONG_HEADER_PACKET"); + EXPECT_EQ(absl::StrCat(IETF_QUIC_SHORT_HEADER_PACKET), + "IETF_QUIC_SHORT_HEADER_PACKET"); + EXPECT_EQ(absl::StrCat(GOOGLE_QUIC_Q043_PACKET), "GOOGLE_QUIC_Q043_PACKET"); + EXPECT_EQ(absl::StrCat(static_cast<PacketHeaderFormat>(0xff)), + "Unknown (255)"); +} + +} // namespace +} // namespace quic