diff --git a/CMakeLists.txt b/CMakeLists.txt index 16b3eb10562..6df5040834e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26340,6 +26340,7 @@ add_executable(rls_end2end_test ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/testing/xds/v3/orca_load_report.grpc.pb.h + test/core/event_engine/event_engine_test_utils.cc test/core/test_util/fake_stats_plugin.cc test/core/test_util/test_lb_policies.cc test/cpp/end2end/rls_end2end_test.cc diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index 0a00f9edd33..ab40230e39c 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -17605,6 +17605,7 @@ targets: run: false language: c++ headers: + - test/core/event_engine/event_engine_test_utils.h - test/core/test_util/fake_stats_plugin.h - test/core/test_util/test_lb_policies.h - test/cpp/end2end/counted_service.h @@ -17617,6 +17618,7 @@ targets: - src/proto/grpc/testing/echo_messages.proto - src/proto/grpc/testing/simple_messages.proto - src/proto/grpc/testing/xds/v3/orca_load_report.proto + - test/core/event_engine/event_engine_test_utils.cc - test/core/test_util/fake_stats_plugin.cc - test/core/test_util/test_lb_policies.cc - test/cpp/end2end/rls_end2end_test.cc diff --git a/src/core/BUILD b/src/core/BUILD index 7b585215712..c0432c3f37f 100644 --- a/src/core/BUILD +++ b/src/core/BUILD @@ -3082,6 +3082,7 @@ grpc_cc_library( deps = [ "channel_args", "//:channelz", + "//:event_engine_base_hdrs", "//:gpr_platform", ], ) diff --git a/src/core/server/server_interface.h b/src/core/server/server_interface.h index 4523a3090ba..431ad369714 100644 --- a/src/core/server/server_interface.h +++ b/src/core/server/server_interface.h @@ -17,7 +17,7 @@ #ifndef GRPC_SRC_CORE_SERVER_SERVER_INTERFACE_H #define GRPC_SRC_CORE_SERVER_SERVER_INTERFACE_H -#include +#include #include #include "src/core/channelz/channelz.h" diff --git a/test/core/event_engine/event_engine_test_utils.cc b/test/core/event_engine/event_engine_test_utils.cc index 1de11122b19..32ab6ac5276 100644 --- a/test/core/event_engine/event_engine_test_utils.cc +++ b/test/core/event_engine/event_engine_test_utils.cc @@ -81,7 +81,7 @@ void WaitForSingleOwner(std::shared_ptr engine) { int n = 0; while (engine.use_count() > 1) { ++n; - if (n == 100) AsanAssertNoLeaks(); + if (n % 100 == 0) AsanAssertNoLeaks(); GRPC_LOG_EVERY_N_SEC(2, GPR_INFO, "engine.use_count() = %ld", engine.use_count()); absl::SleepFor(absl::Milliseconds(100)); diff --git a/test/core/test_util/build.cc b/test/core/test_util/build.cc index f9b0d00f7aa..36510696681 100644 --- a/test/core/test_util/build.cc +++ b/test/core/test_util/build.cc @@ -12,7 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#include "test/core/test_util/build.h" +// Define GRPC_BUILD_HAS_ASAN as 1 or 0 depending on if we're building under +// ASAN. #if defined(__has_feature) #if __has_feature(address_sanitizer) #define GRPC_BUILD_HAS_ASAN 1 @@ -27,58 +28,62 @@ #endif #endif -#if GRPC_BUILD_HAS_ASAN -#include -#endif - -bool BuiltUnderValgrind() { -#ifdef RUNNING_ON_VALGRIND - return true; -#else - return false; -#endif -} - -bool BuiltUnderTsan() { +// Define GRPC_BUILD_HAS_TSAN as 1 or 0 depending on if we're building under +// TSAN. #if defined(__has_feature) #if __has_feature(thread_sanitizer) - return true; +#define GRPC_BUILD_HAS_TSAN 1 #else - return false; +#define GRPC_BUILD_HAS_TSAN 0 #endif #else #ifdef THREAD_SANITIZER - return true; +#define GRPC_BUILD_HAS_TSAN 1 #else - return false; -#endif +#define GRPC_BUILD_HAS_TSAN 0 #endif -} - -bool BuiltUnderAsan() { return GRPC_BUILD_HAS_ASAN != 0; } - -void AsanAssertNoLeaks() { -#if GRPC_BUILD_HAS_ASAN - __lsan_do_leak_check(); #endif -} -bool BuiltUnderMsan() { +// Define GRPC_BUILD_HAS_MSAN as 1 or 0 depending on if we're building under +// MSAN. #if defined(__has_feature) #if __has_feature(memory_sanitizer) - return true; +#define GRPC_BUILD_HAS_MSAN 1 #else - return false; +#define GRPC_BUILD_HAS_MSAN 0 #endif #else #ifdef MEMORY_SANITIZER +#define GRPC_BUILD_HAS_MSAN 1 +#else +#define GRPC_BUILD_HAS_MSAN 0 +#endif +#endif + +#if GRPC_BUILD_HAS_ASAN +#include +#endif + +bool BuiltUnderValgrind() { +#ifdef RUNNING_ON_VALGRIND return true; #else return false; #endif +} + +bool BuiltUnderTsan() { return GRPC_BUILD_HAS_TSAN != 0; } + +bool BuiltUnderAsan() { return GRPC_BUILD_HAS_ASAN != 0; } + +void AsanAssertNoLeaks() { +#if GRPC_BUILD_HAS_ASAN + __lsan_do_leak_check(); #endif } +bool BuiltUnderMsan() { return GRPC_BUILD_HAS_MSAN != 0; } + bool BuiltUnderUbsan() { #ifdef GRPC_UBSAN return true; diff --git a/test/cpp/end2end/BUILD b/test/cpp/end2end/BUILD index 4e0b8ed3e55..3e01fe662f9 100644 --- a/test/cpp/end2end/BUILD +++ b/test/cpp/end2end/BUILD @@ -584,6 +584,7 @@ grpc_cc_test( "//src/proto/grpc/testing:echo_messages_proto", "//src/proto/grpc/testing:echo_proto", "//src/proto/grpc/testing/duplicate:echo_duplicate_proto", + "//test/core/event_engine:event_engine_test_utils", "//test/core/test_util:fake_stats_plugin", "//test/core/test_util:grpc_test_util", "//test/core/test_util:test_lb_policies", diff --git a/test/cpp/end2end/rls_end2end_test.cc b/test/cpp/end2end/rls_end2end_test.cc index 5eb5e41ac3e..189c4c2d34c 100644 --- a/test/cpp/end2end/rls_end2end_test.cc +++ b/test/cpp/end2end/rls_end2end_test.cc @@ -58,6 +58,7 @@ #include "src/proto/grpc/lookup/v1/rls.grpc.pb.h" #include "src/proto/grpc/lookup/v1/rls.pb.h" #include "src/proto/grpc/testing/echo.grpc.pb.h" +#include "test/core/event_engine/event_engine_test_utils.h" #include "test/core/test_util/fake_stats_plugin.h" #include "test/core/test_util/port.h" #include "test/core/test_util/resolve_localhost_ip46.h" @@ -175,6 +176,8 @@ class RlsEnd2endTest : public ::testing::Test { static void TearDownTestSuite() { grpc_shutdown_blocking(); + WaitForSingleOwner( + grpc_event_engine::experimental::GetDefaultEventEngine()); grpc_core::CoreConfiguration::Reset(); }