From a7be9bbdc205693d5432de3c77062741363299ad Mon Sep 17 00:00:00 2001 From: Bin Wu Date: Mon, 4 Feb 2019 13:43:11 -0500 Subject: [PATCH 1/4] Add quic_client_stats_impl.h to QUICHE platform implementation, with everything being no-op. Signed-off-by: Bin Wu --- bazel/external/quiche.BUILD | 2 +- .../quic_listeners/quiche/platform/BUILD | 1 + .../quiche/platform/quic_client_stats_impl.h | 26 +++++++++++++++++++ .../quiche/platform/quic_platform_test.cc | 14 ++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index b287afa1dc695..788441bf40533 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -114,6 +114,7 @@ cc_library( hdrs = [ "quiche/quic/platform/api/quic_aligned.h", "quiche/quic/platform/api/quic_arraysize.h", + "quiche/quic/platform/api/quic_client_stats.h", "quiche/quic/platform/api/quic_containers.h", "quiche/quic/platform/api/quic_endian.h", "quiche/quic/platform/api/quic_estimate_memory_usage.h", @@ -130,7 +131,6 @@ cc_library( "quiche/quic/platform/api/quic_uint128.h", # TODO: uncomment the following files as implementations are added. # "quiche/quic/platform/api/quic_bug_tracker.h", - # "quiche/quic/platform/api/quic_client_stats.h", # "quiche/quic/platform/api/quic_clock.h", # "quiche/quic/platform/api/quic_expect_bug.h", # "quiche/quic/platform/api/quic_exported_stats.h", diff --git a/source/extensions/quic_listeners/quiche/platform/BUILD b/source/extensions/quic_listeners/quiche/platform/BUILD index 8687dd1cb0b6f..fb8ffa1ccfeac 100644 --- a/source/extensions/quic_listeners/quiche/platform/BUILD +++ b/source/extensions/quic_listeners/quiche/platform/BUILD @@ -42,6 +42,7 @@ envoy_cc_library( hdrs = [ "quic_aligned_impl.h", "quic_arraysize_impl.h", + "quic_client_stats_impl.h", "quic_containers_impl.h", "quic_endian_impl.h", "quic_estimate_memory_usage_impl.h", diff --git a/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h new file mode 100644 index 0000000000000..3deee9df35b83 --- /dev/null +++ b/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h @@ -0,0 +1,26 @@ +#pragma once + +// NOLINT(namespace-envoy) +// +// This file is part of the QUICHE platform implementation, and is not to be +// consumed or referenced directly by other Envoy code. It serves purely as a +// porting layer for QUICHE. + +#define QUIC_CLIENT_HISTOGRAM_ENUM_IMPL(name, sample, enum_size, docstring) \ + do { \ + } while (0) +#define QUIC_CLIENT_HISTOGRAM_BOOL_IMPL(name, sample, docstring) \ + do { \ + } while (0) +#define QUIC_CLIENT_HISTOGRAM_TIMES_IMPL(name, sample, min, max, num_buckets, docstring) \ + do { \ + } while (0) +#define QUIC_CLIENT_HISTOGRAM_COUNTS_IMPL(name, sample, min, max, num_buckets, docstring) \ + do { \ + } while (0) + +namespace quic { + +inline void QuicClientSparseHistogramImpl(const std::string& /*name*/, int /*sample*/) {} + +} // namespace quic diff --git a/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc b/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc index ed5222930ebb0..8db6cfc82fa1d 100644 --- a/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc +++ b/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc @@ -2,6 +2,7 @@ #include "quiche/quic/platform/api/quic_aligned.h" #include "quiche/quic/platform/api/quic_arraysize.h" +#include "quiche/quic/platform/api/quic_client_stats.h" #include "quiche/quic/platform/api/quic_containers.h" #include "quiche/quic/platform/api/quic_endian.h" #include "quiche/quic/platform/api/quic_estimate_memory_usage.h" @@ -29,6 +30,19 @@ TEST(QuicPlatformTest, QuicArraysize) { EXPECT_EQ(5, QUIC_ARRAYSIZE(array)); } +enum class TestEnum { ZERO = 0, ONE, TWO, COUNT }; + +TEST(QuicPlatformTest, QuicClientStats) { + // Just make sure they compiles. + QUIC_CLIENT_HISTOGRAM_ENUM("my.enum.histogram", TestEnum::ONE, TestEnum::COUNT, "doc"); + QUIC_CLIENT_HISTOGRAM_BOOL("my.bool.histogram", false, "doc"); + QUIC_CLIENT_HISTOGRAM_TIMES("my.timing.histogram", quic::QuicTime::Delta::FromSeconds(5), + quic::QuicTime::Delta::FromSeconds(1), + quic::QuicTime::Delta::FromSecond(3600), 100, "doc"); + QUIC_CLIENT_HISTOGRAM_COUNTS("my.count.histogram", 123, 0, 1000, 100, "doc"); + quic::QuicClientSparseHistogram("my.sparse.histogram", 345); +} + TEST(QuicPlatformTest, QuicUnorderedMap) { quic::QuicUnorderedMap umap; umap.insert({"foo", 2}); From 294b4d035bc98db0430e1aa23490da65d1cf2f65 Mon Sep 17 00:00:00 2001 From: Bin Wu Date: Mon, 4 Feb 2019 14:11:58 -0500 Subject: [PATCH 2/4] Fix typo in QuicPlatformTest. Signed-off-by: Bin Wu --- .../quic_listeners/quiche/platform/quic_platform_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc b/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc index 8db6cfc82fa1d..44b343af8efd7 100644 --- a/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc +++ b/test/extensions/quic_listeners/quiche/platform/quic_platform_test.cc @@ -33,7 +33,7 @@ TEST(QuicPlatformTest, QuicArraysize) { enum class TestEnum { ZERO = 0, ONE, TWO, COUNT }; TEST(QuicPlatformTest, QuicClientStats) { - // Just make sure they compiles. + // Just make sure they compile. QUIC_CLIENT_HISTOGRAM_ENUM("my.enum.histogram", TestEnum::ONE, TestEnum::COUNT, "doc"); QUIC_CLIENT_HISTOGRAM_BOOL("my.bool.histogram", false, "doc"); QUIC_CLIENT_HISTOGRAM_TIMES("my.timing.histogram", quic::QuicTime::Delta::FromSeconds(5), From 374d948a0fd1e07cc5faaa80b114715883694d22 Mon Sep 17 00:00:00 2001 From: Bin Wu Date: Mon, 4 Feb 2019 14:39:07 -0500 Subject: [PATCH 3/4] Include in quic_client_stats_impl.h. Signed-off-by: Bin Wu --- .../quic_listeners/quiche/platform/quic_client_stats_impl.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h index 3deee9df35b83..9c1785c3bf90d 100644 --- a/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h +++ b/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h @@ -6,6 +6,8 @@ // consumed or referenced directly by other Envoy code. It serves purely as a // porting layer for QUICHE. +#include + #define QUIC_CLIENT_HISTOGRAM_ENUM_IMPL(name, sample, enum_size, docstring) \ do { \ } while (0) From 68b6a7c9ca755a446fe29dcacd33bf1ae786780b Mon Sep 17 00:00:00 2001 From: Bin Wu Date: Mon, 4 Feb 2019 17:29:12 -0500 Subject: [PATCH 4/4] Add a comment for why the QUIC client stats macros are NOOP. Signed-off-by: Bin Wu --- .../quic_listeners/quiche/platform/quic_client_stats_impl.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h index 9c1785c3bf90d..7108de135e2b8 100644 --- a/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h +++ b/source/extensions/quic_listeners/quiche/platform/quic_client_stats_impl.h @@ -8,6 +8,10 @@ #include +// NOTE(wub): These macros are currently NOOP because they are supposed to be +// used by client-side stats. They should be implemented when QUIC client code +// is used by Envoy to connect to backends. + #define QUIC_CLIENT_HISTOGRAM_ENUM_IMPL(name, sample, enum_size, docstring) \ do { \ } while (0)