From 1068b8efa950147d0ba6bb8730a428fc8542e88a Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Thu, 18 Apr 2019 18:06:52 -0400 Subject: [PATCH 01/11] Bring in epoll_server. Signed-off-by: Dan Zhang --- bazel/envoy_build_system.bzl | 13 ++++-- bazel/external/quiche.BUILD | 43 +++++++++++++++++++ bazel/external/quiche.genrule_cmd | 3 ++ bazel/repository_locations.bzl | 6 +-- .../quiche/platform/quic_logging_impl.h | 18 +++++++- .../quic_listeners/quiche/platform/BUILD | 32 ++++++++++++++ .../platform/epoll_address_test_utils_impl.h | 39 +++++++++++++++++ .../quiche/platform/epoll_bug_impl.h | 11 +++++ .../quiche/platform/epoll_expect_bug_impl.h | 11 +++++ .../quiche/platform/epoll_export_impl.h | 10 +++++ .../quiche/platform/epoll_logging_impl.h | 24 +++++++++++ .../quiche/platform/epoll_ptr_util_impl.h | 17 ++++++++ .../quiche/platform/epoll_test_impl.h | 12 ++++++ .../quiche/platform/epoll_thread_impl.h | 15 +++++++ .../quiche/platform/epoll_time_impl.h | 15 +++++++ 15 files changed, 261 insertions(+), 8 deletions(-) create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_bug_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_expect_bug_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_export_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_ptr_util_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_thread_impl.h create mode 100644 test/extensions/quic_listeners/quiche/platform/epoll_time_impl.h diff --git a/bazel/envoy_build_system.bzl b/bazel/envoy_build_system.bzl index d7de0270b6c48..2461de7b44a7c 100644 --- a/bazel/envoy_build_system.bzl +++ b/bazel/envoy_build_system.bzl @@ -442,6 +442,7 @@ def envoy_cc_test( deps = [], tags = [], args = [], + copts = [], shard_count = None, coverage = True, local = False, @@ -457,10 +458,11 @@ def envoy_cc_test( deps = deps, repository = repository, tags = test_lib_tags, + copts = copts, ) native.cc_test( name = name, - copts = envoy_copts(repository, test = True), + copts = envoy_copts(repository, test = True) + copts, linkopts = envoy_test_linkopts(), linkstatic = 1, malloc = tcmalloc_external_dep(repository), @@ -488,13 +490,14 @@ def envoy_cc_test_infrastructure_library( deps = [], repository = "", tags = [], - include_prefix = None): + include_prefix = None, + copts = []): native.cc_library( name = name, srcs = srcs, hdrs = hdrs, data = data, - copts = envoy_copts(repository, test = True), + copts = envoy_copts(repository, test = True) + copts, testonly = 1, deps = deps + [envoy_external_dep_path(dep) for dep in external_deps] + [ envoy_external_dep_path("googletest"), @@ -517,7 +520,8 @@ def envoy_cc_test_library( deps = [], repository = "", tags = [], - include_prefix = None): + include_prefix = None, + copts = []): deps = deps + [ repository + "//test/test_common:printers_includes", ] @@ -531,6 +535,7 @@ def envoy_cc_test_library( repository, tags, include_prefix, + copts, ) # Envoy test binaries should be specified with this function. diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index d3b82aad1b915..e4a3bb6397e5f 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -29,6 +29,7 @@ load(":genrule_cmd.bzl", "genrule_cmd") load( "@envoy//bazel:envoy_build_system.bzl", "envoy_cc_test", + "envoy_copts", "envoy_select_quiche", ) @@ -238,6 +239,48 @@ cc_library( deps = [":quic_platform_export"], ) +cc_library( + name = "epoll_server_platform", + testonly = 1, + hdrs = [ + "quiche/epoll_server/platform/api/epoll_address_test_utils.h", + "quiche/epoll_server/platform/api/epoll_bug.h", + "quiche/epoll_server/platform/api/epoll_expect_bug.h", + "quiche/epoll_server/platform/api/epoll_export.h", + "quiche/epoll_server/platform/api/epoll_logging.h", + "quiche/epoll_server/platform/api/epoll_ptr_util.h", + "quiche/epoll_server/platform/api/epoll_test.h", + "quiche/epoll_server/platform/api/epoll_thread.h", + "quiche/epoll_server/platform/api/epoll_time.h", + ], + visibility = ["//visibility:public"], + deps = ["@envoy//test/extensions/quic_listeners/quiche/platform:epoll_server_platform_impl_lib"], +) + +cc_library( + name = "epoll_server_lib", + testonly = 1, + srcs = [ + "quiche/epoll_server/fake_simple_epoll_server.cc", + "quiche/epoll_server/simple_epoll_server.cc", + ], + hdrs = [ + "quiche/epoll_server/fake_simple_epoll_server.h", + "quiche/epoll_server/simple_epoll_server.h", + ], + copts = envoy_copts("@envoy") + ["-Wno-error=unused-parameter"], + visibility = ["//visibility:public"], + deps = [":epoll_server_platform"], +) + +envoy_cc_test( + name = "epoll_server_test", + srcs = ["quiche/epoll_server/simple_epoll_server_test.cc"], + copts = ["-Wno-error=unused-parameter"], + repository = "@envoy", + deps = [":epoll_server_lib"], +) + envoy_cc_test( name = "http2_platform_test", srcs = envoy_select_quiche( diff --git a/bazel/external/quiche.genrule_cmd b/bazel/external/quiche.genrule_cmd index 3993d532a29b4..548fde342b456 100644 --- a/bazel/external/quiche.genrule_cmd +++ b/bazel/external/quiche.genrule_cmd @@ -21,6 +21,9 @@ cat <sed_commands # Rewrite include directives for platform impl files. /^#include/ s!net/(http2|spdy|quic)/platform/impl/!extensions/quic_listeners/quiche/platform/! +# Rewrite include directives for epoll_server platform impl files. +/^#include/ s!net/tools/epoll_server/platform/impl!test/extensions/quic_listeners/quiche/platform/! + # Strip "net/third_party" from include directives to other QUICHE files. /^#include/ s!net/third_party/quiche/src/!quiche/! diff --git a/bazel/repository_locations.bzl b/bazel/repository_locations.bzl index f2f8671998833..46f6db1cbebe6 100644 --- a/bazel/repository_locations.bzl +++ b/bazel/repository_locations.bzl @@ -236,8 +236,8 @@ REPOSITORY_LOCATIONS = dict( urls = ["https://github.com/google/subpar/archive/1.3.0.tar.gz"], ), com_googlesource_quiche = dict( - # Static snapshot of https://quiche.googlesource.com/quiche/+archive/ba6354aa1b39f3d9788ead909ad3e678ac863938.tar.gz - sha256 = "4598537810c3d343c32333c5367fcb652638018118f7f4e844e080405d9e73bb", - urls = ["https://storage.googleapis.com/quiche-envoy-integration/ba6354aa1b39f3d9788ead909ad3e678ac863938.tar.gz"], + # Static snapshot of https://quiche.googlesource.com/quiche/+archive/3e188a56edbcc471799499958bfd7c05ec45b9e2.tar.gz + sha256 = "b116cfac5d39390c00f13758b21978aab953d8a67d846182f39b333644ee64b2", + urls = ["https://storage.googleapis.com/quiche-envoy-integration/3e188a56edbcc471799499958bfd7c05ec45b9e2.tar.gz"], ), ) diff --git a/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h index bf4e426616fa1..6eb572ea4a644 100644 --- a/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h +++ b/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h @@ -59,9 +59,18 @@ #define CHECK(condition) \ QUIC_LOG_IF_IMPL(FATAL, ABSL_PREDICT_FALSE(!(condition))) << "CHECK failed: " #condition "." +#define CHECK_GT(a, b) CHECK((a) > (b)) +#define CHECK_GE(a, b) CHECK((a) >= (b)) +#define CHECK_LT(a, b) CHECK((a) < (b)) +#define CHECK_LE(a, b) CHECK((a) <= (b)) +#define CHECK_NE(a, b) CHECK((a) != (b)) +#define CHECK_EQ(a, b) CHECK((a) == (b)) + #ifdef NDEBUG // Release build -#define DCHECK(condition) QUIC_COMPILED_OUT_LOG() +#define DCHECK(condition) \ + while (false && (condition)) \ + QUIC_COMPILED_OUT_LOG() #define QUIC_COMPILED_OUT_LOG() QUIC_LOG_IMPL_INTERNAL(false, quic::NullLogStream().stream()) #define QUIC_DVLOG_IMPL(verbosity) QUIC_COMPILED_OUT_LOG() #define QUIC_DVLOG_IF_IMPL(verbosity, condition) QUIC_COMPILED_OUT_LOG() @@ -82,6 +91,13 @@ #define QUIC_NOTREACHED_IMPL() NOT_REACHED_GCOVR_EXCL_LINE #endif +#define DCHECK_GT(a, b) DCHECK((a) > (b)) +#define DCHECK_GE(a, b) DCHECK((a) >= (b)) +#define DCHECK_LT(a, b) DCHECK((a) < (b)) +#define DCHECK_LE(a, b) DCHECK((a) <= (b)) +#define DCHECK_NE(a, b) DCHECK((a) != (b)) +#define DCHECK_EQ(a, b) DCHECK((a) == (b)) + #define QUIC_PREDICT_FALSE_IMPL(x) ABSL_PREDICT_FALSE(x) namespace quic { diff --git a/test/extensions/quic_listeners/quiche/platform/BUILD b/test/extensions/quic_listeners/quiche/platform/BUILD index d2ec6aa11f9b1..ab7044e14d746 100644 --- a/test/extensions/quic_listeners/quiche/platform/BUILD +++ b/test/extensions/quic_listeners/quiche/platform/BUILD @@ -62,3 +62,35 @@ envoy_cc_test_library( "//test/test_common:environment_lib", ], ) + +envoy_cc_test_library( + name = "epoll_server_platform_impl_lib", + hdrs = [ + "epoll_address_test_utils_impl.h", + "epoll_bug_impl.h", + "epoll_expect_bug_impl.h", + "epoll_export_impl.h", + "epoll_logging_impl.h", + "epoll_ptr_util_impl.h", + "epoll_test_impl.h", + "epoll_thread_impl.h", + "epoll_time_impl.h", + ], + external_deps = ["abseil_time"], + deps = [ + "//include/envoy/network:address_interface", + "//source/extensions/quic_listeners/quiche/platform:quic_platform_base_impl_lib", + "//test/test_common:environment_lib", + ], +) + +envoy_cc_test( + name = "epoll_server_test", + srcs = [ + "simple_epoll_server_test.cc", + ], + copts = ["-Wno-error=unused-parameter"], + deps = [ + "@com_googlesource_quiche//:epoll_server_lib", + ], +) diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h new file mode 100644 index 0000000000000..d4a6020c667f5 --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h @@ -0,0 +1,39 @@ +#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. + +#include + +#include "envoy/network/address.h" + +#include "test/test_common/environment.h" + +namespace epoll_server { + +namespace { + +int addressFamilyUnderTestHelper() { + std::vector versions = + Envoy::TestEnvironment::getIpVersionsForTest(); + if (versions.size() == 2 || + (versions.size() == 1 && versions[0] == Envoy::Network::Address::IpVersion::v4)) { + return AF_INET; + } else if (versions.size() == 1) { + ASSERT(versions[0] == Envoy::Network::Address::IpVersion::v6); + return AF_INET6; + } + return -1; +} + +} // namespace + +int AddressFamilyUnderTestImpl() { + static const int* version = new int(addressFamilyUnderTestHelper()); + return *version; +} + +} // namespace epoll_server diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_bug_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_bug_impl.h new file mode 100644 index 0000000000000..7ecd3252466fe --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_bug_impl.h @@ -0,0 +1,11 @@ +#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. + +#include "extensions/quic_listeners/quiche/platform/quic_bug_tracker_impl.h" + +#define EPOLL_BUG_IMPL QUIC_BUG_IMPL diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_expect_bug_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_expect_bug_impl.h new file mode 100644 index 0000000000000..7f397ba3ebf19 --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_expect_bug_impl.h @@ -0,0 +1,11 @@ +#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. + +#include "extensions/quic_listeners/quiche/platform/quic_expect_bug_impl.h" + +#define EXPECT_EPOLL_BUG_IMPL EXPECT_QUIC_BUG_IMPL diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_export_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_export_impl.h new file mode 100644 index 0000000000000..65d77158aafe4 --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_export_impl.h @@ -0,0 +1,10 @@ +#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 EPOLL_EXPORT +#define EPOLL_EXPORT_PRIVATE diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h new file mode 100644 index 0000000000000..909c1e351ba05 --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h @@ -0,0 +1,24 @@ +#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. + +#include "extensions/quic_listeners/quiche/platform/quic_logging_impl.h" + +namespace epoll_server { + +#define EPOLL_LOG_IMPL(severity) QUIC_LOG_IMPL(severity) +#define EPOLL_VLOG_IMPL(verbosity) QUIC_VLOG_IMPL(verbosity) + +#define EPOLL_PLOG_IMPL(severity) QUIC_PLOG_IMPL(severity) + +#ifndef NDEBUG +#define EPOLL_DVLOG_IMPL(verbosity) QUIC_VLOG_IMPL(verbosity) +#else +#define EPOLL_DVLOG_IMPL(verbosity) QUIC_VLOG_IF_IMPL(verbosity, false) +#endif + +} // namespace epoll_server diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_ptr_util_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_ptr_util_impl.h new file mode 100644 index 0000000000000..12da8b11d3cc7 --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_ptr_util_impl.h @@ -0,0 +1,17 @@ +#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. + +#include + +namespace epoll_server { + +template std::unique_ptr EpollMakeUniqueImpl(Args&&... args) { + return std::make_unique(std::forward(args)...); +} + +} // namespace epoll_server diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h new file mode 100644 index 0000000000000..8d932e71742bc --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h @@ -0,0 +1,12 @@ +#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. + +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +#define EpollTestImpl ::testing::Test diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_thread_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_thread_impl.h new file mode 100644 index 0000000000000..a8955873ed9b6 --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_thread_impl.h @@ -0,0 +1,15 @@ +#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. + +#include "extensions/quic_listeners/quiche/platform/quic_thread_impl.h" + +namespace epoll_server { + +using EpollThreadImpl = quic::QuicThreadImpl; + +} // namespace epoll_server diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_time_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_time_impl.h new file mode 100644 index 0000000000000..123ceb744938b --- /dev/null +++ b/test/extensions/quic_listeners/quiche/platform/epoll_time_impl.h @@ -0,0 +1,15 @@ +#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. + +#include "absl/time/clock.h" + +namespace epoll_server { + +inline int64_t WallTimeNowInUsecImpl() { return absl::GetCurrentTimeNanos() / 1000; } + +} // namespace epoll_server From 79570f340309624bf18d7a48bf43cd9ccb26dd40 Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Fri, 19 Apr 2019 13:17:50 -0400 Subject: [PATCH 02/11] address comment Signed-off-by: Dan Zhang --- .../extensions/quic_listeners/quiche/platform/BUILD | 11 ----------- .../quiche/platform/epoll_address_test_utils_impl.h | 13 +++++++------ 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/test/extensions/quic_listeners/quiche/platform/BUILD b/test/extensions/quic_listeners/quiche/platform/BUILD index ab7044e14d746..5e82aa18c2975 100644 --- a/test/extensions/quic_listeners/quiche/platform/BUILD +++ b/test/extensions/quic_listeners/quiche/platform/BUILD @@ -83,14 +83,3 @@ envoy_cc_test_library( "//test/test_common:environment_lib", ], ) - -envoy_cc_test( - name = "epoll_server_test", - srcs = [ - "simple_epoll_server_test.cc", - ], - copts = ["-Wno-error=unused-parameter"], - deps = [ - "@com_googlesource_quiche//:epoll_server_lib", - ], -) diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h index d4a6020c667f5..7bba4ef9ed9c2 100644 --- a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h +++ b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h @@ -8,6 +8,8 @@ #include +#include + #include "envoy/network/address.h" #include "test/test_common/environment.h" @@ -19,11 +21,10 @@ namespace { int addressFamilyUnderTestHelper() { std::vector versions = Envoy::TestEnvironment::getIpVersionsForTest(); - if (versions.size() == 2 || - (versions.size() == 1 && versions[0] == Envoy::Network::Address::IpVersion::v4)) { + if (std::find(versions.begin(), versions.end(), Envoy::Network::Address:IpVersion::v4) { return AF_INET; - } else if (versions.size() == 1) { - ASSERT(versions[0] == Envoy::Network::Address::IpVersion::v6); + } + if (std::find(versions.begin(), versions.end(), Envoy::Network::Address:IpVersion::v6) { return AF_INET6; } return -1; @@ -32,8 +33,8 @@ int addressFamilyUnderTestHelper() { } // namespace int AddressFamilyUnderTestImpl() { - static const int* version = new int(addressFamilyUnderTestHelper()); - return *version; + static const int version = addressFamilyUnderTestHelper(); + return version; } } // namespace epoll_server From fa174ac78e1c290a28da04bba67f764ad2cce3c9 Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Fri, 19 Apr 2019 15:18:23 -0400 Subject: [PATCH 03/11] fix build error Signed-off-by: Dan Zhang --- bazel/external/quiche.BUILD | 4 ++-- .../quiche/platform/epoll_address_test_utils_impl.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index 6531ddaf0529b..fdeb1f9c67a35 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -283,7 +283,7 @@ cc_library( "quiche/epoll_server/fake_simple_epoll_server.h", "quiche/epoll_server/simple_epoll_server.h", ], - copts = envoy_copts("@envoy") + ["-Wno-error=unused-parameter"], + copts = envoy_copts("@envoy") + ["-Wno-unused-parameter"], visibility = ["//visibility:public"], deps = [":epoll_server_platform"], ) @@ -291,7 +291,7 @@ cc_library( envoy_cc_test( name = "epoll_server_test", srcs = ["quiche/epoll_server/simple_epoll_server_test.cc"], - copts = ["-Wno-error=unused-parameter"], + copts = ["-Wno-unused-parameter"], repository = "@envoy", deps = [":epoll_server_lib"], ) diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h index 7bba4ef9ed9c2..16e8d7ce7a9c8 100644 --- a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h +++ b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h @@ -21,10 +21,10 @@ namespace { int addressFamilyUnderTestHelper() { std::vector versions = Envoy::TestEnvironment::getIpVersionsForTest(); - if (std::find(versions.begin(), versions.end(), Envoy::Network::Address:IpVersion::v4) { + if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v4) != std::end(versions)) { return AF_INET; } - if (std::find(versions.begin(), versions.end(), Envoy::Network::Address:IpVersion::v6) { + if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v6) != std::end(versions)) { return AF_INET6; } return -1; From f44663a9d5eb56fd9f59077f5000005b001c0dfb Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Fri, 19 Apr 2019 15:19:53 -0400 Subject: [PATCH 04/11] format Signed-off-by: Dan Zhang --- .../quiche/platform/epoll_address_test_utils_impl.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h index 16e8d7ce7a9c8..b8f0632b20e0d 100644 --- a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h +++ b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h @@ -21,10 +21,12 @@ namespace { int addressFamilyUnderTestHelper() { std::vector versions = Envoy::TestEnvironment::getIpVersionsForTest(); - if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v4) != std::end(versions)) { + if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v4) != + std::end(versions)) { return AF_INET; } - if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v6) != std::end(versions)) { + if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v6) != + std::end(versions)) { return AF_INET6; } return -1; From 35c09c6dd99cae8d03adccd9b1af84a2f914acbd Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Fri, 19 Apr 2019 16:54:11 -0400 Subject: [PATCH 05/11] improve macros Signed-off-by: Dan Zhang --- .../quiche/platform/quic_logging_impl.h | 17 ++++++++--------- .../quiche/platform/epoll_logging_impl.h | 6 +----- .../quiche/platform/epoll_test_impl.h | 2 +- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h index ace4d1e746ef4..18314f3407727 100644 --- a/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h +++ b/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h @@ -68,16 +68,15 @@ #ifdef NDEBUG // Release build -#define DCHECK(condition) \ - while (false && (condition)) \ - QUIC_COMPILED_OUT_LOG() -#define QUIC_COMPILED_OUT_LOG() QUIC_LOG_IMPL_INTERNAL(false, quic::NullLogStream().stream()) -#define QUIC_DVLOG_IMPL(verbosity) QUIC_COMPILED_OUT_LOG() -#define QUIC_DVLOG_IF_IMPL(verbosity, condition) QUIC_COMPILED_OUT_LOG() -#define QUIC_DLOG_IMPL(severity) QUIC_COMPILED_OUT_LOG() -#define QUIC_DLOG_IF_IMPL(severity, condition) QUIC_COMPILED_OUT_LOG() +#define DCHECK(condition) QUIC_COMPILED_OUT_LOG(condition) +#define QUIC_COMPILED_OUT_LOG(condition) \ + QUIC_LOG_IMPL_INTERNAL(false && condition, quic::NullLogStream().stream()) +#define QUIC_DVLOG_IMPL(verbosity) QUIC_COMPILED_OUT_LOG(false) +#define QUIC_DVLOG_IF_IMPL(verbosity, condition) QUIC_COMPILED_OUT_LOG(condition) +#define QUIC_DLOG_IMPL(severity) QUIC_COMPILED_OUT_LOG(false) +#define QUIC_DLOG_IF_IMPL(severity, condition) QUIC_COMPILED_OUT_LOG(condition) #define QUIC_DLOG_INFO_IS_ON_IMPL() 0 -#define QUIC_DLOG_EVERY_N_IMPL(severity, n) QUIC_COMPILED_OUT_LOG() +#define QUIC_DLOG_EVERY_N_IMPL(severity, n) QUIC_COMPILED_OUT_LOG(false) #define QUIC_NOTREACHED_IMPL() #else // Debug build diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h index 909c1e351ba05..36ca6d4f79aeb 100644 --- a/test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h +++ b/test/extensions/quic_listeners/quiche/platform/epoll_logging_impl.h @@ -15,10 +15,6 @@ namespace epoll_server { #define EPOLL_PLOG_IMPL(severity) QUIC_PLOG_IMPL(severity) -#ifndef NDEBUG -#define EPOLL_DVLOG_IMPL(verbosity) QUIC_VLOG_IMPL(verbosity) -#else -#define EPOLL_DVLOG_IMPL(verbosity) QUIC_VLOG_IF_IMPL(verbosity, false) -#endif +#define EPOLL_DVLOG_IMPL(verbosity) QUIC_DVLOG_IMPL(verbosity) } // namespace epoll_server diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h index 8d932e71742bc..f0f25ed3b111f 100644 --- a/test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h +++ b/test/extensions/quic_listeners/quiche/platform/epoll_test_impl.h @@ -9,4 +9,4 @@ #include "gmock/gmock.h" #include "gtest/gtest.h" -#define EpollTestImpl ::testing::Test +using EpollTestImpl = ::testing::Test; From 8105de3372e7b7a75a9f8d2ff27605fab9c0e81c Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Fri, 19 Apr 2019 18:14:33 -0400 Subject: [PATCH 06/11] enhance COMPILED_OUT_LOG Signed-off-by: Dan Zhang --- .../quic_listeners/quiche/platform/quic_logging_impl.h | 2 +- .../quiche/platform/epoll_address_test_utils_impl.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h b/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h index 18314f3407727..942922fedd4d3 100644 --- a/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h +++ b/source/extensions/quic_listeners/quiche/platform/quic_logging_impl.h @@ -70,7 +70,7 @@ // Release build #define DCHECK(condition) QUIC_COMPILED_OUT_LOG(condition) #define QUIC_COMPILED_OUT_LOG(condition) \ - QUIC_LOG_IMPL_INTERNAL(false && condition, quic::NullLogStream().stream()) + QUIC_LOG_IMPL_INTERNAL(false && (condition), quic::NullLogStream().stream()) #define QUIC_DVLOG_IMPL(verbosity) QUIC_COMPILED_OUT_LOG(false) #define QUIC_DVLOG_IF_IMPL(verbosity, condition) QUIC_COMPILED_OUT_LOG(condition) #define QUIC_DLOG_IMPL(severity) QUIC_COMPILED_OUT_LOG(false) diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h index b8f0632b20e0d..73506b299926c 100644 --- a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h +++ b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h @@ -22,11 +22,11 @@ int addressFamilyUnderTestHelper() { std::vector versions = Envoy::TestEnvironment::getIpVersionsForTest(); if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v4) != - std::end(versions)) { + versions.end()) { return AF_INET; } if (std::find(versions.begin(), versions.end(), Envoy::Network::Address::IpVersion::v6) != - std::end(versions)) { + versions.end()) { return AF_INET6; } return -1; From 4c1850727ca32620107e9d1b62925d1863b8be5b Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Mon, 22 Apr 2019 11:39:07 -0400 Subject: [PATCH 07/11] move around unused-parameter Signed-off-by: Dan Zhang --- bazel/external/quiche.BUILD | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index fdeb1f9c67a35..f662b1d0b5947 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -49,6 +49,8 @@ genrule( visibility = ["//visibility:private"], ) +quiche_copt = ["-Wno-unused-parameter",] + cc_library( name = "http2_platform", hdrs = [ @@ -283,7 +285,7 @@ cc_library( "quiche/epoll_server/fake_simple_epoll_server.h", "quiche/epoll_server/simple_epoll_server.h", ], - copts = envoy_copts("@envoy") + ["-Wno-unused-parameter"], + copts = envoy_copts("@envoy") + quiche_copt, visibility = ["//visibility:public"], deps = [":epoll_server_platform"], ) @@ -291,7 +293,7 @@ cc_library( envoy_cc_test( name = "epoll_server_test", srcs = ["quiche/epoll_server/simple_epoll_server_test.cc"], - copts = ["-Wno-unused-parameter"], + copts = quiche_copt, repository = "@envoy", deps = [":epoll_server_lib"], ) From 05fb83b81f13392a4d50576d66edfacd366d63d9 Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Mon, 22 Apr 2019 11:43:55 -0400 Subject: [PATCH 08/11] format Signed-off-by: Dan Zhang --- bazel/external/quiche.BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index f662b1d0b5947..1c7b782da661f 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -49,7 +49,7 @@ genrule( visibility = ["//visibility:private"], ) -quiche_copt = ["-Wno-unused-parameter",] +quiche_copt = ["-Wno-unused-parameter"] cc_library( name = "http2_platform", From 2a6b9f865b094c03fe00a915e904ed1d2a648381 Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Mon, 22 Apr 2019 14:26:32 -0400 Subject: [PATCH 09/11] add comment Signed-off-by: Dan Zhang --- .../quiche/platform/epoll_address_test_utils_impl.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h index 73506b299926c..9accbd699ae1f 100644 --- a/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h +++ b/test/extensions/quic_listeners/quiche/platform/epoll_address_test_utils_impl.h @@ -34,6 +34,8 @@ int addressFamilyUnderTestHelper() { } // namespace +// Returns the address family to be used for test. Return v4 if the environment +// supports v4 only or both v4 and v6. Otherwise return v6 or an invalid value. int AddressFamilyUnderTestImpl() { static const int version = addressFamilyUnderTestHelper(); return version; From ea66710858fa46486b2f02cac07d6cc6ae8eada4 Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Tue, 23 Apr 2019 13:09:31 -0400 Subject: [PATCH 10/11] switch to envoy_cc_library Signed-off-by: Dan Zhang --- bazel/external/quiche.BUILD | 47 ++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index 1c7b782da661f..6a7e42f7a9dde 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -28,7 +28,9 @@ licenses(["notice"]) # Apache 2 load(":genrule_cmd.bzl", "genrule_cmd") load( "@envoy//bazel:envoy_build_system.bzl", + "envoy_cc_library", "envoy_cc_test", + "envoy_cc_test_library", "envoy_copts", "envoy_select_quiche", ) @@ -51,7 +53,7 @@ genrule( quiche_copt = ["-Wno-unused-parameter"] -cc_library( +envoy_cc_library( name = "http2_platform", hdrs = [ "quiche/http2/platform/api/http2_arraysize.h", @@ -76,11 +78,12 @@ cc_library( ], "@envoy", ), + repository = "@envoy", visibility = ["//visibility:public"], deps = ["@envoy//source/extensions/quic_listeners/quiche/platform:http2_platform_impl_lib"], ) -cc_library( +envoy_cc_library( name = "spdy_platform", hdrs = [ "quiche/spdy/platform/api/spdy_arraysize.h", @@ -102,26 +105,29 @@ cc_library( ], "@envoy", ), + repository = "@envoy", visibility = ["//visibility:public"], deps = ["@envoy//source/extensions/quic_listeners/quiche/platform:spdy_platform_impl_lib"], ) -cc_library( +envoy_cc_library( name = "spdy_simple_arena_lib", srcs = ["quiche/spdy/core/spdy_simple_arena.cc"], hdrs = ["quiche/spdy/core/spdy_simple_arena.h"], + repository = "@envoy", visibility = ["//visibility:public"], deps = [":spdy_platform"], ) -cc_library( +envoy_cc_library( name = "spdy_platform_unsafe_arena_lib", hdrs = ["quiche/spdy/platform/api/spdy_unsafe_arena.h"], + repository = "@envoy", visibility = ["//visibility:public"], deps = ["@envoy//source/extensions/quic_listeners/quiche/platform:spdy_platform_unsafe_arena_impl_lib"], ) -cc_library( +envoy_cc_library( name = "quic_platform", srcs = ["quiche/quic/platform/api/quic_mutex.cc"] + envoy_select_quiche( [ @@ -141,6 +147,7 @@ cc_library( ], "@envoy", ), + repository = "@envoy", visibility = ["//visibility:public"], deps = [ ":quic_platform_base", @@ -148,28 +155,28 @@ cc_library( ], ) -cc_library( +envoy_cc_library( name = "quic_platform_export", hdrs = ["quiche/quic/platform/api/quic_export.h"], + repository = "@envoy", visibility = ["//visibility:public"], deps = ["@envoy//source/extensions/quic_listeners/quiche/platform:quic_platform_export_impl_lib"], ) -cc_library( +envoy_cc_test_library( name = "quic_platform_port_utils", - testonly = 1, hdrs = envoy_select_quiche( ["quiche/quic/platform/api/quic_port_utils.h"], "@envoy", ), - visibility = ["//visibility:public"], + repository = "@envoy", deps = envoy_select_quiche( ["@envoy//source/extensions/quic_listeners/quiche/platform:quic_platform_port_utils_impl_lib"], "@envoy", ), ) -cc_library( +envoy_cc_library( name = "quic_platform_base", hdrs = [ "quiche/quic/platform/api/quic_aligned.h", @@ -220,6 +227,7 @@ cc_library( ], "@envoy", ), + repository = "@envoy", visibility = ["//visibility:public"], deps = [ ":quic_platform_export", @@ -227,22 +235,24 @@ cc_library( ], ) -cc_library( +envoy_cc_library( name = "quic_platform_sleep", hdrs = ["quiche/quic/platform/api/quic_sleep.h"], + repository = "@envoy", visibility = ["//visibility:public"], deps = ["@envoy//source/extensions/quic_listeners/quiche/platform:quic_platform_sleep_impl_lib"], ) -cc_library( +envoy_cc_library( name = "quic_time_lib", srcs = ["quiche/quic/core/quic_time.cc"], hdrs = ["quiche/quic/core/quic_time.h"], + repository = "@envoy", visibility = ["//visibility:public"], deps = [":quic_platform"], ) -cc_library( +envoy_cc_library( name = "quic_buffer_allocator_lib", srcs = [ "quiche/quic/core/quic_buffer_allocator.cc", @@ -252,13 +262,13 @@ cc_library( "quiche/quic/core/quic_buffer_allocator.h", "quiche/quic/core/quic_simple_buffer_allocator.h", ], + repository = "@envoy", visibility = ["//visibility:public"], deps = [":quic_platform_export"], ) -cc_library( +envoy_cc_test_library( name = "epoll_server_platform", - testonly = 1, hdrs = [ "quiche/epoll_server/platform/api/epoll_address_test_utils.h", "quiche/epoll_server/platform/api/epoll_bug.h", @@ -270,13 +280,12 @@ cc_library( "quiche/epoll_server/platform/api/epoll_thread.h", "quiche/epoll_server/platform/api/epoll_time.h", ], - visibility = ["//visibility:public"], + repository = "@envoy", deps = ["@envoy//test/extensions/quic_listeners/quiche/platform:epoll_server_platform_impl_lib"], ) -cc_library( +envoy_cc_test_library( name = "epoll_server_lib", - testonly = 1, srcs = [ "quiche/epoll_server/fake_simple_epoll_server.cc", "quiche/epoll_server/simple_epoll_server.cc", @@ -286,7 +295,7 @@ cc_library( "quiche/epoll_server/simple_epoll_server.h", ], copts = envoy_copts("@envoy") + quiche_copt, - visibility = ["//visibility:public"], + repository = "@envoy", deps = [":epoll_server_platform"], ) From 751b7a933c8574dfee24043dbb4823e510549e99 Mon Sep 17 00:00:00 2001 From: Dan Zhang Date: Tue, 23 Apr 2019 18:11:21 -0400 Subject: [PATCH 11/11] remove envoy_copts Signed-off-by: Dan Zhang --- bazel/external/quiche.BUILD | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index 3cccadf28f6ce..a8615e99b4ac5 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -31,7 +31,6 @@ load( "envoy_cc_library", "envoy_cc_test", "envoy_cc_test_library", - "envoy_copts", "envoy_select_quiche", ) @@ -294,7 +293,7 @@ envoy_cc_test_library( "quiche/epoll_server/fake_simple_epoll_server.h", "quiche/epoll_server/simple_epoll_server.h", ], - copts = envoy_copts("@envoy") + quiche_copt, + copts = quiche_copt, repository = "@envoy", deps = [":epoll_server_platform"], )