aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/util
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/util')
-rw-r--r--test/core/util/BUILD34
-rw-r--r--test/core/util/cmdline_test.cc2
-rw-r--r--test/core/util/fuzzer_corpus_test.cc2
-rw-r--r--test/core/util/memory_counters.cc32
-rw-r--r--test/core/util/mock_endpoint.cc25
-rw-r--r--test/core/util/passthru_endpoint.cc3
-rw-r--r--test/core/util/test_config.cc12
-rw-r--r--test/core/util/test_config.h15
-rw-r--r--test/core/util/trickle_endpoint.cc5
-rw-r--r--test/core/util/ubsan_suppressions.txt3
10 files changed, 80 insertions, 53 deletions
diff --git a/test/core/util/BUILD b/test/core/util/BUILD
index 5492dcfa79..226e41aea7 100644
--- a/test/core/util/BUILD
+++ b/test/core/util/BUILD
@@ -22,24 +22,6 @@ grpc_package(
)
grpc_cc_library(
- name = "gpr_test_util",
- srcs = [
- "memory_counters.cc",
- "test_config.cc",
- ],
- hdrs = [
- "memory_counters.h",
- "test_config.h",
- ],
- deps = ["//:gpr"],
- data = [
- "lsan_suppressions.txt",
- "tsan_suppressions.txt",
- "ubsan_suppressions.txt",
- ],
-)
-
-grpc_cc_library(
name = "grpc_debugger_macros",
srcs = [
"debugger_macros.cc",
@@ -48,7 +30,6 @@ grpc_cc_library(
"debugger_macros.h",
],
deps = [
- ":gpr_test_util",
"//:grpc_common",
],
)
@@ -60,6 +41,7 @@ grpc_cc_library(
"fuzzer_util.cc",
"grpc_profiler.cc",
"histogram.cc",
+ "memory_counters.cc",
"mock_endpoint.cc",
"parse_hexstring.cc",
"passthru_endpoint.cc",
@@ -70,6 +52,7 @@ grpc_cc_library(
"slice_splitter.cc",
"subprocess_posix.cc",
"subprocess_windows.cc",
+ "test_config.cc",
"test_tcp_server.cc",
"tracer_util.cc",
"trickle_endpoint.cc",
@@ -79,24 +62,31 @@ grpc_cc_library(
"fuzzer_util.h",
"grpc_profiler.h",
"histogram.h",
+ "memory_counters.h",
"mock_endpoint.h",
"parse_hexstring.h",
"passthru_endpoint.h",
"port.h",
"port_server_client.h",
"reconnect_server.h",
- "subprocess.h",
"slice_splitter.h",
+ "subprocess.h",
+ "test_config.h",
"test_tcp_server.h",
"tracer_util.h",
"trickle_endpoint.h",
],
language = "C++",
deps = [
- ":gpr_test_util",
":grpc_debugger_macros",
+ "//:gpr",
"//:grpc_common",
],
+ data = [
+ "lsan_suppressions.txt",
+ "tsan_suppressions.txt",
+ "ubsan_suppressions.txt",
+ ],
)
grpc_cc_library(
@@ -140,7 +130,7 @@ grpc_cc_library(
"gflags",
],
deps = [
- ":gpr_test_util",
+ ":grpc_test_util",
"//:grpc",
],
)
diff --git a/test/core/util/cmdline_test.cc b/test/core/util/cmdline_test.cc
index 9f5ad88d57..59e1bbff34 100644
--- a/test/core/util/cmdline_test.cc
+++ b/test/core/util/cmdline_test.cc
@@ -463,7 +463,7 @@ static void test_badargs4(void) {
}
int main(int argc, char** argv) {
- grpc_test_init(argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
test_simple_int();
test_eq_int();
test_2dash_int();
diff --git a/test/core/util/fuzzer_corpus_test.cc b/test/core/util/fuzzer_corpus_test.cc
index ebf1913137..6e3785c4f7 100644
--- a/test/core/util/fuzzer_corpus_test.cc
+++ b/test/core/util/fuzzer_corpus_test.cc
@@ -144,7 +144,7 @@ INSTANTIATE_TEST_CASE_P(
::testing::internal::ParamGenerator<std::string>(new ExampleGenerator));
int main(int argc, char** argv) {
- grpc_test_init(argc, argv);
+ grpc::testing::TestEnvironment env(argc, argv);
ParseCommandLineFlags(&argc, &argv, true);
::testing::InitGoogleTest(&argc, argv);
diff --git a/test/core/util/memory_counters.cc b/test/core/util/memory_counters.cc
index 4960fe0757..d0da05d9b4 100644
--- a/test/core/util/memory_counters.cc
+++ b/test/core/util/memory_counters.cc
@@ -22,6 +22,7 @@
#include <grpc/support/alloc.h>
#include <grpc/support/sync.h>
+#include "src/core/lib/gpr/alloc.h"
#include "test/core/util/memory_counters.h"
static struct grpc_memory_counters g_memory_counters;
@@ -42,19 +43,18 @@ static void guard_free(void* vptr);
#endif
static void* guard_malloc(size_t size) {
- size_t* ptr;
if (!size) return nullptr;
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_absolute, (gpr_atm)size);
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_relative, (gpr_atm)size);
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_allocs_absolute, (gpr_atm)1);
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_allocs_relative, (gpr_atm)1);
- ptr = static_cast<size_t*>(g_old_allocs.malloc_fn(size + sizeof(size)));
- *ptr++ = size;
- return ptr;
+ void* ptr = g_old_allocs.malloc_fn(
+ GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(size)) + size);
+ *static_cast<size_t*>(ptr) = size;
+ return static_cast<char*>(ptr) + GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(size));
}
static void* guard_realloc(void* vptr, size_t size) {
- size_t* ptr = static_cast<size_t*>(vptr);
if (vptr == nullptr) {
return guard_malloc(size);
}
@@ -62,21 +62,25 @@ static void* guard_realloc(void* vptr, size_t size) {
guard_free(vptr);
return nullptr;
}
- --ptr;
+ void* ptr =
+ static_cast<char*>(vptr) - GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(size));
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_absolute, (gpr_atm)size);
- NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_relative, -(gpr_atm)*ptr);
+ NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_relative,
+ -*static_cast<gpr_atm*>(ptr));
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_relative, (gpr_atm)size);
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_allocs_absolute, (gpr_atm)1);
- ptr = static_cast<size_t*>(g_old_allocs.realloc_fn(ptr, size + sizeof(size)));
- *ptr++ = size;
- return ptr;
+ ptr = g_old_allocs.realloc_fn(
+ ptr, GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(size)) + size);
+ *static_cast<size_t*>(ptr) = size;
+ return static_cast<char*>(ptr) + GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(size));
}
static void guard_free(void* vptr) {
- size_t* ptr = static_cast<size_t*>(vptr);
- if (!vptr) return;
- --ptr;
- NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_relative, -(gpr_atm)*ptr);
+ if (vptr == nullptr) return;
+ void* ptr =
+ static_cast<char*>(vptr) - GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(size_t));
+ NO_BARRIER_FETCH_ADD(&g_memory_counters.total_size_relative,
+ -*static_cast<gpr_atm*>(ptr));
NO_BARRIER_FETCH_ADD(&g_memory_counters.total_allocs_relative, -(gpr_atm)1);
g_old_allocs.free_fn(ptr);
}
diff --git a/test/core/util/mock_endpoint.cc b/test/core/util/mock_endpoint.cc
index ef6fd62b51..e5867cd526 100644
--- a/test/core/util/mock_endpoint.cc
+++ b/test/core/util/mock_endpoint.cc
@@ -103,18 +103,19 @@ static grpc_resource_user* me_get_resource_user(grpc_endpoint* ep) {
static int me_get_fd(grpc_endpoint* ep) { return -1; }
-static const grpc_endpoint_vtable vtable = {
- me_read,
- me_write,
- me_add_to_pollset,
- me_add_to_pollset_set,
- me_delete_from_pollset_set,
- me_shutdown,
- me_destroy,
- me_get_resource_user,
- me_get_peer,
- me_get_fd,
-};
+static bool me_can_track_err(grpc_endpoint* ep) { return false; }
+
+static const grpc_endpoint_vtable vtable = {me_read,
+ me_write,
+ me_add_to_pollset,
+ me_add_to_pollset_set,
+ me_delete_from_pollset_set,
+ me_shutdown,
+ me_destroy,
+ me_get_resource_user,
+ me_get_peer,
+ me_get_fd,
+ me_can_track_err};
grpc_endpoint* grpc_mock_endpoint_create(void (*on_write)(grpc_slice slice),
grpc_resource_quota* resource_quota) {
diff --git a/test/core/util/passthru_endpoint.cc b/test/core/util/passthru_endpoint.cc
index 3cc8ad6fe1..51b6de4695 100644
--- a/test/core/util/passthru_endpoint.cc
+++ b/test/core/util/passthru_endpoint.cc
@@ -155,6 +155,8 @@ static char* me_get_peer(grpc_endpoint* ep) {
static int me_get_fd(grpc_endpoint* ep) { return -1; }
+static bool me_can_track_err(grpc_endpoint* ep) { return false; }
+
static grpc_resource_user* me_get_resource_user(grpc_endpoint* ep) {
half* m = reinterpret_cast<half*>(ep);
return m->resource_user;
@@ -171,6 +173,7 @@ static const grpc_endpoint_vtable vtable = {
me_get_resource_user,
me_get_peer,
me_get_fd,
+ me_can_track_err,
};
static void half_init(half* m, passthru_endpoint* parent,
diff --git a/test/core/util/test_config.cc b/test/core/util/test_config.cc
index 6a0d444a73..fe80bb2d4d 100644
--- a/test/core/util/test_config.cc
+++ b/test/core/util/test_config.cc
@@ -397,3 +397,15 @@ void grpc_test_init(int argc, char** argv) {
concurrently running test binary */
srand(seed());
}
+
+namespace grpc {
+namespace testing {
+
+TestEnvironment::TestEnvironment(int argc, char** argv) {
+ grpc_test_init(argc, argv);
+}
+
+TestEnvironment::~TestEnvironment() {}
+
+} // namespace testing
+} // namespace grpc
diff --git a/test/core/util/test_config.h b/test/core/util/test_config.h
index 5b3d34799e..112af3176f 100644
--- a/test/core/util/test_config.h
+++ b/test/core/util/test_config.h
@@ -37,6 +37,21 @@ gpr_timespec grpc_timeout_milliseconds_to_deadline(int64_t time_ms);
#define GRPC_TEST_PICK_PORT
#endif
+// Prefer TestEnvironment below.
void grpc_test_init(int argc, char** argv);
+namespace grpc {
+namespace testing {
+
+// A TestEnvironment object should be alive in the main function of a test. It
+// provides test init and shutdown inside.
+class TestEnvironment {
+ public:
+ TestEnvironment(int argc, char** argv);
+ ~TestEnvironment();
+};
+
+} // namespace testing
+} // namespace grpc
+
#endif /* GRPC_TEST_CORE_UTIL_TEST_CONFIG_H */
diff --git a/test/core/util/trickle_endpoint.cc b/test/core/util/trickle_endpoint.cc
index 62ed72a629..b0da735e57 100644
--- a/test/core/util/trickle_endpoint.cc
+++ b/test/core/util/trickle_endpoint.cc
@@ -131,6 +131,8 @@ static int te_get_fd(grpc_endpoint* ep) {
return grpc_endpoint_get_fd(te->wrapped);
}
+static bool te_can_track_err(grpc_endpoint* ep) { return false; }
+
static void te_finish_write(void* arg, grpc_error* error) {
trickle_endpoint* te = static_cast<trickle_endpoint*>(arg);
gpr_mu_lock(&te->mu);
@@ -148,7 +150,8 @@ static const grpc_endpoint_vtable vtable = {te_read,
te_destroy,
te_get_resource_user,
te_get_peer,
- te_get_fd};
+ te_get_fd,
+ te_can_track_err};
grpc_endpoint* grpc_trickle_endpoint_create(grpc_endpoint* wrap,
double bytes_per_second) {
diff --git a/test/core/util/ubsan_suppressions.txt b/test/core/util/ubsan_suppressions.txt
index 63898ea3b1..8ed7d4d7fb 100644
--- a/test/core/util/ubsan_suppressions.txt
+++ b/test/core/util/ubsan_suppressions.txt
@@ -25,7 +25,6 @@ alignment:absl::little_endian::Store64
alignment:absl::little_endian::Load64
float-divide-by-zero:grpc::testing::postprocess_scenario_result
enum:grpc_op_string
-nonnull-attribute:grpc_lb_addresses_copy
signed-integer-overflow:chrono
enum:grpc_http2_error_to_grpc_status
-enum:grpc_chttp2_cancel_stream \ No newline at end of file
+enum:grpc_chttp2_cancel_stream