Fix QuicheClientSparseHistogram API. Also add a unit test to ensure the default implementation will build as least. PiperOrigin-RevId: 797924395
diff --git a/build/source_list.bzl b/build/source_list.bzl index 7511956..4db4368 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -1110,6 +1110,7 @@ "common/lifetime_tracking_test.cc", "common/masque/connect_ip_datagram_payload_test.cc", "common/masque/connect_udp_datagram_payload_test.cc", + "common/platform/api/quiche_client_stats_test.cc", "common/platform/api/quiche_file_utils_test.cc", "common/platform/api/quiche_hostname_utils_test.cc", "common/platform/api/quiche_lower_case_string_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni index eb1d406..2e1cf09 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -1111,6 +1111,7 @@ "src/quiche/common/lifetime_tracking_test.cc", "src/quiche/common/masque/connect_ip_datagram_payload_test.cc", "src/quiche/common/masque/connect_udp_datagram_payload_test.cc", + "src/quiche/common/platform/api/quiche_client_stats_test.cc", "src/quiche/common/platform/api/quiche_file_utils_test.cc", "src/quiche/common/platform/api/quiche_hostname_utils_test.cc", "src/quiche/common/platform/api/quiche_lower_case_string_test.cc",
diff --git a/build/source_list.json b/build/source_list.json index b25abff..7e24315 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -1110,6 +1110,7 @@ "quiche/common/lifetime_tracking_test.cc", "quiche/common/masque/connect_ip_datagram_payload_test.cc", "quiche/common/masque/connect_udp_datagram_payload_test.cc", + "quiche/common/platform/api/quiche_client_stats_test.cc", "quiche/common/platform/api/quiche_file_utils_test.cc", "quiche/common/platform/api/quiche_hostname_utils_test.cc", "quiche/common/platform/api/quiche_lower_case_string_test.cc",
diff --git a/quiche/common/platform/api/quiche_client_stats.h b/quiche/common/platform/api/quiche_client_stats.h index c11ccc4..ecec952 100644 --- a/quiche/common/platform/api/quiche_client_stats.h +++ b/quiche/common/platform/api/quiche_client_stats.h
@@ -5,6 +5,7 @@ #ifndef QUICHE_COMMON_PLATFORM_API_QUICHE_CLIENT_STATS_H_ #define QUICHE_COMMON_PLATFORM_API_QUICHE_CLIENT_STATS_H_ +#include "absl/strings/string_view.h" #include "quiche_platform_impl/quiche_client_stats_impl.h" namespace quiche { @@ -77,8 +78,7 @@ QUICHE_CLIENT_HISTOGRAM_COUNTS_IMPL(name, sample, min, max, bucket_count, \ docstring) -template <typename String> -inline void QuicheClientSparseHistogram(const String& name, int sample) { +inline void QuicheClientSparseHistogram(absl::string_view name, int sample) { QuicheClientSparseHistogramImpl(name, sample); }
diff --git a/quiche/common/platform/api/quiche_client_stats_test.cc b/quiche/common/platform/api/quiche_client_stats_test.cc new file mode 100644 index 0000000..e9b960c --- /dev/null +++ b/quiche/common/platform/api/quiche_client_stats_test.cc
@@ -0,0 +1,29 @@ +#include "quiche/common/platform/api/quiche_client_stats.h" + +#include "quiche/quic/core/quic_time.h" +#include "quiche/common/platform/api/quiche_test.h" + +namespace quiche::test { + +enum class TestEnum { ZERO = 0, ONE, TWO, COUNT }; + +TEST(QuichePlatformTest, QuicheClientStats) { + // Just make sure they compile. + QUICHE_CLIENT_HISTOGRAM_ENUM("my.enum.histogram", TestEnum::ONE, + TestEnum::COUNT, "doc"); + QUICHE_CLIENT_HISTOGRAM_BOOL("my.bool.histogram", false, "doc"); + QUICHE_CLIENT_HISTOGRAM_TIMES( + "my.timing.histogram", quic::QuicTime::Delta::FromSeconds(5), + quic::QuicTime::Delta::FromSeconds(1), + quic::QuicTime::Delta::FromSeconds(3600), 100, "doc"); + QUICHE_CLIENT_HISTOGRAM_COUNTS("my.count.histogram", 123, 0, 1000, 100, + "doc"); + std::string histogram_name = "my.sparse.histogram"; + int value = 345; + QuicheClientSparseHistogramImpl(histogram_name, value); + // Make sure compiler doesn't report unused-parameter error. + bool should_be_used = false; + QUICHE_CLIENT_HISTOGRAM_BOOL_IMPL("my.bool.histogram", should_be_used, "doc"); +} + +} // namespace quiche::test
diff --git a/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h b/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h index 0f9f8e2..484bdf7 100644 --- a/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h +++ b/quiche/common/platform/default/quiche_platform_impl/quiche_client_stats_impl.h
@@ -10,6 +10,7 @@ #include <type_traits> +#include "absl/strings/string_view.h" #include "quiche/common/platform/api/quiche_export.h" namespace quiche { @@ -50,8 +51,8 @@ consteval QuicheRequireStringConstant(const char (& /*name*/)[N]) {} }; -inline void QuicheClientSparseHistogramImpl( - QuicheRequireStringConstant /*name*/, int /*sample*/) { +inline void QuicheClientSparseHistogramImpl(absl::string_view /*name*/, + int /*sample*/) { // No-op. }
diff --git a/quiche/quic/platform/api/quic_client_stats.h b/quiche/quic/platform/api/quic_client_stats.h index da41ce4..ce6f8b1 100644 --- a/quiche/quic/platform/api/quic_client_stats.h +++ b/quiche/quic/platform/api/quic_client_stats.h
@@ -5,6 +5,7 @@ #ifndef QUICHE_QUIC_PLATFORM_API_QUIC_CLIENT_STATS_H_ #define QUICHE_QUIC_PLATFORM_API_QUIC_CLIENT_STATS_H_ +#include "absl/strings/string_view.h" #include "quiche/common/platform/api/quiche_client_stats.h" namespace quic { @@ -76,8 +77,7 @@ QUICHE_CLIENT_HISTOGRAM_COUNTS(name, sample, min, max, bucket_count, \ docstring) -template <typename String> -inline void QuicClientSparseHistogram(const String& name, int sample) { +inline void QuicClientSparseHistogram(absl::string_view name, int sample) { quiche::QuicheClientSparseHistogram(name, sample); }