Merge github.com:grpc/grpc into credit
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..b51d2c0
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,22 @@
+language: cpp
+before_install:
+  - sudo add-apt-repository ppa:yjwong/gflags -y
+  - sudo add-apt-repository ppa:h-rayflood/llvm -y
+  - sudo apt-get update -qq
+  - sudo apt-get install -qq libgtest-dev libgflags-dev python-virtualenv clang-3.5
+env:
+  global:
+    - RUBY_VERSION=2.1
+  matrix:
+    - CONFIG=dbg TEST=c
+    - CONFIG=dbg TEST=c++
+    - CONFIG=opt TEST=c
+    - CONFIG=opt TEST=c++
+    - CONFIG=opt TEST=node
+    - CONFIG=opt TEST=ruby
+script:
+  - rvm use $RUBY_VERSION
+  - gem install bundler
+  - ./tools/run_tests/run_tests.py -l $TEST -t -j 16 -c $CONFIG -s 4.0
+notifications:
+  email: false
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 9b6064a..26c1b82 100644
--- a/Makefile
+++ b/Makefile
@@ -77,7 +77,7 @@
 CPPFLAGS_valgrind = -O0
 OPENSSL_CFLAGS_valgrind = -DPURIFY
 LDFLAGS_valgrind =
-DEFINES_valgrind = _DEBUG DEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
+DEFINES_valgrind = _DEBUG DEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=20
 
 VALID_CONFIG_tsan = 1
 REQUIRE_CUSTOM_LIBRARIES_tsan = 1
@@ -87,7 +87,7 @@
 LDXX_tsan = clang++
 CPPFLAGS_tsan = -O1 -fsanitize=thread -fno-omit-frame-pointer
 LDFLAGS_tsan = -fsanitize=thread
-DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
+DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=10
 
 VALID_CONFIG_asan = 1
 REQUIRE_CUSTOM_LIBRARIES_asan = 1
@@ -97,7 +97,7 @@
 LDXX_asan = clang++
 CPPFLAGS_asan = -O1 -fsanitize=address -fno-omit-frame-pointer
 LDFLAGS_asan = -fsanitize=address
-DEFINES_asan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=5
+DEFINES_asan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=5
 
 VALID_CONFIG_msan = 1
 REQUIRE_CUSTOM_LIBRARIES_msan = 1
@@ -108,7 +108,7 @@
 CPPFLAGS_msan = -O1 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
 OPENSSL_CFLAGS_msan = -DPURIFY
 LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
-DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
+DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=20
 
 VALID_CONFIG_ubsan = 1
 REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
@@ -119,7 +119,7 @@
 CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer
 OPENSSL_CFLAGS_ubsan = -DPURIFY
 LDFLAGS_ubsan = -fsanitize=undefined
-DEFINES_ubsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
+DEFINES_ubsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=10
 
 VALID_CONFIG_gcov = 1
 CC_gcov = gcc
@@ -143,7 +143,15 @@
 LD = $(LD_$(CONFIG))
 LDXX = $(LDXX_$(CONFIG))
 AR = ar
+ifeq ($(SYSTEM),Linux)
 STRIP = strip --strip-unneeded
+else
+ifeq ($(SYSTEM),Darwin)
+STRIP = strip -x
+else
+STRIP = strip
+endif
+endif
 INSTALL = install
 RM = rm -f
 
@@ -152,6 +160,10 @@
 endif
 
 
+# Detect if we can use C++11
+CXX11_CHECK_CMD = $(CXX) -std=c++11 -o /dev/null -c test/build/c++11.cc
+HAS_CXX11 = $(shell $(CXX11_CHECK_CMD) 2> /dev/null && echo true || echo false)
+
 # The HOST compiler settings are used to compile the protoc plugins.
 # In most cases, you won't have to change anything, but if you are
 # cross-compiling, you can override these variables from GNU make's
@@ -166,8 +178,17 @@
 DEFINES += $(DEFINES_$(CONFIG)) INSTALL_PREFIX=\"$(prefix)\"
 LDFLAGS += $(LDFLAGS_$(CONFIG))
 
+ifdef EXTRA_DEFINES
+DEFINES += $(EXTRA_DEFINES)
+endif
+
 CFLAGS += -std=c89 -pedantic
+ifeq ($(HAS_CXX11),true)
 CXXFLAGS += -std=c++11
+else
+CXXFLAGS += -std=c++0x
+DEFINES += GRPC_OLD_CXX
+endif
 CPPFLAGS += -g -fPIC -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
 LDFLAGS += -g -fPIC
 
@@ -524,7 +545,9 @@
 pubsub_publisher_test: $(BINDIR)/$(CONFIG)/pubsub_publisher_test
 pubsub_subscriber_test: $(BINDIR)/$(CONFIG)/pubsub_subscriber_test
 qps_client: $(BINDIR)/$(CONFIG)/qps_client
+qps_client_async: $(BINDIR)/$(CONFIG)/qps_client_async
 qps_server: $(BINDIR)/$(CONFIG)/qps_server
+qps_server_async: $(BINDIR)/$(CONFIG)/qps_server_async
 status_test: $(BINDIR)/$(CONFIG)/status_test
 thread_pool_test: $(BINDIR)/$(CONFIG)/thread_pool_test
 chttp2_fake_security_cancel_after_accept_test: $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test
@@ -897,7 +920,11 @@
 
 $(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure
 	$(E) "[MAKE]    Building protobuf"
+ifeq ($(HAVE_CXX11),true)
 	$(Q)(cd third_party/protobuf ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g" CXXFLAGS="-DLANG_CXX11 -std=c++11" CPPFLAGS="-fPIC $(CPPFLAGS_$(CONFIG)) -g" ./configure --disable-shared --enable-static)
+else
+	$(Q)(cd third_party/protobuf ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g" CXXFLAGS="-std=c++0x" CPPFLAGS="-fPIC $(CPPFLAGS_$(CONFIG)) -g" ./configure --disable-shared --enable-static)
+endif
 	$(Q)$(MAKE) -C third_party/protobuf clean
 	$(Q)$(MAKE) -C third_party/protobuf
 	$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/protobuf
@@ -933,7 +960,7 @@
 
 buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alarm_heap_test $(BINDIR)/$(CONFIG)/alarm_list_test $(BINDIR)/$(CONFIG)/alarm_test $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/census_hash_table_test $(BINDIR)/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test $(BINDIR)/$(CONFIG)/census_statistics_multiple_writers_test $(BINDIR)/$(CONFIG)/census_statistics_performance_test $(BINDIR)/$(CONFIG)/census_statistics_quick_test $(BINDIR)/$(CONFIG)/census_statistics_small_log_test $(BINDIR)/$(CONFIG)/census_stub_test $(BINDIR)/$(CONFIG)/census_window_stats_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_encoder_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/chttp2_transport_end2end_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/echo_client $(BINDIR)/$(CONFIG)/echo_server $(BINDIR)/$(CONFIG)/echo_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_cancellable_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_stream_op_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/metadata_buffer_test $(BINDIR)/$(CONFIG)/multi_init_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/poll_kick_posix_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/time_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_thread_stress_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_writes_done_hangs_with_pending_read_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_census_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_disappearing_server_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_invoke_large_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_no_op_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_large_metadata_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_request_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_delayed_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_thread_stress_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fake_security_writes_done_hangs_with_pending_read_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_thread_stress_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_writes_done_hangs_with_pending_read_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_census_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_disappearing_server_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_invoke_large_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_no_op_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_large_metadata_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_request_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_delayed_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_thread_stress_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_writes_done_hangs_with_pending_read_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_no_op_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_thread_stress_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_writes_done_hangs_with_pending_read_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_after_accept_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_after_accept_and_writes_closed_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_after_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_before_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_cancel_in_a_vacuum_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_census_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_disappearing_server_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_early_server_shutdown_finishes_inflight_calls_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_early_server_shutdown_finishes_tags_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_graceful_server_shutdown_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_invoke_large_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_max_concurrent_streams_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_no_op_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_ping_pong_streaming_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_response_with_binary_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_response_with_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_response_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_response_with_trailing_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_with_large_metadata_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_request_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_simple_delayed_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_thread_stress_legacy_test $(BINDIR)/$(CONFIG)/chttp2_fullstack_uds_writes_done_hangs_with_pending_read_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_thread_stress_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_writes_done_hangs_with_pending_read_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_large_metadata_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_request_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_thread_stress_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_fullstack_writes_done_hangs_with_pending_read_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_thread_stress_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_writes_done_hangs_with_pending_read_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_thread_stress_legacy_test $(BINDIR)/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_writes_done_hangs_with_pending_read_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_thread_stress_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_writes_done_hangs_with_pending_read_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_census_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_disappearing_server_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_invoke_large_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_no_op_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_large_metadata_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_request_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_thread_stress_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_writes_done_hangs_with_pending_read_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_empty_batch_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_thread_stress_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_with_payload_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_thread_stress_legacy_test $(BINDIR)/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_legacy_test
 
-buildtests_cxx: privatelibs_cxx $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/pubsub_client $(BINDIR)/$(CONFIG)/pubsub_publisher_test $(BINDIR)/$(CONFIG)/pubsub_subscriber_test $(BINDIR)/$(CONFIG)/qps_client $(BINDIR)/$(CONFIG)/qps_server $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/thread_pool_test
+buildtests_cxx: privatelibs_cxx $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/pubsub_client $(BINDIR)/$(CONFIG)/pubsub_publisher_test $(BINDIR)/$(CONFIG)/pubsub_subscriber_test $(BINDIR)/$(CONFIG)/qps_client $(BINDIR)/$(CONFIG)/qps_client_async $(BINDIR)/$(CONFIG)/qps_server $(BINDIR)/$(CONFIG)/qps_server_async $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/thread_pool_test
 
 test: test_c test_cxx
 
@@ -7631,13 +7658,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/async_end2end_test: $(ASYNC_END2END_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/async_end2end_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/async_end2end_test: $(PROTOBUF_DEP) $(ASYNC_END2END_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(ASYNC_END2END_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/async_end2end_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/end2end/async_end2end_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_async_end2end_test: $(ASYNC_END2END_TEST_OBJS:.o=.dep)
@@ -7662,13 +7700,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/channel_arguments_test: $(CHANNEL_ARGUMENTS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/channel_arguments_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/channel_arguments_test: $(PROTOBUF_DEP) $(CHANNEL_ARGUMENTS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(CHANNEL_ARGUMENTS_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/channel_arguments_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/client/channel_arguments_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_channel_arguments_test: $(CHANNEL_ARGUMENTS_TEST_OBJS:.o=.dep)
@@ -7693,13 +7742,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/credentials_test: $(CREDENTIALS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/credentials_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/credentials_test: $(PROTOBUF_DEP) $(CREDENTIALS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(CREDENTIALS_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/credentials_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/client/credentials_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_credentials_test: $(CREDENTIALS_TEST_OBJS:.o=.dep)
@@ -7724,13 +7784,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/end2end_test: $(END2END_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/end2end_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/end2end_test: $(PROTOBUF_DEP) $(END2END_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(END2END_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/end2end_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/end2end/end2end_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_end2end_test: $(END2END_TEST_OBJS:.o=.dep)
@@ -7751,7 +7822,7 @@
 
 ifeq ($(NO_PROTOBUF),true)
 
-# You can't build the protoc plugins if you don't have protobuf 3.0.0+.
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
 
 $(BINDIR)/$(CONFIG)/grpc_cpp_plugin: protobuf_dep_error
 
@@ -7783,7 +7854,7 @@
 
 ifeq ($(NO_PROTOBUF),true)
 
-# You can't build the protoc plugins if you don't have protobuf 3.0.0+.
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
 
 $(BINDIR)/$(CONFIG)/grpc_python_plugin: protobuf_dep_error
 
@@ -7815,7 +7886,7 @@
 
 ifeq ($(NO_PROTOBUF),true)
 
-# You can't build the protoc plugins if you don't have protobuf 3.0.0+.
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
 
 $(BINDIR)/$(CONFIG)/grpc_ruby_plugin: protobuf_dep_error
 
@@ -7854,13 +7925,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/interop_client: $(INTEROP_CLIENT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/interop_client: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/interop_client: $(PROTOBUF_DEP) $(INTEROP_CLIENT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(INTEROP_CLIENT_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/interop_client
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/interop/empty.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 $(OBJDIR)/$(CONFIG)/test/cpp/interop/messages.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 $(OBJDIR)/$(CONFIG)/test/cpp/interop/test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
@@ -7891,13 +7973,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/interop_server: $(INTEROP_SERVER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/interop_server: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/interop_server: $(PROTOBUF_DEP) $(INTEROP_SERVER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(INTEROP_SERVER_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/interop_server
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/interop/empty.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 $(OBJDIR)/$(CONFIG)/test/cpp/interop/messages.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 $(OBJDIR)/$(CONFIG)/test/cpp/interop/test.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
@@ -7925,13 +8018,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/interop_test: $(INTEROP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/interop_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/interop_test: $(PROTOBUF_DEP) $(INTEROP_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(INTEROP_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/interop_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/interop/interop_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_interop_test: $(INTEROP_TEST_OBJS:.o=.dep)
@@ -7956,13 +8060,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/pubsub_client: $(PUBSUB_CLIENT_OBJS) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/pubsub_client: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/pubsub_client: $(PROTOBUF_DEP) $(PUBSUB_CLIENT_OBJS) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(PUBSUB_CLIENT_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/pubsub_client
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/examples/pubsub/main.o:  $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_pubsub_client: $(PUBSUB_CLIENT_OBJS:.o=.dep)
@@ -7987,13 +8102,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/pubsub_publisher_test: $(PUBSUB_PUBLISHER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/pubsub_publisher_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/pubsub_publisher_test: $(PROTOBUF_DEP) $(PUBSUB_PUBLISHER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(PUBSUB_PUBLISHER_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/pubsub_publisher_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/examples/pubsub/publisher_test.o:  $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_pubsub_publisher_test: $(PUBSUB_PUBLISHER_TEST_OBJS:.o=.dep)
@@ -8018,13 +8144,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/pubsub_subscriber_test: $(PUBSUB_SUBSCRIBER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/pubsub_subscriber_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/pubsub_subscriber_test: $(PROTOBUF_DEP) $(PUBSUB_SUBSCRIBER_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(PUBSUB_SUBSCRIBER_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/pubsub_subscriber_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/examples/pubsub/subscriber_test.o:  $(LIBDIR)/$(CONFIG)/libpubsub_client_lib.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_pubsub_subscriber_test: $(PUBSUB_SUBSCRIBER_TEST_OBJS:.o=.dep)
@@ -8050,13 +8187,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/qps_client: $(QPS_CLIENT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/qps_client: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/qps_client: $(PROTOBUF_DEP) $(QPS_CLIENT_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(QPS_CLIENT_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/qps_client
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/qps/qpstest.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 $(OBJDIR)/$(CONFIG)/test/cpp/qps/client.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
@@ -8069,6 +8217,39 @@
 endif
 
 
+QPS_CLIENT_ASYNC_SRC = \
+    $(GENDIR)/test/cpp/qps/qpstest.pb.cc \
+    test/cpp/qps/client_async.cc \
+
+QPS_CLIENT_ASYNC_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(QPS_CLIENT_ASYNC_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/qps_client_async: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/qps_client_async: $(QPS_CLIENT_ASYNC_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LDXX) $(LDFLAGS) $(QPS_CLIENT_ASYNC_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/qps_client_async
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/cpp/qps/qpstest.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+$(OBJDIR)/$(CONFIG)/test/cpp/qps/client_async.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_qps_client_async: $(QPS_CLIENT_ASYNC_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(QPS_CLIENT_ASYNC_OBJS:.o=.dep)
+endif
+endif
+
+
 QPS_SERVER_SRC = \
     $(GENDIR)/test/cpp/qps/qpstest.pb.cc \
     test/cpp/qps/server.cc \
@@ -8083,13 +8264,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/qps_server: $(QPS_SERVER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/qps_server: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/qps_server: $(PROTOBUF_DEP) $(QPS_SERVER_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(QPS_SERVER_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/qps_server
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/qps/qpstest.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 $(OBJDIR)/$(CONFIG)/test/cpp/qps/server.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
@@ -8102,6 +8294,39 @@
 endif
 
 
+QPS_SERVER_ASYNC_SRC = \
+    $(GENDIR)/test/cpp/qps/qpstest.pb.cc \
+    test/cpp/qps/server_async.cc \
+
+QPS_SERVER_ASYNC_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(QPS_SERVER_ASYNC_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+$(BINDIR)/$(CONFIG)/qps_server_async: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/qps_server_async: $(QPS_SERVER_ASYNC_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LDXX) $(LDFLAGS) $(QPS_SERVER_ASYNC_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/qps_server_async
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/cpp/qps/qpstest.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+$(OBJDIR)/$(CONFIG)/test/cpp/qps/server_async.o:  $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+deps_qps_server_async: $(QPS_SERVER_ASYNC_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(QPS_SERVER_ASYNC_OBJS:.o=.dep)
+endif
+endif
+
+
 STATUS_TEST_SRC = \
     test/cpp/util/status_test.cc \
 
@@ -8115,13 +8340,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/status_test: $(STATUS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/status_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/status_test: $(PROTOBUF_DEP) $(STATUS_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(STATUS_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/status_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/util/status_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_status_test: $(STATUS_TEST_OBJS:.o=.dep)
@@ -8146,13 +8382,24 @@
 
 else
 
-$(BINDIR)/$(CONFIG)/thread_pool_test: $(THREAD_POOL_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/thread_pool_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/thread_pool_test: $(PROTOBUF_DEP) $(THREAD_POOL_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 	$(Q) $(LDXX) $(LDFLAGS) $(THREAD_POOL_TEST_OBJS) $(GTEST_LIB) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/thread_pool_test
 
 endif
 
+endif
+
 $(OBJDIR)/$(CONFIG)/test/cpp/server/thread_pool_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
 
 deps_thread_pool_test: $(THREAD_POOL_TEST_OBJS:.o=.dep)
diff --git a/PATENTS b/PATENTS
new file mode 100644
index 0000000..619f9db
--- /dev/null
+++ b/PATENTS
@@ -0,0 +1,22 @@
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the GRPC project.
+
+Google hereby grants to You a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer and otherwise run, modify and propagate the contents of this
+implementation of GRPC, where such license applies only to those patent
+claims, both currently owned or controlled by Google and acquired in
+the future, licensable by Google that are necessarily infringed by this
+implementation of GRPC.  This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation.  If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of GRPC or any code incorporated within this
+implementation of GRPC constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of GRPC
+shall terminate as of the date such litigation is filed.
diff --git a/README.md b/README.md
index eacb8c0..8fa9fa4 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
 
 #Repository Structure
 
-This repository contains source code for gRPC libraries for multiple lanugages written on top
+This repository contains source code for gRPC libraries for multiple languages written on top
 of shared C core library [src/core] (src/core).
 
    * C++ source code: [src/cpp] (src/cpp)
diff --git a/build.json b/build.json
index 3eaf024..a94ab67 100644
--- a/build.json
+++ b/build.json
@@ -607,7 +607,8 @@
         "grpc",
         "gpr_test_util",
         "gpr"
-      ]
+      ],
+      "flaky": true
     },
     {
       "name": "census_statistics_multiple_writers_test",
@@ -663,7 +664,8 @@
         "grpc",
         "gpr_test_util",
         "gpr"
-      ]
+      ],
+      "flaky": true
     },
     {
       "name": "census_stats_store_test",
@@ -891,7 +893,8 @@
         "grpc",
         "gpr_test_util",
         "gpr"
-      ]
+      ],
+      "flaky": true
     },
     {
       "name": "fling_test",
@@ -905,7 +908,8 @@
         "grpc",
         "gpr_test_util",
         "gpr"
-      ]
+      ],
+      "flaky": true
     },
     {
       "name": "gen_hpack_tables",
@@ -1841,6 +1845,24 @@
       ]
     },
     {
+      "name": "qps_client_async",
+      "build": "test",
+      "run": false,
+      "language": "c++",
+      "src": [
+        "test/cpp/qps/qpstest.proto",
+        "test/cpp/qps/client_async.cc"
+      ],
+      "deps": [
+        "grpc++_test_util",
+        "grpc_test_util",
+        "grpc++",
+        "grpc",
+        "gpr_test_util",
+        "gpr"
+      ]
+    },
+    {
       "name": "qps_server",
       "build": "test",
       "run": false,
@@ -1859,6 +1881,24 @@
       ]
     },
     {
+      "name": "qps_server_async",
+      "build": "test",
+      "run": false,
+      "language": "c++",
+      "src": [
+        "test/cpp/qps/qpstest.proto",
+        "test/cpp/qps/server_async.cc"
+      ],
+      "deps": [
+        "grpc++_test_util",
+        "grpc_test_util",
+        "grpc++",
+        "grpc",
+        "gpr_test_util",
+        "gpr"
+      ]
+    },
+    {
       "name": "status_test",
       "build": "test",
       "language": "c++",
diff --git a/examples/pubsub/publisher.h b/examples/pubsub/publisher.h
index 2d64a2a..c90406f 100644
--- a/examples/pubsub/publisher.h
+++ b/examples/pubsub/publisher.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_EXAMPLES_PUBSUB_PUBLISHER_H_
-#define __GRPCPP_EXAMPLES_PUBSUB_PUBLISHER_H_
+#ifndef GRPC_EXAMPLES_PUBSUB_PUBLISHER_H
+#define GRPC_EXAMPLES_PUBSUB_PUBLISHER_H
 
 #include <grpc++/channel_interface.h>
 #include <grpc++/status.h>
@@ -64,4 +64,4 @@
 }  // namespace examples
 }  // namespace grpc
 
-#endif  // __GRPCPP_EXAMPLES_PUBSUB_PUBLISHER_H_
+#endif  // GRPC_EXAMPLES_PUBSUB_PUBLISHER_H
diff --git a/examples/pubsub/publisher_test.cc b/examples/pubsub/publisher_test.cc
index 0bb4b84..f9b6bb3 100644
--- a/examples/pubsub/publisher_test.cc
+++ b/examples/pubsub/publisher_test.cc
@@ -62,28 +62,28 @@
  public:
   Status CreateTopic(::grpc::ServerContext* context,
                      const ::tech::pubsub::Topic* request,
-                     ::tech::pubsub::Topic* response) override {
+                     ::tech::pubsub::Topic* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->name(), kTopic);
     return Status::OK;
   }
 
   Status Publish(ServerContext* context,
                  const ::tech::pubsub::PublishRequest* request,
-                 ::proto2::Empty* response) override {
+                 ::proto2::Empty* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->message().data(), kMessageData);
     return Status::OK;
   }
 
   Status GetTopic(ServerContext* context,
                   const ::tech::pubsub::GetTopicRequest* request,
-                  ::tech::pubsub::Topic* response) override {
+                  ::tech::pubsub::Topic* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->topic(), kTopic);
     return Status::OK;
   }
 
- Status ListTopics(ServerContext* context,
-                   const ::tech::pubsub::ListTopicsRequest* request,
-                   ::tech::pubsub::ListTopicsResponse* response) override {
+  Status ListTopics(
+      ServerContext* context, const ::tech::pubsub::ListTopicsRequest* request,
+      ::tech::pubsub::ListTopicsResponse* response) GRPC_OVERRIDE {
    std::ostringstream ss;
    ss << "cloud.googleapis.com/project in (/projects/" << kProjectId << ")";
    EXPECT_EQ(request->query(), ss.str());
@@ -93,7 +93,7 @@
 
  Status DeleteTopic(ServerContext* context,
                     const ::tech::pubsub::DeleteTopicRequest* request,
-                    ::proto2::Empty* response) override {
+                    ::proto2::Empty* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->topic(), kTopic);
     return Status::OK;
  }
@@ -103,7 +103,7 @@
 class PublisherTest : public ::testing::Test {
  protected:
   // Setup a server and a client for PublisherService.
-  void SetUp() override {
+  void SetUp() GRPC_OVERRIDE {
     int port = grpc_pick_unused_port_or_die();
     server_address_ << "localhost:" << port;
     ServerBuilder builder;
@@ -116,7 +116,7 @@
     publisher_.reset(new grpc::examples::pubsub::Publisher(channel_));
   }
 
-  void TearDown() override {
+  void TearDown() GRPC_OVERRIDE {
     server_->Shutdown();
     publisher_->Shutdown();
   }
diff --git a/examples/pubsub/subscriber.h b/examples/pubsub/subscriber.h
index a973cd7..c587c01 100644
--- a/examples/pubsub/subscriber.h
+++ b/examples/pubsub/subscriber.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_EXAMPLES_PUBSUB_SUBSCRIBER_H_
-#define __GRPCPP_EXAMPLES_PUBSUB_SUBSCRIBER_H_
+#ifndef GRPC_EXAMPLES_PUBSUB_SUBSCRIBER_H
+#define GRPC_EXAMPLES_PUBSUB_SUBSCRIBER_H
 
 #include <grpc++/channel_interface.h>
 #include <grpc++/status.h>
@@ -65,4 +65,4 @@
 }  // namespace examples
 }  // namespace grpc
 
-#endif  // __GRPCPP_EXAMPLES_PUBSUB_SUBSCRIBER_H_
+#endif  // GRPC_EXAMPLES_PUBSUB_SUBSCRIBER_H
diff --git a/examples/pubsub/subscriber_test.cc b/examples/pubsub/subscriber_test.cc
index 49738fc..2d60633 100644
--- a/examples/pubsub/subscriber_test.cc
+++ b/examples/pubsub/subscriber_test.cc
@@ -58,9 +58,9 @@
 
 class SubscriberServiceImpl : public tech::pubsub::SubscriberService::Service {
  public:
-  Status CreateSubscription(ServerContext* context,
-                            const tech::pubsub::Subscription* request,
-                            tech::pubsub::Subscription* response) override {
+  Status CreateSubscription(
+      ServerContext* context, const tech::pubsub::Subscription* request,
+      tech::pubsub::Subscription* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->topic(), kTopic);
     EXPECT_EQ(request->name(), kSubscriptionName);
     return Status::OK;
@@ -68,7 +68,7 @@
 
   Status GetSubscription(ServerContext* context,
                          const tech::pubsub::GetSubscriptionRequest* request,
-                         tech::pubsub::Subscription* response) override {
+                         tech::pubsub::Subscription* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->subscription(), kSubscriptionName);
     response->set_topic(kTopic);
     return Status::OK;
@@ -77,14 +77,13 @@
   Status DeleteSubscription(
       ServerContext* context,
       const tech::pubsub::DeleteSubscriptionRequest* request,
-      proto2::Empty* response) override {
+      proto2::Empty* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->subscription(), kSubscriptionName);
     return Status::OK;
   }
 
-  Status Pull(ServerContext* context,
-              const tech::pubsub::PullRequest* request,
-              tech::pubsub::PullResponse* response) override {
+  Status Pull(ServerContext* context, const tech::pubsub::PullRequest* request,
+              tech::pubsub::PullResponse* response) GRPC_OVERRIDE {
     EXPECT_EQ(request->subscription(), kSubscriptionName);
     response->set_ack_id("1");
     response->mutable_pubsub_event()->mutable_message()->set_data(kData);
@@ -93,7 +92,7 @@
 
   Status Acknowledge(ServerContext* context,
                      const tech::pubsub::AcknowledgeRequest* request,
-                     proto2::Empty* response) override {
+                     proto2::Empty* response) GRPC_OVERRIDE {
     return Status::OK;
   }
 
@@ -102,7 +101,7 @@
 class SubscriberTest : public ::testing::Test {
  protected:
   // Setup a server and a client for SubscriberService.
-  void SetUp() override {
+  void SetUp() GRPC_OVERRIDE {
     int port = grpc_pick_unused_port_or_die();
     server_address_ << "localhost:" << port;
     ServerBuilder builder;
@@ -115,7 +114,7 @@
     subscriber_.reset(new grpc::examples::pubsub::Subscriber(channel_));
   }
 
-  void TearDown() override {
+  void TearDown() GRPC_OVERRIDE {
     server_->Shutdown();
     subscriber_->Shutdown();
   }
diff --git a/include/grpc++/async_unary_call.h b/include/grpc++/async_unary_call.h
index b4a654c..71b7d3f 100644
--- a/include/grpc++/async_unary_call.h
+++ b/include/grpc++/async_unary_call.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_ASYNC_UNARY_CALL_H__
-#define __GRPCPP_ASYNC_UNARY_CALL_H__
+#ifndef GRPCXX_ASYNC_UNARY_CALL_H
+#define GRPCXX_ASYNC_UNARY_CALL_H
 
 #include <grpc++/channel_interface.h>
 #include <grpc++/client_context.h>
@@ -45,7 +45,7 @@
 
 namespace grpc {
 template <class R>
-class ClientAsyncResponseReader final {
+class ClientAsyncResponseReader GRPC_FINAL {
  public:
   ClientAsyncResponseReader(ChannelInterface* channel, CompletionQueue* cq,
                     const RpcMethod& method, ClientContext* context,
@@ -79,7 +79,7 @@
 
 
  private:
-  ClientContext* context_ = nullptr;
+  ClientContext* context_;
   Call call_;
   CallOpBuffer init_buf_;
   CallOpBuffer meta_buf_;
@@ -87,7 +87,8 @@
 };
 
 template <class W>
-class ServerAsyncResponseWriter final : public ServerAsyncStreamingInterface {
+class ServerAsyncResponseWriter GRPC_FINAL
+    : public ServerAsyncStreamingInterface {
  public:
   explicit ServerAsyncResponseWriter(ServerContext* ctx)
       : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
@@ -127,7 +128,7 @@
   }
 
  private:
-  void BindCall(Call* call) override { call_ = *call; }
+  void BindCall(Call* call) GRPC_OVERRIDE { call_ = *call; }
 
   Call call_;
   ServerContext* ctx_;
@@ -137,4 +138,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_ASYNC_UNARY_CALL_H__
+#endif  // GRPCXX_ASYNC_UNARY_CALL_H
diff --git a/include/grpc++/channel_arguments.h b/include/grpc++/channel_arguments.h
index 91f89f3..b649ba2 100644
--- a/include/grpc++/channel_arguments.h
+++ b/include/grpc++/channel_arguments.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_CHANNEL_ARGUMENTS_H_
-#define __GRPCPP_CHANNEL_ARGUMENTS_H_
+#ifndef GRPCXX_CHANNEL_ARGUMENTS_H
+#define GRPCXX_CHANNEL_ARGUMENTS_H
 
 #include <vector>
 #include <list>
@@ -82,4 +82,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_CHANNEL_ARGUMENTS_H_
+#endif  // GRPCXX_CHANNEL_ARGUMENTS_H
diff --git a/include/grpc++/channel_interface.h b/include/grpc++/channel_interface.h
index 890fd04..77d1363 100644
--- a/include/grpc++/channel_interface.h
+++ b/include/grpc++/channel_interface.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_CHANNEL_INTERFACE_H__
-#define __GRPCPP_CHANNEL_INTERFACE_H__
+#ifndef GRPCXX_CHANNEL_INTERFACE_H
+#define GRPCXX_CHANNEL_INTERFACE_H
 
 #include <grpc++/status.h>
 #include <grpc++/impl/call.h>
@@ -63,4 +63,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_CHANNEL_INTERFACE_H__
+#endif  // GRPCXX_CHANNEL_INTERFACE_H
diff --git a/include/grpc++/client_context.h b/include/grpc++/client_context.h
index 1e7e6bf..87e5e9a 100644
--- a/include/grpc++/client_context.h
+++ b/include/grpc++/client_context.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_CLIENT_CONTEXT_H__
-#define __GRPCPP_CLIENT_CONTEXT_H__
+#ifndef GRPCXX_CLIENT_CONTEXT_H
+#define GRPCXX_CLIENT_CONTEXT_H
 
 #include <chrono>
 #include <map>
@@ -139,7 +139,7 @@
     return authority_;
   }
 
-  bool initial_metadata_received_ = false;
+  bool initial_metadata_received_;
   grpc_call *call_;
   grpc_completion_queue *cq_;
   gpr_timespec absolute_deadline_;
@@ -151,4 +151,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_CLIENT_CONTEXT_H__
+#endif  // GRPCXX_CLIENT_CONTEXT_H
diff --git a/include/grpc++/completion_queue.h b/include/grpc++/completion_queue.h
index 0075482..0ca1260 100644
--- a/include/grpc++/completion_queue.h
+++ b/include/grpc++/completion_queue.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_COMPLETION_QUEUE_H__
-#define __GRPCPP_COMPLETION_QUEUE_H__
+#ifndef GRPCXX_COMPLETION_QUEUE_H
+#define GRPCXX_COMPLETION_QUEUE_H
 
 #include <grpc++/impl/client_unary_call.h>
 
@@ -121,4 +121,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_COMPLETION_QUEUE_H__
+#endif  // GRPCXX_COMPLETION_QUEUE_H
diff --git a/include/grpc++/config.h b/include/grpc++/config.h
index 2dced12..cfa8d3b 100644
--- a/include/grpc++/config.h
+++ b/include/grpc++/config.h
@@ -31,15 +31,23 @@
  *
  */
 
-#ifndef __GRPCPP_CONFIG_H__
-#define __GRPCPP_CONFIG_H__
+#ifndef GRPCXX_CONFIG_H
+#define GRPCXX_CONFIG_H
 
 #include <string>
 
+#ifdef GRPC_OLD_CXX
+#define GRPC_FINAL
+#define GRPC_OVERRIDE
+#else
+#define GRPC_FINAL final
+#define GRPC_OVERRIDE override
+#endif
+
 namespace grpc {
 
 typedef std::string string;
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_CONFIG_H__
+#endif  // GRPCXX_CONFIG_H
diff --git a/include/grpc++/create_channel.h b/include/grpc++/create_channel.h
index 2c40047..da375b9 100644
--- a/include/grpc++/create_channel.h
+++ b/include/grpc++/create_channel.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_CREATE_CHANNEL_H__
-#define __GRPCPP_CREATE_CHANNEL_H__
+#ifndef GRPCXX_CREATE_CHANNEL_H
+#define GRPCXX_CREATE_CHANNEL_H
 
 #include <memory>
 
@@ -50,4 +50,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_CREATE_CHANNEL_H__
+#endif  // GRPCXX_CREATE_CHANNEL_H
diff --git a/include/grpc++/credentials.h b/include/grpc++/credentials.h
index ce9acce..c677cc3 100644
--- a/include/grpc++/credentials.h
+++ b/include/grpc++/credentials.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_CREDENTIALS_H_
-#define __GRPCPP_CREDENTIALS_H_
+#ifndef GRPCXX_CREDENTIALS_H
+#define GRPCXX_CREDENTIALS_H
 
 #include <chrono>
 #include <memory>
@@ -120,4 +120,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_CREDENTIALS_H_
+#endif  // GRPCXX_CREDENTIALS_H
diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h
index 341710f..3e199e3 100644
--- a/include/grpc++/impl/call.h
+++ b/include/grpc++/impl/call.h
@@ -31,10 +31,11 @@
  *
  */
 
-#ifndef __GRPCPP_CALL_H__
-#define __GRPCPP_CALL_H__
+#ifndef GRPCXX_IMPL_CALL_H
+#define GRPCXX_IMPL_CALL_H
 
 #include <grpc/grpc.h>
+#include <grpc++/config.h>
 #include <grpc++/status.h>
 #include <grpc++/completion_queue.h>
 
@@ -56,7 +57,7 @@
 
 class CallOpBuffer : public CompletionQueueTag {
  public:
-  CallOpBuffer() : return_tag_(this) {}
+  CallOpBuffer();
   ~CallOpBuffer();
 
   void Reset(void *next_return_tag);
@@ -80,40 +81,40 @@
   void FillOps(grpc_op *ops, size_t *nops);
 
   // Called by completion queue just prior to returning from Next() or Pluck()
-  bool FinalizeResult(void **tag, bool *status) override;
+  bool FinalizeResult(void **tag, bool *status) GRPC_OVERRIDE;
 
-  bool got_message = false;
+  bool got_message;
 
  private:
-  void *return_tag_ = nullptr;
+  void *return_tag_;
   // Send initial metadata
-  bool send_initial_metadata_ = false;
-  size_t initial_metadata_count_ = 0;
-  grpc_metadata *initial_metadata_ = nullptr;
+  bool send_initial_metadata_;
+  size_t initial_metadata_count_;
+  grpc_metadata *initial_metadata_;
   // Recv initial metadta
-  std::multimap<grpc::string, grpc::string> *recv_initial_metadata_ = nullptr;
-  grpc_metadata_array recv_initial_metadata_arr_ = {0, 0, nullptr};
+  std::multimap<grpc::string, grpc::string> *recv_initial_metadata_;
+  grpc_metadata_array recv_initial_metadata_arr_;
   // Send message
-  const google::protobuf::Message *send_message_ = nullptr;
-  grpc_byte_buffer *send_message_buf_ = nullptr;
+  const google::protobuf::Message *send_message_;
+  grpc_byte_buffer *send_message_buf_;
   // Recv message
-  google::protobuf::Message *recv_message_ = nullptr;
-  grpc_byte_buffer *recv_message_buf_ = nullptr;
+  google::protobuf::Message *recv_message_;
+  grpc_byte_buffer *recv_message_buf_;
   // Client send close
-  bool client_send_close_ = false;
+  bool client_send_close_;
   // Client recv status
-  std::multimap<grpc::string, grpc::string> *recv_trailing_metadata_ = nullptr;
-  Status *recv_status_ = nullptr;
-  grpc_metadata_array recv_trailing_metadata_arr_ = {0, 0, nullptr};
-  grpc_status_code status_code_ = GRPC_STATUS_OK;
-  char *status_details_ = nullptr;
-  size_t status_details_capacity_ = 0;
+  std::multimap<grpc::string, grpc::string> *recv_trailing_metadata_;
+  Status *recv_status_;
+  grpc_metadata_array recv_trailing_metadata_arr_;
+  grpc_status_code status_code_;
+  char *status_details_;
+  size_t status_details_capacity_;
   // Server send status
-  const Status *send_status_ = nullptr;
-  size_t trailing_metadata_count_ = 0;
-  grpc_metadata *trailing_metadata_ = nullptr;
+  const Status *send_status_;
+  size_t trailing_metadata_count_;
+  grpc_metadata *trailing_metadata_;
   int cancelled_buf_;
-  bool *recv_closed_ = nullptr;
+  bool *recv_closed_;
 };
 
 // Channel and Server implement this to allow them to hook performing ops
@@ -124,7 +125,7 @@
 };
 
 // Straightforward wrapping of the C call object
-class Call final {
+class Call GRPC_FINAL {
  public:
   /* call is owned by the caller */
   Call(grpc_call *call, CallHook *call_hook_, CompletionQueue *cq);
@@ -142,4 +143,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_CALL_INTERFACE_H__
+#endif  // GRPCXX_IMPL_CALL_H
diff --git a/include/grpc++/impl/client_unary_call.h b/include/grpc++/impl/client_unary_call.h
index f25ded7..d870326 100644
--- a/include/grpc++/impl/client_unary_call.h
+++ b/include/grpc++/impl/client_unary_call.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_CLIENT_UNARY_CALL_H__
-#define __GRPCPP_CLIENT_UNARY_CALL_H__
+#ifndef GRPCXX_IMPL_CLIENT_UNARY_CALL_H
+#define GRPCXX_IMPL_CLIENT_UNARY_CALL_H
 
 namespace google {
 namespace protobuf {
@@ -56,4 +56,4 @@
 
 }  // namespace grpc
 
-#endif
+#endif  // GRPCXX_IMPL_CLIENT_UNARY_CALL_H
diff --git a/include/grpc++/impl/internal_stub.h b/include/grpc++/impl/internal_stub.h
index 2529012..2cbf1d9 100644
--- a/include/grpc++/impl/internal_stub.h
+++ b/include/grpc++/impl/internal_stub.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_IMPL_INTERNAL_STUB_H__
-#define __GRPCPP_IMPL_INTERNAL_STUB_H__
+#ifndef GRPCXX_IMPL_INTERNAL_STUB_H
+#define GRPCXX_IMPL_INTERNAL_STUB_H
 
 #include <memory>
 
@@ -57,4 +57,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_IMPL_INTERNAL_STUB_H__
+#endif  // GRPCXX_IMPL_INTERNAL_STUB_H
diff --git a/include/grpc++/impl/rpc_method.h b/include/grpc++/impl/rpc_method.h
index 0236b11..ab407f5 100644
--- a/include/grpc++/impl/rpc_method.h
+++ b/include/grpc++/impl/rpc_method.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_IMPL_RPC_METHOD_H__
-#define __GRPCPP_IMPL_RPC_METHOD_H__
+#ifndef GRPCXX_IMPL_RPC_METHOD_H
+#define GRPCXX_IMPL_RPC_METHOD_H
 
 namespace google {
 namespace protobuf {
@@ -66,4 +66,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_IMPL_RPC_METHOD_H__
+#endif  // GRPCXX_IMPL_RPC_METHOD_H
diff --git a/include/grpc++/impl/rpc_service_method.h b/include/grpc++/impl/rpc_service_method.h
index ffd5c34..ff94c7e 100644
--- a/include/grpc++/impl/rpc_service_method.h
+++ b/include/grpc++/impl/rpc_service_method.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_IMPL_RPC_SERVICE_METHOD_H__
-#define __GRPCPP_IMPL_RPC_SERVICE_METHOD_H__
+#ifndef GRPCXX_IMPL_RPC_SERVICE_METHOD_H
+#define GRPCXX_IMPL_RPC_SERVICE_METHOD_H
 
 #include <functional>
 #include <map>
@@ -77,7 +77,7 @@
       ServiceType* service)
       : func_(func), service_(service) {}
 
-  Status RunHandler(const HandlerParameter& param) final {
+  Status RunHandler(const HandlerParameter& param) GRPC_FINAL {
     // Invoke application function, cast proto messages to their actual types.
     return func_(service_, param.server_context,
                  dynamic_cast<const RequestType*>(param.request),
@@ -102,7 +102,7 @@
       ServiceType* service)
       : func_(func), service_(service) {}
 
-  Status RunHandler(const HandlerParameter& param) final {
+  Status RunHandler(const HandlerParameter& param) GRPC_FINAL {
     ServerReader<RequestType> reader(param.call, param.server_context);
     return func_(service_, param.server_context, &reader,
                  dynamic_cast<ResponseType*>(param.response));
@@ -124,7 +124,7 @@
       ServiceType* service)
       : func_(func), service_(service) {}
 
-  Status RunHandler(const HandlerParameter& param) final {
+  Status RunHandler(const HandlerParameter& param) GRPC_FINAL {
     ServerWriter<ResponseType> writer(param.call, param.server_context);
     return func_(service_, param.server_context,
                  dynamic_cast<const RequestType*>(param.request), &writer);
@@ -147,7 +147,7 @@
       ServiceType* service)
       : func_(func), service_(service) {}
 
-  Status RunHandler(const HandlerParameter& param) final {
+  Status RunHandler(const HandlerParameter& param) GRPC_FINAL {
     ServerReaderWriter<ResponseType, RequestType> stream(param.call,
                                                          param.server_context);
     return func_(service_, param.server_context, &stream);
@@ -203,4 +203,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_IMPL_RPC_SERVICE_METHOD_H__
+#endif  // GRPCXX_IMPL_RPC_SERVICE_METHOD_H
diff --git a/include/grpc++/impl/service_type.h b/include/grpc++/impl/service_type.h
index cafa269..7481d64 100644
--- a/include/grpc++/impl/service_type.h
+++ b/include/grpc++/impl/service_type.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_IMPL_SERVICE_TYPE_H__
-#define __GRPCPP_IMPL_SERVICE_TYPE_H__
+#ifndef GRPCXX_IMPL_SERVICE_TYPE_H
+#define GRPCXX_IMPL_SERVICE_TYPE_H
 
 namespace google {
 namespace protobuf {
@@ -79,7 +79,11 @@
 
   AsynchronousService(CompletionQueue* cq, const char** method_names,
                       size_t method_count)
-      : cq_(cq), method_names_(method_names), method_count_(method_count) {}
+      : cq_(cq),
+        dispatch_impl_(nullptr),
+        method_names_(method_names),
+        method_count_(method_count),
+        request_args_(nullptr) {}
 
   ~AsynchronousService() { delete[] request_args_; }
 
@@ -116,12 +120,12 @@
  private:
   friend class Server;
   CompletionQueue* const cq_;
-  DispatchImpl* dispatch_impl_ = nullptr;
+  DispatchImpl* dispatch_impl_;
   const char** const method_names_;
   size_t method_count_;
-  void** request_args_ = nullptr;
+  void** request_args_;
 };
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_IMPL_SERVICE_TYPE_H__
+#endif  // GRPCXX_IMPL_SERVICE_TYPE_H
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index 7d06933..062546a 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_SERVER_H__
-#define __GRPCPP_SERVER_H__
+#ifndef GRPCXX_SERVER_H
+#define GRPCXX_SERVER_H
 
 #include <condition_variable>
 #include <list>
@@ -61,8 +61,8 @@
 class ThreadPoolInterface;
 
 // Currently it only supports handling rpcs in a single thread.
-class Server final : private CallHook,
-                     private AsynchronousService::DispatchImpl {
+class Server GRPC_FINAL : private CallHook,
+                          private AsynchronousService::DispatchImpl {
  public:
   ~Server();
 
@@ -96,7 +96,7 @@
   void RunRpc();
   void ScheduleCallback();
 
-  void PerformOpsOnCall(CallOpBuffer* ops, Call* call) override;
+  void PerformOpsOnCall(CallOpBuffer* ops, Call* call) GRPC_OVERRIDE;
 
   // DispatchImpl
   void RequestAsyncCall(void* registered_method, ServerContext* context,
@@ -127,4 +127,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_SERVER_H__
+#endif  // GRPCXX_SERVER_H
diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index 578e102..a327077 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_SERVER_BUILDER_H__
-#define __GRPCPP_SERVER_BUILDER_H__
+#ifndef GRPCXX_SERVER_BUILDER_H
+#define GRPCXX_SERVER_BUILDER_H
 
 #include <memory>
 #include <vector>
@@ -87,9 +87,9 @@
   std::vector<AsynchronousService*> async_services_;
   std::vector<Port> ports_;
   std::shared_ptr<ServerCredentials> creds_;
-  ThreadPoolInterface* thread_pool_ = nullptr;
+  ThreadPoolInterface* thread_pool_;
 };
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_SERVER_BUILDER_H__
+#endif  // GRPCXX_SERVER_BUILDER_H
diff --git a/include/grpc++/server_context.h b/include/grpc++/server_context.h
index d327d8b..9387f4a 100644
--- a/include/grpc++/server_context.h
+++ b/include/grpc++/server_context.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_SERVER_CONTEXT_H_
-#define __GRPCPP_SERVER_CONTEXT_H_
+#ifndef GRPCXX_SERVER_CONTEXT_H
+#define GRPCXX_SERVER_CONTEXT_H
 
 #include <chrono>
 #include <map>
@@ -66,7 +66,7 @@
 class Server;
 
 // Interface of server side rpc context.
-class ServerContext final {
+class ServerContext GRPC_FINAL {
  public:
   ServerContext();  // for async calls
   ~ServerContext();
@@ -108,12 +108,12 @@
   ServerContext(gpr_timespec deadline, grpc_metadata* metadata,
                 size_t metadata_count);
 
-  CompletionOp* completion_op_ = nullptr;
+  CompletionOp* completion_op_;
 
   std::chrono::system_clock::time_point deadline_;
-  grpc_call* call_ = nullptr;
-  CompletionQueue* cq_ = nullptr;
-  bool sent_initial_metadata_ = false;
+  grpc_call* call_;
+  CompletionQueue* cq_;
+  bool sent_initial_metadata_;
   std::multimap<grpc::string, grpc::string> client_metadata_;
   std::multimap<grpc::string, grpc::string> initial_metadata_;
   std::multimap<grpc::string, grpc::string> trailing_metadata_;
@@ -121,4 +121,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_SERVER_CONTEXT_H_
+#endif  // GRPCXX_SERVER_CONTEXT_H
diff --git a/include/grpc++/server_credentials.h b/include/grpc++/server_credentials.h
index fd4d71d..83ae9fd 100644
--- a/include/grpc++/server_credentials.h
+++ b/include/grpc++/server_credentials.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_SERVER_CREDENTIALS_H_
-#define __GRPCPP_SERVER_CREDENTIALS_H_
+#ifndef GRPCXX_SERVER_CREDENTIALS_H
+#define GRPCXX_SERVER_CREDENTIALS_H
 
 #include <memory>
 #include <vector>
@@ -74,4 +74,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_SERVER_CREDENTIALS_H_
+#endif  // GRPCXX_SERVER_CREDENTIALS_H
diff --git a/include/grpc++/status.h b/include/grpc++/status.h
index 1dfb0c9..8073319 100644
--- a/include/grpc++/status.h
+++ b/include/grpc++/status.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_STATUS_H__
-#define __GRPCPP_STATUS_H__
+#ifndef GRPCXX_STATUS_H
+#define GRPCXX_STATUS_H
 
 #include <grpc++/status_code_enum.h>
 #include <grpc++/config.h>
@@ -62,4 +62,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_STATUS_H__
+#endif  // GRPCXX_STATUS_H
diff --git a/include/grpc++/status_code_enum.h b/include/grpc++/status_code_enum.h
index 0ec0a97..2728fb0 100644
--- a/include/grpc++/status_code_enum.h
+++ b/include/grpc++/status_code_enum.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_STATUS_CODE_ENUM_H__
-#define __GRPCPP_STATUS_CODE_ENUM_H__
+#ifndef GRPCXX_STATUS_CODE_ENUM_H
+#define GRPCXX_STATUS_CODE_ENUM_H
 
 namespace grpc {
 
@@ -195,4 +195,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_STATUS_CODE_ENUM_H_
+#endif  // GRPCXX_STATUS_CODE_ENUM_H
diff --git a/include/grpc++/stream.h b/include/grpc++/stream.h
index cd95ff7..d95a379 100644
--- a/include/grpc++/stream.h
+++ b/include/grpc++/stream.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_STREAM_H__
-#define __GRPCPP_STREAM_H__
+#ifndef GRPCXX_STREAM_H
+#define GRPCXX_STREAM_H
 
 #include <grpc++/channel_interface.h>
 #include <grpc++/client_context.h>
@@ -83,8 +83,8 @@
 };
 
 template <class R>
-class ClientReader final : public ClientStreamingInterface,
-                           public ReaderInterface<R> {
+class ClientReader GRPC_FINAL : public ClientStreamingInterface,
+                                public ReaderInterface<R> {
  public:
   // Blocking create a stream and write the first request out.
   ClientReader(ChannelInterface* channel, const RpcMethod& method,
@@ -111,7 +111,7 @@
     GPR_ASSERT(cq_.Pluck(&buf));
   }
 
-  virtual bool Read(R* msg) override {
+  virtual bool Read(R* msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     if (!context_->initial_metadata_received_) {
       buf.AddRecvInitialMetadata(context_);
@@ -121,7 +121,7 @@
     return cq_.Pluck(&buf) && buf.got_message;
   }
 
-  virtual Status Finish() override {
+  virtual Status Finish() GRPC_OVERRIDE {
     CallOpBuffer buf;
     Status status;
     buf.AddClientRecvStatus(context_, &status);
@@ -137,8 +137,8 @@
 };
 
 template <class W>
-class ClientWriter final : public ClientStreamingInterface,
-                           public WriterInterface<W> {
+class ClientWriter GRPC_FINAL : public ClientStreamingInterface,
+                                public WriterInterface<W> {
  public:
   // Blocking create a stream.
   ClientWriter(ChannelInterface* channel, const RpcMethod& method,
@@ -152,7 +152,7 @@
     cq_.Pluck(&buf);
   }
 
-  virtual bool Write(const W& msg) override {
+  virtual bool Write(const W& msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     buf.AddSendMessage(msg);
     call_.PerformOps(&buf);
@@ -167,7 +167,7 @@
   }
 
   // Read the final response and wait for the final status.
-  virtual Status Finish() override {
+  virtual Status Finish() GRPC_OVERRIDE {
     CallOpBuffer buf;
     Status status;
     buf.AddRecvMessage(response_);
@@ -186,9 +186,9 @@
 
 // Client-side interface for bi-directional streaming.
 template <class W, class R>
-class ClientReaderWriter final : public ClientStreamingInterface,
-                                 public WriterInterface<W>,
-                                 public ReaderInterface<R> {
+class ClientReaderWriter GRPC_FINAL : public ClientStreamingInterface,
+                                      public WriterInterface<W>,
+                                      public ReaderInterface<R> {
  public:
   // Blocking create a stream.
   ClientReaderWriter(ChannelInterface* channel, const RpcMethod& method,
@@ -213,7 +213,7 @@
     GPR_ASSERT(cq_.Pluck(&buf));
   }
 
-  virtual bool Read(R* msg) override {
+  virtual bool Read(R* msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     if (!context_->initial_metadata_received_) {
       buf.AddRecvInitialMetadata(context_);
@@ -223,7 +223,7 @@
     return cq_.Pluck(&buf) && buf.got_message;
   }
 
-  virtual bool Write(const W& msg) override {
+  virtual bool Write(const W& msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     buf.AddSendMessage(msg);
     call_.PerformOps(&buf);
@@ -237,7 +237,7 @@
     return cq_.Pluck(&buf);
   }
 
-  virtual Status Finish() override {
+  virtual Status Finish() GRPC_OVERRIDE {
     CallOpBuffer buf;
     Status status;
     buf.AddClientRecvStatus(context_, &status);
@@ -253,7 +253,7 @@
 };
 
 template <class R>
-class ServerReader final : public ReaderInterface<R> {
+class ServerReader GRPC_FINAL : public ReaderInterface<R> {
  public:
   ServerReader(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {}
 
@@ -267,7 +267,7 @@
     call_->cq()->Pluck(&buf);
   }
 
-  virtual bool Read(R* msg) override {
+  virtual bool Read(R* msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     buf.AddRecvMessage(msg);
     call_->PerformOps(&buf);
@@ -280,7 +280,7 @@
 };
 
 template <class W>
-class ServerWriter final : public WriterInterface<W> {
+class ServerWriter GRPC_FINAL : public WriterInterface<W> {
  public:
   ServerWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {}
 
@@ -294,7 +294,7 @@
     call_->cq()->Pluck(&buf);
   }
 
-  virtual bool Write(const W& msg) override {
+  virtual bool Write(const W& msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     if (!ctx_->sent_initial_metadata_) {
       buf.AddSendInitialMetadata(&ctx_->initial_metadata_);
@@ -312,8 +312,8 @@
 
 // Server-side interface for bi-directional streaming.
 template <class W, class R>
-class ServerReaderWriter final : public WriterInterface<W>,
-                                 public ReaderInterface<R> {
+class ServerReaderWriter GRPC_FINAL : public WriterInterface<W>,
+                                      public ReaderInterface<R> {
  public:
   ServerReaderWriter(Call* call, ServerContext* ctx) : call_(call), ctx_(ctx) {}
 
@@ -327,14 +327,14 @@
     call_->cq()->Pluck(&buf);
   }
 
-  virtual bool Read(R* msg) override {
+  virtual bool Read(R* msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     buf.AddRecvMessage(msg);
     call_->PerformOps(&buf);
     return call_->cq()->Pluck(&buf) && buf.got_message;
   }
 
-  virtual bool Write(const W& msg) override {
+  virtual bool Write(const W& msg) GRPC_OVERRIDE {
     CallOpBuffer buf;
     if (!ctx_->sent_initial_metadata_) {
       buf.AddSendInitialMetadata(&ctx_->initial_metadata_);
@@ -380,8 +380,8 @@
 };
 
 template <class R>
-class ClientAsyncReader final : public ClientAsyncStreamingInterface,
-                                public AsyncReaderInterface<R> {
+class ClientAsyncReader GRPC_FINAL : public ClientAsyncStreamingInterface,
+                                     public AsyncReaderInterface<R> {
  public:
   // Create a stream and write the first request out.
   ClientAsyncReader(ChannelInterface* channel, CompletionQueue* cq,
@@ -395,7 +395,7 @@
     call_.PerformOps(&init_buf_);
   }
 
-  void ReadInitialMetadata(void* tag) override {
+  void ReadInitialMetadata(void* tag) GRPC_OVERRIDE {
     GPR_ASSERT(!context_->initial_metadata_received_);
 
     meta_buf_.Reset(tag);
@@ -403,7 +403,7 @@
     call_.PerformOps(&meta_buf_);
   }
 
-  void Read(R* msg, void* tag) override {
+  void Read(R* msg, void* tag) GRPC_OVERRIDE {
     read_buf_.Reset(tag);
     if (!context_->initial_metadata_received_) {
       read_buf_.AddRecvInitialMetadata(context_);
@@ -412,7 +412,7 @@
     call_.PerformOps(&read_buf_);
   }
 
-  void Finish(Status* status, void* tag) override {
+  void Finish(Status* status, void* tag) GRPC_OVERRIDE {
     finish_buf_.Reset(tag);
     if (!context_->initial_metadata_received_) {
       finish_buf_.AddRecvInitialMetadata(context_);
@@ -422,7 +422,7 @@
   }
 
  private:
-  ClientContext* context_ = nullptr;
+  ClientContext* context_;
   Call call_;
   CallOpBuffer init_buf_;
   CallOpBuffer meta_buf_;
@@ -431,8 +431,8 @@
 };
 
 template <class W>
-class ClientAsyncWriter final : public ClientAsyncStreamingInterface,
-                                public AsyncWriterInterface<W> {
+class ClientAsyncWriter GRPC_FINAL : public ClientAsyncStreamingInterface,
+                                     public AsyncWriterInterface<W> {
  public:
   ClientAsyncWriter(ChannelInterface* channel, CompletionQueue* cq,
                     const RpcMethod& method, ClientContext* context,
@@ -445,7 +445,7 @@
     call_.PerformOps(&init_buf_);
   }
 
-  void ReadInitialMetadata(void* tag) override {
+  void ReadInitialMetadata(void* tag) GRPC_OVERRIDE {
     GPR_ASSERT(!context_->initial_metadata_received_);
 
     meta_buf_.Reset(tag);
@@ -453,7 +453,7 @@
     call_.PerformOps(&meta_buf_);
   }
 
-  void Write(const W& msg, void* tag) override {
+  void Write(const W& msg, void* tag) GRPC_OVERRIDE {
     write_buf_.Reset(tag);
     write_buf_.AddSendMessage(msg);
     call_.PerformOps(&write_buf_);
@@ -465,7 +465,7 @@
     call_.PerformOps(&writes_done_buf_);
   }
 
-  void Finish(Status* status, void* tag) override {
+  void Finish(Status* status, void* tag) GRPC_OVERRIDE {
     finish_buf_.Reset(tag);
     if (!context_->initial_metadata_received_) {
       finish_buf_.AddRecvInitialMetadata(context_);
@@ -476,7 +476,7 @@
   }
 
  private:
-  ClientContext* context_ = nullptr;
+  ClientContext* context_;
   google::protobuf::Message* const response_;
   Call call_;
   CallOpBuffer init_buf_;
@@ -488,9 +488,9 @@
 
 // Client-side interface for bi-directional streaming.
 template <class W, class R>
-class ClientAsyncReaderWriter final : public ClientAsyncStreamingInterface,
-                                      public AsyncWriterInterface<W>,
-                                      public AsyncReaderInterface<R> {
+class ClientAsyncReaderWriter GRPC_FINAL : public ClientAsyncStreamingInterface,
+                                           public AsyncWriterInterface<W>,
+                                           public AsyncReaderInterface<R> {
  public:
   ClientAsyncReaderWriter(ChannelInterface* channel, CompletionQueue* cq,
                           const RpcMethod& method, ClientContext* context,
@@ -501,7 +501,7 @@
     call_.PerformOps(&init_buf_);
   }
 
-  void ReadInitialMetadata(void* tag) override {
+  void ReadInitialMetadata(void* tag) GRPC_OVERRIDE {
     GPR_ASSERT(!context_->initial_metadata_received_);
 
     meta_buf_.Reset(tag);
@@ -509,7 +509,7 @@
     call_.PerformOps(&meta_buf_);
   }
 
-  void Read(R* msg, void* tag) override {
+  void Read(R* msg, void* tag) GRPC_OVERRIDE {
     read_buf_.Reset(tag);
     if (!context_->initial_metadata_received_) {
       read_buf_.AddRecvInitialMetadata(context_);
@@ -518,7 +518,7 @@
     call_.PerformOps(&read_buf_);
   }
 
-  void Write(const W& msg, void* tag) override {
+  void Write(const W& msg, void* tag) GRPC_OVERRIDE {
     write_buf_.Reset(tag);
     write_buf_.AddSendMessage(msg);
     call_.PerformOps(&write_buf_);
@@ -530,7 +530,7 @@
     call_.PerformOps(&writes_done_buf_);
   }
 
-  void Finish(Status* status, void* tag) override {
+  void Finish(Status* status, void* tag) GRPC_OVERRIDE {
     finish_buf_.Reset(tag);
     if (!context_->initial_metadata_received_) {
       finish_buf_.AddRecvInitialMetadata(context_);
@@ -540,7 +540,7 @@
   }
 
  private:
-  ClientContext* context_ = nullptr;
+  ClientContext* context_;
   Call call_;
   CallOpBuffer init_buf_;
   CallOpBuffer meta_buf_;
@@ -551,13 +551,13 @@
 };
 
 template <class W, class R>
-class ServerAsyncReader : public ServerAsyncStreamingInterface,
-                          public AsyncReaderInterface<R> {
+class ServerAsyncReader GRPC_FINAL : public ServerAsyncStreamingInterface,
+                                     public AsyncReaderInterface<R> {
  public:
   explicit ServerAsyncReader(ServerContext* ctx)
       : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
 
-  void SendInitialMetadata(void* tag) override {
+  void SendInitialMetadata(void* tag) GRPC_OVERRIDE {
     GPR_ASSERT(!ctx_->sent_initial_metadata_);
 
     meta_buf_.Reset(tag);
@@ -566,7 +566,7 @@
     call_.PerformOps(&meta_buf_);
   }
 
-  void Read(R* msg, void* tag) override {
+  void Read(R* msg, void* tag) GRPC_OVERRIDE {
     read_buf_.Reset(tag);
     read_buf_.AddRecvMessage(msg);
     call_.PerformOps(&read_buf_);
@@ -598,7 +598,7 @@
   }
 
  private:
-  void BindCall(Call* call) override { call_ = *call; }
+  void BindCall(Call* call) GRPC_OVERRIDE { call_ = *call; }
 
   Call call_;
   ServerContext* ctx_;
@@ -608,13 +608,13 @@
 };
 
 template <class W>
-class ServerAsyncWriter : public ServerAsyncStreamingInterface,
-                          public AsyncWriterInterface<W> {
+class ServerAsyncWriter GRPC_FINAL : public ServerAsyncStreamingInterface,
+                                     public AsyncWriterInterface<W> {
  public:
   explicit ServerAsyncWriter(ServerContext* ctx)
       : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
 
-  void SendInitialMetadata(void* tag) override {
+  void SendInitialMetadata(void* tag) GRPC_OVERRIDE {
     GPR_ASSERT(!ctx_->sent_initial_metadata_);
 
     meta_buf_.Reset(tag);
@@ -623,7 +623,7 @@
     call_.PerformOps(&meta_buf_);
   }
 
-  void Write(const W& msg, void* tag) override {
+  void Write(const W& msg, void* tag) GRPC_OVERRIDE {
     write_buf_.Reset(tag);
     if (!ctx_->sent_initial_metadata_) {
       write_buf_.AddSendInitialMetadata(&ctx_->initial_metadata_);
@@ -644,7 +644,7 @@
   }
 
  private:
-  void BindCall(Call* call) override { call_ = *call; }
+  void BindCall(Call* call) GRPC_OVERRIDE { call_ = *call; }
 
   Call call_;
   ServerContext* ctx_;
@@ -655,14 +655,14 @@
 
 // Server-side interface for bi-directional streaming.
 template <class W, class R>
-class ServerAsyncReaderWriter : public ServerAsyncStreamingInterface,
-                                public AsyncWriterInterface<W>,
-                                public AsyncReaderInterface<R> {
+class ServerAsyncReaderWriter GRPC_FINAL : public ServerAsyncStreamingInterface,
+                                           public AsyncWriterInterface<W>,
+                                           public AsyncReaderInterface<R> {
  public:
   explicit ServerAsyncReaderWriter(ServerContext* ctx)
       : call_(nullptr, nullptr, nullptr), ctx_(ctx) {}
 
-  void SendInitialMetadata(void* tag) override {
+  void SendInitialMetadata(void* tag) GRPC_OVERRIDE {
     GPR_ASSERT(!ctx_->sent_initial_metadata_);
 
     meta_buf_.Reset(tag);
@@ -671,13 +671,13 @@
     call_.PerformOps(&meta_buf_);
   }
 
-  virtual void Read(R* msg, void* tag) override {
+  virtual void Read(R* msg, void* tag) GRPC_OVERRIDE {
     read_buf_.Reset(tag);
     read_buf_.AddRecvMessage(msg);
     call_.PerformOps(&read_buf_);
   }
 
-  virtual void Write(const W& msg, void* tag) override {
+  virtual void Write(const W& msg, void* tag) GRPC_OVERRIDE {
     write_buf_.Reset(tag);
     if (!ctx_->sent_initial_metadata_) {
       write_buf_.AddSendInitialMetadata(&ctx_->initial_metadata_);
@@ -698,7 +698,7 @@
   }
 
  private:
-  void BindCall(Call* call) override { call_ = *call; }
+  void BindCall(Call* call) GRPC_OVERRIDE { call_ = *call; }
 
   Call call_;
   ServerContext* ctx_;
@@ -710,4 +710,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_STREAM_H__
+#endif  // GRPCXX_STREAM_H
diff --git a/include/grpc++/thread_pool_interface.h b/include/grpc++/thread_pool_interface.h
index c839249..ead307f 100644
--- a/include/grpc++/thread_pool_interface.h
+++ b/include/grpc++/thread_pool_interface.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_THREAD_POOL_INTERFACE_H__
-#define __GRPCPP_THREAD_POOL_INTERFACE_H__
+#ifndef GRPCXX_THREAD_POOL_INTERFACE_H
+#define GRPCXX_THREAD_POOL_INTERFACE_H
 
 #include <functional>
 
@@ -49,4 +49,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_THREAD_POOL_INTERFACE_H__
+#endif  // GRPCXX_THREAD_POOL_INTERFACE_H
diff --git a/include/grpc/byte_buffer.h b/include/grpc/byte_buffer.h
index 89d8557e..0ff494c 100644
--- a/include/grpc/byte_buffer.h
+++ b/include/grpc/byte_buffer.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_BYTE_BUFFER_H__
-#define __GRPC_BYTE_BUFFER_H__
+#ifndef GRPC_BYTE_BUFFER_H
+#define GRPC_BYTE_BUFFER_H
 
 #include <grpc/grpc.h>
 #include <grpc/support/slice_buffer.h>
@@ -47,4 +47,4 @@
   } data;
 };
 
-#endif /* __GRPC_BYTE_BUFFER_H__ */
+#endif  /* GRPC_BYTE_BUFFER_H */
diff --git a/include/grpc/byte_buffer_reader.h b/include/grpc/byte_buffer_reader.h
index 4446e0c..cb757cf 100644
--- a/include/grpc/byte_buffer_reader.h
+++ b/include/grpc/byte_buffer_reader.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_BYTE_BUFFER_READER_H__
-#define __GRPC_BYTE_BUFFER_READER_H__
+#ifndef GRPC_BYTE_BUFFER_READER_H
+#define GRPC_BYTE_BUFFER_READER_H
 
 #include <grpc/grpc.h>
 #include <grpc/byte_buffer.h>
@@ -46,4 +46,4 @@
   } current;
 };
 
-#endif /* __GRPC_BYTE_BUFFER_READER_H__ */
+#endif  /* GRPC_BYTE_BUFFER_READER_H */
diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h
index 2df80b1..e401da8 100644
--- a/include/grpc/grpc.h
+++ b/include/grpc/grpc.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_GRPC_H__
-#define __GRPC_GRPC_H__
+#ifndef GRPC_GRPC_H
+#define GRPC_GRPC_H
 
 #include <grpc/status.h>
 
@@ -635,4 +635,4 @@
 }
 #endif
 
-#endif /* __GRPC_GRPC_H__ */
+#endif  /* GRPC_GRPC_H */
diff --git a/include/grpc/grpc_http.h b/include/grpc/grpc_http.h
index 757f53f..c41e874 100644
--- a/include/grpc/grpc_http.h
+++ b/include/grpc/grpc_http.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_GRPC_HTTP_H__
-#define __GRPC_GRPC_HTTP_H__
+#ifndef GRPC_GRPC_HTTP_H
+#define GRPC_GRPC_HTTP_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -64,4 +64,4 @@
 }
 #endif
 
-#endif /* __GRPC_GRPC_HTTP_H__ */
+#endif  /* GRPC_GRPC_HTTP_H */
diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h
index 3b35a4c..ab2cc08 100644
--- a/include/grpc/grpc_security.h
+++ b/include/grpc/grpc_security.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_SECURITY_H_
-#define GRPC_SECURITY_H_
+#ifndef GRPC_GRPC_SECURITY_H
+#define GRPC_GRPC_SECURITY_H
 
 #include "grpc.h"
 #include "status.h"
@@ -180,4 +180,4 @@
 }
 #endif
 
-#endif /* GRPC_SECURITY_H_ */
+#endif  /* GRPC_GRPC_SECURITY_H */
diff --git a/include/grpc/status.h b/include/grpc/status.h
index 76a71ed..a1a4d2f 100644
--- a/include/grpc/status.h
+++ b/include/grpc/status.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_STATUS_H__
-#define __GRPC_STATUS_H__
+#ifndef GRPC_STATUS_H
+#define GRPC_STATUS_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -199,4 +199,4 @@
 }
 #endif
 
-#endif /* __GRPC_STATUS_H__ */
+#endif  /* GRPC_STATUS_H */
diff --git a/include/grpc/support/alloc.h b/include/grpc/support/alloc.h
index 09ea975..509870f 100644
--- a/include/grpc/support/alloc.h
+++ b/include/grpc/support/alloc.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_ALLOC_H__
-#define __GRPC_SUPPORT_ALLOC_H__
+#ifndef GRPC_SUPPORT_ALLOC_H
+#define GRPC_SUPPORT_ALLOC_H
 
 #include <stddef.h>
 
@@ -55,4 +55,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_ALLOC_H__ */
+#endif  /* GRPC_SUPPORT_ALLOC_H */
diff --git a/include/grpc/support/atm.h b/include/grpc/support/atm.h
index f1e30d3..feca6b3 100644
--- a/include/grpc/support/atm.h
+++ b/include/grpc/support/atm.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_ATM_H__
-#define __GRPC_SUPPORT_ATM_H__
+#ifndef GRPC_SUPPORT_ATM_H
+#define GRPC_SUPPORT_ATM_H
 
 /* This interface provides atomic operations and barriers.
    It is internal to gpr support code and should not be used outside it.
@@ -89,4 +89,4 @@
 #error could not determine platform for atm
 #endif
 
-#endif /* __GRPC_SUPPORT_ATM_H__ */
+#endif  /* GRPC_SUPPORT_ATM_H */
diff --git a/include/grpc/support/atm_gcc_atomic.h b/include/grpc/support/atm_gcc_atomic.h
index 2ae24ae..11d78b4 100644
--- a/include/grpc/support/atm_gcc_atomic.h
+++ b/include/grpc/support/atm_gcc_atomic.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_ATM_GCC_ATOMIC_H__
-#define __GRPC_SUPPORT_ATM_GCC_ATOMIC_H__
+#ifndef GRPC_SUPPORT_ATM_GCC_ATOMIC_H
+#define GRPC_SUPPORT_ATM_GCC_ATOMIC_H
 
 /* atm_platform.h for gcc and gcc-like compilers with the
    __atomic_* interface.  */
@@ -66,4 +66,4 @@
                                      __ATOMIC_RELAXED);
 }
 
-#endif /* __GRPC_SUPPORT_ATM_GCC_ATOMIC_H__ */
+#endif  /* GRPC_SUPPORT_ATM_GCC_ATOMIC_H */
diff --git a/include/grpc/support/atm_gcc_sync.h b/include/grpc/support/atm_gcc_sync.h
index cec62e1..e863bfd 100644
--- a/include/grpc/support/atm_gcc_sync.h
+++ b/include/grpc/support/atm_gcc_sync.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_ATM_GCC_SYNC_H__
-#define __GRPC_SUPPORT_ATM_GCC_SYNC_H__
+#ifndef GRPC_SUPPORT_ATM_GCC_SYNC_H
+#define GRPC_SUPPORT_ATM_GCC_SYNC_H
 
 /* variant of atm_platform.h for gcc and gcc-like compiers with __sync_*
    interface */
@@ -70,4 +70,4 @@
 #define gpr_atm_acq_cas(p, o, n) (__sync_bool_compare_and_swap((p), (o), (n)))
 #define gpr_atm_rel_cas(p, o, n) gpr_atm_acq_cas((p), (o), (n))
 
-#endif /* __GRPC_SUPPORT_ATM_GCC_SYNC_H__ */
+#endif  /* GRPC_SUPPORT_ATM_GCC_SYNC_H */
diff --git a/include/grpc/support/atm_win32.h b/include/grpc/support/atm_win32.h
index 9bb1cfe..3b9113c 100644
--- a/include/grpc/support/atm_win32.h
+++ b/include/grpc/support/atm_win32.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_ATM_WIN32_H__
-#define __GRPC_SUPPORT_ATM_WIN32_H__
+#ifndef GRPC_SUPPORT_ATM_WIN32_H
+#define GRPC_SUPPORT_ATM_WIN32_H
 
 /* Win32 variant of atm_platform.h */
 #include <grpc/support/port_platform.h>
@@ -105,4 +105,4 @@
   return old;
 }
 
-#endif /* __GRPC_SUPPORT_ATM_WIN32_H__ */
+#endif  /* GRPC_SUPPORT_ATM_WIN32_H */
diff --git a/include/grpc/support/cancellable_platform.h b/include/grpc/support/cancellable_platform.h
index e77f9f1..e8e4b84 100644
--- a/include/grpc/support/cancellable_platform.h
+++ b/include/grpc/support/cancellable_platform.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_CANCELLABLE_PLATFORM_H__
-#define __GRPC_SUPPORT_CANCELLABLE_PLATFORM_H__
+#ifndef GRPC_SUPPORT_CANCELLABLE_PLATFORM_H
+#define GRPC_SUPPORT_CANCELLABLE_PLATFORM_H
 
 #include <grpc/support/atm.h>
 #include <grpc/support/sync.h>
@@ -53,4 +53,4 @@
   struct gpr_cancellable_list_ waiters;
 } gpr_cancellable;
 
-#endif /* __GRPC_SUPPORT_CANCELLABLE_PLATFORM_H__ */
+#endif  /* GRPC_SUPPORT_CANCELLABLE_PLATFORM_H */
diff --git a/include/grpc/support/cmdline.h b/include/grpc/support/cmdline.h
index 20de122..c2350a0 100644
--- a/include/grpc/support/cmdline.h
+++ b/include/grpc/support/cmdline.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_CMDLINE_H__
-#define __GRPC_SUPPORT_CMDLINE_H__
+#ifndef GRPC_SUPPORT_CMDLINE_H
+#define GRPC_SUPPORT_CMDLINE_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -92,4 +92,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_CMDLINE_H__ */
+#endif  /* GRPC_SUPPORT_CMDLINE_H */
diff --git a/include/grpc/support/cpu.h b/include/grpc/support/cpu.h
index 580f12d..005c3c7 100644
--- a/include/grpc/support/cpu.h
+++ b/include/grpc/support/cpu.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SUPPORT_CPU_H__
-#define __GRPC_INTERNAL_SUPPORT_CPU_H__
+#ifndef GRPC_SUPPORT_CPU_H
+#define GRPC_SUPPORT_CPU_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -54,4 +54,4 @@
 }  // extern "C"
 #endif
 
-#endif /* __GRPC_INTERNAL_SUPPORT_CPU_H__ */
+#endif  /* GRPC_SUPPORT_CPU_H */
diff --git a/include/grpc/support/histogram.h b/include/grpc/support/histogram.h
index fb9d3d1..31f7fed 100644
--- a/include/grpc/support/histogram.h
+++ b/include/grpc/support/histogram.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_HISTOGRAM_H__
-#define __GRPC_SUPPORT_HISTOGRAM_H__
+#ifndef GRPC_SUPPORT_HISTOGRAM_H
+#define GRPC_SUPPORT_HISTOGRAM_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -63,4 +63,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_HISTOGRAM_H__ */
+#endif  /* GRPC_SUPPORT_HISTOGRAM_H */
diff --git a/include/grpc/support/host_port.h b/include/grpc/support/host_port.h
index 2dac38a..3cc2f49 100644
--- a/include/grpc/support/host_port.h
+++ b/include/grpc/support/host_port.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_HOST_PORT_H__
-#define __GRPC_SUPPORT_HOST_PORT_H__
+#ifndef GRPC_SUPPORT_HOST_PORT_H
+#define GRPC_SUPPORT_HOST_PORT_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -59,4 +59,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_HOST_PORT_H__ */
+#endif  /* GRPC_SUPPORT_HOST_PORT_H */
diff --git a/include/grpc/support/log.h b/include/grpc/support/log.h
index c142949..aad4f23 100644
--- a/include/grpc/support/log.h
+++ b/include/grpc/support/log.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_LOG_H__
-#define __GRPC_SUPPORT_LOG_H__
+#ifndef GRPC_SUPPORT_LOG_H
+#define GRPC_SUPPORT_LOG_H
 
 #include <stdlib.h> /* for abort() */
 #include <stdarg.h>
@@ -105,4 +105,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_LOG_H__ */
+#endif  /* GRPC_SUPPORT_LOG_H */
diff --git a/include/grpc/support/log_win32.h b/include/grpc/support/log_win32.h
index 52d6a70..ad0edcd 100644
--- a/include/grpc/support/log_win32.h
+++ b/include/grpc/support/log_win32.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_LOG_WIN32_H__
-#define __GRPC_SUPPORT_LOG_WIN32_H__
+#ifndef GRPC_SUPPORT_LOG_WIN32_H
+#define GRPC_SUPPORT_LOG_WIN32_H
 
 #include <windows.h>
 
@@ -50,4 +50,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_LOG_H__ */
+#endif  /* GRPC_SUPPORT_LOG_WIN32_H */
diff --git a/include/grpc/support/port_platform.h b/include/grpc/support/port_platform.h
index 0a65175..f04c2e7 100644
--- a/include/grpc/support/port_platform.h
+++ b/include/grpc/support/port_platform.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_PORT_PLATFORM_H__
-#define __GRPC_SUPPORT_PORT_PLATFORM_H__
+#ifndef GRPC_SUPPORT_PORT_PLATFORM_H
+#define GRPC_SUPPORT_PORT_PLATFORM_H
 
 /* Override this file with one for your platform if you need to redefine
    things.  */
@@ -206,4 +206,4 @@
    power of two */
 #define GPR_MAX_ALIGNMENT 16
 
-#endif /* __GRPC_SUPPORT_PORT_PLATFORM_H__ */
+#endif  /* GRPC_SUPPORT_PORT_PLATFORM_H */
diff --git a/include/grpc/support/slice.h b/include/grpc/support/slice.h
index 8a21290..9026602 100644
--- a/include/grpc/support/slice.h
+++ b/include/grpc/support/slice.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_SLICE_H__
-#define __GRPC_SUPPORT_SLICE_H__
+#ifndef GRPC_SUPPORT_SLICE_H
+#define GRPC_SUPPORT_SLICE_H
 
 #include <grpc/support/sync.h>
 
@@ -175,4 +175,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_SLICE_H__ */
+#endif  /* GRPC_SUPPORT_SLICE_H */
diff --git a/include/grpc/support/slice_buffer.h b/include/grpc/support/slice_buffer.h
index 8b57f9f..56f71ef 100644
--- a/include/grpc/support/slice_buffer.h
+++ b/include/grpc/support/slice_buffer.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_SLICE_BUFFER_H__
-#define __GRPC_SUPPORT_SLICE_BUFFER_H__
+#ifndef GRPC_SUPPORT_SLICE_BUFFER_H
+#define GRPC_SUPPORT_SLICE_BUFFER_H
 
 #include <grpc/support/slice.h>
 
@@ -81,4 +81,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_SLICE_BUFFER_H__ */
+#endif  /* GRPC_SUPPORT_SLICE_BUFFER_H */
diff --git a/include/grpc/support/sync.h b/include/grpc/support/sync.h
index bc99317..35b2d12 100644
--- a/include/grpc/support/sync.h
+++ b/include/grpc/support/sync.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_SYNC_H__
-#define __GRPC_SUPPORT_SYNC_H__
+#ifndef GRPC_SUPPORT_SYNC_H
+#define GRPC_SUPPORT_SYNC_H
 /* Synchronization primitives for GPR.
 
    The type  gpr_mu              provides a non-reentrant mutex (lock).
@@ -345,4 +345,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_SYNC_H__ */
+#endif  /* GRPC_SUPPORT_SYNC_H */
diff --git a/include/grpc/support/sync_generic.h b/include/grpc/support/sync_generic.h
index 3bae222..bbd1b3e 100644
--- a/include/grpc/support/sync_generic.h
+++ b/include/grpc/support/sync_generic.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_SYNC_GENERIC_H__
-#define __GRPC_SUPPORT_SYNC_GENERIC_H__
+#ifndef GRPC_SUPPORT_SYNC_GENERIC_H
+#define GRPC_SUPPORT_SYNC_GENERIC_H
 /* Generic type defintions for gpr_sync. */
 
 #include <grpc/support/atm.h>
@@ -58,4 +58,4 @@
 #define GPR_STATS_INIT \
   { 0 }
 
-#endif /* __GRPC_SUPPORT_SYNC_GENERIC_H__ */
+#endif  /* GRPC_SUPPORT_SYNC_GENERIC_H */
diff --git a/include/grpc/support/sync_posix.h b/include/grpc/support/sync_posix.h
index 8ba2c5b..762d9eb 100644
--- a/include/grpc/support/sync_posix.h
+++ b/include/grpc/support/sync_posix.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_SYNC_POSIX_H__
-#define __GRPC_SUPPORT_SYNC_POSIX_H__
+#ifndef GRPC_SUPPORT_SYNC_POSIX_H
+#define GRPC_SUPPORT_SYNC_POSIX_H
 
 #include <grpc/support/sync_generic.h>
 
@@ -44,4 +44,4 @@
 
 #define GPR_ONCE_INIT PTHREAD_ONCE_INIT
 
-#endif /* __GRPC_SUPPORT_SYNC_POSIX_H__ */
+#endif  /* GRPC_SUPPORT_SYNC_POSIX_H */
diff --git a/include/grpc/support/sync_win32.h b/include/grpc/support/sync_win32.h
index 13823b8..cb2a866 100644
--- a/include/grpc/support/sync_win32.h
+++ b/include/grpc/support/sync_win32.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_SYNC_WIN32_H__
-#define __GRPC_SUPPORT_SYNC_WIN32_H__
+#ifndef GRPC_SUPPORT_SYNC_WIN32_H
+#define GRPC_SUPPORT_SYNC_WIN32_H
 
 #include <grpc/support/sync_generic.h>
 
@@ -48,4 +48,4 @@
 typedef INIT_ONCE gpr_once;
 #define GPR_ONCE_INIT INIT_ONCE_STATIC_INIT
 
-#endif /* __GRPC_SUPPORT_SYNC_WIN32_H__ */
+#endif  /* GRPC_SUPPORT_SYNC_WIN32_H */
diff --git a/include/grpc/support/thd.h b/include/grpc/support/thd.h
index a81e6cd..64d5bed 100644
--- a/include/grpc/support/thd.h
+++ b/include/grpc/support/thd.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_THD_H__
-#define __GRPC_SUPPORT_THD_H__
+#ifndef GRPC_SUPPORT_THD_H
+#define GRPC_SUPPORT_THD_H
 /* Thread interface for GPR.
 
    Types
@@ -73,4 +73,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_THD_H__ */
+#endif  /* GRPC_SUPPORT_THD_H */
diff --git a/include/grpc/support/time.h b/include/grpc/support/time.h
index 150b7ac..1fd3181 100644
--- a/include/grpc/support/time.h
+++ b/include/grpc/support/time.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_TIME_H__
-#define __GRPC_SUPPORT_TIME_H__
+#ifndef GRPC_SUPPORT_TIME_H
+#define GRPC_SUPPORT_TIME_H
 /* Time support.
    We use gpr_timespec, which is analogous to struct timespec.  On some
    machines, absolute times may be in local time.  */
@@ -100,4 +100,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_TIME_H__ */
+#endif  /* GRPC_SUPPORT_TIME_H */
diff --git a/include/grpc/support/useful.h b/include/grpc/support/useful.h
index 8d756c3..979f3d0 100644
--- a/include/grpc/support/useful.h
+++ b/include/grpc/support/useful.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_USEFUL_H__
-#define __GRPC_SUPPORT_USEFUL_H__
+#ifndef GRPC_SUPPORT_USEFUL_H
+#define GRPC_SUPPORT_USEFUL_H
 
 /* useful macros that don't belong anywhere else */
 
@@ -45,4 +45,4 @@
 
 #define GPR_ARRAY_SIZE(array) (sizeof(array) / sizeof(*(array)))
 
-#endif /* __GRPC_SUPPORT_USEFUL_H__ */
+#endif  /* GRPC_SUPPORT_USEFUL_H */
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index 8910323..eade70d 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -186,7 +186,7 @@
     printer->Print(
         *vars,
         "std::unique_ptr< ::grpc::ClientAsyncResponseReader< $Response$>> "
-        "$Method$(::grpc::ClientContext* context, "
+        "Async$Method$(::grpc::ClientContext* context, "
         "const $Request$& request, "
         "::grpc::CompletionQueue* cq, void* tag);\n");
   } else if (ClientOnlyStreaming(method)) {
@@ -196,7 +196,7 @@
         "::grpc::ClientContext* context, $Response$* response);\n");
     printer->Print(
         *vars,
-        "std::unique_ptr< ::grpc::ClientAsyncWriter< $Request$>> $Method$("
+        "std::unique_ptr< ::grpc::ClientAsyncWriter< $Request$>> Async$Method$("
         "::grpc::ClientContext* context, $Response$* response, "
         "::grpc::CompletionQueue* cq, void* tag);\n");
   } else if (ServerOnlyStreaming(method)) {
@@ -206,7 +206,7 @@
         "::grpc::ClientContext* context, const $Request$& request);\n");
     printer->Print(
         *vars,
-        "std::unique_ptr< ::grpc::ClientAsyncReader< $Response$>> $Method$("
+        "std::unique_ptr< ::grpc::ClientAsyncReader< $Response$>> Async$Method$("
         "::grpc::ClientContext* context, const $Request$& request, "
         "::grpc::CompletionQueue* cq, void* tag);\n");
   } else if (BidiStreaming(method)) {
@@ -217,7 +217,7 @@
     printer->Print(*vars,
                    "std::unique_ptr<  ::grpc::ClientAsyncReaderWriter< "
                    "$Request$, $Response$>> "
-                   "$Method$(::grpc::ClientContext* context, "
+                   "Async$Method$(::grpc::ClientContext* context, "
                    "::grpc::CompletionQueue* cq, void* tag);\n");
   }
 }
@@ -300,13 +300,13 @@
   (*vars)["Service"] = service->name();
 
   printer->Print(*vars,
-                 "class $Service$ final {\n"
+                 "class $Service$ GRPC_FINAL {\n"
                  " public:\n");
   printer->Indent();
 
   // Client side
   printer->Print(
-      "class Stub final : public ::grpc::InternalStub {\n"
+      "class Stub GRPC_FINAL : public ::grpc::InternalStub {\n"
       " public:\n");
   printer->Indent();
   for (int i = 0; i < service->method_count(); ++i) {
@@ -331,7 +331,7 @@
   for (int i = 0; i < service->method_count(); ++i) {
     PrintHeaderServerMethodSync(printer, service->method(i), vars);
   }
-  printer->Print("::grpc::RpcService* service() override final;\n");
+  printer->Print("::grpc::RpcService* service() GRPC_OVERRIDE GRPC_FINAL;\n");
   printer->Outdent();
   printer->Print(
       " private:\n"
@@ -340,7 +340,7 @@
 
   // Server side - Asynchronous
   printer->Print(
-      "class AsyncService final : public ::grpc::AsynchronousService {\n"
+      "class AsyncService GRPC_FINAL : public ::grpc::AsynchronousService {\n"
       " public:\n");
   printer->Indent();
   (*vars)["MethodCount"] = as_string(service->method_count());
@@ -390,7 +390,7 @@
     printer->Print(
         *vars,
         "std::unique_ptr< ::grpc::ClientAsyncResponseReader< $Response$>> "
-        "$Service$::Stub::$Method$(::grpc::ClientContext* context, "
+        "$Service$::Stub::Async$Method$(::grpc::ClientContext* context, "
         "const $Request$& request, "
         "::grpc::CompletionQueue* cq, void* tag) {\n");
     printer->Print(*vars,
@@ -416,7 +416,7 @@
                    "}\n\n");
     printer->Print(*vars,
                    "std::unique_ptr< ::grpc::ClientAsyncWriter< $Request$>> "
-                   "$Service$::Stub::$Method$("
+                   "$Service$::Stub::Async$Method$("
                    "::grpc::ClientContext* context, $Response$* response, "
                    "::grpc::CompletionQueue* cq, void* tag) {\n");
     printer->Print(*vars,
@@ -443,7 +443,7 @@
                    "}\n\n");
     printer->Print(*vars,
                    "std::unique_ptr< ::grpc::ClientAsyncReader< $Response$>> "
-                   "$Service$::Stub::$Method$("
+                   "$Service$::Stub::Async$Method$("
                    "::grpc::ClientContext* context, const $Request$& request, "
                    "::grpc::CompletionQueue* cq, void* tag) {\n");
     printer->Print(*vars,
@@ -471,7 +471,7 @@
     printer->Print(*vars,
                    "std::unique_ptr< ::grpc::ClientAsyncReaderWriter< "
                    "$Request$, $Response$>> "
-                   "$Service$::Stub::$Method$(::grpc::ClientContext* context, "
+                   "$Service$::Stub::Async$Method$(::grpc::ClientContext* context, "
                    "::grpc::CompletionQueue* cq, void* tag) {\n");
     printer->Print(*vars,
                    "  return std::unique_ptr< ::grpc::ClientAsyncReaderWriter< "
@@ -609,7 +609,7 @@
       "  std::unique_ptr< $Service$::Stub> stub(new $Service$::Stub());\n"
       "  stub->set_channel(channel);\n"
       "  return stub;\n"
-      "};\n\n");
+      "}\n\n");
   for (int i = 0; i < service->method_count(); ++i) {
     (*vars)["Idx"] = as_string(i);
     PrintSourceClientMethod(printer, service->method(i), vars);
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index f5b1ad2..1bfe5a8 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef NET_GRPC_COMPILER_CPP_GENERATOR_H_
-#define NET_GRPC_COMPILER_CPP_GENERATOR_H_
+#ifndef GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
+#define GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
 
 #include <string>
 
@@ -58,4 +58,4 @@
 
 }  // namespace grpc_cpp_generator
 
-#endif  // NET_GRPC_COMPILER_CPP_GENERATOR_H_
+#endif  // GRPC_INTERNAL_COMPILER_CPP_GENERATOR_H
diff --git a/src/compiler/cpp_generator_helpers.h b/src/compiler/cpp_generator_helpers.h
index e3c76e0..16abbde 100644
--- a/src/compiler/cpp_generator_helpers.h
+++ b/src/compiler/cpp_generator_helpers.h
@@ -31,57 +31,23 @@
  *
  */
 
-#ifndef NET_GRPC_COMPILER_CPP_GENERATOR_HELPERS_H__
-#define NET_GRPC_COMPILER_CPP_GENERATOR_HELPERS_H__
+#ifndef GRPC_INTERNAL_COMPILER_CPP_GENERATOR_HELPERS_H
+#define GRPC_INTERNAL_COMPILER_CPP_GENERATOR_HELPERS_H
 
 #include <map>
 #include <string>
 #include <google/protobuf/descriptor.h>
 #include <google/protobuf/descriptor.pb.h>
+#include "src/compiler/generator_helpers.h"
 
 namespace grpc_cpp_generator {
 
-inline bool StripSuffix(std::string *filename, const std::string &suffix) {
-  if (filename->length() >= suffix.length()) {
-    size_t suffix_pos = filename->length() - suffix.length();
-    if (filename->compare(suffix_pos, std::string::npos, suffix) == 0) {
-      filename->resize(filename->size() - suffix.size());
-      return true;
-    }
-  }
-
-  return false;
-}
-
-inline std::string StripProto(std::string filename) {
-  if (!StripSuffix(&filename, ".protodevel")) {
-    StripSuffix(&filename, ".proto");
-  }
-  return filename;
-}
-
-inline std::string StringReplace(std::string str, const std::string &from,
-                                 const std::string &to) {
-  size_t pos = 0;
-
-  for (;;) {
-    pos = str.find(from, pos);
-    if (pos == std::string::npos) {
-      break;
-    }
-    str.replace(pos, from.length(), to);
-    pos += to.length();
-  }
-
-  return str;
-}
-
 inline std::string DotsToColons(const std::string &name) {
-  return StringReplace(name, ".", "::");
+  return grpc_generator::StringReplace(name, ".", "::");
 }
 
 inline std::string DotsToUnderscores(const std::string &name) {
-  return StringReplace(name, ".", "_");
+  return grpc_generator::StringReplace(name, ".", "_");
 }
 
 inline std::string ClassName(const google::protobuf::Descriptor *descriptor,
@@ -103,4 +69,4 @@
 
 }  // namespace grpc_cpp_generator
 
-#endif  // NET_GRPC_COMPILER_CPP_GENERATOR_HELPERS_H__
+#endif  // GRPC_INTERNAL_COMPILER_CPP_GENERATOR_HELPERS_H
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index a421e51..feb158f 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -63,7 +63,7 @@
       return false;
     }
 
-    std::string file_name = grpc_cpp_generator::StripProto(file->name());
+    std::string file_name = grpc_generator::StripProto(file->name());
 
     // Generate .pb.h
     Insert(context, file_name + ".pb.h", "includes",
diff --git a/src/compiler/generator_helpers.h b/src/compiler/generator_helpers.h
new file mode 100644
index 0000000..2035820
--- /dev/null
+++ b/src/compiler/generator_helpers.h
@@ -0,0 +1,79 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
+#define GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
+
+#include <map>
+#include <string>
+
+namespace grpc_generator {
+
+inline bool StripSuffix(std::string *filename, const std::string &suffix) {
+  if (filename->length() >= suffix.length()) {
+    size_t suffix_pos = filename->length() - suffix.length();
+    if (filename->compare(suffix_pos, std::string::npos, suffix) == 0) {
+      filename->resize(filename->size() - suffix.size());
+      return true;
+    }
+  }
+
+  return false;
+}
+
+inline std::string StripProto(std::string filename) {
+  if (!StripSuffix(&filename, ".protodevel")) {
+    StripSuffix(&filename, ".proto");
+  }
+  return filename;
+}
+
+inline std::string StringReplace(std::string str, const std::string &from,
+                                 const std::string &to) {
+  size_t pos = 0;
+
+  for (;;) {
+    pos = str.find(from, pos);
+    if (pos == std::string::npos) {
+      break;
+    }
+    str.replace(pos, from.length(), to);
+    pos += to.length();
+  }
+
+  return str;
+}
+
+}  // namespace grpc_generator
+
+#endif  // GRPC_INTERNAL_COMPILER_GENERATOR_HELPERS_H
diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index a93b08c..b8d4aa5 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -31,6 +31,7 @@
  *
  */
 
+#include <algorithm>
 #include <cassert>
 #include <cctype>
 #include <cstring>
@@ -39,22 +40,26 @@
 #include <sstream>
 #include <vector>
 
+#include "src/compiler/generator_helpers.h"
 #include "src/compiler/python_generator.h"
 #include <google/protobuf/io/printer.h>
 #include <google/protobuf/io/zero_copy_stream_impl_lite.h>
 #include <google/protobuf/descriptor.pb.h>
 #include <google/protobuf/descriptor.h>
 
+using grpc_generator::StringReplace;
+using grpc_generator::StripProto;
 using google::protobuf::Descriptor;
 using google::protobuf::FileDescriptor;
-using google::protobuf::ServiceDescriptor;
 using google::protobuf::MethodDescriptor;
+using google::protobuf::ServiceDescriptor;
 using google::protobuf::io::Printer;
 using google::protobuf::io::StringOutputStream;
 using std::initializer_list;
 using std::make_pair;
 using std::map;
 using std::pair;
+using std::replace;
 using std::string;
 using std::strlen;
 using std::vector;
@@ -123,7 +128,7 @@
       string arg_name = meth->client_streaming() ?
           "request_iterator" : "request";
       out->Print("@abc.abstractmethod\n");
-      out->Print("def $Method$(self, $ArgName$):\n",
+      out->Print("def $Method$(self, $ArgName$, context):\n",
                  "Method", meth->name(), "ArgName", arg_name);
       {
         IndentScope raii_method_indent(out);
@@ -191,6 +196,15 @@
   return true;
 }
 
+// TODO(protobuf team): Export `ModuleName` from protobuf's
+// `src/google/protobuf/compiler/python/python_generator.cc` file.
+string ModuleName(const string& filename) {
+  string basename = StripProto(filename);
+  basename = StringReplace(basename, "-", "_");
+  basename = StringReplace(basename, "/", ".");
+  return basename + "_pb2";
+}
+
 bool GetModuleAndMessagePath(const Descriptor* type,
                              pair<string, string>* out) {
   const Descriptor* path_elem_type = type;
@@ -200,23 +214,19 @@
     path_elem_type = path_elem_type->containing_type();
   } while (path_elem_type != nullptr);
   string file_name = type->file()->name();
-  string module_name;
   static const int proto_suffix_length = strlen(".proto");
   if (!(file_name.size() > static_cast<size_t>(proto_suffix_length) &&
         file_name.find_last_of(".proto") == file_name.size() - 1)) {
     return false;
   }
-  module_name = file_name.substr(
-      0, file_name.size() - proto_suffix_length) + "_pb2";
-  string package = type->file()->package();
-  string module = (package.empty() ? "" : package + ".") +
-      module_name;
+  string module = ModuleName(file_name);
   string message_type;
   for (auto path_iter = message_path.rbegin();
        path_iter != message_path.rend(); ++path_iter) {
     message_type += (*path_iter)->name() + ".";
   }
-  message_type.pop_back();
+  // no pop_back prior to C++11
+  message_type.resize(message_type.size() - 1);
   *out = make_pair(module, message_type);
   return true;
 }
diff --git a/src/compiler/python_generator.h b/src/compiler/python_generator.h
index 773dfa3..df29ca1 100644
--- a/src/compiler/python_generator.h
+++ b/src/compiler/python_generator.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_COMPILER_PYTHON_GENERATOR_H__
-#define __GRPC_COMPILER_PYTHON_GENERATOR_H__
+#ifndef GRPC_INTERNAL_COMPILER_PYTHON_GENERATOR_H
+#define GRPC_INTERNAL_COMPILER_PYTHON_GENERATOR_H
 
 #include <string>
 #include <utility>
@@ -49,4 +49,4 @@
 
 }  // namespace grpc_python_generator
 
-#endif  // __GRPC_COMPILER_PYTHON_GENERATOR_H__
+#endif  // GRPC_INTERNAL_COMPILER_PYTHON_GENERATOR_H
diff --git a/src/compiler/python_plugin.cc b/src/compiler/python_plugin.cc
index ed1e049..0dd2c5b 100644
--- a/src/compiler/python_plugin.cc
+++ b/src/compiler/python_plugin.cc
@@ -56,12 +56,10 @@
 class PythonGrpcGenerator : public CodeGenerator {
  public:
   PythonGrpcGenerator() {}
-  ~PythonGrpcGenerator() override {}
+  ~PythonGrpcGenerator() {}
 
-  bool Generate(const FileDescriptor* file,
-                const string& parameter,
-                GeneratorContext* context,
-                string* error) const override {
+  bool Generate(const FileDescriptor* file, const string& parameter,
+                GeneratorContext* context, string* error) const {
     // Get output file name.
     string file_name;
     static const int proto_suffix_length = strlen(".proto");
diff --git a/src/compiler/ruby_generator.h b/src/compiler/ruby_generator.h
index d0c568f..4dd38e0 100644
--- a/src/compiler/ruby_generator.h
+++ b/src/compiler/ruby_generator.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef NET_GRPC_COMPILER_RUBY_GENERATOR_H_
-#define NET_GRPC_COMPILER_RUBY_GENERATOR_H_
+#ifndef GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_H
+#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_H
 
 #include <string>
 
@@ -48,4 +48,4 @@
 
 }  // namespace grpc_ruby_generator
 
-#endif  // NET_GRPC_COMPILER_RUBY_GENERATOR_H_
+#endif  // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_H
diff --git a/src/compiler/ruby_generator_helpers-inl.h b/src/compiler/ruby_generator_helpers-inl.h
index 61d887b..f3a087b 100644
--- a/src/compiler/ruby_generator_helpers-inl.h
+++ b/src/compiler/ruby_generator_helpers-inl.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef NET_GRPC_COMPILER_RUBY_GENERATOR_HELPERS_INL_H_
-#define NET_GRPC_COMPILER_RUBY_GENERATOR_HELPERS_INL_H_
+#ifndef GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_HELPERS_INL_H
+#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_HELPERS_INL_H
 
 #include <string>
 
@@ -64,4 +64,4 @@
 
 }  // namespace grpc_ruby_generator
 
-#endif  // NET_GRPC_COMPILER_RUBY_GENERATOR_HELPERS_INL_H_
+#endif  // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_HELPERS_INL_H
diff --git a/src/compiler/ruby_generator_map-inl.h b/src/compiler/ruby_generator_map-inl.h
index a86342e..f902b6d 100644
--- a/src/compiler/ruby_generator_map-inl.h
+++ b/src/compiler/ruby_generator_map-inl.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef NET_GRPC_COMPILER_RUBY_GENERATOR_MAP_INL_H_
-#define NET_GRPC_COMPILER_RUBY_GENERATOR_MAP_INL_H_
+#ifndef GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_MAP_INL_H
+#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_MAP_INL_H
 
 #include <iostream>
 #include <initializer_list>
@@ -69,4 +69,4 @@
 
 }  // namespace grpc_ruby_generator
 
-#endif  // NET_GRPC_COMPILER_RUBY_GENERATOR_MAP_INL_H_
+#endif  // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_MAP_INL_H
diff --git a/src/compiler/ruby_generator_string-inl.h b/src/compiler/ruby_generator_string-inl.h
index 7c2e4e5..bdd314c 100644
--- a/src/compiler/ruby_generator_string-inl.h
+++ b/src/compiler/ruby_generator_string-inl.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef NET_GRPC_COMPILER_RUBY_GENERATOR_STRING_INL_H_
-#define NET_GRPC_COMPILER_RUBY_GENERATOR_STRING_INL_H_
+#ifndef GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_STRING_INL_H
+#define GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_STRING_INL_H
 
 #include <algorithm>
 #include <string>
@@ -130,4 +130,4 @@
 
 }  // namespace grpc_ruby_generator
 
-#endif  // NET_GRPC_COMPILER_RUBY_GENERATOR_STRING_INL_H_
+#endif  // GRPC_INTERNAL_COMPILER_RUBY_GENERATOR_STRING_INL_H
diff --git a/src/compiler/ruby_plugin.cc b/src/compiler/ruby_plugin.cc
index 6580e5a..4a6e9f7 100644
--- a/src/compiler/ruby_plugin.cc
+++ b/src/compiler/ruby_plugin.cc
@@ -50,12 +50,12 @@
 class RubyGrpcGenerator : public google::protobuf::compiler::CodeGenerator {
  public:
   RubyGrpcGenerator() {}
-  ~RubyGrpcGenerator() override {}
+  ~RubyGrpcGenerator() {}
 
   bool Generate(const google::protobuf::FileDescriptor *file,
                 const std::string &parameter,
                 google::protobuf::compiler::GeneratorContext *context,
-                std::string *error) const override {
+                std::string *error) const {
     std::string code = grpc_ruby_generator::GetServices(file);
     if (code.size() == 0) {
       return true;  // don't generate a file if there are no services
diff --git a/src/core/channel/census_filter.h b/src/core/channel/census_filter.h
index 6acf969..4f9759f 100644
--- a/src/core/channel/census_filter.h
+++ b/src/core/channel/census_filter.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_CENSUS_FILTER_H__
-#define __GRPC_INTERNAL_CHANNEL_CENSUS_FILTER_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_CENSUS_FILTER_H
+#define GRPC_INTERNAL_CORE_CHANNEL_CENSUS_FILTER_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -41,4 +41,4 @@
 extern const grpc_channel_filter grpc_client_census_filter;
 extern const grpc_channel_filter grpc_server_census_filter;
 
-#endif /* __GRPC_INTERNAL_CHANNEL_CENSUS_FILTER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_CENSUS_FILTER_H */
diff --git a/src/core/channel/channel_args.h b/src/core/channel/channel_args.h
index 640bbd8..eb5bf63 100644
--- a/src/core/channel/channel_args.h
+++ b/src/core/channel/channel_args.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_CHANNEL_ARGS_H__
-#define __GRPC_INTERNAL_CHANNEL_CHANNEL_ARGS_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_ARGS_H
+#define GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_ARGS_H
 
 #include <grpc/grpc.h>
 
@@ -51,4 +51,4 @@
    is specified in channel args, otherwise returns 0. */
 int grpc_channel_args_is_census_enabled(const grpc_channel_args *a);
 
-#endif /* __GRPC_INTERNAL_CHANNEL_CHANNEL_ARGS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_ARGS_H */
diff --git a/src/core/channel/channel_stack.h b/src/core/channel/channel_stack.h
index 1ca95e7..c136f5c 100644
--- a/src/core/channel/channel_stack.h
+++ b/src/core/channel/channel_stack.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_CHANNEL_STACK_H__
-#define __GRPC_INTERNAL_CHANNEL_CHANNEL_STACK_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_STACK_H
+#define GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_STACK_H
 
 /* A channel filter defines how operations on a channel are implemented.
    Channel filters are chained together to create full channels, and if those
@@ -301,4 +301,4 @@
 #define GRPC_CALL_LOG_OP(sev, elem, op) \
   if (grpc_trace_bits & GRPC_TRACE_CHANNEL) grpc_call_log_op(sev, elem, op)
 
-#endif /* __GRPC_INTERNAL_CHANNEL_CHANNEL_STACK_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_STACK_H */
diff --git a/src/core/channel/child_channel.h b/src/core/channel/child_channel.h
index 84a1106..3869540 100644
--- a/src/core/channel/child_channel.h
+++ b/src/core/channel/child_channel.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_CHILD_CHANNEL_H_
-#define __GRPC_INTERNAL_CHANNEL_CHILD_CHANNEL_H_
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_CHILD_CHANNEL_H
+#define GRPC_INTERNAL_CORE_CHANNEL_CHILD_CHANNEL_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -61,4 +61,4 @@
 grpc_call_element *grpc_child_call_get_top_element(grpc_child_call *call);
 void grpc_child_call_destroy(grpc_child_call *call);
 
-#endif /* __GRPC_INTERNAL_CHANNEL_CHILD_CHANNEL_H_ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_CHILD_CHANNEL_H */
diff --git a/src/core/channel/client_channel.h b/src/core/channel/client_channel.h
index 7da4fc9..7a67a9f 100644
--- a/src/core/channel/client_channel.h
+++ b/src/core/channel/client_channel.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_CLIENT_CHANNEL_H__
-#define __GRPC_INTERNAL_CHANNEL_CLIENT_CHANNEL_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_CLIENT_CHANNEL_H
+#define GRPC_INTERNAL_CORE_CHANNEL_CLIENT_CHANNEL_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -59,4 +59,4 @@
     grpc_channel_filter const **channel_filters, size_t num_channel_filters,
     grpc_mdctx *mdctx);
 
-#endif /* __GRPC_INTERNAL_CHANNEL_CLIENT_CHANNEL_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_CLIENT_CHANNEL_H */
diff --git a/src/core/channel/client_setup.h b/src/core/channel/client_setup.h
index f2b6426..70137e1 100644
--- a/src/core/channel/client_setup.h
+++ b/src/core/channel/client_setup.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_CLIENT_SETUP_H__
-#define __GRPC_INTERNAL_CHANNEL_CLIENT_SETUP_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_CLIENT_SETUP_H
+#define GRPC_INTERNAL_CORE_CHANNEL_CLIENT_SETUP_H
 
 #include "src/core/channel/client_channel.h"
 #include "src/core/transport/metadata.h"
@@ -70,4 +70,4 @@
 
 grpc_mdctx *grpc_client_setup_get_mdctx(grpc_client_setup_request *r);
 
-#endif /* __GRPC_INTERNAL_CHANNEL_CLIENT_SETUP_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_CLIENT_SETUP_H */
diff --git a/src/core/channel/connected_channel.h b/src/core/channel/connected_channel.h
index e19de62..8b35f69 100644
--- a/src/core/channel/connected_channel.h
+++ b/src/core/channel/connected_channel.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_CONNECTED_CHANNEL_H__
-#define __GRPC_INTERNAL_CHANNEL_CONNECTED_CHANNEL_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_CONNECTED_CHANNEL_H
+#define GRPC_INTERNAL_CORE_CHANNEL_CONNECTED_CHANNEL_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -46,4 +46,4 @@
 grpc_transport_setup_result grpc_connected_channel_bind_transport(
     grpc_channel_stack *channel_stack, grpc_transport *transport);
 
-#endif /* __GRPC_INTERNAL_CHANNEL_CONNECTED_CHANNEL_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_CONNECTED_CHANNEL_H */
diff --git a/src/core/channel/http_client_filter.h b/src/core/channel/http_client_filter.h
index 5882f8f..04eb839 100644
--- a/src/core/channel/http_client_filter.h
+++ b/src/core/channel/http_client_filter.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_HTTP_CLIENT_FILTER_H__
-#define __GRPC_INTERNAL_CHANNEL_HTTP_CLIENT_FILTER_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_HTTP_CLIENT_FILTER_H
+#define GRPC_INTERNAL_CORE_CHANNEL_HTTP_CLIENT_FILTER_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -41,4 +41,4 @@
 
 #define GRPC_ARG_HTTP2_SCHEME "grpc.http2_scheme"
 
-#endif /* __GRPC_INTERNAL_CHANNEL_HTTP_CLIENT_FILTER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_HTTP_CLIENT_FILTER_H */
diff --git a/src/core/channel/http_filter.h b/src/core/channel/http_filter.h
index b85cd39..1b116ad 100644
--- a/src/core/channel/http_filter.h
+++ b/src/core/channel/http_filter.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_HTTP_FILTER_H__
-#define __GRPC_INTERNAL_CHANNEL_HTTP_FILTER_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_HTTP_FILTER_H
+#define GRPC_INTERNAL_CORE_CHANNEL_HTTP_FILTER_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -40,4 +40,4 @@
    transports. */
 extern const grpc_channel_filter grpc_http_filter;
 
-#endif /* __GRPC_INTERNAL_CHANNEL_HTTP_FILTER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_HTTP_FILTER_H */
diff --git a/src/core/channel/http_server_filter.h b/src/core/channel/http_server_filter.h
index 0643c7b..42f76ed 100644
--- a/src/core/channel/http_server_filter.h
+++ b/src/core/channel/http_server_filter.h
@@ -31,12 +31,12 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_HTTP_SERVER_FILTER_H__
-#define __GRPC_INTERNAL_CHANNEL_HTTP_SERVER_FILTER_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_HTTP_SERVER_FILTER_H
+#define GRPC_INTERNAL_CORE_CHANNEL_HTTP_SERVER_FILTER_H
 
 #include "src/core/channel/channel_stack.h"
 
 /* Processes metadata on the client side for HTTP2 transports */
 extern const grpc_channel_filter grpc_http_server_filter;
 
-#endif /* __GRPC_INTERNAL_CHANNEL_HTTP_SERVER_FILTER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_HTTP_SERVER_FILTER_H */
diff --git a/src/core/channel/metadata_buffer.h b/src/core/channel/metadata_buffer.h
index 701d69d..b7cc517 100644
--- a/src/core/channel/metadata_buffer.h
+++ b/src/core/channel/metadata_buffer.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_METADATA_BUFFER_H__
-#define __GRPC_INTERNAL_CHANNEL_METADATA_BUFFER_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_METADATA_BUFFER_H
+#define GRPC_INTERNAL_CORE_CHANNEL_METADATA_BUFFER_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -67,4 +67,4 @@
     grpc_metadata_buffer *buffer);
 void grpc_metadata_buffer_cleanup_elements(void *elements, grpc_op_error error);
 
-#endif /* __GRPC_INTERNAL_CHANNEL_METADATA_BUFFER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_METADATA_BUFFER_H */
diff --git a/src/core/channel/noop_filter.h b/src/core/channel/noop_filter.h
index 93c2bff..96463e5 100644
--- a/src/core/channel/noop_filter.h
+++ b/src/core/channel/noop_filter.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_CHANNEL_NOOP_FILTER_H__
-#define __GRPC_INTERNAL_CHANNEL_NOOP_FILTER_H__
+#ifndef GRPC_INTERNAL_CORE_CHANNEL_NOOP_FILTER_H
+#define GRPC_INTERNAL_CORE_CHANNEL_NOOP_FILTER_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -41,4 +41,4 @@
    customize for their own filters */
 extern const grpc_channel_filter grpc_no_op_filter;
 
-#endif /* __GRPC_INTERNAL_CHANNEL_NOOP_FILTER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_CHANNEL_NOOP_FILTER_H */
diff --git a/src/core/compression/algorithm.h b/src/core/compression/algorithm.h
index e398ae3..9dd9f57 100644
--- a/src/core/compression/algorithm.h
+++ b/src/core/compression/algorithm.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_COMPRESSION_ALGORITHM_H__
-#define __GRPC_INTERNAL_COMPRESSION_ALGORITHM_H__
+#ifndef GRPC_INTERNAL_CORE_COMPRESSION_ALGORITHM_H
+#define GRPC_INTERNAL_CORE_COMPRESSION_ALGORITHM_H
 
 /* The various compression algorithms supported by GRPC */
 typedef enum {
@@ -46,4 +46,4 @@
 const char *grpc_compression_algorithm_name(
     grpc_compression_algorithm algorithm);
 
-#endif /* __GRPC_INTERNAL_COMPRESSION_ALGORITHM_H__ */
+#endif  /* GRPC_INTERNAL_CORE_COMPRESSION_ALGORITHM_H */
diff --git a/src/core/compression/message_compress.h b/src/core/compression/message_compress.h
index 666da2e..e8aef1a 100644
--- a/src/core/compression/message_compress.h
+++ b/src/core/compression/message_compress.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_COMPRESSION_MESSAGE_COMPRESS_H__
-#define __GRPC_INTERNAL_COMPRESSION_MESSAGE_COMPRESS_H__
+#ifndef GRPC_INTERNAL_CORE_COMPRESSION_MESSAGE_COMPRESS_H
+#define GRPC_INTERNAL_CORE_COMPRESSION_MESSAGE_COMPRESS_H
 
 #include "src/core/compression/algorithm.h"
 #include <grpc/support/slice_buffer.h>
@@ -49,4 +49,4 @@
 int grpc_msg_decompress(grpc_compression_algorithm algorithm,
                         gpr_slice_buffer *input, gpr_slice_buffer *output);
 
-#endif /* __GRPC_INTERNAL_COMPRESSION_MESSAGE_COMPRESS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_COMPRESSION_MESSAGE_COMPRESS_H */
diff --git a/src/core/debug/trace.h b/src/core/debug/trace.h
index bf9b8a3..2059599 100644
--- a/src/core/debug/trace.h
+++ b/src/core/debug/trace.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_DEBUG_TRACE_H
-#define GRPC_CORE_DEBUG_TRACE_H
+#ifndef GRPC_INTERNAL_CORE_DEBUG_TRACE_H
+#define GRPC_INTERNAL_CORE_DEBUG_TRACE_H
 
 #include <grpc/support/port_platform.h>
 
@@ -57,5 +57,4 @@
 
 void grpc_init_trace_bits();
 
-#endif
-
+#endif  /* GRPC_INTERNAL_CORE_DEBUG_TRACE_H */
diff --git a/src/core/httpcli/format_request.h b/src/core/httpcli/format_request.h
index e06b632..8bfb20b 100644
--- a/src/core/httpcli/format_request.h
+++ b/src/core/httpcli/format_request.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_HTTPCLI_FORMAT_REQUEST_H__
-#define __GRPC_INTERNAL_HTTPCLI_FORMAT_REQUEST_H__
+#ifndef GRPC_INTERNAL_CORE_HTTPCLI_FORMAT_REQUEST_H
+#define GRPC_INTERNAL_CORE_HTTPCLI_FORMAT_REQUEST_H
 
 #include "src/core/httpcli/httpcli.h"
 #include <grpc/support/slice.h>
@@ -42,4 +42,4 @@
                                            const char *body_bytes,
                                            size_t body_size);
 
-#endif /* __GRPC_INTERNAL_HTTPCLI_FORMAT_REQUEST_H__ */
+#endif  /* GRPC_INTERNAL_CORE_HTTPCLI_FORMAT_REQUEST_H */
diff --git a/src/core/httpcli/httpcli.h b/src/core/httpcli/httpcli.h
index f620987..255c5ed 100644
--- a/src/core/httpcli/httpcli.h
+++ b/src/core/httpcli/httpcli.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_HTTPCLI_HTTPCLI_H__
-#define __GRPC_INTERNAL_HTTPCLI_HTTPCLI_H__
+#ifndef GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_H
+#define GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_H
 
 #include <stddef.h>
 
@@ -115,4 +115,4 @@
 void grpc_httpcli_set_override(grpc_httpcli_get_override get,
                                grpc_httpcli_post_override post);
 
-#endif /* __GRPC_INTERNAL_HTTPCLI_HTTPCLI_H__ */
+#endif  /* GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_H */
diff --git a/src/core/httpcli/httpcli_security_context.h b/src/core/httpcli/httpcli_security_context.h
index 5a1311e..a776828 100644
--- a/src/core/httpcli/httpcli_security_context.h
+++ b/src/core/httpcli/httpcli_security_context.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_HTTPCLI_HTTPCLI_SECURITY_CONTEXT_H__
-#define __GRPC_INTERNAL_HTTPCLI_HTTPCLI_SECURITY_CONTEXT_H__
+#ifndef GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_SECURITY_CONTEXT_H
+#define GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_SECURITY_CONTEXT_H
 
 #include "src/core/security/security_context.h"
 
@@ -40,4 +40,4 @@
     const unsigned char *pem_root_certs, size_t pem_root_certs_size,
     const char *secure_peer_name, grpc_channel_security_context **ctx);
 
-#endif /* __GRPC_INTERNAL_HTTPCLI_HTTPCLI_SECURITY_CONTEXT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_HTTPCLI_HTTPCLI_SECURITY_CONTEXT_H */
diff --git a/src/core/httpcli/parser.h b/src/core/httpcli/parser.h
index db1fa0a..71280e7 100644
--- a/src/core/httpcli/parser.h
+++ b/src/core/httpcli/parser.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_HTTPCLI_PARSER_H__
-#define __GRPC_INTERNAL_HTTPCLI_PARSER_H__
+#ifndef GRPC_INTERNAL_CORE_HTTPCLI_PARSER_H
+#define GRPC_INTERNAL_CORE_HTTPCLI_PARSER_H
 
 #include "src/core/httpcli/httpcli.h"
 #include <grpc/support/port_platform.h>
@@ -61,4 +61,4 @@
 int grpc_httpcli_parser_parse(grpc_httpcli_parser *parser, gpr_slice slice);
 int grpc_httpcli_parser_eof(grpc_httpcli_parser *parser);
 
-#endif /* __GRPC_INTERNAL_HTTPCLI_PARSER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_HTTPCLI_PARSER_H */
diff --git a/src/core/iomgr/alarm.h b/src/core/iomgr/alarm.h
index 6dcc63a..e5262e2 100644
--- a/src/core/iomgr/alarm.h
+++ b/src/core/iomgr/alarm.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_ALARM_H__
-#define __GRPC_INTERNAL_IOMGR_ALARM_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_ALARM_H
+#define GRPC_INTERNAL_CORE_IOMGR_ALARM_H
 
 #include "src/core/iomgr/iomgr.h"
 #include <grpc/support/port_platform.h>
@@ -86,4 +86,4 @@
    Requires:  cancel() must happen after add() on a given alarm */
 void grpc_alarm_cancel(grpc_alarm *alarm);
 
-#endif /* __GRPC_INTERNAL_IOMGR_ALARM_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_ALARM_H */
diff --git a/src/core/iomgr/alarm_heap.h b/src/core/iomgr/alarm_heap.h
index bb6e5e3..c5adfc6 100644
--- a/src/core/iomgr/alarm_heap.h
+++ b/src/core/iomgr/alarm_heap.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_ALARM_HEAP_H_
-#define __GRPC_INTERNAL_IOMGR_ALARM_HEAP_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H
+#define GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H
 
 #include "src/core/iomgr/alarm.h"
 
@@ -54,4 +54,4 @@
 
 int grpc_alarm_heap_is_empty(grpc_alarm_heap *heap);
 
-#endif /* __GRPC_INTERNAL_IOMGR_ALARM_HEAP_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_ALARM_HEAP_H */
diff --git a/src/core/iomgr/alarm_internal.h b/src/core/iomgr/alarm_internal.h
index cbd8fa9..0268a01 100644
--- a/src/core/iomgr/alarm_internal.h
+++ b/src/core/iomgr/alarm_internal.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_ALARM_INTERNAL_H_
-#define __GRPC_INTERNAL_IOMGR_ALARM_INTERNAL_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H
+#define GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H
 
 #include <grpc/support/sync.h>
 #include <grpc/support/time.h>
@@ -59,4 +59,4 @@
 
 void grpc_kick_poller(void);
 
-#endif /* __GRPC_INTERNAL_IOMGR_ALARM_INTERNAL_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_ALARM_INTERNAL_H */
diff --git a/src/core/iomgr/endpoint.h b/src/core/iomgr/endpoint.h
index e89cf66..881e851 100644
--- a/src/core/iomgr/endpoint.h
+++ b/src/core/iomgr/endpoint.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_ENDPOINT_H__
-#define __GRPC_INTERNAL_IOMGR_ENDPOINT_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_H
+#define GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_H
 
 #include "src/core/iomgr/pollset.h"
 #include <grpc/support/slice.h>
@@ -103,4 +103,4 @@
   const grpc_endpoint_vtable *vtable;
 };
 
-#endif /* __GRPC_INTERNAL_IOMGR_ENDPOINT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_H */
diff --git a/src/core/iomgr/endpoint_pair.h b/src/core/iomgr/endpoint_pair.h
index 2e46aab..dffbd36 100644
--- a/src/core/iomgr/endpoint_pair.h
+++ b/src/core/iomgr/endpoint_pair.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_ENDPOINT_PAIR_H_
-#define __GRPC_INTERNAL_IOMGR_ENDPOINT_PAIR_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_PAIR_H
+#define GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_PAIR_H
 
 #include "src/core/iomgr/endpoint.h"
 
@@ -43,4 +43,4 @@
 
 grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(size_t read_slice_size);
 
-#endif /* __GRPC_INTERNAL_IOMGR_ENDPOINT_PAIR_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_ENDPOINT_PAIR_H */
diff --git a/src/core/iomgr/fd_posix.h b/src/core/iomgr/fd_posix.h
index 2a308c8..be21f2b 100644
--- a/src/core/iomgr/fd_posix.h
+++ b/src/core/iomgr/fd_posix.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_FD_POSIX_H_
-#define __GRPC_INTERNAL_IOMGR_FD_POSIX_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_FD_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_FD_POSIX_H
 
 #include "src/core/iomgr/iomgr.h"
 #include "src/core/iomgr/pollset.h"
@@ -143,4 +143,4 @@
 void grpc_fd_global_init(void);
 void grpc_fd_global_shutdown(void);
 
-#endif /* __GRPC_INTERNAL_IOMGR_FD_POSIX_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_FD_POSIX_H */
diff --git a/src/core/iomgr/iocp_windows.h b/src/core/iomgr/iocp_windows.h
index d023170..3313319 100644
--- a/src/core/iomgr/iocp_windows.h
+++ b/src/core/iomgr/iocp_windows.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_IOCP_WINDOWS_H_
-#define __GRPC_INTERNAL_IOMGR_IOCP_WINDOWS_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_IOCP_WINDOWS_H
+#define GRPC_INTERNAL_CORE_IOMGR_IOCP_WINDOWS_H
 
 #include <windows.h>
 #include <grpc/support/sync.h>
@@ -49,4 +49,4 @@
 void grpc_socket_notify_on_read(grpc_winsocket *, void(*cb)(void *, int success),
                                 void *opaque);
 
-#endif /* __GRPC_INTERNAL_IOMGR_IOCP_WINDOWS_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_IOCP_WINDOWS_H */
diff --git a/src/core/iomgr/iomgr.h b/src/core/iomgr/iomgr.h
index 18a7d15..1f5d23f 100644
--- a/src/core/iomgr/iomgr.h
+++ b/src/core/iomgr/iomgr.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_IOMGR_H__
-#define __GRPC_INTERNAL_IOMGR_IOMGR_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_IOMGR_H
+#define GRPC_INTERNAL_CORE_IOMGR_IOMGR_H
 
 /* gRPC Callback definition */
 typedef void (*grpc_iomgr_cb_func)(void *arg, int success);
@@ -44,4 +44,4 @@
    and causes the invocation of a callback at some point in the future */
 void grpc_iomgr_add_callback(grpc_iomgr_cb_func cb, void *cb_arg);
 
-#endif /* __GRPC_INTERNAL_IOMGR_IOMGR_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_H */
diff --git a/src/core/iomgr/iomgr_internal.h b/src/core/iomgr/iomgr_internal.h
index 7f29f44..0792325 100644
--- a/src/core/iomgr/iomgr_internal.h
+++ b/src/core/iomgr/iomgr_internal.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_IOMGR_INTERNAL_H_
-#define __GRPC_INTERNAL_IOMGR_IOMGR_INTERNAL_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_IOMGR_INTERNAL_H
+#define GRPC_INTERNAL_CORE_IOMGR_IOMGR_INTERNAL_H
 
 #include "src/core/iomgr/iomgr.h"
 #include "src/core/iomgr/iomgr_internal.h"
@@ -48,4 +48,4 @@
 void grpc_iomgr_platform_init(void);
 void grpc_iomgr_platform_shutdown(void);
 
-#endif /* __GRPC_INTERNAL_IOMGR_IOMGR_INTERNAL_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_INTERNAL_H */
diff --git a/src/core/iomgr/iomgr_posix.h b/src/core/iomgr/iomgr_posix.h
index f9e9b3d..a404f64 100644
--- a/src/core/iomgr/iomgr_posix.h
+++ b/src/core/iomgr/iomgr_posix.h
@@ -31,12 +31,12 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_IOMGR_POSIX_H_
-#define __GRPC_INTERNAL_IOMGR_IOMGR_POSIX_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_IOMGR_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_IOMGR_POSIX_H
 
 #include "src/core/iomgr/iomgr_internal.h"
 
 void grpc_pollset_global_init(void);
 void grpc_pollset_global_shutdown(void);
 
-#endif /* __GRPC_INTERNAL_IOMGR_IOMGR_POSIX_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_IOMGR_POSIX_H */
diff --git a/src/core/iomgr/pollset.h b/src/core/iomgr/pollset.h
index c26947f..067af87 100644
--- a/src/core/iomgr/pollset.h
+++ b/src/core/iomgr/pollset.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_H_
-#define __GRPC_INTERNAL_IOMGR_POLLSET_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_POLLSET_H
+#define GRPC_INTERNAL_CORE_IOMGR_POLLSET_H
 
 #include <grpc/support/port_platform.h>
 #include <grpc/support/time.h>
@@ -71,4 +71,4 @@
    Requires GRPC_POLLSET_MU(pollset) locked. */
 void grpc_pollset_kick(grpc_pollset *pollset);
 
-#endif /* __GRPC_INTERNAL_IOMGR_POLLSET_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_H */
diff --git a/src/core/iomgr/pollset_kick.h b/src/core/iomgr/pollset_kick.h
index b224177..cc9357d 100644
--- a/src/core/iomgr/pollset_kick.h
+++ b/src/core/iomgr/pollset_kick.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_KICK_H_
-#define __GRPC_INTERNAL_IOMGR_POLLSET_KICK_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_H
+#define GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_H
 
 #include <grpc/support/port_platform.h>
 
@@ -71,4 +71,4 @@
 
 void grpc_pollset_kick_kick(grpc_pollset_kick_state *kick_state);
 
-#endif /* __GRPC_INTERNAL_IOMGR_POLLSET_KICK_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_H */
diff --git a/src/core/iomgr/pollset_kick_posix.h b/src/core/iomgr/pollset_kick_posix.h
index 162ae5b..4276991 100644
--- a/src/core/iomgr/pollset_kick_posix.h
+++ b/src/core/iomgr/pollset_kick_posix.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_KICK_POSIX_H_
-#define __GRPC_INTERNAL_IOMGR_POLLSET_KICK_POSIX_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_POSIX_H
 
 #include "src/core/iomgr/wakeup_fd_posix.h"
 #include <grpc/support/sync.h>
@@ -48,4 +48,4 @@
   struct grpc_kick_fd_info *fd_info;
 } grpc_pollset_kick_state;
 
-#endif  /* __GRPC_INTERNALIOMGR_POLLSET_KICK_POSIX_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_POSIX_H */
diff --git a/src/core/iomgr/pollset_kick_windows.h b/src/core/iomgr/pollset_kick_windows.h
index 1053230..3836aa0 100644
--- a/src/core/iomgr/pollset_kick_windows.h
+++ b/src/core/iomgr/pollset_kick_windows.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_KICK_WINDOWS_H_
-#define __GRPC_INTERNAL_IOMGR_POLLSET_KICK_WINDOWS_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_WINDOWS_H
+#define GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_WINDOWS_H
 
 #include <grpc/support/sync.h>
 
@@ -42,4 +42,4 @@
   int unused;
 } grpc_pollset_kick_state;
 
-#endif  /* __GRPC_INTERNALIOMGR_POLLSET_KICK_WINDOWS_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_KICK_WINDOWS_H */
diff --git a/src/core/iomgr/pollset_posix.h b/src/core/iomgr/pollset_posix.h
index 86b6c9f..da843f7 100644
--- a/src/core/iomgr/pollset_posix.h
+++ b/src/core/iomgr/pollset_posix.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_POSIX_H_
-#define __GRPC_INTERNAL_IOMGR_POLLSET_POSIX_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_POLLSET_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_POLLSET_POSIX_H
 
 #include <grpc/support/sync.h>
 
@@ -104,4 +104,4 @@
 void grpc_platform_become_multipoller(grpc_pollset *pollset,
                                       struct grpc_fd **fds, size_t fd_count);
 
-#endif /* __GRPC_INTERNAL_IOMGR_POLLSET_POSIX_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_POSIX_H */
diff --git a/src/core/iomgr/pollset_windows.h b/src/core/iomgr/pollset_windows.h
index 41c193f..266175a 100644
--- a/src/core/iomgr/pollset_windows.h
+++ b/src/core/iomgr/pollset_windows.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_WINDOWS_H_
-#define __GRPC_INTERNAL_IOMGR_POLLSET_WINDOWS_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_POLLSET_WINDOWS_H
+#define GRPC_INTERNAL_CORE_IOMGR_POLLSET_WINDOWS_H
 
 #include <windows.h>
 #include <grpc/support/sync.h>
@@ -53,4 +53,4 @@
 #define GRPC_POLLSET_MU(pollset) (&(pollset)->mu)
 #define GRPC_POLLSET_CV(pollset) (&(pollset)->cv)
 
-#endif /* __GRPC_INTERNAL_IOMGR_POLLSET_WINDOWS_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_POLLSET_WINDOWS_H */
diff --git a/src/core/iomgr/resolve_address.h b/src/core/iomgr/resolve_address.h
index 65432ec..8f1d7a2 100644
--- a/src/core/iomgr/resolve_address.h
+++ b/src/core/iomgr/resolve_address.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_RESOLVE_ADDRESS_H__
-#define __GRPC_INTERNAL_IOMGR_RESOLVE_ADDRESS_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_RESOLVE_ADDRESS_H
+#define GRPC_INTERNAL_CORE_IOMGR_RESOLVE_ADDRESS_H
 
 #include <stddef.h>
 
@@ -66,4 +66,4 @@
 grpc_resolved_addresses *grpc_blocking_resolve_address(
     const char *addr, const char *default_port);
 
-#endif /* __GRPC_INTERNAL_IOMGR_RESOLVE_ADDRESS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_RESOLVE_ADDRESS_H */
diff --git a/src/core/iomgr/sockaddr.h b/src/core/iomgr/sockaddr.h
index a5f7c54..7528db7 100644
--- a/src/core/iomgr/sockaddr.h
+++ b/src/core/iomgr/sockaddr.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_SOCKADDR_H_
-#define __GRPC_INTERNAL_IOMGR_SOCKADDR_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_H
+#define GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_H
 
 #include <grpc/support/port_platform.h>
 
@@ -44,4 +44,4 @@
 #include "src/core/iomgr/sockaddr_posix.h"
 #endif
 
-#endif /* __GRPC_INTERNAL_IOMGR_SOCKADDR_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_H */
diff --git a/src/core/iomgr/sockaddr_posix.h b/src/core/iomgr/sockaddr_posix.h
index 00115e2..2a3d932 100644
--- a/src/core/iomgr/sockaddr_posix.h
+++ b/src/core/iomgr/sockaddr_posix.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_SOCKADDR_POSIX_H_
-#define __GRPC_INTERNAL_IOMGR_SOCKADDR_POSIX_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_POSIX_H
 
 #include <arpa/inet.h>
 #include <sys/socket.h>
@@ -41,4 +41,4 @@
 #include <netdb.h>
 #include <unistd.h>
 
-#endif /* __GRPC_INTERNAL_IOMGR_SOCKADDR_POSIX_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_POSIX_H */
diff --git a/src/core/iomgr/sockaddr_utils.h b/src/core/iomgr/sockaddr_utils.h
index d3a25ad..bdfb834 100644
--- a/src/core/iomgr/sockaddr_utils.h
+++ b/src/core/iomgr/sockaddr_utils.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_SOCKADDR_UTILS_H__
-#define __GRPC_INTERNAL_IOMGR_SOCKADDR_UTILS_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_UTILS_H
+#define GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_UTILS_H
 
 #include "src/core/iomgr/sockaddr.h"
 
@@ -84,4 +84,4 @@
 int grpc_sockaddr_to_string(char **out, const struct sockaddr *addr,
                             int normalize);
 
-#endif /* __GRPC_INTERNAL_IOMGR_SOCKADDR_UTILS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_UTILS_H */
diff --git a/src/core/iomgr/sockaddr_win32.h b/src/core/iomgr/sockaddr_win32.h
index 6ed164c..3a5f27b 100644
--- a/src/core/iomgr/sockaddr_win32.h
+++ b/src/core/iomgr/sockaddr_win32.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_SOCKADDR_WIN32_H_
-#define __GRPC_INTERNAL_IOMGR_SOCKADDR_WIN32_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_WIN32_H
+#define GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_WIN32_H
 
 #include <ws2tcpip.h>
 #include <winsock2.h>
 #include <mswsock.h>
 
-#endif  /* __GRPC_INTERNAL_IOMGR_SOCKADDR_WIN32_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_SOCKADDR_WIN32_H */
diff --git a/src/core/iomgr/socket_utils_posix.h b/src/core/iomgr/socket_utils_posix.h
index b35fe78..c161082 100644
--- a/src/core/iomgr/socket_utils_posix.h
+++ b/src/core/iomgr/socket_utils_posix.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_SOCKET_UTILS_POSIX_H__
-#define __GRPC_INTERNAL_IOMGR_SOCKET_UTILS_POSIX_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_SOCKET_UTILS_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_SOCKET_UTILS_POSIX_H
 
 #include <unistd.h>
 #include <sys/socket.h>
@@ -105,4 +105,4 @@
 int grpc_create_dualstack_socket(const struct sockaddr *addr, int type,
                                  int protocol, grpc_dualstack_mode *dsmode);
 
-#endif /* __GRPC_INTERNAL_IOMGR_SOCKET_UTILS_POSIX_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_SOCKET_UTILS_POSIX_H */
diff --git a/src/core/iomgr/socket_windows.h b/src/core/iomgr/socket_windows.h
index de80e97..d4776ab 100644
--- a/src/core/iomgr/socket_windows.h
+++ b/src/core/iomgr/socket_windows.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_HANDLE_WINDOWS_H__
-#define __GRPC_INTERNAL_IOMGR_HANDLE_WINDOWS_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_SOCKET_WINDOWS_H
+#define GRPC_INTERNAL_CORE_IOMGR_SOCKET_WINDOWS_H
 
 #include <windows.h>
 
@@ -72,4 +72,4 @@
 void grpc_winsocket_shutdown(grpc_winsocket *socket);
 void grpc_winsocket_orphan(grpc_winsocket *socket);
 
-#endif /* __GRPC_INTERNAL_IOMGR_HANDLE_WINDOWS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_SOCKET_WINDOWS_H */
diff --git a/src/core/iomgr/tcp_client.h b/src/core/iomgr/tcp_client.h
index c919c02..2e91497 100644
--- a/src/core/iomgr/tcp_client.h
+++ b/src/core/iomgr/tcp_client.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_TCP_CLIENT_H__
-#define __GRPC_INTERNAL_IOMGR_TCP_CLIENT_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_TCP_CLIENT_H
+#define GRPC_INTERNAL_CORE_IOMGR_TCP_CLIENT_H
 
 #include "src/core/iomgr/endpoint.h"
 #include "src/core/iomgr/sockaddr.h"
@@ -45,4 +45,4 @@
                              void *arg, const struct sockaddr *addr,
                              int addr_len, gpr_timespec deadline);
 
-#endif /* __GRPC_INTERNAL_IOMGR_TCP_CLIENT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_TCP_CLIENT_H */
diff --git a/src/core/iomgr/tcp_posix.h b/src/core/iomgr/tcp_posix.h
index 6ff8770..7e8064b 100644
--- a/src/core/iomgr/tcp_posix.h
+++ b/src/core/iomgr/tcp_posix.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_TCP_POSIX_H__
-#define __GRPC_INTERNAL_IOMGR_TCP_POSIX_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_TCP_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_TCP_POSIX_H
 /*
    Low level TCP "bottom half" implementation, for use by transports built on
    top of a TCP connection.
@@ -53,4 +53,4 @@
    Takes ownership of fd. */
 grpc_endpoint *grpc_tcp_create(grpc_fd *fd, size_t read_slice_size);
 
-#endif /* __GRPC_INTERNAL_IOMGR_TCP_POSIX_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_TCP_POSIX_H */
diff --git a/src/core/iomgr/tcp_server.h b/src/core/iomgr/tcp_server.h
index c1e5f45..68ee85c 100644
--- a/src/core/iomgr/tcp_server.h
+++ b/src/core/iomgr/tcp_server.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_TCP_SERVER_H__
-#define __GRPC_INTERNAL_IOMGR_TCP_SERVER_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_TCP_SERVER_H
+#define GRPC_INTERNAL_CORE_IOMGR_TCP_SERVER_H
 
 #include "src/core/iomgr/endpoint.h"
 
@@ -73,4 +73,4 @@
 
 void grpc_tcp_server_destroy(grpc_tcp_server *server);
 
-#endif /* __GRPC_INTERNAL_IOMGR_TCP_SERVER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_TCP_SERVER_H */
diff --git a/src/core/iomgr/tcp_windows.h b/src/core/iomgr/tcp_windows.h
index 565d42e..4cbc12c 100644
--- a/src/core/iomgr/tcp_windows.h
+++ b/src/core/iomgr/tcp_windows.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_TCP_WINDOWS_H__
-#define __GRPC_INTERNAL_IOMGR_TCP_WINDOWS_H__
+#ifndef GRPC_INTERNAL_CORE_IOMGR_TCP_WINDOWS_H
+#define GRPC_INTERNAL_CORE_IOMGR_TCP_WINDOWS_H
 /*
    Low level TCP "bottom half" implementation, for use by transports built on
    top of a TCP connection.
@@ -54,4 +54,4 @@
 
 int grpc_tcp_prepare_socket(SOCKET sock);
 
-#endif /* __GRPC_INTERNAL_IOMGR_TCP_WINDOWS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_TCP_WINDOWS_H */
diff --git a/src/core/iomgr/time_averaged_stats.h b/src/core/iomgr/time_averaged_stats.h
index e901f3c..13894b2 100644
--- a/src/core/iomgr/time_averaged_stats.h
+++ b/src/core/iomgr/time_averaged_stats.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_TIME_AVERAGED_STATS_H_
-#define __GRPC_INTERNAL_IOMGR_TIME_AVERAGED_STATS_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_TIME_AVERAGED_STATS_H
+#define GRPC_INTERNAL_CORE_IOMGR_TIME_AVERAGED_STATS_H
 
 /* This tracks a time-decaying weighted average.  It works by collecting
    batches of samples and then mixing their average into a time-decaying
@@ -85,4 +85,4 @@
    value. */
 double grpc_time_averaged_stats_update_average(grpc_time_averaged_stats *stats);
 
-#endif /* __GRPC_INTERNAL_IOMGR_TIME_AVERAGED_STATS_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_TIME_AVERAGED_STATS_H */
diff --git a/src/core/iomgr/wakeup_fd_pipe.h b/src/core/iomgr/wakeup_fd_pipe.h
index a2fcde5..aa8f977 100644
--- a/src/core/iomgr/wakeup_fd_pipe.h
+++ b/src/core/iomgr/wakeup_fd_pipe.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_IOMGR_WAKEUP_FD_PIPE_H_
-#define __GRPC_INTERNAL_IOMGR_WAKEUP_FD_PIPE_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_PIPE_H
+#define GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_PIPE_H
 
 #include "src/core/iomgr/wakeup_fd_posix.h"
 
 extern grpc_wakeup_fd_vtable grpc_pipe_wakeup_fd_vtable;
 
-#endif  /* __GRPC_INTERNAL_IOMGR_WAKEUP_FD_PIPE_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_PIPE_H */
diff --git a/src/core/iomgr/wakeup_fd_posix.h b/src/core/iomgr/wakeup_fd_posix.h
index 75bb9fc..1b0ff70 100644
--- a/src/core/iomgr/wakeup_fd_posix.h
+++ b/src/core/iomgr/wakeup_fd_posix.h
@@ -59,8 +59,8 @@
  * 2. If the polling thread was awakened by a wakeup_fd event, call
  *    grpc_wakeup_fd_consume_wakeup() on it.
  */
-#ifndef __GRPC_INTERNAL_IOMGR_WAKEUP_FD_POSIX_H_
-#define __GRPC_INTERNAL_IOMGR_WAKEUP_FD_POSIX_H_
+#ifndef GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_POSIX_H
+#define GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_POSIX_H
 
 void grpc_wakeup_fd_global_init(void);
 void grpc_wakeup_fd_global_destroy(void);
@@ -96,4 +96,4 @@
  * wakeup_fd_nospecial.c if no such implementation exists. */
 extern const grpc_wakeup_fd_vtable grpc_specialized_wakeup_fd_vtable;
 
-#endif /* __GRPC_INTERNAL_IOMGR_WAKEUP_FD_POSIX_H_ */
+#endif  /* GRPC_INTERNAL_CORE_IOMGR_WAKEUP_FD_POSIX_H */
diff --git a/src/core/json/json.h b/src/core/json/json.h
index dc519e9..69cbac1 100644
--- a/src/core/json/json.h
+++ b/src/core/json/json.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SRC_CORE_JSON_JSON_H__
-#define __GRPC_SRC_CORE_JSON_JSON_H__
+#ifndef GRPC_INTERNAL_CORE_JSON_JSON_H
+#define GRPC_INTERNAL_CORE_JSON_JSON_H
 
 #include <stdlib.h>
 
@@ -85,4 +85,4 @@
 grpc_json* grpc_json_create(grpc_json_type type);
 void grpc_json_destroy(grpc_json* json);
 
-#endif /* __GRPC_SRC_CORE_JSON_JSON_H__ */
+#endif  /* GRPC_INTERNAL_CORE_JSON_JSON_H */
diff --git a/src/core/json/json_common.h b/src/core/json/json_common.h
index 60763cc..84bf375 100644
--- a/src/core/json/json_common.h
+++ b/src/core/json/json_common.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SRC_CORE_JSON_JSON_COMMON_H__
-#define __GRPC_SRC_CORE_JSON_JSON_COMMON_H__
+#ifndef GRPC_INTERNAL_CORE_JSON_JSON_COMMON_H
+#define GRPC_INTERNAL_CORE_JSON_JSON_COMMON_H
 
 /* The various json types. */
 typedef enum {
@@ -46,4 +46,4 @@
   GRPC_JSON_TOP_LEVEL
 } grpc_json_type;
 
-#endif /* __GRPC_SRC_CORE_JSON_JSON_COMMON_H__ */
+#endif  /* GRPC_INTERNAL_CORE_JSON_JSON_COMMON_H */
diff --git a/src/core/json/json_reader.h b/src/core/json/json_reader.h
index f7f5912..b1a5ace 100644
--- a/src/core/json/json_reader.h
+++ b/src/core/json/json_reader.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SRC_CORE_JSON_JSON_READER_H__
-#define __GRPC_SRC_CORE_JSON_JSON_READER_H__
+#ifndef GRPC_INTERNAL_CORE_JSON_JSON_READER_H
+#define GRPC_INTERNAL_CORE_JSON_JSON_READER_H
 
 #include <grpc/support/port_platform.h>
 #include "src/core/json/json_common.h"
@@ -157,4 +157,4 @@
  */
 int grpc_json_reader_is_complete(grpc_json_reader* reader);
 
-#endif /* __GRPC_SRC_CORE_JSON_JSON_READER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_JSON_JSON_READER_H */
diff --git a/src/core/json/json_writer.h b/src/core/json/json_writer.h
index 5d5d089..dfa61a5 100644
--- a/src/core/json/json_writer.h
+++ b/src/core/json/json_writer.h
@@ -43,8 +43,8 @@
  * a valid UTF-8 string overall.
  */
 
-#ifndef __GRPC_SRC_CORE_JSON_JSON_WRITER_H__
-#define __GRPC_SRC_CORE_JSON_JSON_WRITER_H__
+#ifndef GRPC_INTERNAL_CORE_JSON_JSON_WRITER_H
+#define GRPC_INTERNAL_CORE_JSON_JSON_WRITER_H
 
 #include <stdlib.h>
 
@@ -90,4 +90,4 @@
 /* Sets a string value. It'll be escaped, and utf-8 validated. */
 void grpc_json_writer_value_string(grpc_json_writer* writer, const char* string);
 
-#endif /* __GRPC_SRC_CORE_JSON_JSON_WRITER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_JSON_JSON_WRITER_H */
diff --git a/src/core/security/auth.h b/src/core/security/auth.h
index fee75c4..08dc415 100644
--- a/src/core/security/auth.h
+++ b/src/core/security/auth.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SECURITY_AUTH_H__
-#define __GRPC_INTERNAL_SECURITY_AUTH_H__
+#ifndef GRPC_INTERNAL_CORE_SECURITY_AUTH_H
+#define GRPC_INTERNAL_CORE_SECURITY_AUTH_H
 
 #include "src/core/channel/channel_stack.h"
 
 extern const grpc_channel_filter grpc_client_auth_filter;
 
-#endif /* __GRPC_INTERNAL_SECURITY_AUTH_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SECURITY_AUTH_H */
diff --git a/src/core/security/base64.h b/src/core/security/base64.h
index 0eb69d0..6a7cd8e 100644
--- a/src/core/security/base64.h
+++ b/src/core/security/base64.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SECURITY_BASE64_H_
-#define __GRPC_INTERNAL_SECURITY_BASE64_H_
+#ifndef GRPC_INTERNAL_CORE_SECURITY_BASE64_H
+#define GRPC_INTERNAL_CORE_SECURITY_BASE64_H
 
 #include <grpc/support/slice.h>
 
@@ -45,4 +45,4 @@
    slice in case of failure. */
 gpr_slice grpc_base64_decode(const char *b64, int url_safe);
 
-#endif /* __GRPC_INTERNAL_SECURITY_BASE64_H_ */
+#endif  /* GRPC_INTERNAL_CORE_SECURITY_BASE64_H */
diff --git a/src/core/security/credentials.h b/src/core/security/credentials.h
index 0a0074c..454e668 100644
--- a/src/core/security/credentials.h
+++ b/src/core/security/credentials.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SECURITY_CREDENTIALS_H__
-#define __GRPC_INTERNAL_SECURITY_CREDENTIALS_H__
+#ifndef GRPC_INTERNAL_CORE_SECURITY_CREDENTIALS_H
+#define GRPC_INTERNAL_CORE_SECURITY_CREDENTIALS_H
 
 #include "src/core/transport/stream_op.h"
 #include <grpc/grpc.h>
@@ -160,4 +160,4 @@
 const grpc_ssl_server_config *grpc_ssl_server_credentials_get_config(
     const grpc_server_credentials *ssl_creds);
 
-#endif /* __GRPC_INTERNAL_SECURITY_CREDENTIALS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SECURITY_CREDENTIALS_H */
diff --git a/src/core/security/json_token.h b/src/core/security/json_token.h
index 1ef9682..029ede3 100644
--- a/src/core/security/json_token.h
+++ b/src/core/security/json_token.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SECURITY_JSON_TOKEN_H_
-#define __GRPC_INTERNAL_SECURITY_JSON_TOKEN_H_
+#ifndef GRPC_INTERNAL_CORE_SECURITY_JSON_TOKEN_H
+#define GRPC_INTERNAL_CORE_SECURITY_JSON_TOKEN_H
 
 #include <grpc/support/slice.h>
 #include <openssl/rsa.h>
@@ -79,4 +79,4 @@
 void grpc_jwt_encode_and_sign_set_override(
     grpc_jwt_encode_and_sign_override func);
 
-#endif /* __GRPC_INTERNAL_SECURITY_JSON_TOKEN_H_ */
+#endif  /* GRPC_INTERNAL_CORE_SECURITY_JSON_TOKEN_H */
diff --git a/src/core/security/secure_endpoint.h b/src/core/security/secure_endpoint.h
index 82ba408..808889b 100644
--- a/src/core/security/secure_endpoint.h
+++ b/src/core/security/secure_endpoint.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_ENDPOINT_SECURE_ENDPOINT_H__
-#define __GRPC_INTERNAL_ENDPOINT_SECURE_ENDPOINT_H__
+#ifndef GRPC_INTERNAL_CORE_SECURITY_SECURE_ENDPOINT_H
+#define GRPC_INTERNAL_CORE_SECURITY_SECURE_ENDPOINT_H
 
 #include "src/core/iomgr/endpoint.h"
 #include <grpc/support/slice.h>
@@ -44,4 +44,4 @@
     struct tsi_frame_protector *protector, grpc_endpoint *to_wrap,
     gpr_slice *leftover_slices, size_t leftover_nslices);
 
-#endif /* __GRPC_INTERNAL_ENDPOINT_SECURE_ENDPOINT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SECURITY_SECURE_ENDPOINT_H */
diff --git a/src/core/security/secure_transport_setup.h b/src/core/security/secure_transport_setup.h
index 21f41fd..e1f8ed7 100644
--- a/src/core/security/secure_transport_setup.h
+++ b/src/core/security/secure_transport_setup.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SECURITY_SECURE_TRANSPORT_SETUP_H__
-#define __GRPC_INTERNAL_SECURITY_SECURE_TRANSPORT_SETUP_H__
+#ifndef GRPC_INTERNAL_CORE_SECURITY_SECURE_TRANSPORT_SETUP_H
+#define GRPC_INTERNAL_CORE_SECURITY_SECURE_TRANSPORT_SETUP_H
 
 #include "src/core/iomgr/endpoint.h"
 #include "src/core/security/security_context.h"
@@ -50,4 +50,4 @@
                                  grpc_secure_transport_setup_done_cb cb,
                                  void *user_data);
 
-#endif /* __GRPC_INTERNAL_SECURITY_SECURE_TRANSPORT_SETUP_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SECURITY_SECURE_TRANSPORT_SETUP_H */
diff --git a/src/core/security/security_context.h b/src/core/security/security_context.h
index 40e2dac..0b5821c 100644
--- a/src/core/security/security_context.h
+++ b/src/core/security/security_context.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SECURITY_SECURITY_CONTEXT_H__
-#define __GRPC_INTERNAL_SECURITY_SECURITY_CONTEXT_H__
+#ifndef GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H
+#define GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H
 
 #include <grpc/grpc_security.h>
 #include "src/core/iomgr/endpoint.h"
@@ -212,4 +212,4 @@
                                                 const grpc_channel_args *args,
                                                 grpc_security_context *ctx);
 
-#endif /* __GRPC_INTERNAL_SECURITY_SECURITY_CONTEXT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SECURITY_SECURITY_CONTEXT_H */
diff --git a/src/core/statistics/census_interface.h b/src/core/statistics/census_interface.h
index 0bb0a9f..eb4349c 100644
--- a/src/core/statistics/census_interface.h
+++ b/src/core/statistics/census_interface.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_STATISTICS_CENSUS_INTERFACE_H__
-#define __GRPC_INTERNAL_STATISTICS_CENSUS_INTERFACE_H__
+#ifndef GRPC_INTERNAL_CORE_STATISTICS_CENSUS_INTERFACE_H
+#define GRPC_INTERNAL_CORE_STATISTICS_CENSUS_INTERFACE_H
 
 #include <grpc/support/port_platform.h>
 
@@ -73,4 +73,4 @@
 /* Ends tracing. Calling this function will invalidate the input op_id. */
 void census_tracing_end_op(census_op_id op_id);
 
-#endif /* __GRPC_INTERNAL_STATISTICS_CENSUS_INTERFACE_H__ */
+#endif  /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_INTERFACE_H */
diff --git a/src/core/statistics/census_log.h b/src/core/statistics/census_log.h
index 01fd63a..06869b7 100644
--- a/src/core/statistics/census_log.h
+++ b/src/core/statistics/census_log.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_STATISTICS_LOG_H__
-#define __GRPC_INTERNAL_STATISTICS_LOG_H__
+#ifndef GRPC_INTERNAL_CORE_STATISTICS_CENSUS_LOG_H
+#define GRPC_INTERNAL_CORE_STATISTICS_CENSUS_LOG_H
 
 #include <stddef.h>
 
@@ -88,4 +88,4 @@
    out-of-space. */
 int census_log_out_of_space_count(void);
 
-#endif /* __GRPC_INTERNAL_STATISTICS_LOG_H__ */
+#endif  /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_LOG_H */
diff --git a/src/core/statistics/census_rpc_stats.h b/src/core/statistics/census_rpc_stats.h
index 942de81..9336dce 100644
--- a/src/core/statistics/census_rpc_stats.h
+++ b/src/core/statistics/census_rpc_stats.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_STATISTICS_CENSUS_RPC_STATS_H__
-#define __GRPC_INTERNAL_STATISTICS_CENSUS_RPC_STATS_H__
+#ifndef GRPC_INTERNAL_CORE_STATISTICS_CENSUS_RPC_STATS_H
+#define GRPC_INTERNAL_CORE_STATISTICS_CENSUS_RPC_STATS_H
 
 #include "src/core/statistics/census_interface.h"
 #include <grpc/support/port_platform.h>
@@ -98,4 +98,4 @@
 }
 #endif
 
-#endif /* __GRPC_INTERNAL_STATISTICS_CENSUS_RPC_STATS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_RPC_STATS_H */
diff --git a/src/core/statistics/census_tracing.h b/src/core/statistics/census_tracing.h
index 51aa578..a4494b5 100644
--- a/src/core/statistics/census_tracing.h
+++ b/src/core/statistics/census_tracing.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_STATISTICS_CENSUS_TRACING_H_
-#define __GRPC_INTERNAL_STATISTICS_CENSUS_TRACING_H_
+#ifndef GRPC_INTERNAL_CORE_STATISTICS_CENSUS_TRACING_H
+#define GRPC_INTERNAL_CORE_STATISTICS_CENSUS_TRACING_H
 
 #include <grpc/support/time.h>
 #include "src/core/statistics/census_rpc_stats.h"
@@ -93,4 +93,4 @@
 }
 #endif
 
-#endif /* __GRPC_INTERNAL_STATISTICS_CENSUS_TRACING_H_ */
+#endif  /* GRPC_INTERNAL_CORE_STATISTICS_CENSUS_TRACING_H */
diff --git a/src/core/statistics/hash_table.h b/src/core/statistics/hash_table.h
index 2c2386d..7bcb4bc 100644
--- a/src/core/statistics/hash_table.h
+++ b/src/core/statistics/hash_table.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_STATISTICS_HASH_TABLE_H_
-#define __GRPC_INTERNAL_STATISTICS_HASH_TABLE_H_
+#ifndef GRPC_INTERNAL_CORE_STATISTICS_HASH_TABLE_H
+#define GRPC_INTERNAL_CORE_STATISTICS_HASH_TABLE_H
 
 #include <stddef.h>
 
@@ -128,4 +128,4 @@
    should not invalidate data entries. */
 gpr_uint64 census_ht_for_all(const census_ht* ht, census_ht_itr_cb);
 
-#endif /* __GRPC_INTERNAL_STATISTICS_HASH_TABLE_H_ */
+#endif  /* GRPC_INTERNAL_CORE_STATISTICS_HASH_TABLE_H */
diff --git a/src/core/statistics/window_stats.h b/src/core/statistics/window_stats.h
index 98f8dac..d733d8d 100644
--- a/src/core/statistics/window_stats.h
+++ b/src/core/statistics/window_stats.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_STATISTICS_WINDOW_STATS_H_
-#define __GRPC_INTERNAL_STATISTICS_WINDOW_STATS_H_
+#ifndef GRPC_INTERNAL_CORE_STATISTICS_WINDOW_STATS_H
+#define GRPC_INTERNAL_CORE_STATISTICS_WINDOW_STATS_H
 
 #include <grpc/support/time.h>
 
@@ -170,4 +170,4 @@
    assertion failure). This function is thread-compatible. */
 void census_window_stats_destroy(struct census_window_stats* wstats);
 
-#endif /* __GRPC_INTERNAL_STATISTICS_WINDOW_STATS_H_ */
+#endif  /* GRPC_INTERNAL_CORE_STATISTICS_WINDOW_STATS_H */
diff --git a/src/core/support/env.h b/src/core/support/env.h
index 0c6091b..4f2e394 100644
--- a/src/core/support/env.h
+++ b/src/core/support/env.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_ENV_H__
-#define __GRPC_SUPPORT_ENV_H__
+#ifndef GRPC_INTERNAL_CORE_SUPPORT_ENV_H
+#define GRPC_INTERNAL_CORE_SUPPORT_ENV_H
 
 #include <stdio.h>
 
@@ -57,4 +57,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_ENV_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SUPPORT_ENV_H */
diff --git a/src/core/support/file.h b/src/core/support/file.h
index 600850e..ee6ca7b 100644
--- a/src/core/support/file.h
+++ b/src/core/support/file.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_FILE_H__
-#define __GRPC_SUPPORT_FILE_H__
+#ifndef GRPC_INTERNAL_CORE_SUPPORT_FILE_H
+#define GRPC_INTERNAL_CORE_SUPPORT_FILE_H
 
 #include <stdio.h>
 
@@ -58,4 +58,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_FILE_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SUPPORT_FILE_H */
diff --git a/src/core/support/log_posix.c b/src/core/support/log_posix.c
index 8f85791..afca792 100644
--- a/src/core/support/log_posix.c
+++ b/src/core/support/log_posix.c
@@ -64,7 +64,7 @@
   } else {
     message = allocated = gpr_malloc(ret + 1);
     va_start(args, format);
-    vsnprintf(message, ret, format, args);
+    vsnprintf(message, ret + 1, format, args);
     va_end(args);
   }
   gpr_log_message(file, line, severity, message);
diff --git a/src/core/support/murmur_hash.h b/src/core/support/murmur_hash.h
index 06c0c56..85ab2fe 100644
--- a/src/core/support/murmur_hash.h
+++ b/src/core/support/murmur_hash.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SUPPORT_MURMUR_HASH_H__
-#define __GRPC_INTERNAL_SUPPORT_MURMUR_HASH_H__
+#ifndef GRPC_INTERNAL_CORE_SUPPORT_MURMUR_HASH_H
+#define GRPC_INTERNAL_CORE_SUPPORT_MURMUR_HASH_H
 
 #include <grpc/support/port_platform.h>
 
@@ -41,4 +41,4 @@
 /* compute the hash of key (length len) */
 gpr_uint32 gpr_murmur_hash3(const void *key, size_t len, gpr_uint32 seed);
 
-#endif /* __GRPC_INTERNAL_SUPPORT_MURMUR_HASH_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SUPPORT_MURMUR_HASH_H */
diff --git a/src/core/support/string.h b/src/core/support/string.h
index eaa1826..faf3342 100644
--- a/src/core/support/string.h
+++ b/src/core/support/string.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_STRING_H__
-#define __GRPC_SUPPORT_STRING_H__
+#ifndef GRPC_INTERNAL_CORE_SUPPORT_STRING_H
+#define GRPC_INTERNAL_CORE_SUPPORT_STRING_H
 
 #include <stddef.h>
 
@@ -106,4 +106,4 @@
 }
 #endif
 
-#endif /* __GRPC_SUPPORT_STRING_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SUPPORT_STRING_H */
diff --git a/src/core/support/string_win32.h b/src/core/support/string_win32.h
index 5dbb40d..0bc3247 100644
--- a/src/core/support/string_win32.h
+++ b/src/core/support/string_win32.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_SUPPORT_STRING_WIN32_H__
-#define __GRPC_SUPPORT_STRING_WIN32_H__
+#ifndef GRPC_INTERNAL_CORE_SUPPORT_STRING_WIN32_H
+#define GRPC_INTERNAL_CORE_SUPPORT_STRING_WIN32_H
 
 #include <grpc/support/port_platform.h>
 
@@ -46,4 +46,4 @@
 
 #endif  /* GPR_WIN32 */
 
-#endif /* __GRPC_SUPPORT_STRING_WIN32_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SUPPORT_STRING_WIN32_H */
diff --git a/src/core/support/thd_internal.h b/src/core/support/thd_internal.h
index 0fb1447..4683c37 100644
--- a/src/core/support/thd_internal.h
+++ b/src/core/support/thd_internal.h
@@ -31,9 +31,9 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SUPPORT_THD_INTERNAL_H__
-#define __GRPC_INTERNAL_SUPPORT_THD_INTERNAL_H__
+#ifndef GRPC_INTERNAL_CORE_SUPPORT_THD_INTERNAL_H
+#define GRPC_INTERNAL_CORE_SUPPORT_THD_INTERNAL_H
 
 /* Internal interfaces between modules within the gpr support library.  */
 
-#endif /* __GRPC_INTERNAL_SUPPORT_THD_INTERNAL_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SUPPORT_THD_INTERNAL_H */
diff --git a/src/core/surface/byte_buffer_queue.h b/src/core/surface/byte_buffer_queue.h
index 9d3b525..32c57f8 100644
--- a/src/core/surface/byte_buffer_queue.h
+++ b/src/core/surface/byte_buffer_queue.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_BYTE_BUFFER_QUEUE_H__
-#define __GRPC_INTERNAL_SURFACE_BYTE_BUFFER_QUEUE_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_BYTE_BUFFER_QUEUE_H
+#define GRPC_INTERNAL_CORE_SURFACE_BYTE_BUFFER_QUEUE_H
 
 #include <grpc/byte_buffer.h>
 
@@ -57,4 +57,4 @@
 int grpc_bbq_empty(grpc_byte_buffer_queue *q);
 void grpc_bbq_push(grpc_byte_buffer_queue *q, grpc_byte_buffer *bb);
 
-#endif  /* __GRPC_INTERNAL_SURFACE_BYTE_BUFFER_QUEUE_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_BYTE_BUFFER_QUEUE_H */
diff --git a/src/core/surface/call.h b/src/core/surface/call.h
index dd3ad12..cb81cb5 100644
--- a/src/core/surface/call.h
+++ b/src/core/surface/call.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_CALL_H__
-#define __GRPC_INTERNAL_SURFACE_CALL_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_CALL_H
+#define GRPC_INTERNAL_CORE_SURFACE_CALL_H
 
 #include "src/core/channel/channel_stack.h"
 #include "src/core/channel/metadata_buffer.h"
@@ -119,4 +119,4 @@
 /* Given the top call_element, get the call object. */
 grpc_call *grpc_call_from_top_element(grpc_call_element *surface_element);
 
-#endif /* __GRPC_INTERNAL_SURFACE_CALL_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_CALL_H */
diff --git a/src/core/surface/channel.h b/src/core/surface/channel.h
index 6bdfd47..d3e5118 100644
--- a/src/core/surface/channel.h
+++ b/src/core/surface/channel.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_CHANNEL_H__
-#define __GRPC_INTERNAL_SURFACE_CHANNEL_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_CHANNEL_H
+#define GRPC_INTERNAL_CORE_SURFACE_CHANNEL_H
 
 #include "src/core/channel/channel_stack.h"
 
@@ -50,4 +50,4 @@
 void grpc_channel_internal_ref(grpc_channel *channel);
 void grpc_channel_internal_unref(grpc_channel *channel);
 
-#endif /* __GRPC_INTERNAL_SURFACE_CHANNEL_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_CHANNEL_H */
diff --git a/src/core/surface/client.h b/src/core/surface/client.h
index 06ce8f6..9db2ccf 100644
--- a/src/core/surface/client.h
+++ b/src/core/surface/client.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_CLIENT_H__
-#define __GRPC_INTERNAL_SURFACE_CLIENT_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_CLIENT_H
+#define GRPC_INTERNAL_CORE_SURFACE_CLIENT_H
 
 #include "src/core/channel/channel_stack.h"
 
 extern const grpc_channel_filter grpc_client_surface_filter;
 
-#endif /* __GRPC_INTERNAL_SURFACE_CLIENT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_CLIENT_H */
diff --git a/src/core/surface/completion_queue.h b/src/core/surface/completion_queue.h
index a7688b8..3054264 100644
--- a/src/core/surface/completion_queue.h
+++ b/src/core/surface/completion_queue.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_COMPLETION_QUEUE_H__
-#define __GRPC_INTERNAL_SURFACE_COMPLETION_QUEUE_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_COMPLETION_QUEUE_H
+#define GRPC_INTERNAL_CORE_SURFACE_COMPLETION_QUEUE_H
 
 /* Internal API for completion channels */
 
@@ -114,4 +114,4 @@
 
 grpc_pollset *grpc_cq_pollset(grpc_completion_queue *cc);
 
-#endif /* __GRPC_INTERNAL_SURFACE_COMPLETION_QUEUE_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_COMPLETION_QUEUE_H */
diff --git a/src/core/surface/event_string.h b/src/core/surface/event_string.h
index d9b1e4e..e8a8f93 100644
--- a/src/core/surface/event_string.h
+++ b/src/core/surface/event_string.h
@@ -31,12 +31,12 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_EVENT_STRING_H__
-#define __GRPC_INTERNAL_SURFACE_EVENT_STRING_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_EVENT_STRING_H
+#define GRPC_INTERNAL_CORE_SURFACE_EVENT_STRING_H
 
 #include <grpc/grpc.h>
 
 /* Returns a string describing an event. Must be later freed with gpr_free() */
 char *grpc_event_string(grpc_event *ev);
 
-#endif /* __GRPC_INTERNAL_SURFACE_EVENT_STRING_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_EVENT_STRING_H */
diff --git a/src/core/surface/server.h b/src/core/surface/server.h
index 5ae59b2..e33f69b 100644
--- a/src/core/surface/server.h
+++ b/src/core/surface/server.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_SERVER_H__
-#define __GRPC_INTERNAL_SURFACE_SERVER_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_SERVER_H
+#define GRPC_INTERNAL_CORE_SURFACE_SERVER_H
 
 #include "src/core/channel/channel_stack.h"
 #include <grpc/grpc.h>
@@ -60,4 +60,4 @@
 
 const grpc_channel_args *grpc_server_get_channel_args(grpc_server *server);
 
-#endif /* __GRPC_INTERNAL_SURFACE_SERVER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_SERVER_H */
diff --git a/src/core/surface/surface_trace.h b/src/core/surface/surface_trace.h
index 4d478d6..50071ee 100644
--- a/src/core/surface/surface_trace.h
+++ b/src/core/surface/surface_trace.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_SURFACE_SURFACE_TRACE_H__
-#define __GRPC_INTERNAL_SURFACE_SURFACE_TRACE_H__
+#ifndef GRPC_INTERNAL_CORE_SURFACE_SURFACE_TRACE_H
+#define GRPC_INTERNAL_CORE_SURFACE_SURFACE_TRACE_H
 
 #include "src/core/debug/trace.h"
 #include <grpc/support/log.h>
@@ -44,4 +44,4 @@
     gpr_free(_ev);                                      \
   }
 
-#endif /* __GRPC_INTERNAL_SURFACE_SURFACE_TRACE_H__ */
+#endif  /* GRPC_INTERNAL_CORE_SURFACE_SURFACE_TRACE_H */
diff --git a/src/core/transport/chttp2/alpn.h b/src/core/transport/chttp2/alpn.h
index 796f514..fcbefc0 100644
--- a/src/core/transport/chttp2/alpn.h
+++ b/src/core/transport/chttp2/alpn.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_ALPN_H_
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_ALPN_H_
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_ALPN_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_ALPN_H
 
 #include <string.h>
 
@@ -46,4 +46,4 @@
  * grpc_chttp2_num_alpn_versions()) */
 const char *grpc_chttp2_get_alpn_version_index(size_t i);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_ALPN_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_ALPN_H */
diff --git a/src/core/transport/chttp2/bin_encoder.h b/src/core/transport/chttp2/bin_encoder.h
index 2368fdd..9c88ac9 100644
--- a/src/core/transport/chttp2/bin_encoder.h
+++ b/src/core/transport/chttp2/bin_encoder.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_BIN_ENCODER_H_
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_BIN_ENCODER_H_
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_BIN_ENCODER_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_BIN_ENCODER_H
 
 #include <grpc/support/slice.h>
 
@@ -53,4 +53,4 @@
 
 int grpc_is_binary_header(const char *key, size_t length);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_BIN_ENCODER_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_BIN_ENCODER_H */
diff --git a/src/core/transport/chttp2/frame.h b/src/core/transport/chttp2/frame.h
index 733dd5e..fbb9419 100644
--- a/src/core/transport/chttp2/frame.h
+++ b/src/core/transport/chttp2/frame.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_H
 
 #include <grpc/support/port_platform.h>
 #include <grpc/support/slice.h>
@@ -77,4 +77,4 @@
 #define GRPC_CHTTP2_DATA_FLAG_PADDED 8
 #define GRPC_CHTTP2_FLAG_HAS_PRIORITY 0x20
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_H */
diff --git a/src/core/transport/chttp2/frame_data.h b/src/core/transport/chttp2/frame_data.h
index 4d05a5f..24e557a 100644
--- a/src/core/transport/chttp2/frame_data.h
+++ b/src/core/transport/chttp2/frame_data.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_DATA_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_DATA_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_DATA_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_DATA_H
 
 /* Parser for GRPC streams embedded in DATA frames */
 
@@ -77,4 +77,4 @@
 /* create a slice with an empty data frame and is_last set */
 gpr_slice grpc_chttp2_data_frame_create_empty_close(gpr_uint32 id);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_DATA_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_DATA_H */
diff --git a/src/core/transport/chttp2/frame_goaway.h b/src/core/transport/chttp2/frame_goaway.h
index 9ccef27..7638891 100644
--- a/src/core/transport/chttp2/frame_goaway.h
+++ b/src/core/transport/chttp2/frame_goaway.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_GOAWAY_H_
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_GOAWAY_H_
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_GOAWAY_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_GOAWAY_H
 
 #include "src/core/transport/chttp2/frame.h"
 #include <grpc/support/port_platform.h>
@@ -71,4 +71,4 @@
                                gpr_slice debug_data,
                                gpr_slice_buffer *slice_buffer);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_GOAWAY_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_GOAWAY_H */
diff --git a/src/core/transport/chttp2/frame_ping.h b/src/core/transport/chttp2/frame_ping.h
index d9d6f7e..11d38b8 100644
--- a/src/core/transport/chttp2/frame_ping.h
+++ b/src/core/transport/chttp2/frame_ping.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_PING_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_PING_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_PING_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_PING_H
 
 #include <grpc/support/slice.h>
 #include "src/core/transport/chttp2/frame.h"
@@ -50,4 +50,4 @@
 grpc_chttp2_parse_error grpc_chttp2_ping_parser_parse(
     void *parser, grpc_chttp2_parse_state *state, gpr_slice slice, int is_last);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_PING_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_PING_H */
diff --git a/src/core/transport/chttp2/frame_rst_stream.h b/src/core/transport/chttp2/frame_rst_stream.h
index 83fc380..2d3ee18 100644
--- a/src/core/transport/chttp2/frame_rst_stream.h
+++ b/src/core/transport/chttp2/frame_rst_stream.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_RST_STREAM_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_RST_STREAM_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_RST_STREAM_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_RST_STREAM_H
 
 #include <grpc/support/slice.h>
 
 gpr_slice grpc_chttp2_rst_stream_create(gpr_uint32 stream_id, gpr_uint32 code);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_RST_STREAM_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_RST_STREAM_H */
diff --git a/src/core/transport/chttp2/frame_settings.h b/src/core/transport/chttp2/frame_settings.h
index 6cde2c6..1876563 100644
--- a/src/core/transport/chttp2/frame_settings.h
+++ b/src/core/transport/chttp2/frame_settings.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_SETTINGS_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_SETTINGS_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_SETTINGS_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_SETTINGS_H
 
 #include <grpc/support/port_platform.h>
 #include <grpc/support/slice.h>
@@ -96,4 +96,4 @@
 grpc_chttp2_parse_error grpc_chttp2_settings_parser_parse(
     void *parser, grpc_chttp2_parse_state *state, gpr_slice slice, int is_last);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_SETTINGS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_SETTINGS_H */
diff --git a/src/core/transport/chttp2/frame_window_update.h b/src/core/transport/chttp2/frame_window_update.h
index 093263d..85475a8 100644
--- a/src/core/transport/chttp2/frame_window_update.h
+++ b/src/core/transport/chttp2/frame_window_update.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_WINDOW_UPDATE_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_WINDOW_UPDATE_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_WINDOW_UPDATE_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_WINDOW_UPDATE_H
 
 #include <grpc/support/slice.h>
 #include "src/core/transport/chttp2/frame.h"
@@ -52,4 +52,4 @@
 grpc_chttp2_parse_error grpc_chttp2_window_update_parser_parse(
     void *parser, grpc_chttp2_parse_state *state, gpr_slice slice, int is_last);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_FRAME_WINDOW_UPDATE_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_FRAME_WINDOW_UPDATE_H */
diff --git a/src/core/transport/chttp2/hpack_parser.h b/src/core/transport/chttp2/hpack_parser.h
index 94acc88..bb4c1a1 100644
--- a/src/core/transport/chttp2/hpack_parser.h
+++ b/src/core/transport/chttp2/hpack_parser.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_HPACK_PARSER_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_HPACK_PARSER_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HPACK_PARSER_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HPACK_PARSER_H
 
 #include <stddef.h>
 
@@ -108,4 +108,4 @@
     void *hpack_parser, grpc_chttp2_parse_state *state, gpr_slice slice,
     int is_last);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_HPACK_PARSER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HPACK_PARSER_H */
diff --git a/src/core/transport/chttp2/hpack_table.h b/src/core/transport/chttp2/hpack_table.h
index ea0fc1d..d3bf41b 100644
--- a/src/core/transport/chttp2/hpack_table.h
+++ b/src/core/transport/chttp2/hpack_table.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_HPACK_TABLE_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_HPACK_TABLE_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HPACK_TABLE_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HPACK_TABLE_H
 
 #include "src/core/transport/metadata.h"
 #include <grpc/support/port_platform.h>
@@ -94,4 +94,4 @@
 grpc_chttp2_hptbl_find_result grpc_chttp2_hptbl_find(
     const grpc_chttp2_hptbl *tbl, grpc_mdelem *md);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_HPACK_TABLE_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HPACK_TABLE_H */
diff --git a/src/core/transport/chttp2/http2_errors.h b/src/core/transport/chttp2/http2_errors.h
index 1eecd17..4ab2ec0 100644
--- a/src/core/transport/chttp2/http2_errors.h
+++ b/src/core/transport/chttp2/http2_errors.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_HTTP2_ERRORS_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_HTTP2_ERRORS_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HTTP2_ERRORS_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HTTP2_ERRORS_H
 
 /* error codes for RST_STREAM from http2 draft 14 section 7 */
 typedef enum {
@@ -53,4 +53,4 @@
   GRPC_CHTTP2__ERROR_DO_NOT_USE = -1
 } grpc_chttp2_error_code;
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_HTTP2_ERRORS_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HTTP2_ERRORS_H */
diff --git a/src/core/transport/chttp2/huffsyms.h b/src/core/transport/chttp2/huffsyms.h
index 131c4ac..f9c1447 100644
--- a/src/core/transport/chttp2/huffsyms.h
+++ b/src/core/transport/chttp2/huffsyms.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_HUFFSYMS_H_
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_HUFFSYMS_H_
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HUFFSYMS_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HUFFSYMS_H
 
 /* HPACK static huffman table */
 
@@ -45,4 +45,4 @@
 
 extern const grpc_chttp2_huffsym grpc_chttp2_huffsyms[GRPC_CHTTP2_NUM_HUFFSYMS];
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_HUFFSYMS_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_HUFFSYMS_H */
diff --git a/src/core/transport/chttp2/status_conversion.h b/src/core/transport/chttp2/status_conversion.h
index 8e26720..cf06c35 100644
--- a/src/core/transport/chttp2/status_conversion.h
+++ b/src/core/transport/chttp2/status_conversion.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_STATUS_CONVERSION_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_STATUS_CONVERSION_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STATUS_CONVERSION_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STATUS_CONVERSION_H
 
 #include <grpc/grpc.h>
 #include "src/core/transport/chttp2/http2_errors.h"
@@ -47,4 +47,4 @@
 grpc_status_code grpc_chttp2_http2_status_to_grpc_status(int status);
 int grpc_chttp2_grpc_status_to_http2_status(grpc_status_code status);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_STATUS_CONVERSION_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STATUS_CONVERSION_H */
diff --git a/src/core/transport/chttp2/stream_encoder.h b/src/core/transport/chttp2/stream_encoder.h
index a99d61a..50c58ad 100644
--- a/src/core/transport/chttp2/stream_encoder.h
+++ b/src/core/transport/chttp2/stream_encoder.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_STREAM_ENCODER_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_STREAM_ENCODER_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STREAM_ENCODER_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STREAM_ENCODER_H
 
 #include "src/core/transport/chttp2/frame.h"
 #include "src/core/transport/metadata.h"
@@ -90,4 +90,4 @@
                         grpc_chttp2_hpack_compressor *compressor,
                         gpr_slice_buffer *output);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_STREAM_ENCODER_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STREAM_ENCODER_H */
diff --git a/src/core/transport/chttp2/stream_map.h b/src/core/transport/chttp2/stream_map.h
index 3fb91fc..d338d2f 100644
--- a/src/core/transport/chttp2/stream_map.h
+++ b/src/core/transport/chttp2/stream_map.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_STREAM_MAP_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_STREAM_MAP_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STREAM_MAP_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STREAM_MAP_H
 
 #include <grpc/support/port_platform.h>
 
@@ -78,4 +78,4 @@
                                                void *value),
                                      void *user_data);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_STREAM_MAP_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_STREAM_MAP_H */
diff --git a/src/core/transport/chttp2/timeout_encoding.h b/src/core/transport/chttp2/timeout_encoding.h
index 2bef8ba..e6664c6 100644
--- a/src/core/transport/chttp2/timeout_encoding.h
+++ b/src/core/transport/chttp2/timeout_encoding.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_TIMEOUT_ENCODING_H_
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_TIMEOUT_ENCODING_H_
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_TIMEOUT_ENCODING_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_TIMEOUT_ENCODING_H
 
 #include "src/core/support/string.h"
 #include <grpc/support/time.h>
@@ -44,4 +44,4 @@
 void grpc_chttp2_encode_timeout(gpr_timespec timeout, char *buffer);
 int grpc_chttp2_decode_timeout(const char *buffer, gpr_timespec *timeout);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_TIMEOUT_ENCODING_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_TIMEOUT_ENCODING_H */
diff --git a/src/core/transport/chttp2/varint.h b/src/core/transport/chttp2/varint.h
index 8c353c6..ee04ed7 100644
--- a/src/core/transport/chttp2/varint.h
+++ b/src/core/transport/chttp2/varint.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_VARINT_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_VARINT_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_VARINT_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_VARINT_H
 
 #include <grpc/support/port_platform.h>
 
@@ -71,4 +71,4 @@
     }                                                                       \
   } while (0)
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_VARINT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_VARINT_H */
diff --git a/src/core/transport/chttp2_transport.h b/src/core/transport/chttp2_transport.h
index 6fbc596..c5b65bd 100644
--- a/src/core/transport/chttp2_transport.h
+++ b/src/core/transport/chttp2_transport.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_CHTTP2_TRANSPORT_H__
-#define __GRPC_INTERNAL_TRANSPORT_CHTTP2_TRANSPORT_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_TRANSPORT_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_TRANSPORT_H
 
 #include "src/core/iomgr/endpoint.h"
 #include "src/core/transport/transport.h"
@@ -44,4 +44,4 @@
                                   size_t nslices, grpc_mdctx *metadata_context,
                                   int is_client);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_TRANSPORT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_CHTTP2_TRANSPORT_H */
diff --git a/src/core/transport/metadata.h b/src/core/transport/metadata.h
index 7a56e34..b8afbeb 100644
--- a/src/core/transport/metadata.h
+++ b/src/core/transport/metadata.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_METADATA_H__
-#define __GRPC_INTERNAL_TRANSPORT_METADATA_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_METADATA_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_METADATA_H
 
 #include <grpc/support/slice.h>
 #include <grpc/support/useful.h>
@@ -137,4 +137,4 @@
 
 #define GRPC_MDSTR_KV_HASH(k_hash, v_hash) (GPR_ROTL((k_hash), 2) ^ (v_hash))
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_METADATA_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_METADATA_H */
diff --git a/src/core/transport/stream_op.h b/src/core/transport/stream_op.h
index 828a7f7..2ffbcce 100644
--- a/src/core/transport/stream_op.h
+++ b/src/core/transport/stream_op.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_STREAM_OP_H__
-#define __GRPC_INTERNAL_TRANSPORT_STREAM_OP_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_STREAM_OP_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_STREAM_OP_H
 
 #include <grpc/grpc.h>
 #include <grpc/support/port_platform.h>
@@ -131,4 +131,4 @@
 void grpc_sopb_append(grpc_stream_op_buffer *sopb, grpc_stream_op *ops,
                       size_t nops);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_STREAM_OP_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_STREAM_OP_H */
diff --git a/src/core/transport/transport.h b/src/core/transport/transport.h
index 60193b1..ce8c17c 100644
--- a/src/core/transport/transport.h
+++ b/src/core/transport/transport.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_TRANSPORT_H__
-#define __GRPC_INTERNAL_TRANSPORT_TRANSPORT_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_H
 
 #include <stddef.h>
 
@@ -254,4 +254,4 @@
    used as a destruction call by setup). */
 void grpc_transport_setup_cancel(grpc_transport_setup *setup);
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_TRANSPORT_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_H */
diff --git a/src/core/transport/transport_impl.h b/src/core/transport/transport_impl.h
index d1e0b19..ac275c7 100644
--- a/src/core/transport/transport_impl.h
+++ b/src/core/transport/transport_impl.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_INTERNAL_TRANSPORT_TRANSPORT_IMPL_H__
-#define __GRPC_INTERNAL_TRANSPORT_TRANSPORT_IMPL_H__
+#ifndef GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_IMPL_H
+#define GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_IMPL_H
 
 #include "src/core/transport/transport.h"
 
@@ -84,4 +84,4 @@
   const grpc_transport_vtable *vtable;
 };
 
-#endif /* __GRPC_INTERNAL_TRANSPORT_TRANSPORT_IMPL_H__ */
+#endif  /* GRPC_INTERNAL_CORE_TRANSPORT_TRANSPORT_IMPL_H */
diff --git a/src/core/tsi/fake_transport_security.c b/src/core/tsi/fake_transport_security.c
index e8af200..f58f04e 100644
--- a/src/core/tsi/fake_transport_security.c
+++ b/src/core/tsi/fake_transport_security.c
@@ -392,8 +392,10 @@
     if (next_message_to_send > TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
       next_message_to_send = TSI_FAKE_HANDSHAKE_MESSAGE_MAX;
     }
-    gpr_log(GPR_INFO, "%s prepared %s.", impl->is_client ? "Client" : "Server",
-            tsi_fake_handshake_message_to_string(impl->next_message_to_send));
+    if (tsi_tracing_enabled) {
+      gpr_log(GPR_INFO, "%s prepared %s.", impl->is_client ? "Client" : "Server",
+              tsi_fake_handshake_message_to_string(impl->next_message_to_send));
+    }
     impl->next_message_to_send = next_message_to_send;
   }
   result = drain_frame_to_bytes(bytes, bytes_size, &impl->outgoing);
@@ -401,7 +403,9 @@
   if (!impl->is_client &&
       impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
     /* We're done. */
-    gpr_log(GPR_INFO, "Server is done.");
+    if (tsi_tracing_enabled) {
+      gpr_log(GPR_INFO, "Server is done.");
+    }
     impl->result = TSI_OK;
   } else {
     impl->needs_incoming_message = 1;
@@ -436,13 +440,17 @@
             tsi_fake_handshake_message_to_string(received_msg),
             tsi_fake_handshake_message_to_string(expected_msg));
   }
-  gpr_log(GPR_INFO, "%s received %s.", impl->is_client ? "Client" : "Server",
-          tsi_fake_handshake_message_to_string(received_msg));
+  if (tsi_tracing_enabled) {
+    gpr_log(GPR_INFO, "%s received %s.", impl->is_client ? "Client" : "Server",
+            tsi_fake_handshake_message_to_string(received_msg));
+  }
   tsi_fake_frame_reset(&impl->incoming, 0 /* needs_draining */);
   impl->needs_incoming_message = 0;
   if (impl->next_message_to_send == TSI_FAKE_HANDSHAKE_MESSAGE_MAX) {
     /* We're done. */
-    gpr_log(GPR_INFO, "%s is done.", impl->is_client ? "Client" : "Server");
+    if (tsi_tracing_enabled) {
+      gpr_log(GPR_INFO, "%s is done.", impl->is_client ? "Client" : "Server");
+    }
     impl->result = TSI_OK;
   }
   return TSI_OK;
diff --git a/src/core/tsi/fake_transport_security.h b/src/core/tsi/fake_transport_security.h
index 36e62bc..af9730b 100644
--- a/src/core/tsi/fake_transport_security.h
+++ b/src/core/tsi/fake_transport_security.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __FAKE_TRANSPORT_SECURITY_H_
-#define __FAKE_TRANSPORT_SECURITY_H_
+#ifndef GRPC_INTERNAL_CORE_TSI_FAKE_TRANSPORT_SECURITY_H
+#define GRPC_INTERNAL_CORE_TSI_FAKE_TRANSPORT_SECURITY_H
 
 #include "src/core/tsi/transport_security_interface.h"
 
@@ -58,4 +58,4 @@
 }
 #endif
 
-#endif /* __FAKE_TRANSPORT_SECURITY_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TSI_FAKE_TRANSPORT_SECURITY_H */
diff --git a/src/core/tsi/ssl_transport_security.c b/src/core/tsi/ssl_transport_security.c
index 8446cc4..dc43f7e 100644
--- a/src/core/tsi/ssl_transport_security.c
+++ b/src/core/tsi/ssl_transport_security.c
@@ -162,7 +162,7 @@
 /* TODO(jboeuf): Remove when we are past the debugging phase with this code. */
 static void ssl_log_where_info(const SSL* ssl, int where, int flag,
                                const char* msg) {
-  if (where & flag) {
+  if ((where & flag) && tsi_tracing_enabled) {
     gpr_log(GPR_INFO, "%20.20s - %30.30s  - %5.10s", msg,
             SSL_state_string_long(ssl), SSL_state_string(ssl));
   }
diff --git a/src/core/tsi/ssl_transport_security.h b/src/core/tsi/ssl_transport_security.h
index eecf2d7..192f7ac 100644
--- a/src/core/tsi/ssl_transport_security.h
+++ b/src/core/tsi/ssl_transport_security.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __SSL_TRANSPORT_SECURITY_H_
-#define __SSL_TRANSPORT_SECURITY_H_
+#ifndef GRPC_INTERNAL_CORE_TSI_SSL_TRANSPORT_SECURITY_H
+#define GRPC_INTERNAL_CORE_TSI_SSL_TRANSPORT_SECURITY_H
 
 #include "src/core/tsi/transport_security_interface.h"
 
@@ -170,4 +170,4 @@
 }
 #endif
 
-#endif /* __SSL_TRANSPORT_SECURITY_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TSI_SSL_TRANSPORT_SECURITY_H */
diff --git a/src/core/tsi/transport_security.c b/src/core/tsi/transport_security.c
index aeb9b3f..04b3000 100644
--- a/src/core/tsi/transport_security.c
+++ b/src/core/tsi/transport_security.c
@@ -36,6 +36,14 @@
 #include <stdlib.h>
 #include <string.h>
 
+/* --- Tracing. --- */
+
+int tsi_tracing_enabled = 0;
+
+void tsi_enable_tracing() {
+  tsi_tracing_enabled = 1;
+}
+
 /* --- Utils. --- */
 
 char* tsi_strdup(const char* src) {
diff --git a/src/core/tsi/transport_security.h b/src/core/tsi/transport_security.h
index 432da07..59e5dcf 100644
--- a/src/core/tsi/transport_security.h
+++ b/src/core/tsi/transport_security.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __TRANSPORT_SECURITY_H_
-#define __TRANSPORT_SECURITY_H_
+#ifndef GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_H
+#define GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_H
 
 #include "src/core/tsi/transport_security_interface.h"
 
@@ -40,6 +40,8 @@
 extern "C" {
 #endif
 
+extern int tsi_tracing_enabled;
+
 /* Base for tsi_frame_protector implementations.
    See transport_security_interface.h for documentation. */
 typedef struct {
@@ -115,4 +117,4 @@
 }
 #endif
 
-#endif /* __TRANSPORT_SECURITY_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_H */
diff --git a/src/core/tsi/transport_security_interface.h b/src/core/tsi/transport_security_interface.h
index 90e119c..33a19be 100644
--- a/src/core/tsi/transport_security_interface.h
+++ b/src/core/tsi/transport_security_interface.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __TRANSPORT_SECURITY_INTERFACE_H_
-#define __TRANSPORT_SECURITY_INTERFACE_H_
+#ifndef GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H
+#define GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H
 
 #include <stdint.h>
 #include <stdlib.h>
@@ -61,6 +61,11 @@
 
 const char* tsi_result_to_string(tsi_result result);
 
+/* --- tsi tracing --- */
+
+/* Call this function before any other tsi function to avoid races. */
+void tsi_enable_tracing(void);
+
 /* --- tsi_frame_protector object ---
 
   This object protects and unprotects buffers once the handshake is done.
@@ -361,4 +366,4 @@
 }
 #endif
 
-#endif /* __TRANSPORT_SECURITY_INTERFACE_H_ */
+#endif  /* GRPC_INTERNAL_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H */
diff --git a/src/cpp/client/channel.h b/src/cpp/client/channel.h
index f5c9e0f..a1de381 100644
--- a/src/cpp/client/channel.h
+++ b/src/cpp/client/channel.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_INTERNAL_CLIENT_CHANNEL_H__
-#define __GRPCPP_INTERNAL_CLIENT_CHANNEL_H__
+#ifndef GRPC_INTERNAL_CPP_CLIENT_CHANNEL_H
+#define GRPC_INTERNAL_CPP_CLIENT_CHANNEL_H
 
 #include <memory>
 
@@ -49,14 +49,14 @@
 class Credentials;
 class StreamContextInterface;
 
-class Channel final : public ChannelInterface {
+class Channel GRPC_FINAL : public ChannelInterface {
  public:
   Channel(const grpc::string &target, grpc_channel *c_channel);
-  ~Channel() override;
+  ~Channel() GRPC_OVERRIDE;
 
   virtual Call CreateCall(const RpcMethod &method, ClientContext *context,
-                          CompletionQueue *cq) override;
-  virtual void PerformOpsOnCall(CallOpBuffer *ops, Call *call) override;
+                          CompletionQueue *cq) GRPC_OVERRIDE;
+  virtual void PerformOpsOnCall(CallOpBuffer *ops, Call *call) GRPC_OVERRIDE;
 
  private:
   const grpc::string target_;
@@ -65,4 +65,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_INTERNAL_CLIENT_CHANNEL_H__
+#endif  // GRPC_INTERNAL_CPP_CLIENT_CHANNEL_H
diff --git a/src/cpp/client/client_context.cc b/src/cpp/client/client_context.cc
index 80cbdd9..9f99f7b 100644
--- a/src/cpp/client/client_context.cc
+++ b/src/cpp/client/client_context.cc
@@ -41,7 +41,10 @@
 namespace grpc {
 
 ClientContext::ClientContext()
-    : call_(nullptr), cq_(nullptr), absolute_deadline_(gpr_inf_future) {}
+    : initial_metadata_received_(false),
+      call_(nullptr),
+      cq_(nullptr),
+      absolute_deadline_(gpr_inf_future) {}
 
 ClientContext::~ClientContext() {
   if (call_) {
diff --git a/src/cpp/common/call.cc b/src/cpp/common/call.cc
index e6a20a2..f3a6911 100644
--- a/src/cpp/common/call.cc
+++ b/src/cpp/common/call.cc
@@ -41,6 +41,30 @@
 
 namespace grpc {
 
+CallOpBuffer::CallOpBuffer()
+    : return_tag_(this),
+      send_initial_metadata_(false),
+      initial_metadata_count_(0),
+      initial_metadata_(nullptr),
+      recv_initial_metadata_(nullptr),
+      recv_initial_metadata_arr_{0, 0, nullptr},
+      send_message_(nullptr),
+      send_message_buf_(nullptr),
+      recv_message_(nullptr),
+      recv_message_buf_(nullptr),
+      client_send_close_(false),
+      recv_trailing_metadata_(nullptr),
+      recv_status_(nullptr),
+      recv_trailing_metadata_arr_{0, 0, nullptr},
+      status_code_(GRPC_STATUS_OK),
+      status_details_(nullptr),
+      status_details_capacity_(0),
+      send_status_(nullptr),
+      trailing_metadata_count_(0),
+      trailing_metadata_(nullptr),
+      cancelled_buf_(0),
+      recv_closed_(nullptr) {}
+
 void CallOpBuffer::Reset(void* next_return_tag) {
   return_tag_ = next_return_tag;
 
diff --git a/src/cpp/proto/proto_utils.h b/src/cpp/proto/proto_utils.h
index 834884d..a0af4d6 100644
--- a/src/cpp/proto/proto_utils.h
+++ b/src/cpp/proto/proto_utils.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_INTERNAL_PROTO_PROTO_UTILS_H__
-#define __GRPCPP_INTERNAL_PROTO_PROTO_UTILS_H__
+#ifndef GRPC_INTERNAL_CPP_PROTO_PROTO_UTILS_H
+#define GRPC_INTERNAL_CPP_PROTO_PROTO_UTILS_H
 
 struct grpc_byte_buffer;
 namespace google {
@@ -54,4 +54,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_INTERNAL_PROTO_PROTO_UTILS_H__
+#endif  // GRPC_INTERNAL_CPP_PROTO_PROTO_UTILS_H
diff --git a/src/cpp/server/insecure_server_credentials.cc b/src/cpp/server/insecure_server_credentials.cc
index a99e110..2b0ee77 100644
--- a/src/cpp/server/insecure_server_credentials.cc
+++ b/src/cpp/server/insecure_server_credentials.cc
@@ -32,7 +32,6 @@
  */
 
 #include <grpc/grpc_security.h>
-
 #include <grpc++/server_credentials.h>
 
 namespace grpc {
diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index dc48546..ca2e62c 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -49,11 +49,12 @@
 
 namespace grpc {
 
-class Server::SyncRequest final : public CompletionQueueTag {
+class Server::SyncRequest GRPC_FINAL : public CompletionQueueTag {
  public:
   SyncRequest(RpcServiceMethod* method, void* tag)
       : method_(method),
         tag_(tag),
+        in_flight_(false),
         has_request_payload_(method->method_type() == RpcMethod::NORMAL_RPC ||
                              method->method_type() ==
                                  RpcMethod::SERVER_STREAMING),
@@ -85,14 +86,14 @@
                    this));
   }
 
-  bool FinalizeResult(void** tag, bool* status) override {
+  bool FinalizeResult(void** tag, bool* status) GRPC_OVERRIDE {
     if (!*status) {
       grpc_completion_queue_destroy(cq_);
     }
     return true;
   }
 
-  class CallData final {
+  class CallData GRPC_FINAL {
    public:
     explicit CallData(Server* server, SyncRequest* mrd)
         : cq_(mrd->cq_),
@@ -159,7 +160,7 @@
  private:
   RpcServiceMethod* const method_;
   void* const tag_;
-  bool in_flight_ = false;
+  bool in_flight_;
   const bool has_request_payload_;
   const bool has_response_payload_;
   grpc_call* call_;
@@ -277,7 +278,7 @@
              grpc_call_start_batch(call->call(), ops, nops, buf));
 }
 
-class Server::AsyncRequest final : public CompletionQueueTag {
+class Server::AsyncRequest GRPC_FINAL : public CompletionQueueTag {
  public:
   AsyncRequest(Server* server, void* registered_method, ServerContext* ctx,
                ::google::protobuf::Message* request,
@@ -288,7 +289,9 @@
         stream_(stream),
         cq_(cq),
         ctx_(ctx),
-        server_(server) {
+        server_(server),
+        call_(nullptr),
+        payload_(nullptr) {
     memset(&array_, 0, sizeof(array_));
     grpc_server_request_registered_call(
         server->server_, registered_method, &call_, &deadline_, &array_,
@@ -302,7 +305,7 @@
     grpc_metadata_array_destroy(&array_);
   }
 
-  bool FinalizeResult(void** tag, bool* status) override {
+  bool FinalizeResult(void** tag, bool* status) GRPC_OVERRIDE {
     *tag = tag_;
     if (*status && request_) {
       if (payload_) {
@@ -337,10 +340,10 @@
   CompletionQueue* const cq_;
   ServerContext* const ctx_;
   Server* const server_;
-  grpc_call* call_ = nullptr;
+  grpc_call* call_;
   gpr_timespec deadline_;
   grpc_metadata_array array_;
-  grpc_byte_buffer* payload_ = nullptr;
+  grpc_byte_buffer* payload_;
 };
 
 void Server::RequestAsyncCall(void* registered_method, ServerContext* context,
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index d8b3f74..5de5923 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -41,7 +41,7 @@
 
 namespace grpc {
 
-ServerBuilder::ServerBuilder() {}
+ServerBuilder::ServerBuilder() : thread_pool_(nullptr) {}
 
 void ServerBuilder::RegisterService(SynchronousService* service) {
   services_.push_back(service->service());
diff --git a/src/cpp/server/server_context.cc b/src/cpp/server/server_context.cc
index 1aa18bc..bb3c2d1 100644
--- a/src/cpp/server/server_context.cc
+++ b/src/cpp/server/server_context.cc
@@ -44,10 +44,13 @@
 
 // CompletionOp
 
-class ServerContext::CompletionOp final : public CallOpBuffer {
+class ServerContext::CompletionOp GRPC_FINAL : public CallOpBuffer {
  public:
-  CompletionOp();
-  bool FinalizeResult(void** tag, bool* status) override;
+  // initial refs: one in the server context, one in the cq
+  CompletionOp() : refs_(2), finalized_(false), cancelled_(false) {
+    AddServerRecvClose(&cancelled_);
+  }
+  bool FinalizeResult(void** tag, bool* status) GRPC_OVERRIDE;
 
   bool CheckCancelled(CompletionQueue* cq);
 
@@ -55,13 +58,11 @@
 
  private:
   std::mutex mu_;
-  int refs_ = 2;  // initial refs: one in the server context, one in the cq
-  bool finalized_ = false;
-  bool cancelled_ = false;
+  int refs_;
+  bool finalized_;
+  bool cancelled_;
 };
 
-ServerContext::CompletionOp::CompletionOp() { AddServerRecvClose(&cancelled_); }
-
 void ServerContext::CompletionOp::Unref() {
   std::unique_lock<std::mutex> lock(mu_);
   if (--refs_ == 0) {
@@ -90,11 +91,19 @@
 
 // ServerContext body
 
-ServerContext::ServerContext() {}
+ServerContext::ServerContext()
+    : completion_op_(nullptr),
+      call_(nullptr),
+      cq_(nullptr),
+      sent_initial_metadata_(false) {}
 
 ServerContext::ServerContext(gpr_timespec deadline, grpc_metadata* metadata,
                              size_t metadata_count)
-    : deadline_(Timespec2Timepoint(deadline)) {
+    : completion_op_(nullptr),
+      deadline_(Timespec2Timepoint(deadline)),
+      call_(nullptr),
+      cq_(nullptr),
+      sent_initial_metadata_(false) {
   for (size_t i = 0; i < metadata_count; i++) {
     client_metadata_.insert(std::make_pair(
         grpc::string(metadata[i].key),
diff --git a/src/cpp/server/thread_pool.cc b/src/cpp/server/thread_pool.cc
index fa11ddd..5dc9bcf 100644
--- a/src/cpp/server/thread_pool.cc
+++ b/src/cpp/server/thread_pool.cc
@@ -35,7 +35,7 @@
 
 namespace grpc {
 
-ThreadPool::ThreadPool(int num_threads) {
+ThreadPool::ThreadPool(int num_threads) : shutdown_(false) {
   for (int i = 0; i < num_threads; i++) {
     threads_.push_back(std::thread([this]() {
       for (;;) {
diff --git a/src/cpp/server/thread_pool.h b/src/cpp/server/thread_pool.h
index 283618f..6157e40 100644
--- a/src/cpp/server/thread_pool.h
+++ b/src/cpp/server/thread_pool.h
@@ -31,9 +31,10 @@
  *
  */
 
-#ifndef __GRPCPP_INTERNAL_SERVER_THREAD_POOL_H__
-#define __GRPCPP_INTERNAL_SERVER_THREAD_POOL_H__
+#ifndef GRPC_INTERNAL_CPP_SERVER_THREAD_POOL_H
+#define GRPC_INTERNAL_CPP_SERVER_THREAD_POOL_H
 
+#include <grpc++/config.h>
 #include <grpc++/thread_pool_interface.h>
 
 #include <condition_variable>
@@ -44,21 +45,21 @@
 
 namespace grpc {
 
-class ThreadPool final : public ThreadPoolInterface {
+class ThreadPool GRPC_FINAL : public ThreadPoolInterface {
  public:
   explicit ThreadPool(int num_threads);
   ~ThreadPool();
 
-  void ScheduleCallback(const std::function<void()> &callback) override;
+  void ScheduleCallback(const std::function<void()> &callback) GRPC_OVERRIDE;
 
  private:
   std::mutex mu_;
   std::condition_variable cv_;
-  bool shutdown_ = false;
+  bool shutdown_;
   std::queue<std::function<void()>> callbacks_;
   std::vector<std::thread> threads_;
 };
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_INTERNAL_SERVER_THREAD_POOL_H__
+#endif  // GRPC_INTERNAL_CPP_SERVER_THREAD_POOL_H
diff --git a/src/cpp/util/time.h b/src/cpp/util/time.h
index 9f9e582..1994848 100644
--- a/src/cpp/util/time.h
+++ b/src/cpp/util/time.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_INTERNAL_UTIL_TIME_H__
-#define __GRPCPP_INTERNAL_UTIL_TIME_H__
+#ifndef GRPC_INTERNAL_CPP_UTIL_TIME_H
+#define GRPC_INTERNAL_CPP_UTIL_TIME_H
 
 #include <chrono>
 
@@ -48,4 +48,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_INTERNAL_UTIL_TIME_H__
+#endif  // GRPC_INTERNAL_CPP_UTIL_TIME_H
diff --git a/src/csharp/Grpc.Core/Grpc.Core.csproj b/src/csharp/Grpc.Core/Grpc.Core.csproj
index 183c442..05d40d4 100644
--- a/src/csharp/Grpc.Core/Grpc.Core.csproj
+++ b/src/csharp/Grpc.Core/Grpc.Core.csproj
@@ -67,16 +67,16 @@
     <Compile Include="Utils\ExceptionHelper.cs" />
   </ItemGroup>
   <Choose>
-    <!-- Under Windows, automatically copy the C core library to output dir.
-         Under Monodevelop it's not supported so it has no effect. -->
-    <When Condition=" '$(Platform)' == 'AnyCPU' ">
+    <!-- Under older versions of Monodevelop, Choose is not supported and is just
+         ignored, which gives us the desired effect. -->
+    <When Condition=" '$(OS)' != 'Unix' ">
       <ItemGroup>
         <Content Include="..\..\..\vsprojects\vs2013\Debug\grpc_csharp_ext.dll">
           <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
         </Content>
       </ItemGroup>
     </When>
-    <Otherwise/>
+    <Otherwise />
   </Choose>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/src/csharp/Grpc.Core/Server.cs b/src/csharp/Grpc.Core/Server.cs
index 002592a..152cc21 100644
--- a/src/csharp/Grpc.Core/Server.cs
+++ b/src/csharp/Grpc.Core/Server.cs
@@ -124,6 +124,17 @@
             handle.Dispose();
         }
 
+        /// <summary>
+        /// To allow awaiting termination of the server.
+        /// </summary>
+        public Task ShutdownTask
+        {
+            get
+            {
+                return shutdownTcs.Task;
+            }
+        }
+
         public void Kill() {
             handle.Dispose();
         }
diff --git a/src/csharp/Grpc.IntegrationTesting.Client/.gitignore b/src/csharp/Grpc.IntegrationTesting.Client/.gitignore
new file mode 100644
index 0000000..a382af2
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Client/.gitignore
@@ -0,0 +1,3 @@
+bin
+obj
+
diff --git a/src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj b/src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj
new file mode 100644
index 0000000..b1a4a81
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>10.0.0</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3D166931-BA2D-416E-95A3-D36E8F6E90B9}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Grpc.IntegrationTesting.Client</RootNamespace>
+    <AssemblyName>Grpc.IntegrationTesting.Client</AssemblyName>
+    <StartupObject>Grpc.IntegrationTesting.Client.Program</StartupObject>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>full</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <ProjectReference Include="..\Grpc.IntegrationTesting\Grpc.IntegrationTesting.csproj">
+      <Project>{C61154BA-DD4A-4838-8420-0162A28925E0}</Project>
+      <Name>Grpc.IntegrationTesting</Name>
+    </ProjectReference>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/csharp/Grpc.IntegrationTesting.Client/Program.cs b/src/csharp/Grpc.IntegrationTesting.Client/Program.cs
new file mode 100644
index 0000000..2e1c9aa
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Client/Program.cs
@@ -0,0 +1,46 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using Grpc.IntegrationTesting;
+
+namespace Grpc.IntegrationTesting.Client
+{
+    class Program
+    {
+        public static void Main(string[] args)
+        {
+            InteropClient.Run(args);
+        }
+    }
+}
diff --git a/src/csharp/Grpc.IntegrationTesting.Client/Properties/AssemblyInfo.cs b/src/csharp/Grpc.IntegrationTesting.Client/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..d1f9e85
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Client/Properties/AssemblyInfo.cs
@@ -0,0 +1,22 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes. 
+// Change them to the values specific to your project.
+[assembly: AssemblyTitle("Grpc.IntegrationTesting.Client")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("Google Inc.  All rights reserved.")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+[assembly: AssemblyVersion("0.1.*")]
+// The following attributes are used to specify the signing key for the assembly, 
+// if desired. See the Mono documentation for more information about signing.
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
+
diff --git a/src/csharp/Grpc.IntegrationTesting.Server/.gitignore b/src/csharp/Grpc.IntegrationTesting.Server/.gitignore
new file mode 100644
index 0000000..a382af2
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Server/.gitignore
@@ -0,0 +1,3 @@
+bin
+obj
+
diff --git a/src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj b/src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj
new file mode 100644
index 0000000..73c9f2d
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>10.0.0</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{A654F3B8-E859-4E6A-B30D-227527DBEF0D}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Grpc.IntegrationTesting.Server</RootNamespace>
+    <AssemblyName>Grpc.IntegrationTesting.Server</AssemblyName>
+    <StartupObject>Grpc.IntegrationTesting.Server.Program</StartupObject>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <DebugType>full</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+    <PlatformTarget>x86</PlatformTarget>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <ProjectReference Include="..\Grpc.IntegrationTesting\Grpc.IntegrationTesting.csproj">
+      <Project>{C61154BA-DD4A-4838-8420-0162A28925E0}</Project>
+      <Name>Grpc.IntegrationTesting</Name>
+    </ProjectReference>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/src/csharp/Grpc.IntegrationTesting.Server/Program.cs b/src/csharp/Grpc.IntegrationTesting.Server/Program.cs
new file mode 100644
index 0000000..01bcc6e
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Server/Program.cs
@@ -0,0 +1,45 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+
+namespace Grpc.IntegrationTesting.Server
+{
+    class Program
+    {
+        public static void Main(string[] args)
+        {
+            InteropServer.Run(args);
+        }
+    }
+}
diff --git a/src/csharp/Grpc.IntegrationTesting.Server/Properties/AssemblyInfo.cs b/src/csharp/Grpc.IntegrationTesting.Server/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4ef93f3
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting.Server/Properties/AssemblyInfo.cs
@@ -0,0 +1,22 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes. 
+// Change them to the values specific to your project.
+[assembly: AssemblyTitle("Grpc.IntegrationTesting.Server")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("Google Inc.  All rights reserved.")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+[assembly: AssemblyVersion("0.1.*")]
+// The following attributes are used to specify the signing key for the assembly, 
+// if desired. See the Mono documentation for more information about signing.
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
+
diff --git a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
index e66f708..6d6aaf5 100644
--- a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
+++ b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
@@ -6,10 +6,9 @@
     <ProductVersion>10.0.0</ProductVersion>
     <SchemaVersion>2.0</SchemaVersion>
     <ProjectGuid>{C61154BA-DD4A-4838-8420-0162A28925E0}</ProjectGuid>
-    <OutputType>Exe</OutputType>
+    <OutputType>Library</OutputType>
     <RootNamespace>Grpc.IntegrationTesting</RootNamespace>
     <AssemblyName>Grpc.IntegrationTesting</AssemblyName>
-    <StartupObject>Grpc.IntegrationTesting.Client</StartupObject>
     <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
@@ -43,12 +42,13 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Client.cs" />
     <Compile Include="TestServiceGrpc.cs" />
     <Compile Include="Empty.cs" />
     <Compile Include="Messages.cs" />
     <Compile Include="InteropClientServerTest.cs" />
     <Compile Include="TestServiceImpl.cs" />
+    <Compile Include="InteropServer.cs" />
+    <Compile Include="InteropClient.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <ItemGroup>
diff --git a/src/csharp/Grpc.IntegrationTesting/Client.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
similarity index 98%
rename from src/csharp/Grpc.IntegrationTesting/Client.cs
rename to src/csharp/Grpc.IntegrationTesting/InteropClient.cs
index fa1c7cd..a7a3c63 100644
--- a/src/csharp/Grpc.IntegrationTesting/Client.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
@@ -44,7 +44,7 @@
 
 namespace Grpc.IntegrationTesting
 {
-    class Client
+    public class InteropClient
     {
         private class ClientOptions
         {
@@ -59,12 +59,12 @@
 
         ClientOptions options;
 
-        private Client(ClientOptions options)
+        private InteropClient(ClientOptions options)
         {
             this.options = options;
         }
 
-        public static void Main(string[] args)
+        public static void Run(string[] args)
         {
             Console.WriteLine("gRPC C# interop testing client");
             ClientOptions options = ParseArguments(args);
@@ -89,7 +89,7 @@
                 Environment.Exit(1);
             }
 
-            var interopClient = new Client(options);
+            var interopClient = new InteropClient(options);
             interopClient.Run();
         }
 
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
index 87d25b0..4bb0b9e 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
@@ -77,37 +77,37 @@
         [Test]
         public void EmptyUnary()
         {
-            Client.RunEmptyUnary(client);
+            InteropClient.RunEmptyUnary(client);
         }
 
         [Test]
         public void LargeUnary()
         {
-            Client.RunEmptyUnary(client);
+            InteropClient.RunEmptyUnary(client);
         }
 
         [Test]
         public void ClientStreaming()
         {
-            Client.RunClientStreaming(client);
+            InteropClient.RunClientStreaming(client);
         }
 
         [Test]
         public void ServerStreaming()
         {
-            Client.RunServerStreaming(client);
+            InteropClient.RunServerStreaming(client);
         }
 
         [Test]
         public void PingPong()
         {
-            Client.RunPingPong(client);
+            InteropClient.RunPingPong(client);
         }
 
         [Test]
         public void EmptyStream()
         {
-            Client.RunEmptyStream(client);
+            InteropClient.RunEmptyStream(client);
         }
 
         // TODO: add cancel_after_begin
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropServer.cs b/src/csharp/Grpc.IntegrationTesting/InteropServer.cs
new file mode 100644
index 0000000..a25d3b3
--- /dev/null
+++ b/src/csharp/Grpc.IntegrationTesting/InteropServer.cs
@@ -0,0 +1,140 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using Google.ProtocolBuffers;
+using Grpc.Core;
+using Grpc.Core.Utils;
+using NUnit.Framework;
+using grpc.testing;
+
+namespace Grpc.IntegrationTesting
+{
+    public class InteropServer
+    {
+        private class ServerOptions
+        {
+            public bool help;
+            public int? port;
+            public bool useTls;
+        }
+
+        ServerOptions options;
+
+        private InteropServer(ServerOptions options)
+        {
+            this.options = options;
+        }
+
+        public static void Run(string[] args)
+        {
+            Console.WriteLine("gRPC C# interop testing server");
+            ServerOptions options = ParseArguments(args);
+
+            if (!options.port.HasValue)
+            {
+                Console.WriteLine("Missing required argument.");
+                Console.WriteLine();
+                options.help = true;
+            }
+
+            if (options.help)
+            {
+                Console.WriteLine("Usage:");
+                Console.WriteLine("  --port=PORT");
+                Console.WriteLine("  --use_tls=BOOLEAN");
+                Console.WriteLine();
+                Environment.Exit(1);
+            }
+
+            var interopServer = new InteropServer(options);
+            interopServer.Run();
+        }
+
+        private void Run()
+        {
+            GrpcEnvironment.Initialize();
+
+            var server = new Server();
+            server.AddServiceDefinition(TestServiceGrpc.BindService(new TestServiceImpl()));
+
+            string addr = "0.0.0.0:" + options.port;
+            server.AddPort(addr);
+            Console.WriteLine("Running server on " + addr);
+            server.Start();
+
+            server.ShutdownTask.Wait();
+
+            GrpcEnvironment.Shutdown();
+        }
+
+        private static ServerOptions ParseArguments(string[] args)
+        {
+            var options = new ServerOptions();
+            foreach(string arg in args)
+            {
+                ParseArgument(arg, options);
+                if (options.help)
+                {
+                    break;
+                }
+            }
+            return options;
+        }
+
+        private static void ParseArgument(string arg, ServerOptions options)
+        {
+            Match match;
+            match = Regex.Match(arg, "--port=(.*)");
+            if (match.Success)
+            {
+                options.port = int.Parse(match.Groups[1].Value.Trim());
+                return;
+            }
+
+            match = Regex.Match(arg, "--use_tls=(.*)");
+            if (match.Success)
+            {
+                options.useTls = bool.Parse(match.Groups[1].Value.Trim());
+                return;
+            }
+
+            Console.WriteLine(string.Format("Unrecognized argument \"{0}\"", arg));
+            options.help = true;
+        }
+    }
+}
diff --git a/src/csharp/Grpc.sln b/src/csharp/Grpc.sln
index a544eb1..2e6d288 100644
--- a/src/csharp/Grpc.sln
+++ b/src/csharp/Grpc.sln
@@ -13,6 +13,10 @@
 EndProject

 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.IntegrationTesting", "Grpc.IntegrationTesting\Grpc.IntegrationTesting.csproj", "{C61154BA-DD4A-4838-8420-0162A28925E0}"

 EndProject

+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.IntegrationTesting.Client", "Grpc.IntegrationTesting.Client\Grpc.IntegrationTesting.Client.csproj", "{3D166931-BA2D-416E-95A3-D36E8F6E90B9}"

+EndProject

+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Grpc.IntegrationTesting.Server", "Grpc.IntegrationTesting.Server\Grpc.IntegrationTesting.Server.csproj", "{A654F3B8-E859-4E6A-B30D-227527DBEF0D}"

+EndProject

 Global

 	GlobalSection(SolutionConfigurationPlatforms) = preSolution

 		Debug|x86 = Debug|x86

@@ -23,6 +27,10 @@
 		{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.Debug|x86.Build.0 = Debug|Any CPU

 		{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.Release|x86.ActiveCfg = Release|Any CPU

 		{143B1C29-C442-4BE0-BF3F-A8F92288AC9F}.Release|x86.Build.0 = Release|Any CPU

+		{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Debug|x86.ActiveCfg = Debug|x86

+		{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Debug|x86.Build.0 = Debug|x86

+		{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Release|x86.ActiveCfg = Release|x86

+		{3D166931-BA2D-416E-95A3-D36E8F6E90B9}.Release|x86.Build.0 = Release|x86

 		{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.Debug|x86.ActiveCfg = Debug|x86

 		{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.Debug|x86.Build.0 = Debug|x86

 		{61ECB8EE-0C96-4F8E-B187-8E4D227417C0}.Release|x86.ActiveCfg = Release|x86

@@ -35,6 +43,10 @@
 		{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.Debug|x86.Build.0 = Debug|Any CPU

 		{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.Release|x86.ActiveCfg = Release|Any CPU

 		{86EC5CB4-4EA2-40A2-8057-86542A0353BB}.Release|x86.Build.0 = Release|Any CPU

+		{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Debug|x86.ActiveCfg = Debug|x86

+		{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Debug|x86.Build.0 = Debug|x86

+		{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Release|x86.ActiveCfg = Release|x86

+		{A654F3B8-E859-4E6A-B30D-227527DBEF0D}.Release|x86.Build.0 = Release|x86

 		{C61154BA-DD4A-4838-8420-0162A28925E0}.Debug|x86.ActiveCfg = Debug|x86

 		{C61154BA-DD4A-4838-8420-0162A28925E0}.Debug|x86.Build.0 = Debug|x86

 		{C61154BA-DD4A-4838-8420-0162A28925E0}.Release|x86.ActiveCfg = Release|x86

diff --git a/src/csharp/README.md b/src/csharp/README.md
index 55739a1..21aab52 100755
--- a/src/csharp/README.md
+++ b/src/csharp/README.md
@@ -9,7 +9,7 @@
 **This gRPC C# implementation is work-in-progress and is not expected to work yet.**
 
 - The implementation is a wrapper around gRPC C core library
-- Code only runs under mono currently, building gGRPC C core library under Windows
+- Code only runs under mono currently, building gRPC C core library under Windows
   is in progress.
 - It is very possible that some parts of the code will be heavily refactored or
   completely rewritten.
diff --git a/src/node/LICENSE b/src/node/LICENSE
new file mode 100644
index 0000000..0209b57
--- /dev/null
+++ b/src/node/LICENSE
@@ -0,0 +1,28 @@
+Copyright 2015, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/src/node/binding.gyp b/src/node/binding.gyp
index 5c34be2..10afaf6 100644
--- a/src/node/binding.gyp
+++ b/src/node/binding.gyp
@@ -10,7 +10,7 @@
         "<!(node -e \"require('nan')\")"
       ],
       'cflags': [
-        '-std=c++11',
+        '-std=c++0x',
         '-Wall',
         '-pthread',
         '-pedantic',
diff --git a/src/node/package.json b/src/node/package.json
index e9995e7..0ef1c99 100644
--- a/src/node/package.json
+++ b/src/node/package.json
@@ -1,7 +1,24 @@
 {
   "name": "grpc",
-  "version": "0.5.0",
+  "version": "0.5.1",
+  "author": "Google Inc.",
   "description": "gRPC Library for Node",
+  "homepage": "http://www.grpc.io/",
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/grpc/grpc.git"
+  },
+  "bugs": "https://github.com/grpc/grpc/issues",
+  "contributors": [
+    {
+      "name": "Michael Lumish",
+      "email": "mlumish@google.com"
+    }
+  ],
+  "directories": {
+    "lib": "src",
+    "example": "examples"
+  },
   "scripts": {
     "lint": "node ./node_modules/jshint/bin/jshint src test examples interop index.js",
     "test": "node ./node_modules/mocha/bin/mocha && npm run-script lint"
@@ -22,6 +39,7 @@
     "strftime": "^0.8.2"
   },
   "files": [
+    "LICENSE",
     "README.md",
     "index.js",
     "binding.gyp",
@@ -31,5 +49,6 @@
     "src",
     "test"
   ],
-  "main": "index.js"
+  "main": "index.js",
+  "license": "BSD-3-Clause"
 }
diff --git a/src/python/README.md b/src/python/README.md
index 0ead86b..490a229 100755
--- a/src/python/README.md
+++ b/src/python/README.md
@@ -37,3 +37,19 @@
 ```
 $ tools/run_tests/run_python.sh
 ```
+
+
+Installing
+-----------------------
+
+- [Install the gRPC core](https://github.com/grpc/grpc/blob/master/INSTALL)
+
+- Install gRPC Python's dependencies
+```
+$ pip install -r requirements.txt
+```
+
+- Install gRPC Python
+```
+$ pip install src/python/src
+```
diff --git a/src/python/requirements.txt b/src/python/requirements.txt
new file mode 100644
index 0000000..06a42e1
--- /dev/null
+++ b/src/python/requirements.txt
@@ -0,0 +1,3 @@
+enum34==1.0.4
+futures==2.2.0
+protobuf==3.0.0-alpha-1
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 96c92e2..483a31f 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -32,6 +32,17 @@
 LIBDIR = RbConfig::CONFIG['libdir']
 INCLUDEDIR = RbConfig::CONFIG['includedir']
 
+if ENV.key? 'GRPC_ROOT'
+  GRPC_ROOT = ENV['GRPC_ROOT']
+  if ENV.key? 'GRPC_LIB_DIR'
+    GRPC_LIB_DIR = ENV['GRPC_LIB_DIR']
+  else
+    GRPC_LIB_DIR = 'libs/opt'
+  end
+else
+  GRPC_ROOT = nil
+end
+
 HEADER_DIRS = [
   # Search /opt/local (Mac source install)
   '/opt/local/include',
@@ -54,6 +65,11 @@
   LIBDIR
 ]
 
+unless GRPC_ROOT.nil?
+  HEADER_DIRS.unshift File.join(GRPC_ROOT, 'include')
+  LIB_DIRS.unshift File.join(GRPC_ROOT, GRPC_LIB_DIR)
+end
+
 def crash(msg)
   print(" extconf failure: #{msg}\n")
   exit 1
diff --git a/src/ruby/grpc.gemspec b/src/ruby/grpc.gemspec
index 25a3ff5..ed26fef 100755
--- a/src/ruby/grpc.gemspec
+++ b/src/ruby/grpc.gemspec
@@ -11,6 +11,7 @@
   s.homepage      = 'https://github.com/google/grpc/tree/master/src/ruby'
   s.summary       = 'GRPC system in Ruby'
   s.description   = 'Send RPCs from Ruby using GRPC'
+  s.license       = 'BSD-3-Clause'
 
   s.files         = `git ls-files`.split("\n")
   s.test_files    = `git ls-files -- spec/*`.split("\n")
diff --git a/src/ruby/lib/grpc/generic/service.rb b/src/ruby/lib/grpc/generic/service.rb
index 61d1871..6ea0831 100644
--- a/src/ruby/lib/grpc/generic/service.rb
+++ b/src/ruby/lib/grpc/generic/service.rb
@@ -217,8 +217,8 @@
 
     def self.included(o)
       o.extend(Dsl)
-      # Update to the use the service name including module. Proivde a default
-      # that can be nil e,g. when modules are declared dynamically.
+      # Update to the use the service name including module. Provide a default
+      # that can be nil e.g. when modules are declared dynamically.
       return unless o.service_name.nil?
       if o.name.nil?
         o.service_name = 'GenericService'
diff --git a/templates/Makefile.template b/templates/Makefile.template
index 98f4915..e112d88 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -94,7 +94,7 @@
 CPPFLAGS_valgrind = -O0
 OPENSSL_CFLAGS_valgrind = -DPURIFY
 LDFLAGS_valgrind =
-DEFINES_valgrind = _DEBUG DEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
+DEFINES_valgrind = _DEBUG DEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=20
 
 VALID_CONFIG_tsan = 1
 REQUIRE_CUSTOM_LIBRARIES_tsan = 1
@@ -104,7 +104,7 @@
 LDXX_tsan = clang++
 CPPFLAGS_tsan = -O1 -fsanitize=thread -fno-omit-frame-pointer
 LDFLAGS_tsan = -fsanitize=thread
-DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
+DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=10
 
 VALID_CONFIG_asan = 1
 REQUIRE_CUSTOM_LIBRARIES_asan = 1
@@ -114,7 +114,7 @@
 LDXX_asan = clang++
 CPPFLAGS_asan = -O1 -fsanitize=address -fno-omit-frame-pointer
 LDFLAGS_asan = -fsanitize=address
-DEFINES_asan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=5
+DEFINES_asan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=5
 
 VALID_CONFIG_msan = 1
 REQUIRE_CUSTOM_LIBRARIES_msan = 1
@@ -125,7 +125,7 @@
 CPPFLAGS_msan = -O1 -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
 OPENSSL_CFLAGS_msan = -DPURIFY
 LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
-DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=20
+DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=20
 
 VALID_CONFIG_ubsan = 1
 REQUIRE_CUSTOM_LIBRARIES_ubsan = 1
@@ -136,7 +136,7 @@
 CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer
 OPENSSL_CFLAGS_ubsan = -DPURIFY
 LDFLAGS_ubsan = -fsanitize=undefined
-DEFINES_ubsan = NDEBUG GRPC_TEST_SLOWDOWN_FACTOR=10
+DEFINES_ubsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=10
 
 VALID_CONFIG_gcov = 1
 CC_gcov = gcc
@@ -160,7 +160,15 @@
 LD = $(LD_$(CONFIG))
 LDXX = $(LDXX_$(CONFIG))
 AR = ar
+ifeq ($(SYSTEM),Linux)
 STRIP = strip --strip-unneeded
+else
+ifeq ($(SYSTEM),Darwin)
+STRIP = strip -x
+else
+STRIP = strip
+endif
+endif
 INSTALL = install
 RM = rm -f
 
@@ -169,6 +177,10 @@
 endif
 
 
+# Detect if we can use C++11
+CXX11_CHECK_CMD = $(CXX) -std=c++11 -o /dev/null -c test/build/c++11.cc
+HAS_CXX11 = $(shell $(CXX11_CHECK_CMD) 2> /dev/null && echo true || echo false)
+
 # The HOST compiler settings are used to compile the protoc plugins.
 # In most cases, you won't have to change anything, but if you are
 # cross-compiling, you can override these variables from GNU make's
@@ -183,8 +195,17 @@
 DEFINES += $(DEFINES_$(CONFIG)) INSTALL_PREFIX=\"$(prefix)\"
 LDFLAGS += $(LDFLAGS_$(CONFIG))
 
+ifdef EXTRA_DEFINES
+DEFINES += $(EXTRA_DEFINES)
+endif
+
 CFLAGS += -std=c89 -pedantic
+ifeq ($(HAS_CXX11),true)
 CXXFLAGS += -std=c++11
+else
+CXXFLAGS += -std=c++0x
+DEFINES += GRPC_OLD_CXX
+endif
 CPPFLAGS += -g -fPIC -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
 LDFLAGS += -g -fPIC
 
@@ -495,7 +516,11 @@
 
 $(LIBDIR)/$(CONFIG)/protobuf/libprotobuf.a: third_party/protobuf/configure
 	$(E) "[MAKE]    Building protobuf"
+ifeq ($(HAVE_CXX11),true)
 	$(Q)(cd third_party/protobuf ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g" CXXFLAGS="-DLANG_CXX11 -std=c++11" CPPFLAGS="-fPIC $(CPPFLAGS_$(CONFIG)) -g" ./configure --disable-shared --enable-static)
+else
+	$(Q)(cd third_party/protobuf ; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g" CXXFLAGS="-std=c++0x" CPPFLAGS="-fPIC $(CPPFLAGS_$(CONFIG)) -g" ./configure --disable-shared --enable-static)
+endif
 	$(Q)$(MAKE) -C third_party/protobuf clean
 	$(Q)$(MAKE) -C third_party/protobuf
 	$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/protobuf
@@ -1095,11 +1120,11 @@
 ## That simplifies the codegen a bit, but prevents a fully defined Makefile.
 ## I can live with that.
 ##
-% if tgt.build == 'protoc':
+% if tgt.build == 'protoc' or tgt.language == 'c++':
 
 ifeq ($(NO_PROTOBUF),true)
 
-# You can't build the protoc plugins if you don't have protobuf 3.0.0+.
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
 
 $(BINDIR)/$(CONFIG)/${tgt.name}: protobuf_dep_error
 
@@ -1154,7 +1179,7 @@
  $(LDLIBS_SECURE)\
 % endif
  -o $(BINDIR)/$(CONFIG)/${tgt.name}
-% if tgt.build == 'protoc':
+% if tgt.build == 'protoc' or tgt.language == 'c++':
 
 endif
 % endif
diff --git a/templates/tools/run_tests/tests.json.template b/templates/tools/run_tests/tests.json.template
index bb54489..6d7520b 100644
--- a/templates/tools/run_tests/tests.json.template
+++ b/templates/tools/run_tests/tests.json.template
@@ -2,7 +2,9 @@
 import json
 %>
 
-${json.dumps([{"name": tgt.name, "language": tgt.language}
+${json.dumps([{"name": tgt.name,
+               "language": tgt.language,
+               "flaky": tgt.get("flaky", False)}
               for tgt in targets
               if tgt.get('run', True) and tgt.build == 'test'],
              sort_keys=True, indent=2)}
diff --git a/test/build/c++11.cc b/test/build/c++11.cc
new file mode 100644
index 0000000..4822a20
--- /dev/null
+++ b/test/build/c++11.cc
@@ -0,0 +1,52 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/* This is just a compilation test, to see if we have C++11. */
+
+#include <stdlib.h>
+#include <zlib.h>
+
+class Base {
+ public:
+  virtual void foo() = 0;
+};
+
+class Foo final : public Base {
+ public:
+  void foo() override {}
+};
+
+int main() {
+  Foo().foo();
+  return 0;
+}
diff --git a/test/compiler/python_plugin_test.py b/test/compiler/python_plugin_test.py
index 3919de1..1981f49 100644
--- a/test/compiler/python_plugin_test.py
+++ b/test/compiler/python_plugin_test.py
@@ -57,7 +57,6 @@
 
 # Assigned in __main__.
 _build_mode = None
-_port = None
 
 
 class _ServicerMethods(object):
@@ -87,14 +86,14 @@
     while self._paused:
       time.sleep(0)
 
-  def UnaryCall(self, request, context):
+  def UnaryCall(self, request, unused_context):
     response = self.test_pb2.SimpleResponse()
     response.payload.payload_type = self.test_pb2.COMPRESSABLE
     response.payload.payload_compressable = 'a' * request.response_size
     self._control()
     return response
 
-  def StreamingOutputCall(self, request, context):
+  def StreamingOutputCall(self, request, unused_context):
     for parameter in request.response_parameters:
       response = self.test_pb2.StreamingOutputCallResponse()
       response.payload.payload_type = self.test_pb2.COMPRESSABLE
@@ -102,7 +101,7 @@
       self._control()
       yield response
 
-  def StreamingInputCall(self, request_iter, context):
+  def StreamingInputCall(self, request_iter, unused_context):
     response = self.test_pb2.StreamingInputCallResponse()
     aggregated_payload_size = 0
     for request in request_iter:
@@ -111,7 +110,7 @@
     self._control()
     return response
 
-  def FullDuplexCall(self, request_iter, context):
+  def FullDuplexCall(self, request_iter, unused_context):
     for request in request_iter:
       for parameter in request.response_parameters:
         response = self.test_pb2.StreamingOutputCallResponse()
@@ -120,7 +119,7 @@
         self._control()
         yield response
 
-  def HalfDuplexCall(self, request_iter, context):
+  def HalfDuplexCall(self, request_iter, unused_context):
     responses = []
     for request in request_iter:
       for parameter in request.response_parameters:
@@ -133,6 +132,7 @@
       yield response
 
 
+@contextlib.contextmanager
 def _CreateService(test_pb2, delay):
   """Provides a servicer backend and a stub.
 
@@ -148,9 +148,11 @@
     test_pb2: the test_pb2 module generated by this test
     delay: delay in seconds per response from the servicer
     timeout: how long the stub will wait for the servicer by default.
-  Returns:
-    A two-tuple (servicer, stub), where the servicer is the back-end of the
-      service bound to the stub.
+
+  Yields:
+    A three-tuple (servicer_methods, servicer, stub), where the servicer is
+      the back-end of the service bound to the stub and the server and stub
+      are both activated and ready for use.
   """
   servicer_methods = _ServicerMethods(test_pb2, delay)
 
@@ -172,10 +174,13 @@
       return servicer_methods.HalfDuplexCall(request_iter, context)
 
   servicer = Servicer()
-  server = getattr(test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer, _port,
-                                                        None, None)
-  stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)('localhost', _port)
-  return servicer_methods, stub, server
+  server = getattr(
+      test_pb2, SERVER_FACTORY_IDENTIFIER)(servicer, 0, None, None)
+  with server:
+    port = server.port()
+    stub = getattr(test_pb2, STUB_FACTORY_IDENTIFIER)('localhost', port)
+    with stub:
+      yield servicer_methods, stub, server
 
 
 def StreamingInputRequest(test_pb2):
@@ -255,25 +260,23 @@
 
   def testUpDown(self):
     import test_pb2
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
-    request = test_pb2.SimpleRequest(response_size=13)
-    with server, stub:
-      pass
+    with _CreateService(
+        test_pb2, DOES_NOT_MATTER_DELAY) as (servicer, stub, unused_server):
+      request = test_pb2.SimpleRequest(response_size=13)
 
   def testUnaryCall(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
-    request = test_pb2.SimpleRequest(response_size=13)
-    with server, stub:
+    with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
+      request = test_pb2.SimpleRequest(response_size=13)
       response = stub.UnaryCall(request, NORMAL_TIMEOUT)
     expected_response = servicer.UnaryCall(request, None)
     self.assertEqual(expected_response, response)
 
   def testUnaryCallAsync(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, LONG_DELAY)
     request = test_pb2.SimpleRequest(response_size=13)
-    with server, stub:
+    with _CreateService(test_pb2, LONG_DELAY) as (
+        servicer, stub, unused_server):
       start_time = time.clock()
       response_future = stub.UnaryCall.async(request, LONG_TIMEOUT)
       # Check that we didn't block on the asynchronous call.
@@ -285,10 +288,9 @@
   def testUnaryCallAsyncExpired(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
     # set the timeout super low...
-    servicer, stub, server = _CreateService(test_pb2,
-                                            delay=DOES_NOT_MATTER_DELAY)
-    request = test_pb2.SimpleRequest(response_size=13)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
+      request = test_pb2.SimpleRequest(response_size=13)
       with servicer.pause():
         response_future = stub.UnaryCall.async(request, SHORT_TIMEOUT)
         with self.assertRaises(exceptions.ExpirationError):
@@ -296,9 +298,9 @@
 
   def testUnaryCallAsyncCancelled(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
     request = test_pb2.SimpleRequest(response_size=13)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.pause():
         response_future = stub.UnaryCall.async(request, 1)
         response_future.cancel()
@@ -306,18 +308,17 @@
 
   def testUnaryCallAsyncFailed(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
     request = test_pb2.SimpleRequest(response_size=13)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.fail():
         response_future = stub.UnaryCall.async(request, NORMAL_TIMEOUT)
         self.assertIsNotNone(response_future.exception())
 
   def testStreamingOutputCall(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
     request = StreamingOutputRequest(test_pb2)
-    with server, stub:
+    with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
       responses = stub.StreamingOutputCall(request, NORMAL_TIMEOUT)
       expected_responses = servicer.StreamingOutputCall(request, None)
       for check in itertools.izip_longest(expected_responses, responses):
@@ -326,9 +327,9 @@
 
   def testStreamingOutputCallExpired(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
     request = StreamingOutputRequest(test_pb2)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.pause():
         responses = stub.StreamingOutputCall(request, SHORT_TIMEOUT)
         with self.assertRaises(exceptions.ExpirationError):
@@ -336,10 +337,9 @@
 
   def testStreamingOutputCallCancelled(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    unused_servicer, stub, server = _CreateService(test_pb2,
-                                                   DOES_NOT_MATTER_DELAY)
     request = StreamingOutputRequest(test_pb2)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        unused_servicer, stub, unused_server):
       responses = stub.StreamingOutputCall(request, SHORT_TIMEOUT)
       next(responses)
       responses.cancel()
@@ -350,9 +350,9 @@
                  'instead of raising the proper error.')
   def testStreamingOutputCallFailed(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
     request = StreamingOutputRequest(test_pb2)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.fail():
         responses = stub.StreamingOutputCall(request, 1)
         self.assertIsNotNone(responses)
@@ -361,8 +361,7 @@
 
   def testStreamingInputCall(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
-    with server, stub:
+    with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
       response = stub.StreamingInputCall(StreamingInputRequest(test_pb2),
                                          NORMAL_TIMEOUT)
     expected_response = servicer.StreamingInputCall(
@@ -371,9 +370,8 @@
 
   def testStreamingInputCallAsync(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(
-        test_pb2, LONG_DELAY)
-    with server, stub:
+    with _CreateService(test_pb2, LONG_DELAY) as (
+        servicer, stub, unused_server):
       start_time = time.clock()
       response_future = stub.StreamingInputCall.async(
           StreamingInputRequest(test_pb2), LONG_TIMEOUT)
@@ -386,8 +384,8 @@
   def testStreamingInputCallAsyncExpired(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
     # set the timeout super low...
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.pause():
         response_future = stub.StreamingInputCall.async(
             StreamingInputRequest(test_pb2), SHORT_TIMEOUT)
@@ -398,8 +396,8 @@
 
   def testStreamingInputCallAsyncCancelled(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.pause():
         response_future = stub.StreamingInputCall.async(
             StreamingInputRequest(test_pb2), NORMAL_TIMEOUT)
@@ -410,8 +408,8 @@
 
   def testStreamingInputCallAsyncFailed(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.fail():
         response_future = stub.StreamingInputCall.async(
             StreamingInputRequest(test_pb2), SHORT_TIMEOUT)
@@ -419,8 +417,7 @@
 
   def testFullDuplexCall(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
-    with server, stub:
+    with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
       responses = stub.FullDuplexCall(FullDuplexRequest(test_pb2),
                                       NORMAL_TIMEOUT)
       expected_responses = servicer.FullDuplexCall(FullDuplexRequest(test_pb2),
@@ -431,9 +428,9 @@
 
   def testFullDuplexCallExpired(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
     request = FullDuplexRequest(test_pb2)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.pause():
         responses = stub.FullDuplexCall(request, SHORT_TIMEOUT)
         with self.assertRaises(exceptions.ExpirationError):
@@ -441,8 +438,7 @@
 
   def testFullDuplexCallCancelled(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    unused_servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
-    with server, stub:
+    with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
       request = FullDuplexRequest(test_pb2)
       responses = stub.FullDuplexCall(request, NORMAL_TIMEOUT)
       next(responses)
@@ -454,9 +450,9 @@
                  'and fix.')
   def testFullDuplexCallFailed(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, DOES_NOT_MATTER_DELAY)
     request = FullDuplexRequest(test_pb2)
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
       with servicer.fail():
         responses = stub.FullDuplexCall(request, NORMAL_TIMEOUT)
         self.assertIsNotNone(responses)
@@ -465,16 +461,16 @@
 
   def testHalfDuplexCall(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    servicer, stub, server = _CreateService(test_pb2, NO_DELAY)
-    def HalfDuplexRequest():
-      request = test_pb2.StreamingOutputCallRequest()
-      request.response_parameters.add(size=1, interval_us=0)
-      yield request
-      request = test_pb2.StreamingOutputCallRequest()
-      request.response_parameters.add(size=2, interval_us=0)
-      request.response_parameters.add(size=3, interval_us=0)
-      yield request
-    with server, stub:
+    with _CreateService(test_pb2, DOES_NOT_MATTER_DELAY) as (
+        servicer, stub, unused_server):
+      def HalfDuplexRequest():
+        request = test_pb2.StreamingOutputCallRequest()
+        request.response_parameters.add(size=1, interval_us=0)
+        yield request
+        request = test_pb2.StreamingOutputCallRequest()
+        request.response_parameters.add(size=2, interval_us=0)
+        request.response_parameters.add(size=3, interval_us=0)
+        yield request
       responses = stub.HalfDuplexCall(HalfDuplexRequest(), NORMAL_TIMEOUT)
       expected_responses = servicer.HalfDuplexCall(HalfDuplexRequest(), None)
       for check in itertools.izip_longest(expected_responses, responses):
@@ -483,7 +479,6 @@
 
   def testHalfDuplexCallWedged(self):
     import test_pb2  # pylint: disable=g-import-not-at-top
-    _, stub, server = _CreateService(test_pb2, NO_DELAY)
     wait_flag = [False]
     @contextlib.contextmanager
     def wait():  # pylint: disable=invalid-name
@@ -497,7 +492,7 @@
       yield request
       while wait_flag[0]:
         time.sleep(0.1)
-    with server, stub:
+    with _CreateService(test_pb2, NO_DELAY) as (servicer, stub, unused_server):
       with wait():
         responses = stub.HalfDuplexCall(HalfDuplexRequest(), NORMAL_TIMEOUT)
         # half-duplex waits for the client to send all info
@@ -516,6 +511,5 @@
   parser.add_argument('--port', dest='port', type=int, default=0)
   args, remainder = parser.parse_known_args()
   _build_mode = args.build_mode
-  _port = args.port
   sys.argv[1:] = remainder
   unittest.main()
diff --git a/test/compiler/test.proto b/test/compiler/test.proto
index 1714de7..ed7c6a7 100644
--- a/test/compiler/test.proto
+++ b/test/compiler/test.proto
@@ -32,8 +32,7 @@
 // This file is duplicated around the code base. See GitHub issue #526.
 syntax = "proto2";
 
-// TODO(atash): Investigate this statement's utility.
-// package grpc.testing;
+package grpc.testing;
 
 enum PayloadType {
   // Compressable text format.
diff --git a/test/core/end2end/cq_verifier.h b/test/core/end2end/cq_verifier.h
index 8f14710..c1e25d8 100644
--- a/test/core/end2end/cq_verifier.h
+++ b/test/core/end2end/cq_verifier.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_END2END_CQ_VERIFIER_H__
-#define __GRPC_TEST_END2END_CQ_VERIFIER_H__
+#ifndef GRPC_TEST_CORE_END2END_CQ_VERIFIER_H
+#define GRPC_TEST_CORE_END2END_CQ_VERIFIER_H
 
 #include <grpc/grpc.h>
 #include "test/core/util/test_config.h"
@@ -76,4 +76,4 @@
 int byte_buffer_eq_string(grpc_byte_buffer *byte_buffer, const char *string);
 int contains_metadata(grpc_metadata_array *array, const char *key, const char *value);
 
-#endif /* __GRPC_TEST_END2END_CQ_VERIFIER_H__ */
+#endif  /* GRPC_TEST_CORE_END2END_CQ_VERIFIER_H */
diff --git a/test/core/end2end/data/ssl_test_data.h b/test/core/end2end/data/ssl_test_data.h
index 4124867..4f4b30e 100644
--- a/test/core/end2end/data/ssl_test_data.h
+++ b/test/core/end2end/data/ssl_test_data.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef __GRPC_TEST_END2END_DATA_SSL_TEST_DATA_H__
-#define __GRPC_TEST_END2END_DATA_SSL_TEST_DATA_H__
+#ifndef GRPC_TEST_CORE_END2END_DATA_SSL_TEST_DATA_H
+#define GRPC_TEST_CORE_END2END_DATA_SSL_TEST_DATA_H
 
 extern const char test_root_cert[];
 extern const char test_server1_cert[];
 extern const char test_server1_key[];
 
-#endif /* __GRPC_TEST_END2END_DATA_SSL_TEST_DATA_H__ */
+#endif  /* GRPC_TEST_CORE_END2END_DATA_SSL_TEST_DATA_H */
diff --git a/test/core/end2end/end2end_tests.h b/test/core/end2end/end2end_tests.h
index 8f2cd0f..b6d9325 100644
--- a/test/core/end2end/end2end_tests.h
+++ b/test/core/end2end/end2end_tests.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_END2END_END2END_TESTS_H__
-#define __GRPC_TEST_END2END_END2END_TESTS_H__
+#ifndef GRPC_TEST_CORE_END2END_END2END_TESTS_H
+#define GRPC_TEST_CORE_END2END_END2END_TESTS_H
 
 #include <grpc/grpc.h>
 
@@ -63,4 +63,4 @@
 
 void grpc_end2end_tests(grpc_end2end_test_config config);
 
-#endif /* __GRPC_TEST_END2END_END2END_TESTS_H__ */
+#endif  /* GRPC_TEST_CORE_END2END_END2END_TESTS_H */
diff --git a/test/core/end2end/tests/cancel_test_helpers.h b/test/core/end2end/tests/cancel_test_helpers.h
index 3dd7437..f2581dc 100644
--- a/test/core/end2end/tests/cancel_test_helpers.h
+++ b/test/core/end2end/tests/cancel_test_helpers.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_END2END_TESTS_CANCEL_TEST_HELPERS_H__
-#define __GRPC_TEST_END2END_TESTS_CANCEL_TEST_HELPERS_H__
+#ifndef GRPC_TEST_CORE_END2END_TESTS_CANCEL_TEST_HELPERS_H
+#define GRPC_TEST_CORE_END2END_TESTS_CANCEL_TEST_HELPERS_H
 
 typedef struct {
   grpc_call_error (*initiate_cancel)(grpc_call *call);
@@ -48,4 +48,4 @@
     {grpc_call_cancel, GRPC_STATUS_CANCELLED, ""},
     {wait_for_deadline, GRPC_STATUS_DEADLINE_EXCEEDED, "Deadline Exceeded"}, };
 
-#endif
+#endif  /* GRPC_TEST_CORE_END2END_TESTS_CANCEL_TEST_HELPERS_H */
diff --git a/test/core/iomgr/endpoint_tests.h b/test/core/iomgr/endpoint_tests.h
index 3be377c..1679d7b 100644
--- a/test/core/iomgr/endpoint_tests.h
+++ b/test/core/iomgr/endpoint_tests.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_IOMGR_ENDPOINT_TESTS_H__
-#define __GRPC_TEST_IOMGR_ENDPOINT_TESTS_H__
+#ifndef GRPC_TEST_CORE_IOMGR_ENDPOINT_TESTS_H
+#define GRPC_TEST_CORE_IOMGR_ENDPOINT_TESTS_H
 
 #include <sys/types.h>
 
@@ -54,4 +54,4 @@
 
 void grpc_endpoint_tests(grpc_endpoint_test_config config);
 
-#endif /* __GRPC_TEST_IOMGR_ENDPOINT_TESTS_H__ */
+#endif  /* GRPC_TEST_CORE_IOMGR_ENDPOINT_TESTS_H */
diff --git a/test/core/statistics/census_log_tests.h b/test/core/statistics/census_log_tests.h
index f829ab3..28bde08 100644
--- a/test/core/statistics/census_log_tests.h
+++ b/test/core/statistics/census_log_tests.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_STATISTICS_LOG_TESTS_H__
-#define __GRPC_TEST_STATISTICS_LOG_TESTS_H__
+#ifndef GRPC_TEST_CORE_STATISTICS_CENSUS_LOG_TESTS_H
+#define GRPC_TEST_CORE_STATISTICS_CENSUS_LOG_TESTS_H
 
 void test_invalid_record_size();
 void test_end_write_with_different_size();
@@ -48,4 +48,4 @@
 void test_performance();
 void test_small_log();
 
-#endif /* __GRPC_TEST_STATISTICS_LOG_TESTS_H__ */
+#endif  /* GRPC_TEST_CORE_STATISTICS_CENSUS_LOG_TESTS_H */
diff --git a/test/core/transport/chttp2/stream_map_test.c b/test/core/transport/chttp2/stream_map_test.c
index 6b91bdf..d678e0a 100644
--- a/test/core/transport/chttp2/stream_map_test.c
+++ b/test/core/transport/chttp2/stream_map_test.c
@@ -213,7 +213,7 @@
   test_empty_find();
   test_double_deletion();
 
-  while (n < 10000000) {
+  while (n < 100000) {
     test_basic_add_find(n);
     test_delete_evens_sweep(n);
     test_delete_evens_incremental(n);
diff --git a/test/core/transport/transport_end2end_tests.h b/test/core/transport/transport_end2end_tests.h
index 3dc2b9b..1edffe9 100644
--- a/test/core/transport/transport_end2end_tests.h
+++ b/test/core/transport/transport_end2end_tests.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_TRANSPORT_TRANSPORT_END2END_TESTS_H__
-#define __GRPC_TEST_TRANSPORT_TRANSPORT_END2END_TESTS_H__
+#ifndef GRPC_TEST_CORE_TRANSPORT_TRANSPORT_END2END_TESTS_H
+#define GRPC_TEST_CORE_TRANSPORT_TRANSPORT_END2END_TESTS_H
 
 #include "src/core/transport/transport.h"
 
@@ -65,4 +65,4 @@
 /* Run the test suite on one configuration */
 void grpc_transport_end2end_tests(grpc_transport_test_config *config);
 
-#endif /* __GRPC_TEST_TRANSPORT_TRANSPORT_END2END_TESTS_H__ */
+#endif  /* GRPC_TEST_CORE_TRANSPORT_TRANSPORT_END2END_TESTS_H */
diff --git a/test/core/util/grpc_profiler.h b/test/core/util/grpc_profiler.h
index a31fcc1..347a1d3 100644
--- a/test/core/util/grpc_profiler.h
+++ b/test/core/util/grpc_profiler.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_UTIL_GRPC_PROFILER_H__
-#define __GRPC_TEST_UTIL_GRPC_PROFILER_H__
+#ifndef GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H
+#define GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -45,4 +45,4 @@
 }
 #endif /*  __cplusplus */
 
-#endif /* __GRPC_TEST_UTIL_GRPC_PROFILER_H__ */
+#endif  /* GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H */
diff --git a/test/core/util/parse_hexstring.h b/test/core/util/parse_hexstring.h
index 3fce0c9..22bbd17 100644
--- a/test/core/util/parse_hexstring.h
+++ b/test/core/util/parse_hexstring.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef __GRPC_TEST_UTIL_PARSE_HEXSTRING_H_
-#define __GRPC_TEST_UTIL_PARSE_HEXSTRING_H_
+#ifndef GRPC_TEST_CORE_UTIL_PARSE_HEXSTRING_H
+#define GRPC_TEST_CORE_UTIL_PARSE_HEXSTRING_H
 
 #include <grpc/support/slice.h>
 
 gpr_slice parse_hexstring(const char *hexstring);
 
-#endif /* __GRPC_TEST_UTIL_PARSE_HEXSTRING_H_ */
+#endif  /* GRPC_TEST_CORE_UTIL_PARSE_HEXSTRING_H */
diff --git a/test/core/util/port.h b/test/core/util/port.h
index 2a12ab9..b516ec5 100644
--- a/test/core/util/port.h
+++ b/test/core/util/port.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_UTIL_PORT_H__
-#define __GRPC_TEST_UTIL_PORT_H__
+#ifndef GRPC_TEST_CORE_UTIL_PORT_H
+#define GRPC_TEST_CORE_UTIL_PORT_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -49,4 +49,4 @@
 }
 #endif
 
-#endif /* __GRPC_TEST_UTIL_PORT_H__ */
+#endif  /* GRPC_TEST_CORE_UTIL_PORT_H */
diff --git a/test/core/util/port_posix.c b/test/core/util/port_posix.c
index 0b6e791..36f13e1 100644
--- a/test/core/util/port_posix.c
+++ b/test/core/util/port_posix.c
@@ -113,15 +113,23 @@
 
   /* Type of port to first pick in next iteration */
   int is_tcp = 1;
-  int try
-    = 0;
+  int try = 0;
 
   for (;;) {
-    int port = try
-      < NUM_RANDOM_PORTS_TO_PICK ? rand() % (65536 - 30000) + 30000 : 0;
+    int port;
+    try++;
+    if (try == 1) {
+      port = getpid() % (65536 - 30000) + 30000;
+    } else if (try <= NUM_RANDOM_PORTS_TO_PICK) {
+      port = rand() % (65536 - 30000) + 30000;
+    } else {
+      port = 0;
+    }
+    
     if (!is_port_available(&port, is_tcp)) {
       continue;
     }
+
     GPR_ASSERT(port > 0);
     /* Check that the port # is free for the other type of socket also */
     if (!is_port_available(&port, !is_tcp)) {
diff --git a/test/core/util/slice_splitter.h b/test/core/util/slice_splitter.h
index b67fe73..1ce1c09 100644
--- a/test/core/util/slice_splitter.h
+++ b/test/core/util/slice_splitter.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_UTIL_SLICE_SPLITTER_H__
-#define __GRPC_TEST_UTIL_SLICE_SPLITTER_H__
+#ifndef GRPC_TEST_CORE_UTIL_SLICE_SPLITTER_H
+#define GRPC_TEST_CORE_UTIL_SLICE_SPLITTER_H
 
 /* utility function to split/merge slices together to help create test
    cases */
@@ -65,4 +65,4 @@
 
 const char *grpc_slice_split_mode_name(grpc_slice_split_mode mode);
 
-#endif /* __GRPC_TEST_UTIL_SLICE_SPLITTER_H__ */
+#endif  /* GRPC_TEST_CORE_UTIL_SLICE_SPLITTER_H */
diff --git a/test/core/util/test_config.c b/test/core/util/test_config.c
index 1c46407..1f0f017 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.c
@@ -34,6 +34,7 @@
 #include "test/core/util/test_config.h"
 
 #include <grpc/support/port_platform.h>
+#include <grpc/support/log.h>
 #include <stdlib.h>
 #include <signal.h>
 
@@ -52,6 +53,9 @@
   /* disable SIGPIPE */
   signal(SIGPIPE, SIG_IGN);
 #endif
+  gpr_log(GPR_DEBUG, "test slowdown: machine=%f build=%f total=%f",
+          GRPC_TEST_SLOWDOWN_MACHINE_FACTOR, GRPC_TEST_SLOWDOWN_BUILD_FACTOR,
+          GRPC_TEST_SLOWDOWN_FACTOR);
   /* seed rng with pid, so we don't end up with the same random numbers as a
      concurrently running test binary */
   srand(seed());
diff --git a/test/core/util/test_config.h b/test/core/util/test_config.h
index 74c2a3c..668a069 100644
--- a/test/core/util/test_config.h
+++ b/test/core/util/test_config.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPC_TEST_UTIL_TEST_CONFIG_H__
-#define __GRPC_TEST_UTIL_TEST_CONFIG_H__
+#ifndef GRPC_TEST_CORE_UTIL_TEST_CONFIG_H
+#define GRPC_TEST_CORE_UTIL_TEST_CONFIG_H
 
 #include <grpc/support/time.h>
 
@@ -40,16 +40,23 @@
 extern "C" {
 #endif /*  __cplusplus */
 
-#ifndef GRPC_TEST_SLOWDOWN_FACTOR
-#define GRPC_TEST_SLOWDOWN_FACTOR 1.0
+#ifndef GRPC_TEST_SLOWDOWN_BUILD_FACTOR
+#define GRPC_TEST_SLOWDOWN_BUILD_FACTOR 1.0
 #endif
 
+#ifndef GRPC_TEST_SLOWDOWN_MACHINE_FACTOR
+#define GRPC_TEST_SLOWDOWN_MACHINE_FACTOR 1.0
+#endif
+
+#define GRPC_TEST_SLOWDOWN_FACTOR \
+  (GRPC_TEST_SLOWDOWN_BUILD_FACTOR * GRPC_TEST_SLOWDOWN_MACHINE_FACTOR)
+
 #define GRPC_TIMEOUT_SECONDS_TO_DEADLINE(x) \
   gpr_time_add(gpr_now(),                   \
                gpr_time_from_micros(GRPC_TEST_SLOWDOWN_FACTOR * 1e6 * (x)))
 
 #define GRPC_TIMEOUT_MILLIS_TO_DEADLINE(x) \
-  gpr_time_add(gpr_now(),                   \
+  gpr_time_add(gpr_now(),                  \
                gpr_time_from_micros(GRPC_TEST_SLOWDOWN_FACTOR * 1e3 * (x)))
 
 void grpc_test_init(int argc, char **argv);
@@ -58,4 +65,4 @@
 }
 #endif /*  __cplusplus */
 
-#endif /* __GRPC_TEST_UTIL_TEST_CONFIG_H__ */
+#endif  /* GRPC_TEST_CORE_UTIL_TEST_CONFIG_H */
diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc
index afc7fab..70df9e1 100644
--- a/test/cpp/end2end/async_end2end_test.cc
+++ b/test/cpp/end2end/async_end2end_test.cc
@@ -66,7 +66,7 @@
 
 namespace {
 
-void* tag(int i) { return (void*)(gpr_intptr) i; }
+void* tag(int i) { return (void*)(gpr_intptr)i; }
 
 void verify_ok(CompletionQueue* cq, int i, bool expect_ok) {
   bool ok;
@@ -80,7 +80,7 @@
  protected:
   AsyncEnd2endTest() : service_(&srv_cq_) {}
 
-  void SetUp() override {
+  void SetUp() GRPC_OVERRIDE {
     int port = grpc_pick_unused_port_or_die();
     server_address_ << "localhost:" << port;
     // Setup server
@@ -90,7 +90,7 @@
     server_ = builder.BuildAndStart();
   }
 
-  void TearDown() override {
+  void TearDown() GRPC_OVERRIDE {
     server_->Shutdown();
     void* ignored_tag;
     bool ignored_ok;
@@ -127,7 +127,7 @@
 
       send_request.set_message("Hello");
       std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader(
-          stub_->Echo(&cli_ctx, send_request, &cli_cq_, tag(1)));
+          stub_->AsyncEcho(&cli_ctx, send_request, &cli_cq_, tag(1)));
 
       service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, &srv_cq_,
                            tag(2));
@@ -181,7 +181,7 @@
 
   send_request.set_message("Hello");
   std::unique_ptr<ClientAsyncWriter<EchoRequest> > cli_stream(
-      stub_->RequestStream(&cli_ctx, &recv_response, &cli_cq_, tag(1)));
+      stub_->AsyncRequestStream(&cli_ctx, &recv_response, &cli_cq_, tag(1)));
 
   service_.RequestRequestStream(&srv_ctx, &srv_stream, &srv_cq_, tag(2));
 
@@ -234,7 +234,7 @@
 
   send_request.set_message("Hello");
   std::unique_ptr<ClientAsyncReader<EchoResponse> > cli_stream(
-      stub_->ResponseStream(&cli_ctx, send_request, &cli_cq_, tag(1)));
+      stub_->AsyncResponseStream(&cli_ctx, send_request, &cli_cq_, tag(1)));
 
   service_.RequestResponseStream(&srv_ctx, &recv_request, &srv_stream, &srv_cq_,
                                  tag(2));
@@ -285,7 +285,7 @@
 
   send_request.set_message("Hello");
   std::unique_ptr<ClientAsyncReaderWriter<EchoRequest, EchoResponse> >
-      cli_stream(stub_->BidiStream(&cli_ctx, &cli_cq_, tag(1)));
+      cli_stream(stub_->AsyncBidiStream(&cli_ctx, &cli_cq_, tag(1)));
 
   service_.RequestBidiStream(&srv_ctx, &srv_stream, &srv_cq_, tag(2));
 
@@ -343,7 +343,7 @@
   cli_ctx.AddMetadata(meta2.first, meta2.second);
 
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader(
-      stub_->Echo(&cli_ctx, send_request, &cli_cq_, tag(1)));
+      stub_->AsyncEcho(&cli_ctx, send_request, &cli_cq_, tag(1)));
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, &srv_cq_,
                        tag(2));
@@ -385,7 +385,7 @@
   std::pair<grpc::string, grpc::string> meta2("key2", "val2");
 
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader(
-      stub_->Echo(&cli_ctx, send_request, &cli_cq_, tag(1)));
+      stub_->AsyncEcho(&cli_ctx, send_request, &cli_cq_, tag(1)));
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, &srv_cq_,
                        tag(2));
@@ -433,7 +433,7 @@
   std::pair<grpc::string, grpc::string> meta2("key2", "val2");
 
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader(
-      stub_->Echo(&cli_ctx, send_request, &cli_cq_, tag(1)));
+      stub_->AsyncEcho(&cli_ctx, send_request, &cli_cq_, tag(1)));
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, &srv_cq_,
                        tag(2));
@@ -490,7 +490,7 @@
   cli_ctx.AddMetadata(meta2.first, meta2.second);
 
   std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader(
-      stub_->Echo(&cli_ctx, send_request, &cli_cq_, tag(1)));
+      stub_->AsyncEcho(&cli_ctx, send_request, &cli_cq_, tag(1)));
 
   service_.RequestEcho(&srv_ctx, &recv_request, &response_writer, &srv_cq_,
                        tag(2));
diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc
index 3e5e60e..c586849 100644
--- a/test/cpp/end2end/end2end_test.cc
+++ b/test/cpp/end2end/end2end_test.cc
@@ -84,7 +84,7 @@
 class TestServiceImpl : public ::grpc::cpp::test::util::TestService::Service {
  public:
   Status Echo(ServerContext* context, const EchoRequest* request,
-              EchoResponse* response) override {
+              EchoResponse* response) GRPC_OVERRIDE {
     response->set_message(request->message());
     MaybeEchoDeadline(context, request, response);
     return Status::OK;
@@ -94,7 +94,7 @@
 
   Status RequestStream(ServerContext* context,
                        ServerReader<EchoRequest>* reader,
-                       EchoResponse* response) override {
+                       EchoResponse* response) GRPC_OVERRIDE {
     EchoRequest request;
     response->set_message("");
     while (reader->Read(&request)) {
@@ -106,7 +106,7 @@
   // Return 3 messages.
   // TODO(yangg) make it generic by adding a parameter into EchoRequest
   Status ResponseStream(ServerContext* context, const EchoRequest* request,
-                        ServerWriter<EchoResponse>* writer) override {
+                        ServerWriter<EchoResponse>* writer) GRPC_OVERRIDE {
     EchoResponse response;
     response.set_message(request->message() + "0");
     writer->Write(response);
@@ -118,9 +118,9 @@
     return Status::OK;
   }
 
-  Status BidiStream(
-      ServerContext* context,
-      ServerReaderWriter<EchoResponse, EchoRequest>* stream) override {
+  Status BidiStream(ServerContext* context,
+                    ServerReaderWriter<EchoResponse, EchoRequest>* stream)
+      GRPC_OVERRIDE {
     EchoRequest request;
     EchoResponse response;
     while (stream->Read(&request)) {
@@ -136,7 +136,7 @@
     : public ::grpc::cpp::test::util::duplicate::TestService::Service {
  public:
   Status Echo(ServerContext* context, const EchoRequest* request,
-              EchoResponse* response) override {
+              EchoResponse* response) GRPC_OVERRIDE {
     response->set_message("no package");
     return Status::OK;
   }
@@ -146,7 +146,7 @@
  protected:
   End2endTest() : thread_pool_(2) {}
 
-  void SetUp() override {
+  void SetUp() GRPC_OVERRIDE {
     int port = grpc_pick_unused_port_or_die();
     server_address_ << "localhost:" << port;
     // Setup server
@@ -158,7 +158,7 @@
     server_ = builder.BuildAndStart();
   }
 
-  void TearDown() override { server_->Shutdown(); }
+  void TearDown() GRPC_OVERRIDE { server_->Shutdown(); }
 
   void ResetStub() {
     std::shared_ptr<ChannelInterface> channel = CreateChannel(
diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc
index a35e79e..ae68f7a 100644
--- a/test/cpp/interop/client.cc
+++ b/test/cpp/interop/client.cc
@@ -38,6 +38,8 @@
 #include <string>
 #include <thread>
 
+#include <unistd.h>
+
 #include <grpc/grpc.h>
 #include <grpc/support/log.h>
 #include <gflags/gflags.h>
@@ -314,8 +316,7 @@
     GPR_ASSERT(response.payload().body() ==
                grpc::string(kResponseMessageSize, '\0'));
     gpr_log(GPR_INFO, "received message %d", i);
-    std::this_thread::sleep_for(
-        std::chrono::milliseconds(kReceiveDelayMilliSeconds));
+    usleep(kReceiveDelayMilliSeconds * 1000);
     ++i;
   }
   GPR_ASSERT(kNumResponseMessages == i);
diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc
index 1ec5100..743482e 100644
--- a/test/cpp/interop/server.cc
+++ b/test/cpp/interop/server.cc
@@ -36,6 +36,7 @@
 #include <thread>
 
 #include <signal.h>
+#include <unistd.h>
 
 #include <gflags/gflags.h>
 #include <grpc/grpc.h>
@@ -220,7 +221,7 @@
   std::unique_ptr<Server> server(builder.BuildAndStart());
   gpr_log(GPR_INFO, "Server listening on %s", server_address.str().c_str());
   while (!got_sigint) {
-    std::this_thread::sleep_for(std::chrono::seconds(5));
+    sleep(5);
   }
 }
 
diff --git a/test/cpp/qps/client_async.cc b/test/cpp/qps/client_async.cc
new file mode 100644
index 0000000..9ea9cfe
--- /dev/null
+++ b/test/cpp/qps/client_async.cc
@@ -0,0 +1,341 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <cassert>
+#include <functional>
+#include <memory>
+#include <string>
+#include <thread>
+#include <vector>
+#include <sstream>
+
+#include <grpc/grpc.h>
+#include <grpc/support/histogram.h>
+#include <grpc/support/log.h>
+#include <gflags/gflags.h>
+#include <grpc++/async_unary_call.h>
+#include <grpc++/client_context.h>
+#include <grpc++/status.h>
+#include "test/core/util/grpc_profiler.h"
+#include "test/cpp/util/create_test_channel.h"
+#include "test/cpp/qps/qpstest.pb.h"
+
+DEFINE_bool(enable_ssl, false, "Whether to use ssl/tls.");
+DEFINE_int32(server_port, 0, "Server port.");
+DEFINE_string(server_host, "127.0.0.1", "Server host.");
+DEFINE_int32(client_threads, 4, "Number of client threads.");
+
+// We have a configurable number of channels for sending RPCs.
+// RPCs are sent round-robin on the available channels by the
+// various threads. Interesting cases are 1 global channel or
+// 1 per-thread channel, but we can support any number.
+// The channels are assigned round-robin on an RPC by RPC basis
+// rather than just at initialization time in order to also measure the
+// impact of cache thrashing caused by channel changes. This is an issue
+// if you are not in one of the above "interesting cases"
+DEFINE_int32(client_channels, 4, "Number of client channels.");
+
+DEFINE_int32(num_rpcs, 1000, "Number of RPCs per thread.");
+DEFINE_int32(payload_size, 1, "Payload size in bytes");
+
+// Alternatively, specify parameters for test as a workload so that multiple
+// tests are initiated back-to-back. This is convenient for keeping a borg
+// allocation consistent. This is a space-separated list of
+// [threads channels num_rpcs payload_size ]*
+DEFINE_string(workload, "", "Workload parameters");
+
+using grpc::ChannelInterface;
+using grpc::CreateTestChannel;
+using grpc::testing::ServerStats;
+using grpc::testing::SimpleRequest;
+using grpc::testing::SimpleResponse;
+using grpc::testing::StatsRequest;
+using grpc::testing::TestService;
+
+// In some distros, gflags is in the namespace google, and in some others,
+// in gflags. This hack is enabling us to find both.
+namespace google {}
+namespace gflags {}
+using namespace google;
+using namespace gflags;
+
+static double now() {
+  gpr_timespec tv = gpr_now();
+  return 1e9 * tv.tv_sec + tv.tv_nsec;
+}
+
+class ClientRpcContext {
+ public:
+  ClientRpcContext() {}
+  virtual ~ClientRpcContext() {}
+  virtual bool RunNextState() = 0;  // do next state, return false if steps done
+  static void *tag(ClientRpcContext *c) { return reinterpret_cast<void *>(c); }
+  static ClientRpcContext *detag(void *t) {
+    return reinterpret_cast<ClientRpcContext *>(t);
+  }
+  virtual void report_stats(gpr_histogram *hist) = 0;
+};
+template <class RequestType, class ResponseType>
+class ClientRpcContextUnaryImpl : public ClientRpcContext {
+ public:
+  ClientRpcContextUnaryImpl(
+      TestService::Stub *stub,
+      const RequestType &req,
+      std::function<
+          std::unique_ptr<grpc::ClientAsyncResponseReader<ResponseType>>(
+	      TestService::Stub *, grpc::ClientContext *, const RequestType &,
+	      void *)> start_req,
+      std::function<void(grpc::Status, ResponseType *)> on_done)
+      : context_(),
+	stub_(stub),
+        req_(req),
+        response_(),
+        next_state_(&ClientRpcContextUnaryImpl::ReqSent),
+        callback_(on_done),
+        start_(now()),
+        response_reader_(
+	    start_req(stub_, &context_, req_, ClientRpcContext::tag(this))) {}
+  ~ClientRpcContextUnaryImpl() GRPC_OVERRIDE {}
+  bool RunNextState() GRPC_OVERRIDE { return (this->*next_state_)(); }
+  void report_stats(gpr_histogram *hist) GRPC_OVERRIDE {
+    gpr_histogram_add(hist, now() - start_);
+  }
+
+ private:
+  bool ReqSent() {
+    next_state_ = &ClientRpcContextUnaryImpl::RespDone;
+    response_reader_->Finish(&response_, &status_, ClientRpcContext::tag(this));
+    return true;
+  }
+  bool RespDone() {
+    next_state_ = &ClientRpcContextUnaryImpl::DoCallBack;
+    return false;
+  }
+  bool DoCallBack() {
+    callback_(status_, &response_);
+    return false;
+  }
+  grpc::ClientContext context_;
+  TestService::Stub *stub_;
+  RequestType req_;
+  ResponseType response_;
+  bool (ClientRpcContextUnaryImpl::*next_state_)();
+  std::function<void(grpc::Status, ResponseType *)> callback_;
+  grpc::Status status_;
+  double start_;
+  std::unique_ptr<grpc::ClientAsyncResponseReader<ResponseType>>
+      response_reader_;
+};
+
+static void RunTest(const int client_threads, const int client_channels,
+                    const int num_rpcs, const int payload_size) {
+  gpr_log(GPR_INFO,
+          "QPS test with parameters\n"
+          "enable_ssl = %d\n"
+          "client_channels = %d\n"
+          "client_threads = %d\n"
+          "num_rpcs = %d\n"
+          "payload_size = %d\n"
+          "server_host:server_port = %s:%d\n\n",
+          FLAGS_enable_ssl, client_channels, client_threads, num_rpcs,
+          payload_size, FLAGS_server_host.c_str(), FLAGS_server_port);
+
+  std::ostringstream oss;
+  oss << FLAGS_server_host << ":" << FLAGS_server_port;
+
+  class ClientChannelInfo {
+   public:
+    explicit ClientChannelInfo(const grpc::string &server)
+        : channel_(CreateTestChannel(server, FLAGS_enable_ssl)),
+          stub_(TestService::NewStub(channel_)) {}
+    ChannelInterface *get_channel() { return channel_.get(); }
+    TestService::Stub *get_stub() { return stub_.get(); }
+
+   private:
+    std::shared_ptr<ChannelInterface> channel_;
+    std::unique_ptr<TestService::Stub> stub_;
+  };
+
+  std::vector<ClientChannelInfo> channels;
+  for (int i = 0; i < client_channels; i++) {
+    channels.push_back(ClientChannelInfo(oss.str()));
+  }
+
+  std::vector<std::thread> threads;  // Will add threads when ready to execute
+  std::vector< ::gpr_histogram *> thread_stats(client_threads);
+
+  TestService::Stub *stub_stats = channels[0].get_stub();
+  grpc::ClientContext context_stats_begin;
+  StatsRequest stats_request;
+  ServerStats server_stats_begin;
+  stats_request.set_test_num(0);
+  grpc::Status status_beg = stub_stats->CollectServerStats(
+      &context_stats_begin, stats_request, &server_stats_begin);
+
+  grpc_profiler_start("qps_client_async.prof");
+
+  auto CheckDone = [=](grpc::Status s, SimpleResponse *response) {
+    GPR_ASSERT(s.IsOk() && (response->payload().type() ==
+                            grpc::testing::PayloadType::COMPRESSABLE) &&
+               (response->payload().body().length() ==
+                static_cast<size_t>(payload_size)));
+  };
+
+  for (int i = 0; i < client_threads; i++) {
+    gpr_histogram *hist = gpr_histogram_create(0.01, 60e9);
+    GPR_ASSERT(hist != NULL);
+    thread_stats[i] = hist;
+
+    threads.push_back(std::thread(
+        [hist, client_threads, client_channels, num_rpcs, payload_size,
+         &channels, &CheckDone](int channel_num) {
+          using namespace std::placeholders;
+          SimpleRequest request;
+          request.set_response_type(grpc::testing::PayloadType::COMPRESSABLE);
+          request.set_response_size(payload_size);
+
+          grpc::CompletionQueue cli_cq;
+	  auto start_req = std::bind(&TestService::Stub::AsyncUnaryCall, _1,
+				     _2, _3, &cli_cq, _4);
+
+          int rpcs_sent = 0;
+          while (rpcs_sent < num_rpcs) {
+            rpcs_sent++;
+            TestService::Stub *stub = channels[channel_num].get_stub();
+            new ClientRpcContextUnaryImpl<SimpleRequest, SimpleResponse>(stub,
+                request, start_req, CheckDone);
+            void *got_tag;
+            bool ok;
+
+            // Need to call 2 next for every 1 RPC (1 for req done, 1 for resp
+            // done)
+            cli_cq.Next(&got_tag, &ok);
+            if (!ok) break;
+            ClientRpcContext *ctx = ClientRpcContext::detag(got_tag);
+            if (ctx->RunNextState() == false) {
+              // call the callback and then delete it
+              ctx->report_stats(hist);
+              ctx->RunNextState();
+              delete ctx;
+            }
+            cli_cq.Next(&got_tag, &ok);
+            if (!ok) break;
+            ctx = ClientRpcContext::detag(got_tag);
+            if (ctx->RunNextState() == false) {
+              // call the callback and then delete it
+              ctx->report_stats(hist);
+	      ctx->RunNextState();
+              delete ctx;
+            }
+            // Now do runtime round-robin assignment of the next
+            // channel number
+            channel_num += client_threads;
+            channel_num %= client_channels;
+          }
+        },
+        i % client_channels));
+  }
+
+  gpr_histogram *hist = gpr_histogram_create(0.01, 60e9);
+  GPR_ASSERT(hist != NULL);
+  for (auto &t : threads) {
+    t.join();
+  }
+
+  grpc_profiler_stop();
+
+  for (int i = 0; i < client_threads; i++) {
+    gpr_histogram *h = thread_stats[i];
+    gpr_log(GPR_INFO, "latency at thread %d (50/90/95/99/99.9): %f/%f/%f/%f/%f",
+            i, gpr_histogram_percentile(h, 50), gpr_histogram_percentile(h, 90),
+            gpr_histogram_percentile(h, 95), gpr_histogram_percentile(h, 99),
+            gpr_histogram_percentile(h, 99.9));
+    gpr_histogram_merge(hist, h);
+    gpr_histogram_destroy(h);
+  }
+
+  gpr_log(
+      GPR_INFO,
+      "latency across %d threads with %d channels and %d payload "
+      "(50/90/95/99/99.9): %f / %f / %f / %f / %f",
+      client_threads, client_channels, payload_size,
+      gpr_histogram_percentile(hist, 50), gpr_histogram_percentile(hist, 90),
+      gpr_histogram_percentile(hist, 95), gpr_histogram_percentile(hist, 99),
+      gpr_histogram_percentile(hist, 99.9));
+  gpr_histogram_destroy(hist);
+
+  grpc::ClientContext context_stats_end;
+  ServerStats server_stats_end;
+  grpc::Status status_end = stub_stats->CollectServerStats(
+      &context_stats_end, stats_request, &server_stats_end);
+
+  double elapsed = server_stats_end.time_now() - server_stats_begin.time_now();
+  int total_rpcs = client_threads * num_rpcs;
+  double utime = server_stats_end.time_user() - server_stats_begin.time_user();
+  double stime =
+      server_stats_end.time_system() - server_stats_begin.time_system();
+  gpr_log(GPR_INFO,
+          "Elapsed time: %.3f\n"
+          "RPC Count: %d\n"
+          "QPS: %.3f\n"
+          "System time: %.3f\n"
+          "User time: %.3f\n"
+          "Resource usage: %.1f%%\n",
+          elapsed, total_rpcs, total_rpcs / elapsed, stime, utime,
+          (stime + utime) / elapsed * 100.0);
+}
+
+int main(int argc, char **argv) {
+  grpc_init();
+  ParseCommandLineFlags(&argc, &argv, true);
+
+  GPR_ASSERT(FLAGS_server_port);
+
+  if (FLAGS_workload.length() == 0) {
+    RunTest(FLAGS_client_threads, FLAGS_client_channels, FLAGS_num_rpcs,
+            FLAGS_payload_size);
+  } else {
+    std::istringstream workload(FLAGS_workload);
+    int client_threads, client_channels, num_rpcs, payload_size;
+    workload >> client_threads;
+    while (!workload.eof()) {
+      workload >> client_channels >> num_rpcs >> payload_size;
+      RunTest(client_threads, client_channels, num_rpcs, payload_size);
+      workload >> client_threads;
+    }
+    gpr_log(GPR_INFO, "Done with specified workload.");
+  }
+
+  grpc_shutdown();
+  return 0;
+}
diff --git a/test/cpp/qps/server.cc b/test/cpp/qps/server.cc
index b54f14d..005f0f9 100644
--- a/test/cpp/qps/server.cc
+++ b/test/cpp/qps/server.cc
@@ -36,6 +36,8 @@
 #include <sys/signal.h>
 #include <thread>
 
+#include <unistd.h>
+
 #include <gflags/gflags.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/host_port.h>
@@ -98,7 +100,7 @@
 
 namespace {
 
-class TestServiceImpl final : public TestService::Service {
+class TestServiceImpl GRPC_FINAL : public TestService::Service {
  public:
   Status CollectServerStats(ServerContext* context, const StatsRequest*,
                             ServerStats* response) {
@@ -147,7 +149,7 @@
   grpc_profiler_start("qps_server.prof");
 
   while (!got_sigint) {
-    std::this_thread::sleep_for(std::chrono::seconds(5));
+    sleep(5);
   }
 
   grpc_profiler_stop();
diff --git a/test/cpp/qps/server_async.cc b/test/cpp/qps/server_async.cc
new file mode 100644
index 0000000..c019c1b
--- /dev/null
+++ b/test/cpp/qps/server_async.cc
@@ -0,0 +1,301 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <forward_list>
+#include <functional>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/signal.h>
+#include <thread>
+
+#include <gflags/gflags.h>
+#include <grpc/support/alloc.h>
+#include <grpc/support/host_port.h>
+#include <grpc++/async_unary_call.h>
+#include <grpc++/config.h>
+#include <grpc++/server.h>
+#include <grpc++/server_builder.h>
+#include <grpc++/server_context.h>
+#include <grpc++/server_credentials.h>
+#include <grpc++/status.h>
+#include <gtest/gtest.h>
+#include "src/cpp/server/thread_pool.h"
+#include "test/core/util/grpc_profiler.h"
+#include "test/cpp/qps/qpstest.pb.h"
+
+#include <grpc/grpc.h>
+#include <grpc/support/log.h>
+
+DEFINE_bool(enable_ssl, false, "Whether to use ssl/tls.");
+DEFINE_int32(port, 0, "Server port.");
+DEFINE_int32(server_threads, 4, "Number of server threads.");
+
+using grpc::CompletionQueue;
+using grpc::InsecureServerCredentials;
+using grpc::Server;
+using grpc::ServerBuilder;
+using grpc::ServerContext;
+using grpc::ThreadPool;
+using grpc::testing::Payload;
+using grpc::testing::PayloadType;
+using grpc::testing::ServerStats;
+using grpc::testing::SimpleRequest;
+using grpc::testing::SimpleResponse;
+using grpc::testing::StatsRequest;
+using grpc::testing::TestService;
+using grpc::Status;
+
+// In some distros, gflags is in the namespace google, and in some others,
+// in gflags. This hack is enabling us to find both.
+namespace google {}
+namespace gflags {}
+using namespace google;
+using namespace gflags;
+
+static bool got_sigint = false;
+
+static void sigint_handler(int x) { got_sigint = 1; }
+
+static double time_double(struct timeval *tv) {
+  return tv->tv_sec + 1e-6 * tv->tv_usec;
+}
+
+static bool SetPayload(PayloadType type, int size, Payload *payload) {
+  PayloadType response_type = type;
+  // TODO(yangg): Support UNCOMPRESSABLE payload.
+  if (type != PayloadType::COMPRESSABLE) {
+    return false;
+  }
+  payload->set_type(response_type);
+  std::unique_ptr<char[]> body(new char[size]());
+  payload->set_body(body.get(), size);
+  return true;
+}
+
+namespace {
+
+class AsyncQpsServerTest {
+ public:
+  AsyncQpsServerTest() : srv_cq_(), async_service_(&srv_cq_), server_(nullptr) {
+    char *server_address = NULL;
+    gpr_join_host_port(&server_address, "::", FLAGS_port);
+
+    ServerBuilder builder;
+    builder.AddPort(server_address, InsecureServerCredentials());
+
+    builder.RegisterAsyncService(&async_service_);
+
+    server_ = builder.BuildAndStart();
+    gpr_log(GPR_INFO, "Server listening on %s\n", server_address);
+    gpr_free(server_address);
+
+    using namespace std::placeholders;
+    request_unary_ = std::bind(&TestService::AsyncService::RequestUnaryCall,
+                               &async_service_, _1, _2, _3, &srv_cq_, _4);
+    request_stats_ =
+        std::bind(&TestService::AsyncService::RequestCollectServerStats,
+                  &async_service_, _1, _2, _3, &srv_cq_, _4);
+    for (int i = 0; i < 100; i++) {
+      contexts_.push_front(
+          new ServerRpcContextUnaryImpl<SimpleRequest, SimpleResponse>(
+              request_unary_, UnaryCall));
+      contexts_.push_front(
+          new ServerRpcContextUnaryImpl<StatsRequest, ServerStats>(
+              request_stats_, CollectServerStats));
+    }
+  }
+  ~AsyncQpsServerTest() {
+    server_->Shutdown();
+    void *ignored_tag;
+    bool ignored_ok;
+    srv_cq_.Shutdown();
+    while (srv_cq_.Next(&ignored_tag, &ignored_ok)) {
+    }
+    while (!contexts_.empty()) {
+      delete contexts_.front();
+      contexts_.pop_front();
+    }
+  }
+  void ServeRpcs(int num_threads) {
+    std::vector<std::thread> threads;
+    for (int i = 0; i < num_threads; i++) {
+      threads.push_back(std::thread([=]() {
+        // Wait until work is available or we are shutting down
+        bool ok;
+        void *got_tag;
+        while (srv_cq_.Next(&got_tag, &ok)) {
+          EXPECT_EQ(ok, true);
+          ServerRpcContext *ctx = detag(got_tag);
+          // The tag is a pointer to an RPC context to invoke
+          if (ctx->RunNextState() == false) {
+            // this RPC context is done, so refresh it
+            ctx->Reset();
+          }
+        }
+        return;
+      }));
+    }
+    while (!got_sigint) {
+      std::this_thread::sleep_for(std::chrono::seconds(5));
+    }
+  }
+
+ private:
+  class ServerRpcContext {
+   public:
+    ServerRpcContext() {}
+    virtual ~ServerRpcContext(){};
+    virtual bool RunNextState() = 0;// do next state, return false if all done
+    virtual void Reset() = 0;     // start this back at a clean state
+  };
+  static void *tag(ServerRpcContext *func) {
+    return reinterpret_cast<void *>(func);
+  }
+  static ServerRpcContext *detag(void *tag) {
+    return reinterpret_cast<ServerRpcContext *>(tag);
+  }
+
+  template <class RequestType, class ResponseType>
+  class ServerRpcContextUnaryImpl : public ServerRpcContext {
+   public:
+    ServerRpcContextUnaryImpl(
+        std::function<void(ServerContext *, RequestType *,
+                           grpc::ServerAsyncResponseWriter<ResponseType> *,
+                           void *)> request_method,
+        std::function<grpc::Status(const RequestType *, ResponseType *)>
+            invoke_method)
+        : next_state_(&ServerRpcContextUnaryImpl::invoker),
+          request_method_(request_method),
+          invoke_method_(invoke_method),
+          response_writer_(&srv_ctx_) {
+      request_method_(&srv_ctx_, &req_, &response_writer_,
+                      AsyncQpsServerTest::tag(this));
+    }
+    ~ServerRpcContextUnaryImpl() GRPC_OVERRIDE {}
+    bool RunNextState() GRPC_OVERRIDE { return (this->*next_state_)(); }
+    void Reset() GRPC_OVERRIDE {
+      srv_ctx_ = ServerContext();
+      req_ = RequestType();
+      response_writer_ =
+          grpc::ServerAsyncResponseWriter<ResponseType>(&srv_ctx_);
+
+      // Then request the method
+      next_state_ = &ServerRpcContextUnaryImpl::invoker;
+      request_method_(&srv_ctx_, &req_, &response_writer_,
+                      AsyncQpsServerTest::tag(this));
+    }
+
+   private:
+    bool finisher() { return false; }
+    bool invoker() {
+      ResponseType response;
+
+      // Call the RPC processing function
+      grpc::Status status = invoke_method_(&req_, &response);
+
+      // Have the response writer work and invoke on_finish when done
+      next_state_ = &ServerRpcContextUnaryImpl::finisher;
+      response_writer_.Finish(response, status, AsyncQpsServerTest::tag(this));
+      return true;
+    }
+    ServerContext srv_ctx_;
+    RequestType req_;
+    bool (ServerRpcContextUnaryImpl::*next_state_)();
+    std::function<void(ServerContext *, RequestType *,
+                       grpc::ServerAsyncResponseWriter<ResponseType> *, void *)>
+        request_method_;
+    std::function<grpc::Status(const RequestType *, ResponseType *)>
+        invoke_method_;
+    grpc::ServerAsyncResponseWriter<ResponseType> response_writer_;
+  };
+
+  static Status CollectServerStats(const StatsRequest *,
+                                   ServerStats *response) {
+    struct rusage usage;
+    struct timeval tv;
+    gettimeofday(&tv, NULL);
+    getrusage(RUSAGE_SELF, &usage);
+    response->set_time_now(time_double(&tv));
+    response->set_time_user(time_double(&usage.ru_utime));
+    response->set_time_system(time_double(&usage.ru_stime));
+    return Status::OK;
+  }
+  static Status UnaryCall(const SimpleRequest *request,
+                          SimpleResponse *response) {
+    if (request->has_response_size() && request->response_size() > 0) {
+      if (!SetPayload(request->response_type(), request->response_size(),
+                      response->mutable_payload())) {
+        return Status(grpc::StatusCode::INTERNAL, "Error creating payload.");
+      }
+    }
+    return Status::OK;
+  }
+  CompletionQueue srv_cq_;
+  TestService::AsyncService async_service_;
+  std::unique_ptr<Server> server_;
+  std::function<void(ServerContext *, SimpleRequest *,
+                     grpc::ServerAsyncResponseWriter<SimpleResponse> *, void *)>
+      request_unary_;
+  std::function<void(ServerContext *, StatsRequest *,
+                     grpc::ServerAsyncResponseWriter<ServerStats> *, void *)>
+      request_stats_;
+  std::forward_list<ServerRpcContext *> contexts_;
+};
+
+}  // namespace
+
+static void RunServer() {
+  AsyncQpsServerTest server;
+
+  grpc_profiler_start("qps_server_async.prof");
+
+  server.ServeRpcs(FLAGS_server_threads);
+
+  grpc_profiler_stop();
+}
+
+int main(int argc, char **argv) {
+  grpc_init();
+  ParseCommandLineFlags(&argc, &argv, true);
+  GPR_ASSERT(FLAGS_port != 0);
+  GPR_ASSERT(!FLAGS_enable_ssl);
+
+  signal(SIGINT, sigint_handler);
+
+  RunServer();
+
+  grpc_shutdown();
+  google::protobuf::ShutdownProtobufLibrary();
+
+  return 0;
+}
diff --git a/test/cpp/util/create_test_channel.h b/test/cpp/util/create_test_channel.h
index 3476b83..5c298ce 100644
--- a/test/cpp/util/create_test_channel.h
+++ b/test/cpp/util/create_test_channel.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef __GRPCPP_TEST_UTIL_CREATE_TEST_CHANNEL_H_
-#define __GRPCPP_TEST_UTIL_CREATE_TEST_CHANNEL_H_
+#ifndef GRPC_TEST_CPP_UTIL_CREATE_TEST_CHANNEL_H
+#define GRPC_TEST_CPP_UTIL_CREATE_TEST_CHANNEL_H
 
 #include <memory>
 
@@ -56,4 +56,4 @@
 
 }  // namespace grpc
 
-#endif  // __GRPCPP_TEST_UTIL_CREATE_TEST_CHANNEL_H_
+#endif  // GRPC_TEST_CPP_UTIL_CREATE_TEST_CHANNEL_H
diff --git a/tools/distpackages/build_deb_packages.sh b/tools/distpackages/build_deb_packages.sh
index a5f945b..7b2acb6 100755
--- a/tools/distpackages/build_deb_packages.sh
+++ b/tools/distpackages/build_deb_packages.sh
@@ -33,7 +33,8 @@
 deb_dest="deb_out"
 mkdir -p $deb_dest
 
-version='0.8.0.0'
+version='0.5.0.0'
+pkg_version='0.5.0'
 
 if [ -f /.dockerinit ]; then
   # We're in Docker where uname -p returns "unknown".
@@ -97,7 +98,7 @@
   # Build the debian package
   fakeroot dpkg-deb --build $tmp_dir/$pkg_name || { echo "dpkg-deb failed"; exit 1; }
 
-  deb_path=$deb_dest/${pkg_name}_amd64.deb
+  deb_path=$deb_dest/${pkg_name}_${pkg_version}_amd64.deb
 
   # Copy the .deb file to destination dir
   cp $tmp_dir/$pkg_name.deb $deb_path
diff --git a/tools/distpackages/templates/libgrpc-dev/DEBIAN/control b/tools/distpackages/templates/libgrpc-dev/DEBIAN/control
index 64dc79a..289a278 100644
--- a/tools/distpackages/templates/libgrpc-dev/DEBIAN/control
+++ b/tools/distpackages/templates/libgrpc-dev/DEBIAN/control
@@ -1,5 +1,5 @@
 Package: libgrpc-dev
-Version: 0.8.0
+Version: 0.5.0
 Architecture: amd64
 Maintainer: Jan Tattermusch <jtattermusch@google.com>
 Depends: libgrpc, libc6-dev | libc-dev
diff --git a/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/changelog.gz b/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/changelog.gz
index eabdf46..4f557b8 100644
--- a/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/changelog.gz
+++ b/tools/distpackages/templates/libgrpc-dev/usr/share/doc/libgrpc-dev/changelog.gz
Binary files differ
diff --git a/tools/distpackages/templates/libgrpc/DEBIAN/control b/tools/distpackages/templates/libgrpc/DEBIAN/control
index 75c224e..417a825 100644
--- a/tools/distpackages/templates/libgrpc/DEBIAN/control
+++ b/tools/distpackages/templates/libgrpc/DEBIAN/control
@@ -1,5 +1,5 @@
 Package: libgrpc
-Version: 0.8.0
+Version: 0.5.0
 Architecture: amd64
 Maintainer: Jan Tattermusch <jtattermusch@google.com>
 Depends: libc6
diff --git a/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/changelog.gz b/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/changelog.gz
index c07b4d2..12d4cd9 100644
--- a/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/changelog.gz
+++ b/tools/distpackages/templates/libgrpc/usr/share/doc/libgrpc/changelog.gz
Binary files differ
diff --git a/tools/distrib/guard_headers.sh b/tools/distrib/guard_headers.sh
new file mode 100755
index 0000000..2a54cf8
--- /dev/null
+++ b/tools/distrib/guard_headers.sh
@@ -0,0 +1,90 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+set -e
+
+cd `dirname $0`/../..
+
+function process_dir {
+  base_dir=$1
+  prefix=$2
+  comment_language=$3
+  (
+    cd $base_dir
+    find . -name "*.h" | while read f ; do
+      guard=${prefix}_`echo ${f#*/} | tr '[:lower:]/.-' '[:upper:]___'`
+      if [ "$comment_language" = "c++" ] ; then
+        comment="// $guard"
+      else
+        comment="/* $guard */"
+      fi
+      awk '
+        BEGIN {
+          guard = "'${guard}'";
+          comment_language = "'${comment_language}'";
+        }
+        prev ~ /^#ifndef/ && !got_first_ifndef {
+          got_first_ifndef = 1;
+          prev = "#ifndef " guard;
+        }
+        prev ~ /^#define/ && !got_first_define {
+          got_first_define = 1;
+          prev = "#define " guard;
+        }
+        NR > 1 { print prev; }
+        { prev = $0; }
+        END {
+          if (prev ~ /^#endif/) {
+            if (comment_language ~ /^c$/) {
+              print "#endif  /* " guard " */";
+            } else if (comment_language ~ /^c\+\+$/) {
+              print "#endif  // " guard;
+            } else {
+              print "ERROR: unknown comment language: " comment_language;
+            }
+          } else {
+            print "ERROR: file does not end with #endif";
+          }
+        }
+      ' "${f}" > "${f}.rewritten"
+      mv "${f}.rewritten" "${f}"
+    done
+  )
+}
+
+process_dir include/grpc GRPC c
+process_dir include/grpc++ GRPCXX c++
+process_dir src/core GRPC_INTERNAL_CORE c
+process_dir src/cpp GRPC_INTERNAL_CPP c++
+process_dir src/compiler GRPC_INTERNAL_COMPILER c++
+process_dir test/core GRPC_TEST_CORE c
+process_dir test/cpp GRPC_TEST_CPP c++
+process_dir examples GRPC_EXAMPLES c++
diff --git a/tools/dockerfile/grpc_base/Dockerfile b/tools/dockerfile/grpc_base/Dockerfile
index d2b5569..9186277 100644
--- a/tools/dockerfile/grpc_base/Dockerfile
+++ b/tools/dockerfile/grpc_base/Dockerfile
@@ -64,13 +64,5 @@
 RUN $CLOUD_SDK/install.sh --usage-reporting=true --path-update=true --bash-completion=true --rc-path=/.bashrc --disable-installation-options
 ENV PATH $CLOUD_SDK/bin:$PATH
 
-# Install a GitHub SSH service credential that gives access to the GitHub repo while it's private
-# TODO: remove this once the repo is public
-ADD .ssh .ssh
-RUN chmod 600 .ssh/github.rsa
-RUN mkdir -p $HOME/.ssh && echo 'Host github.com' > $HOME/.ssh/config
-RUN echo "    IdentityFile /.ssh/github.rsa" >> $HOME/.ssh/config
-RUN echo 'StrictHostKeyChecking no' >> $HOME/.ssh/config
-
 # Define the default command.
 CMD ["bash"]
diff --git a/tools/dockerfile/grpc_build_deb/Dockerfile b/tools/dockerfile/grpc_build_deb/Dockerfile
index 6cba74e..24ffc73 100644
--- a/tools/dockerfile/grpc_build_deb/Dockerfile
+++ b/tools/dockerfile/grpc_build_deb/Dockerfile
@@ -34,7 +34,7 @@
 RUN apt-get update && apt-get install -y lintian
 
 # Get the source from GitHub
-RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc
+RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
 RUN cd /var/local/git/grpc && \
   git pull --recurse-submodules && \
   git submodule update --init --recursive
diff --git a/tools/dockerfile/grpc_cxx/Dockerfile b/tools/dockerfile/grpc_cxx/Dockerfile
index 18c6732..ac09e25 100644
--- a/tools/dockerfile/grpc_cxx/Dockerfile
+++ b/tools/dockerfile/grpc_cxx/Dockerfile
@@ -33,7 +33,7 @@
 RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev
 
 # Get the source from GitHub
-RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc
+RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
 RUN cd /var/local/git/grpc && \
   git pull --recurse-submodules && \
   git submodule update --init --recursive
diff --git a/tools/dockerfile/grpc_go/Dockerfile b/tools/dockerfile/grpc_go/Dockerfile
index e1671ea..06bb3e2 100644
--- a/tools/dockerfile/grpc_go/Dockerfile
+++ b/tools/dockerfile/grpc_go/Dockerfile
@@ -30,21 +30,6 @@
 # Dockerfile for gRPC Go
 FROM golang:1.4
 
-# Install SSH to that Go source can be pulled securely.
-RUN apt-get update && apt-get install -y ssh
-
-# Install a GitHub SSH service credential that gives access to the GitHub repo while it's private
-#
-# TODO: remove this once the repo is public
-ADD .ssh .ssh
-RUN chmod 600 /.ssh/github.rsa
-RUN mkdir -p $HOME/.ssh && echo 'Host github.com' > $HOME/.ssh/config
-RUN echo "    IdentityFile /.ssh/github.rsa" >> $HOME/.ssh/config
-RUN echo 'StrictHostKeyChecking no' >> $HOME/.ssh/config
-
-# Force go get to use the GitHub ssh url instead of https, and use the SSH creds
-RUN git config --global url."git@github.com:".insteadOf "https://github.com/"
-
 # Get the source from GitHub
 RUN go get google.golang.org/grpc
 
diff --git a/tools/dockerfile/grpc_java/Dockerfile b/tools/dockerfile/grpc_java/Dockerfile
index affbec9..6b2612b 100644
--- a/tools/dockerfile/grpc_java/Dockerfile
+++ b/tools/dockerfile/grpc_java/Dockerfile
@@ -30,7 +30,7 @@
 # Dockerfile for the gRPC Java dev image
 FROM grpc/java_base
 
-RUN git clone --recursive --depth 1 git@github.com:grpc/grpc-java.git /var/local/git/grpc-java
+RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git /var/local/git/grpc-java
 RUN cd /var/local/git/grpc-java/lib/netty && \
   mvn -pl codec-http2 -am -DskipTests install clean
 RUN cd /var/local/git/grpc-java && \
diff --git a/tools/dockerfile/grpc_java_base/Dockerfile b/tools/dockerfile/grpc_java_base/Dockerfile
index feac5e7..2ee0a62 100644
--- a/tools/dockerfile/grpc_java_base/Dockerfile
+++ b/tools/dockerfile/grpc_java_base/Dockerfile
@@ -51,24 +51,19 @@
 ENV LD_LIBRARY_PATH /usr/local/lib
 
 # Get the protobuf source from GitHub and install it
-RUN wget -O - https://github.com/google/protobuf/archive/master.tar.gz | \
+RUN wget -O - https://github.com/google/protobuf/archive/v3.0.0-alpha-2.tar.gz | \
   tar xz && \
-  cd protobuf-master && \
+  cd protobuf-3.0.0-alpha-2 && \
   ./autogen.sh && \
   ./configure --prefix=/usr && \
   make -j12 && make check && make install && \
   cd java && mvn install && cd .. && \
+  cd javanano && mvn install && cd .. && \
   rm -r "$(pwd)"
 
-# Install a GitHub SSH service credential that gives access to the GitHub repo while it's private
-# TODO: remove this once the repo is public
-COPY .ssh/github.rsa /root/.ssh/id_rsa
-RUN chmod 600 /root/.ssh/id_rsa
-RUN echo 'Host github.com\nStrictHostKeyChecking no' > /root/.ssh/config
-
 # Trigger download of as many Maven and Gradle artifacts as possible. We don't build grpc-java
 # because we don't want to install netty
-RUN git clone --recursive --depth 1 git@github.com:grpc/grpc-java.git && \
+RUN git clone --recursive --depth 1 https://github.com/grpc/grpc-java.git && \
   cd grpc-java/lib/netty && \
   mvn -pl codec-http2 -am -DskipTests verify && \
   cd ../.. && \
diff --git a/tools/dockerfile/grpc_node_base/Dockerfile b/tools/dockerfile/grpc_node_base/Dockerfile
index 55ae608..1f3a236 100644
--- a/tools/dockerfile/grpc_node_base/Dockerfile
+++ b/tools/dockerfile/grpc_node_base/Dockerfile
@@ -34,12 +34,12 @@
 
 RUN curl -sL https://deb.nodesource.com/setup | bash -
 
-RUN apt-get update && apt-get install -y nodejs
+RUN apt-get update && apt-get install -y nodejs nodejs-legacy
 
 RUN npm install -g node-gyp
 
 # Get the source from GitHub, this gets the protobuf library as well
-RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc
+RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
 RUN cd /var/local/git/grpc && \
   git pull --recurse-submodules && \
   git submodule update --init --recursive
diff --git a/tools/dockerfile/grpc_php_base/Dockerfile b/tools/dockerfile/grpc_php_base/Dockerfile
index 49f5da8..cc874fd 100644
--- a/tools/dockerfile/grpc_php_base/Dockerfile
+++ b/tools/dockerfile/grpc_php_base/Dockerfile
@@ -76,7 +76,7 @@
 
 # Download the patched PHP protobuf so that PHP gRPC clients can be generated
 # from proto3 schemas.
-RUN git clone git@github.com:murgatroid99/Protobuf-PHP.git /var/local/git/protobuf-php
+RUN git clone https://github.com/murgatroid99/Protobuf-PHP.git /var/local/git/protobuf-php
 
 # Install ruby (via RVM) as ruby tools are dependencies for building Protobuf
 # PHP extensions.
@@ -91,7 +91,7 @@
 RUN rvm all do gem install ronn rake
 
 # Get the source from GitHub, this gets the protobuf library as well
-RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc
+RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
 RUN cd /var/local/git/grpc && \
   git pull --recurse-submodules && \
   git submodule update --init --recursive
diff --git a/tools/dockerfile/grpc_python_base/Dockerfile b/tools/dockerfile/grpc_python_base/Dockerfile
index 18dd40a..0d45f40 100644
--- a/tools/dockerfile/grpc_python_base/Dockerfile
+++ b/tools/dockerfile/grpc_python_base/Dockerfile
@@ -46,4 +46,4 @@
 RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.0.0-alpha-1
 
 # Get the GRPC source from GitHub
-RUN git clone --recursive git@github.com:grpc/grpc.git /var/local/git/grpc
+RUN git clone --recursive https://github.com/grpc/grpc.git /var/local/git/grpc
diff --git a/tools/dockerfile/grpc_ruby_base/Dockerfile b/tools/dockerfile/grpc_ruby_base/Dockerfile
index f3c7289..d58eeaa 100644
--- a/tools/dockerfile/grpc_ruby_base/Dockerfile
+++ b/tools/dockerfile/grpc_ruby_base/Dockerfile
@@ -72,7 +72,7 @@
 RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
 
 # Get the source from GitHub
-RUN git clone git@github.com:grpc/grpc.git /var/local/git/grpc
+RUN git clone https://github.com/grpc/grpc.git /var/local/git/grpc
 RUN cd /var/local/git/grpc && \
   git pull --recurse-submodules && \
   git submodule update --init --recursive
diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh
index df8605b..0203926 100755
--- a/tools/gce_setup/grpc_docker.sh
+++ b/tools/gce_setup/grpc_docker.sh
@@ -1094,6 +1094,21 @@
   echo $the_cmd
 }
 
+# constructs the full dockerized node gce auth interop test cmd.
+#
+# call-seq:
+#   flags= .... # generic flags to include the command
+#   cmd=$($grpc_gen_test_cmd $flags)
+grpc_cloud_prod_auth_compute_engine_creds_gen_node_cmd() {
+  local env_flag="-e SSL_CERT_FILE=/cacerts/roots.pem "
+  local cmd_prefix="sudo docker run $env_flag grpc/node";
+  local test_script="/usr/bin/nodejs /var/local/git/grpc/src/node/interop/interop_client.js --use_tls=true";
+  local gfe_flags=$(_grpc_prod_gfe_flags)
+  local added_gfe_flags=$(_grpc_gce_test_flags)
+  local the_cmd="$cmd_prefix $test_script $gfe_flags $added_gfe_flags $@";
+  echo $the_cmd
+}
+
 # constructs the full dockerized cpp interop test cmd.
 #
 # call-seq:
diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index 9303a67..5a3c720 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -37,7 +37,6 @@
 
 root=`pwd`
 virtualenv python2.7_virtual_environment
-ln -sf $root/include/grpc python2.7_virtual_environment/include/grpc
 source python2.7_virtual_environment/bin/activate
 pip install enum34==1.0.4 futures==2.2.0 protobuf==3.0.0-alpha-1
 CFLAGS=-I$root/include LDFLAGS=-L$root/libs/opt pip install src/python/src
diff --git a/tools/run_tests/build_ruby.sh b/tools/run_tests/build_ruby.sh
new file mode 100755
index 0000000..53a69cf
--- /dev/null
+++ b/tools/run_tests/build_ruby.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+CONFIG=${CONFIG:-opt}
+
+# change to grpc repo root
+cd $(dirname $0)/../..
+
+# tells npm install to look for files in that directory
+export GRPC_ROOT=`pwd`
+# tells npm install the subdirectory with library files
+export GRPC_LIB_SUBDIR=libs/$CONFIG
+
+cd src/ruby
+
+bundle install
+rake compile:grpc
diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py
index 569cb5b..ad65da5 100755
--- a/tools/run_tests/jobset.py
+++ b/tools/run_tests/jobset.py
@@ -43,10 +43,17 @@
 _DEFAULT_MAX_JOBS = 16 * multiprocessing.cpu_count()
 
 
+have_alarm = False
+def alarm_handler(unused_signum, unused_frame):
+  global have_alarm
+  have_alarm = False
+
+
 # setup a signal handler so that signal.pause registers 'something'
 # when a child finishes
 # not using futures and threading to avoid a dependency on subprocess32
 signal.signal(signal.SIGCHLD, lambda unused_signum, unused_frame: None)
+signal.signal(signal.SIGALRM, alarm_handler)
 
 
 def shuffle_iteratable(it):
@@ -92,6 +99,7 @@
 
 _TAG_COLOR = {
     'FAILED': 'red',
+    'TIMEOUT': 'red',
     'PASSED': 'green',
     'START': 'gray',
     'WAITING': 'yellow',
@@ -154,24 +162,27 @@
 class Job(object):
   """Manages one job."""
 
-  def __init__(self, spec, bin_hash, newline_on_success):
+  def __init__(self, spec, bin_hash, newline_on_success, travis):
     self._spec = spec
     self._bin_hash = bin_hash
     self._tempfile = tempfile.TemporaryFile()
     env = os.environ.copy()
     for k, v in spec.environ.iteritems():
       env[k] = v
+    self._start = time.time()
     self._process = subprocess.Popen(args=spec.cmdline,
                                      stderr=subprocess.STDOUT,
                                      stdout=self._tempfile,
                                      env=env)
     self._state = _RUNNING
     self._newline_on_success = newline_on_success
-    message('START', spec.shortname)
+    self._travis = travis
+    message('START', spec.shortname, do_newline=self._travis)
 
   def state(self, update_cache):
     """Poll current state of the job. Prints messages at completion."""
     if self._state == _RUNNING and self._process.poll() is not None:
+      elapsed = time.time() - self._start
       if self._process.returncode != 0:
         self._state = _FAILURE
         self._tempfile.seek(0)
@@ -180,10 +191,13 @@
             self._spec.shortname, self._process.returncode), stdout)
       else:
         self._state = _SUCCESS
-        message('PASSED', self._spec.shortname,
-                do_newline=self._newline_on_success)
+        message('PASSED', '%s [time=%.1fsec]' % (self._spec.shortname, elapsed),
+                do_newline=self._newline_on_success or self._travis)
         if self._bin_hash:
           update_cache.finished(self._spec.identity(), self._bin_hash)
+    elif self._state == _RUNNING and time.time() - self._start > 300:
+      message('TIMEOUT', self._spec.shortname, do_newline=self._travis)
+      self.kill()
     return self._state
 
   def kill(self):
@@ -195,7 +209,7 @@
 class Jobset(object):
   """Manages one run of jobs."""
 
-  def __init__(self, check_cancelled, maxjobs, newline_on_success, cache):
+  def __init__(self, check_cancelled, maxjobs, newline_on_success, travis, cache):
     self._running = set()
     self._check_cancelled = check_cancelled
     self._cancelled = False
@@ -203,6 +217,7 @@
     self._completed = 0
     self._maxjobs = maxjobs
     self._newline_on_success = newline_on_success
+    self._travis = travis
     self._cache = cache
 
   def start(self, spec):
@@ -224,7 +239,8 @@
     if should_run:
       self._running.add(Job(spec,
                             bin_hash,
-                            self._newline_on_success))
+                            self._newline_on_success,
+                            self._travis))
     return True
 
   def reap(self):
@@ -235,13 +251,19 @@
         st = job.state(self._cache)
         if st == _RUNNING: continue
         if st == _FAILURE: self._failures += 1
+        if st == _KILLED: self._failures += 1
         dead.add(job)
       for job in dead:
         self._completed += 1
         self._running.remove(job)
       if dead: return
-      message('WAITING', '%d jobs running, %d complete, %d failed' % (
-          len(self._running), self._completed, self._failures))
+      if (not self._travis):
+        message('WAITING', '%d jobs running, %d complete, %d failed' % (
+            len(self._running), self._completed, self._failures))
+      global have_alarm
+      if not have_alarm:
+        have_alarm = True
+        signal.alarm(10)
       signal.pause()
 
   def cancelled(self):
@@ -277,12 +299,17 @@
         check_cancelled=_never_cancelled,
         maxjobs=None,
         newline_on_success=False,
+        travis=False,
         cache=None):
   js = Jobset(check_cancelled,
               maxjobs if maxjobs is not None else _DEFAULT_MAX_JOBS,
-              newline_on_success,
+              newline_on_success, travis,
               cache if cache is not None else NoCache())
-  for cmdline in shuffle_iteratable(cmdlines):
+  if not travis:
+    cmdlines = shuffle_iteratable(cmdlines)
+  else:
+    cmdlines = sorted(cmdlines, key=lambda x: x.shortname)
+  for cmdline in cmdlines:
     if not js.start(cmdline):
       break
   return js.finish()
diff --git a/tools/run_tests/run_python.sh b/tools/run_tests/run_python.sh
index 19f1458..06ddb8e 100755
--- a/tools/run_tests/run_python.sh
+++ b/tools/run_tests/run_python.sh
@@ -38,7 +38,7 @@
 source python2.7_virtual_environment/bin/activate
 # TODO(issue 215): Properly itemize these in run_tests.py so that they can be parallelized.
 # TODO(atash): Enable dynamic unused port discovery for this test.
-python2.7 -B test/compiler/python_plugin_test.py --build_mode=opt --port=40987
+python2.7 -B test/compiler/python_plugin_test.py --build_mode=opt
 python2.7 -B -m grpc._adapter._blocking_invocation_inline_service_test
 python2.7 -B -m grpc._adapter._c_test
 python2.7 -B -m grpc._adapter._event_invocation_synchronous_event_service_test
diff --git a/tools/run_tests/run_ruby.sh b/tools/run_tests/run_ruby.sh
new file mode 100755
index 0000000..b82ce52
--- /dev/null
+++ b/tools/run_tests/run_ruby.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -ex
+
+# change to grpc repo root
+cd $(dirname $0)/../../src/ruby
+
+rake
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index b3b043a..4ef7b55 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -44,6 +44,10 @@
 import watch_dirs
 
 
+ROOT = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '../..'))
+os.chdir(ROOT)
+
+
 # SimpleConfig: just compile with CONFIG=config, and run the binary to test
 class SimpleConfig(object):
 
@@ -83,14 +87,14 @@
     self.make_target = make_target
     with open('tools/run_tests/tests.json') as f:
       js = json.load(f)
-      self.binaries = [tgt['name']
-                       for tgt in js
-                       if tgt['language'] == test_lang]
+      self.binaries = [tgt for tgt in js if tgt['language'] == test_lang]
 
-  def test_specs(self, config):
+  def test_specs(self, config, travis):
     out = []
-    for name in self.binaries:
-      binary = 'bins/%s/%s' % (config.build_config, name)
+    for target in self.binaries:
+      if travis and target['flaky']:
+        continue
+      binary = 'bins/%s/%s' % (config.build_config, target['name'])
       out.append(config.job_spec(binary, [binary]))
     return out
 
@@ -103,7 +107,7 @@
 
 class NodeLanguage(object):
 
-  def test_specs(self, config):
+  def test_specs(self, config, travis):
     return [config.job_spec('tools/run_tests/run_node.sh', None)]
 
   def make_targets(self):
@@ -115,7 +119,7 @@
 
 class PhpLanguage(object):
 
-  def test_specs(self, config):
+  def test_specs(self, config, travis):
     return [config.job_spec('src/php/bin/run_tests.sh', None)]
 
   def make_targets(self):
@@ -127,7 +131,7 @@
 
 class PythonLanguage(object):
 
-  def test_specs(self, config):
+  def test_specs(self, config, travis):
     return [config.job_spec('tools/run_tests/run_python.sh', None)]
 
   def make_targets(self):
@@ -136,6 +140,17 @@
   def build_steps(self):
     return [['tools/run_tests/build_python.sh']]
 
+class RubyLanguage(object):
+
+  def test_specs(self, config, travis):
+    return [config.job_spec('tools/run_tests/run_ruby.sh', None)]
+
+  def make_targets(self):
+    return ['static_c']
+
+  def build_steps(self):
+    return [['tools/run_tests/build_ruby.sh']]
+
 
 # different configurations we can run under
 _CONFIGS = {
@@ -160,6 +175,7 @@
     'node': NodeLanguage(),
     'php': PhpLanguage(),
     'python': PythonLanguage(),
+    'ruby': RubyLanguage()
     }
 
 # parse command line
@@ -171,10 +187,15 @@
 argp.add_argument('-n', '--runs_per_test', default=1, type=int)
 argp.add_argument('-r', '--regex', default='.*', type=str)
 argp.add_argument('-j', '--jobs', default=1000, type=int)
+argp.add_argument('-s', '--slowdown', default=1.0, type=float)
 argp.add_argument('-f', '--forever',
                   default=False,
                   action='store_const',
                   const=True)
+argp.add_argument('-t', '--travis',
+                  default=False,
+                  action='store_const',
+                  const=True)
 argp.add_argument('--newline_on_success',
                   default=False,
                   action='store_const',
@@ -196,6 +217,7 @@
 languages = set(_LANGUAGES[l] for l in args.language)
 build_steps = [jobset.JobSpec(['make',
                                '-j', '%d' % (multiprocessing.cpu_count() + 1),
+                               'EXTRA_DEFINES=GRPC_TEST_SLOWDOWN_MACHINE_FACTOR=%f' % args.slowdown,
                                'CONFIG=%s' % cfg] + list(set(
                                    itertools.chain.from_iterable(
                                        l.make_targets() for l in languages))))
@@ -207,7 +229,7 @@
     spec
     for config in run_configs
     for language in args.language
-    for spec in _LANGUAGES[language].test_specs(config)
+    for spec in _LANGUAGES[language].test_specs(config, args.travis)
     if re.search(args.regex, spec.shortname))
 
 runs_per_test = args.runs_per_test
@@ -251,17 +273,18 @@
         self.parse(json.loads(f.read()))
 
 
-def _build_and_run(check_cancelled, newline_on_success, cache):
+def _build_and_run(check_cancelled, newline_on_success, travis, cache):
   """Do one pass of building & running tests."""
   # build latest sequentially
-  if not jobset.run(build_steps, maxjobs=1):
+  if not jobset.run(build_steps, maxjobs=1,
+                    newline_on_success=newline_on_success, travis=travis):
     return 1
 
   # run all the tests
   all_runs = itertools.chain.from_iterable(
       itertools.repeat(one_run, runs_per_test))
   if not jobset.run(all_runs, check_cancelled,
-                    newline_on_success=newline_on_success,
+                    newline_on_success=newline_on_success, travis=travis,
                     maxjobs=min(args.jobs, min(c.maxjobs for c in run_configs)),
                     cache=cache):
     return 2
@@ -292,6 +315,7 @@
 else:
   result = _build_and_run(check_cancelled=lambda: False,
                           newline_on_success=args.newline_on_success,
+                          travis=args.travis,
                           cache=test_cache)
   if result == 0:
     jobset.message('SUCCESS', 'All tests passed', do_newline=True)
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 4fb3e2d..772856b 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -2,1650 +2,2062 @@
 
 [
   {
+    "flaky": false, 
     "language": "c", 
     "name": "alarm_heap_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "alarm_list_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "alarm_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "alpn_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "bin_encoder_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "census_hash_table_test"
   }, 
   {
+    "flaky": true, 
     "language": "c", 
     "name": "census_statistics_multiple_writers_circular_buffer_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "census_statistics_multiple_writers_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "census_statistics_performance_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "census_statistics_quick_test"
   }, 
   {
+    "flaky": true, 
     "language": "c", 
     "name": "census_statistics_small_log_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "census_stub_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "census_window_stats_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_status_conversion_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_stream_encoder_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_stream_map_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_transport_end2end_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "dualstack_socket_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "echo_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "fd_posix_test"
   }, 
   {
+    "flaky": true, 
     "language": "c", 
     "name": "fling_stream_test"
   }, 
   {
+    "flaky": true, 
     "language": "c", 
     "name": "fling_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_cancellable_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_cmdline_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_env_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_file_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_histogram_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_host_port_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_log_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_slice_buffer_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_slice_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_string_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_sync_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_thd_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_time_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "gpr_useful_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "grpc_base64_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "grpc_byte_buffer_reader_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "grpc_channel_stack_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "grpc_completion_queue_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "grpc_credentials_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "grpc_json_token_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "grpc_stream_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "hpack_parser_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "hpack_table_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "httpcli_format_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "httpcli_parser_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "json_rewrite_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "json_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "lame_client_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "message_compress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "metadata_buffer_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "multi_init_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "murmur_hash_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "no_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "poll_kick_posix_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "resolve_address_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "secure_endpoint_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "sockaddr_utils_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "tcp_client_posix_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "tcp_posix_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "tcp_server_posix_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "time_averaged_stats_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "time_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "timeout_encoding_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "transport_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "transport_security_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "async_end2end_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "channel_arguments_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "credentials_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "end2end_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "interop_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "pubsub_publisher_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "pubsub_subscriber_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "status_test"
   }, 
   {
+    "flaky": false, 
     "language": "c++", 
     "name": "thread_pool_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_after_accept_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_after_accept_and_writes_closed_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_after_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_before_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_in_a_vacuum_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_census_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_disappearing_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_early_server_shutdown_finishes_tags_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_empty_batch_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_graceful_server_shutdown_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_invoke_large_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_max_concurrent_streams_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_no_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_ping_pong_streaming_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_response_with_binary_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_response_with_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_response_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_with_large_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_simple_delayed_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_thread_stress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_writes_done_hangs_with_pending_read_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_after_accept_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_after_accept_and_writes_closed_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_after_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_before_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_cancel_in_a_vacuum_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_census_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_disappearing_server_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_early_server_shutdown_finishes_tags_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_graceful_server_shutdown_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_invoke_large_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_max_concurrent_streams_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_no_op_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_ping_pong_streaming_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_response_with_binary_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_response_with_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_response_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_response_with_trailing_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_with_large_metadata_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_request_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_simple_delayed_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_thread_stress_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fake_security_writes_done_hangs_with_pending_read_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_after_accept_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_after_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_before_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_in_a_vacuum_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_census_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_disappearing_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_early_server_shutdown_finishes_tags_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_empty_batch_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_graceful_server_shutdown_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_invoke_large_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_max_concurrent_streams_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_no_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_ping_pong_streaming_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_response_with_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_response_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_with_large_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_simple_delayed_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_thread_stress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_writes_done_hangs_with_pending_read_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_after_accept_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_after_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_before_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_cancel_in_a_vacuum_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_census_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_disappearing_server_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_early_server_shutdown_finishes_tags_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_graceful_server_shutdown_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_invoke_large_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_max_concurrent_streams_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_no_op_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_ping_pong_streaming_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_response_with_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_response_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_with_large_metadata_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_request_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_simple_delayed_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_thread_stress_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_writes_done_hangs_with_pending_read_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_after_accept_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_after_accept_and_writes_closed_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_after_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_before_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_in_a_vacuum_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_census_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_disappearing_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_early_server_shutdown_finishes_inflight_calls_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_early_server_shutdown_finishes_tags_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_empty_batch_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_graceful_server_shutdown_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_invoke_large_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_max_concurrent_streams_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_no_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_ping_pong_streaming_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_response_with_binary_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_response_with_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_response_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_with_large_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_simple_delayed_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_thread_stress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_writes_done_hangs_with_pending_read_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_after_accept_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_after_accept_and_writes_closed_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_after_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_before_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_cancel_in_a_vacuum_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_census_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_disappearing_server_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_early_server_shutdown_finishes_inflight_calls_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_early_server_shutdown_finishes_tags_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_graceful_server_shutdown_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_invoke_large_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_max_concurrent_streams_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_no_op_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_ping_pong_streaming_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_response_with_binary_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_response_with_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_response_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_response_with_trailing_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_with_large_metadata_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_request_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_simple_delayed_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_thread_stress_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_fullstack_uds_writes_done_hangs_with_pending_read_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_after_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_before_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_census_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_disappearing_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_empty_batch_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_graceful_server_shutdown_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_invoke_large_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_max_concurrent_streams_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_no_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_ping_pong_streaming_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_response_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_with_large_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_simple_delayed_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_thread_stress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_writes_done_hangs_with_pending_read_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_after_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_before_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_census_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_disappearing_server_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_graceful_server_shutdown_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_invoke_large_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_max_concurrent_streams_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_no_op_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_ping_pong_streaming_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_response_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_with_large_metadata_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_request_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_simple_delayed_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_thread_stress_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_fullstack_writes_done_hangs_with_pending_read_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_empty_batch_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_no_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_thread_stress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_writes_done_hangs_with_pending_read_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_no_op_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_large_metadata_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_thread_stress_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_simple_ssl_with_oauth2_fullstack_writes_done_hangs_with_pending_read_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_after_accept_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_after_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_before_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_in_a_vacuum_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_census_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_disappearing_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_empty_batch_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_graceful_server_shutdown_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_invoke_large_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_max_concurrent_streams_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_no_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_ping_pong_streaming_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_response_with_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_response_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_with_large_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_simple_delayed_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_thread_stress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_writes_done_hangs_with_pending_read_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_after_accept_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_after_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_before_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_cancel_in_a_vacuum_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_census_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_disappearing_server_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_graceful_server_shutdown_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_invoke_large_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_max_concurrent_streams_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_no_op_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_ping_pong_streaming_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_response_with_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_response_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_with_large_metadata_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_request_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_simple_delayed_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_thread_stress_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_writes_done_hangs_with_pending_read_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_empty_batch_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_no_op_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_thread_stress_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_disappearing_server_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_no_op_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_large_metadata_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_request_with_payload_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_thread_stress_legacy_test"
   }, 
   {
+    "flaky": false, 
     "language": "c", 
     "name": "chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_legacy_test"
   }
diff --git a/tools/tsan_suppressions.txt b/tools/tsan_suppressions.txt
index 23d57f9..65e7e2e 100644
--- a/tools/tsan_suppressions.txt
+++ b/tools/tsan_suppressions.txt
@@ -1,2 +1,8 @@
 # OPENSSL_cleanse does racy access to a global
 race:OPENSSL_cleanse
+race:cleanse_ctr
+# these are legitimate races in OpenSSL, and it appears those folks are looking at it
+# https://www.mail-archive.com/openssl-dev@openssl.org/msg09019.html
+race:ssleay_rand_add
+race:ssleay_rand_bytes
+