From 14398f0a45490a39e9d8efd2a2fa5f1a5ced4ae6 Mon Sep 17 00:00:00 2001 From: Sunjay Bhatia Date: Mon, 31 Aug 2020 14:19:00 -0400 Subject: [PATCH 01/12] Windows: Fix quiche test compilation - Skip uses of GSO as it is not available on Windows - Fix syscall result types - Fix usage of Edge event trigger - move ifdef that avoids a test on non-Linux to ensure test doesn't appear to pass in test results - quiche integration test is still failing, requires further investigation Signed-off-by: Sunjay Bhatia Signed-off-by: William A Rowe Jr --- source/extensions/quic_listeners/quiche/BUILD | 4 -- .../quiche/envoy_quic_client_connection.cc | 3 +- test/extensions/quic_listeners/quiche/BUILD | 60 ++++--------------- .../quiche/active_quic_listener_test.cc | 12 +++- .../quiche/envoy_quic_utils_test.cc | 2 +- .../quiche/envoy_quic_writer_test.cc | 2 +- .../quic_listeners/quiche/integration/BUILD | 3 +- .../integration/quic_http_integration_test.cc | 4 +- test/server/BUILD | 3 +- 9 files changed, 30 insertions(+), 63 deletions(-) diff --git a/source/extensions/quic_listeners/quiche/BUILD b/source/extensions/quic_listeners/quiche/BUILD index 238792f4687d1..36a009d8b2487 100644 --- a/source/extensions/quic_listeners/quiche/BUILD +++ b/source/extensions/quic_listeners/quiche/BUILD @@ -375,13 +375,9 @@ envoy_cc_extension( # QUICHE can't build against FIPS BoringSSL until the FIPS build # is on a new enough version to have QUIC support. Remove it from # the build until then. Re-enable as part of #7433. - # - # QUICHE doesn't compile on Windows right now. Disable until it - # is fixed. deps = select({ "//bazel:boringssl_fips": [], "//bazel:boringssl_disabled": [], - "//bazel:windows_x86_64": [], "//conditions:default": [ ":active_quic_listener_config_lib", ":codec_lib", diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_client_connection.cc b/source/extensions/quic_listeners/quiche/envoy_quic_client_connection.cc index 830b28e286344..e79b08ad99215 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_client_connection.cc +++ b/source/extensions/quic_listeners/quiche/envoy_quic_client_connection.cc @@ -80,7 +80,8 @@ void EnvoyQuicClientConnection::setUpConnectionSocket() { if (connectionSocket()->ioHandle().isOpen()) { file_event_ = connectionSocket()->ioHandle().createFileEvent( dispatcher_, [this](uint32_t events) -> void { onFileEvent(events); }, - Event::FileTriggerType::Edge, Event::FileReadyType::Read | Event::FileReadyType::Write); + Event::PlatformDefaultTriggerType, + Event::FileReadyType::Read | Event::FileReadyType::Write); if (!Network::Socket::applyOptions(connectionSocket()->options(), *connectionSocket(), envoy::config::core::v3::SocketOption::STATE_LISTENING)) { diff --git a/test/extensions/quic_listeners/quiche/BUILD b/test/extensions/quic_listeners/quiche/BUILD index bb259455a7c1b..89ce39cd2cfa1 100644 --- a/test/extensions/quic_listeners/quiche/BUILD +++ b/test/extensions/quic_listeners/quiche/BUILD @@ -27,11 +27,7 @@ envoy_cc_test( name = "envoy_quic_writer_test", srcs = ["envoy_quic_writer_test.cc"], external_deps = ["quiche_quic_platform"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ "//source/common/network:io_socket_error_lib", "//source/common/network:udp_packet_writer_handler_lib", @@ -74,11 +70,7 @@ envoy_cc_test( envoy_cc_test( name = "envoy_quic_server_stream_test", srcs = ["envoy_quic_server_stream_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ ":quic_test_utils_for_envoy_lib", ":test_utils_lib", @@ -99,11 +91,7 @@ envoy_cc_test( envoy_cc_test( name = "envoy_quic_client_stream_test", srcs = ["envoy_quic_client_stream_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ ":quic_test_utils_for_envoy_lib", ":test_utils_lib", @@ -123,11 +111,7 @@ envoy_cc_test( envoy_cc_test( name = "envoy_quic_server_session_test", srcs = ["envoy_quic_server_session_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ ":quic_test_utils_for_envoy_lib", ":test_proof_source_lib", @@ -156,11 +140,7 @@ envoy_cc_test( envoy_cc_test( name = "envoy_quic_client_session_test", srcs = ["envoy_quic_client_session_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ ":quic_test_utils_for_envoy_lib", ":test_utils_lib", @@ -182,11 +162,7 @@ envoy_cc_test( envoy_cc_test( name = "active_quic_listener_test", srcs = ["active_quic_listener_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ ":quic_test_utils_for_envoy_lib", ":test_utils_lib", @@ -207,11 +183,7 @@ envoy_cc_test( envoy_cc_test( name = "envoy_quic_dispatcher_test", srcs = ["envoy_quic_dispatcher_test.cc"], - # quic_sent_packet_manager.cc does not compile error: warning C4715: 'quic::QuicSentPacketManager::OnRetransmissionTimeout': not all control paths return a value - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ ":quic_test_utils_for_envoy_lib", ":test_proof_source_lib", @@ -278,11 +250,7 @@ envoy_cc_test( envoy_cc_test( name = "envoy_quic_utils_test", srcs = ["envoy_quic_utils_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ ":quic_test_utils_for_envoy_lib", "//source/extensions/quic_listeners/quiche:envoy_quic_utils_lib", @@ -294,11 +262,7 @@ envoy_cc_test( envoy_cc_test( name = "active_quic_listener_config_test", srcs = ["active_quic_listener_config_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = [ "//source/common/config:utility_lib", "//source/extensions/quic_listeners/quiche:active_quic_listener_config_lib", @@ -309,11 +273,7 @@ envoy_cc_test( envoy_cc_test( name = "envoy_quic_simulated_watermark_buffer_test", srcs = ["envoy_quic_simulated_watermark_buffer_test.cc"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows - tags = [ - "nofips", - "skip_on_windows", - ], + tags = ["nofips"], deps = ["//source/extensions/quic_listeners/quiche:envoy_quic_simulated_watermark_buffer_lib"], ) diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index 84b0a77f1f57a..8241680b3b123 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -26,6 +26,7 @@ #include "common/common/logger.h" #include "common/network/listen_socket_impl.h" #include "common/network/socket_option_factory.h" +#include "common/network/udp_packet_writer_handler_impl.h" #include "extensions/quic_listeners/quiche/active_quic_listener.h" #include "test/extensions/quic_listeners/quiche/test_utils.h" #include "test/extensions/quic_listeners/quiche/test_proof_source.h" @@ -42,8 +43,11 @@ #include "gmock/gmock.h" #include "extensions/quic_listeners/quiche/active_quic_listener_config.h" #include "extensions/quic_listeners/quiche/platform/envoy_quic_clock.h" +#include "extensions/quic_listeners/quiche/envoy_quic_packet_writer.h" #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" +#ifndef WIN32 #include "extensions/quic_listeners/quiche/udp_gso_batch_writer.h" +#endif using testing::Return; using testing::ReturnRef; @@ -111,15 +115,21 @@ class ActiveQuicListenerTest : public QuicMultiVersionTest { ON_CALL(listener_config_, listenSocketFactory()).WillByDefault(ReturnRef(socket_factory_)); ON_CALL(socket_factory_, getListenSocket()).WillByDefault(Return(listen_socket_)); - // Use UdpGsoBatchWriter to perform non-batched writes for the purpose of this test ON_CALL(listener_config_, udpPacketWriterFactory()) .WillByDefault(Return( std::reference_wrapper(udp_packet_writer_factory_))); ON_CALL(udp_packet_writer_factory_, createUdpPacketWriter(_, _)) .WillByDefault(Invoke( [&](Network::IoHandle& io_handle, Stats::Scope& scope) -> Network::UdpPacketWriterPtr { +#ifndef WIN32 + // Use UdpGsoBatchWriter to perform non-batched writes for the purpose of this test Network::UdpPacketWriterPtr udp_packet_writer = std::make_unique(io_handle, scope); +#else + // UdpGsoBatchWriter cannot be supported on Windows, use UdpDefaultWriter instead + Network::UdpPacketWriterPtr udp_packet_writer = + std::make_unique(io_handle); +#endif return udp_packet_writer; })); diff --git a/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc b/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc index 68d606ea54b4e..981ae52e198fa 100644 --- a/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc +++ b/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc @@ -26,7 +26,7 @@ TEST(EnvoyQuicUtilsTest, ConversionBetweenQuicAddressAndEnvoyAddress) { // Mock out socket() system call to test both V4 and V6 address conversion. testing::NiceMock os_sys_calls; TestThreadsafeSingletonInjector os_calls{&os_sys_calls}; - ON_CALL(os_sys_calls, socket(_, _, _)).WillByDefault(Return(Api::SysCallIntResult{1, 0})); + ON_CALL(os_sys_calls, socket(_, _, _)).WillByDefault(Return(Api::SysCallSocketResult{1, 0})); ON_CALL(os_sys_calls, close(_)).WillByDefault(Return(Api::SysCallIntResult{0, 0})); quic::QuicSocketAddress quic_uninitialized_addr; diff --git a/test/extensions/quic_listeners/quiche/envoy_quic_writer_test.cc b/test/extensions/quic_listeners/quiche/envoy_quic_writer_test.cc index cb22532e69bb3..544fdf90b3873 100644 --- a/test/extensions/quic_listeners/quiche/envoy_quic_writer_test.cc +++ b/test/extensions/quic_listeners/quiche/envoy_quic_writer_test.cc @@ -29,7 +29,7 @@ class EnvoyQuicWriterTest : public ::testing::Test { quic::QuicIpAddress peer_ip; peer_ip.FromString("::1"); peer_address_ = quic::QuicSocketAddress(peer_ip, /*port=*/123); - ON_CALL(os_sys_calls_, socket(_, _, _)).WillByDefault(Return(Api::SysCallIntResult{3, 0})); + ON_CALL(os_sys_calls_, socket(_, _, _)).WillByDefault(Return(Api::SysCallSocketResult{3, 0})); ON_CALL(os_sys_calls_, close(3)).WillByDefault(Return(Api::SysCallIntResult{0, 0})); } diff --git a/test/extensions/quic_listeners/quiche/integration/BUILD b/test/extensions/quic_listeners/quiche/integration/BUILD index a36af5d08dee5..645a85bfbc2c0 100644 --- a/test/extensions/quic_listeners/quiche/integration/BUILD +++ b/test/extensions/quic_listeners/quiche/integration/BUILD @@ -13,10 +13,9 @@ envoy_cc_test( size = "medium", srcs = ["quic_http_integration_test.cc"], data = ["//test/config/integration/certs"], - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows tags = [ + "fails_on_windows", "nofips", - "skip_on_windows", ], deps = [ "//source/extensions/filters/http/dynamo:config", diff --git a/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc b/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc index 6268981d4c247..a5b9a02fbf465 100644 --- a/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc +++ b/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc @@ -344,8 +344,8 @@ TEST_P(QuicHttpIntegrationTest, TestDelayedConnectionTeardownTimeoutTrigger) { 1); } -TEST_P(QuicHttpIntegrationTest, MultipleQuicListenersWithBPF) { #if defined(SO_ATTACH_REUSEPORT_CBPF) && defined(__linux__) +TEST_P(QuicHttpIntegrationTest, MultipleQuicListenersWithBPF) { concurrency_ = 8; set_reuse_port_ = true; initialize(); @@ -379,8 +379,8 @@ TEST_P(QuicHttpIntegrationTest, MultipleQuicListenersWithBPF) { for (size_t i = 0; i < concurrency_; ++i) { codec_clients[i]->close(); } -#endif } +#endif #ifndef __APPLE__ TEST_P(QuicHttpIntegrationTest, MultipleQuicListenersNoBPF) { diff --git a/test/server/BUILD b/test/server/BUILD index fbb057d1fa716..4447125525884 100644 --- a/test/server/BUILD +++ b/test/server/BUILD @@ -271,7 +271,8 @@ envoy_cc_test( srcs = ["listener_manager_impl_quic_only_test.cc"], tags = [ "nofips", - # Skipping as quiche quic_stream_send_buffer.cc does not currently compile on Windows + # Skipping as quiche quic_gso_batch_writer.h does not exist on Windows + # required by quic_stream_send_buffer.cc "skip_on_windows", ], deps = [ From 44430edb02a6d53bc1abe3eb64b14c699a713d51 Mon Sep 17 00:00:00 2001 From: William A Rowe Jr Date: Mon, 21 Sep 2020 15:09:37 -0400 Subject: [PATCH 02/12] Drop batched write test until PR #13086 makes this platform agnostic - See discussion https://github.com/envoyproxy/envoy/pull/12898#discussion_r492085735 Signed-off-by: William A Rowe Jr --- .../quiche/active_quic_listener_test.cc | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index 8241680b3b123..fc5f74fdda428 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -45,9 +45,6 @@ #include "extensions/quic_listeners/quiche/platform/envoy_quic_clock.h" #include "extensions/quic_listeners/quiche/envoy_quic_packet_writer.h" #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" -#ifndef WIN32 -#include "extensions/quic_listeners/quiche/udp_gso_batch_writer.h" -#endif using testing::Return; using testing::ReturnRef; @@ -115,21 +112,18 @@ class ActiveQuicListenerTest : public QuicMultiVersionTest { ON_CALL(listener_config_, listenSocketFactory()).WillByDefault(ReturnRef(socket_factory_)); ON_CALL(socket_factory_, getListenSocket()).WillByDefault(Return(listen_socket_)); + // UdpGsoBatchWriter cannot be supported on Windows, use UdpDefaultWriter instead + // TODO(ggreenway,wrowe): Permit batched UdpGsoBatchWriter when available in a platform + // agnostic manner leveraging PR #13086 + // See discussion: https://github.com/envoyproxy/envoy/pull/12898#discussion_r492085735 ON_CALL(listener_config_, udpPacketWriterFactory()) .WillByDefault(Return( std::reference_wrapper(udp_packet_writer_factory_))); ON_CALL(udp_packet_writer_factory_, createUdpPacketWriter(_, _)) .WillByDefault(Invoke( [&](Network::IoHandle& io_handle, Stats::Scope& scope) -> Network::UdpPacketWriterPtr { -#ifndef WIN32 - // Use UdpGsoBatchWriter to perform non-batched writes for the purpose of this test - Network::UdpPacketWriterPtr udp_packet_writer = - std::make_unique(io_handle, scope); -#else - // UdpGsoBatchWriter cannot be supported on Windows, use UdpDefaultWriter instead Network::UdpPacketWriterPtr udp_packet_writer = std::make_unique(io_handle); -#endif return udp_packet_writer; })); From bbcc905381f12af74c7c5ead6b20babab7df3dda Mon Sep 17 00:00:00 2001 From: William A Rowe Jr Date: Tue, 22 Sep 2020 11:06:04 -0400 Subject: [PATCH 03/12] Guard #pragma GCC with correct test Signed-off-by: William A Rowe Jr Co-authored-by: Sunjay Bhatia Co-authored-by: William A Rowe Jr --- .../quiche/envoy_quic_alarm_factory.h | 7 +++++-- .../quiche/envoy_quic_client_session.h | 6 ++++-- .../quiche/envoy_quic_client_stream.cc | 6 ++++-- .../quiche/envoy_quic_client_stream.h | 7 +++++-- .../quic_listeners/quiche/envoy_quic_connection.h | 6 ++++-- .../quiche/envoy_quic_connection_helper.h | 6 ++++-- .../quic_listeners/quiche/envoy_quic_dispatcher.h | 6 ++++-- .../quiche/envoy_quic_packet_writer.h | 6 ++++-- .../quiche/envoy_quic_proof_source_base.cc | 7 +++++-- .../quiche/envoy_quic_proof_source_base.h | 8 ++++++-- .../quiche/envoy_quic_proof_verifier_base.h | 6 ++++-- .../quiche/envoy_quic_server_session.h | 6 ++++-- .../quiche/envoy_quic_server_stream.cc | 7 +++++-- .../quiche/envoy_quic_server_stream.h | 7 +++++-- .../quic_listeners/quiche/envoy_quic_utils.h | 7 ++++--- .../quic_listeners/quiche/udp_gso_batch_writer.h | 7 ++++--- .../extensions/transport_sockets/alts/grpc_tsi.h | 4 ++-- .../quiche/active_quic_listener_test.cc | 14 ++++++++------ .../quiche/crypto_test_utils_for_envoy.cc | 8 +++----- .../quiche/envoy_quic_client_session_test.cc | 6 ++++-- .../quiche/envoy_quic_dispatcher_test.cc | 8 +++++--- .../quiche/envoy_quic_server_session_test.cc | 6 ++++-- .../quiche/envoy_quic_server_stream_test.cc | 7 +++++-- .../quic_listeners/quiche/envoy_quic_utils_test.cc | 6 ++++-- .../integration/quic_http_integration_test.cc | 6 ++++-- .../quic_listeners/quiche/platform/BUILD | 5 ++++- .../quic_listeners/quiche/test_proof_source.h | 9 ++++----- test/extensions/quic_listeners/quiche/test_utils.h | 7 +++++-- 28 files changed, 123 insertions(+), 68 deletions(-) diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_alarm_factory.h b/source/extensions/quic_listeners/quiche/envoy_quic_alarm_factory.h index c373ed42298f5..2185450584616 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_alarm_factory.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_alarm_factory.h @@ -4,15 +4,18 @@ #include "extensions/quic_listeners/quiche/envoy_quic_alarm.h" +#if defined(__GNUC__) #pragma GCC diagnostic push - -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" +#endif + #include "quiche/quic/core/quic_alarm_factory.h" #include "quiche/quic/core/quic_arena_scoped_ptr.h" #include "quiche/quic/core/quic_one_block_arena.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif namespace Envoy { namespace Quic { diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_client_session.h b/source/extensions/quic_listeners/quiche/envoy_quic_client_session.h index cea3452607c06..c187295fc72ef 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_client_session.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_client_session.h @@ -1,15 +1,17 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" #pragma GCC diagnostic ignored "-Wtype-limits" +#endif #include "quiche/quic/core/http/quic_spdy_client_session.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_client_stream.h" #include "extensions/quic_listeners/quiche/envoy_quic_client_connection.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.cc b/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.cc index 39a16309c271a..866e35416b0b3 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.cc +++ b/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.cc @@ -1,17 +1,19 @@ #include "extensions/quic_listeners/quiche/envoy_quic_client_stream.h" +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/quic_session.h" #include "quiche/quic/core/http/quic_header_list.h" #include "quiche/spdy/core/spdy_header_block.h" #include "extensions/quic_listeners/quiche/platform/quic_mem_slice_span_impl.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" #include "extensions/quic_listeners/quiche/envoy_quic_client_session.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.h b/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.h index 761201c16f7cf..79003e4621f49 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_client_stream.h @@ -1,13 +1,16 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif + #include "quiche/quic/core/http/quic_spdy_client_stream.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_stream.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_connection.h b/source/extensions/quic_listeners/quiche/envoy_quic_connection.h index 51aebb2dd08f4..f4c8589d7118d 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_connection.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_connection.h @@ -1,14 +1,16 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/quic_connection.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_connection_helper.h b/source/extensions/quic_listeners/quiche/envoy_quic_connection_helper.h index 6af08fdece7a5..2c050e557358a 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_connection_helper.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_connection_helper.h @@ -1,17 +1,19 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" #pragma GCC diagnostic ignored "-Wtype-limits" +#endif #include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/quic_connection.h" #include "quiche/quic/core/quic_simple_buffer_allocator.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/platform/envoy_quic_clock.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_dispatcher.h b/source/extensions/quic_listeners/quiche/envoy_quic_dispatcher.h index 5921342b84bfe..589ff53277062 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_dispatcher.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_dispatcher.h @@ -1,16 +1,18 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" #pragma GCC diagnostic ignored "-Wtype-limits" +#endif #include "quiche/quic/core/quic_dispatcher.h" #include "quiche/quic/core/quic_utils.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_packet_writer.h b/source/extensions/quic_listeners/quiche/envoy_quic_packet_writer.h index bb4b736c84c8d..560742e44e571 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_packet_writer.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_packet_writer.h @@ -1,14 +1,16 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/quic_packet_writer.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "envoy/network/udp_packet_writer_handler.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.cc b/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.cc index 220dc4cb1ccfe..2c82c04d901d8 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.cc +++ b/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.cc @@ -1,12 +1,15 @@ #include "extensions/quic_listeners/quiche/envoy_quic_proof_source_base.h" +#if defined(__GNUC__) #pragma GCC diagnostic push - -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" +#endif + #include "quiche/quic/core/quic_data_writer.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.h b/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.h index 149cc50c7d63a..b7d76981e5193 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_proof_source_base.h @@ -6,17 +6,21 @@ #include "absl/strings/str_cat.h" +#if defined(__GNUC__) #pragma GCC diagnostic push - -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" +#endif + #include "quiche/quic/core/crypto/proof_source.h" #include "quiche/quic/core/quic_versions.h" #include "quiche/quic/core/crypto/crypto_protocol.h" #include "quiche/quic/platform/api/quic_reference_counted.h" #include "quiche/quic/platform/api/quic_socket_address.h" #include "quiche/common/platform/api/quiche_string_piece.h" + +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "openssl/ssl.h" #include "envoy/network/filter.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_proof_verifier_base.h b/source/extensions/quic_listeners/quiche/envoy_quic_proof_verifier_base.h index 02dac5facd42f..f45736c7d19ad 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_proof_verifier_base.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_proof_verifier_base.h @@ -2,15 +2,17 @@ #include "absl/strings/str_cat.h" +#if defined(__GNUC__) #pragma GCC diagnostic push - -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" +#endif #include "quiche/quic/core/crypto/proof_verifier.h" #include "quiche/quic/core/quic_versions.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "common/common/logger.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_server_session.h b/source/extensions/quic_listeners/quiche/envoy_quic_server_session.h index ec117c3aa91e2..54a88efdea75c 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_server_session.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_server_session.h @@ -1,17 +1,19 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" #pragma GCC diagnostic ignored "-Wtype-limits" +#endif #include "quiche/quic/core/http/quic_server_session_base.h" #include "quiche/quic/core/quic_crypto_server_stream.h" #include "quiche/quic/core/tls_server_handshaker.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.cc b/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.cc index feda7c2f2a94d..d5e5726bf3693 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.cc +++ b/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.cc @@ -5,17 +5,20 @@ #include +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/http/quic_header_list.h" #include "quiche/quic/core/quic_session.h" #include "quiche/spdy/core/spdy_header_block.h" #include "extensions/quic_listeners/quiche/platform/quic_mem_slice_span_impl.h" + +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" #include "extensions/quic_listeners/quiche/envoy_quic_server_session.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.h b/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.h index 060cb237d669d..b05a707751ff0 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_server_stream.h @@ -1,13 +1,16 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif + #include "quiche/quic/core/http/quic_spdy_server_stream_base.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_stream.h" diff --git a/source/extensions/quic_listeners/quiche/envoy_quic_utils.h b/source/extensions/quic_listeners/quiche/envoy_quic_utils.h index 287576d3dd539..563e0960cbd9a 100644 --- a/source/extensions/quic_listeners/quiche/envoy_quic_utils.h +++ b/source/extensions/quic_listeners/quiche/envoy_quic_utils.h @@ -8,16 +8,17 @@ #include "common/network/address_impl.h" #include "common/network/listen_socket_impl.h" +#if defined(__GNUC__) #pragma GCC diagnostic push - -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/quic_types.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "quiche/quic/core/http/quic_header_list.h" #include "quiche/quic/core/quic_error_codes.h" diff --git a/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h b/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h index 477ad8bdcdc7a..317b9cd720044 100644 --- a/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h +++ b/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h @@ -1,11 +1,9 @@ #pragma once +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" -// QUICHE allows ignored qualifiers #pragma GCC diagnostic ignored "-Wignored-qualifiers" // QUICHE doesn't mark override at QuicBatchWriterBase::SupportsReleaseTime() @@ -15,6 +13,7 @@ #elif defined(__GNUC__) && __GNUC__ >= 5 #pragma GCC diagnostic ignored "-Wsuggest-override" #endif +#endif #include "quiche/quic/core/batch_writer/quic_gso_batch_writer.h" @@ -22,7 +21,9 @@ #pragma clang diagnostic pop #endif +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "envoy/network/udp_packet_writer_handler.h" diff --git a/source/extensions/transport_sockets/alts/grpc_tsi.h b/source/extensions/transport_sockets/alts/grpc_tsi.h index d07cd8d57fb2b..1acecac58d4de 100644 --- a/source/extensions/transport_sockets/alts/grpc_tsi.h +++ b/source/extensions/transport_sockets/alts/grpc_tsi.h @@ -4,7 +4,7 @@ // compile with -Werror, ignoring those compiler warning since we don't have // control on those source codes. This works with GCC and Clang. -#ifndef _MSC_VER +#if defined(__GNUC__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wold-style-cast" @@ -18,7 +18,7 @@ #include "src/core/tsi/transport_security_grpc.h" #include "src/core/tsi/transport_security_interface.h" -#ifndef _MSC_VER +#if defined(__GNUC__) #pragma GCC diagnostic pop #endif diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index fc5f74fdda428..a78871094e22d 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -1,11 +1,5 @@ #include -#pragma GCC diagnostic push -// QUICHE allows unused parameters. -#pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). -#pragma GCC diagnostic ignored "-Winvalid-offsetof" - #include #include "common/runtime/runtime_impl.h" @@ -14,13 +8,21 @@ #include "envoy/config/core/v3/base.pb.validate.h" #include "envoy/network/exception.h" +#if defined(__GNUC__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif + #include "quiche/quic/core/crypto/crypto_protocol.h" #include "quiche/quic/test_tools/crypto_test_utils.h" #include "quiche/quic/test_tools/quic_dispatcher_peer.h" #include "quiche/quic/test_tools/quic_test_utils.h" #include "quiche/quic/test_tools/quic_crypto_server_config_peer.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "server/configuration_impl.h" #include "common/common/logger.h" diff --git a/test/extensions/quic_listeners/quiche/crypto_test_utils_for_envoy.cc b/test/extensions/quic_listeners/quiche/crypto_test_utils_for_envoy.cc index cafdce0c6227d..3ed00db002742 100644 --- a/test/extensions/quic_listeners/quiche/crypto_test_utils_for_envoy.cc +++ b/test/extensions/quic_listeners/quiche/crypto_test_utils_for_envoy.cc @@ -3,19 +3,17 @@ // This file defines platform dependent test utility functions which is declared // in quiche/quic/test_tools/crypto_test_utils.h. -#ifdef __GNUC__ +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" #pragma GCC diagnostic ignored "-Wtype-limits" +#endif #include "quiche/quic/test_tools/crypto_test_utils.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop -#else -#include "quiche/quic/test_tools/crypto_test_utils.h" #endif #include diff --git a/test/extensions/quic_listeners/quiche/envoy_quic_client_session_test.cc b/test/extensions/quic_listeners/quiche/envoy_quic_client_session_test.cc index 803d5494ccc53..e2d90d9164694 100644 --- a/test/extensions/quic_listeners/quiche/envoy_quic_client_session_test.cc +++ b/test/extensions/quic_listeners/quiche/envoy_quic_client_session_test.cc @@ -1,14 +1,16 @@ +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/crypto/null_encrypter.h" #include "quiche/quic/test_tools/crypto_test_utils.h" #include "quiche/quic/test_tools/quic_test_utils.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_client_session.h" #include "extensions/quic_listeners/quiche/envoy_quic_client_connection.h" diff --git a/test/extensions/quic_listeners/quiche/envoy_quic_dispatcher_test.cc b/test/extensions/quic_listeners/quiche/envoy_quic_dispatcher_test.cc index c8714642d0609..14cce5b540cc9 100644 --- a/test/extensions/quic_listeners/quiche/envoy_quic_dispatcher_test.cc +++ b/test/extensions/quic_listeners/quiche/envoy_quic_dispatcher_test.cc @@ -1,18 +1,20 @@ #include +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/quic_dispatcher.h" #include "quiche/quic/test_tools/quic_dispatcher_peer.h" #include "quiche/quic/test_tools/crypto_test_utils.h" - #include "quiche/quic/test_tools/quic_test_utils.h" #include "quiche/common/platform/api/quiche_text_utils.h" + +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include diff --git a/test/extensions/quic_listeners/quiche/envoy_quic_server_session_test.cc b/test/extensions/quic_listeners/quiche/envoy_quic_server_session_test.cc index fc4caa2ffcc5b..bce66eb7759c1 100644 --- a/test/extensions/quic_listeners/quiche/envoy_quic_server_session_test.cc +++ b/test/extensions/quic_listeners/quiche/envoy_quic_server_session_test.cc @@ -1,8 +1,8 @@ +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/crypto/null_encrypter.h" #include "quiche/quic/core/quic_crypto_server_stream.h" @@ -13,7 +13,9 @@ #include "quiche/quic/test_tools/quic_server_session_base_peer.h" #include "quiche/quic/test_tools/quic_test_utils.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include diff --git a/test/extensions/quic_listeners/quiche/envoy_quic_server_stream_test.cc b/test/extensions/quic_listeners/quiche/envoy_quic_server_stream_test.cc index 153b45b91fbc4..c2fd31c6fdaa9 100644 --- a/test/extensions/quic_listeners/quiche/envoy_quic_server_stream_test.cc +++ b/test/extensions/quic_listeners/quiche/envoy_quic_server_stream_test.cc @@ -1,14 +1,17 @@ #include +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/test_tools/quic_connection_peer.h" #include "quiche/quic/test_tools/quic_session_peer.h" + +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "common/event/libevent_scheduler.h" #include "common/http/headers.h" diff --git a/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc b/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc index 981ae52e198fa..ad5dd5df4870a 100644 --- a/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc +++ b/test/extensions/quic_listeners/quiche/envoy_quic_utils_test.cc @@ -1,14 +1,16 @@ #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/test_tools/quic_test_utils.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "test/mocks/api/mocks.h" #include "test/test_common/threadsafe_singleton_injector.h" diff --git a/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc b/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc index a5b9a02fbf465..d5e8276f5e39c 100644 --- a/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc +++ b/test/extensions/quic_listeners/quiche/integration/quic_http_integration_test.cc @@ -12,17 +12,19 @@ #include "test/integration/ssl_utility.h" #include "test/test_common/utility.h" +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/http/quic_client_push_promise_index.h" #include "quiche/quic/core/quic_utils.h" #include "quiche/quic/test_tools/quic_test_utils.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_client_session.h" #include "extensions/quic_listeners/quiche/envoy_quic_client_connection.h" diff --git a/test/extensions/quic_listeners/quiche/platform/BUILD b/test/extensions/quic_listeners/quiche/platform/BUILD index 9ccaf9cdedc21..420e812b85a7c 100644 --- a/test/extensions/quic_listeners/quiche/platform/BUILD +++ b/test/extensions/quic_listeners/quiche/platform/BUILD @@ -37,7 +37,10 @@ envoy_cc_test( "//bazel:linux": ["quic_platform_test.cc"], "//conditions:default": [], }), - copts = ["-Wno-unused-parameter"], + copts = select({ + "//bazel:windows_x86_64": [], + "//conditions:default": ["-Wno-unused-parameter"], + }), data = ["//test/extensions/transport_sockets/tls/test_data:certs"], external_deps = ["quiche_quic_platform"], tags = ["nofips"], diff --git a/test/extensions/quic_listeners/quiche/test_proof_source.h b/test/extensions/quic_listeners/quiche/test_proof_source.h index 8b1baf920d69b..a249b43144fdc 100644 --- a/test/extensions/quic_listeners/quiche/test_proof_source.h +++ b/test/extensions/quic_listeners/quiche/test_proof_source.h @@ -1,15 +1,14 @@ -#ifdef __GNUC__ +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" #pragma GCC diagnostic ignored "-Wtype-limits" +#endif + #include "quiche/quic/test_tools/test_certificates.h" +#if defined(__GNUC__) #pragma GCC diagnostic pop -#else -#include "quiche/quic/test_tools/test_certificates.h" #endif #include diff --git a/test/extensions/quic_listeners/quiche/test_utils.h b/test/extensions/quic_listeners/quiche/test_utils.h index b9cc942af8401..102f7608e50b9 100644 --- a/test/extensions/quic_listeners/quiche/test_utils.h +++ b/test/extensions/quic_listeners/quiche/test_utils.h @@ -1,10 +1,10 @@ #include "extensions/quic_listeners/quiche/quic_filter_manager_connection_impl.h" +#if defined(__GNUC__) #pragma GCC diagnostic push -// QUICHE allows unused parameters. #pragma GCC diagnostic ignored "-Wunused-parameter" -// QUICHE uses offsetof(). #pragma GCC diagnostic ignored "-Winvalid-offsetof" +#endif #include "quiche/quic/core/http/quic_spdy_session.h" #include "quiche/quic/core/http/quic_spdy_client_session.h" @@ -13,7 +13,10 @@ #include "quiche/quic/core/quic_utils.h" #include "quiche/quic/test_tools/crypto_test_utils.h" #include "quiche/quic/test_tools/quic_config_peer.h" + +#if defined(__GNUC__) #pragma GCC diagnostic pop +#endif #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" #include "test/test_common/environment.h" From 567765bd821f708f8a03742c7c6f383e6eed4712 Mon Sep 17 00:00:00 2001 From: William A Rowe Jr Date: Tue, 22 Sep 2020 12:19:55 -0400 Subject: [PATCH 04/12] Fix Format Signed-off-by: William A Rowe Jr Co-authored-by: Sunjay Bhatia --- .../quic_listeners/quiche/active_quic_listener_test.cc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index a78871094e22d..e8743ab494ca8 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -1,9 +1,6 @@ #include - #include -#include "common/runtime/runtime_impl.h" - #include "envoy/config/core/v3/base.pb.h" #include "envoy/config/core/v3/base.pb.validate.h" #include "envoy/network/exception.h" @@ -29,15 +26,15 @@ #include "common/network/listen_socket_impl.h" #include "common/network/socket_option_factory.h" #include "common/network/udp_packet_writer_handler_impl.h" +#include "common/runtime/runtime_impl.h" #include "extensions/quic_listeners/quiche/active_quic_listener.h" #include "test/extensions/quic_listeners/quiche/test_utils.h" #include "test/extensions/quic_listeners/quiche/test_proof_source.h" #include "test/test_common/simulated_time_system.h" #include "test/test_common/environment.h" #include "test/mocks/network/mocks.h" -#include "test/mocks/server/instance.h" - #include "test/mocks/runtime/mocks.h" +#include "test/mocks/server/instance.h" #include "test/test_common/utility.h" #include "test/test_common/network_utility.h" #include "absl/time/time.h" From 44966176318f373488c7eccc986c53ea95dd789a Mon Sep 17 00:00:00 2001 From: Sunjay Bhatia Date: Tue, 22 Sep 2020 13:04:59 -0400 Subject: [PATCH 05/12] Fix new quiche breakage on windows Signed-off-by: Sunjay Bhatia Co-authored-by: William A Rowe Jr --- bazel/envoy_library.bzl | 4 +++- bazel/external/quiche.BUILD | 9 ++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/bazel/envoy_library.bzl b/bazel/envoy_library.bzl index 471c8b72eec7e..bf0c89773fcb5 100644 --- a/bazel/envoy_library.bzl +++ b/bazel/envoy_library.bzl @@ -98,7 +98,8 @@ def envoy_cc_library( tags = [], deps = [], strip_include_prefix = None, - textual_hdrs = None): + textual_hdrs = None, + defines = []): if tcmalloc_dep: deps += tcmalloc_external_deps(repository) @@ -123,6 +124,7 @@ def envoy_cc_library( alwayslink = 1, linkstatic = envoy_linkstatic(), strip_include_prefix = strip_include_prefix, + defines = defines, ) # Intended for usage by external consumers. This allows them to disambiguate diff --git a/bazel/external/quiche.BUILD b/bazel/external/quiche.BUILD index 6ca8429b3250c..7541909aa1914 100644 --- a/bazel/external/quiche.BUILD +++ b/bazel/external/quiche.BUILD @@ -61,7 +61,8 @@ quiche_common_copts = [ ] quiche_copts = select({ - "@envoy//bazel:windows_x86_64": [], + # Ignore unguarded #pragma GCC statements in QUICHE sources + "@envoy//bazel:windows_x86_64": ["-wd4068"], # Remove these after upstream fix. "@envoy//bazel:gcc_build": [ "-Wno-sign-compare", @@ -2244,6 +2245,12 @@ envoy_cc_library( "quiche/quic/core/frames/quic_window_update_frame.h", ], copts = quiche_copts, + # TODO: Work around initializer in anonymous union in fastbuild build. + # Remove this after upstream fix. + defines = select({ + "@envoy//bazel:windows_x86_64": ["QUIC_FRAME_DEBUG=0"], + "//conditions:default": [], + }), repository = "@envoy", tags = ["nofips"], visibility = ["//visibility:public"], From 0d13c26253cd4a8f4a5ab0d00c7198522030d171 Mon Sep 17 00:00:00 2001 From: Sunjay Bhatia Date: Tue, 22 Sep 2020 15:20:32 -0400 Subject: [PATCH 06/12] Resolve last build quirk in linux - this remains a placeholder for a better test with #13086 - note a todo in sync with coming changes for msvc+clang builds Signed-off-by: Sunjay Bhatia Signed-off-by: William A Rowe Jr Co-authored-by: Sunjay Bhatia Co-authored-by: William A Rowe Jr --- bazel/envoy_internal.bzl | 3 +++ .../quic_listeners/quiche/active_quic_listener_test.cc | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/bazel/envoy_internal.bzl b/bazel/envoy_internal.bzl index 10b3448c00eea..2c51606c8aaee 100644 --- a/bazel/envoy_internal.bzl +++ b/bazel/envoy_internal.bzl @@ -32,6 +32,9 @@ def envoy_copts(repository, test = False): "-DNOMCX", "-DNOIME", "-DNOCRYPT", + # Ignore unguarded gcc pragmas in quiche (unrecognized by MSVC) + # TODO(wrowe): Drop this change when fixed in bazel/external/quiche.genrule_cmd + "-wd4068", # this is to silence the incorrect MSVC compiler warning when trying to convert between # std::optional data types while conversions between primitive types are producing no error "-wd4244", diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index e8743ab494ca8..769291435cfeb 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -120,7 +120,7 @@ class ActiveQuicListenerTest : public QuicMultiVersionTest { std::reference_wrapper(udp_packet_writer_factory_))); ON_CALL(udp_packet_writer_factory_, createUdpPacketWriter(_, _)) .WillByDefault(Invoke( - [&](Network::IoHandle& io_handle, Stats::Scope& scope) -> Network::UdpPacketWriterPtr { + [&](Network::IoHandle& io_handle, Stats::Scope&) -> Network::UdpPacketWriterPtr { Network::UdpPacketWriterPtr udp_packet_writer = std::make_unique(io_handle); return udp_packet_writer; From 2df2ef9bc33109e3911153e48420780c85ef87ef Mon Sep 17 00:00:00 2001 From: Sunjay Bhatia Date: Tue, 22 Sep 2020 15:54:28 -0400 Subject: [PATCH 07/12] Fix format Signed-off-by: Sunjay Bhatia Co-authored-by: William A Rowe Jr --- .../quic_listeners/quiche/active_quic_listener_test.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index 769291435cfeb..a81642f621cc4 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -119,8 +119,8 @@ class ActiveQuicListenerTest : public QuicMultiVersionTest { .WillByDefault(Return( std::reference_wrapper(udp_packet_writer_factory_))); ON_CALL(udp_packet_writer_factory_, createUdpPacketWriter(_, _)) - .WillByDefault(Invoke( - [&](Network::IoHandle& io_handle, Stats::Scope&) -> Network::UdpPacketWriterPtr { + .WillByDefault( + Invoke([&](Network::IoHandle& io_handle, Stats::Scope&) -> Network::UdpPacketWriterPtr { Network::UdpPacketWriterPtr udp_packet_writer = std::make_unique(io_handle); return udp_packet_writer; From 8e19e61162c3c553804357fff298957ffdacd547 Mon Sep 17 00:00:00 2001 From: William A Rowe Jr Date: Fri, 25 Sep 2020 08:51:52 -0500 Subject: [PATCH 08/12] Replace header lost in merge master Signed-off-by: William A Rowe Jr --- .../quic_listeners/quiche/active_quic_listener_test.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index 1889cca88260e..e50e8259e8425 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -26,6 +26,7 @@ #include "common/network/listen_socket_impl.h" #include "common/network/socket_option_factory.h" #include "common/network/udp_packet_writer_handler_impl.h" +#include "common/runtime/runtime_impl.h" #include "extensions/quic_listeners/quiche/active_quic_listener.h" #include "test/extensions/quic_listeners/quiche/test_utils.h" #include "test/extensions/quic_listeners/quiche/test_proof_source.h" From 0403ba7fd6d0ec518a4e36a82f229aecfd9a02f2 Mon Sep 17 00:00:00 2001 From: William A Rowe Jr Date: Fri, 25 Sep 2020 09:25:24 -0500 Subject: [PATCH 09/12] udp_gso headers are now guarded with #ifdef __linux__ Signed-off-by: William A Rowe Jr --- .../quic_listeners/quiche/active_quic_listener_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index e50e8259e8425..5da011c136ea5 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -42,8 +42,8 @@ #include "gmock/gmock.h" #include "extensions/quic_listeners/quiche/active_quic_listener_config.h" #include "extensions/quic_listeners/quiche/platform/envoy_quic_clock.h" -#include "extensions/quic_listeners/quiche/envoy_quic_packet_writer.h" #include "extensions/quic_listeners/quiche/envoy_quic_utils.h" +#include "extensions/quic_listeners/quiche/udp_gso_batch_writer.h" using testing::Return; using testing::ReturnRef; From f9c1f01d2fb79bbf8ce0e2336e560212d609c4a9 Mon Sep 17 00:00:00 2001 From: William A Rowe Jr Date: Fri, 25 Sep 2020 09:25:24 -0500 Subject: [PATCH 10/12] Correct udp_gso header guard Signed-off-by: Sunjay Bhatia Signed-off-by: William A Rowe Jr Co-authored-by: Sunjay Bhatia Co-authored-by: William A Rowe Jr --- source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h b/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h index e0a2fcfe74cf6..366dfccb24686 100644 --- a/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h +++ b/source/extensions/quic_listeners/quiche/udp_gso_batch_writer.h @@ -17,7 +17,6 @@ #elif defined(__GNUC__) && __GNUC__ >= 5 #pragma GCC diagnostic ignored "-Wsuggest-override" #endif -#endif #include "quiche/quic/core/batch_writer/quic_gso_batch_writer.h" @@ -25,9 +24,7 @@ #pragma clang diagnostic pop #endif -#if defined(__GNUC__) #pragma GCC diagnostic pop -#endif #include "envoy/network/udp_packet_writer_handler.h" From ab262310e86ec06f5c201d0ae4f1197a5ea7f050 Mon Sep 17 00:00:00 2001 From: William A Rowe Jr Date: Fri, 25 Sep 2020 12:05:42 -0400 Subject: [PATCH 11/12] Enable test to demonstrate windows failures once Signed-off-by: William A Rowe Jr Co-authored-by: Sunjay Bhatia --- test/extensions/quic_listeners/quiche/integration/BUILD | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/extensions/quic_listeners/quiche/integration/BUILD b/test/extensions/quic_listeners/quiche/integration/BUILD index 34cd23dcd6f9e..50b0f5c1e461a 100644 --- a/test/extensions/quic_listeners/quiche/integration/BUILD +++ b/test/extensions/quic_listeners/quiche/integration/BUILD @@ -13,10 +13,7 @@ envoy_cc_test( size = "medium", srcs = ["quic_http_integration_test.cc"], data = ["//test/config/integration/certs"], - tags = [ - "fails_on_windows", - "nofips", - ], + tags = ["nofips"], deps = [ "//source/extensions/filters/http/dynamo:config", "//source/extensions/quic_listeners/quiche:active_quic_listener_config_lib", From 7672f9ba66c8e1727aa3b5f7c58c3399199c0058 Mon Sep 17 00:00:00 2001 From: Sunjay Bhatia Date: Fri, 25 Sep 2020 12:10:42 -0400 Subject: [PATCH 12/12] Changes to pass CI for merge - Mark 2 tests failing - one due to expecting buffered Gso style support - expect that the integration test is failing for a common defect between other failing integration tests - not regressions of this PR - explicitly discard result in test Signed-off-by: Sunjay Bhatia Co-authored-by: William A Rowe Jr --- test/extensions/quic_listeners/quiche/BUILD | 5 ++++- .../quic_listeners/quiche/active_quic_listener_test.cc | 2 +- test/extensions/quic_listeners/quiche/integration/BUILD | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/test/extensions/quic_listeners/quiche/BUILD b/test/extensions/quic_listeners/quiche/BUILD index 89ce39cd2cfa1..92aad3fe9a2e5 100644 --- a/test/extensions/quic_listeners/quiche/BUILD +++ b/test/extensions/quic_listeners/quiche/BUILD @@ -162,7 +162,10 @@ envoy_cc_test( envoy_cc_test( name = "active_quic_listener_test", srcs = ["active_quic_listener_test.cc"], - tags = ["nofips"], + tags = [ + "fails_on_windows", + "nofips", + ], deps = [ ":quic_test_utils_for_envoy_lib", ":test_utils_lib", diff --git a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc index 5da011c136ea5..240d9b42ec414 100644 --- a/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc +++ b/test/extensions/quic_listeners/quiche/active_quic_listener_test.cc @@ -315,7 +315,7 @@ TEST_P(ActiveQuicListenerTest, FailSocketOptionUponCreation) { options->emplace_back(std::move(option)); quic_listener_.reset(); EXPECT_THROW_WITH_REGEX( - std::make_unique( + (void)std::make_unique( 0, 1, *dispatcher_, connection_handler_, listen_socket_, listener_config_, quic_config_, options, false, ActiveQuicListenerFactoryPeer::runtimeEnabled( diff --git a/test/extensions/quic_listeners/quiche/integration/BUILD b/test/extensions/quic_listeners/quiche/integration/BUILD index 50b0f5c1e461a..34cd23dcd6f9e 100644 --- a/test/extensions/quic_listeners/quiche/integration/BUILD +++ b/test/extensions/quic_listeners/quiche/integration/BUILD @@ -13,7 +13,10 @@ envoy_cc_test( size = "medium", srcs = ["quic_http_integration_test.cc"], data = ["//test/config/integration/certs"], - tags = ["nofips"], + tags = [ + "fails_on_windows", + "nofips", + ], deps = [ "//source/extensions/filters/http/dynamo:config", "//source/extensions/quic_listeners/quiche:active_quic_listener_config_lib",