aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/end2end/tests
diff options
context:
space:
mode:
authorGravatar Mark D. Roth <roth@google.com>2016-09-16 17:46:07 +0000
committerGravatar Mark D. Roth <roth@google.com>2016-09-16 17:46:07 +0000
commitcf218fb7485644d1138d3b996752da05ae015926 (patch)
tree5c7ba016b199107d1114b5f7f366c1de4e585c80 /test/core/end2end/tests
parent3f6ab54f28ec99f215c6b58dedb3acb08ea27a5b (diff)
Fix tsan failure in no_logging test.
Diffstat (limited to 'test/core/end2end/tests')
-rw-r--r--test/core/end2end/tests/no_logging.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/test/core/end2end/tests/no_logging.c b/test/core/end2end/tests/no_logging.c
index 3c40e5dbac..35f631b495 100644
--- a/test/core/end2end/tests/no_logging.c
+++ b/test/core/end2end/tests/no_logging.c
@@ -68,6 +68,13 @@ static void test_no_error_log(gpr_log_func_args *args) {
}
}
+static gpr_atm g_log_func = (gpr_atm)gpr_default_log;
+
+static void log_dispatcher_func(gpr_log_func_args *args) {
+ gpr_log_func log_func = (gpr_log_func)gpr_atm_no_barrier_load(&g_log_func);
+ log_func(args);
+}
+
static grpc_end2end_test_fixture begin_test(grpc_end2end_test_config config,
const char *test_name,
grpc_channel_args *client_args,
@@ -263,12 +270,12 @@ static void test_invoke_10_simple_requests(grpc_end2end_test_config config) {
static void test_no_error_logging_in_entire_process(
grpc_end2end_test_config config) {
int i;
- gpr_set_log_function(test_no_error_log);
+ gpr_atm_no_barrier_store(&g_log_func, test_no_error_log);
for (i = 0; i < 10; i++) {
test_invoke_simple_request(config);
}
test_invoke_10_simple_requests(config);
- gpr_set_log_function(gpr_default_log);
+ gpr_atm_no_barrier_store(&g_log_func, gpr_default_log);
}
static void test_no_logging_in_one_request(grpc_end2end_test_config config) {
@@ -278,16 +285,18 @@ static void test_no_logging_in_one_request(grpc_end2end_test_config config) {
for (i = 0; i < 10; i++) {
simple_request_body(f);
}
- gpr_set_log_function(test_no_log);
+ gpr_atm_no_barrier_store(&g_log_func, test_no_log);
simple_request_body(f);
- gpr_set_log_function(gpr_default_log);
+ gpr_atm_no_barrier_store(&g_log_func, gpr_default_log);
end_test(&f);
config.tear_down_data(&f);
}
void no_logging(grpc_end2end_test_config config) {
+ gpr_set_log_function(log_dispatcher_func);
test_no_logging_in_one_request(config);
test_no_error_logging_in_entire_process(config);
+ gpr_set_log_function(gpr_default_log);
}
void no_logging_pre_init(void) {}