Merge branch 'master' into test_cpp_qps_tjagtap

pull/36549/head
tanvi-jagtap 7 months ago
commit 97642463d2
  1. 1
      CMakeLists.txt
  2. 2
      build_autogenerated.yaml
  3. 4
      test/core/event_engine/event_engine_test_utils.cc
  4. 70
      test/core/test_util/build.cc
  5. 3
      test/core/test_util/build.h
  6. 1
      test/cpp/end2end/BUILD
  7. 3
      test/cpp/end2end/rls_end2end_test.cc

1
CMakeLists.txt generated

@ -26337,6 +26337,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

@ -17596,6 +17596,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
@ -17608,6 +17609,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

@ -41,6 +41,7 @@
#include "src/core/lib/gprpp/notification.h"
#include "src/core/lib/gprpp/time.h"
#include "src/core/lib/resource_quota/memory_quota.h"
#include "test/core/test_util/build.h"
// IWYU pragma: no_include <sys/socket.h>
@ -77,7 +78,10 @@ std::string GetNextSendMessage() {
}
void WaitForSingleOwner(std::shared_ptr<EventEngine> engine) {
int n = 0;
while (engine.use_count() > 1) {
++n;
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));

@ -12,62 +12,78 @@
// See the License for the specific language governing permissions and
// limitations under the License.
bool BuiltUnderValgrind() {
#ifdef RUNNING_ON_VALGRIND
return true;
#else
return false;
#endif
}
bool BuiltUnderTsan() {
// Define GRPC_BUILD_HAS_ASAN as 1 or 0 depending on if we're building under
// ASAN.
#if defined(__has_feature)
#if __has_feature(thread_sanitizer)
return true;
#if __has_feature(address_sanitizer)
#define GRPC_BUILD_HAS_ASAN 1
#else
return false;
#define GRPC_BUILD_HAS_ASAN 0
#endif
#else
#ifdef THREAD_SANITIZER
return true;
#ifdef ADDRESS_SANITIZER
#define GRPC_BUILD_HAS_ASAN 1
#else
return false;
#define GRPC_BUILD_HAS_ASAN 0
#endif
#endif
}
bool BuiltUnderAsan() {
// Define GRPC_BUILD_HAS_TSAN as 1 or 0 depending on if we're building under
// TSAN.
#if defined(__has_feature)
#if __has_feature(address_sanitizer)
return true;
#if __has_feature(thread_sanitizer)
#define GRPC_BUILD_HAS_TSAN 1
#else
return false;
#define GRPC_BUILD_HAS_TSAN 0
#endif
#else
#ifdef ADDRESS_SANITIZER
return true;
#ifdef THREAD_SANITIZER
#define GRPC_BUILD_HAS_TSAN 1
#else
return false;
#define GRPC_BUILD_HAS_TSAN 0
#endif
#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 <sanitizer/lsan_interface.h>
#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;

@ -30,4 +30,7 @@ bool BuiltUnderMsan();
// Returns whether this is built under UndefinedBehaviorSanitizer
bool BuiltUnderUbsan();
// Force a leak check if built under ASAN. If there are leaks, crash.
void AsanAssertNoLeaks();
#endif // GRPC_TEST_CORE_TEST_UTIL_BUILD_H

@ -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",

@ -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();
}

Loading…
Cancel
Save