Merge branch 'master' into testc++ize
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c20c97d..4daff95 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -916,7 +916,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(gpr_test_util
-  test/core/util/test_config.c
+  test/core/util/test_config.cc
 )
 
 if(WIN32 AND MSVC)
@@ -1598,26 +1598,26 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(grpc_test_util
-  test/core/end2end/data/client_certs.c
-  test/core/end2end/data/server1_cert.c
-  test/core/end2end/data/server1_key.c
-  test/core/end2end/data/test_root_cert.c
-  test/core/security/oauth2_utils.c
+  test/core/end2end/data/client_certs.cc
+  test/core/end2end/data/server1_cert.cc
+  test/core/end2end/data/server1_key.cc
+  test/core/end2end/data/test_root_cert.cc
+  test/core/security/oauth2_utils.cc
   src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
-  test/core/end2end/cq_verifier.c
-  test/core/end2end/fixtures/http_proxy_fixture.c
-  test/core/end2end/fixtures/proxy.c
-  test/core/iomgr/endpoint_tests.c
+  test/core/end2end/cq_verifier.cc
+  test/core/end2end/fixtures/http_proxy_fixture.cc
+  test/core/end2end/fixtures/proxy.cc
+  test/core/iomgr/endpoint_tests.cc
   test/core/util/debugger_macros.cc
-  test/core/util/grpc_profiler.c
-  test/core/util/memory_counters.c
-  test/core/util/mock_endpoint.c
-  test/core/util/parse_hexstring.c
-  test/core/util/passthru_endpoint.c
-  test/core/util/port.c
-  test/core/util/port_server_client.c
-  test/core/util/slice_splitter.c
-  test/core/util/trickle_endpoint.c
+  test/core/util/grpc_profiler.cc
+  test/core/util/memory_counters.cc
+  test/core/util/mock_endpoint.cc
+  test/core/util/parse_hexstring.cc
+  test/core/util/passthru_endpoint.cc
+  test/core/util/port.cc
+  test/core/util/port_server_client.cc
+  test/core/util/slice_splitter.cc
+  test/core/util/trickle_endpoint.cc
   src/core/lib/backoff/backoff.cc
   src/core/lib/channel/channel_args.cc
   src/core/lib/channel/channel_stack.cc
@@ -1870,20 +1870,20 @@
 
 add_library(grpc_test_util_unsecure
   src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
-  test/core/end2end/cq_verifier.c
-  test/core/end2end/fixtures/http_proxy_fixture.c
-  test/core/end2end/fixtures/proxy.c
-  test/core/iomgr/endpoint_tests.c
+  test/core/end2end/cq_verifier.cc
+  test/core/end2end/fixtures/http_proxy_fixture.cc
+  test/core/end2end/fixtures/proxy.cc
+  test/core/iomgr/endpoint_tests.cc
   test/core/util/debugger_macros.cc
-  test/core/util/grpc_profiler.c
-  test/core/util/memory_counters.c
-  test/core/util/mock_endpoint.c
-  test/core/util/parse_hexstring.c
-  test/core/util/passthru_endpoint.c
-  test/core/util/port.c
-  test/core/util/port_server_client.c
-  test/core/util/slice_splitter.c
-  test/core/util/trickle_endpoint.c
+  test/core/util/grpc_profiler.cc
+  test/core/util/memory_counters.cc
+  test/core/util/mock_endpoint.cc
+  test/core/util/parse_hexstring.cc
+  test/core/util/passthru_endpoint.cc
+  test/core/util/port.cc
+  test/core/util/port_server_client.cc
+  test/core/util/slice_splitter.cc
+  test/core/util/trickle_endpoint.cc
   src/core/lib/backoff/backoff.cc
   src/core/lib/channel/channel_args.cc
   src/core/lib/channel/channel_stack.cc
@@ -2443,7 +2443,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(reconnect_server
-  test/core/util/reconnect_server.c
+  test/core/util/reconnect_server.cc
 )
 
 if(WIN32 AND MSVC)
@@ -2486,7 +2486,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(test_tcp_server
-  test/core/util/test_tcp_server.c
+  test/core/util/test_tcp_server.cc
 )
 
 if(WIN32 AND MSVC)
@@ -4771,7 +4771,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(bad_client_test
-  test/core/bad_client/bad_client.c
+  test/core/bad_client/bad_client.cc
 )
 
 if(WIN32 AND MSVC)
@@ -4813,7 +4813,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(bad_ssl_test_server
-  test/core/bad_ssl/server_common.c
+  test/core/bad_ssl/server_common.cc
 )
 
 if(WIN32 AND MSVC)
@@ -4855,67 +4855,67 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(end2end_tests
-  test/core/end2end/end2end_tests.c
-  test/core/end2end/end2end_test_utils.c
-  test/core/end2end/tests/authority_not_supported.c
-  test/core/end2end/tests/bad_hostname.c
-  test/core/end2end/tests/bad_ping.c
-  test/core/end2end/tests/binary_metadata.c
-  test/core/end2end/tests/call_creds.c
-  test/core/end2end/tests/cancel_after_accept.c
-  test/core/end2end/tests/cancel_after_client_done.c
-  test/core/end2end/tests/cancel_after_invoke.c
-  test/core/end2end/tests/cancel_after_round_trip.c
-  test/core/end2end/tests/cancel_before_invoke.c
-  test/core/end2end/tests/cancel_in_a_vacuum.c
-  test/core/end2end/tests/cancel_with_status.c
-  test/core/end2end/tests/compressed_payload.c
-  test/core/end2end/tests/connectivity.c
-  test/core/end2end/tests/default_host.c
-  test/core/end2end/tests/disappearing_server.c
-  test/core/end2end/tests/empty_batch.c
-  test/core/end2end/tests/filter_call_init_fails.c
-  test/core/end2end/tests/filter_causes_close.c
-  test/core/end2end/tests/filter_latency.c
-  test/core/end2end/tests/graceful_server_shutdown.c
-  test/core/end2end/tests/high_initial_seqno.c
-  test/core/end2end/tests/hpack_size.c
-  test/core/end2end/tests/idempotent_request.c
-  test/core/end2end/tests/invoke_large_request.c
-  test/core/end2end/tests/keepalive_timeout.c
-  test/core/end2end/tests/large_metadata.c
-  test/core/end2end/tests/load_reporting_hook.c
-  test/core/end2end/tests/max_concurrent_streams.c
-  test/core/end2end/tests/max_connection_age.c
-  test/core/end2end/tests/max_connection_idle.c
-  test/core/end2end/tests/max_message_length.c
-  test/core/end2end/tests/negative_deadline.c
-  test/core/end2end/tests/network_status_change.c
-  test/core/end2end/tests/no_logging.c
-  test/core/end2end/tests/no_op.c
-  test/core/end2end/tests/payload.c
-  test/core/end2end/tests/ping.c
-  test/core/end2end/tests/ping_pong_streaming.c
-  test/core/end2end/tests/proxy_auth.c
-  test/core/end2end/tests/registered_call.c
-  test/core/end2end/tests/request_with_flags.c
-  test/core/end2end/tests/request_with_payload.c
-  test/core/end2end/tests/resource_quota_server.c
-  test/core/end2end/tests/server_finishes_request.c
-  test/core/end2end/tests/shutdown_finishes_calls.c
-  test/core/end2end/tests/shutdown_finishes_tags.c
-  test/core/end2end/tests/simple_cacheable_request.c
-  test/core/end2end/tests/simple_delayed_request.c
-  test/core/end2end/tests/simple_metadata.c
-  test/core/end2end/tests/simple_request.c
-  test/core/end2end/tests/stream_compression_compressed_payload.c
-  test/core/end2end/tests/stream_compression_payload.c
-  test/core/end2end/tests/stream_compression_ping_pong_streaming.c
-  test/core/end2end/tests/streaming_error_response.c
-  test/core/end2end/tests/trailing_metadata.c
-  test/core/end2end/tests/workaround_cronet_compression.c
-  test/core/end2end/tests/write_buffering.c
-  test/core/end2end/tests/write_buffering_at_end.c
+  test/core/end2end/end2end_tests.cc
+  test/core/end2end/end2end_test_utils.cc
+  test/core/end2end/tests/authority_not_supported.cc
+  test/core/end2end/tests/bad_hostname.cc
+  test/core/end2end/tests/bad_ping.cc
+  test/core/end2end/tests/binary_metadata.cc
+  test/core/end2end/tests/call_creds.cc
+  test/core/end2end/tests/cancel_after_accept.cc
+  test/core/end2end/tests/cancel_after_client_done.cc
+  test/core/end2end/tests/cancel_after_invoke.cc
+  test/core/end2end/tests/cancel_after_round_trip.cc
+  test/core/end2end/tests/cancel_before_invoke.cc
+  test/core/end2end/tests/cancel_in_a_vacuum.cc
+  test/core/end2end/tests/cancel_with_status.cc
+  test/core/end2end/tests/compressed_payload.cc
+  test/core/end2end/tests/connectivity.cc
+  test/core/end2end/tests/default_host.cc
+  test/core/end2end/tests/disappearing_server.cc
+  test/core/end2end/tests/empty_batch.cc
+  test/core/end2end/tests/filter_call_init_fails.cc
+  test/core/end2end/tests/filter_causes_close.cc
+  test/core/end2end/tests/filter_latency.cc
+  test/core/end2end/tests/graceful_server_shutdown.cc
+  test/core/end2end/tests/high_initial_seqno.cc
+  test/core/end2end/tests/hpack_size.cc
+  test/core/end2end/tests/idempotent_request.cc
+  test/core/end2end/tests/invoke_large_request.cc
+  test/core/end2end/tests/keepalive_timeout.cc
+  test/core/end2end/tests/large_metadata.cc
+  test/core/end2end/tests/load_reporting_hook.cc
+  test/core/end2end/tests/max_concurrent_streams.cc
+  test/core/end2end/tests/max_connection_age.cc
+  test/core/end2end/tests/max_connection_idle.cc
+  test/core/end2end/tests/max_message_length.cc
+  test/core/end2end/tests/negative_deadline.cc
+  test/core/end2end/tests/network_status_change.cc
+  test/core/end2end/tests/no_logging.cc
+  test/core/end2end/tests/no_op.cc
+  test/core/end2end/tests/payload.cc
+  test/core/end2end/tests/ping.cc
+  test/core/end2end/tests/ping_pong_streaming.cc
+  test/core/end2end/tests/proxy_auth.cc
+  test/core/end2end/tests/registered_call.cc
+  test/core/end2end/tests/request_with_flags.cc
+  test/core/end2end/tests/request_with_payload.cc
+  test/core/end2end/tests/resource_quota_server.cc
+  test/core/end2end/tests/server_finishes_request.cc
+  test/core/end2end/tests/shutdown_finishes_calls.cc
+  test/core/end2end/tests/shutdown_finishes_tags.cc
+  test/core/end2end/tests/simple_cacheable_request.cc
+  test/core/end2end/tests/simple_delayed_request.cc
+  test/core/end2end/tests/simple_metadata.cc
+  test/core/end2end/tests/simple_request.cc
+  test/core/end2end/tests/stream_compression_compressed_payload.cc
+  test/core/end2end/tests/stream_compression_payload.cc
+  test/core/end2end/tests/stream_compression_ping_pong_streaming.cc
+  test/core/end2end/tests/streaming_error_response.cc
+  test/core/end2end/tests/trailing_metadata.cc
+  test/core/end2end/tests/workaround_cronet_compression.cc
+  test/core/end2end/tests/write_buffering.cc
+  test/core/end2end/tests/write_buffering_at_end.cc
 )
 
 if(WIN32 AND MSVC)
@@ -4958,66 +4958,66 @@
 if (gRPC_BUILD_TESTS)
 
 add_library(end2end_nosec_tests
-  test/core/end2end/end2end_nosec_tests.c
-  test/core/end2end/end2end_test_utils.c
-  test/core/end2end/tests/authority_not_supported.c
-  test/core/end2end/tests/bad_hostname.c
-  test/core/end2end/tests/bad_ping.c
-  test/core/end2end/tests/binary_metadata.c
-  test/core/end2end/tests/cancel_after_accept.c
-  test/core/end2end/tests/cancel_after_client_done.c
-  test/core/end2end/tests/cancel_after_invoke.c
-  test/core/end2end/tests/cancel_after_round_trip.c
-  test/core/end2end/tests/cancel_before_invoke.c
-  test/core/end2end/tests/cancel_in_a_vacuum.c
-  test/core/end2end/tests/cancel_with_status.c
-  test/core/end2end/tests/compressed_payload.c
-  test/core/end2end/tests/connectivity.c
-  test/core/end2end/tests/default_host.c
-  test/core/end2end/tests/disappearing_server.c
-  test/core/end2end/tests/empty_batch.c
-  test/core/end2end/tests/filter_call_init_fails.c
-  test/core/end2end/tests/filter_causes_close.c
-  test/core/end2end/tests/filter_latency.c
-  test/core/end2end/tests/graceful_server_shutdown.c
-  test/core/end2end/tests/high_initial_seqno.c
-  test/core/end2end/tests/hpack_size.c
-  test/core/end2end/tests/idempotent_request.c
-  test/core/end2end/tests/invoke_large_request.c
-  test/core/end2end/tests/keepalive_timeout.c
-  test/core/end2end/tests/large_metadata.c
-  test/core/end2end/tests/load_reporting_hook.c
-  test/core/end2end/tests/max_concurrent_streams.c
-  test/core/end2end/tests/max_connection_age.c
-  test/core/end2end/tests/max_connection_idle.c
-  test/core/end2end/tests/max_message_length.c
-  test/core/end2end/tests/negative_deadline.c
-  test/core/end2end/tests/network_status_change.c
-  test/core/end2end/tests/no_logging.c
-  test/core/end2end/tests/no_op.c
-  test/core/end2end/tests/payload.c
-  test/core/end2end/tests/ping.c
-  test/core/end2end/tests/ping_pong_streaming.c
-  test/core/end2end/tests/proxy_auth.c
-  test/core/end2end/tests/registered_call.c
-  test/core/end2end/tests/request_with_flags.c
-  test/core/end2end/tests/request_with_payload.c
-  test/core/end2end/tests/resource_quota_server.c
-  test/core/end2end/tests/server_finishes_request.c
-  test/core/end2end/tests/shutdown_finishes_calls.c
-  test/core/end2end/tests/shutdown_finishes_tags.c
-  test/core/end2end/tests/simple_cacheable_request.c
-  test/core/end2end/tests/simple_delayed_request.c
-  test/core/end2end/tests/simple_metadata.c
-  test/core/end2end/tests/simple_request.c
-  test/core/end2end/tests/stream_compression_compressed_payload.c
-  test/core/end2end/tests/stream_compression_payload.c
-  test/core/end2end/tests/stream_compression_ping_pong_streaming.c
-  test/core/end2end/tests/streaming_error_response.c
-  test/core/end2end/tests/trailing_metadata.c
-  test/core/end2end/tests/workaround_cronet_compression.c
-  test/core/end2end/tests/write_buffering.c
-  test/core/end2end/tests/write_buffering_at_end.c
+  test/core/end2end/end2end_nosec_tests.cc
+  test/core/end2end/end2end_test_utils.cc
+  test/core/end2end/tests/authority_not_supported.cc
+  test/core/end2end/tests/bad_hostname.cc
+  test/core/end2end/tests/bad_ping.cc
+  test/core/end2end/tests/binary_metadata.cc
+  test/core/end2end/tests/cancel_after_accept.cc
+  test/core/end2end/tests/cancel_after_client_done.cc
+  test/core/end2end/tests/cancel_after_invoke.cc
+  test/core/end2end/tests/cancel_after_round_trip.cc
+  test/core/end2end/tests/cancel_before_invoke.cc
+  test/core/end2end/tests/cancel_in_a_vacuum.cc
+  test/core/end2end/tests/cancel_with_status.cc
+  test/core/end2end/tests/compressed_payload.cc
+  test/core/end2end/tests/connectivity.cc
+  test/core/end2end/tests/default_host.cc
+  test/core/end2end/tests/disappearing_server.cc
+  test/core/end2end/tests/empty_batch.cc
+  test/core/end2end/tests/filter_call_init_fails.cc
+  test/core/end2end/tests/filter_causes_close.cc
+  test/core/end2end/tests/filter_latency.cc
+  test/core/end2end/tests/graceful_server_shutdown.cc
+  test/core/end2end/tests/high_initial_seqno.cc
+  test/core/end2end/tests/hpack_size.cc
+  test/core/end2end/tests/idempotent_request.cc
+  test/core/end2end/tests/invoke_large_request.cc
+  test/core/end2end/tests/keepalive_timeout.cc
+  test/core/end2end/tests/large_metadata.cc
+  test/core/end2end/tests/load_reporting_hook.cc
+  test/core/end2end/tests/max_concurrent_streams.cc
+  test/core/end2end/tests/max_connection_age.cc
+  test/core/end2end/tests/max_connection_idle.cc
+  test/core/end2end/tests/max_message_length.cc
+  test/core/end2end/tests/negative_deadline.cc
+  test/core/end2end/tests/network_status_change.cc
+  test/core/end2end/tests/no_logging.cc
+  test/core/end2end/tests/no_op.cc
+  test/core/end2end/tests/payload.cc
+  test/core/end2end/tests/ping.cc
+  test/core/end2end/tests/ping_pong_streaming.cc
+  test/core/end2end/tests/proxy_auth.cc
+  test/core/end2end/tests/registered_call.cc
+  test/core/end2end/tests/request_with_flags.cc
+  test/core/end2end/tests/request_with_payload.cc
+  test/core/end2end/tests/resource_quota_server.cc
+  test/core/end2end/tests/server_finishes_request.cc
+  test/core/end2end/tests/shutdown_finishes_calls.cc
+  test/core/end2end/tests/shutdown_finishes_tags.cc
+  test/core/end2end/tests/simple_cacheable_request.cc
+  test/core/end2end/tests/simple_delayed_request.cc
+  test/core/end2end/tests/simple_metadata.cc
+  test/core/end2end/tests/simple_request.cc
+  test/core/end2end/tests/stream_compression_compressed_payload.cc
+  test/core/end2end/tests/stream_compression_payload.cc
+  test/core/end2end/tests/stream_compression_ping_pong_streaming.cc
+  test/core/end2end/tests/streaming_error_response.cc
+  test/core/end2end/tests/trailing_metadata.cc
+  test/core/end2end/tests/workaround_cronet_compression.cc
+  test/core/end2end/tests/write_buffering.cc
+  test/core/end2end/tests/write_buffering_at_end.cc
 )
 
 if(WIN32 AND MSVC)
@@ -5060,7 +5060,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(alarm_test
-  test/core/surface/alarm_test.c
+  test/core/surface/alarm_test.cc
 )
 
 
@@ -5090,7 +5090,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(algorithm_test
-  test/core/compression/algorithm_test.c
+  test/core/compression/algorithm_test.cc
 )
 
 
@@ -5120,7 +5120,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(alloc_test
-  test/core/support/alloc_test.c
+  test/core/support/alloc_test.cc
 )
 
 
@@ -5148,7 +5148,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(alpn_test
-  test/core/transport/chttp2/alpn_test.c
+  test/core/transport/chttp2/alpn_test.cc
 )
 
 
@@ -5178,7 +5178,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(arena_test
-  test/core/support/arena_test.c
+  test/core/support/arena_test.cc
 )
 
 
@@ -5206,7 +5206,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(backoff_test
-  test/core/backoff/backoff_test.c
+  test/core/backoff/backoff_test.cc
 )
 
 
@@ -5236,7 +5236,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(bad_server_response_test
-  test/core/end2end/bad_server_response_test.c
+  test/core/end2end/bad_server_response_test.cc
 )
 
 
@@ -5267,7 +5267,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(bin_decoder_test
-  test/core/transport/chttp2/bin_decoder_test.c
+  test/core/transport/chttp2/bin_decoder_test.cc
 )
 
 
@@ -5295,7 +5295,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(bin_encoder_test
-  test/core/transport/chttp2/bin_encoder_test.c
+  test/core/transport/chttp2/bin_encoder_test.cc
 )
 
 
@@ -5323,7 +5323,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(byte_stream_test
-  test/core/transport/byte_stream_test.c
+  test/core/transport/byte_stream_test.cc
 )
 
 
@@ -5353,7 +5353,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(channel_create_test
-  test/core/surface/channel_create_test.c
+  test/core/surface/channel_create_test.cc
 )
 
 
@@ -5418,7 +5418,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(chttp2_hpack_encoder_test
-  test/core/transport/chttp2/hpack_encoder_test.c
+  test/core/transport/chttp2/hpack_encoder_test.cc
 )
 
 
@@ -5448,7 +5448,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(chttp2_stream_map_test
-  test/core/transport/chttp2/stream_map_test.c
+  test/core/transport/chttp2/stream_map_test.cc
 )
 
 
@@ -5478,7 +5478,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(chttp2_varint_test
-  test/core/transport/chttp2/varint_test.c
+  test/core/transport/chttp2/varint_test.cc
 )
 
 
@@ -5508,7 +5508,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(combiner_test
-  test/core/iomgr/combiner_test.c
+  test/core/iomgr/combiner_test.cc
 )
 
 
@@ -5538,7 +5538,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(compression_test
-  test/core/compression/compression_test.c
+  test/core/compression/compression_test.cc
 )
 
 
@@ -5568,7 +5568,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(concurrent_connectivity_test
-  test/core/surface/concurrent_connectivity_test.c
+  test/core/surface/concurrent_connectivity_test.cc
 )
 
 
@@ -5598,7 +5598,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(connection_refused_test
-  test/core/end2end/connection_refused_test.c
+  test/core/end2end/connection_refused_test.cc
 )
 
 
@@ -5628,7 +5628,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(dns_resolver_connectivity_test
-  test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
+  test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
 )
 
 
@@ -5658,7 +5658,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(dns_resolver_test
-  test/core/client_channel/resolvers/dns_resolver_test.c
+  test/core/client_channel/resolvers/dns_resolver_test.cc
 )
 
 
@@ -5689,7 +5689,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(dualstack_socket_test
-  test/core/end2end/dualstack_socket_test.c
+  test/core/end2end/dualstack_socket_test.cc
 )
 
 
@@ -5720,7 +5720,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(endpoint_pair_test
-  test/core/iomgr/endpoint_pair_test.c
+  test/core/iomgr/endpoint_pair_test.cc
 )
 
 
@@ -5750,7 +5750,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(error_test
-  test/core/iomgr/error_test.c
+  test/core/iomgr/error_test.cc
 )
 
 
@@ -5781,7 +5781,7 @@
 if(_gRPC_PLATFORM_LINUX)
 
 add_executable(ev_epollsig_linux_test
-  test/core/iomgr/ev_epollsig_linux_test.c
+  test/core/iomgr/ev_epollsig_linux_test.cc
 )
 
 
@@ -5812,7 +5812,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(fake_resolver_test
-  test/core/client_channel/resolvers/fake_resolver_test.c
+  test/core/client_channel/resolvers/fake_resolver_test.cc
 )
 
 
@@ -5843,8 +5843,8 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(fake_transport_security_test
-  test/core/tsi/fake_transport_security_test.c
-  test/core/tsi/transport_security_test_lib.c
+  test/core/tsi/fake_transport_security_test.cc
+  test/core/tsi/transport_security_test_lib.cc
 )
 
 
@@ -5875,7 +5875,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(fd_conservation_posix_test
-  test/core/iomgr/fd_conservation_posix_test.c
+  test/core/iomgr/fd_conservation_posix_test.cc
 )
 
 
@@ -5907,7 +5907,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(fd_posix_test
-  test/core/iomgr/fd_posix_test.c
+  test/core/iomgr/fd_posix_test.cc
 )
 
 
@@ -5938,7 +5938,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(fling_client
-  test/core/fling/client.c
+  test/core/fling/client.cc
 )
 
 
@@ -5968,7 +5968,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(fling_server
-  test/core/fling/server.c
+  test/core/fling/server.cc
 )
 
 
@@ -5999,7 +5999,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(fling_stream_test
-  test/core/fling/fling_stream_test.c
+  test/core/fling/fling_stream_test.cc
 )
 
 
@@ -6031,7 +6031,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(fling_test
-  test/core/fling/fling_test.c
+  test/core/fling/fling_test.cc
 )
 
 
@@ -6164,7 +6164,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(goaway_server_test
-  test/core/end2end/goaway_server_test.c
+  test/core/end2end/goaway_server_test.cc
 )
 
 
@@ -6195,7 +6195,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_avl_test
-  test/core/support/avl_test.c
+  test/core/support/avl_test.cc
 )
 
 
@@ -6223,7 +6223,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_cmdline_test
-  test/core/support/cmdline_test.c
+  test/core/support/cmdline_test.cc
 )
 
 
@@ -6251,7 +6251,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_cpu_test
-  test/core/support/cpu_test.c
+  test/core/support/cpu_test.cc
 )
 
 
@@ -6279,7 +6279,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_env_test
-  test/core/support/env_test.c
+  test/core/support/env_test.cc
 )
 
 
@@ -6307,7 +6307,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_histogram_test
-  test/core/support/histogram_test.c
+  test/core/support/histogram_test.cc
 )
 
 
@@ -6335,7 +6335,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_host_port_test
-  test/core/support/host_port_test.c
+  test/core/support/host_port_test.cc
 )
 
 
@@ -6363,7 +6363,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_log_test
-  test/core/support/log_test.c
+  test/core/support/log_test.cc
 )
 
 
@@ -6391,7 +6391,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_mpscq_test
-  test/core/support/mpscq_test.c
+  test/core/support/mpscq_test.cc
 )
 
 
@@ -6419,7 +6419,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_spinlock_test
-  test/core/support/spinlock_test.c
+  test/core/support/spinlock_test.cc
 )
 
 
@@ -6447,7 +6447,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_stack_lockfree_test
-  test/core/support/stack_lockfree_test.c
+  test/core/support/stack_lockfree_test.cc
 )
 
 
@@ -6475,7 +6475,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_string_test
-  test/core/support/string_test.c
+  test/core/support/string_test.cc
 )
 
 
@@ -6503,7 +6503,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_sync_test
-  test/core/support/sync_test.c
+  test/core/support/sync_test.cc
 )
 
 
@@ -6531,7 +6531,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_thd_test
-  test/core/support/thd_test.c
+  test/core/support/thd_test.cc
 )
 
 
@@ -6559,7 +6559,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_time_test
-  test/core/support/time_test.c
+  test/core/support/time_test.cc
 )
 
 
@@ -6587,7 +6587,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_tls_test
-  test/core/support/tls_test.c
+  test/core/support/tls_test.cc
 )
 
 
@@ -6615,7 +6615,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(gpr_useful_test
-  test/core/support/useful_test.c
+  test/core/support/useful_test.cc
 )
 
 
@@ -6643,7 +6643,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_auth_context_test
-  test/core/security/auth_context_test.c
+  test/core/security/auth_context_test.cc
 )
 
 
@@ -6673,7 +6673,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_b64_test
-  test/core/slice/b64_test.c
+  test/core/slice/b64_test.cc
 )
 
 
@@ -6703,7 +6703,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_byte_buffer_reader_test
-  test/core/surface/byte_buffer_reader_test.c
+  test/core/surface/byte_buffer_reader_test.cc
 )
 
 
@@ -6733,7 +6733,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_channel_args_test
-  test/core/channel/channel_args_test.c
+  test/core/channel/channel_args_test.cc
 )
 
 
@@ -6763,7 +6763,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_channel_stack_builder_test
-  test/core/channel/channel_stack_builder_test.c
+  test/core/channel/channel_stack_builder_test.cc
 )
 
 
@@ -6793,7 +6793,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_channel_stack_test
-  test/core/channel/channel_stack_test.c
+  test/core/channel/channel_stack_test.cc
 )
 
 
@@ -6823,7 +6823,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_completion_queue_test
-  test/core/surface/completion_queue_test.c
+  test/core/surface/completion_queue_test.cc
 )
 
 
@@ -6853,7 +6853,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_completion_queue_threading_test
-  test/core/surface/completion_queue_threading_test.c
+  test/core/surface/completion_queue_threading_test.cc
 )
 
 
@@ -6882,7 +6882,7 @@
 endif (gRPC_BUILD_TESTS)
 
 add_executable(grpc_create_jwt
-  test/core/security/create_jwt.c
+  test/core/security/create_jwt.cc
 )
 
 
@@ -6919,7 +6919,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_credentials_test
-  test/core/security/credentials_test.c
+  test/core/security/credentials_test.cc
 )
 
 
@@ -6949,7 +6949,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_fetch_oauth2
-  test/core/security/fetch_oauth2.c
+  test/core/security/fetch_oauth2.cc
 )
 
 
@@ -6979,7 +6979,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_invalid_channel_args_test
-  test/core/surface/invalid_channel_args_test.c
+  test/core/surface/invalid_channel_args_test.cc
 )
 
 
@@ -7010,7 +7010,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(grpc_json_token_test
-  test/core/security/json_token_test.c
+  test/core/security/json_token_test.cc
 )
 
 
@@ -7041,7 +7041,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_jwt_verifier_test
-  test/core/security/jwt_verifier_test.c
+  test/core/security/jwt_verifier_test.cc
 )
 
 
@@ -7070,7 +7070,7 @@
 endif (gRPC_BUILD_TESTS)
 
 add_executable(grpc_print_google_default_creds_token
-  test/core/security/print_google_default_creds_token.c
+  test/core/security/print_google_default_creds_token.cc
 )
 
 
@@ -7106,7 +7106,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_security_connector_test
-  test/core/security/security_connector_test.c
+  test/core/security/security_connector_test.cc
 )
 
 
@@ -7136,7 +7136,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(grpc_ssl_credentials_test
-  test/core/security/ssl_credentials_test.c
+  test/core/security/ssl_credentials_test.cc
 )
 
 
@@ -7165,7 +7165,7 @@
 endif (gRPC_BUILD_TESTS)
 
 add_executable(grpc_verify_jwt
-  test/core/security/verify_jwt.c
+  test/core/security/verify_jwt.cc
 )
 
 
@@ -7202,7 +7202,7 @@
 if(_gRPC_PLATFORM_LINUX)
 
 add_executable(handshake_client
-  test/core/handshake/client_ssl.c
+  test/core/handshake/client_ssl.cc
 )
 
 
@@ -7235,7 +7235,7 @@
 if(_gRPC_PLATFORM_LINUX)
 
 add_executable(handshake_server
-  test/core/handshake/server_ssl.c
+  test/core/handshake/server_ssl.cc
 )
 
 
@@ -7267,7 +7267,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(hpack_parser_test
-  test/core/transport/chttp2/hpack_parser_test.c
+  test/core/transport/chttp2/hpack_parser_test.cc
 )
 
 
@@ -7297,7 +7297,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(hpack_table_test
-  test/core/transport/chttp2/hpack_table_test.c
+  test/core/transport/chttp2/hpack_table_test.cc
 )
 
 
@@ -7327,7 +7327,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(http_parser_test
-  test/core/http/parser_test.c
+  test/core/http/parser_test.cc
 )
 
 
@@ -7357,7 +7357,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(httpcli_format_request_test
-  test/core/http/format_request_test.c
+  test/core/http/format_request_test.cc
 )
 
 
@@ -7388,7 +7388,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(httpcli_test
-  test/core/http/httpcli_test.c
+  test/core/http/httpcli_test.cc
 )
 
 
@@ -7420,7 +7420,7 @@
 if(_gRPC_PLATFORM_LINUX)
 
 add_executable(httpscli_test
-  test/core/http/httpscli_test.c
+  test/core/http/httpscli_test.cc
 )
 
 
@@ -7451,7 +7451,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(init_test
-  test/core/surface/init_test.c
+  test/core/surface/init_test.cc
 )
 
 
@@ -7481,7 +7481,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(invalid_call_argument_test
-  test/core/end2end/invalid_call_argument_test.c
+  test/core/end2end/invalid_call_argument_test.cc
 )
 
 
@@ -7511,7 +7511,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(json_rewrite
-  test/core/json/json_rewrite.c
+  test/core/json/json_rewrite.cc
 )
 
 
@@ -7539,7 +7539,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(json_rewrite_test
-  test/core/json/json_rewrite_test.c
+  test/core/json/json_rewrite_test.cc
 )
 
 
@@ -7569,7 +7569,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(json_stream_error_test
-  test/core/json/json_stream_error_test.c
+  test/core/json/json_stream_error_test.cc
 )
 
 
@@ -7599,7 +7599,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(json_test
-  test/core/json/json_test.c
+  test/core/json/json_test.cc
 )
 
 
@@ -7629,7 +7629,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(lame_client_test
-  test/core/surface/lame_client_test.c
+  test/core/surface/lame_client_test.cc
 )
 
 
@@ -7659,7 +7659,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(lb_policies_test
-  test/core/client_channel/lb_policies_test.c
+  test/core/client_channel/lb_policies_test.cc
 )
 
 
@@ -7689,7 +7689,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(load_file_test
-  test/core/iomgr/load_file_test.c
+  test/core/iomgr/load_file_test.cc
 )
 
 
@@ -7719,7 +7719,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(memory_profile_client
-  test/core/memory_usage/client.c
+  test/core/memory_usage/client.cc
 )
 
 
@@ -7749,7 +7749,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(memory_profile_server
-  test/core/memory_usage/server.c
+  test/core/memory_usage/server.cc
 )
 
 
@@ -7780,7 +7780,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(memory_profile_test
-  test/core/memory_usage/memory_usage_test.c
+  test/core/memory_usage/memory_usage_test.cc
 )
 
 
@@ -7811,7 +7811,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(message_compress_test
-  test/core/compression/message_compress_test.c
+  test/core/compression/message_compress_test.cc
 )
 
 
@@ -7841,7 +7841,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(minimal_stack_is_minimal_test
-  test/core/channel/minimal_stack_is_minimal_test.c
+  test/core/channel/minimal_stack_is_minimal_test.cc
 )
 
 
@@ -7871,7 +7871,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(multiple_server_queues_test
-  test/core/end2end/multiple_server_queues_test.c
+  test/core/end2end/multiple_server_queues_test.cc
 )
 
 
@@ -7901,7 +7901,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(murmur_hash_test
-  test/core/support/murmur_hash_test.c
+  test/core/support/murmur_hash_test.cc
 )
 
 
@@ -7929,7 +7929,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(no_server_test
-  test/core/end2end/no_server_test.c
+  test/core/end2end/no_server_test.cc
 )
 
 
@@ -7959,7 +7959,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(num_external_connectivity_watchers_test
-  test/core/surface/num_external_connectivity_watchers_test.c
+  test/core/surface/num_external_connectivity_watchers_test.cc
 )
 
 
@@ -7989,7 +7989,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(parse_address_test
-  test/core/client_channel/parse_address_test.c
+  test/core/client_channel/parse_address_test.cc
 )
 
 
@@ -8019,7 +8019,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(percent_encoding_test
-  test/core/slice/percent_encoding_test.c
+  test/core/slice/percent_encoding_test.cc
 )
 
 
@@ -8050,7 +8050,7 @@
 if(_gRPC_PLATFORM_LINUX)
 
 add_executable(pollset_set_test
-  test/core/iomgr/pollset_set_test.c
+  test/core/iomgr/pollset_set_test.cc
 )
 
 
@@ -8082,7 +8082,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(resolve_address_posix_test
-  test/core/iomgr/resolve_address_posix_test.c
+  test/core/iomgr/resolve_address_posix_test.cc
 )
 
 
@@ -8113,7 +8113,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(resolve_address_test
-  test/core/iomgr/resolve_address_test.c
+  test/core/iomgr/resolve_address_test.cc
 )
 
 
@@ -8143,7 +8143,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(resource_quota_test
-  test/core/iomgr/resource_quota_test.c
+  test/core/iomgr/resource_quota_test.cc
 )
 
 
@@ -8173,7 +8173,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(secure_channel_create_test
-  test/core/surface/secure_channel_create_test.c
+  test/core/surface/secure_channel_create_test.cc
 )
 
 
@@ -8203,7 +8203,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(secure_endpoint_test
-  test/core/security/secure_endpoint_test.c
+  test/core/security/secure_endpoint_test.cc
 )
 
 
@@ -8233,7 +8233,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(sequential_connectivity_test
-  test/core/surface/sequential_connectivity_test.c
+  test/core/surface/sequential_connectivity_test.cc
 )
 
 
@@ -8263,7 +8263,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(server_chttp2_test
-  test/core/surface/server_chttp2_test.c
+  test/core/surface/server_chttp2_test.cc
 )
 
 
@@ -8293,7 +8293,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(server_test
-  test/core/surface/server_test.c
+  test/core/surface/server_test.cc
 )
 
 
@@ -8323,7 +8323,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(slice_buffer_test
-  test/core/slice/slice_buffer_test.c
+  test/core/slice/slice_buffer_test.cc
 )
 
 
@@ -8353,7 +8353,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(slice_hash_table_test
-  test/core/slice/slice_hash_table_test.c
+  test/core/slice/slice_hash_table_test.cc
 )
 
 
@@ -8383,7 +8383,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(slice_string_helpers_test
-  test/core/slice/slice_string_helpers_test.c
+  test/core/slice/slice_string_helpers_test.cc
 )
 
 
@@ -8413,7 +8413,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(slice_test
-  test/core/slice/slice_test.c
+  test/core/slice/slice_test.cc
 )
 
 
@@ -8443,7 +8443,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(sockaddr_resolver_test
-  test/core/client_channel/resolvers/sockaddr_resolver_test.c
+  test/core/client_channel/resolvers/sockaddr_resolver_test.cc
 )
 
 
@@ -8473,7 +8473,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(sockaddr_utils_test
-  test/core/iomgr/sockaddr_utils_test.c
+  test/core/iomgr/sockaddr_utils_test.cc
 )
 
 
@@ -8504,7 +8504,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(socket_utils_test
-  test/core/iomgr/socket_utils_test.c
+  test/core/iomgr/socket_utils_test.cc
 )
 
 
@@ -8536,8 +8536,8 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(ssl_transport_security_test
-  test/core/tsi/ssl_transport_security_test.c
-  test/core/tsi/transport_security_test_lib.c
+  test/core/tsi/ssl_transport_security_test.cc
+  test/core/tsi/transport_security_test_lib.cc
 )
 
 
@@ -8567,7 +8567,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(status_conversion_test
-  test/core/transport/status_conversion_test.c
+  test/core/transport/status_conversion_test.cc
 )
 
 
@@ -8597,7 +8597,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(stream_compression_test
-  test/core/compression/stream_compression_test.c
+  test/core/compression/stream_compression_test.cc
 )
 
 
@@ -8627,7 +8627,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(stream_owned_slice_test
-  test/core/transport/stream_owned_slice_test.c
+  test/core/transport/stream_owned_slice_test.cc
 )
 
 
@@ -8658,7 +8658,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(tcp_client_posix_test
-  test/core/iomgr/tcp_client_posix_test.c
+  test/core/iomgr/tcp_client_posix_test.cc
 )
 
 
@@ -8689,7 +8689,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(tcp_client_uv_test
-  test/core/iomgr/tcp_client_uv_test.c
+  test/core/iomgr/tcp_client_uv_test.cc
 )
 
 
@@ -8720,7 +8720,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(tcp_posix_test
-  test/core/iomgr/tcp_posix_test.c
+  test/core/iomgr/tcp_posix_test.cc
 )
 
 
@@ -8752,7 +8752,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(tcp_server_posix_test
-  test/core/iomgr/tcp_server_posix_test.c
+  test/core/iomgr/tcp_server_posix_test.cc
 )
 
 
@@ -8783,7 +8783,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(tcp_server_uv_test
-  test/core/iomgr/tcp_server_uv_test.c
+  test/core/iomgr/tcp_server_uv_test.cc
 )
 
 
@@ -8813,7 +8813,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(time_averaged_stats_test
-  test/core/iomgr/time_averaged_stats_test.c
+  test/core/iomgr/time_averaged_stats_test.cc
 )
 
 
@@ -8843,7 +8843,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(timeout_encoding_test
-  test/core/transport/timeout_encoding_test.c
+  test/core/transport/timeout_encoding_test.cc
 )
 
 
@@ -8873,7 +8873,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(timer_heap_test
-  test/core/iomgr/timer_heap_test.c
+  test/core/iomgr/timer_heap_test.cc
 )
 
 
@@ -8903,7 +8903,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(timer_list_test
-  test/core/iomgr/timer_list_test.c
+  test/core/iomgr/timer_list_test.cc
 )
 
 
@@ -8933,7 +8933,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(transport_connectivity_state_test
-  test/core/transport/connectivity_state_test.c
+  test/core/transport/connectivity_state_test.cc
 )
 
 
@@ -8963,7 +8963,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(transport_metadata_test
-  test/core/transport/metadata_test.c
+  test/core/transport/metadata_test.cc
 )
 
 
@@ -8994,7 +8994,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(transport_security_test
-  test/core/tsi/transport_security_test.c
+  test/core/tsi/transport_security_test.cc
 )
 
 
@@ -9026,7 +9026,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(udp_server_test
-  test/core/iomgr/udp_server_test.c
+  test/core/iomgr/udp_server_test.cc
 )
 
 
@@ -9057,7 +9057,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(uri_parser_test
-  test/core/client_channel/uri_parser_test.c
+  test/core/client_channel/uri_parser_test.cc
 )
 
 
@@ -9088,7 +9088,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(wakeup_fd_cv_test
-  test/core/iomgr/wakeup_fd_cv_test.c
+  test/core/iomgr/wakeup_fd_cv_test.cc
 )
 
 
@@ -12980,7 +12980,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(badreq_bad_client_test
-  test/core/bad_client/tests/badreq.c
+  test/core/bad_client/tests/badreq.cc
 )
 
 
@@ -13012,7 +13012,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(connection_prefix_bad_client_test
-  test/core/bad_client/tests/connection_prefix.c
+  test/core/bad_client/tests/connection_prefix.cc
 )
 
 
@@ -13044,7 +13044,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(head_of_line_blocking_bad_client_test
-  test/core/bad_client/tests/head_of_line_blocking.c
+  test/core/bad_client/tests/head_of_line_blocking.cc
 )
 
 
@@ -13076,7 +13076,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(headers_bad_client_test
-  test/core/bad_client/tests/headers.c
+  test/core/bad_client/tests/headers.cc
 )
 
 
@@ -13108,7 +13108,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(initial_settings_frame_bad_client_test
-  test/core/bad_client/tests/initial_settings_frame.c
+  test/core/bad_client/tests/initial_settings_frame.cc
 )
 
 
@@ -13140,7 +13140,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(server_registered_method_bad_client_test
-  test/core/bad_client/tests/server_registered_method.c
+  test/core/bad_client/tests/server_registered_method.cc
 )
 
 
@@ -13172,7 +13172,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(simple_request_bad_client_test
-  test/core/bad_client/tests/simple_request.c
+  test/core/bad_client/tests/simple_request.cc
 )
 
 
@@ -13204,7 +13204,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(unknown_frame_bad_client_test
-  test/core/bad_client/tests/unknown_frame.c
+  test/core/bad_client/tests/unknown_frame.cc
 )
 
 
@@ -13236,7 +13236,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(window_overflow_bad_client_test
-  test/core/bad_client/tests/window_overflow.c
+  test/core/bad_client/tests/window_overflow.cc
 )
 
 
@@ -13269,7 +13269,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(bad_ssl_cert_server
-  test/core/bad_ssl/servers/cert.c
+  test/core/bad_ssl/servers/cert.cc
 )
 
 
@@ -13302,7 +13302,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(bad_ssl_cert_test
-  test/core/bad_ssl/bad_ssl_test.c
+  test/core/bad_ssl/bad_ssl_test.cc
 )
 
 
@@ -13333,7 +13333,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_census_test
-  test/core/end2end/fixtures/h2_census.c
+  test/core/end2end/fixtures/h2_census.cc
 )
 
 
@@ -13364,7 +13364,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_compress_test
-  test/core/end2end/fixtures/h2_compress.c
+  test/core/end2end/fixtures/h2_compress.cc
 )
 
 
@@ -13395,7 +13395,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_fakesec_test
-  test/core/end2end/fixtures/h2_fakesec.c
+  test/core/end2end/fixtures/h2_fakesec.cc
 )
 
 
@@ -13427,7 +13427,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(h2_fd_test
-  test/core/end2end/fixtures/h2_fd.c
+  test/core/end2end/fixtures/h2_fd.cc
 )
 
 
@@ -13459,7 +13459,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_full_test
-  test/core/end2end/fixtures/h2_full.c
+  test/core/end2end/fixtures/h2_full.cc
 )
 
 
@@ -13491,7 +13491,7 @@
 if(_gRPC_PLATFORM_LINUX)
 
 add_executable(h2_full+pipe_test
-  test/core/end2end/fixtures/h2_full+pipe.c
+  test/core/end2end/fixtures/h2_full+pipe.cc
 )
 
 
@@ -13523,7 +13523,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_full+trace_test
-  test/core/end2end/fixtures/h2_full+trace.c
+  test/core/end2end/fixtures/h2_full+trace.cc
 )
 
 
@@ -13554,7 +13554,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_full+workarounds_test
-  test/core/end2end/fixtures/h2_full+workarounds.c
+  test/core/end2end/fixtures/h2_full+workarounds.cc
 )
 
 
@@ -13585,7 +13585,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_http_proxy_test
-  test/core/end2end/fixtures/h2_http_proxy.c
+  test/core/end2end/fixtures/h2_http_proxy.cc
 )
 
 
@@ -13616,7 +13616,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_load_reporting_test
-  test/core/end2end/fixtures/h2_load_reporting.c
+  test/core/end2end/fixtures/h2_load_reporting.cc
 )
 
 
@@ -13647,7 +13647,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_oauth2_test
-  test/core/end2end/fixtures/h2_oauth2.c
+  test/core/end2end/fixtures/h2_oauth2.cc
 )
 
 
@@ -13678,7 +13678,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_proxy_test
-  test/core/end2end/fixtures/h2_proxy.c
+  test/core/end2end/fixtures/h2_proxy.cc
 )
 
 
@@ -13709,7 +13709,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_sockpair_test
-  test/core/end2end/fixtures/h2_sockpair.c
+  test/core/end2end/fixtures/h2_sockpair.cc
 )
 
 
@@ -13740,7 +13740,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_sockpair+trace_test
-  test/core/end2end/fixtures/h2_sockpair+trace.c
+  test/core/end2end/fixtures/h2_sockpair+trace.cc
 )
 
 
@@ -13771,7 +13771,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_sockpair_1byte_test
-  test/core/end2end/fixtures/h2_sockpair_1byte.c
+  test/core/end2end/fixtures/h2_sockpair_1byte.cc
 )
 
 
@@ -13802,7 +13802,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_ssl_test
-  test/core/end2end/fixtures/h2_ssl.c
+  test/core/end2end/fixtures/h2_ssl.cc
 )
 
 
@@ -13833,7 +13833,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_ssl_proxy_test
-  test/core/end2end/fixtures/h2_ssl_proxy.c
+  test/core/end2end/fixtures/h2_ssl_proxy.cc
 )
 
 
@@ -13865,7 +13865,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(h2_uds_test
-  test/core/end2end/fixtures/h2_uds.c
+  test/core/end2end/fixtures/h2_uds.cc
 )
 
 
@@ -13897,7 +13897,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(inproc_test
-  test/core/end2end/fixtures/inproc.c
+  test/core/end2end/fixtures/inproc.cc
 )
 
 
@@ -13928,7 +13928,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_census_nosec_test
-  test/core/end2end/fixtures/h2_census.c
+  test/core/end2end/fixtures/h2_census.cc
 )
 
 
@@ -13959,7 +13959,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_compress_nosec_test
-  test/core/end2end/fixtures/h2_compress.c
+  test/core/end2end/fixtures/h2_compress.cc
 )
 
 
@@ -13991,7 +13991,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(h2_fd_nosec_test
-  test/core/end2end/fixtures/h2_fd.c
+  test/core/end2end/fixtures/h2_fd.cc
 )
 
 
@@ -14023,7 +14023,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_full_nosec_test
-  test/core/end2end/fixtures/h2_full.c
+  test/core/end2end/fixtures/h2_full.cc
 )
 
 
@@ -14055,7 +14055,7 @@
 if(_gRPC_PLATFORM_LINUX)
 
 add_executable(h2_full+pipe_nosec_test
-  test/core/end2end/fixtures/h2_full+pipe.c
+  test/core/end2end/fixtures/h2_full+pipe.cc
 )
 
 
@@ -14087,7 +14087,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_full+trace_nosec_test
-  test/core/end2end/fixtures/h2_full+trace.c
+  test/core/end2end/fixtures/h2_full+trace.cc
 )
 
 
@@ -14118,7 +14118,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_full+workarounds_nosec_test
-  test/core/end2end/fixtures/h2_full+workarounds.c
+  test/core/end2end/fixtures/h2_full+workarounds.cc
 )
 
 
@@ -14149,7 +14149,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_http_proxy_nosec_test
-  test/core/end2end/fixtures/h2_http_proxy.c
+  test/core/end2end/fixtures/h2_http_proxy.cc
 )
 
 
@@ -14180,7 +14180,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_load_reporting_nosec_test
-  test/core/end2end/fixtures/h2_load_reporting.c
+  test/core/end2end/fixtures/h2_load_reporting.cc
 )
 
 
@@ -14211,7 +14211,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_proxy_nosec_test
-  test/core/end2end/fixtures/h2_proxy.c
+  test/core/end2end/fixtures/h2_proxy.cc
 )
 
 
@@ -14242,7 +14242,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_sockpair_nosec_test
-  test/core/end2end/fixtures/h2_sockpair.c
+  test/core/end2end/fixtures/h2_sockpair.cc
 )
 
 
@@ -14273,7 +14273,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_sockpair+trace_nosec_test
-  test/core/end2end/fixtures/h2_sockpair+trace.c
+  test/core/end2end/fixtures/h2_sockpair+trace.cc
 )
 
 
@@ -14304,7 +14304,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(h2_sockpair_1byte_nosec_test
-  test/core/end2end/fixtures/h2_sockpair_1byte.c
+  test/core/end2end/fixtures/h2_sockpair_1byte.cc
 )
 
 
@@ -14336,7 +14336,7 @@
 if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
 
 add_executable(h2_uds_nosec_test
-  test/core/end2end/fixtures/h2_uds.c
+  test/core/end2end/fixtures/h2_uds.cc
 )
 
 
@@ -14368,7 +14368,7 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(inproc_nosec_test
-  test/core/end2end/fixtures/inproc.c
+  test/core/end2end/fixtures/inproc.cc
 )
 
 
@@ -14575,8 +14575,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(api_fuzzer_one_entry
-  test/core/end2end/fuzzers/api_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/end2end/fuzzers/api_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14606,8 +14606,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(client_fuzzer_one_entry
-  test/core/end2end/fuzzers/client_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/end2end/fuzzers/client_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14637,8 +14637,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(hpack_parser_fuzzer_test_one_entry
-  test/core/transport/chttp2/hpack_parser_fuzzer_test.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14668,8 +14668,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(http_request_fuzzer_test_one_entry
-  test/core/http/request_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/http/request_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14699,8 +14699,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(http_response_fuzzer_test_one_entry
-  test/core/http/response_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/http/response_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14730,8 +14730,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(json_fuzzer_test_one_entry
-  test/core/json/fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/json/fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14761,8 +14761,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(nanopb_fuzzer_response_test_one_entry
-  test/core/nanopb/fuzzer_response.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/nanopb/fuzzer_response.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14792,8 +14792,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(nanopb_fuzzer_serverlist_test_one_entry
-  test/core/nanopb/fuzzer_serverlist.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/nanopb/fuzzer_serverlist.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14823,8 +14823,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(percent_decode_fuzzer_one_entry
-  test/core/slice/percent_decode_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/slice/percent_decode_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14854,8 +14854,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(percent_encode_fuzzer_one_entry
-  test/core/slice/percent_encode_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/slice/percent_encode_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14885,8 +14885,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(server_fuzzer_one_entry
-  test/core/end2end/fuzzers/server_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/end2end/fuzzers/server_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14916,8 +14916,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(ssl_server_fuzzer_one_entry
-  test/core/security/ssl_server_fuzzer.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/security/ssl_server_fuzzer.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
@@ -14947,8 +14947,8 @@
 if (gRPC_BUILD_TESTS)
 
 add_executable(uri_fuzzer_test_one_entry
-  test/core/client_channel/uri_fuzzer_test.c
-  test/core/util/one_corpus_entry_fuzzer.c
+  test/core/client_channel/uri_fuzzer_test.cc
+  test/core/util/one_corpus_entry_fuzzer.cc
 )
 
 
diff --git a/Makefile b/Makefile
index ff26247..1e3418e 100644
--- a/Makefile
+++ b/Makefile
@@ -2914,7 +2914,7 @@
 
 
 LIBGPR_TEST_UTIL_SRC = \
-    test/core/util/test_config.c \
+    test/core/util/test_config.cc \
 
 PUBLIC_HEADERS_C += \
 
@@ -3580,26 +3580,26 @@
 
 
 LIBGRPC_TEST_UTIL_SRC = \
-    test/core/end2end/data/client_certs.c \
-    test/core/end2end/data/server1_cert.c \
-    test/core/end2end/data/server1_key.c \
-    test/core/end2end/data/test_root_cert.c \
-    test/core/security/oauth2_utils.c \
+    test/core/end2end/data/client_certs.cc \
+    test/core/end2end/data/server1_cert.cc \
+    test/core/end2end/data/server1_key.cc \
+    test/core/end2end/data/test_root_cert.cc \
+    test/core/security/oauth2_utils.cc \
     src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
-    test/core/end2end/cq_verifier.c \
-    test/core/end2end/fixtures/http_proxy_fixture.c \
-    test/core/end2end/fixtures/proxy.c \
-    test/core/iomgr/endpoint_tests.c \
+    test/core/end2end/cq_verifier.cc \
+    test/core/end2end/fixtures/http_proxy_fixture.cc \
+    test/core/end2end/fixtures/proxy.cc \
+    test/core/iomgr/endpoint_tests.cc \
     test/core/util/debugger_macros.cc \
-    test/core/util/grpc_profiler.c \
-    test/core/util/memory_counters.c \
-    test/core/util/mock_endpoint.c \
-    test/core/util/parse_hexstring.c \
-    test/core/util/passthru_endpoint.c \
-    test/core/util/port.c \
-    test/core/util/port_server_client.c \
-    test/core/util/slice_splitter.c \
-    test/core/util/trickle_endpoint.c \
+    test/core/util/grpc_profiler.cc \
+    test/core/util/memory_counters.cc \
+    test/core/util/mock_endpoint.cc \
+    test/core/util/parse_hexstring.cc \
+    test/core/util/passthru_endpoint.cc \
+    test/core/util/port.cc \
+    test/core/util/port_server_client.cc \
+    test/core/util/slice_splitter.cc \
+    test/core/util/trickle_endpoint.cc \
     src/core/lib/backoff/backoff.cc \
     src/core/lib/channel/channel_args.cc \
     src/core/lib/channel/channel_stack.cc \
@@ -3842,20 +3842,20 @@
 
 LIBGRPC_TEST_UTIL_UNSECURE_SRC = \
     src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc \
-    test/core/end2end/cq_verifier.c \
-    test/core/end2end/fixtures/http_proxy_fixture.c \
-    test/core/end2end/fixtures/proxy.c \
-    test/core/iomgr/endpoint_tests.c \
+    test/core/end2end/cq_verifier.cc \
+    test/core/end2end/fixtures/http_proxy_fixture.cc \
+    test/core/end2end/fixtures/proxy.cc \
+    test/core/iomgr/endpoint_tests.cc \
     test/core/util/debugger_macros.cc \
-    test/core/util/grpc_profiler.c \
-    test/core/util/memory_counters.c \
-    test/core/util/mock_endpoint.c \
-    test/core/util/parse_hexstring.c \
-    test/core/util/passthru_endpoint.c \
-    test/core/util/port.c \
-    test/core/util/port_server_client.c \
-    test/core/util/slice_splitter.c \
-    test/core/util/trickle_endpoint.c \
+    test/core/util/grpc_profiler.cc \
+    test/core/util/memory_counters.cc \
+    test/core/util/mock_endpoint.cc \
+    test/core/util/parse_hexstring.cc \
+    test/core/util/passthru_endpoint.cc \
+    test/core/util/port.cc \
+    test/core/util/port_server_client.cc \
+    test/core/util/slice_splitter.cc \
+    test/core/util/trickle_endpoint.cc \
     src/core/lib/backoff/backoff.cc \
     src/core/lib/channel/channel_args.cc \
     src/core/lib/channel/channel_stack.cc \
@@ -4376,7 +4376,7 @@
 
 
 LIBRECONNECT_SERVER_SRC = \
-    test/core/util/reconnect_server.c \
+    test/core/util/reconnect_server.cc \
 
 PUBLIC_HEADERS_C += \
 
@@ -4415,7 +4415,7 @@
 
 
 LIBTEST_TCP_SERVER_SRC = \
-    test/core/util/test_tcp_server.c \
+    test/core/util/test_tcp_server.cc \
 
 PUBLIC_HEADERS_C += \
 
@@ -8403,7 +8403,7 @@
 
 
 LIBBAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/bad_client.c \
+    test/core/bad_client/bad_client.cc \
 
 PUBLIC_HEADERS_C += \
 
@@ -8442,7 +8442,7 @@
 
 
 LIBBAD_SSL_TEST_SERVER_SRC = \
-    test/core/bad_ssl/server_common.c \
+    test/core/bad_ssl/server_common.cc \
 
 PUBLIC_HEADERS_C += \
 
@@ -8481,67 +8481,67 @@
 
 
 LIBEND2END_TESTS_SRC = \
-    test/core/end2end/end2end_tests.c \
-    test/core/end2end/end2end_test_utils.c \
-    test/core/end2end/tests/authority_not_supported.c \
-    test/core/end2end/tests/bad_hostname.c \
-    test/core/end2end/tests/bad_ping.c \
-    test/core/end2end/tests/binary_metadata.c \
-    test/core/end2end/tests/call_creds.c \
-    test/core/end2end/tests/cancel_after_accept.c \
-    test/core/end2end/tests/cancel_after_client_done.c \
-    test/core/end2end/tests/cancel_after_invoke.c \
-    test/core/end2end/tests/cancel_after_round_trip.c \
-    test/core/end2end/tests/cancel_before_invoke.c \
-    test/core/end2end/tests/cancel_in_a_vacuum.c \
-    test/core/end2end/tests/cancel_with_status.c \
-    test/core/end2end/tests/compressed_payload.c \
-    test/core/end2end/tests/connectivity.c \
-    test/core/end2end/tests/default_host.c \
-    test/core/end2end/tests/disappearing_server.c \
-    test/core/end2end/tests/empty_batch.c \
-    test/core/end2end/tests/filter_call_init_fails.c \
-    test/core/end2end/tests/filter_causes_close.c \
-    test/core/end2end/tests/filter_latency.c \
-    test/core/end2end/tests/graceful_server_shutdown.c \
-    test/core/end2end/tests/high_initial_seqno.c \
-    test/core/end2end/tests/hpack_size.c \
-    test/core/end2end/tests/idempotent_request.c \
-    test/core/end2end/tests/invoke_large_request.c \
-    test/core/end2end/tests/keepalive_timeout.c \
-    test/core/end2end/tests/large_metadata.c \
-    test/core/end2end/tests/load_reporting_hook.c \
-    test/core/end2end/tests/max_concurrent_streams.c \
-    test/core/end2end/tests/max_connection_age.c \
-    test/core/end2end/tests/max_connection_idle.c \
-    test/core/end2end/tests/max_message_length.c \
-    test/core/end2end/tests/negative_deadline.c \
-    test/core/end2end/tests/network_status_change.c \
-    test/core/end2end/tests/no_logging.c \
-    test/core/end2end/tests/no_op.c \
-    test/core/end2end/tests/payload.c \
-    test/core/end2end/tests/ping.c \
-    test/core/end2end/tests/ping_pong_streaming.c \
-    test/core/end2end/tests/proxy_auth.c \
-    test/core/end2end/tests/registered_call.c \
-    test/core/end2end/tests/request_with_flags.c \
-    test/core/end2end/tests/request_with_payload.c \
-    test/core/end2end/tests/resource_quota_server.c \
-    test/core/end2end/tests/server_finishes_request.c \
-    test/core/end2end/tests/shutdown_finishes_calls.c \
-    test/core/end2end/tests/shutdown_finishes_tags.c \
-    test/core/end2end/tests/simple_cacheable_request.c \
-    test/core/end2end/tests/simple_delayed_request.c \
-    test/core/end2end/tests/simple_metadata.c \
-    test/core/end2end/tests/simple_request.c \
-    test/core/end2end/tests/stream_compression_compressed_payload.c \
-    test/core/end2end/tests/stream_compression_payload.c \
-    test/core/end2end/tests/stream_compression_ping_pong_streaming.c \
-    test/core/end2end/tests/streaming_error_response.c \
-    test/core/end2end/tests/trailing_metadata.c \
-    test/core/end2end/tests/workaround_cronet_compression.c \
-    test/core/end2end/tests/write_buffering.c \
-    test/core/end2end/tests/write_buffering_at_end.c \
+    test/core/end2end/end2end_tests.cc \
+    test/core/end2end/end2end_test_utils.cc \
+    test/core/end2end/tests/authority_not_supported.cc \
+    test/core/end2end/tests/bad_hostname.cc \
+    test/core/end2end/tests/bad_ping.cc \
+    test/core/end2end/tests/binary_metadata.cc \
+    test/core/end2end/tests/call_creds.cc \
+    test/core/end2end/tests/cancel_after_accept.cc \
+    test/core/end2end/tests/cancel_after_client_done.cc \
+    test/core/end2end/tests/cancel_after_invoke.cc \
+    test/core/end2end/tests/cancel_after_round_trip.cc \
+    test/core/end2end/tests/cancel_before_invoke.cc \
+    test/core/end2end/tests/cancel_in_a_vacuum.cc \
+    test/core/end2end/tests/cancel_with_status.cc \
+    test/core/end2end/tests/compressed_payload.cc \
+    test/core/end2end/tests/connectivity.cc \
+    test/core/end2end/tests/default_host.cc \
+    test/core/end2end/tests/disappearing_server.cc \
+    test/core/end2end/tests/empty_batch.cc \
+    test/core/end2end/tests/filter_call_init_fails.cc \
+    test/core/end2end/tests/filter_causes_close.cc \
+    test/core/end2end/tests/filter_latency.cc \
+    test/core/end2end/tests/graceful_server_shutdown.cc \
+    test/core/end2end/tests/high_initial_seqno.cc \
+    test/core/end2end/tests/hpack_size.cc \
+    test/core/end2end/tests/idempotent_request.cc \
+    test/core/end2end/tests/invoke_large_request.cc \
+    test/core/end2end/tests/keepalive_timeout.cc \
+    test/core/end2end/tests/large_metadata.cc \
+    test/core/end2end/tests/load_reporting_hook.cc \
+    test/core/end2end/tests/max_concurrent_streams.cc \
+    test/core/end2end/tests/max_connection_age.cc \
+    test/core/end2end/tests/max_connection_idle.cc \
+    test/core/end2end/tests/max_message_length.cc \
+    test/core/end2end/tests/negative_deadline.cc \
+    test/core/end2end/tests/network_status_change.cc \
+    test/core/end2end/tests/no_logging.cc \
+    test/core/end2end/tests/no_op.cc \
+    test/core/end2end/tests/payload.cc \
+    test/core/end2end/tests/ping.cc \
+    test/core/end2end/tests/ping_pong_streaming.cc \
+    test/core/end2end/tests/proxy_auth.cc \
+    test/core/end2end/tests/registered_call.cc \
+    test/core/end2end/tests/request_with_flags.cc \
+    test/core/end2end/tests/request_with_payload.cc \
+    test/core/end2end/tests/resource_quota_server.cc \
+    test/core/end2end/tests/server_finishes_request.cc \
+    test/core/end2end/tests/shutdown_finishes_calls.cc \
+    test/core/end2end/tests/shutdown_finishes_tags.cc \
+    test/core/end2end/tests/simple_cacheable_request.cc \
+    test/core/end2end/tests/simple_delayed_request.cc \
+    test/core/end2end/tests/simple_metadata.cc \
+    test/core/end2end/tests/simple_request.cc \
+    test/core/end2end/tests/stream_compression_compressed_payload.cc \
+    test/core/end2end/tests/stream_compression_payload.cc \
+    test/core/end2end/tests/stream_compression_ping_pong_streaming.cc \
+    test/core/end2end/tests/streaming_error_response.cc \
+    test/core/end2end/tests/trailing_metadata.cc \
+    test/core/end2end/tests/workaround_cronet_compression.cc \
+    test/core/end2end/tests/write_buffering.cc \
+    test/core/end2end/tests/write_buffering_at_end.cc \
 
 PUBLIC_HEADERS_C += \
 
@@ -8580,66 +8580,66 @@
 
 
 LIBEND2END_NOSEC_TESTS_SRC = \
-    test/core/end2end/end2end_nosec_tests.c \
-    test/core/end2end/end2end_test_utils.c \
-    test/core/end2end/tests/authority_not_supported.c \
-    test/core/end2end/tests/bad_hostname.c \
-    test/core/end2end/tests/bad_ping.c \
-    test/core/end2end/tests/binary_metadata.c \
-    test/core/end2end/tests/cancel_after_accept.c \
-    test/core/end2end/tests/cancel_after_client_done.c \
-    test/core/end2end/tests/cancel_after_invoke.c \
-    test/core/end2end/tests/cancel_after_round_trip.c \
-    test/core/end2end/tests/cancel_before_invoke.c \
-    test/core/end2end/tests/cancel_in_a_vacuum.c \
-    test/core/end2end/tests/cancel_with_status.c \
-    test/core/end2end/tests/compressed_payload.c \
-    test/core/end2end/tests/connectivity.c \
-    test/core/end2end/tests/default_host.c \
-    test/core/end2end/tests/disappearing_server.c \
-    test/core/end2end/tests/empty_batch.c \
-    test/core/end2end/tests/filter_call_init_fails.c \
-    test/core/end2end/tests/filter_causes_close.c \
-    test/core/end2end/tests/filter_latency.c \
-    test/core/end2end/tests/graceful_server_shutdown.c \
-    test/core/end2end/tests/high_initial_seqno.c \
-    test/core/end2end/tests/hpack_size.c \
-    test/core/end2end/tests/idempotent_request.c \
-    test/core/end2end/tests/invoke_large_request.c \
-    test/core/end2end/tests/keepalive_timeout.c \
-    test/core/end2end/tests/large_metadata.c \
-    test/core/end2end/tests/load_reporting_hook.c \
-    test/core/end2end/tests/max_concurrent_streams.c \
-    test/core/end2end/tests/max_connection_age.c \
-    test/core/end2end/tests/max_connection_idle.c \
-    test/core/end2end/tests/max_message_length.c \
-    test/core/end2end/tests/negative_deadline.c \
-    test/core/end2end/tests/network_status_change.c \
-    test/core/end2end/tests/no_logging.c \
-    test/core/end2end/tests/no_op.c \
-    test/core/end2end/tests/payload.c \
-    test/core/end2end/tests/ping.c \
-    test/core/end2end/tests/ping_pong_streaming.c \
-    test/core/end2end/tests/proxy_auth.c \
-    test/core/end2end/tests/registered_call.c \
-    test/core/end2end/tests/request_with_flags.c \
-    test/core/end2end/tests/request_with_payload.c \
-    test/core/end2end/tests/resource_quota_server.c \
-    test/core/end2end/tests/server_finishes_request.c \
-    test/core/end2end/tests/shutdown_finishes_calls.c \
-    test/core/end2end/tests/shutdown_finishes_tags.c \
-    test/core/end2end/tests/simple_cacheable_request.c \
-    test/core/end2end/tests/simple_delayed_request.c \
-    test/core/end2end/tests/simple_metadata.c \
-    test/core/end2end/tests/simple_request.c \
-    test/core/end2end/tests/stream_compression_compressed_payload.c \
-    test/core/end2end/tests/stream_compression_payload.c \
-    test/core/end2end/tests/stream_compression_ping_pong_streaming.c \
-    test/core/end2end/tests/streaming_error_response.c \
-    test/core/end2end/tests/trailing_metadata.c \
-    test/core/end2end/tests/workaround_cronet_compression.c \
-    test/core/end2end/tests/write_buffering.c \
-    test/core/end2end/tests/write_buffering_at_end.c \
+    test/core/end2end/end2end_nosec_tests.cc \
+    test/core/end2end/end2end_test_utils.cc \
+    test/core/end2end/tests/authority_not_supported.cc \
+    test/core/end2end/tests/bad_hostname.cc \
+    test/core/end2end/tests/bad_ping.cc \
+    test/core/end2end/tests/binary_metadata.cc \
+    test/core/end2end/tests/cancel_after_accept.cc \
+    test/core/end2end/tests/cancel_after_client_done.cc \
+    test/core/end2end/tests/cancel_after_invoke.cc \
+    test/core/end2end/tests/cancel_after_round_trip.cc \
+    test/core/end2end/tests/cancel_before_invoke.cc \
+    test/core/end2end/tests/cancel_in_a_vacuum.cc \
+    test/core/end2end/tests/cancel_with_status.cc \
+    test/core/end2end/tests/compressed_payload.cc \
+    test/core/end2end/tests/connectivity.cc \
+    test/core/end2end/tests/default_host.cc \
+    test/core/end2end/tests/disappearing_server.cc \
+    test/core/end2end/tests/empty_batch.cc \
+    test/core/end2end/tests/filter_call_init_fails.cc \
+    test/core/end2end/tests/filter_causes_close.cc \
+    test/core/end2end/tests/filter_latency.cc \
+    test/core/end2end/tests/graceful_server_shutdown.cc \
+    test/core/end2end/tests/high_initial_seqno.cc \
+    test/core/end2end/tests/hpack_size.cc \
+    test/core/end2end/tests/idempotent_request.cc \
+    test/core/end2end/tests/invoke_large_request.cc \
+    test/core/end2end/tests/keepalive_timeout.cc \
+    test/core/end2end/tests/large_metadata.cc \
+    test/core/end2end/tests/load_reporting_hook.cc \
+    test/core/end2end/tests/max_concurrent_streams.cc \
+    test/core/end2end/tests/max_connection_age.cc \
+    test/core/end2end/tests/max_connection_idle.cc \
+    test/core/end2end/tests/max_message_length.cc \
+    test/core/end2end/tests/negative_deadline.cc \
+    test/core/end2end/tests/network_status_change.cc \
+    test/core/end2end/tests/no_logging.cc \
+    test/core/end2end/tests/no_op.cc \
+    test/core/end2end/tests/payload.cc \
+    test/core/end2end/tests/ping.cc \
+    test/core/end2end/tests/ping_pong_streaming.cc \
+    test/core/end2end/tests/proxy_auth.cc \
+    test/core/end2end/tests/registered_call.cc \
+    test/core/end2end/tests/request_with_flags.cc \
+    test/core/end2end/tests/request_with_payload.cc \
+    test/core/end2end/tests/resource_quota_server.cc \
+    test/core/end2end/tests/server_finishes_request.cc \
+    test/core/end2end/tests/shutdown_finishes_calls.cc \
+    test/core/end2end/tests/shutdown_finishes_tags.cc \
+    test/core/end2end/tests/simple_cacheable_request.cc \
+    test/core/end2end/tests/simple_delayed_request.cc \
+    test/core/end2end/tests/simple_metadata.cc \
+    test/core/end2end/tests/simple_request.cc \
+    test/core/end2end/tests/stream_compression_compressed_payload.cc \
+    test/core/end2end/tests/stream_compression_payload.cc \
+    test/core/end2end/tests/stream_compression_ping_pong_streaming.cc \
+    test/core/end2end/tests/streaming_error_response.cc \
+    test/core/end2end/tests/trailing_metadata.cc \
+    test/core/end2end/tests/workaround_cronet_compression.cc \
+    test/core/end2end/tests/write_buffering.cc \
+    test/core/end2end/tests/write_buffering_at_end.cc \
 
 PUBLIC_HEADERS_C += \
 
@@ -8668,7 +8668,7 @@
 
 
 ALARM_TEST_SRC = \
-    test/core/surface/alarm_test.c \
+    test/core/surface/alarm_test.cc \
 
 ALARM_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8700,7 +8700,7 @@
 
 
 ALGORITHM_TEST_SRC = \
-    test/core/compression/algorithm_test.c \
+    test/core/compression/algorithm_test.cc \
 
 ALGORITHM_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALGORITHM_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8732,7 +8732,7 @@
 
 
 ALLOC_TEST_SRC = \
-    test/core/support/alloc_test.c \
+    test/core/support/alloc_test.cc \
 
 ALLOC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALLOC_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8764,7 +8764,7 @@
 
 
 ALPN_TEST_SRC = \
-    test/core/transport/chttp2/alpn_test.c \
+    test/core/transport/chttp2/alpn_test.cc \
 
 ALPN_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ALPN_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8796,7 +8796,7 @@
 
 
 API_FUZZER_SRC = \
-    test/core/end2end/fuzzers/api_fuzzer.c \
+    test/core/end2end/fuzzers/api_fuzzer.cc \
 
 API_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(API_FUZZER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8828,7 +8828,7 @@
 
 
 ARENA_TEST_SRC = \
-    test/core/support/arena_test.c \
+    test/core/support/arena_test.cc \
 
 ARENA_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ARENA_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8860,7 +8860,7 @@
 
 
 BACKOFF_TEST_SRC = \
-    test/core/backoff/backoff_test.c \
+    test/core/backoff/backoff_test.cc \
 
 BACKOFF_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BACKOFF_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8892,7 +8892,7 @@
 
 
 BAD_SERVER_RESPONSE_TEST_SRC = \
-    test/core/end2end/bad_server_response_test.c \
+    test/core/end2end/bad_server_response_test.cc \
 
 BAD_SERVER_RESPONSE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BAD_SERVER_RESPONSE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8924,7 +8924,7 @@
 
 
 BIN_DECODER_TEST_SRC = \
-    test/core/transport/chttp2/bin_decoder_test.c \
+    test/core/transport/chttp2/bin_decoder_test.cc \
 
 BIN_DECODER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BIN_DECODER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8956,7 +8956,7 @@
 
 
 BIN_ENCODER_TEST_SRC = \
-    test/core/transport/chttp2/bin_encoder_test.c \
+    test/core/transport/chttp2/bin_encoder_test.cc \
 
 BIN_ENCODER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BIN_ENCODER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -8988,7 +8988,7 @@
 
 
 BYTE_STREAM_TEST_SRC = \
-    test/core/transport/byte_stream_test.c \
+    test/core/transport/byte_stream_test.cc \
 
 BYTE_STREAM_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BYTE_STREAM_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9020,7 +9020,7 @@
 
 
 CHANNEL_CREATE_TEST_SRC = \
-    test/core/surface/channel_create_test.c \
+    test/core/surface/channel_create_test.cc \
 
 CHANNEL_CREATE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CHANNEL_CREATE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9084,7 +9084,7 @@
 
 
 CHTTP2_HPACK_ENCODER_TEST_SRC = \
-    test/core/transport/chttp2/hpack_encoder_test.c \
+    test/core/transport/chttp2/hpack_encoder_test.cc \
 
 CHTTP2_HPACK_ENCODER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_HPACK_ENCODER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9116,7 +9116,7 @@
 
 
 CHTTP2_STREAM_MAP_TEST_SRC = \
-    test/core/transport/chttp2/stream_map_test.c \
+    test/core/transport/chttp2/stream_map_test.cc \
 
 CHTTP2_STREAM_MAP_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_STREAM_MAP_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9148,7 +9148,7 @@
 
 
 CHTTP2_VARINT_TEST_SRC = \
-    test/core/transport/chttp2/varint_test.c \
+    test/core/transport/chttp2/varint_test.cc \
 
 CHTTP2_VARINT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_VARINT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9180,7 +9180,7 @@
 
 
 CLIENT_FUZZER_SRC = \
-    test/core/end2end/fuzzers/client_fuzzer.c \
+    test/core/end2end/fuzzers/client_fuzzer.cc \
 
 CLIENT_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CLIENT_FUZZER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9212,7 +9212,7 @@
 
 
 COMBINER_TEST_SRC = \
-    test/core/iomgr/combiner_test.c \
+    test/core/iomgr/combiner_test.cc \
 
 COMBINER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(COMBINER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9244,7 +9244,7 @@
 
 
 COMPRESSION_TEST_SRC = \
-    test/core/compression/compression_test.c \
+    test/core/compression/compression_test.cc \
 
 COMPRESSION_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(COMPRESSION_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9276,7 +9276,7 @@
 
 
 CONCURRENT_CONNECTIVITY_TEST_SRC = \
-    test/core/surface/concurrent_connectivity_test.c \
+    test/core/surface/concurrent_connectivity_test.cc \
 
 CONCURRENT_CONNECTIVITY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CONCURRENT_CONNECTIVITY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9308,7 +9308,7 @@
 
 
 CONNECTION_REFUSED_TEST_SRC = \
-    test/core/end2end/connection_refused_test.c \
+    test/core/end2end/connection_refused_test.cc \
 
 CONNECTION_REFUSED_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CONNECTION_REFUSED_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9340,7 +9340,7 @@
 
 
 DNS_RESOLVER_CONNECTIVITY_TEST_SRC = \
-    test/core/client_channel/resolvers/dns_resolver_connectivity_test.c \
+    test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc \
 
 DNS_RESOLVER_CONNECTIVITY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(DNS_RESOLVER_CONNECTIVITY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9372,7 +9372,7 @@
 
 
 DNS_RESOLVER_TEST_SRC = \
-    test/core/client_channel/resolvers/dns_resolver_test.c \
+    test/core/client_channel/resolvers/dns_resolver_test.cc \
 
 DNS_RESOLVER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(DNS_RESOLVER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9404,7 +9404,7 @@
 
 
 DUALSTACK_SOCKET_TEST_SRC = \
-    test/core/end2end/dualstack_socket_test.c \
+    test/core/end2end/dualstack_socket_test.cc \
 
 DUALSTACK_SOCKET_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(DUALSTACK_SOCKET_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9436,7 +9436,7 @@
 
 
 ENDPOINT_PAIR_TEST_SRC = \
-    test/core/iomgr/endpoint_pair_test.c \
+    test/core/iomgr/endpoint_pair_test.cc \
 
 ENDPOINT_PAIR_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ENDPOINT_PAIR_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9468,7 +9468,7 @@
 
 
 ERROR_TEST_SRC = \
-    test/core/iomgr/error_test.c \
+    test/core/iomgr/error_test.cc \
 
 ERROR_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(ERROR_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9500,7 +9500,7 @@
 
 
 EV_EPOLLSIG_LINUX_TEST_SRC = \
-    test/core/iomgr/ev_epollsig_linux_test.c \
+    test/core/iomgr/ev_epollsig_linux_test.cc \
 
 EV_EPOLLSIG_LINUX_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(EV_EPOLLSIG_LINUX_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9532,7 +9532,7 @@
 
 
 FAKE_RESOLVER_TEST_SRC = \
-    test/core/client_channel/resolvers/fake_resolver_test.c \
+    test/core/client_channel/resolvers/fake_resolver_test.cc \
 
 FAKE_RESOLVER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FAKE_RESOLVER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9564,8 +9564,8 @@
 
 
 FAKE_TRANSPORT_SECURITY_TEST_SRC = \
-    test/core/tsi/fake_transport_security_test.c \
-    test/core/tsi/transport_security_test_lib.c \
+    test/core/tsi/fake_transport_security_test.cc \
+    test/core/tsi/transport_security_test_lib.cc \
 
 FAKE_TRANSPORT_SECURITY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FAKE_TRANSPORT_SECURITY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9599,7 +9599,7 @@
 
 
 FD_CONSERVATION_POSIX_TEST_SRC = \
-    test/core/iomgr/fd_conservation_posix_test.c \
+    test/core/iomgr/fd_conservation_posix_test.cc \
 
 FD_CONSERVATION_POSIX_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FD_CONSERVATION_POSIX_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9631,7 +9631,7 @@
 
 
 FD_POSIX_TEST_SRC = \
-    test/core/iomgr/fd_posix_test.c \
+    test/core/iomgr/fd_posix_test.cc \
 
 FD_POSIX_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FD_POSIX_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9663,7 +9663,7 @@
 
 
 FLING_CLIENT_SRC = \
-    test/core/fling/client.c \
+    test/core/fling/client.cc \
 
 FLING_CLIENT_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_CLIENT_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9695,7 +9695,7 @@
 
 
 FLING_SERVER_SRC = \
-    test/core/fling/server.c \
+    test/core/fling/server.cc \
 
 FLING_SERVER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_SERVER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9727,7 +9727,7 @@
 
 
 FLING_STREAM_TEST_SRC = \
-    test/core/fling/fling_stream_test.c \
+    test/core/fling/fling_stream_test.cc \
 
 FLING_STREAM_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_STREAM_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9759,7 +9759,7 @@
 
 
 FLING_TEST_SRC = \
-    test/core/fling/fling_test.c \
+    test/core/fling/fling_test.cc \
 
 FLING_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9887,7 +9887,7 @@
 
 
 GOAWAY_SERVER_TEST_SRC = \
-    test/core/end2end/goaway_server_test.c \
+    test/core/end2end/goaway_server_test.cc \
 
 GOAWAY_SERVER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GOAWAY_SERVER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9919,7 +9919,7 @@
 
 
 GPR_AVL_TEST_SRC = \
-    test/core/support/avl_test.c \
+    test/core/support/avl_test.cc \
 
 GPR_AVL_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_AVL_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9951,7 +9951,7 @@
 
 
 GPR_CMDLINE_TEST_SRC = \
-    test/core/support/cmdline_test.c \
+    test/core/support/cmdline_test.cc \
 
 GPR_CMDLINE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_CMDLINE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -9983,7 +9983,7 @@
 
 
 GPR_CPU_TEST_SRC = \
-    test/core/support/cpu_test.c \
+    test/core/support/cpu_test.cc \
 
 GPR_CPU_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_CPU_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10015,7 +10015,7 @@
 
 
 GPR_ENV_TEST_SRC = \
-    test/core/support/env_test.c \
+    test/core/support/env_test.cc \
 
 GPR_ENV_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_ENV_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10047,7 +10047,7 @@
 
 
 GPR_HISTOGRAM_TEST_SRC = \
-    test/core/support/histogram_test.c \
+    test/core/support/histogram_test.cc \
 
 GPR_HISTOGRAM_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_HISTOGRAM_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10079,7 +10079,7 @@
 
 
 GPR_HOST_PORT_TEST_SRC = \
-    test/core/support/host_port_test.c \
+    test/core/support/host_port_test.cc \
 
 GPR_HOST_PORT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_HOST_PORT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10111,7 +10111,7 @@
 
 
 GPR_LOG_TEST_SRC = \
-    test/core/support/log_test.c \
+    test/core/support/log_test.cc \
 
 GPR_LOG_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_LOG_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10143,7 +10143,7 @@
 
 
 GPR_MPSCQ_TEST_SRC = \
-    test/core/support/mpscq_test.c \
+    test/core/support/mpscq_test.cc \
 
 GPR_MPSCQ_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_MPSCQ_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10175,7 +10175,7 @@
 
 
 GPR_SPINLOCK_TEST_SRC = \
-    test/core/support/spinlock_test.c \
+    test/core/support/spinlock_test.cc \
 
 GPR_SPINLOCK_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_SPINLOCK_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10207,7 +10207,7 @@
 
 
 GPR_STACK_LOCKFREE_TEST_SRC = \
-    test/core/support/stack_lockfree_test.c \
+    test/core/support/stack_lockfree_test.cc \
 
 GPR_STACK_LOCKFREE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_STACK_LOCKFREE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10239,7 +10239,7 @@
 
 
 GPR_STRING_TEST_SRC = \
-    test/core/support/string_test.c \
+    test/core/support/string_test.cc \
 
 GPR_STRING_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_STRING_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10271,7 +10271,7 @@
 
 
 GPR_SYNC_TEST_SRC = \
-    test/core/support/sync_test.c \
+    test/core/support/sync_test.cc \
 
 GPR_SYNC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_SYNC_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10303,7 +10303,7 @@
 
 
 GPR_THD_TEST_SRC = \
-    test/core/support/thd_test.c \
+    test/core/support/thd_test.cc \
 
 GPR_THD_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_THD_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10335,7 +10335,7 @@
 
 
 GPR_TIME_TEST_SRC = \
-    test/core/support/time_test.c \
+    test/core/support/time_test.cc \
 
 GPR_TIME_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_TIME_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10367,7 +10367,7 @@
 
 
 GPR_TLS_TEST_SRC = \
-    test/core/support/tls_test.c \
+    test/core/support/tls_test.cc \
 
 GPR_TLS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_TLS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10399,7 +10399,7 @@
 
 
 GPR_USEFUL_TEST_SRC = \
-    test/core/support/useful_test.c \
+    test/core/support/useful_test.cc \
 
 GPR_USEFUL_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_USEFUL_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10431,7 +10431,7 @@
 
 
 GRPC_AUTH_CONTEXT_TEST_SRC = \
-    test/core/security/auth_context_test.c \
+    test/core/security/auth_context_test.cc \
 
 GRPC_AUTH_CONTEXT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_AUTH_CONTEXT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10463,7 +10463,7 @@
 
 
 GRPC_B64_TEST_SRC = \
-    test/core/slice/b64_test.c \
+    test/core/slice/b64_test.cc \
 
 GRPC_B64_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_B64_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10495,7 +10495,7 @@
 
 
 GRPC_BYTE_BUFFER_READER_TEST_SRC = \
-    test/core/surface/byte_buffer_reader_test.c \
+    test/core/surface/byte_buffer_reader_test.cc \
 
 GRPC_BYTE_BUFFER_READER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_BYTE_BUFFER_READER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10527,7 +10527,7 @@
 
 
 GRPC_CHANNEL_ARGS_TEST_SRC = \
-    test/core/channel/channel_args_test.c \
+    test/core/channel/channel_args_test.cc \
 
 GRPC_CHANNEL_ARGS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CHANNEL_ARGS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10559,7 +10559,7 @@
 
 
 GRPC_CHANNEL_STACK_BUILDER_TEST_SRC = \
-    test/core/channel/channel_stack_builder_test.c \
+    test/core/channel/channel_stack_builder_test.cc \
 
 GRPC_CHANNEL_STACK_BUILDER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CHANNEL_STACK_BUILDER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10591,7 +10591,7 @@
 
 
 GRPC_CHANNEL_STACK_TEST_SRC = \
-    test/core/channel/channel_stack_test.c \
+    test/core/channel/channel_stack_test.cc \
 
 GRPC_CHANNEL_STACK_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CHANNEL_STACK_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10623,7 +10623,7 @@
 
 
 GRPC_COMPLETION_QUEUE_TEST_SRC = \
-    test/core/surface/completion_queue_test.c \
+    test/core/surface/completion_queue_test.cc \
 
 GRPC_COMPLETION_QUEUE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_COMPLETION_QUEUE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10655,7 +10655,7 @@
 
 
 GRPC_COMPLETION_QUEUE_THREADING_TEST_SRC = \
-    test/core/surface/completion_queue_threading_test.c \
+    test/core/surface/completion_queue_threading_test.cc \
 
 GRPC_COMPLETION_QUEUE_THREADING_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_COMPLETION_QUEUE_THREADING_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10687,7 +10687,7 @@
 
 
 GRPC_CREATE_JWT_SRC = \
-    test/core/security/create_jwt.c \
+    test/core/security/create_jwt.cc \
 
 GRPC_CREATE_JWT_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CREATE_JWT_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10719,7 +10719,7 @@
 
 
 GRPC_CREDENTIALS_TEST_SRC = \
-    test/core/security/credentials_test.c \
+    test/core/security/credentials_test.cc \
 
 GRPC_CREDENTIALS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CREDENTIALS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10751,7 +10751,7 @@
 
 
 GRPC_FETCH_OAUTH2_SRC = \
-    test/core/security/fetch_oauth2.c \
+    test/core/security/fetch_oauth2.cc \
 
 GRPC_FETCH_OAUTH2_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_FETCH_OAUTH2_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10783,7 +10783,7 @@
 
 
 GRPC_INVALID_CHANNEL_ARGS_TEST_SRC = \
-    test/core/surface/invalid_channel_args_test.c \
+    test/core/surface/invalid_channel_args_test.cc \
 
 GRPC_INVALID_CHANNEL_ARGS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_INVALID_CHANNEL_ARGS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10815,7 +10815,7 @@
 
 
 GRPC_JSON_TOKEN_TEST_SRC = \
-    test/core/security/json_token_test.c \
+    test/core/security/json_token_test.cc \
 
 GRPC_JSON_TOKEN_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_JSON_TOKEN_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10847,7 +10847,7 @@
 
 
 GRPC_JWT_VERIFIER_TEST_SRC = \
-    test/core/security/jwt_verifier_test.c \
+    test/core/security/jwt_verifier_test.cc \
 
 GRPC_JWT_VERIFIER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_JWT_VERIFIER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10879,7 +10879,7 @@
 
 
 GRPC_PRINT_GOOGLE_DEFAULT_CREDS_TOKEN_SRC = \
-    test/core/security/print_google_default_creds_token.c \
+    test/core/security/print_google_default_creds_token.cc \
 
 GRPC_PRINT_GOOGLE_DEFAULT_CREDS_TOKEN_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_PRINT_GOOGLE_DEFAULT_CREDS_TOKEN_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10911,7 +10911,7 @@
 
 
 GRPC_SECURITY_CONNECTOR_TEST_SRC = \
-    test/core/security/security_connector_test.c \
+    test/core/security/security_connector_test.cc \
 
 GRPC_SECURITY_CONNECTOR_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_SECURITY_CONNECTOR_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10943,7 +10943,7 @@
 
 
 GRPC_SSL_CREDENTIALS_TEST_SRC = \
-    test/core/security/ssl_credentials_test.c \
+    test/core/security/ssl_credentials_test.cc \
 
 GRPC_SSL_CREDENTIALS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_SSL_CREDENTIALS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -10975,7 +10975,7 @@
 
 
 GRPC_VERIFY_JWT_SRC = \
-    test/core/security/verify_jwt.c \
+    test/core/security/verify_jwt.cc \
 
 GRPC_VERIFY_JWT_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_VERIFY_JWT_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11007,7 +11007,7 @@
 
 
 HANDSHAKE_CLIENT_SRC = \
-    test/core/handshake/client_ssl.c \
+    test/core/handshake/client_ssl.cc \
 
 HANDSHAKE_CLIENT_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HANDSHAKE_CLIENT_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11039,7 +11039,7 @@
 
 
 HANDSHAKE_SERVER_SRC = \
-    test/core/handshake/server_ssl.c \
+    test/core/handshake/server_ssl.cc \
 
 HANDSHAKE_SERVER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HANDSHAKE_SERVER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11071,7 +11071,7 @@
 
 
 HPACK_PARSER_FUZZER_TEST_SRC = \
-    test/core/transport/chttp2/hpack_parser_fuzzer_test.c \
+    test/core/transport/chttp2/hpack_parser_fuzzer_test.cc \
 
 HPACK_PARSER_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_PARSER_FUZZER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11103,7 +11103,7 @@
 
 
 HPACK_PARSER_TEST_SRC = \
-    test/core/transport/chttp2/hpack_parser_test.c \
+    test/core/transport/chttp2/hpack_parser_test.cc \
 
 HPACK_PARSER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_PARSER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11135,7 +11135,7 @@
 
 
 HPACK_TABLE_TEST_SRC = \
-    test/core/transport/chttp2/hpack_table_test.c \
+    test/core/transport/chttp2/hpack_table_test.cc \
 
 HPACK_TABLE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_TABLE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11167,7 +11167,7 @@
 
 
 HTTP_PARSER_TEST_SRC = \
-    test/core/http/parser_test.c \
+    test/core/http/parser_test.cc \
 
 HTTP_PARSER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_PARSER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11199,7 +11199,7 @@
 
 
 HTTP_REQUEST_FUZZER_TEST_SRC = \
-    test/core/http/request_fuzzer.c \
+    test/core/http/request_fuzzer.cc \
 
 HTTP_REQUEST_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_REQUEST_FUZZER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11231,7 +11231,7 @@
 
 
 HTTP_RESPONSE_FUZZER_TEST_SRC = \
-    test/core/http/response_fuzzer.c \
+    test/core/http/response_fuzzer.cc \
 
 HTTP_RESPONSE_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_RESPONSE_FUZZER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11263,7 +11263,7 @@
 
 
 HTTPCLI_FORMAT_REQUEST_TEST_SRC = \
-    test/core/http/format_request_test.c \
+    test/core/http/format_request_test.cc \
 
 HTTPCLI_FORMAT_REQUEST_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTPCLI_FORMAT_REQUEST_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11295,7 +11295,7 @@
 
 
 HTTPCLI_TEST_SRC = \
-    test/core/http/httpcli_test.c \
+    test/core/http/httpcli_test.cc \
 
 HTTPCLI_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTPCLI_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11327,7 +11327,7 @@
 
 
 HTTPSCLI_TEST_SRC = \
-    test/core/http/httpscli_test.c \
+    test/core/http/httpscli_test.cc \
 
 HTTPSCLI_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTPSCLI_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11359,7 +11359,7 @@
 
 
 INIT_TEST_SRC = \
-    test/core/surface/init_test.c \
+    test/core/surface/init_test.cc \
 
 INIT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INIT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11391,7 +11391,7 @@
 
 
 INVALID_CALL_ARGUMENT_TEST_SRC = \
-    test/core/end2end/invalid_call_argument_test.c \
+    test/core/end2end/invalid_call_argument_test.cc \
 
 INVALID_CALL_ARGUMENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INVALID_CALL_ARGUMENT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11423,7 +11423,7 @@
 
 
 JSON_FUZZER_TEST_SRC = \
-    test/core/json/fuzzer.c \
+    test/core/json/fuzzer.cc \
 
 JSON_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(JSON_FUZZER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11455,7 +11455,7 @@
 
 
 JSON_REWRITE_SRC = \
-    test/core/json/json_rewrite.c \
+    test/core/json/json_rewrite.cc \
 
 JSON_REWRITE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(JSON_REWRITE_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11487,7 +11487,7 @@
 
 
 JSON_REWRITE_TEST_SRC = \
-    test/core/json/json_rewrite_test.c \
+    test/core/json/json_rewrite_test.cc \
 
 JSON_REWRITE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(JSON_REWRITE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11519,7 +11519,7 @@
 
 
 JSON_STREAM_ERROR_TEST_SRC = \
-    test/core/json/json_stream_error_test.c \
+    test/core/json/json_stream_error_test.cc \
 
 JSON_STREAM_ERROR_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(JSON_STREAM_ERROR_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11551,7 +11551,7 @@
 
 
 JSON_TEST_SRC = \
-    test/core/json/json_test.c \
+    test/core/json/json_test.cc \
 
 JSON_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(JSON_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11583,7 +11583,7 @@
 
 
 LAME_CLIENT_TEST_SRC = \
-    test/core/surface/lame_client_test.c \
+    test/core/surface/lame_client_test.cc \
 
 LAME_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LAME_CLIENT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11615,7 +11615,7 @@
 
 
 LB_POLICIES_TEST_SRC = \
-    test/core/client_channel/lb_policies_test.c \
+    test/core/client_channel/lb_policies_test.cc \
 
 LB_POLICIES_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LB_POLICIES_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11647,7 +11647,7 @@
 
 
 LOAD_FILE_TEST_SRC = \
-    test/core/iomgr/load_file_test.c \
+    test/core/iomgr/load_file_test.cc \
 
 LOAD_FILE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LOAD_FILE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11679,7 +11679,7 @@
 
 
 LOW_LEVEL_PING_PONG_BENCHMARK_SRC = \
-    test/core/network_benchmarks/low_level_ping_pong.c \
+    test/core/network_benchmarks/low_level_ping_pong.cc \
 
 LOW_LEVEL_PING_PONG_BENCHMARK_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LOW_LEVEL_PING_PONG_BENCHMARK_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11711,7 +11711,7 @@
 
 
 MEMORY_PROFILE_CLIENT_SRC = \
-    test/core/memory_usage/client.c \
+    test/core/memory_usage/client.cc \
 
 MEMORY_PROFILE_CLIENT_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MEMORY_PROFILE_CLIENT_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11743,7 +11743,7 @@
 
 
 MEMORY_PROFILE_SERVER_SRC = \
-    test/core/memory_usage/server.c \
+    test/core/memory_usage/server.cc \
 
 MEMORY_PROFILE_SERVER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MEMORY_PROFILE_SERVER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11775,7 +11775,7 @@
 
 
 MEMORY_PROFILE_TEST_SRC = \
-    test/core/memory_usage/memory_usage_test.c \
+    test/core/memory_usage/memory_usage_test.cc \
 
 MEMORY_PROFILE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MEMORY_PROFILE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11807,7 +11807,7 @@
 
 
 MESSAGE_COMPRESS_TEST_SRC = \
-    test/core/compression/message_compress_test.c \
+    test/core/compression/message_compress_test.cc \
 
 MESSAGE_COMPRESS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MESSAGE_COMPRESS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11839,7 +11839,7 @@
 
 
 MINIMAL_STACK_IS_MINIMAL_TEST_SRC = \
-    test/core/channel/minimal_stack_is_minimal_test.c \
+    test/core/channel/minimal_stack_is_minimal_test.cc \
 
 MINIMAL_STACK_IS_MINIMAL_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MINIMAL_STACK_IS_MINIMAL_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11871,7 +11871,7 @@
 
 
 MULTIPLE_SERVER_QUEUES_TEST_SRC = \
-    test/core/end2end/multiple_server_queues_test.c \
+    test/core/end2end/multiple_server_queues_test.cc \
 
 MULTIPLE_SERVER_QUEUES_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MULTIPLE_SERVER_QUEUES_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11903,7 +11903,7 @@
 
 
 MURMUR_HASH_TEST_SRC = \
-    test/core/support/murmur_hash_test.c \
+    test/core/support/murmur_hash_test.cc \
 
 MURMUR_HASH_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(MURMUR_HASH_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11935,7 +11935,7 @@
 
 
 NANOPB_FUZZER_RESPONSE_TEST_SRC = \
-    test/core/nanopb/fuzzer_response.c \
+    test/core/nanopb/fuzzer_response.cc \
 
 NANOPB_FUZZER_RESPONSE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(NANOPB_FUZZER_RESPONSE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11967,7 +11967,7 @@
 
 
 NANOPB_FUZZER_SERVERLIST_TEST_SRC = \
-    test/core/nanopb/fuzzer_serverlist.c \
+    test/core/nanopb/fuzzer_serverlist.cc \
 
 NANOPB_FUZZER_SERVERLIST_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(NANOPB_FUZZER_SERVERLIST_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -11999,7 +11999,7 @@
 
 
 NO_SERVER_TEST_SRC = \
-    test/core/end2end/no_server_test.c \
+    test/core/end2end/no_server_test.cc \
 
 NO_SERVER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(NO_SERVER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12031,7 +12031,7 @@
 
 
 NUM_EXTERNAL_CONNECTIVITY_WATCHERS_TEST_SRC = \
-    test/core/surface/num_external_connectivity_watchers_test.c \
+    test/core/surface/num_external_connectivity_watchers_test.cc \
 
 NUM_EXTERNAL_CONNECTIVITY_WATCHERS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(NUM_EXTERNAL_CONNECTIVITY_WATCHERS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12063,7 +12063,7 @@
 
 
 PARSE_ADDRESS_TEST_SRC = \
-    test/core/client_channel/parse_address_test.c \
+    test/core/client_channel/parse_address_test.cc \
 
 PARSE_ADDRESS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(PARSE_ADDRESS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12095,7 +12095,7 @@
 
 
 PERCENT_DECODE_FUZZER_SRC = \
-    test/core/slice/percent_decode_fuzzer.c \
+    test/core/slice/percent_decode_fuzzer.cc \
 
 PERCENT_DECODE_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(PERCENT_DECODE_FUZZER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12127,7 +12127,7 @@
 
 
 PERCENT_ENCODE_FUZZER_SRC = \
-    test/core/slice/percent_encode_fuzzer.c \
+    test/core/slice/percent_encode_fuzzer.cc \
 
 PERCENT_ENCODE_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(PERCENT_ENCODE_FUZZER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12159,7 +12159,7 @@
 
 
 PERCENT_ENCODING_TEST_SRC = \
-    test/core/slice/percent_encoding_test.c \
+    test/core/slice/percent_encoding_test.cc \
 
 PERCENT_ENCODING_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(PERCENT_ENCODING_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12191,7 +12191,7 @@
 
 
 POLLSET_SET_TEST_SRC = \
-    test/core/iomgr/pollset_set_test.c \
+    test/core/iomgr/pollset_set_test.cc \
 
 POLLSET_SET_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(POLLSET_SET_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12223,7 +12223,7 @@
 
 
 RESOLVE_ADDRESS_POSIX_TEST_SRC = \
-    test/core/iomgr/resolve_address_posix_test.c \
+    test/core/iomgr/resolve_address_posix_test.cc \
 
 RESOLVE_ADDRESS_POSIX_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(RESOLVE_ADDRESS_POSIX_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12255,7 +12255,7 @@
 
 
 RESOLVE_ADDRESS_TEST_SRC = \
-    test/core/iomgr/resolve_address_test.c \
+    test/core/iomgr/resolve_address_test.cc \
 
 RESOLVE_ADDRESS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(RESOLVE_ADDRESS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12287,7 +12287,7 @@
 
 
 RESOURCE_QUOTA_TEST_SRC = \
-    test/core/iomgr/resource_quota_test.c \
+    test/core/iomgr/resource_quota_test.cc \
 
 RESOURCE_QUOTA_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(RESOURCE_QUOTA_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12319,7 +12319,7 @@
 
 
 SECURE_CHANNEL_CREATE_TEST_SRC = \
-    test/core/surface/secure_channel_create_test.c \
+    test/core/surface/secure_channel_create_test.cc \
 
 SECURE_CHANNEL_CREATE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SECURE_CHANNEL_CREATE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12351,7 +12351,7 @@
 
 
 SECURE_ENDPOINT_TEST_SRC = \
-    test/core/security/secure_endpoint_test.c \
+    test/core/security/secure_endpoint_test.cc \
 
 SECURE_ENDPOINT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SECURE_ENDPOINT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12383,7 +12383,7 @@
 
 
 SEQUENTIAL_CONNECTIVITY_TEST_SRC = \
-    test/core/surface/sequential_connectivity_test.c \
+    test/core/surface/sequential_connectivity_test.cc \
 
 SEQUENTIAL_CONNECTIVITY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SEQUENTIAL_CONNECTIVITY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12415,7 +12415,7 @@
 
 
 SERVER_CHTTP2_TEST_SRC = \
-    test/core/surface/server_chttp2_test.c \
+    test/core/surface/server_chttp2_test.cc \
 
 SERVER_CHTTP2_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SERVER_CHTTP2_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12447,7 +12447,7 @@
 
 
 SERVER_FUZZER_SRC = \
-    test/core/end2end/fuzzers/server_fuzzer.c \
+    test/core/end2end/fuzzers/server_fuzzer.cc \
 
 SERVER_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SERVER_FUZZER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12479,7 +12479,7 @@
 
 
 SERVER_TEST_SRC = \
-    test/core/surface/server_test.c \
+    test/core/surface/server_test.cc \
 
 SERVER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SERVER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12511,7 +12511,7 @@
 
 
 SLICE_BUFFER_TEST_SRC = \
-    test/core/slice/slice_buffer_test.c \
+    test/core/slice/slice_buffer_test.cc \
 
 SLICE_BUFFER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SLICE_BUFFER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12543,7 +12543,7 @@
 
 
 SLICE_HASH_TABLE_TEST_SRC = \
-    test/core/slice/slice_hash_table_test.c \
+    test/core/slice/slice_hash_table_test.cc \
 
 SLICE_HASH_TABLE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SLICE_HASH_TABLE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12575,7 +12575,7 @@
 
 
 SLICE_STRING_HELPERS_TEST_SRC = \
-    test/core/slice/slice_string_helpers_test.c \
+    test/core/slice/slice_string_helpers_test.cc \
 
 SLICE_STRING_HELPERS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SLICE_STRING_HELPERS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12607,7 +12607,7 @@
 
 
 SLICE_TEST_SRC = \
-    test/core/slice/slice_test.c \
+    test/core/slice/slice_test.cc \
 
 SLICE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SLICE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12639,7 +12639,7 @@
 
 
 SOCKADDR_RESOLVER_TEST_SRC = \
-    test/core/client_channel/resolvers/sockaddr_resolver_test.c \
+    test/core/client_channel/resolvers/sockaddr_resolver_test.cc \
 
 SOCKADDR_RESOLVER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SOCKADDR_RESOLVER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12671,7 +12671,7 @@
 
 
 SOCKADDR_UTILS_TEST_SRC = \
-    test/core/iomgr/sockaddr_utils_test.c \
+    test/core/iomgr/sockaddr_utils_test.cc \
 
 SOCKADDR_UTILS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SOCKADDR_UTILS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12703,7 +12703,7 @@
 
 
 SOCKET_UTILS_TEST_SRC = \
-    test/core/iomgr/socket_utils_test.c \
+    test/core/iomgr/socket_utils_test.cc \
 
 SOCKET_UTILS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SOCKET_UTILS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12735,7 +12735,7 @@
 
 
 SSL_SERVER_FUZZER_SRC = \
-    test/core/security/ssl_server_fuzzer.c \
+    test/core/security/ssl_server_fuzzer.cc \
 
 SSL_SERVER_FUZZER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SSL_SERVER_FUZZER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12767,8 +12767,8 @@
 
 
 SSL_TRANSPORT_SECURITY_TEST_SRC = \
-    test/core/tsi/ssl_transport_security_test.c \
-    test/core/tsi/transport_security_test_lib.c \
+    test/core/tsi/ssl_transport_security_test.cc \
+    test/core/tsi/transport_security_test_lib.cc \
 
 SSL_TRANSPORT_SECURITY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SSL_TRANSPORT_SECURITY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12802,7 +12802,7 @@
 
 
 STATUS_CONVERSION_TEST_SRC = \
-    test/core/transport/status_conversion_test.c \
+    test/core/transport/status_conversion_test.cc \
 
 STATUS_CONVERSION_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(STATUS_CONVERSION_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12834,7 +12834,7 @@
 
 
 STREAM_COMPRESSION_TEST_SRC = \
-    test/core/compression/stream_compression_test.c \
+    test/core/compression/stream_compression_test.cc \
 
 STREAM_COMPRESSION_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(STREAM_COMPRESSION_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12866,7 +12866,7 @@
 
 
 STREAM_OWNED_SLICE_TEST_SRC = \
-    test/core/transport/stream_owned_slice_test.c \
+    test/core/transport/stream_owned_slice_test.cc \
 
 STREAM_OWNED_SLICE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(STREAM_OWNED_SLICE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12898,7 +12898,7 @@
 
 
 TCP_CLIENT_POSIX_TEST_SRC = \
-    test/core/iomgr/tcp_client_posix_test.c \
+    test/core/iomgr/tcp_client_posix_test.cc \
 
 TCP_CLIENT_POSIX_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_CLIENT_POSIX_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12930,7 +12930,7 @@
 
 
 TCP_CLIENT_UV_TEST_SRC = \
-    test/core/iomgr/tcp_client_uv_test.c \
+    test/core/iomgr/tcp_client_uv_test.cc \
 
 TCP_CLIENT_UV_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_CLIENT_UV_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12962,7 +12962,7 @@
 
 
 TCP_POSIX_TEST_SRC = \
-    test/core/iomgr/tcp_posix_test.c \
+    test/core/iomgr/tcp_posix_test.cc \
 
 TCP_POSIX_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_POSIX_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -12994,7 +12994,7 @@
 
 
 TCP_SERVER_POSIX_TEST_SRC = \
-    test/core/iomgr/tcp_server_posix_test.c \
+    test/core/iomgr/tcp_server_posix_test.cc \
 
 TCP_SERVER_POSIX_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_SERVER_POSIX_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13026,7 +13026,7 @@
 
 
 TCP_SERVER_UV_TEST_SRC = \
-    test/core/iomgr/tcp_server_uv_test.c \
+    test/core/iomgr/tcp_server_uv_test.cc \
 
 TCP_SERVER_UV_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_SERVER_UV_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13058,7 +13058,7 @@
 
 
 TIME_AVERAGED_STATS_TEST_SRC = \
-    test/core/iomgr/time_averaged_stats_test.c \
+    test/core/iomgr/time_averaged_stats_test.cc \
 
 TIME_AVERAGED_STATS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIME_AVERAGED_STATS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13090,7 +13090,7 @@
 
 
 TIMEOUT_ENCODING_TEST_SRC = \
-    test/core/transport/timeout_encoding_test.c \
+    test/core/transport/timeout_encoding_test.cc \
 
 TIMEOUT_ENCODING_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIMEOUT_ENCODING_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13122,7 +13122,7 @@
 
 
 TIMER_HEAP_TEST_SRC = \
-    test/core/iomgr/timer_heap_test.c \
+    test/core/iomgr/timer_heap_test.cc \
 
 TIMER_HEAP_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIMER_HEAP_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13154,7 +13154,7 @@
 
 
 TIMER_LIST_TEST_SRC = \
-    test/core/iomgr/timer_list_test.c \
+    test/core/iomgr/timer_list_test.cc \
 
 TIMER_LIST_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TIMER_LIST_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13186,7 +13186,7 @@
 
 
 TRANSPORT_CONNECTIVITY_STATE_TEST_SRC = \
-    test/core/transport/connectivity_state_test.c \
+    test/core/transport/connectivity_state_test.cc \
 
 TRANSPORT_CONNECTIVITY_STATE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TRANSPORT_CONNECTIVITY_STATE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13218,7 +13218,7 @@
 
 
 TRANSPORT_METADATA_TEST_SRC = \
-    test/core/transport/metadata_test.c \
+    test/core/transport/metadata_test.cc \
 
 TRANSPORT_METADATA_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TRANSPORT_METADATA_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13250,7 +13250,7 @@
 
 
 TRANSPORT_SECURITY_TEST_SRC = \
-    test/core/tsi/transport_security_test.c \
+    test/core/tsi/transport_security_test.cc \
 
 TRANSPORT_SECURITY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TRANSPORT_SECURITY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13282,7 +13282,7 @@
 
 
 UDP_SERVER_TEST_SRC = \
-    test/core/iomgr/udp_server_test.c \
+    test/core/iomgr/udp_server_test.cc \
 
 UDP_SERVER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(UDP_SERVER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13314,7 +13314,7 @@
 
 
 URI_FUZZER_TEST_SRC = \
-    test/core/client_channel/uri_fuzzer_test.c \
+    test/core/client_channel/uri_fuzzer_test.cc \
 
 URI_FUZZER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(URI_FUZZER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13346,7 +13346,7 @@
 
 
 URI_PARSER_TEST_SRC = \
-    test/core/client_channel/uri_parser_test.c \
+    test/core/client_channel/uri_parser_test.cc \
 
 URI_PARSER_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(URI_PARSER_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -13378,7 +13378,7 @@
 
 
 WAKEUP_FD_CV_TEST_SRC = \
-    test/core/iomgr/wakeup_fd_cv_test.c \
+    test/core/iomgr/wakeup_fd_cv_test.cc \
 
 WAKEUP_FD_CV_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(WAKEUP_FD_CV_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18310,7 +18310,7 @@
 
 
 BADREQ_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/badreq.c \
+    test/core/bad_client/tests/badreq.cc \
 
 BADREQ_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BADREQ_BAD_CLIENT_TEST_SRC))))
 
@@ -18330,7 +18330,7 @@
 
 
 CONNECTION_PREFIX_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/connection_prefix.c \
+    test/core/bad_client/tests/connection_prefix.cc \
 
 CONNECTION_PREFIX_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CONNECTION_PREFIX_BAD_CLIENT_TEST_SRC))))
 
@@ -18350,7 +18350,7 @@
 
 
 HEAD_OF_LINE_BLOCKING_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/head_of_line_blocking.c \
+    test/core/bad_client/tests/head_of_line_blocking.cc \
 
 HEAD_OF_LINE_BLOCKING_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HEAD_OF_LINE_BLOCKING_BAD_CLIENT_TEST_SRC))))
 
@@ -18370,7 +18370,7 @@
 
 
 HEADERS_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/headers.c \
+    test/core/bad_client/tests/headers.cc \
 
 HEADERS_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HEADERS_BAD_CLIENT_TEST_SRC))))
 
@@ -18390,7 +18390,7 @@
 
 
 INITIAL_SETTINGS_FRAME_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/initial_settings_frame.c \
+    test/core/bad_client/tests/initial_settings_frame.cc \
 
 INITIAL_SETTINGS_FRAME_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INITIAL_SETTINGS_FRAME_BAD_CLIENT_TEST_SRC))))
 
@@ -18410,7 +18410,7 @@
 
 
 SERVER_REGISTERED_METHOD_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/server_registered_method.c \
+    test/core/bad_client/tests/server_registered_method.cc \
 
 SERVER_REGISTERED_METHOD_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SERVER_REGISTERED_METHOD_BAD_CLIENT_TEST_SRC))))
 
@@ -18430,7 +18430,7 @@
 
 
 SIMPLE_REQUEST_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/simple_request.c \
+    test/core/bad_client/tests/simple_request.cc \
 
 SIMPLE_REQUEST_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SIMPLE_REQUEST_BAD_CLIENT_TEST_SRC))))
 
@@ -18450,7 +18450,7 @@
 
 
 UNKNOWN_FRAME_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/unknown_frame.c \
+    test/core/bad_client/tests/unknown_frame.cc \
 
 UNKNOWN_FRAME_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(UNKNOWN_FRAME_BAD_CLIENT_TEST_SRC))))
 
@@ -18470,7 +18470,7 @@
 
 
 WINDOW_OVERFLOW_BAD_CLIENT_TEST_SRC = \
-    test/core/bad_client/tests/window_overflow.c \
+    test/core/bad_client/tests/window_overflow.cc \
 
 WINDOW_OVERFLOW_BAD_CLIENT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(WINDOW_OVERFLOW_BAD_CLIENT_TEST_SRC))))
 
@@ -18490,7 +18490,7 @@
 
 
 BAD_SSL_CERT_SERVER_SRC = \
-    test/core/bad_ssl/servers/cert.c \
+    test/core/bad_ssl/servers/cert.cc \
 
 BAD_SSL_CERT_SERVER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BAD_SSL_CERT_SERVER_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18522,7 +18522,7 @@
 
 
 BAD_SSL_CERT_TEST_SRC = \
-    test/core/bad_ssl/bad_ssl_test.c \
+    test/core/bad_ssl/bad_ssl_test.cc \
 
 BAD_SSL_CERT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BAD_SSL_CERT_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18554,7 +18554,7 @@
 
 
 H2_CENSUS_TEST_SRC = \
-    test/core/end2end/fixtures/h2_census.c \
+    test/core/end2end/fixtures/h2_census.cc \
 
 H2_CENSUS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_CENSUS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18586,7 +18586,7 @@
 
 
 H2_COMPRESS_TEST_SRC = \
-    test/core/end2end/fixtures/h2_compress.c \
+    test/core/end2end/fixtures/h2_compress.cc \
 
 H2_COMPRESS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_COMPRESS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18618,7 +18618,7 @@
 
 
 H2_FAKESEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_fakesec.c \
+    test/core/end2end/fixtures/h2_fakesec.cc \
 
 H2_FAKESEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FAKESEC_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18650,7 +18650,7 @@
 
 
 H2_FD_TEST_SRC = \
-    test/core/end2end/fixtures/h2_fd.c \
+    test/core/end2end/fixtures/h2_fd.cc \
 
 H2_FD_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FD_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18682,7 +18682,7 @@
 
 
 H2_FULL_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full.c \
+    test/core/end2end/fixtures/h2_full.cc \
 
 H2_FULL_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18714,7 +18714,7 @@
 
 
 H2_FULL+PIPE_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full+pipe.c \
+    test/core/end2end/fixtures/h2_full+pipe.cc \
 
 H2_FULL+PIPE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL+PIPE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18746,7 +18746,7 @@
 
 
 H2_FULL+TRACE_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full+trace.c \
+    test/core/end2end/fixtures/h2_full+trace.cc \
 
 H2_FULL+TRACE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL+TRACE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18778,7 +18778,7 @@
 
 
 H2_FULL+WORKAROUNDS_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full+workarounds.c \
+    test/core/end2end/fixtures/h2_full+workarounds.cc \
 
 H2_FULL+WORKAROUNDS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL+WORKAROUNDS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18810,7 +18810,7 @@
 
 
 H2_HTTP_PROXY_TEST_SRC = \
-    test/core/end2end/fixtures/h2_http_proxy.c \
+    test/core/end2end/fixtures/h2_http_proxy.cc \
 
 H2_HTTP_PROXY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_HTTP_PROXY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18842,7 +18842,7 @@
 
 
 H2_LOAD_REPORTING_TEST_SRC = \
-    test/core/end2end/fixtures/h2_load_reporting.c \
+    test/core/end2end/fixtures/h2_load_reporting.cc \
 
 H2_LOAD_REPORTING_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_LOAD_REPORTING_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18874,7 +18874,7 @@
 
 
 H2_OAUTH2_TEST_SRC = \
-    test/core/end2end/fixtures/h2_oauth2.c \
+    test/core/end2end/fixtures/h2_oauth2.cc \
 
 H2_OAUTH2_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_OAUTH2_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18906,7 +18906,7 @@
 
 
 H2_PROXY_TEST_SRC = \
-    test/core/end2end/fixtures/h2_proxy.c \
+    test/core/end2end/fixtures/h2_proxy.cc \
 
 H2_PROXY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_PROXY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18938,7 +18938,7 @@
 
 
 H2_SOCKPAIR_TEST_SRC = \
-    test/core/end2end/fixtures/h2_sockpair.c \
+    test/core/end2end/fixtures/h2_sockpair.cc \
 
 H2_SOCKPAIR_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SOCKPAIR_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -18970,7 +18970,7 @@
 
 
 H2_SOCKPAIR+TRACE_TEST_SRC = \
-    test/core/end2end/fixtures/h2_sockpair+trace.c \
+    test/core/end2end/fixtures/h2_sockpair+trace.cc \
 
 H2_SOCKPAIR+TRACE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SOCKPAIR+TRACE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19002,7 +19002,7 @@
 
 
 H2_SOCKPAIR_1BYTE_TEST_SRC = \
-    test/core/end2end/fixtures/h2_sockpair_1byte.c \
+    test/core/end2end/fixtures/h2_sockpair_1byte.cc \
 
 H2_SOCKPAIR_1BYTE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SOCKPAIR_1BYTE_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19034,7 +19034,7 @@
 
 
 H2_SSL_TEST_SRC = \
-    test/core/end2end/fixtures/h2_ssl.c \
+    test/core/end2end/fixtures/h2_ssl.cc \
 
 H2_SSL_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SSL_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19066,7 +19066,7 @@
 
 
 H2_SSL_PROXY_TEST_SRC = \
-    test/core/end2end/fixtures/h2_ssl_proxy.c \
+    test/core/end2end/fixtures/h2_ssl_proxy.cc \
 
 H2_SSL_PROXY_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SSL_PROXY_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19098,7 +19098,7 @@
 
 
 H2_UDS_TEST_SRC = \
-    test/core/end2end/fixtures/h2_uds.c \
+    test/core/end2end/fixtures/h2_uds.cc \
 
 H2_UDS_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_UDS_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19130,7 +19130,7 @@
 
 
 INPROC_TEST_SRC = \
-    test/core/end2end/fixtures/inproc.c \
+    test/core/end2end/fixtures/inproc.cc \
 
 INPROC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INPROC_TEST_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19162,7 +19162,7 @@
 
 
 H2_CENSUS_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_census.c \
+    test/core/end2end/fixtures/h2_census.cc \
 
 H2_CENSUS_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_CENSUS_NOSEC_TEST_SRC))))
 
@@ -19182,7 +19182,7 @@
 
 
 H2_COMPRESS_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_compress.c \
+    test/core/end2end/fixtures/h2_compress.cc \
 
 H2_COMPRESS_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_COMPRESS_NOSEC_TEST_SRC))))
 
@@ -19202,7 +19202,7 @@
 
 
 H2_FD_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_fd.c \
+    test/core/end2end/fixtures/h2_fd.cc \
 
 H2_FD_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FD_NOSEC_TEST_SRC))))
 
@@ -19222,7 +19222,7 @@
 
 
 H2_FULL_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full.c \
+    test/core/end2end/fixtures/h2_full.cc \
 
 H2_FULL_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL_NOSEC_TEST_SRC))))
 
@@ -19242,7 +19242,7 @@
 
 
 H2_FULL+PIPE_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full+pipe.c \
+    test/core/end2end/fixtures/h2_full+pipe.cc \
 
 H2_FULL+PIPE_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL+PIPE_NOSEC_TEST_SRC))))
 
@@ -19262,7 +19262,7 @@
 
 
 H2_FULL+TRACE_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full+trace.c \
+    test/core/end2end/fixtures/h2_full+trace.cc \
 
 H2_FULL+TRACE_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL+TRACE_NOSEC_TEST_SRC))))
 
@@ -19282,7 +19282,7 @@
 
 
 H2_FULL+WORKAROUNDS_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_full+workarounds.c \
+    test/core/end2end/fixtures/h2_full+workarounds.cc \
 
 H2_FULL+WORKAROUNDS_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_FULL+WORKAROUNDS_NOSEC_TEST_SRC))))
 
@@ -19302,7 +19302,7 @@
 
 
 H2_HTTP_PROXY_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_http_proxy.c \
+    test/core/end2end/fixtures/h2_http_proxy.cc \
 
 H2_HTTP_PROXY_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_HTTP_PROXY_NOSEC_TEST_SRC))))
 
@@ -19322,7 +19322,7 @@
 
 
 H2_LOAD_REPORTING_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_load_reporting.c \
+    test/core/end2end/fixtures/h2_load_reporting.cc \
 
 H2_LOAD_REPORTING_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_LOAD_REPORTING_NOSEC_TEST_SRC))))
 
@@ -19342,7 +19342,7 @@
 
 
 H2_PROXY_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_proxy.c \
+    test/core/end2end/fixtures/h2_proxy.cc \
 
 H2_PROXY_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_PROXY_NOSEC_TEST_SRC))))
 
@@ -19362,7 +19362,7 @@
 
 
 H2_SOCKPAIR_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_sockpair.c \
+    test/core/end2end/fixtures/h2_sockpair.cc \
 
 H2_SOCKPAIR_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SOCKPAIR_NOSEC_TEST_SRC))))
 
@@ -19382,7 +19382,7 @@
 
 
 H2_SOCKPAIR+TRACE_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_sockpair+trace.c \
+    test/core/end2end/fixtures/h2_sockpair+trace.cc \
 
 H2_SOCKPAIR+TRACE_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SOCKPAIR+TRACE_NOSEC_TEST_SRC))))
 
@@ -19402,7 +19402,7 @@
 
 
 H2_SOCKPAIR_1BYTE_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_sockpair_1byte.c \
+    test/core/end2end/fixtures/h2_sockpair_1byte.cc \
 
 H2_SOCKPAIR_1BYTE_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_SOCKPAIR_1BYTE_NOSEC_TEST_SRC))))
 
@@ -19422,7 +19422,7 @@
 
 
 H2_UDS_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/h2_uds.c \
+    test/core/end2end/fixtures/h2_uds.cc \
 
 H2_UDS_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(H2_UDS_NOSEC_TEST_SRC))))
 
@@ -19442,7 +19442,7 @@
 
 
 INPROC_NOSEC_TEST_SRC = \
-    test/core/end2end/fixtures/inproc.c \
+    test/core/end2end/fixtures/inproc.cc \
 
 INPROC_NOSEC_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INPROC_NOSEC_TEST_SRC))))
 
@@ -19634,8 +19634,8 @@
 
 
 API_FUZZER_ONE_ENTRY_SRC = \
-    test/core/end2end/fuzzers/api_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/end2end/fuzzers/api_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 API_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(API_FUZZER_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19669,8 +19669,8 @@
 
 
 CLIENT_FUZZER_ONE_ENTRY_SRC = \
-    test/core/end2end/fuzzers/client_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/end2end/fuzzers/client_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 CLIENT_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(CLIENT_FUZZER_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19704,8 +19704,8 @@
 
 
 HPACK_PARSER_FUZZER_TEST_ONE_ENTRY_SRC = \
-    test/core/transport/chttp2/hpack_parser_fuzzer_test.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/transport/chttp2/hpack_parser_fuzzer_test.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 HPACK_PARSER_FUZZER_TEST_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_PARSER_FUZZER_TEST_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19739,8 +19739,8 @@
 
 
 HTTP_REQUEST_FUZZER_TEST_ONE_ENTRY_SRC = \
-    test/core/http/request_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/http/request_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 HTTP_REQUEST_FUZZER_TEST_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_REQUEST_FUZZER_TEST_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19774,8 +19774,8 @@
 
 
 HTTP_RESPONSE_FUZZER_TEST_ONE_ENTRY_SRC = \
-    test/core/http/response_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/http/response_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 HTTP_RESPONSE_FUZZER_TEST_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HTTP_RESPONSE_FUZZER_TEST_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19809,8 +19809,8 @@
 
 
 JSON_FUZZER_TEST_ONE_ENTRY_SRC = \
-    test/core/json/fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/json/fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 JSON_FUZZER_TEST_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(JSON_FUZZER_TEST_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19844,8 +19844,8 @@
 
 
 NANOPB_FUZZER_RESPONSE_TEST_ONE_ENTRY_SRC = \
-    test/core/nanopb/fuzzer_response.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/nanopb/fuzzer_response.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 NANOPB_FUZZER_RESPONSE_TEST_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(NANOPB_FUZZER_RESPONSE_TEST_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19879,8 +19879,8 @@
 
 
 NANOPB_FUZZER_SERVERLIST_TEST_ONE_ENTRY_SRC = \
-    test/core/nanopb/fuzzer_serverlist.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/nanopb/fuzzer_serverlist.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 NANOPB_FUZZER_SERVERLIST_TEST_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(NANOPB_FUZZER_SERVERLIST_TEST_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19914,8 +19914,8 @@
 
 
 PERCENT_DECODE_FUZZER_ONE_ENTRY_SRC = \
-    test/core/slice/percent_decode_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/slice/percent_decode_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 PERCENT_DECODE_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(PERCENT_DECODE_FUZZER_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19949,8 +19949,8 @@
 
 
 PERCENT_ENCODE_FUZZER_ONE_ENTRY_SRC = \
-    test/core/slice/percent_encode_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/slice/percent_encode_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 PERCENT_ENCODE_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(PERCENT_ENCODE_FUZZER_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -19984,8 +19984,8 @@
 
 
 SERVER_FUZZER_ONE_ENTRY_SRC = \
-    test/core/end2end/fuzzers/server_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/end2end/fuzzers/server_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 SERVER_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SERVER_FUZZER_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -20019,8 +20019,8 @@
 
 
 SSL_SERVER_FUZZER_ONE_ENTRY_SRC = \
-    test/core/security/ssl_server_fuzzer.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/security/ssl_server_fuzzer.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 SSL_SERVER_FUZZER_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(SSL_SERVER_FUZZER_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -20054,8 +20054,8 @@
 
 
 URI_FUZZER_TEST_ONE_ENTRY_SRC = \
-    test/core/client_channel/uri_fuzzer_test.c \
-    test/core/util/one_corpus_entry_fuzzer.c \
+    test/core/client_channel/uri_fuzzer_test.cc \
+    test/core/util/one_corpus_entry_fuzzer.cc \
 
 URI_FUZZER_TEST_ONE_ENTRY_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(URI_FUZZER_TEST_ONE_ENTRY_SRC))))
 ifeq ($(NO_SECURE),true)
@@ -20146,17 +20146,17 @@
 src/cpp/util/core_stats.cc: $(OPENSSL_DEP)
 src/cpp/util/error_details.cc: $(OPENSSL_DEP)
 src/csharp/ext/grpc_csharp_ext.c: $(OPENSSL_DEP)
-test/core/bad_client/bad_client.c: $(OPENSSL_DEP)
-test/core/bad_ssl/server_common.c: $(OPENSSL_DEP)
-test/core/end2end/data/client_certs.c: $(OPENSSL_DEP)
-test/core/end2end/data/server1_cert.c: $(OPENSSL_DEP)
-test/core/end2end/data/server1_key.c: $(OPENSSL_DEP)
-test/core/end2end/data/test_root_cert.c: $(OPENSSL_DEP)
-test/core/end2end/end2end_tests.c: $(OPENSSL_DEP)
-test/core/end2end/tests/call_creds.c: $(OPENSSL_DEP)
-test/core/security/oauth2_utils.c: $(OPENSSL_DEP)
-test/core/util/reconnect_server.c: $(OPENSSL_DEP)
-test/core/util/test_tcp_server.c: $(OPENSSL_DEP)
+test/core/bad_client/bad_client.cc: $(OPENSSL_DEP)
+test/core/bad_ssl/server_common.cc: $(OPENSSL_DEP)
+test/core/end2end/data/client_certs.cc: $(OPENSSL_DEP)
+test/core/end2end/data/server1_cert.cc: $(OPENSSL_DEP)
+test/core/end2end/data/server1_key.cc: $(OPENSSL_DEP)
+test/core/end2end/data/test_root_cert.cc: $(OPENSSL_DEP)
+test/core/end2end/end2end_tests.cc: $(OPENSSL_DEP)
+test/core/end2end/tests/call_creds.cc: $(OPENSSL_DEP)
+test/core/security/oauth2_utils.cc: $(OPENSSL_DEP)
+test/core/util/reconnect_server.cc: $(OPENSSL_DEP)
+test/core/util/test_tcp_server.cc: $(OPENSSL_DEP)
 test/cpp/end2end/test_service_impl.cc: $(OPENSSL_DEP)
 test/cpp/interop/client.cc: $(OPENSSL_DEP)
 test/cpp/interop/client_helper.cc: $(OPENSSL_DEP)
diff --git a/build.yaml b/build.yaml
index 47f2610..c3cd71a 100644
--- a/build.yaml
+++ b/build.yaml
@@ -717,20 +717,20 @@
   - test/core/util/trickle_endpoint.h
   src:
   - src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc
-  - test/core/end2end/cq_verifier.c
-  - test/core/end2end/fixtures/http_proxy_fixture.c
-  - test/core/end2end/fixtures/proxy.c
-  - test/core/iomgr/endpoint_tests.c
+  - test/core/end2end/cq_verifier.cc
+  - test/core/end2end/fixtures/http_proxy_fixture.cc
+  - test/core/end2end/fixtures/proxy.cc
+  - test/core/iomgr/endpoint_tests.cc
   - test/core/util/debugger_macros.cc
-  - test/core/util/grpc_profiler.c
-  - test/core/util/memory_counters.c
-  - test/core/util/mock_endpoint.c
-  - test/core/util/parse_hexstring.c
-  - test/core/util/passthru_endpoint.c
-  - test/core/util/port.c
-  - test/core/util/port_server_client.c
-  - test/core/util/slice_splitter.c
-  - test/core/util/trickle_endpoint.c
+  - test/core/util/grpc_profiler.cc
+  - test/core/util/memory_counters.cc
+  - test/core/util/mock_endpoint.cc
+  - test/core/util/parse_hexstring.cc
+  - test/core/util/passthru_endpoint.cc
+  - test/core/util/port.cc
+  - test/core/util/port_server_client.cc
+  - test/core/util/slice_splitter.cc
+  - test/core/util/trickle_endpoint.cc
   deps:
   - gpr_test_util
   - gpr
@@ -915,7 +915,7 @@
   headers:
   - test/core/tsi/transport_security_test_lib.h
   src:
-  - test/core/tsi/transport_security_test_lib.c
+  - test/core/tsi/transport_security_test_lib.cc
   deps:
   - grpc
 - name: tsi
@@ -1125,7 +1125,7 @@
   headers:
   - test/core/util/test_config.h
   src:
-  - test/core/util/test_config.c
+  - test/core/util/test_config.cc
   deps:
   - gpr
   secure: false
@@ -1211,11 +1211,11 @@
   - test/core/end2end/data/ssl_test_data.h
   - test/core/security/oauth2_utils.h
   src:
-  - test/core/end2end/data/client_certs.c
-  - test/core/end2end/data/server1_cert.c
-  - test/core/end2end/data/server1_key.c
-  - test/core/end2end/data/test_root_cert.c
-  - test/core/security/oauth2_utils.c
+  - test/core/end2end/data/client_certs.cc
+  - test/core/end2end/data/server1_cert.cc
+  - test/core/end2end/data/server1_key.cc
+  - test/core/end2end/data/test_root_cert.cc
+  - test/core/security/oauth2_utils.cc
   deps:
   - gpr_test_util
   - gpr
@@ -1271,7 +1271,7 @@
   headers:
   - test/core/util/reconnect_server.h
   src:
-  - test/core/util/reconnect_server.c
+  - test/core/util/reconnect_server.cc
   deps:
   - test_tcp_server
   - grpc_test_util
@@ -1284,7 +1284,7 @@
   headers:
   - test/core/util/test_tcp_server.h
   src:
-  - test/core/util/test_tcp_server.c
+  - test/core/util/test_tcp_server.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1700,7 +1700,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/alarm_test.c
+  - test/core/surface/alarm_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1710,7 +1710,7 @@
   build: test
   language: c
   src:
-  - test/core/compression/algorithm_test.c
+  - test/core/compression/algorithm_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1721,7 +1721,7 @@
   build: test
   language: c
   src:
-  - test/core/support/alloc_test.c
+  - test/core/support/alloc_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -1730,7 +1730,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/alpn_test.c
+  - test/core/transport/chttp2/alpn_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1740,7 +1740,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/end2end/fuzzers/api_fuzzer.c
+  - test/core/end2end/fuzzers/api_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1754,7 +1754,7 @@
   build: test
   language: c
   src:
-  - test/core/support/arena_test.c
+  - test/core/support/arena_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -1763,7 +1763,7 @@
   build: test
   language: c
   src:
-  - test/core/backoff/backoff_test.c
+  - test/core/backoff/backoff_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1774,7 +1774,7 @@
   build: test
   language: c
   src:
-  - test/core/end2end/bad_server_response_test.c
+  - test/core/end2end/bad_server_response_test.cc
   deps:
   - test_tcp_server
   - grpc_test_util
@@ -1787,7 +1787,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/bin_decoder_test.c
+  - test/core/transport/chttp2/bin_decoder_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1796,7 +1796,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/bin_encoder_test.c
+  - test/core/transport/chttp2/bin_encoder_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1805,7 +1805,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/byte_stream_test.c
+  - test/core/transport/byte_stream_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1816,7 +1816,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/channel_create_test.c
+  - test/core/surface/channel_create_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1834,7 +1834,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/hpack_encoder_test.c
+  - test/core/transport/chttp2/hpack_encoder_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1845,7 +1845,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/stream_map_test.c
+  - test/core/transport/chttp2/stream_map_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1856,7 +1856,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/varint_test.c
+  - test/core/transport/chttp2/varint_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1867,7 +1867,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/end2end/fuzzers/client_fuzzer.c
+  - test/core/end2end/fuzzers/client_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1882,7 +1882,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/combiner_test.c
+  - test/core/iomgr/combiner_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1892,7 +1892,7 @@
   build: test
   language: c
   src:
-  - test/core/compression/compression_test.c
+  - test/core/compression/compression_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1904,7 +1904,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/concurrent_connectivity_test.c
+  - test/core/surface/concurrent_connectivity_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1917,7 +1917,7 @@
   build: test
   language: c
   src:
-  - test/core/end2end/connection_refused_test.c
+  - test/core/end2end/connection_refused_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1928,7 +1928,7 @@
   build: test
   language: c
   src:
-  - test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
+  - test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1940,7 +1940,7 @@
   build: test
   language: c
   src:
-  - test/core/client_channel/resolvers/dns_resolver_test.c
+  - test/core/client_channel/resolvers/dns_resolver_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1951,7 +1951,7 @@
   build: test
   language: c
   src:
-  - test/core/end2end/dualstack_socket_test.c
+  - test/core/end2end/dualstack_socket_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1967,7 +1967,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/endpoint_pair_test.c
+  - test/core/iomgr/endpoint_pair_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1980,7 +1980,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/error_test.c
+  - test/core/iomgr/error_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -1992,7 +1992,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/ev_epollsig_linux_test.c
+  - test/core/iomgr/ev_epollsig_linux_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2006,7 +2006,7 @@
   build: test
   language: c
   src:
-  - test/core/client_channel/resolvers/fake_resolver_test.c
+  - test/core/client_channel/resolvers/fake_resolver_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2016,7 +2016,7 @@
   build: test
   language: c
   src:
-  - test/core/tsi/fake_transport_security_test.c
+  - test/core/tsi/fake_transport_security_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2031,7 +2031,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/fd_conservation_posix_test.c
+  - test/core/iomgr/fd_conservation_posix_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2047,7 +2047,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/fd_posix_test.c
+  - test/core/iomgr/fd_posix_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2064,7 +2064,7 @@
   run: false
   language: c
   src:
-  - test/core/fling/client.c
+  - test/core/fling/client.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2075,7 +2075,7 @@
   run: false
   language: c
   src:
-  - test/core/fling/server.c
+  - test/core/fling/server.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2086,7 +2086,7 @@
   build: test
   language: c
   src:
-  - test/core/fling/fling_stream_test.c
+  - test/core/fling/fling_stream_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2101,7 +2101,7 @@
   build: test
   language: c
   src:
-  - test/core/fling/fling_test.c
+  - test/core/fling/fling_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2138,7 +2138,7 @@
   build: test
   language: c
   src:
-  - test/core/end2end/goaway_server_test.c
+  - test/core/end2end/goaway_server_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2154,7 +2154,7 @@
   build: test
   language: c
   src:
-  - test/core/support/avl_test.c
+  - test/core/support/avl_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2163,7 +2163,7 @@
   build: test
   language: c
   src:
-  - test/core/support/cmdline_test.c
+  - test/core/support/cmdline_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2173,7 +2173,7 @@
   build: test
   language: c
   src:
-  - test/core/support/cpu_test.c
+  - test/core/support/cpu_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2182,7 +2182,7 @@
   build: test
   language: c
   src:
-  - test/core/support/env_test.c
+  - test/core/support/env_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2191,7 +2191,7 @@
   build: test
   language: c
   src:
-  - test/core/support/histogram_test.c
+  - test/core/support/histogram_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2200,7 +2200,7 @@
   build: test
   language: c
   src:
-  - test/core/support/host_port_test.c
+  - test/core/support/host_port_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2209,7 +2209,7 @@
   build: test
   language: c
   src:
-  - test/core/support/log_test.c
+  - test/core/support/log_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2219,7 +2219,7 @@
   build: test
   language: c
   src:
-  - test/core/support/mpscq_test.c
+  - test/core/support/mpscq_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2229,7 +2229,7 @@
   build: test
   language: c
   src:
-  - test/core/support/spinlock_test.c
+  - test/core/support/spinlock_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2239,7 +2239,7 @@
   build: test
   language: c
   src:
-  - test/core/support/stack_lockfree_test.c
+  - test/core/support/stack_lockfree_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2248,7 +2248,7 @@
   build: test
   language: c
   src:
-  - test/core/support/string_test.c
+  - test/core/support/string_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2258,7 +2258,7 @@
   build: test
   language: c
   src:
-  - test/core/support/sync_test.c
+  - test/core/support/sync_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2268,7 +2268,7 @@
   build: test
   language: c
   src:
-  - test/core/support/thd_test.c
+  - test/core/support/thd_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2277,7 +2277,7 @@
   build: test
   language: c
   src:
-  - test/core/support/time_test.c
+  - test/core/support/time_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2286,7 +2286,7 @@
   build: test
   language: c
   src:
-  - test/core/support/tls_test.c
+  - test/core/support/tls_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2295,7 +2295,7 @@
   build: test
   language: c
   src:
-  - test/core/support/useful_test.c
+  - test/core/support/useful_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2304,7 +2304,7 @@
   build: test
   language: c
   src:
-  - test/core/security/auth_context_test.c
+  - test/core/security/auth_context_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2315,7 +2315,7 @@
   build: test
   language: c
   src:
-  - test/core/slice/b64_test.c
+  - test/core/slice/b64_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2326,7 +2326,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/byte_buffer_reader_test.c
+  - test/core/surface/byte_buffer_reader_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2337,7 +2337,7 @@
   build: test
   language: c
   src:
-  - test/core/channel/channel_args_test.c
+  - test/core/channel/channel_args_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2348,7 +2348,7 @@
   build: test
   language: c
   src:
-  - test/core/channel/channel_stack_builder_test.c
+  - test/core/channel/channel_stack_builder_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2358,7 +2358,7 @@
   build: test
   language: c
   src:
-  - test/core/channel/channel_stack_test.c
+  - test/core/channel/channel_stack_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2369,7 +2369,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/completion_queue_test.c
+  - test/core/surface/completion_queue_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2379,7 +2379,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/completion_queue_threading_test.c
+  - test/core/surface/completion_queue_threading_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2391,7 +2391,7 @@
   build: tool
   language: c
   src:
-  - test/core/security/create_jwt.c
+  - test/core/security/create_jwt.cc
   deps:
   - grpc
   - gpr
@@ -2401,7 +2401,7 @@
   build: test
   language: c
   src:
-  - test/core/security/credentials_test.c
+  - test/core/security/credentials_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2412,7 +2412,7 @@
   run: false
   language: c
   src:
-  - test/core/security/fetch_oauth2.c
+  - test/core/security/fetch_oauth2.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2422,7 +2422,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/invalid_channel_args_test.c
+  - test/core/surface/invalid_channel_args_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2433,7 +2433,7 @@
   build: test
   language: c
   src:
-  - test/core/security/json_token_test.c
+  - test/core/security/json_token_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2448,7 +2448,7 @@
   build: test
   language: c
   src:
-  - test/core/security/jwt_verifier_test.c
+  - test/core/security/jwt_verifier_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2459,7 +2459,7 @@
   build: tool
   language: c
   src:
-  - test/core/security/print_google_default_creds_token.c
+  - test/core/security/print_google_default_creds_token.cc
   deps:
   - grpc
   - gpr
@@ -2468,7 +2468,7 @@
   build: test
   language: c
   src:
-  - test/core/security/security_connector_test.c
+  - test/core/security/security_connector_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2478,7 +2478,7 @@
   build: test
   language: c
   src:
-  - test/core/security/ssl_credentials_test.c
+  - test/core/security/ssl_credentials_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2488,7 +2488,7 @@
   build: tool
   language: c
   src:
-  - test/core/security/verify_jwt.c
+  - test/core/security/verify_jwt.cc
   deps:
   - grpc
   - gpr
@@ -2497,7 +2497,7 @@
   build: test
   language: c
   src:
-  - test/core/handshake/client_ssl.c
+  - test/core/handshake/client_ssl.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2512,7 +2512,7 @@
   build: test
   language: c
   src:
-  - test/core/handshake/server_ssl.c
+  - test/core/handshake/server_ssl.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2527,7 +2527,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/transport/chttp2/hpack_parser_fuzzer_test.c
+  - test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2541,7 +2541,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/hpack_parser_test.c
+  - test/core/transport/chttp2/hpack_parser_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2552,7 +2552,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/chttp2/hpack_table_test.c
+  - test/core/transport/chttp2/hpack_table_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2563,7 +2563,7 @@
   build: test
   language: c
   src:
-  - test/core/http/parser_test.c
+  - test/core/http/parser_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2574,7 +2574,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/http/request_fuzzer.c
+  - test/core/http/request_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2587,7 +2587,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/http/response_fuzzer.c
+  - test/core/http/response_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2600,7 +2600,7 @@
   build: test
   language: c
   src:
-  - test/core/http/format_request_test.c
+  - test/core/http/format_request_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2611,7 +2611,7 @@
   build: test
   language: c
   src:
-  - test/core/http/httpcli_test.c
+  - test/core/http/httpcli_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2626,7 +2626,7 @@
   build: test
   language: c
   src:
-  - test/core/http/httpscli_test.c
+  - test/core/http/httpscli_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2638,7 +2638,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/init_test.c
+  - test/core/surface/init_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2650,7 +2650,7 @@
   build: test
   language: c
   src:
-  - test/core/end2end/invalid_call_argument_test.c
+  - test/core/end2end/invalid_call_argument_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2660,7 +2660,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/json/fuzzer.c
+  - test/core/json/fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2674,7 +2674,7 @@
   run: false
   language: c
   src:
-  - test/core/json/json_rewrite.c
+  - test/core/json/json_rewrite.cc
   deps:
   - grpc
   - gpr
@@ -2683,7 +2683,7 @@
   build: test
   language: c
   src:
-  - test/core/json/json_rewrite_test.c
+  - test/core/json/json_rewrite_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2694,7 +2694,7 @@
   build: test
   language: c
   src:
-  - test/core/json/json_stream_error_test.c
+  - test/core/json/json_stream_error_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2705,7 +2705,7 @@
   build: test
   language: c
   src:
-  - test/core/json/json_test.c
+  - test/core/json/json_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2716,7 +2716,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/lame_client_test.c
+  - test/core/surface/lame_client_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2728,7 +2728,7 @@
   run: false
   language: c
   src:
-  - test/core/client_channel/lb_policies_test.c
+  - test/core/client_channel/lb_policies_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2739,7 +2739,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/load_file_test.c
+  - test/core/iomgr/load_file_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2750,7 +2750,7 @@
   build: benchmark
   language: c
   src:
-  - test/core/network_benchmarks/low_level_ping_pong.c
+  - test/core/network_benchmarks/low_level_ping_pong.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2765,7 +2765,7 @@
   run: false
   language: c
   src:
-  - test/core/memory_usage/client.c
+  - test/core/memory_usage/client.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2777,7 +2777,7 @@
   run: false
   language: c
   src:
-  - test/core/memory_usage/server.c
+  - test/core/memory_usage/server.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2788,7 +2788,7 @@
   build: test
   language: c
   src:
-  - test/core/memory_usage/memory_usage_test.c
+  - test/core/memory_usage/memory_usage_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2802,7 +2802,7 @@
   build: test
   language: c
   src:
-  - test/core/compression/message_compress_test.c
+  - test/core/compression/message_compress_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2813,7 +2813,7 @@
   build: test
   language: c
   src:
-  - test/core/channel/minimal_stack_is_minimal_test.c
+  - test/core/channel/minimal_stack_is_minimal_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2824,7 +2824,7 @@
   build: test
   language: c
   src:
-  - test/core/end2end/multiple_server_queues_test.c
+  - test/core/end2end/multiple_server_queues_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2834,7 +2834,7 @@
   build: test
   language: c
   src:
-  - test/core/support/murmur_hash_test.c
+  - test/core/support/murmur_hash_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -2843,7 +2843,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/nanopb/fuzzer_response.c
+  - test/core/nanopb/fuzzer_response.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2856,7 +2856,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/nanopb/fuzzer_serverlist.c
+  - test/core/nanopb/fuzzer_serverlist.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2870,7 +2870,7 @@
   build: test
   language: c
   src:
-  - test/core/end2end/no_server_test.c
+  - test/core/end2end/no_server_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2880,7 +2880,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/num_external_connectivity_watchers_test.c
+  - test/core/surface/num_external_connectivity_watchers_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2892,7 +2892,7 @@
   build: test
   language: c
   src:
-  - test/core/client_channel/parse_address_test.c
+  - test/core/client_channel/parse_address_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2903,7 +2903,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/slice/percent_decode_fuzzer.c
+  - test/core/slice/percent_decode_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2916,7 +2916,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/slice/percent_encode_fuzzer.c
+  - test/core/slice/percent_encode_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2929,7 +2929,7 @@
   build: test
   language: c
   src:
-  - test/core/slice/percent_encoding_test.c
+  - test/core/slice/percent_encoding_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2940,7 +2940,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/pollset_set_test.c
+  - test/core/iomgr/pollset_set_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2954,7 +2954,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/resolve_address_posix_test.c
+  - test/core/iomgr/resolve_address_posix_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2970,7 +2970,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/resolve_address_test.c
+  - test/core/iomgr/resolve_address_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2981,7 +2981,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/resource_quota_test.c
+  - test/core/iomgr/resource_quota_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -2991,7 +2991,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/secure_channel_create_test.c
+  - test/core/surface/secure_channel_create_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3001,7 +3001,7 @@
   build: test
   language: c
   src:
-  - test/core/security/secure_endpoint_test.c
+  - test/core/security/secure_endpoint_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3013,7 +3013,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/sequential_connectivity_test.c
+  - test/core/surface/sequential_connectivity_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3025,7 +3025,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/server_chttp2_test.c
+  - test/core/surface/server_chttp2_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3035,7 +3035,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/end2end/fuzzers/server_fuzzer.c
+  - test/core/end2end/fuzzers/server_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3049,7 +3049,7 @@
   build: test
   language: c
   src:
-  - test/core/surface/server_test.c
+  - test/core/surface/server_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3059,7 +3059,7 @@
   build: test
   language: c
   src:
-  - test/core/slice/slice_buffer_test.c
+  - test/core/slice/slice_buffer_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3070,7 +3070,7 @@
   build: test
   language: c
   src:
-  - test/core/slice/slice_hash_table_test.c
+  - test/core/slice/slice_hash_table_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3081,7 +3081,7 @@
   build: test
   language: c
   src:
-  - test/core/slice/slice_string_helpers_test.c
+  - test/core/slice/slice_string_helpers_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3092,7 +3092,7 @@
   build: test
   language: c
   src:
-  - test/core/slice/slice_test.c
+  - test/core/slice/slice_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3103,7 +3103,7 @@
   build: test
   language: c
   src:
-  - test/core/client_channel/resolvers/sockaddr_resolver_test.c
+  - test/core/client_channel/resolvers/sockaddr_resolver_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3113,7 +3113,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/sockaddr_utils_test.c
+  - test/core/iomgr/sockaddr_utils_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3123,7 +3123,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/socket_utils_test.c
+  - test/core/iomgr/socket_utils_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3139,7 +3139,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/security/ssl_server_fuzzer.c
+  - test/core/security/ssl_server_fuzzer.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3152,7 +3152,7 @@
   build: test
   language: c
   src:
-  - test/core/tsi/ssl_transport_security_test.c
+  - test/core/tsi/ssl_transport_security_test.cc
   deps:
   - gpr_test_util
   - gpr
@@ -3167,7 +3167,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/status_conversion_test.c
+  - test/core/transport/status_conversion_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3178,7 +3178,7 @@
   build: test
   language: c
   src:
-  - test/core/compression/stream_compression_test.c
+  - test/core/compression/stream_compression_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3189,7 +3189,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/stream_owned_slice_test.c
+  - test/core/transport/stream_owned_slice_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3201,7 +3201,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/tcp_client_posix_test.c
+  - test/core/iomgr/tcp_client_posix_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3218,7 +3218,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/tcp_client_uv_test.c
+  - test/core/iomgr/tcp_client_uv_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3231,7 +3231,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/tcp_posix_test.c
+  - test/core/iomgr/tcp_posix_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3247,7 +3247,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/tcp_server_posix_test.c
+  - test/core/iomgr/tcp_server_posix_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3263,7 +3263,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/tcp_server_uv_test.c
+  - test/core/iomgr/tcp_server_uv_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3275,7 +3275,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/time_averaged_stats_test.c
+  - test/core/iomgr/time_averaged_stats_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3286,7 +3286,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/timeout_encoding_test.c
+  - test/core/transport/timeout_encoding_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3297,7 +3297,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/timer_heap_test.c
+  - test/core/iomgr/timer_heap_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3310,7 +3310,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/timer_list_test.c
+  - test/core/iomgr/timer_list_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3323,7 +3323,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/connectivity_state_test.c
+  - test/core/transport/connectivity_state_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3333,7 +3333,7 @@
   build: test
   language: c
   src:
-  - test/core/transport/metadata_test.c
+  - test/core/transport/metadata_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3343,7 +3343,7 @@
   build: test
   language: c
   src:
-  - test/core/tsi/transport_security_test.c
+  - test/core/tsi/transport_security_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3357,7 +3357,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/udp_server_test.c
+  - test/core/iomgr/udp_server_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3373,7 +3373,7 @@
   build: fuzzer
   language: c
   src:
-  - test/core/client_channel/uri_fuzzer_test.c
+  - test/core/client_channel/uri_fuzzer_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3386,7 +3386,7 @@
   build: test
   language: c
   src:
-  - test/core/client_channel/uri_parser_test.c
+  - test/core/client_channel/uri_parser_test.cc
   deps:
   - grpc_test_util
   - grpc
@@ -3396,7 +3396,7 @@
   build: test
   language: c
   src:
-  - test/core/iomgr/wakeup_fd_cv_test.c
+  - test/core/iomgr/wakeup_fd_cv_test.cc
   deps:
   - grpc_test_util
   - grpc
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index b2313a5..01b8d65 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -958,17 +958,17 @@
     ss.dependency "#{s.name}/Interface", version
     ss.dependency "#{s.name}/Implementation", version
 
-    ss.source_files = 'test/core/end2end/cq_verifier.{c,h}',
-                      'test/core/end2end/end2end_tests.{c,h}',
-                      'test/core/end2end/end2end_test_utils.c',
-                      'test/core/end2end/tests/*.{c,h}',
+    ss.source_files = 'test/core/end2end/cq_verifier.{cc,h}',
+                      'test/core/end2end/end2end_tests.{cc,h}',
+                      'test/core/end2end/end2end_test_utils.cc',
+                      'test/core/end2end/tests/*.{cc,h}',
                       'test/core/end2end/fixtures/*.h',
-                      'test/core/end2end/data/*.{c,h}',
+                      'test/core/end2end/data/*.{cc,h}',
                       'test/core/util/debugger_macros.{cc,h}',
-                      'test/core/util/test_config.{c,h}',
+                      'test/core/util/test_config.{cc,h}',
                       'test/core/util/port.h',
-                      'test/core/util/port.c',
-                      'test/core/util/port_server_client.{c,h}'
+                      'test/core/util/port.cc',
+                      'test/core/util/port_server_client.{cc,h}'
   end
 
   # TODO (mxyan): Instead of this hack, add include path "third_party" to C core's include path?
diff --git a/grpc.gyp b/grpc.gyp
index 32b6dc2..7075aa9 100644
--- a/grpc.gyp
+++ b/grpc.gyp
@@ -215,7 +215,7 @@
         'gpr',
       ],
       'sources': [
-        'test/core/util/test_config.c',
+        'test/core/util/test_config.cc',
       ],
     },
     {
@@ -496,26 +496,26 @@
         'grpc',
       ],
       'sources': [
-        'test/core/end2end/data/client_certs.c',
-        'test/core/end2end/data/server1_cert.c',
-        'test/core/end2end/data/server1_key.c',
-        'test/core/end2end/data/test_root_cert.c',
-        'test/core/security/oauth2_utils.c',
+        'test/core/end2end/data/client_certs.cc',
+        'test/core/end2end/data/server1_cert.cc',
+        'test/core/end2end/data/server1_key.cc',
+        'test/core/end2end/data/test_root_cert.cc',
+        'test/core/security/oauth2_utils.cc',
         'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
-        'test/core/end2end/cq_verifier.c',
-        'test/core/end2end/fixtures/http_proxy_fixture.c',
-        'test/core/end2end/fixtures/proxy.c',
-        'test/core/iomgr/endpoint_tests.c',
+        'test/core/end2end/cq_verifier.cc',
+        'test/core/end2end/fixtures/http_proxy_fixture.cc',
+        'test/core/end2end/fixtures/proxy.cc',
+        'test/core/iomgr/endpoint_tests.cc',
         'test/core/util/debugger_macros.cc',
-        'test/core/util/grpc_profiler.c',
-        'test/core/util/memory_counters.c',
-        'test/core/util/mock_endpoint.c',
-        'test/core/util/parse_hexstring.c',
-        'test/core/util/passthru_endpoint.c',
-        'test/core/util/port.c',
-        'test/core/util/port_server_client.c',
-        'test/core/util/slice_splitter.c',
-        'test/core/util/trickle_endpoint.c',
+        'test/core/util/grpc_profiler.cc',
+        'test/core/util/memory_counters.cc',
+        'test/core/util/mock_endpoint.cc',
+        'test/core/util/parse_hexstring.cc',
+        'test/core/util/passthru_endpoint.cc',
+        'test/core/util/port.cc',
+        'test/core/util/port_server_client.cc',
+        'test/core/util/slice_splitter.cc',
+        'test/core/util/trickle_endpoint.cc',
         'src/core/lib/backoff/backoff.cc',
         'src/core/lib/channel/channel_args.cc',
         'src/core/lib/channel/channel_stack.cc',
@@ -710,20 +710,20 @@
       ],
       'sources': [
         'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
-        'test/core/end2end/cq_verifier.c',
-        'test/core/end2end/fixtures/http_proxy_fixture.c',
-        'test/core/end2end/fixtures/proxy.c',
-        'test/core/iomgr/endpoint_tests.c',
+        'test/core/end2end/cq_verifier.cc',
+        'test/core/end2end/fixtures/http_proxy_fixture.cc',
+        'test/core/end2end/fixtures/proxy.cc',
+        'test/core/iomgr/endpoint_tests.cc',
         'test/core/util/debugger_macros.cc',
-        'test/core/util/grpc_profiler.c',
-        'test/core/util/memory_counters.c',
-        'test/core/util/mock_endpoint.c',
-        'test/core/util/parse_hexstring.c',
-        'test/core/util/passthru_endpoint.c',
-        'test/core/util/port.c',
-        'test/core/util/port_server_client.c',
-        'test/core/util/slice_splitter.c',
-        'test/core/util/trickle_endpoint.c',
+        'test/core/util/grpc_profiler.cc',
+        'test/core/util/memory_counters.cc',
+        'test/core/util/mock_endpoint.cc',
+        'test/core/util/parse_hexstring.cc',
+        'test/core/util/passthru_endpoint.cc',
+        'test/core/util/port.cc',
+        'test/core/util/port_server_client.cc',
+        'test/core/util/slice_splitter.cc',
+        'test/core/util/trickle_endpoint.cc',
         'src/core/lib/backoff/backoff.cc',
         'src/core/lib/channel/channel_args.cc',
         'src/core/lib/channel/channel_stack.cc',
@@ -1147,7 +1147,7 @@
         'gpr',
       ],
       'sources': [
-        'test/core/util/reconnect_server.c',
+        'test/core/util/reconnect_server.cc',
       ],
     },
     {
@@ -1160,7 +1160,7 @@
         'gpr',
       ],
       'sources': [
-        'test/core/util/test_tcp_server.c',
+        'test/core/util/test_tcp_server.cc',
       ],
     },
     {
@@ -2337,7 +2337,7 @@
         'gpr',
       ],
       'sources': [
-        'test/core/bad_client/bad_client.c',
+        'test/core/bad_client/bad_client.cc',
       ],
     },
     {
@@ -2350,67 +2350,67 @@
         'gpr',
       ],
       'sources': [
-        'test/core/end2end/end2end_tests.c',
-        'test/core/end2end/end2end_test_utils.c',
-        'test/core/end2end/tests/authority_not_supported.c',
-        'test/core/end2end/tests/bad_hostname.c',
-        'test/core/end2end/tests/bad_ping.c',
-        'test/core/end2end/tests/binary_metadata.c',
-        'test/core/end2end/tests/call_creds.c',
-        'test/core/end2end/tests/cancel_after_accept.c',
-        'test/core/end2end/tests/cancel_after_client_done.c',
-        'test/core/end2end/tests/cancel_after_invoke.c',
-        'test/core/end2end/tests/cancel_after_round_trip.c',
-        'test/core/end2end/tests/cancel_before_invoke.c',
-        'test/core/end2end/tests/cancel_in_a_vacuum.c',
-        'test/core/end2end/tests/cancel_with_status.c',
-        'test/core/end2end/tests/compressed_payload.c',
-        'test/core/end2end/tests/connectivity.c',
-        'test/core/end2end/tests/default_host.c',
-        'test/core/end2end/tests/disappearing_server.c',
-        'test/core/end2end/tests/empty_batch.c',
-        'test/core/end2end/tests/filter_call_init_fails.c',
-        'test/core/end2end/tests/filter_causes_close.c',
-        'test/core/end2end/tests/filter_latency.c',
-        'test/core/end2end/tests/graceful_server_shutdown.c',
-        'test/core/end2end/tests/high_initial_seqno.c',
-        'test/core/end2end/tests/hpack_size.c',
-        'test/core/end2end/tests/idempotent_request.c',
-        'test/core/end2end/tests/invoke_large_request.c',
-        'test/core/end2end/tests/keepalive_timeout.c',
-        'test/core/end2end/tests/large_metadata.c',
-        'test/core/end2end/tests/load_reporting_hook.c',
-        'test/core/end2end/tests/max_concurrent_streams.c',
-        'test/core/end2end/tests/max_connection_age.c',
-        'test/core/end2end/tests/max_connection_idle.c',
-        'test/core/end2end/tests/max_message_length.c',
-        'test/core/end2end/tests/negative_deadline.c',
-        'test/core/end2end/tests/network_status_change.c',
-        'test/core/end2end/tests/no_logging.c',
-        'test/core/end2end/tests/no_op.c',
-        'test/core/end2end/tests/payload.c',
-        'test/core/end2end/tests/ping.c',
-        'test/core/end2end/tests/ping_pong_streaming.c',
-        'test/core/end2end/tests/proxy_auth.c',
-        'test/core/end2end/tests/registered_call.c',
-        'test/core/end2end/tests/request_with_flags.c',
-        'test/core/end2end/tests/request_with_payload.c',
-        'test/core/end2end/tests/resource_quota_server.c',
-        'test/core/end2end/tests/server_finishes_request.c',
-        'test/core/end2end/tests/shutdown_finishes_calls.c',
-        'test/core/end2end/tests/shutdown_finishes_tags.c',
-        'test/core/end2end/tests/simple_cacheable_request.c',
-        'test/core/end2end/tests/simple_delayed_request.c',
-        'test/core/end2end/tests/simple_metadata.c',
-        'test/core/end2end/tests/simple_request.c',
-        'test/core/end2end/tests/stream_compression_compressed_payload.c',
-        'test/core/end2end/tests/stream_compression_payload.c',
-        'test/core/end2end/tests/stream_compression_ping_pong_streaming.c',
-        'test/core/end2end/tests/streaming_error_response.c',
-        'test/core/end2end/tests/trailing_metadata.c',
-        'test/core/end2end/tests/workaround_cronet_compression.c',
-        'test/core/end2end/tests/write_buffering.c',
-        'test/core/end2end/tests/write_buffering_at_end.c',
+        'test/core/end2end/end2end_tests.cc',
+        'test/core/end2end/end2end_test_utils.cc',
+        'test/core/end2end/tests/authority_not_supported.cc',
+        'test/core/end2end/tests/bad_hostname.cc',
+        'test/core/end2end/tests/bad_ping.cc',
+        'test/core/end2end/tests/binary_metadata.cc',
+        'test/core/end2end/tests/call_creds.cc',
+        'test/core/end2end/tests/cancel_after_accept.cc',
+        'test/core/end2end/tests/cancel_after_client_done.cc',
+        'test/core/end2end/tests/cancel_after_invoke.cc',
+        'test/core/end2end/tests/cancel_after_round_trip.cc',
+        'test/core/end2end/tests/cancel_before_invoke.cc',
+        'test/core/end2end/tests/cancel_in_a_vacuum.cc',
+        'test/core/end2end/tests/cancel_with_status.cc',
+        'test/core/end2end/tests/compressed_payload.cc',
+        'test/core/end2end/tests/connectivity.cc',
+        'test/core/end2end/tests/default_host.cc',
+        'test/core/end2end/tests/disappearing_server.cc',
+        'test/core/end2end/tests/empty_batch.cc',
+        'test/core/end2end/tests/filter_call_init_fails.cc',
+        'test/core/end2end/tests/filter_causes_close.cc',
+        'test/core/end2end/tests/filter_latency.cc',
+        'test/core/end2end/tests/graceful_server_shutdown.cc',
+        'test/core/end2end/tests/high_initial_seqno.cc',
+        'test/core/end2end/tests/hpack_size.cc',
+        'test/core/end2end/tests/idempotent_request.cc',
+        'test/core/end2end/tests/invoke_large_request.cc',
+        'test/core/end2end/tests/keepalive_timeout.cc',
+        'test/core/end2end/tests/large_metadata.cc',
+        'test/core/end2end/tests/load_reporting_hook.cc',
+        'test/core/end2end/tests/max_concurrent_streams.cc',
+        'test/core/end2end/tests/max_connection_age.cc',
+        'test/core/end2end/tests/max_connection_idle.cc',
+        'test/core/end2end/tests/max_message_length.cc',
+        'test/core/end2end/tests/negative_deadline.cc',
+        'test/core/end2end/tests/network_status_change.cc',
+        'test/core/end2end/tests/no_logging.cc',
+        'test/core/end2end/tests/no_op.cc',
+        'test/core/end2end/tests/payload.cc',
+        'test/core/end2end/tests/ping.cc',
+        'test/core/end2end/tests/ping_pong_streaming.cc',
+        'test/core/end2end/tests/proxy_auth.cc',
+        'test/core/end2end/tests/registered_call.cc',
+        'test/core/end2end/tests/request_with_flags.cc',
+        'test/core/end2end/tests/request_with_payload.cc',
+        'test/core/end2end/tests/resource_quota_server.cc',
+        'test/core/end2end/tests/server_finishes_request.cc',
+        'test/core/end2end/tests/shutdown_finishes_calls.cc',
+        'test/core/end2end/tests/shutdown_finishes_tags.cc',
+        'test/core/end2end/tests/simple_cacheable_request.cc',
+        'test/core/end2end/tests/simple_delayed_request.cc',
+        'test/core/end2end/tests/simple_metadata.cc',
+        'test/core/end2end/tests/simple_request.cc',
+        'test/core/end2end/tests/stream_compression_compressed_payload.cc',
+        'test/core/end2end/tests/stream_compression_payload.cc',
+        'test/core/end2end/tests/stream_compression_ping_pong_streaming.cc',
+        'test/core/end2end/tests/streaming_error_response.cc',
+        'test/core/end2end/tests/trailing_metadata.cc',
+        'test/core/end2end/tests/workaround_cronet_compression.cc',
+        'test/core/end2end/tests/write_buffering.cc',
+        'test/core/end2end/tests/write_buffering_at_end.cc',
       ],
     },
     {
@@ -2423,66 +2423,66 @@
         'gpr',
       ],
       'sources': [
-        'test/core/end2end/end2end_nosec_tests.c',
-        'test/core/end2end/end2end_test_utils.c',
-        'test/core/end2end/tests/authority_not_supported.c',
-        'test/core/end2end/tests/bad_hostname.c',
-        'test/core/end2end/tests/bad_ping.c',
-        'test/core/end2end/tests/binary_metadata.c',
-        'test/core/end2end/tests/cancel_after_accept.c',
-        'test/core/end2end/tests/cancel_after_client_done.c',
-        'test/core/end2end/tests/cancel_after_invoke.c',
-        'test/core/end2end/tests/cancel_after_round_trip.c',
-        'test/core/end2end/tests/cancel_before_invoke.c',
-        'test/core/end2end/tests/cancel_in_a_vacuum.c',
-        'test/core/end2end/tests/cancel_with_status.c',
-        'test/core/end2end/tests/compressed_payload.c',
-        'test/core/end2end/tests/connectivity.c',
-        'test/core/end2end/tests/default_host.c',
-        'test/core/end2end/tests/disappearing_server.c',
-        'test/core/end2end/tests/empty_batch.c',
-        'test/core/end2end/tests/filter_call_init_fails.c',
-        'test/core/end2end/tests/filter_causes_close.c',
-        'test/core/end2end/tests/filter_latency.c',
-        'test/core/end2end/tests/graceful_server_shutdown.c',
-        'test/core/end2end/tests/high_initial_seqno.c',
-        'test/core/end2end/tests/hpack_size.c',
-        'test/core/end2end/tests/idempotent_request.c',
-        'test/core/end2end/tests/invoke_large_request.c',
-        'test/core/end2end/tests/keepalive_timeout.c',
-        'test/core/end2end/tests/large_metadata.c',
-        'test/core/end2end/tests/load_reporting_hook.c',
-        'test/core/end2end/tests/max_concurrent_streams.c',
-        'test/core/end2end/tests/max_connection_age.c',
-        'test/core/end2end/tests/max_connection_idle.c',
-        'test/core/end2end/tests/max_message_length.c',
-        'test/core/end2end/tests/negative_deadline.c',
-        'test/core/end2end/tests/network_status_change.c',
-        'test/core/end2end/tests/no_logging.c',
-        'test/core/end2end/tests/no_op.c',
-        'test/core/end2end/tests/payload.c',
-        'test/core/end2end/tests/ping.c',
-        'test/core/end2end/tests/ping_pong_streaming.c',
-        'test/core/end2end/tests/proxy_auth.c',
-        'test/core/end2end/tests/registered_call.c',
-        'test/core/end2end/tests/request_with_flags.c',
-        'test/core/end2end/tests/request_with_payload.c',
-        'test/core/end2end/tests/resource_quota_server.c',
-        'test/core/end2end/tests/server_finishes_request.c',
-        'test/core/end2end/tests/shutdown_finishes_calls.c',
-        'test/core/end2end/tests/shutdown_finishes_tags.c',
-        'test/core/end2end/tests/simple_cacheable_request.c',
-        'test/core/end2end/tests/simple_delayed_request.c',
-        'test/core/end2end/tests/simple_metadata.c',
-        'test/core/end2end/tests/simple_request.c',
-        'test/core/end2end/tests/stream_compression_compressed_payload.c',
-        'test/core/end2end/tests/stream_compression_payload.c',
-        'test/core/end2end/tests/stream_compression_ping_pong_streaming.c',
-        'test/core/end2end/tests/streaming_error_response.c',
-        'test/core/end2end/tests/trailing_metadata.c',
-        'test/core/end2end/tests/workaround_cronet_compression.c',
-        'test/core/end2end/tests/write_buffering.c',
-        'test/core/end2end/tests/write_buffering_at_end.c',
+        'test/core/end2end/end2end_nosec_tests.cc',
+        'test/core/end2end/end2end_test_utils.cc',
+        'test/core/end2end/tests/authority_not_supported.cc',
+        'test/core/end2end/tests/bad_hostname.cc',
+        'test/core/end2end/tests/bad_ping.cc',
+        'test/core/end2end/tests/binary_metadata.cc',
+        'test/core/end2end/tests/cancel_after_accept.cc',
+        'test/core/end2end/tests/cancel_after_client_done.cc',
+        'test/core/end2end/tests/cancel_after_invoke.cc',
+        'test/core/end2end/tests/cancel_after_round_trip.cc',
+        'test/core/end2end/tests/cancel_before_invoke.cc',
+        'test/core/end2end/tests/cancel_in_a_vacuum.cc',
+        'test/core/end2end/tests/cancel_with_status.cc',
+        'test/core/end2end/tests/compressed_payload.cc',
+        'test/core/end2end/tests/connectivity.cc',
+        'test/core/end2end/tests/default_host.cc',
+        'test/core/end2end/tests/disappearing_server.cc',
+        'test/core/end2end/tests/empty_batch.cc',
+        'test/core/end2end/tests/filter_call_init_fails.cc',
+        'test/core/end2end/tests/filter_causes_close.cc',
+        'test/core/end2end/tests/filter_latency.cc',
+        'test/core/end2end/tests/graceful_server_shutdown.cc',
+        'test/core/end2end/tests/high_initial_seqno.cc',
+        'test/core/end2end/tests/hpack_size.cc',
+        'test/core/end2end/tests/idempotent_request.cc',
+        'test/core/end2end/tests/invoke_large_request.cc',
+        'test/core/end2end/tests/keepalive_timeout.cc',
+        'test/core/end2end/tests/large_metadata.cc',
+        'test/core/end2end/tests/load_reporting_hook.cc',
+        'test/core/end2end/tests/max_concurrent_streams.cc',
+        'test/core/end2end/tests/max_connection_age.cc',
+        'test/core/end2end/tests/max_connection_idle.cc',
+        'test/core/end2end/tests/max_message_length.cc',
+        'test/core/end2end/tests/negative_deadline.cc',
+        'test/core/end2end/tests/network_status_change.cc',
+        'test/core/end2end/tests/no_logging.cc',
+        'test/core/end2end/tests/no_op.cc',
+        'test/core/end2end/tests/payload.cc',
+        'test/core/end2end/tests/ping.cc',
+        'test/core/end2end/tests/ping_pong_streaming.cc',
+        'test/core/end2end/tests/proxy_auth.cc',
+        'test/core/end2end/tests/registered_call.cc',
+        'test/core/end2end/tests/request_with_flags.cc',
+        'test/core/end2end/tests/request_with_payload.cc',
+        'test/core/end2end/tests/resource_quota_server.cc',
+        'test/core/end2end/tests/server_finishes_request.cc',
+        'test/core/end2end/tests/shutdown_finishes_calls.cc',
+        'test/core/end2end/tests/shutdown_finishes_tags.cc',
+        'test/core/end2end/tests/simple_cacheable_request.cc',
+        'test/core/end2end/tests/simple_delayed_request.cc',
+        'test/core/end2end/tests/simple_metadata.cc',
+        'test/core/end2end/tests/simple_request.cc',
+        'test/core/end2end/tests/stream_compression_compressed_payload.cc',
+        'test/core/end2end/tests/stream_compression_payload.cc',
+        'test/core/end2end/tests/stream_compression_ping_pong_streaming.cc',
+        'test/core/end2end/tests/streaming_error_response.cc',
+        'test/core/end2end/tests/trailing_metadata.cc',
+        'test/core/end2end/tests/workaround_cronet_compression.cc',
+        'test/core/end2end/tests/write_buffering.cc',
+        'test/core/end2end/tests/write_buffering_at_end.cc',
       ],
     },
   ]
diff --git a/include/grpc/impl/codegen/atm.h b/include/grpc/impl/codegen/atm.h
index e626358..00d83f0 100644
--- a/include/grpc/impl/codegen/atm.h
+++ b/include/grpc/impl/codegen/atm.h
@@ -79,9 +79,17 @@
 #error could not determine platform for atm
 #endif
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /** Adds \a delta to \a *value, clamping the result to the range specified
     by \a min and \a max.  Returns the new value. */
 gpr_atm gpr_atm_no_barrier_clamped_add(gpr_atm* value, gpr_atm delta,
                                        gpr_atm min, gpr_atm max);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_IMPL_CODEGEN_ATM_H */
diff --git a/include/grpc/impl/codegen/atm_gcc_atomic.h b/include/grpc/impl/codegen/atm_gcc_atomic.h
index 61ec7df..5879708 100644
--- a/include/grpc/impl/codegen/atm_gcc_atomic.h
+++ b/include/grpc/impl/codegen/atm_gcc_atomic.h
@@ -23,6 +23,10 @@
    __atomic_* interface.  */
 #include <grpc/impl/codegen/port_platform.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 typedef intptr_t gpr_atm;
 #define GPR_ATM_MAX INTPTR_MAX
 #define GPR_ATM_MIN INTPTR_MIN
@@ -80,4 +84,8 @@
 #define gpr_atm_full_xchg(p, n) \
   GPR_ATM_INC_CAS_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */
diff --git a/include/grpc/support/cmdline.h b/include/grpc/support/cmdline.h
index 6c60b77..c34a109 100644
--- a/include/grpc/support/cmdline.h
+++ b/include/grpc/support/cmdline.h
@@ -65,7 +65,7 @@
                                  const char* help, int* value);
 /** And for a string */
 GPRAPI void gpr_cmdline_add_string(gpr_cmdline* cl, const char* name,
-                                   const char* help, char** value);
+                                   const char* help, const char** value);
 /** Set a callback for non-named arguments */
 GPRAPI void gpr_cmdline_on_extra_arg(
     gpr_cmdline* cl, const char* name, const char* help,
diff --git a/src/core/lib/iomgr/network_status_tracker.h b/src/core/lib/iomgr/network_status_tracker.h
index 3033e0a..32244d9 100644
--- a/src/core/lib/iomgr/network_status_tracker.h
+++ b/src/core/lib/iomgr/network_status_tracker.h
@@ -20,10 +20,6 @@
 #define GRPC_CORE_LIB_IOMGR_NETWORK_STATUS_TRACKER_H
 #include "src/core/lib/iomgr/endpoint.h"
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 void grpc_network_status_init(void);
 void grpc_network_status_shutdown(void);
 
@@ -31,8 +27,4 @@
 void grpc_network_status_unregister_endpoint(grpc_endpoint* ep);
 void grpc_network_status_shutdown_all_endpoints();
 
-#ifdef __cplusplus
-}
-#endif
-
 #endif /* GRPC_CORE_LIB_IOMGR_NETWORK_STATUS_TRACKER_H */
diff --git a/src/core/lib/support/cmdline.cc b/src/core/lib/support/cmdline.cc
index 49b3419..d2785d2 100644
--- a/src/core/lib/support/cmdline.cc
+++ b/src/core/lib/support/cmdline.cc
@@ -105,7 +105,7 @@
 }
 
 void gpr_cmdline_add_string(gpr_cmdline* cl, const char* name, const char* help,
-                            char** value) {
+                            const char** value) {
   add_arg(cl, name, help, ARGTYPE_STRING, value);
 }
 
diff --git a/src/ruby/ext/grpc/rb_grpc_imports.generated.h b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
index 097b3a6..ae1e1a0 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -625,7 +625,7 @@
 typedef void(*gpr_cmdline_add_flag_type)(gpr_cmdline* cl, const char* name, const char* help, int* value);
 extern gpr_cmdline_add_flag_type gpr_cmdline_add_flag_import;
 #define gpr_cmdline_add_flag gpr_cmdline_add_flag_import
-typedef void(*gpr_cmdline_add_string_type)(gpr_cmdline* cl, const char* name, const char* help, char** value);
+typedef void(*gpr_cmdline_add_string_type)(gpr_cmdline* cl, const char* name, const char* help, const char** value);
 extern gpr_cmdline_add_string_type gpr_cmdline_add_string_import;
 #define gpr_cmdline_add_string gpr_cmdline_add_string_import
 typedef void(*gpr_cmdline_on_extra_arg_type)(gpr_cmdline* cl, const char* name, const char* help, void (*on_extra_arg)(void* user_data, const char* arg), void* user_data);
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index c329d2d..3b935e9 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -169,17 +169,17 @@
       ss.dependency "#{s.name}/Interface", version
       ss.dependency "#{s.name}/Implementation", version
 
-      ss.source_files = 'test/core/end2end/cq_verifier.{c,h}',
-                        'test/core/end2end/end2end_tests.{c,h}',
-                        'test/core/end2end/end2end_test_utils.c',
-                        'test/core/end2end/tests/*.{c,h}',
+      ss.source_files = 'test/core/end2end/cq_verifier.{cc,h}',
+                        'test/core/end2end/end2end_tests.{cc,h}',
+                        'test/core/end2end/end2end_test_utils.cc',
+                        'test/core/end2end/tests/*.{cc,h}',
                         'test/core/end2end/fixtures/*.h',
-                        'test/core/end2end/data/*.{c,h}',
+                        'test/core/end2end/data/*.{cc,h}',
                         'test/core/util/debugger_macros.{cc,h}',
-                        'test/core/util/test_config.{c,h}',
+                        'test/core/util/test_config.{cc,h}',
                         'test/core/util/port.h',
-                        'test/core/util/port.c',
-                        'test/core/util/port_server_client.{c,h}'
+                        'test/core/util/port.cc',
+                        'test/core/util/port_server_client.{cc,h}'
     end
 
     # TODO (mxyan): Instead of this hack, add include path "third_party" to C core's include path?
diff --git a/templates/test/core/end2end/end2end_nosec_tests.c.template b/templates/test/core/end2end/end2end_nosec_tests.cc.template
similarity index 100%
rename from templates/test/core/end2end/end2end_nosec_tests.c.template
rename to templates/test/core/end2end/end2end_nosec_tests.cc.template
diff --git a/templates/test/core/end2end/end2end_tests.c.template b/templates/test/core/end2end/end2end_tests.cc.template
similarity index 100%
rename from templates/test/core/end2end/end2end_tests.c.template
rename to templates/test/core/end2end/end2end_tests.cc.template
diff --git a/test/core/backoff/BUILD b/test/core/backoff/BUILD
index 4ae7620..4cd7acf 100644
--- a/test/core/backoff/BUILD
+++ b/test/core/backoff/BUILD
@@ -25,8 +25,8 @@
 
 grpc_cc_test(
     name = "backoff_test",
-    srcs = ["backoff_test.c"],
-    language = "C",
+    srcs = ["backoff_test.cc"],
+    language = "C++",
     deps = [
         "//:grpc",
         "//test/core/util:grpc_test_util",
diff --git a/test/core/backoff/backoff_test.c b/test/core/backoff/backoff_test.cc
similarity index 100%
rename from test/core/backoff/backoff_test.c
rename to test/core/backoff/backoff_test.cc
diff --git a/test/core/bad_client/bad_client.c b/test/core/bad_client/bad_client.cc
similarity index 100%
rename from test/core/bad_client/bad_client.c
rename to test/core/bad_client/bad_client.cc
diff --git a/test/core/bad_client/gen_build_yaml.py b/test/core/bad_client/gen_build_yaml.py
index 61cf1f7..14c8a27 100755
--- a/test/core/bad_client/gen_build_yaml.py
+++ b/test/core/bad_client/gen_build_yaml.py
@@ -46,7 +46,7 @@
             'build': 'private',
             'language': 'c',
             'src': [
-              'test/core/bad_client/bad_client.c'
+              'test/core/bad_client/bad_client.cc'
             ],
             'headers': [
               'test/core/bad_client/bad_client.h'
@@ -66,7 +66,7 @@
               'build': 'test',
               'language': 'c',
               'secure': 'no',
-              'src': ['test/core/bad_client/tests/%s.c' % t],
+              'src': ['test/core/bad_client/tests/%s.cc' % t],
               'vs_proj_dir': 'test',
               'exclude_iomgrs': ['uv'],
               'deps': [
diff --git a/test/core/bad_client/generate_tests.bzl b/test/core/bad_client/generate_tests.bzl
index 58b48d6..022edf3 100755
--- a/test/core/bad_client/generate_tests.bzl
+++ b/test/core/bad_client/generate_tests.bzl
@@ -38,16 +38,14 @@
 def grpc_bad_client_tests():
   native.cc_library(
       name = 'bad_client_test',
-      srcs = ['bad_client.c'],
+      srcs = ['bad_client.cc'],
       hdrs = ['bad_client.h'],
-      copts = ['-std=c99'],
       deps = ['//test/core/util:grpc_test_util', '//:grpc', '//:gpr', '//test/core/end2end:cq_verifier']
   )
   for t, topt in BAD_CLIENT_TESTS.items():
     native.cc_test(
         name = '%s_bad_client_test' % t,
-        srcs = ['tests/%s.c' % t],
+        srcs = ['tests/%s.cc' % t],
         deps = [':bad_client_test'],
-        copts = ['-std=c99'],
     )
 
diff --git a/test/core/bad_client/tests/badreq.c b/test/core/bad_client/tests/badreq.cc
similarity index 100%
rename from test/core/bad_client/tests/badreq.c
rename to test/core/bad_client/tests/badreq.cc
diff --git a/test/core/bad_client/tests/connection_prefix.c b/test/core/bad_client/tests/connection_prefix.cc
similarity index 100%
rename from test/core/bad_client/tests/connection_prefix.c
rename to test/core/bad_client/tests/connection_prefix.cc
diff --git a/test/core/bad_client/tests/head_of_line_blocking.c b/test/core/bad_client/tests/head_of_line_blocking.cc
similarity index 97%
rename from test/core/bad_client/tests/head_of_line_blocking.c
rename to test/core/bad_client/tests/head_of_line_blocking.cc
index 8b51d0e..aad335c 100644
--- a/test/core/bad_client/tests/head_of_line_blocking.c
+++ b/test/core/bad_client/tests/head_of_line_blocking.cc
@@ -100,7 +100,7 @@
 static void addbuf(const void* data, size_t len) {
   if (g_count + len > g_cap) {
     g_cap = GPR_MAX(g_count + len, g_cap * 2);
-    g_buffer = gpr_realloc(g_buffer, g_cap);
+    g_buffer = static_cast<char*>(gpr_realloc(g_buffer, g_cap));
   }
   memcpy(g_buffer + g_count, data, len);
   g_count += len;
diff --git a/test/core/bad_client/tests/headers.c b/test/core/bad_client/tests/headers.cc
similarity index 100%
rename from test/core/bad_client/tests/headers.c
rename to test/core/bad_client/tests/headers.cc
diff --git a/test/core/bad_client/tests/initial_settings_frame.c b/test/core/bad_client/tests/initial_settings_frame.cc
similarity index 100%
rename from test/core/bad_client/tests/initial_settings_frame.c
rename to test/core/bad_client/tests/initial_settings_frame.cc
diff --git a/test/core/bad_client/tests/large_metadata.c b/test/core/bad_client/tests/large_metadata.cc
similarity index 100%
rename from test/core/bad_client/tests/large_metadata.c
rename to test/core/bad_client/tests/large_metadata.cc
diff --git a/test/core/bad_client/tests/server_registered_method.c b/test/core/bad_client/tests/server_registered_method.cc
similarity index 100%
rename from test/core/bad_client/tests/server_registered_method.c
rename to test/core/bad_client/tests/server_registered_method.cc
diff --git a/test/core/bad_client/tests/simple_request.c b/test/core/bad_client/tests/simple_request.cc
similarity index 100%
rename from test/core/bad_client/tests/simple_request.c
rename to test/core/bad_client/tests/simple_request.cc
diff --git a/test/core/bad_client/tests/unknown_frame.c b/test/core/bad_client/tests/unknown_frame.cc
similarity index 100%
rename from test/core/bad_client/tests/unknown_frame.c
rename to test/core/bad_client/tests/unknown_frame.cc
diff --git a/test/core/bad_client/tests/window_overflow.c b/test/core/bad_client/tests/window_overflow.cc
similarity index 97%
rename from test/core/bad_client/tests/window_overflow.c
rename to test/core/bad_client/tests/window_overflow.cc
index 6f5c013..cb4b790 100644
--- a/test/core/bad_client/tests/window_overflow.c
+++ b/test/core/bad_client/tests/window_overflow.cc
@@ -58,7 +58,7 @@
 static void addbuf(const void* data, size_t len) {
   if (g_count + len > g_cap) {
     g_cap = GPR_MAX(g_count + len, g_cap * 2);
-    g_buffer = gpr_realloc(g_buffer, g_cap);
+    g_buffer = static_cast<char*>(gpr_realloc(g_buffer, g_cap));
   }
   memcpy(g_buffer + g_count, data, len);
   g_count += len;
diff --git a/test/core/bad_ssl/bad_ssl_test.c b/test/core/bad_ssl/bad_ssl_test.cc
similarity index 95%
rename from test/core/bad_ssl/bad_ssl_test.c
rename to test/core/bad_ssl/bad_ssl_test.cc
index 547cadc..3cfa2a4 100644
--- a/test/core/bad_ssl/bad_ssl_test.c
+++ b/test/core/bad_ssl/bad_ssl_test.cc
@@ -52,9 +52,10 @@
   grpc_op ops[6];
   grpc_op* op;
 
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args args;
 
   args.num_args = 1;
@@ -141,7 +142,7 @@
   /* start the server */
   gpr_asprintf(&args[0], "%s/bad_ssl_%s_server%s", root, test,
                gpr_subprocess_binary_extension());
-  args[1] = "--bind";
+  args[1] = const_cast<char*>("--bind");
   gpr_join_host_port(&args[2], "::", port);
   svr = gpr_subprocess_create(4, (const char**)args);
   gpr_free(args[0]);
diff --git a/test/core/bad_ssl/gen_build_yaml.py b/test/core/bad_ssl/gen_build_yaml.py
index 30fdb5e..6b78e9c 100755
--- a/test/core/bad_ssl/gen_build_yaml.py
+++ b/test/core/bad_ssl/gen_build_yaml.py
@@ -38,7 +38,7 @@
               'name': 'bad_ssl_test_server',
               'build': 'private',
               'language': 'c',
-              'src': ['test/core/bad_ssl/server_common.c'],
+              'src': ['test/core/bad_ssl/server_common.cc'],
               'headers': ['test/core/bad_ssl/server_common.h'],
               'vs_proj_dir': 'test',
               'platforms': ['linux', 'posix', 'mac'],
@@ -56,7 +56,7 @@
               'build': 'test',
               'language': 'c',
               'run': False,
-              'src': ['test/core/bad_ssl/servers/%s.c' % t],
+              'src': ['test/core/bad_ssl/servers/%s.cc' % t],
               'vs_proj_dir': 'test/bad_ssl',
               'platforms': ['linux', 'posix', 'mac'],
               'deps': [
@@ -73,7 +73,7 @@
               'cpu_cost': BAD_CLIENT_TESTS[t].cpu_cost,
               'build': 'test',
               'language': 'c',
-              'src': ['test/core/bad_ssl/bad_ssl_test.c'],
+              'src': ['test/core/bad_ssl/bad_ssl_test.cc'],
               'vs_proj_dir': 'test',
               'platforms': ['linux', 'posix', 'mac'],
               'deps': [
diff --git a/test/core/bad_ssl/generate_tests.bzl b/test/core/bad_ssl/generate_tests.bzl
index b61fabc..b7cb8f8 100755
--- a/test/core/bad_ssl/generate_tests.bzl
+++ b/test/core/bad_ssl/generate_tests.bzl
@@ -24,14 +24,14 @@
 def grpc_bad_ssl_tests():
   native.cc_library(
       name = 'bad_ssl_test_server',
-      srcs = ['server_common.c'],
+      srcs = ['server_common.cc'],
       hdrs = ['server_common.h'],
       deps = ['//test/core/util:grpc_test_util', '//:grpc', '//test/core/end2end:ssl_test_data']
   )
   for t in BAD_SSL_TESTS:
     native.cc_test(
         name = 'bad_ssl_%s_server' % t,
-        srcs = ['servers/%s.c' % t],
+        srcs = ['servers/%s.cc' % t],
         deps = [':bad_ssl_test_server'],
     )
 
diff --git a/test/core/bad_ssl/server_common.c b/test/core/bad_ssl/server_common.cc
similarity index 98%
rename from test/core/bad_ssl/server_common.c
rename to test/core/bad_ssl/server_common.cc
index 2aa547d..0110ed5 100644
--- a/test/core/bad_ssl/server_common.c
+++ b/test/core/bad_ssl/server_common.cc
@@ -34,7 +34,7 @@
 
 const char* bad_ssl_addr(int argc, char** argv) {
   gpr_cmdline* cl;
-  char* addr = NULL;
+  const char* addr = NULL;
   cl = gpr_cmdline_create("test server");
   gpr_cmdline_add_string(cl, "bind", "Bind host:port", &addr);
   gpr_cmdline_parse(cl, argc, argv);
diff --git a/test/core/bad_ssl/servers/alpn.c b/test/core/bad_ssl/servers/alpn.cc
similarity index 100%
rename from test/core/bad_ssl/servers/alpn.c
rename to test/core/bad_ssl/servers/alpn.cc
diff --git a/test/core/bad_ssl/servers/cert.c b/test/core/bad_ssl/servers/cert.cc
similarity index 100%
rename from test/core/bad_ssl/servers/cert.c
rename to test/core/bad_ssl/servers/cert.cc
diff --git a/test/core/channel/BUILD b/test/core/channel/BUILD
index 5ac77c4..92f5907 100644
--- a/test/core/channel/BUILD
+++ b/test/core/channel/BUILD
@@ -20,8 +20,8 @@
 
 grpc_cc_test(
     name = "channel_args_test",
-    srcs = ["channel_args_test.c"],
-    language = "C",
+    srcs = ["channel_args_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -32,8 +32,8 @@
 
 grpc_cc_test(
     name = "channel_stack_test",
-    srcs = ["channel_stack_test.c"],
-    language = "C",
+    srcs = ["channel_stack_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -44,8 +44,8 @@
 
 grpc_cc_test(
     name = "channel_stack_builder_test",
-    srcs = ["channel_stack_builder_test.c"],
-    language = "C",
+    srcs = ["channel_stack_builder_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/channel/channel_args_test.c b/test/core/channel/channel_args_test.cc
similarity index 96%
rename from test/core/channel/channel_args_test.c
rename to test/core/channel/channel_args_test.cc
index 85baa99..4b4bd3e 100644
--- a/test/core/channel/channel_args_test.c
+++ b/test/core/channel/channel_args_test.cc
@@ -33,13 +33,13 @@
   grpc_arg to_add[2];
   grpc_channel_args* ch_args;
 
-  arg_int.key = "int_arg";
+  arg_int.key = const_cast<char*>("int_arg");
   arg_int.type = GRPC_ARG_INTEGER;
   arg_int.value.integer = 123;
 
-  arg_string.key = "str key";
+  arg_string.key = const_cast<char*>("str key");
   arg_string.type = GRPC_ARG_STRING;
-  arg_string.value.string = "str value";
+  arg_string.value.string = const_cast<char*>("str value");
 
   to_add[0] = arg_int;
   to_add[1] = arg_string;
diff --git a/test/core/channel/channel_stack_builder_test.c b/test/core/channel/channel_stack_builder_test.cc
similarity index 96%
rename from test/core/channel/channel_stack_builder_test.c
rename to test/core/channel/channel_stack_builder_test.cc
index 2a5920c..1571f6e 100644
--- a/test/core/channel/channel_stack_builder_test.c
+++ b/test/core/channel/channel_stack_builder_test.cc
@@ -63,7 +63,7 @@
 bool g_original_fn_called = false;
 void set_arg_once_fn(grpc_channel_stack* channel_stack,
                      grpc_channel_element* elem, void* arg) {
-  bool* called = arg;
+  bool* called = static_cast<bool*>(arg);
   // Make sure this function is only called once per arg.
   GPR_ASSERT(*called == false);
   *called = true;
@@ -109,7 +109,8 @@
 static bool add_replacement_filter(grpc_exec_ctx* exec_ctx,
                                    grpc_channel_stack_builder* builder,
                                    void* arg) {
-  const grpc_channel_filter* filter = arg;
+  const grpc_channel_filter* filter =
+      static_cast<const grpc_channel_filter*>(arg);
   // Get rid of any other version of the filter, as determined by having the
   // same name.
   GPR_ASSERT(grpc_channel_stack_builder_remove_filter(builder, filter->name));
diff --git a/test/core/channel/channel_stack_test.c b/test/core/channel/channel_stack_test.cc
similarity index 84%
rename from test/core/channel/channel_stack_test.c
rename to test/core/channel/channel_stack_test.cc
index aff3fb2..1b661ac 100644
--- a/test/core/channel/channel_stack_test.c
+++ b/test/core/channel/channel_stack_test.cc
@@ -69,12 +69,13 @@
 
 static void free_channel(grpc_exec_ctx* exec_ctx, void* arg,
                          grpc_error* error) {
-  grpc_channel_stack_destroy(exec_ctx, arg);
+  grpc_channel_stack_destroy(exec_ctx, static_cast<grpc_channel_stack*>(arg));
   gpr_free(arg);
 }
 
 static void free_call(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
-  grpc_call_stack_destroy(exec_ctx, arg, NULL, NULL);
+  grpc_call_stack_destroy(exec_ctx, static_cast<grpc_call_stack*>(arg), NULL,
+                          NULL);
   gpr_free(arg);
 }
 
@@ -104,13 +105,14 @@
   grpc_slice path = grpc_slice_from_static_string("/service/method");
 
   arg.type = GRPC_ARG_INTEGER;
-  arg.key = "test_key";
+  arg.key = const_cast<char*>("test_key");
   arg.value.integer = 42;
 
   chan_args.num_args = 1;
   chan_args.args = &arg;
 
-  channel_stack = gpr_malloc(grpc_channel_stack_size(&filters, 1));
+  channel_stack = static_cast<grpc_channel_stack*>(
+      gpr_malloc(grpc_channel_stack_size(&filters, 1)));
   grpc_channel_stack_init(&exec_ctx, 1, free_channel, channel_stack, &filters,
                           1, &chan_args, NULL, "test", channel_stack);
   GPR_ASSERT(channel_stack->count == 1);
@@ -118,15 +120,18 @@
   channel_data = (int*)channel_elem->channel_data;
   GPR_ASSERT(*channel_data == 0);
 
-  call_stack = gpr_malloc(channel_stack->call_stack_size);
+  call_stack =
+      static_cast<grpc_call_stack*>(gpr_malloc(channel_stack->call_stack_size));
   const grpc_call_element_args args = {
-      .call_stack = call_stack,
-      .server_transport_data = NULL,
-      .context = NULL,
-      .path = path,
-      .start_time = gpr_now(GPR_CLOCK_MONOTONIC),
-      .deadline = GRPC_MILLIS_INF_FUTURE,
-      .arena = NULL};
+      call_stack,                   /* call_stack */
+      nullptr,                      /* server_transport_data */
+      nullptr,                      /* context */
+      path,                         /* path */
+      gpr_now(GPR_CLOCK_MONOTONIC), /* start_time */
+      GRPC_MILLIS_INF_FUTURE,       /* deadline */
+      nullptr,                      /* arena */
+      nullptr                       /* call_combiner */
+  };
   grpc_error* error = grpc_call_stack_init(&exec_ctx, channel_stack, 1,
                                            free_call, call_stack, &args);
   GPR_ASSERT(error == GRPC_ERROR_NONE);
diff --git a/test/core/channel/minimal_stack_is_minimal_test.c b/test/core/channel/minimal_stack_is_minimal_test.cc
similarity index 92%
rename from test/core/channel/minimal_stack_is_minimal_test.c
rename to test/core/channel/minimal_stack_is_minimal_test.cc
index a43305a..c54ff2e 100644
--- a/test/core/channel/minimal_stack_is_minimal_test.c
+++ b/test/core/channel/minimal_stack_is_minimal_test.cc
@@ -61,11 +61,11 @@
   int errors = 0;
 
   // tests with a minimal stack
-  grpc_arg minimal_stack_arg = {.type = GRPC_ARG_INTEGER,
-                                .key = GRPC_ARG_MINIMAL_STACK,
-                                .value.integer = 1};
-  grpc_channel_args minimal_stack_args = {.num_args = 1,
-                                          .args = &minimal_stack_arg};
+  grpc_arg minimal_stack_arg;
+  minimal_stack_arg.type = GRPC_ARG_INTEGER;
+  minimal_stack_arg.key = const_cast<char*>(GRPC_ARG_MINIMAL_STACK);
+  minimal_stack_arg.value.integer = 1;
+  grpc_channel_args minimal_stack_args = {1, &minimal_stack_arg};
   errors += CHECK_STACK("unknown", &minimal_stack_args,
                         GRPC_CLIENT_DIRECT_CHANNEL, "connected", NULL);
   errors += CHECK_STACK("unknown", &minimal_stack_args, GRPC_CLIENT_SUBCHANNEL,
@@ -114,8 +114,10 @@
                        unsigned channel_stack_type, ...) {
   // create dummy channel stack
   grpc_channel_stack_builder* builder = grpc_channel_stack_builder_create();
-  grpc_transport_vtable fake_transport_vtable = {.name = transport_name};
-  grpc_transport fake_transport = {.vtable = &fake_transport_vtable};
+  grpc_transport_vtable fake_transport_vtable;
+  memset(&fake_transport_vtable, 0, sizeof(grpc_transport_vtable));
+  fake_transport_vtable.name = transport_name;
+  grpc_transport fake_transport = {&fake_transport_vtable};
   grpc_channel_stack_builder_set_target(builder, "foo.test.google.fr");
   grpc_channel_args* channel_args = grpc_channel_args_copy(init_args);
   if (transport_name != NULL) {
@@ -195,7 +197,9 @@
     gpr_log(
         file, line, GPR_LOG_SEVERITY_ERROR,
         "FAILED transport=%s; stack_type=%s; channel_args=%s:", transport_name,
-        grpc_channel_stack_type_string(channel_stack_type), args_str);
+        grpc_channel_stack_type_string(
+            static_cast<grpc_channel_stack_type>(channel_stack_type)),
+        args_str);
     gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "EXPECTED: %s", expect);
     gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "GOT:      %s", got);
     result = 1;
diff --git a/test/core/client_channel/BUILD b/test/core/client_channel/BUILD
index c4a9323..ec72e0e 100644
--- a/test/core/client_channel/BUILD
+++ b/test/core/client_channel/BUILD
@@ -22,8 +22,8 @@
 
 grpc_fuzzer(
     name = "uri_fuzzer_test",
-    srcs = ["uri_fuzzer_test.c"],
-    language = "C",
+    srcs = ["uri_fuzzer_test.cc"],
+    language = "C++",
     corpus = "uri_corpus",
     deps = [
         "//:gpr",
@@ -34,8 +34,8 @@
 
 grpc_cc_test(
     name = "lb_policies_test",
-    srcs = ["lb_policies_test.c"],
-    language = "C",
+    srcs = ["lb_policies_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/client_channel/lb_policies_test.c b/test/core/client_channel/lb_policies_test.cc
similarity index 89%
rename from test/core/client_channel/lb_policies_test.c
rename to test/core/client_channel/lb_policies_test.cc
index b557e26..3b90748 100644
--- a/test/core/client_channel/lb_policies_test.c
+++ b/test/core/client_channel/lb_policies_test.cc
@@ -88,14 +88,15 @@
   test_spec* spec;
   size_t i;
 
-  spec = gpr_malloc(sizeof(test_spec));
+  spec = static_cast<test_spec*>(gpr_malloc(sizeof(test_spec)));
   spec->num_iters = num_iters;
   spec->num_servers = num_servers;
-  spec->kill_at = gpr_malloc(sizeof(int*) * num_iters);
-  spec->revive_at = gpr_malloc(sizeof(int*) * num_iters);
+  spec->kill_at = static_cast<int**>(gpr_malloc(sizeof(int*) * num_iters));
+  spec->revive_at = static_cast<int**>(gpr_malloc(sizeof(int*) * num_iters));
   for (i = 0; i < num_iters; i++) {
-    spec->kill_at[i] = gpr_malloc(sizeof(int) * num_servers);
-    spec->revive_at[i] = gpr_malloc(sizeof(int) * num_servers);
+    spec->kill_at[i] = static_cast<int*>(gpr_malloc(sizeof(int) * num_servers));
+    spec->revive_at[i] =
+        static_cast<int*>(gpr_malloc(sizeof(int) * num_servers));
   }
 
   test_spec_reset(spec);
@@ -172,16 +173,20 @@
 static servers_fixture* setup_servers(const char* server_host,
                                       request_data* rdata,
                                       const size_t num_servers) {
-  servers_fixture* f = gpr_malloc(sizeof(servers_fixture));
+  servers_fixture* f =
+      static_cast<servers_fixture*>(gpr_malloc(sizeof(servers_fixture)));
   size_t i;
 
   f->num_servers = num_servers;
-  f->server_calls = gpr_malloc(sizeof(grpc_call*) * num_servers);
-  f->request_metadata_recv =
-      gpr_malloc(sizeof(grpc_metadata_array) * num_servers);
+  f->server_calls =
+      static_cast<grpc_call**>(gpr_malloc(sizeof(grpc_call*) * num_servers));
+  f->request_metadata_recv = static_cast<grpc_metadata_array*>(
+      gpr_malloc(sizeof(grpc_metadata_array) * num_servers));
   /* Create servers. */
-  f->servers = gpr_malloc(sizeof(grpc_server*) * num_servers);
-  f->servers_hostports = gpr_malloc(sizeof(char*) * num_servers);
+  f->servers = static_cast<grpc_server**>(
+      gpr_malloc(sizeof(grpc_server*) * num_servers));
+  f->servers_hostports =
+      static_cast<char**>(gpr_malloc(sizeof(char*) * num_servers));
   f->cq = grpc_completion_queue_create_for_next(NULL);
   f->shutdown_cq = grpc_completion_queue_create_for_pluck(NULL);
   for (i = 0; i < num_servers; i++) {
@@ -226,8 +231,9 @@
 static request_sequences request_sequences_create(size_t n) {
   request_sequences res;
   res.n = n;
-  res.connections = gpr_malloc(sizeof(*res.connections) * n);
-  res.connectivity_states = gpr_malloc(sizeof(*res.connectivity_states) * n);
+  res.connections = static_cast<int*>(gpr_malloc(sizeof(*res.connections) * n));
+  res.connectivity_states = static_cast<grpc_connectivity_state*>(
+      gpr_malloc(sizeof(*res.connectivity_states) * n));
   memset(res.connections, 0, sizeof(*res.connections) * n);
   memset(res.connectivity_states, 0, sizeof(*res.connectivity_states) * n);
   return res;
@@ -255,7 +261,7 @@
   int completed_client;
   const request_sequences sequences = request_sequences_create(spec->num_iters);
 
-  s_valid = gpr_malloc(sizeof(int) * f->num_servers);
+  s_valid = static_cast<int*>(gpr_malloc(sizeof(int) * f->num_servers));
 
   for (iter_num = 0; iter_num < spec->num_iters; iter_num++) {
     cq_verifier* cqv = cq_verifier_create(f->cq);
@@ -426,7 +432,8 @@
   grpc_op* op;
   size_t i;
 
-  calls = gpr_malloc(sizeof(grpc_call*) * concurrent_calls);
+  calls = static_cast<grpc_call**>(
+      gpr_malloc(sizeof(grpc_call*) * concurrent_calls));
   for (i = 0; i < f->num_servers; i++) {
     kill_server(f, i);
   }
@@ -465,8 +472,8 @@
   servers_fixture* f;
   grpc_channel_args args;
   grpc_arg arg_array[2];
-  rdata.call_details =
-      gpr_malloc(sizeof(grpc_call_details) * spec->num_servers);
+  rdata.call_details = static_cast<grpc_call_details*>(
+      gpr_malloc(sizeof(grpc_call_details) * spec->num_servers));
   f = setup_servers("127.0.0.1", &rdata, spec->num_servers);
 
   /* Create client. */
@@ -475,11 +482,12 @@
   gpr_asprintf(&client_hostport, "ipv4:%s", servers_hostports_str);
 
   arg_array[0].type = GRPC_ARG_INTEGER;
-  arg_array[0].key = "grpc.testing.fixed_reconnect_backoff_ms";
+  arg_array[0].key =
+      const_cast<char*>("grpc.testing.fixed_reconnect_backoff_ms");
   arg_array[0].value.integer = RETRY_TIMEOUT;
   arg_array[1].type = GRPC_ARG_STRING;
-  arg_array[1].key = GRPC_ARG_LB_POLICY_NAME;
-  arg_array[1].value.string = "round_robin";
+  arg_array[1].key = const_cast<char*>(GRPC_ARG_LB_POLICY_NAME);
+  arg_array[1].value.string = const_cast<char*>("round_robin");
   args.num_args = 2;
   args.args = arg_array;
 
@@ -513,13 +521,15 @@
   gpr_asprintf(&client_hostport, "ipv4:%s", servers_hostports_str);
 
   arg_array[0].type = GRPC_ARG_INTEGER;
-  arg_array[0].key = "grpc.testing.fixed_reconnect_backoff_ms";
+  arg_array[0].key =
+      const_cast<char*>("grpc.testing.fixed_reconnect_backoff_ms");
   arg_array[0].value.integer = RETRY_TIMEOUT;
   arg_array[1].type = GRPC_ARG_STRING;
-  arg_array[1].key = GRPC_ARG_LB_POLICY_NAME;
-  arg_array[1].value.string = "ROUND_ROBIN";
+  arg_array[1].key = const_cast<char*>(GRPC_ARG_LB_POLICY_NAME);
+  arg_array[1].value.string = const_cast<char*>("ROUND_ROBIN");
   arg_array[2].type = GRPC_ARG_INTEGER;
-  arg_array[2].key = GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS;
+  arg_array[2].key =
+      const_cast<char*>(GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS);
   arg_array[2].value.integer = 0;
   args.num_args = GPR_ARRAY_SIZE(arg_array);
   args.args = arg_array;
@@ -540,7 +550,8 @@
   const size_t num_servers = 1;
   int i;
 
-  rdata.call_details = gpr_malloc(sizeof(grpc_call_details) * num_servers);
+  rdata.call_details = static_cast<grpc_call_details*>(
+      gpr_malloc(sizeof(grpc_call_details) * num_servers));
   f = setup_servers("127.0.0.1", &rdata, num_servers);
   cqv = cq_verifier_create(f->cq);
 
@@ -585,8 +596,8 @@
   request_data rdata;
   servers_fixture* f;
   test_spec* spec = test_spec_create(0, 4);
-  rdata.call_details =
-      gpr_malloc(sizeof(grpc_call_details) * spec->num_servers);
+  rdata.call_details = static_cast<grpc_call_details*>(
+      gpr_malloc(sizeof(grpc_call_details) * spec->num_servers));
   f = setup_servers("127.0.0.1", &rdata, spec->num_servers);
 
   client = create_client(f);
@@ -626,7 +637,7 @@
   gpr_free(lb_policy_name);
   // Request service config, which does not exist, so we'll get nothing back.
   memset(&channel_info, 0, sizeof(channel_info));
-  char* service_config_json = "dummy_string";
+  char* service_config_json = const_cast<char*>("dummy_string");
   channel_info.service_config_json = &service_config_json;
   grpc_channel_get_info(channel, &channel_info);
   GPR_ASSERT(service_config_json == NULL);
@@ -634,8 +645,9 @@
   grpc_channel_destroy(channel);
   grpc_arg arg;
   arg.type = GRPC_ARG_STRING;
-  arg.key = GRPC_ARG_SERVICE_CONFIG;
-  arg.value.string = "{\"loadBalancingPolicy\": \"ROUND_ROBIN\"}";
+  arg.key = const_cast<char*>(GRPC_ARG_SERVICE_CONFIG);
+  arg.value.string =
+      const_cast<char*>("{\"loadBalancingPolicy\": \"ROUND_ROBIN\"}");
   grpc_channel_args* args = grpc_channel_args_copy_and_add(NULL, &arg, 1);
   channel = grpc_insecure_channel_create("ipv4:127.0.0.1:1234", args, NULL);
   {
@@ -676,7 +688,7 @@
   /* verify conn. seq. expectation */
   /* get the first sequence of "num_servers" elements */
   int* expected_connection_sequence =
-      gpr_malloc(sizeof(int) * expected_seq_length);
+      static_cast<int*>(gpr_malloc(sizeof(int) * expected_seq_length));
   memcpy(expected_connection_sequence, sequences->connections,
          sizeof(int) * expected_seq_length);
 
@@ -695,7 +707,8 @@
   /* All servers are available, therefore all client subchannels are READY, even
    * when we only need one for the client channel state to be READY */
   for (size_t i = 0; i < sequences->n; i++) {
-    const grpc_connectivity_state actual = sequences->connectivity_states[i];
+    const grpc_connectivity_state actual =
+        static_cast<grpc_connectivity_state>(sequences->connectivity_states[i]);
     const grpc_connectivity_state expected = GRPC_CHANNEL_READY;
     if (actual != expected) {
       gpr_log(GPR_ERROR,
@@ -721,7 +734,8 @@
 
   /* verify conn. seq. expectation */
   /* copy the first full sequence (without -1s) */
-  expected_connection_sequence = gpr_malloc(sizeof(int) * expected_seq_length);
+  expected_connection_sequence =
+      static_cast<int*>(gpr_malloc(sizeof(int) * expected_seq_length));
   memcpy(expected_connection_sequence, sequences->connections + 2,
          expected_seq_length * sizeof(int));
 
@@ -750,7 +764,8 @@
   /* There's always at least one subchannel READY (connected), therefore the
    * overall state of the client channel is READY at all times. */
   for (i = 0; i < sequences->n; i++) {
-    const grpc_connectivity_state actual = sequences->connectivity_states[i];
+    const grpc_connectivity_state actual =
+        static_cast<grpc_connectivity_state>(sequences->connectivity_states[i]);
     const grpc_connectivity_state expected = GRPC_CHANNEL_READY;
     if (actual != expected) {
       gpr_log(GPR_ERROR,
@@ -785,7 +800,8 @@
    * Note that all other states (IDLE, CONNECTING, TRANSIENT_FAILURE) are still
    * possible, as the policy transitions while attempting to reconnect. */
   for (size_t i = 0; i < sequences->n; i++) {
-    const grpc_connectivity_state actual = sequences->connectivity_states[i];
+    const grpc_connectivity_state actual =
+        static_cast<grpc_connectivity_state>(sequences->connectivity_states[i]);
     if (actual == GRPC_CHANNEL_READY || actual == GRPC_CHANNEL_SHUTDOWN) {
       gpr_log(GPR_ERROR,
               "CONNECTIVITY STATUS SEQUENCE FAILURE: got unexpected state "
@@ -805,7 +821,8 @@
 
   /* verify conn. seq. expectation */
   /* get the first sequence of "num_servers" elements */
-  expected_connection_sequence = gpr_malloc(sizeof(int) * expected_seq_length);
+  expected_connection_sequence =
+      static_cast<int*>(gpr_malloc(sizeof(int) * expected_seq_length));
   memcpy(expected_connection_sequence, sequences->connections,
          sizeof(int) * expected_seq_length);
 
@@ -827,7 +844,8 @@
 
   /* We can assert that the first client channel state should be READY, when all
    * servers were available */
-  grpc_connectivity_state actual = sequences->connectivity_states[0];
+  grpc_connectivity_state actual =
+      static_cast<grpc_connectivity_state>(sequences->connectivity_states[0]);
   grpc_connectivity_state expected = GRPC_CHANNEL_READY;
   if (actual != expected) {
     gpr_log(GPR_ERROR,
@@ -841,7 +859,8 @@
   /* ... and that the last one shouldn't be READY (or SHUTDOWN): all servers are
    * gone. It may be all other states (IDLE, CONNECTING, TRANSIENT_FAILURE), as
    * the policy transitions while attempting to reconnect. */
-  actual = sequences->connectivity_states[num_iters - 1];
+  actual = static_cast<grpc_connectivity_state>(
+      sequences->connectivity_states[num_iters - 1]);
   for (i = 0; i < sequences->n; i++) {
     if (actual == GRPC_CHANNEL_READY || actual == GRPC_CHANNEL_SHUTDOWN) {
       gpr_log(GPR_ERROR,
@@ -894,7 +913,8 @@
   /* We can assert that the first client channel state should be READY, when all
    * servers were available; same thing for the last one. In the middle
    * somewhere there must exist at least one TRANSIENT_FAILURE */
-  grpc_connectivity_state actual = sequences->connectivity_states[0];
+  grpc_connectivity_state actual =
+      static_cast<grpc_connectivity_state>(sequences->connectivity_states[0]);
   grpc_connectivity_state expected = GRPC_CHANNEL_READY;
   if (actual != expected) {
     gpr_log(GPR_ERROR,
@@ -905,7 +925,8 @@
     abort();
   }
 
-  actual = sequences->connectivity_states[num_iters - 1];
+  actual = static_cast<grpc_connectivity_state>(
+      sequences->connectivity_states[num_iters - 1]);
   expected = GRPC_CHANNEL_READY;
   if (actual != expected) {
     gpr_log(GPR_ERROR,
@@ -931,7 +952,8 @@
         "instead:");
     for (size_t i = 0; i < num_iters; i++) {
       gpr_log(GPR_ERROR, "[%d]: %s", (int)i,
-              grpc_connectivity_state_name(sequences->connectivity_states[i]));
+              grpc_connectivity_state_name(static_cast<grpc_connectivity_state>(
+                  sequences->connectivity_states[i])));
     }
   }
 }
diff --git a/test/core/client_channel/parse_address_test.c b/test/core/client_channel/parse_address_test.cc
similarity index 100%
rename from test/core/client_channel/parse_address_test.c
rename to test/core/client_channel/parse_address_test.cc
diff --git a/test/core/client_channel/resolvers/BUILD b/test/core/client_channel/resolvers/BUILD
index 0907e06..b5269c7 100644
--- a/test/core/client_channel/resolvers/BUILD
+++ b/test/core/client_channel/resolvers/BUILD
@@ -20,8 +20,8 @@
 
 grpc_cc_test(
     name = "dns_resolver_connectivity_test",
-    srcs = ["dns_resolver_connectivity_test.c"],
-    language = "C",
+    srcs = ["dns_resolver_connectivity_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -32,8 +32,8 @@
 
 grpc_cc_test(
     name = "dns_resolver_test",
-    srcs = ["dns_resolver_test.c"],
-    language = "C",
+    srcs = ["dns_resolver_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -44,8 +44,8 @@
 
 grpc_cc_test(
     name = "sockaddr_resolver_test",
-    srcs = ["sockaddr_resolver_test.c"],
-    language = "C",
+    srcs = ["sockaddr_resolver_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -56,8 +56,8 @@
 
 grpc_cc_test(
     name = "fake_resolver_test",
-    srcs = ["fake_resolver_test.c"],
-    language = "C",
+    srcs = ["fake_resolver_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
similarity index 94%
rename from test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
rename to test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
index cefbaa8..a388b82 100644
--- a/test/core/client_channel/resolvers/dns_resolver_connectivity_test.c
+++ b/test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc
@@ -49,9 +49,10 @@
     error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Failure");
   } else {
     gpr_mu_unlock(&g_mu);
-    *addrs = gpr_malloc(sizeof(**addrs));
+    *addrs = static_cast<grpc_resolved_addresses*>(gpr_malloc(sizeof(**addrs)));
     (*addrs)->naddrs = 1;
-    (*addrs)->addrs = gpr_malloc(sizeof(*(*addrs)->addrs));
+    (*addrs)->addrs = static_cast<grpc_resolved_address*>(
+        gpr_malloc(sizeof(*(*addrs)->addrs)));
     (*addrs)->addrs[0].len = 123;
   }
   GRPC_CLOSURE_SCHED(exec_ctx, on_done, error);
@@ -95,7 +96,7 @@
 }
 
 static void on_done(grpc_exec_ctx* exec_ctx, void* ev, grpc_error* error) {
-  gpr_event_set(ev, (void*)1);
+  gpr_event_set((gpr_event*)ev, (void*)1);
 }
 
 // interleave waiting for an event with a timer check
@@ -121,7 +122,7 @@
 static void call_resolver_next_now_lock_taken(grpc_exec_ctx* exec_ctx,
                                               void* arg,
                                               grpc_error* error_unused) {
-  next_args* a = arg;
+  next_args* a = static_cast<next_args*>(arg);
   grpc_resolver_next_locked(exec_ctx, a->resolver, a->result, a->on_complete);
   gpr_free(a);
 }
@@ -130,7 +131,7 @@
                                              grpc_resolver* resolver,
                                              grpc_channel_args** result,
                                              grpc_closure* on_complete) {
-  next_args* a = gpr_malloc(sizeof(*a));
+  next_args* a = static_cast<next_args*>(gpr_malloc(sizeof(*a)));
   a->resolver = resolver;
   a->result = result;
   a->on_complete = on_complete;
diff --git a/test/core/client_channel/resolvers/dns_resolver_test.c b/test/core/client_channel/resolvers/dns_resolver_test.cc
similarity index 100%
rename from test/core/client_channel/resolvers/dns_resolver_test.c
rename to test/core/client_channel/resolvers/dns_resolver_test.cc
diff --git a/test/core/client_channel/resolvers/fake_resolver_test.c b/test/core/client_channel/resolvers/fake_resolver_test.cc
similarity index 97%
rename from test/core/client_channel/resolvers/fake_resolver_test.c
rename to test/core/client_channel/resolvers/fake_resolver_test.cc
index 094cd72..06e8ebd 100644
--- a/test/core/client_channel/resolvers/fake_resolver_test.c
+++ b/test/core/client_channel/resolvers/fake_resolver_test.cc
@@ -56,7 +56,7 @@
 } on_resolution_arg;
 
 void on_resolution_cb(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
-  on_resolution_arg* res = arg;
+  on_resolution_arg* res = static_cast<on_resolution_arg*>(arg);
   // We only check the addresses channel arg because that's the only one
   // explicitly set by the test via
   // grpc_fake_resolver_response_generator_set_response.
@@ -84,7 +84,7 @@
   // Setup expectations.
   grpc_uri* uris[] = {grpc_uri_parse(&exec_ctx, "ipv4:10.2.1.1:1234", true),
                       grpc_uri_parse(&exec_ctx, "ipv4:127.0.0.1:4321", true)};
-  char* balancer_names[] = {"name1", "name2"};
+  const char* balancer_names[] = {"name1", "name2"};
   const bool is_balancer[] = {true, false};
   grpc_lb_addresses* addresses = grpc_lb_addresses_create(3, NULL);
   for (size_t i = 0; i < GPR_ARRAY_SIZE(uris); ++i) {
@@ -117,7 +117,7 @@
   // Setup update.
   grpc_uri* uris_update[] = {
       grpc_uri_parse(&exec_ctx, "ipv4:192.168.1.0:31416", true)};
-  char* balancer_names_update[] = {"name3"};
+  const char* balancer_names_update[] = {"name3"};
   const bool is_balancer_update[] = {false};
   grpc_lb_addresses* addresses_update = grpc_lb_addresses_create(1, NULL);
   for (size_t i = 0; i < GPR_ARRAY_SIZE(uris_update); ++i) {
diff --git a/test/core/client_channel/resolvers/sockaddr_resolver_test.c b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc
similarity index 97%
rename from test/core/client_channel/resolvers/sockaddr_resolver_test.c
rename to test/core/client_channel/resolvers/sockaddr_resolver_test.cc
index 99ba84c..028a786 100644
--- a/test/core/client_channel/resolvers/sockaddr_resolver_test.c
+++ b/test/core/client_channel/resolvers/sockaddr_resolver_test.cc
@@ -36,7 +36,7 @@
 } on_resolution_arg;
 
 void on_resolution_cb(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
-  on_resolution_arg* res = arg;
+  on_resolution_arg* res = static_cast<on_resolution_arg*>(arg);
   grpc_channel_args_destroy(exec_ctx, res->resolver_result);
 }
 
diff --git a/test/core/client_channel/uri_fuzzer_test.c b/test/core/client_channel/uri_fuzzer_test.cc
similarity index 89%
rename from test/core/client_channel/uri_fuzzer_test.c
rename to test/core/client_channel/uri_fuzzer_test.cc
index b4de092..ba31793 100644
--- a/test/core/client_channel/uri_fuzzer_test.c
+++ b/test/core/client_channel/uri_fuzzer_test.cc
@@ -28,8 +28,8 @@
 bool squelch = true;
 bool leak_check = true;
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-  char* s = gpr_malloc(size + 1);
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  char* s = static_cast<char*>(gpr_malloc(size + 1));
   memcpy(s, data, size);
   s[size] = 0;
 
diff --git a/test/core/client_channel/uri_parser_test.c b/test/core/client_channel/uri_parser_test.cc
similarity index 100%
rename from test/core/client_channel/uri_parser_test.c
rename to test/core/client_channel/uri_parser_test.cc
diff --git a/test/core/compression/BUILD b/test/core/compression/BUILD
index 1ab6e35..ee71eec 100644
--- a/test/core/compression/BUILD
+++ b/test/core/compression/BUILD
@@ -20,8 +20,8 @@
 
 grpc_cc_test(
     name = "algorithm_test",
-    srcs = ["algorithm_test.c"],
-    language = "C",
+    srcs = ["algorithm_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -32,8 +32,8 @@
 
 grpc_cc_test(
     name = "compression_test",
-    srcs = ["compression_test.c"],
-    language = "C",
+    srcs = ["compression_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -44,8 +44,8 @@
 
 grpc_cc_test(
     name = "message_compress_test",
-    srcs = ["message_compress_test.c"],
-    language = "C",
+    srcs = ["message_compress_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/compression/algorithm_test.c b/test/core/compression/algorithm_test.cc
similarity index 88%
rename from test/core/compression/algorithm_test.c
rename to test/core/compression/algorithm_test.cc
index e711101..bc3af41 100644
--- a/test/core/compression/algorithm_test.c
+++ b/test/core/compression/algorithm_test.cc
@@ -69,8 +69,10 @@
 
   GPR_ASSERT(grpc_compression_algorithm_name(GRPC_COMPRESS_ALGORITHMS_COUNT,
                                              NULL) == 0);
-  GPR_ASSERT(grpc_compression_algorithm_name(GRPC_COMPRESS_ALGORITHMS_COUNT + 1,
-                                             NULL) == 0);
+  GPR_ASSERT(
+      grpc_compression_algorithm_name(static_cast<grpc_compression_algorithm>(
+                                          GRPC_COMPRESS_ALGORITHMS_COUNT + 1),
+                                      NULL) == 0);
   mdstr = grpc_slice_from_static_string("this-is-an-invalid-algorithm");
   GPR_ASSERT(grpc_compression_algorithm_from_slice(mdstr) ==
              GRPC_COMPRESS_ALGORITHMS_COUNT);
@@ -78,7 +80,8 @@
       grpc_compression_algorithm_slice(GRPC_COMPRESS_ALGORITHMS_COUNT),
       grpc_empty_slice()));
   GPR_ASSERT(grpc_slice_eq(
-      grpc_compression_algorithm_slice(GRPC_COMPRESS_ALGORITHMS_COUNT + 1),
+      grpc_compression_algorithm_slice(static_cast<grpc_compression_algorithm>(
+          static_cast<int>(GRPC_COMPRESS_ALGORITHMS_COUNT) + 1)),
       grpc_empty_slice()));
   grpc_slice_unref_internal(&exec_ctx, mdstr);
   grpc_exec_ctx_finish(&exec_ctx);
diff --git a/test/core/compression/compression_test.c b/test/core/compression/compression_test.cc
similarity index 93%
rename from test/core/compression/compression_test.c
rename to test/core/compression/compression_test.cc
index b6ab0bb..a1a9441 100644
--- a/test/core/compression/compression_test.c
+++ b/test/core/compression/compression_test.cc
@@ -181,21 +181,27 @@
 
   grpc_compression_options_init(&options);
   for (algorithm = GRPC_COMPRESS_NONE;
-       algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT; algorithm++) {
+       algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT;
+       algorithm = static_cast<grpc_compression_algorithm>(
+           static_cast<int>(algorithm) + 1)) {
     /* all algorithms are enabled by default */
     GPR_ASSERT(grpc_compression_options_is_algorithm_enabled(&options,
                                                              algorithm) != 0);
   }
   /* disable one by one */
   for (algorithm = GRPC_COMPRESS_NONE;
-       algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT; algorithm++) {
+       algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT;
+       algorithm = static_cast<grpc_compression_algorithm>(
+           static_cast<int>(algorithm) + 1)) {
     grpc_compression_options_disable_algorithm(&options, algorithm);
     GPR_ASSERT(grpc_compression_options_is_algorithm_enabled(&options,
                                                              algorithm) == 0);
   }
   /* re-enable one by one */
   for (algorithm = GRPC_COMPRESS_NONE;
-       algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT; algorithm++) {
+       algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT;
+       algorithm = static_cast<grpc_compression_algorithm>(
+           static_cast<int>(algorithm) + 1)) {
     grpc_compression_options_enable_algorithm(&options, algorithm);
     GPR_ASSERT(grpc_compression_options_is_algorithm_enabled(&options,
                                                              algorithm) != 0);
diff --git a/test/core/compression/message_compress_test.c b/test/core/compression/message_compress_test.cc
similarity index 89%
rename from test/core/compression/message_compress_test.c
rename to test/core/compression/message_compress_test.cc
index 5afa8af..676415b 100644
--- a/test/core/compression/message_compress_test.c
+++ b/test/core/compression/message_compress_test.cc
@@ -149,16 +149,17 @@
 static void test_tiny_data_compress(void) {
   grpc_slice_buffer input;
   grpc_slice_buffer output;
-  grpc_compression_algorithm i;
 
   grpc_slice_buffer_init(&input);
   grpc_slice_buffer_init(&output);
   grpc_slice_buffer_add(&input, create_test_value(ONE_A));
 
-  for (i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) {
+  for (int i = 0; i < GRPC_COMPRESS_ALGORITHMS_COUNT; i++) {
     if (i == GRPC_COMPRESS_NONE) continue;
     grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-    GPR_ASSERT(0 == grpc_msg_compress(&exec_ctx, i, &input, &output));
+    GPR_ASSERT(0 == grpc_msg_compress(
+                        &exec_ctx, static_cast<grpc_compression_algorithm>(i),
+                        &input, &output));
     grpc_exec_ctx_finish(&exec_ctx);
     GPR_ASSERT(1 == output.count);
   }
@@ -253,8 +254,10 @@
                                      &input, &output);
   GPR_ASSERT(0 == was_compressed);
 
-  was_compressed = grpc_msg_compress(
-      &exec_ctx, GRPC_COMPRESS_ALGORITHMS_COUNT + 123, &input, &output);
+  was_compressed = grpc_msg_compress(&exec_ctx,
+                                     static_cast<grpc_compression_algorithm>(
+                                         GRPC_COMPRESS_ALGORITHMS_COUNT + 123),
+                                     &input, &output);
   GPR_ASSERT(0 == was_compressed);
   grpc_exec_ctx_finish(&exec_ctx);
 
@@ -277,8 +280,11 @@
       &exec_ctx, GRPC_COMPRESS_ALGORITHMS_COUNT, &input, &output);
   GPR_ASSERT(0 == was_decompressed);
 
-  was_decompressed = grpc_msg_decompress(
-      &exec_ctx, GRPC_COMPRESS_ALGORITHMS_COUNT + 123, &input, &output);
+  was_decompressed =
+      grpc_msg_decompress(&exec_ctx,
+                          static_cast<grpc_compression_algorithm>(
+                              GRPC_COMPRESS_ALGORITHMS_COUNT + 123),
+                          &input, &output);
   GPR_ASSERT(0 == was_decompressed);
   grpc_exec_ctx_finish(&exec_ctx);
 
@@ -301,8 +307,13 @@
     for (j = 0; j < GPR_ARRAY_SIZE(uncompressed_split_modes); j++) {
       for (k = 0; k < GPR_ARRAY_SIZE(compressed_split_modes); k++) {
         for (m = 0; m < TEST_VALUE_COUNT; m++) {
-          grpc_slice slice = create_test_value(m);
-          assert_passthrough(slice, i, j, k, get_compressability(m, i));
+          grpc_slice slice = create_test_value(static_cast<test_value>(m));
+          assert_passthrough(
+              slice, static_cast<grpc_compression_algorithm>(i),
+              static_cast<grpc_slice_split_mode>(j),
+              static_cast<grpc_slice_split_mode>(k),
+              get_compressability(static_cast<test_value>(m),
+                                  static_cast<grpc_compression_algorithm>(i)));
           grpc_slice_unref(slice);
         }
       }
diff --git a/test/core/compression/stream_compression_test.c b/test/core/compression/stream_compression_test.cc
similarity index 98%
rename from test/core/compression/stream_compression_test.c
rename to test/core/compression/stream_compression_test.cc
index 568f9f5..7cb583b 100644
--- a/test/core/compression/stream_compression_test.c
+++ b/test/core/compression/stream_compression_test.cc
@@ -134,7 +134,8 @@
 #define LARGE_DATA_SIZE (1024 * 1024)
 static void
 test_stream_compression_simple_compress_decompress_with_large_data() {
-  char* test_str = gpr_malloc(LARGE_DATA_SIZE * sizeof(char));
+  char* test_str =
+      static_cast<char*>(gpr_malloc(LARGE_DATA_SIZE * sizeof(char)));
   generate_random_payload(test_str, LARGE_DATA_SIZE);
   grpc_slice_buffer source, relay, sink;
   grpc_slice_buffer_init(&source);
diff --git a/test/core/debug/stats_test.cc b/test/core/debug/stats_test.cc
index c1011de..c4b0d50 100644
--- a/test/core/debug/stats_test.cc
+++ b/test/core/debug/stats_test.cc
@@ -16,9 +16,7 @@
  *
  */
 
-extern "C" {
 #include "src/core/lib/debug/stats.h"
-}
 
 #include <mutex>
 #include <thread>
diff --git a/test/core/end2end/BUILD b/test/core/end2end/BUILD
index 49bfc43..f8281bf 100644
--- a/test/core/end2end/BUILD
+++ b/test/core/end2end/BUILD
@@ -22,9 +22,9 @@
 
 grpc_cc_library(
     name = "cq_verifier",
-    srcs = ["cq_verifier.c"],
+    srcs = ["cq_verifier.cc"],
     hdrs = ["cq_verifier.h"],
-    language = "C",
+    language = "C++",
     visibility = ["//test:__subpackages__"],
     deps = [
         "//:gpr",
@@ -36,22 +36,22 @@
 grpc_cc_library(
     name = "ssl_test_data",
     srcs = [
-        "data/client_certs.c",
-        "data/server1_cert.c",
-        "data/server1_key.c",
-        "data/test_root_cert.c",
+        "data/client_certs.cc",
+        "data/server1_cert.cc",
+        "data/server1_key.cc",
+        "data/test_root_cert.cc",
     ],
     hdrs = ["data/ssl_test_data.h"],
-    language = "C",
+    language = "C++",
     visibility = ["//test:__subpackages__"],
 )
 
 
 grpc_cc_library(
     name = "http_proxy",
-    srcs = ["fixtures/http_proxy_fixture.c"],
+    srcs = ["fixtures/http_proxy_fixture.cc"],
     hdrs = ["fixtures/http_proxy_fixture.h"],
-    language = "C",
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -61,9 +61,9 @@
 
 grpc_cc_library(
     name = "proxy",
-    srcs = ["fixtures/proxy.c"],
+    srcs = ["fixtures/proxy.cc"],
     hdrs = ["fixtures/proxy.h"],
-    language = "C",
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/end2end/bad_server_response_test.c b/test/core/end2end/bad_server_response_test.cc
similarity index 100%
rename from test/core/end2end/bad_server_response_test.c
rename to test/core/end2end/bad_server_response_test.cc
diff --git a/test/core/end2end/connection_refused_test.c b/test/core/end2end/connection_refused_test.cc
similarity index 97%
rename from test/core/end2end/connection_refused_test.c
rename to test/core/end2end/connection_refused_test.cc
index bc7cd2e..cea06ae 100644
--- a/test/core/end2end/connection_refused_test.c
+++ b/test/core/end2end/connection_refused_test.cc
@@ -62,8 +62,8 @@
     GPR_ASSERT(wait_for_ready);
     grpc_arg arg;
     arg.type = GRPC_ARG_STRING;
-    arg.key = GRPC_ARG_SERVICE_CONFIG;
-    arg.value.string =
+    arg.key = const_cast<char*>(GRPC_ARG_SERVICE_CONFIG);
+    arg.value.string = const_cast<char*>(
         "{\n"
         "  \"methodConfig\": [ {\n"
         "    \"name\": [\n"
@@ -71,7 +71,7 @@
         "    ],\n"
         "    \"waitForReady\": true\n"
         "  } ]\n"
-        "}";
+        "}");
     args = grpc_channel_args_copy_and_add(args, &arg, 1);
   }
 
diff --git a/test/core/end2end/cq_verifier.c b/test/core/end2end/cq_verifier.cc
similarity index 100%
rename from test/core/end2end/cq_verifier.c
rename to test/core/end2end/cq_verifier.cc
diff --git a/test/core/end2end/cq_verifier.h b/test/core/end2end/cq_verifier.h
index 959f849..0b3b3fb 100644
--- a/test/core/end2end/cq_verifier.h
+++ b/test/core/end2end/cq_verifier.h
@@ -24,6 +24,10 @@
 #include <grpc/grpc.h>
 #include "test/core/util/test_config.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 /* A cq_verifier can verify that expected events arrive in a timely fashion
    on a single completion queue */
 
@@ -59,4 +63,8 @@
 int contains_metadata_slices(grpc_metadata_array* array, grpc_slice key,
                              grpc_slice value);
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif /* GRPC_TEST_CORE_END2END_CQ_VERIFIER_H */
diff --git a/test/core/end2end/cq_verifier_native.c b/test/core/end2end/cq_verifier_native.cc
similarity index 94%
rename from test/core/end2end/cq_verifier_native.c
rename to test/core/end2end/cq_verifier_native.cc
index f5fe349..a0a7c83 100644
--- a/test/core/end2end/cq_verifier_native.c
+++ b/test/core/end2end/cq_verifier_native.cc
@@ -31,7 +31,7 @@
 };
 
 cq_verifier* cq_verifier_create(grpc_completion_queue* cq) {
-  cq_verifier* v = gpr_malloc(sizeof(cq_verifier));
+  cq_verifier* v = static_cast<cq_verifier*>(gpr_malloc(sizeof(cq_verifier)));
   v->cq = cq;
   cq_verifier_set_first_expectation(v, NULL);
   return v;
diff --git a/test/core/end2end/cq_verifier_uv.c b/test/core/end2end/cq_verifier_uv.cc
similarity index 91%
rename from test/core/end2end/cq_verifier_uv.c
rename to test/core/end2end/cq_verifier_uv.cc
index 9f47927..e23b3ae 100644
--- a/test/core/end2end/cq_verifier_uv.c
+++ b/test/core/end2end/cq_verifier_uv.cc
@@ -43,7 +43,7 @@
 };
 
 cq_verifier* cq_verifier_create(grpc_completion_queue* cq) {
-  cq_verifier* v = gpr_malloc(sizeof(cq_verifier));
+  cq_verifier* v = static_cast<cq_verifier*>(gpr_malloc(sizeof(cq_verifier)));
   v->cq = cq;
   v->first_expectation = NULL;
   uv_timer_init(uv_default_loop(), &v->timer);
@@ -58,7 +58,7 @@
 void cq_verifier_destroy(cq_verifier* v) {
   cq_verify(v);
   uv_close((uv_handle_t*)&v->timer, timer_close_cb);
-  while ((timer_state)v->timer.data != TIMER_CLOSED) {
+  while (reinterpret_cast<timer_state>(v->timer.data) != TIMER_CLOSED) {
     uv_run(uv_default_loop(), UV_RUN_NOWAIT);
   }
   gpr_free(v);
@@ -85,7 +85,7 @@
   ev = grpc_completion_queue_next(v->cq, gpr_inf_past(GPR_CLOCK_MONOTONIC),
                                   NULL);
   // Stop the loop if the timer goes off or we get a non-timeout event
-  while (((timer_state)v->timer.data != TIMER_TRIGGERED) &&
+  while ((reinterpret_cast<timer_state>(v->timer.data) != TIMER_TRIGGERED) &&
          ev.type == GRPC_QUEUE_TIMEOUT) {
     uv_run(uv_default_loop(), UV_RUN_ONCE);
     ev = grpc_completion_queue_next(v->cq, gpr_inf_past(GPR_CLOCK_MONOTONIC),
diff --git a/test/core/end2end/data/client_certs.c b/test/core/end2end/data/client_certs.cc
similarity index 99%
rename from test/core/end2end/data/client_certs.c
rename to test/core/end2end/data/client_certs.cc
index 7877067..6e61501 100644
--- a/test/core/end2end/data/client_certs.c
+++ b/test/core/end2end/data/client_certs.cc
@@ -16,6 +16,8 @@
  *
  */
 
+#include "test/core/end2end/data/ssl_test_data.h"
+
 const char test_self_signed_client_cert[] = {
     0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
     0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
diff --git a/test/core/end2end/data/server1_cert.c b/test/core/end2end/data/server1_cert.cc
similarity index 98%
rename from test/core/end2end/data/server1_cert.c
rename to test/core/end2end/data/server1_cert.cc
index 8d14960..5e017c4 100644
--- a/test/core/end2end/data/server1_cert.c
+++ b/test/core/end2end/data/server1_cert.cc
@@ -16,6 +16,8 @@
  *
  */
 
+#include "test/core/end2end/data/ssl_test_data.h"
+
 const char test_server1_cert[] = {
     0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
     0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
diff --git a/test/core/end2end/data/server1_key.c b/test/core/end2end/data/server1_key.cc
similarity index 98%
rename from test/core/end2end/data/server1_key.c
rename to test/core/end2end/data/server1_key.cc
index eee5cc6..92a77aa 100644
--- a/test/core/end2end/data/server1_key.c
+++ b/test/core/end2end/data/server1_key.cc
@@ -16,6 +16,8 @@
  *
  */
 
+#include "test/core/end2end/data/ssl_test_data.h"
+
 const char test_server1_key[] = {
     0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x52,
     0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,
diff --git a/test/core/end2end/data/test_root_cert.c b/test/core/end2end/data/test_root_cert.cc
similarity index 98%
rename from test/core/end2end/data/test_root_cert.c
rename to test/core/end2end/data/test_root_cert.cc
index ef39ca5..81ca410 100644
--- a/test/core/end2end/data/test_root_cert.c
+++ b/test/core/end2end/data/test_root_cert.cc
@@ -16,6 +16,8 @@
  *
  */
 
+#include "test/core/end2end/data/ssl_test_data.h"
+
 const char test_root_cert[] = {
     0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
     0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
diff --git a/test/core/end2end/dualstack_socket_test.c b/test/core/end2end/dualstack_socket_test.cc
similarity index 98%
rename from test/core/end2end/dualstack_socket_test.c
rename to test/core/end2end/dualstack_socket_test.cc
index 59bb054..1e02116 100644
--- a/test/core/end2end/dualstack_socket_test.c
+++ b/test/core/end2end/dualstack_socket_test.cc
@@ -118,7 +118,8 @@
         grpc_slice_new((char*)client_host, strlen(client_host), do_nothing);
     grpc_slice_buffer_init(&uri_parts);
     grpc_slice_split(uri_slice, ",", &uri_parts);
-    hosts_with_port = gpr_malloc(sizeof(char*) * uri_parts.count);
+    hosts_with_port =
+        static_cast<char**>(gpr_malloc(sizeof(char*) * uri_parts.count));
     for (i = 0; i < uri_parts.count; i++) {
       char* uri_part_str = grpc_slice_to_c_string(uri_parts.slices[i]);
       gpr_asprintf(&hosts_with_port[i], "%s:%d", uri_part_str, port);
diff --git a/test/core/end2end/end2end_nosec_tests.c b/test/core/end2end/end2end_nosec_tests.cc
similarity index 100%
rename from test/core/end2end/end2end_nosec_tests.c
rename to test/core/end2end/end2end_nosec_tests.cc
diff --git a/test/core/end2end/end2end_test_utils.c b/test/core/end2end/end2end_test_utils.cc
similarity index 100%
rename from test/core/end2end/end2end_test_utils.c
rename to test/core/end2end/end2end_test_utils.cc
diff --git a/test/core/end2end/end2end_tests.c b/test/core/end2end/end2end_tests.cc
similarity index 100%
rename from test/core/end2end/end2end_tests.c
rename to test/core/end2end/end2end_tests.cc
diff --git a/test/core/end2end/fixtures/h2_census.c b/test/core/end2end/fixtures/h2_census.cc
similarity index 89%
rename from test/core/end2end/fixtures/h2_census.c
rename to test/core/end2end/fixtures/h2_census.cc
index 29e55ef..4213140 100644
--- a/test/core/end2end/fixtures/h2_census.c
+++ b/test/core/end2end/fixtures/h2_census.cc
@@ -44,7 +44,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -59,14 +60,15 @@
 static grpc_arg make_census_enable_arg(void) {
   grpc_arg arg;
   arg.type = GRPC_ARG_INTEGER;
-  arg.key = GRPC_ARG_ENABLE_CENSUS;
+  arg.key = const_cast<char*>(GRPC_ARG_ENABLE_CENSUS);
   arg.value.integer = 1;
   return arg;
 }
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   grpc_arg arg = make_census_enable_arg();
   client_args = grpc_channel_args_copy_and_add(client_args, &arg, 1);
   f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL);
@@ -80,7 +82,8 @@
 
 void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* server_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   grpc_arg arg = make_census_enable_arg();
   if (f->server) {
     grpc_server_destroy(f->server);
@@ -98,7 +101,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_compress.c b/test/core/end2end/fixtures/h2_compress.cc
similarity index 90%
rename from test/core/end2end/fixtures/h2_compress.c
rename to test/core/end2end/fixtures/h2_compress.cc
index a2f9a22..64e028b 100644
--- a/test/core/end2end/fixtures/h2_compress.c
+++ b/test/core/end2end/fixtures/h2_compress.cc
@@ -47,7 +47,8 @@
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
   fullstack_compression_fixture_data* ffd =
-      gpr_malloc(sizeof(fullstack_compression_fixture_data));
+      static_cast<fullstack_compression_fixture_data*>(
+          gpr_malloc(sizeof(fullstack_compression_fixture_data)));
   memset(ffd, 0, sizeof(fullstack_compression_fixture_data));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -62,7 +63,8 @@
 
 void chttp2_init_client_fullstack_compression(grpc_end2end_test_fixture* f,
                                               grpc_channel_args* client_args) {
-  fullstack_compression_fixture_data* ffd = f->fixture_data;
+  fullstack_compression_fixture_data* ffd =
+      static_cast<fullstack_compression_fixture_data*>(f->fixture_data);
   if (ffd->client_args_compression != NULL) {
     grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
     grpc_channel_args_destroy(&exec_ctx, ffd->client_args_compression);
@@ -76,7 +78,8 @@
 
 void chttp2_init_server_fullstack_compression(grpc_end2end_test_fixture* f,
                                               grpc_channel_args* server_args) {
-  fullstack_compression_fixture_data* ffd = f->fixture_data;
+  fullstack_compression_fixture_data* ffd =
+      static_cast<fullstack_compression_fixture_data*>(f->fixture_data);
   if (ffd->server_args_compression != NULL) {
     grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
     grpc_channel_args_destroy(&exec_ctx, ffd->server_args_compression);
@@ -95,7 +98,8 @@
 
 void chttp2_tear_down_fullstack_compression(grpc_end2end_test_fixture* f) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  fullstack_compression_fixture_data* ffd = f->fixture_data;
+  fullstack_compression_fixture_data* ffd =
+      static_cast<fullstack_compression_fixture_data*>(f->fixture_data);
   grpc_channel_args_destroy(&exec_ctx, ffd->client_args_compression);
   grpc_channel_args_destroy(&exec_ctx, ffd->server_args_compression);
   gpr_free(ffd->localaddr);
diff --git a/test/core/end2end/fixtures/h2_fakesec.c b/test/core/end2end/fixtures/h2_fakesec.cc
similarity index 91%
rename from test/core/end2end/fixtures/h2_fakesec.c
rename to test/core/end2end/fixtures/h2_fakesec.cc
index 74fec93..fbf2f49 100644
--- a/test/core/end2end/fixtures/h2_fakesec.c
+++ b/test/core/end2end/fixtures/h2_fakesec.cc
@@ -39,7 +39,8 @@
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
   fullstack_secure_fixture_data* ffd =
-      gpr_malloc(sizeof(fullstack_secure_fixture_data));
+      static_cast<fullstack_secure_fixture_data*>(
+          gpr_malloc(sizeof(fullstack_secure_fixture_data)));
 
   memset(&f, 0, sizeof(f));
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -62,7 +63,8 @@
 static void chttp2_init_client_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* client_args,
     grpc_channel_credentials* creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   f->client =
       grpc_secure_channel_create(creds, ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client != NULL);
@@ -72,7 +74,8 @@
 static void chttp2_init_server_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* server_args,
     grpc_server_credentials* server_creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -85,7 +88,8 @@
 }
 
 void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_fd.c b/test/core/end2end/fixtures/h2_fd.cc
similarity index 93%
rename from test/core/end2end/fixtures/h2_fd.c
rename to test/core/end2end/fixtures/h2_fd.cc
index 337ae89..7005b96 100644
--- a/test/core/end2end/fixtures/h2_fd.c
+++ b/test/core/end2end/fixtures/h2_fd.cc
@@ -52,7 +52,8 @@
 
 static grpc_end2end_test_fixture chttp2_create_fixture_socketpair(
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
-  sp_fixture_data* fixture_data = gpr_malloc(sizeof(*fixture_data));
+  sp_fixture_data* fixture_data =
+      static_cast<sp_fixture_data*>(gpr_malloc(sizeof(*fixture_data)));
 
   grpc_end2end_test_fixture f;
   memset(&f, 0, sizeof(f));
@@ -68,7 +69,7 @@
 static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* client_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  sp_fixture_data* sfd = f->fixture_data;
+  sp_fixture_data* sfd = static_cast<sp_fixture_data*>(f->fixture_data);
 
   GPR_ASSERT(!f->client);
   f->client = grpc_insecure_channel_create_from_fd(
@@ -81,7 +82,7 @@
 static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* server_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  sp_fixture_data* sfd = f->fixture_data;
+  sp_fixture_data* sfd = static_cast<sp_fixture_data*>(f->fixture_data);
   GPR_ASSERT(!f->server);
   f->server = grpc_server_create(server_args, NULL);
   GPR_ASSERT(f->server);
diff --git a/test/core/end2end/fixtures/h2_full+pipe.c b/test/core/end2end/fixtures/h2_full+pipe.cc
similarity index 89%
rename from test/core/end2end/fixtures/h2_full+pipe.c
rename to test/core/end2end/fixtures/h2_full+pipe.cc
index d36ba36..0dd650b 100644
--- a/test/core/end2end/fixtures/h2_full+pipe.c
+++ b/test/core/end2end/fixtures/h2_full+pipe.cc
@@ -49,7 +49,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -63,14 +64,16 @@
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client);
 }
 
 void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* server_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -81,7 +84,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_full+trace.c b/test/core/end2end/fixtures/h2_full+trace.cc
similarity index 90%
rename from test/core/end2end/fixtures/h2_full+trace.c
rename to test/core/end2end/fixtures/h2_full+trace.cc
index 62195f3..21372c6 100644
--- a/test/core/end2end/fixtures/h2_full+trace.c
+++ b/test/core/end2end/fixtures/h2_full+trace.cc
@@ -49,7 +49,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -63,14 +64,16 @@
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client);
 }
 
 void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* server_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -81,7 +84,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_full+workarounds.c b/test/core/end2end/fixtures/h2_full+workarounds.cc
similarity index 88%
rename from test/core/end2end/fixtures/h2_full+workarounds.c
rename to test/core/end2end/fixtures/h2_full+workarounds.cc
index 0a331b0..ebffe21 100644
--- a/test/core/end2end/fixtures/h2_full+workarounds.c
+++ b/test/core/end2end/fixtures/h2_full+workarounds.cc
@@ -37,7 +37,7 @@
 #include "test/core/util/test_config.h"
 
 static char* workarounds_arg[GRPC_MAX_WORKAROUND_ID] = {
-    GRPC_ARG_WORKAROUND_CRONET_COMPRESSION};
+    const_cast<char*>(GRPC_ARG_WORKAROUND_CRONET_COMPRESSION)};
 
 typedef struct fullstack_fixture_data {
   char* localaddr;
@@ -47,7 +47,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -61,7 +62,8 @@
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client);
 }
@@ -70,7 +72,8 @@
                                   grpc_channel_args* server_args) {
   int i;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   grpc_arg args[GRPC_MAX_WORKAROUND_ID];
   for (i = 0; i < GRPC_MAX_WORKAROUND_ID; i++) {
     args[i].key = workarounds_arg[i];
@@ -91,7 +94,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_full.c b/test/core/end2end/fixtures/h2_full.cc
similarity index 88%
rename from test/core/end2end/fixtures/h2_full.c
rename to test/core/end2end/fixtures/h2_full.cc
index 496ca63..895af67 100644
--- a/test/core/end2end/fixtures/h2_full.c
+++ b/test/core/end2end/fixtures/h2_full.cc
@@ -43,7 +43,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -57,14 +58,16 @@
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client);
 }
 
 void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* server_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -75,7 +78,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_http_proxy.c b/test/core/end2end/fixtures/h2_http_proxy.cc
similarity index 90%
rename from test/core/end2end/fixtures/h2_http_proxy.c
rename to test/core/end2end/fixtures/h2_http_proxy.cc
index dd3ccf3..a67ce82 100644
--- a/test/core/end2end/fixtures/h2_http_proxy.c
+++ b/test/core/end2end/fixtures/h2_http_proxy.cc
@@ -47,7 +47,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   memset(&f, 0, sizeof(f));
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   const int server_port = grpc_pick_unused_port_or_die();
   gpr_join_host_port(&ffd->server_addr, "localhost", server_port);
 
@@ -64,7 +65,8 @@
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   char* proxy_uri;
 
   /* If testing for proxy auth, add credentials to proxy uri */
@@ -85,7 +87,8 @@
 
 void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* server_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -96,7 +99,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   gpr_free(ffd->server_addr);
   grpc_end2end_http_proxy_destroy(ffd->proxy);
   gpr_free(ffd);
diff --git a/test/core/end2end/fixtures/h2_load_reporting.c b/test/core/end2end/fixtures/h2_load_reporting.cc
similarity index 89%
rename from test/core/end2end/fixtures/h2_load_reporting.c
rename to test/core/end2end/fixtures/h2_load_reporting.cc
index 2332396..b402fc5 100644
--- a/test/core/end2end/fixtures/h2_load_reporting.c
+++ b/test/core/end2end/fixtures/h2_load_reporting.cc
@@ -45,8 +45,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
-  load_reporting_fixture_data* ffd =
-      gpr_malloc(sizeof(load_reporting_fixture_data));
+  load_reporting_fixture_data* ffd = static_cast<load_reporting_fixture_data*>(
+      gpr_malloc(sizeof(load_reporting_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -60,14 +60,16 @@
 
 void chttp2_init_client_load_reporting(grpc_end2end_test_fixture* f,
                                        grpc_channel_args* client_args) {
-  load_reporting_fixture_data* ffd = f->fixture_data;
+  load_reporting_fixture_data* ffd =
+      static_cast<load_reporting_fixture_data*>(f->fixture_data);
   f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client);
 }
 
 void chttp2_init_server_load_reporting(grpc_end2end_test_fixture* f,
                                        grpc_channel_args* server_args) {
-  load_reporting_fixture_data* ffd = f->fixture_data;
+  load_reporting_fixture_data* ffd =
+      static_cast<load_reporting_fixture_data*>(f->fixture_data);
   grpc_arg arg = grpc_load_reporting_enable_arg();
   if (f->server) {
     grpc_server_destroy(f->server);
@@ -85,7 +87,8 @@
 }
 
 void chttp2_tear_down_load_reporting(grpc_end2end_test_fixture* f) {
-  load_reporting_fixture_data* ffd = f->fixture_data;
+  load_reporting_fixture_data* ffd =
+      static_cast<load_reporting_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_oauth2.c b/test/core/end2end/fixtures/h2_oauth2.cc
similarity index 91%
rename from test/core/end2end/fixtures/h2_oauth2.c
rename to test/core/end2end/fixtures/h2_oauth2.cc
index 6a4173b..88e590a 100644
--- a/test/core/end2end/fixtures/h2_oauth2.c
+++ b/test/core/end2end/fixtures/h2_oauth2.cc
@@ -94,7 +94,8 @@
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
   fullstack_secure_fixture_data* ffd =
-      gpr_malloc(sizeof(fullstack_secure_fixture_data));
+      static_cast<fullstack_secure_fixture_data*>(
+          gpr_malloc(sizeof(fullstack_secure_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -109,7 +110,8 @@
 static void chttp2_init_client_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* client_args,
     grpc_channel_credentials* creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   f->client =
       grpc_secure_channel_create(creds, ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client != NULL);
@@ -119,7 +121,8 @@
 static void chttp2_init_server_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* server_args,
     grpc_server_credentials* server_creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -132,7 +135,8 @@
 }
 
 void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
@@ -146,9 +150,10 @@
       &exec_ctx, "authorization", oauth2_md, true /* is_async */);
   grpc_channel_credentials* ssl_oauth2_creds =
       grpc_composite_channel_credentials_create(ssl_creds, oauth2_creds, NULL);
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args* new_client_args =
       grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
   chttp2_init_client_secure_fullstack(f, new_client_args, ssl_oauth2_creds);
@@ -177,7 +182,8 @@
 }
 
 static grpc_auth_metadata_processor test_processor_create(int failing) {
-  test_processor_state* s = gpr_malloc(sizeof(*s));
+  test_processor_state* s =
+      static_cast<test_processor_state*>(gpr_malloc(sizeof(*s)));
   grpc_auth_metadata_processor result;
   s->pseudo_refcount = 1;
   result.state = s;
diff --git a/test/core/end2end/fixtures/h2_proxy.c b/test/core/end2end/fixtures/h2_proxy.cc
similarity index 90%
rename from test/core/end2end/fixtures/h2_proxy.c
rename to test/core/end2end/fixtures/h2_proxy.cc
index 96c9b6e..03ffa02 100644
--- a/test/core/end2end/fixtures/h2_proxy.c
+++ b/test/core/end2end/fixtures/h2_proxy.cc
@@ -58,7 +58,8 @@
 static grpc_end2end_test_fixture chttp2_create_fixture_fullstack(
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   ffd->proxy = grpc_end2end_proxy_create(&proxy_def, client_args, server_args);
@@ -72,7 +73,8 @@
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   f->client = grpc_insecure_channel_create(
       grpc_end2end_proxy_get_client_target(ffd->proxy), client_args, NULL);
   GPR_ASSERT(f->client);
@@ -80,7 +82,8 @@
 
 void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* server_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -92,7 +95,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   grpc_end2end_proxy_destroy(ffd->proxy);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.c b/test/core/end2end/fixtures/h2_sockpair+trace.cc
similarity index 91%
rename from test/core/end2end/fixtures/h2_sockpair+trace.c
rename to test/core/end2end/fixtures/h2_sockpair+trace.cc
index fa2e6c6..c5dfe40 100644
--- a/test/core/end2end/fixtures/h2_sockpair+trace.c
+++ b/test/core/end2end/fixtures/h2_sockpair+trace.cc
@@ -49,9 +49,9 @@
    connected_channel without a client_channel */
 
 static void server_setup_transport(void* ts, grpc_transport* transport) {
-  grpc_end2end_test_fixture* f = ts;
+  grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts);
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_endpoint_add_to_pollset(&exec_ctx, sfd->server, grpc_cq_pollset(f->cq));
   grpc_server_setup_transport(&exec_ctx, f->server, transport, NULL,
                               grpc_server_get_channel_args(f->server));
@@ -65,7 +65,7 @@
 
 static void client_setup_transport(grpc_exec_ctx* exec_ctx, void* ts,
                                    grpc_transport* transport) {
-  sp_client_setup* cs = ts;
+  sp_client_setup* cs = static_cast<sp_client_setup*>(ts);
 
   cs->f->client =
       grpc_channel_create(exec_ctx, "socketpair-target", cs->client_args,
@@ -74,7 +74,8 @@
 
 static grpc_end2end_test_fixture chttp2_create_fixture_socketpair(
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
-  grpc_endpoint_pair* sfd = gpr_malloc(sizeof(grpc_endpoint_pair));
+  grpc_endpoint_pair* sfd =
+      static_cast<grpc_endpoint_pair*>(gpr_malloc(sizeof(grpc_endpoint_pair)));
 
   grpc_end2end_test_fixture f;
   memset(&f, 0, sizeof(f));
@@ -90,7 +91,7 @@
 static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* client_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_transport* transport;
   sp_client_setup cs;
   cs.client_args = client_args;
@@ -106,7 +107,7 @@
 static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* server_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_transport* transport;
   GPR_ASSERT(!f->server);
   f->server = grpc_server_create(server_args, NULL);
diff --git a/test/core/end2end/fixtures/h2_sockpair.c b/test/core/end2end/fixtures/h2_sockpair.cc
similarity index 90%
rename from test/core/end2end/fixtures/h2_sockpair.c
rename to test/core/end2end/fixtures/h2_sockpair.cc
index 024b457..f07722e 100644
--- a/test/core/end2end/fixtures/h2_sockpair.c
+++ b/test/core/end2end/fixtures/h2_sockpair.cc
@@ -43,9 +43,9 @@
    connected_channel without a client_channel */
 
 static void server_setup_transport(void* ts, grpc_transport* transport) {
-  grpc_end2end_test_fixture* f = ts;
+  grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts);
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_endpoint_add_to_pollset(&exec_ctx, sfd->server, grpc_cq_pollset(f->cq));
   grpc_server_setup_transport(&exec_ctx, f->server, transport, NULL,
                               grpc_server_get_channel_args(f->server));
@@ -59,7 +59,7 @@
 
 static void client_setup_transport(grpc_exec_ctx* exec_ctx, void* ts,
                                    grpc_transport* transport) {
-  sp_client_setup* cs = ts;
+  sp_client_setup* cs = static_cast<sp_client_setup*>(ts);
 
   cs->f->client =
       grpc_channel_create(exec_ctx, "socketpair-target", cs->client_args,
@@ -68,7 +68,8 @@
 
 static grpc_end2end_test_fixture chttp2_create_fixture_socketpair(
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
-  grpc_endpoint_pair* sfd = gpr_malloc(sizeof(grpc_endpoint_pair));
+  grpc_endpoint_pair* sfd =
+      static_cast<grpc_endpoint_pair*>(gpr_malloc(sizeof(grpc_endpoint_pair)));
 
   grpc_end2end_test_fixture f;
   memset(&f, 0, sizeof(f));
@@ -84,7 +85,7 @@
 static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* client_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_transport* transport;
   sp_client_setup cs;
   cs.client_args = client_args;
@@ -100,7 +101,7 @@
 static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* server_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_transport* transport;
   GPR_ASSERT(!f->server);
   f->server = grpc_server_create(server_args, NULL);
diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.c b/test/core/end2end/fixtures/h2_sockpair_1byte.cc
similarity index 83%
rename from test/core/end2end/fixtures/h2_sockpair_1byte.c
rename to test/core/end2end/fixtures/h2_sockpair_1byte.cc
index f8ab7e7..7d00c69 100644
--- a/test/core/end2end/fixtures/h2_sockpair_1byte.c
+++ b/test/core/end2end/fixtures/h2_sockpair_1byte.cc
@@ -43,9 +43,9 @@
    connected_channel without a client_channel */
 
 static void server_setup_transport(void* ts, grpc_transport* transport) {
-  grpc_end2end_test_fixture* f = ts;
+  grpc_end2end_test_fixture* f = static_cast<grpc_end2end_test_fixture*>(ts);
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_endpoint_add_to_pollset(&exec_ctx, sfd->server, grpc_cq_pollset(f->cq));
   grpc_server_setup_transport(&exec_ctx, f->server, transport, NULL,
                               grpc_server_get_channel_args(f->server));
@@ -59,7 +59,7 @@
 
 static void client_setup_transport(grpc_exec_ctx* exec_ctx, void* ts,
                                    grpc_transport* transport) {
-  sp_client_setup* cs = ts;
+  sp_client_setup* cs = static_cast<sp_client_setup*>(ts);
 
   cs->f->client =
       grpc_channel_create(exec_ctx, "socketpair-target", cs->client_args,
@@ -68,7 +68,8 @@
 
 static grpc_end2end_test_fixture chttp2_create_fixture_socketpair(
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
-  grpc_endpoint_pair* sfd = gpr_malloc(sizeof(grpc_endpoint_pair));
+  grpc_endpoint_pair* sfd =
+      static_cast<grpc_endpoint_pair*>(gpr_malloc(sizeof(grpc_endpoint_pair)));
 
   grpc_end2end_test_fixture f;
   memset(&f, 0, sizeof(f));
@@ -76,16 +77,17 @@
   f.cq = grpc_completion_queue_create_for_next(NULL);
   f.shutdown_cq = grpc_completion_queue_create_for_pluck(NULL);
 
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = 1},
-                  {.key = GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = 1},
-                  {.key = GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = 1}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[3];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER;
+  a[0].value.integer = 1;
+  a[1].key = const_cast<char*>(GRPC_ARG_TCP_MIN_READ_CHUNK_SIZE);
+  a[1].type = GRPC_ARG_INTEGER;
+  a[1].value.integer = 1;
+  a[2].key = const_cast<char*>(GRPC_ARG_TCP_MAX_READ_CHUNK_SIZE);
+  a[2].type = GRPC_ARG_INTEGER;
+  a[2].value.integer = 1;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   *sfd = grpc_iomgr_create_endpoint_pair("fixture", &args);
 
   return f;
@@ -94,7 +96,7 @@
 static void chttp2_init_client_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* client_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_transport* transport;
   sp_client_setup cs;
   cs.client_args = client_args;
@@ -110,7 +112,7 @@
 static void chttp2_init_server_socketpair(grpc_end2end_test_fixture* f,
                                           grpc_channel_args* server_args) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_endpoint_pair* sfd = f->fixture_data;
+  grpc_endpoint_pair* sfd = static_cast<grpc_endpoint_pair*>(f->fixture_data);
   grpc_transport* transport;
   GPR_ASSERT(!f->server);
   f->server = grpc_server_create(server_args, NULL);
diff --git a/test/core/end2end/fixtures/h2_ssl.c b/test/core/end2end/fixtures/h2_ssl.cc
similarity index 90%
rename from test/core/end2end/fixtures/h2_ssl.c
rename to test/core/end2end/fixtures/h2_ssl.cc
index 10e2ce0..70daefd 100644
--- a/test/core/end2end/fixtures/h2_ssl.c
+++ b/test/core/end2end/fixtures/h2_ssl.cc
@@ -43,7 +43,8 @@
   grpc_end2end_test_fixture f;
   int port = grpc_pick_unused_port_or_die();
   fullstack_secure_fixture_data* ffd =
-      gpr_malloc(sizeof(fullstack_secure_fixture_data));
+      static_cast<fullstack_secure_fixture_data*>(
+          gpr_malloc(sizeof(fullstack_secure_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_join_host_port(&ffd->localaddr, "localhost", port);
@@ -66,7 +67,8 @@
 static void chttp2_init_client_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* client_args,
     grpc_channel_credentials* creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   f->client =
       grpc_secure_channel_create(creds, ffd->localaddr, client_args, NULL);
   GPR_ASSERT(f->client != NULL);
@@ -76,7 +78,8 @@
 static void chttp2_init_server_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* server_args,
     grpc_server_credentials* server_creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -89,7 +92,8 @@
 }
 
 void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
@@ -98,9 +102,10 @@
     grpc_end2end_test_fixture* f, grpc_channel_args* client_args) {
   grpc_channel_credentials* ssl_creds =
       grpc_ssl_credentials_create(NULL, NULL, NULL);
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args* new_client_args =
       grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
   chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds);
diff --git a/test/core/end2end/fixtures/h2_ssl_proxy.c b/test/core/end2end/fixtures/h2_ssl_proxy.cc
similarity index 90%
rename from test/core/end2end/fixtures/h2_ssl_proxy.c
rename to test/core/end2end/fixtures/h2_ssl_proxy.cc
index 1530707..b3488a2 100644
--- a/test/core/end2end/fixtures/h2_ssl_proxy.c
+++ b/test/core/end2end/fixtures/h2_ssl_proxy.cc
@@ -56,9 +56,10 @@
   grpc_channel* channel;
   grpc_channel_credentials* ssl_creds =
       grpc_ssl_credentials_create(NULL, NULL, NULL);
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args* new_client_args =
       grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
   channel =
@@ -79,7 +80,8 @@
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
   fullstack_secure_fixture_data* ffd =
-      gpr_malloc(sizeof(fullstack_secure_fixture_data));
+      static_cast<fullstack_secure_fixture_data*>(
+          gpr_malloc(sizeof(fullstack_secure_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   ffd->proxy = grpc_end2end_proxy_create(&proxy_def, client_args, server_args);
@@ -102,7 +104,8 @@
 static void chttp2_init_client_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* client_args,
     grpc_channel_credentials* creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   f->client = grpc_secure_channel_create(
       creds, grpc_end2end_proxy_get_client_target(ffd->proxy), client_args,
       NULL);
@@ -113,7 +116,8 @@
 static void chttp2_init_server_secure_fullstack(
     grpc_end2end_test_fixture* f, grpc_channel_args* server_args,
     grpc_server_credentials* server_creds) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -126,7 +130,8 @@
 }
 
 void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_secure_fixture_data* ffd = f->fixture_data;
+  fullstack_secure_fixture_data* ffd =
+      static_cast<fullstack_secure_fixture_data*>(f->fixture_data);
   grpc_end2end_proxy_destroy(ffd->proxy);
   gpr_free(ffd);
 }
@@ -135,9 +140,10 @@
     grpc_end2end_test_fixture* f, grpc_channel_args* client_args) {
   grpc_channel_credentials* ssl_creds =
       grpc_ssl_credentials_create(NULL, NULL, NULL);
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args* new_client_args =
       grpc_channel_args_copy_and_add(client_args, &ssl_name_override, 1);
   chttp2_init_client_secure_fullstack(f, new_client_args, ssl_creds);
diff --git a/test/core/end2end/fixtures/h2_uds.c b/test/core/end2end/fixtures/h2_uds.cc
similarity index 89%
rename from test/core/end2end/fixtures/h2_uds.c
rename to test/core/end2end/fixtures/h2_uds.cc
index b090f5d..ba433df 100644
--- a/test/core/end2end/fixtures/h2_uds.c
+++ b/test/core/end2end/fixtures/h2_uds.cc
@@ -48,7 +48,8 @@
 static grpc_end2end_test_fixture chttp2_create_fixture_fullstack(
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
-  fullstack_fixture_data* ffd = gpr_malloc(sizeof(fullstack_fixture_data));
+  fullstack_fixture_data* ffd = static_cast<fullstack_fixture_data*>(
+      gpr_malloc(sizeof(fullstack_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   gpr_asprintf(&ffd->localaddr, "unix:/tmp/grpc_fullstack_test.%d.%d", getpid(),
@@ -63,13 +64,15 @@
 
 void chttp2_init_client_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* client_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   f->client = grpc_insecure_channel_create(ffd->localaddr, client_args, NULL);
 }
 
 void chttp2_init_server_fullstack(grpc_end2end_test_fixture* f,
                                   grpc_channel_args* server_args) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   if (f->server) {
     grpc_server_destroy(f->server);
   }
@@ -80,7 +83,8 @@
 }
 
 void chttp2_tear_down_fullstack(grpc_end2end_test_fixture* f) {
-  fullstack_fixture_data* ffd = f->fixture_data;
+  fullstack_fixture_data* ffd =
+      static_cast<fullstack_fixture_data*>(f->fixture_data);
   gpr_free(ffd->localaddr);
   gpr_free(ffd);
 }
diff --git a/test/core/end2end/fixtures/http_proxy_fixture.c b/test/core/end2end/fixtures/http_proxy_fixture.cc
similarity index 100%
rename from test/core/end2end/fixtures/http_proxy_fixture.c
rename to test/core/end2end/fixtures/http_proxy_fixture.cc
diff --git a/test/core/end2end/fixtures/inproc.c b/test/core/end2end/fixtures/inproc.cc
similarity index 93%
rename from test/core/end2end/fixtures/inproc.c
rename to test/core/end2end/fixtures/inproc.cc
index 02e8030..5107ed2 100644
--- a/test/core/end2end/fixtures/inproc.c
+++ b/test/core/end2end/fixtures/inproc.cc
@@ -42,7 +42,8 @@
 static grpc_end2end_test_fixture inproc_create_fixture(
     grpc_channel_args* client_args, grpc_channel_args* server_args) {
   grpc_end2end_test_fixture f;
-  inproc_fixture_data* ffd = gpr_malloc(sizeof(inproc_fixture_data));
+  inproc_fixture_data* ffd = static_cast<inproc_fixture_data*>(
+      gpr_malloc(sizeof(inproc_fixture_data)));
   memset(&f, 0, sizeof(f));
 
   f.fixture_data = ffd;
@@ -69,7 +70,7 @@
 }
 
 void inproc_tear_down(grpc_end2end_test_fixture* f) {
-  inproc_fixture_data* ffd = f->fixture_data;
+  inproc_fixture_data* ffd = static_cast<inproc_fixture_data*>(f->fixture_data);
   gpr_free(ffd);
 }
 
diff --git a/test/core/end2end/fixtures/proxy.c b/test/core/end2end/fixtures/proxy.cc
similarity index 100%
rename from test/core/end2end/fixtures/proxy.c
rename to test/core/end2end/fixtures/proxy.cc
diff --git a/test/core/end2end/fuzzers/BUILD b/test/core/end2end/fuzzers/BUILD
index 4ed9a70..d33e2b0 100644
--- a/test/core/end2end/fuzzers/BUILD
+++ b/test/core/end2end/fuzzers/BUILD
@@ -22,8 +22,8 @@
 
 grpc_fuzzer(
     name = "api_fuzzer",
-    srcs = ["api_fuzzer.c"],
-    language = "C",
+    srcs = ["api_fuzzer.cc"],
+    language = "C++",
     corpus = "api_fuzzer_corpus",
     deps = [
         "//:gpr",
@@ -35,8 +35,8 @@
 
 grpc_fuzzer(
     name = "client_fuzzer",
-    srcs = ["client_fuzzer.c"],
-    language = "C",
+    srcs = ["client_fuzzer.cc"],
+    language = "C++",
     corpus = "client_fuzzer_corpus",
     deps = [
         "//:gpr",
@@ -47,8 +47,8 @@
 
 grpc_fuzzer(
     name = "server_fuzzer",
-    srcs = ["server_fuzzer.c"],
-    language = "C",
+    srcs = ["server_fuzzer.cc"],
+    language = "C++",
     corpus = "server_fuzzer_corpus",
     deps = [
         "//:gpr",
diff --git a/test/core/end2end/fuzzers/api_fuzzer.c b/test/core/end2end/fuzzers/api_fuzzer.cc
similarity index 93%
rename from test/core/end2end/fuzzers/api_fuzzer.c
rename to test/core/end2end/fuzzers/api_fuzzer.cc
index c85c9b0..69a5670 100644
--- a/test/core/end2end/fuzzers/api_fuzzer.c
+++ b/test/core/end2end/fuzzers/api_fuzzer.cc
@@ -56,7 +56,7 @@
 static grpc_channel* g_channel;
 static grpc_resource_quota* g_resource_quota;
 
-extern gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
+extern "C" gpr_timespec (*gpr_now_impl)(gpr_clock_type clock_type);
 
 static gpr_timespec now_impl(gpr_clock_type clock_type) {
   GPR_ASSERT(clock_type != GPR_TIMESPAN);
@@ -91,7 +91,7 @@
   do {
     if (cap == sz) {
       cap = GPR_MAX(3 * cap / 2, cap + 8);
-      str = gpr_realloc(str, cap);
+      str = static_cast<char*>(gpr_realloc(str, cap));
     }
     c = (char)next_byte(inp);
     str[sz++] = c;
@@ -114,7 +114,7 @@
   } else {
     if (special != NULL) *special = false;
   }
-  *buffer = gpr_malloc(*length);
+  *buffer = static_cast<char*>(gpr_malloc(*length));
   for (size_t i = 0; i < *length; i++) {
     (*buffer)[i] = (char)next_byte(inp);
   }
@@ -196,7 +196,7 @@
 
 static grpc_channel_args* read_args(input_stream* inp) {
   size_t n = next_byte(inp);
-  grpc_arg* args = gpr_malloc(sizeof(*args) * n);
+  grpc_arg* args = static_cast<grpc_arg*>(gpr_malloc(sizeof(*args) * n));
   for (size_t i = 0; i < n; i++) {
     switch (next_byte(inp)) {
       case 1:
@@ -222,7 +222,8 @@
         break;
     }
   }
-  grpc_channel_args* a = gpr_malloc(sizeof(*a));
+  grpc_channel_args* a =
+      static_cast<grpc_channel_args*>(gpr_malloc(sizeof(*a)));
   a->args = args;
   a->num_args = n;
   return a;
@@ -374,18 +375,20 @@
 
 static void finish_resolve(grpc_exec_ctx* exec_ctx, void* arg,
                            grpc_error* error) {
-  addr_req* r = arg;
+  addr_req* r = static_cast<addr_req*>(arg);
 
   if (error == GRPC_ERROR_NONE && 0 == strcmp(r->addr, "server")) {
     if (r->addrs != NULL) {
-      grpc_resolved_addresses* addrs = gpr_malloc(sizeof(*addrs));
+      grpc_resolved_addresses* addrs =
+          static_cast<grpc_resolved_addresses*>(gpr_malloc(sizeof(*addrs)));
       addrs->naddrs = 1;
-      addrs->addrs = gpr_malloc(sizeof(*addrs->addrs));
+      addrs->addrs = static_cast<grpc_resolved_address*>(
+          gpr_malloc(sizeof(*addrs->addrs)));
       addrs->addrs[0].len = 0;
       *r->addrs = addrs;
     } else if (r->lb_addrs != NULL) {
       grpc_lb_addresses* lb_addrs = grpc_lb_addresses_create(1, NULL);
-      grpc_lb_addresses_set_address(lb_addrs, 0, NULL, 0, NULL, NULL, NULL);
+      grpc_lb_addresses_set_address(lb_addrs, 0, NULL, 0, false, NULL, NULL);
       *r->lb_addrs = lb_addrs;
     }
     GRPC_CLOSURE_SCHED(exec_ctx, r->on_done, GRPC_ERROR_NONE);
@@ -404,7 +407,7 @@
                         grpc_pollset_set* interested_parties,
                         grpc_closure* on_done,
                         grpc_resolved_addresses** addresses) {
-  addr_req* r = gpr_malloc(sizeof(*r));
+  addr_req* r = static_cast<addr_req*>(gpr_malloc(sizeof(*r)));
   r->addr = gpr_strdup(addr);
   r->on_done = on_done;
   r->addrs = addresses;
@@ -419,7 +422,7 @@
     const char* default_port, grpc_pollset_set* interested_parties,
     grpc_closure* on_done, grpc_lb_addresses** lb_addrs, bool check_grpclb,
     char** service_config_json) {
-  addr_req* r = gpr_malloc(sizeof(*r));
+  addr_req* r = static_cast<addr_req*>(gpr_malloc(sizeof(*r)));
   r->addr = gpr_strdup(addr);
   r->on_done = on_done;
   r->addrs = NULL;
@@ -434,10 +437,10 @@
 // client connection
 
 // defined in tcp_client_posix.c
-extern void (*grpc_tcp_client_connect_impl)(
+extern "C" void (*grpc_tcp_client_connect_impl)(
     grpc_exec_ctx* exec_ctx, grpc_closure* closure, grpc_endpoint** ep,
     grpc_pollset_set* interested_parties, const grpc_channel_args* channel_args,
-    const grpc_resolved_address* addr, gpr_timespec deadline);
+    const grpc_resolved_address* addr, grpc_millis deadline);
 
 static void sched_connect(grpc_exec_ctx* exec_ctx, grpc_closure* closure,
                           grpc_endpoint** ep, gpr_timespec deadline);
@@ -450,7 +453,7 @@
 } future_connect;
 
 static void do_connect(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
-  future_connect* fc = arg;
+  future_connect* fc = static_cast<future_connect*>(arg);
   if (error != GRPC_ERROR_NONE) {
     *fc->ep = NULL;
     GRPC_CLOSURE_SCHED(exec_ctx, fc->closure, GRPC_ERROR_REF(error));
@@ -482,7 +485,7 @@
     return;
   }
 
-  future_connect* fc = gpr_malloc(sizeof(*fc));
+  future_connect* fc = static_cast<future_connect*>(gpr_malloc(sizeof(*fc)));
   fc->closure = closure;
   fc->ep = ep;
   fc->deadline = deadline;
@@ -496,8 +499,9 @@
                                   grpc_pollset_set* interested_parties,
                                   const grpc_channel_args* channel_args,
                                   const grpc_resolved_address* addr,
-                                  gpr_timespec deadline) {
-  sched_connect(exec_ctx, closure, ep, deadline);
+                                  grpc_millis deadline) {
+  sched_connect(exec_ctx, closure, ep,
+                grpc_millis_to_timespec(deadline, GPR_CLOCK_MONOTONIC));
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -510,7 +514,7 @@
 
 static validator* create_validator(void (*validate)(void* arg, bool success),
                                    void* arg) {
-  validator* v = gpr_malloc(sizeof(*v));
+  validator* v = static_cast<validator*>(gpr_malloc(sizeof(*v)));
   v->validate = validate;
   v->arg = arg;
   return v;
@@ -530,14 +534,15 @@
 
 static connectivity_watch* make_connectivity_watch(gpr_timespec s,
                                                    int* counter) {
-  connectivity_watch* o = gpr_malloc(sizeof(*o));
+  connectivity_watch* o =
+      static_cast<connectivity_watch*>(gpr_malloc(sizeof(*o)));
   o->deadline = s;
   o->counter = counter;
   return o;
 }
 
 static void validate_connectivity_watch(void* p, bool success) {
-  connectivity_watch* w = p;
+  connectivity_watch* w = static_cast<connectivity_watch*>(p);
   if (!success) {
     GPR_ASSERT(gpr_time_cmp(gpr_now(w->deadline.clock_type), w->deadline) >= 0);
   }
@@ -587,7 +592,7 @@
 static call_state* g_active_call;
 
 static call_state* new_call(call_state* sibling, call_state_type type) {
-  call_state* c = gpr_malloc(sizeof(*c));
+  call_state* c = static_cast<call_state*>(gpr_malloc(sizeof(*c)));
   memset(c, 0, sizeof(*c));
   if (sibling != NULL) {
     c->next = sibling;
@@ -636,8 +641,8 @@
 static void add_to_free(call_state* call, void* p) {
   if (call->num_to_free == call->cap_to_free) {
     call->cap_to_free = GPR_MAX(8, 2 * call->cap_to_free);
-    call->to_free =
-        gpr_realloc(call->to_free, sizeof(*call->to_free) * call->cap_to_free);
+    call->to_free = static_cast<void**>(
+        gpr_realloc(call->to_free, sizeof(*call->to_free) * call->cap_to_free));
   }
   call->to_free[call->num_to_free++] = p;
 }
@@ -645,12 +650,12 @@
 static grpc_slice* add_slice_to_unref(call_state* call, grpc_slice s) {
   if (call->num_slices_to_unref == call->cap_slices_to_unref) {
     call->cap_slices_to_unref = GPR_MAX(8, 2 * call->cap_slices_to_unref);
-    call->slices_to_unref =
-        gpr_realloc(call->slices_to_unref,
-                    sizeof(*call->slices_to_unref) * call->cap_slices_to_unref);
+    call->slices_to_unref = static_cast<grpc_slice**>(gpr_realloc(
+        call->slices_to_unref,
+        sizeof(*call->slices_to_unref) * call->cap_slices_to_unref));
   }
   call->slices_to_unref[call->num_slices_to_unref] =
-      gpr_malloc(sizeof(grpc_slice));
+      static_cast<grpc_slice*>(gpr_malloc(sizeof(grpc_slice)));
   *call->slices_to_unref[call->num_slices_to_unref++] = s;
   return call->slices_to_unref[call->num_slices_to_unref - 1];
 }
@@ -659,7 +664,8 @@
                           grpc_metadata** metadata, call_state* cs) {
   *count = next_byte(inp);
   if (*count) {
-    *metadata = gpr_malloc(*count * sizeof(**metadata));
+    *metadata =
+        static_cast<grpc_metadata*>(gpr_malloc(*count * sizeof(**metadata)));
     memset(*metadata, 0, *count * sizeof(**metadata));
     for (size_t i = 0; i < *count; i++) {
       (*metadata)[i].key = read_string_like_slice(inp);
@@ -669,7 +675,7 @@
       add_slice_to_unref(cs, (*metadata)[i].value);
     }
   } else {
-    *metadata = gpr_malloc(1);
+    *metadata = static_cast<grpc_metadata*>(gpr_malloc(1));
   }
   add_to_free(cs, *metadata);
 }
@@ -681,7 +687,7 @@
 }
 
 static void finished_request_call(void* csp, bool success) {
-  call_state* cs = csp;
+  call_state* cs = static_cast<call_state*>(csp);
   GPR_ASSERT(cs->pending_ops > 0);
   --cs->pending_ops;
   if (success) {
@@ -698,7 +704,7 @@
 } batch_info;
 
 static void finished_batch(void* p, bool success) {
-  batch_info* bi = p;
+  batch_info* bi = static_cast<batch_info*>(p);
   --bi->cs->pending_ops;
   if ((bi->has_ops & (1u << GRPC_OP_RECV_MESSAGE)) &&
       (bi->cs->done_flags & DONE_FLAG_CALL_CLOSED)) {
@@ -723,13 +729,13 @@
 
 static validator* make_finished_batch_validator(call_state* cs,
                                                 uint8_t has_ops) {
-  batch_info* bi = gpr_malloc(sizeof(*bi));
+  batch_info* bi = static_cast<batch_info*>(gpr_malloc(sizeof(*bi)));
   bi->cs = cs;
   bi->has_ops = has_ops;
   return create_validator(finished_batch, bi);
 }
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   grpc_test_only_set_slice_hash_seed(0);
   char* grpc_trace_fuzzer = gpr_getenv("GRPC_TRACE_FUZZER");
   if (squelch && grpc_trace_fuzzer == NULL) gpr_set_log_function(dont_log);
@@ -806,7 +812,7 @@
             cq, gpr_inf_past(GPR_CLOCK_REALTIME), NULL);
         switch (ev.type) {
           case GRPC_OP_COMPLETE: {
-            validator* v = ev.tag;
+            validator* v = static_cast<validator*>(ev.tag);
             v->validate(v->arg, ev.success);
             gpr_free(v);
             break;
@@ -996,7 +1002,8 @@
           end(&inp);
           break;
         }
-        grpc_op* ops = gpr_malloc(sizeof(grpc_op) * num_ops);
+        grpc_op* ops =
+            static_cast<grpc_op*>(gpr_malloc(sizeof(grpc_op) * num_ops));
         if (num_ops > 0) memset(ops, 0, sizeof(grpc_op) * num_ops);
         bool ok = true;
         size_t i;
@@ -1039,7 +1046,8 @@
                   &op->data.send_status_from_server.trailing_metadata_count,
                   &op->data.send_status_from_server.trailing_metadata,
                   g_active_call);
-              op->data.send_status_from_server.status = next_byte(&inp);
+              op->data.send_status_from_server.status =
+                  static_cast<grpc_status_code>(next_byte(&inp));
               op->data.send_status_from_server.status_details =
                   add_slice_to_unref(g_active_call,
                                      read_buffer_like_slice(&inp));
diff --git a/test/core/end2end/fuzzers/client_fuzzer.c b/test/core/end2end/fuzzers/client_fuzzer.cc
similarity index 98%
rename from test/core/end2end/fuzzers/client_fuzzer.c
rename to test/core/end2end/fuzzers/client_fuzzer.cc
index f171d4b..d90ec40 100644
--- a/test/core/end2end/fuzzers/client_fuzzer.c
+++ b/test/core/end2end/fuzzers/client_fuzzer.cc
@@ -37,7 +37,7 @@
 
 static void dont_log(gpr_log_func_args* args) {}
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   grpc_test_only_set_slice_hash_seed(0);
   struct grpc_memory_counters counters;
   if (squelch) gpr_set_log_function(dont_log);
diff --git a/test/core/end2end/fuzzers/server_fuzzer.c b/test/core/end2end/fuzzers/server_fuzzer.cc
similarity index 97%
rename from test/core/end2end/fuzzers/server_fuzzer.c
rename to test/core/end2end/fuzzers/server_fuzzer.cc
index 2078a3c..87bccc7 100644
--- a/test/core/end2end/fuzzers/server_fuzzer.c
+++ b/test/core/end2end/fuzzers/server_fuzzer.cc
@@ -35,7 +35,7 @@
 
 static void dont_log(gpr_log_func_args* args) {}
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   grpc_test_only_set_slice_hash_seed(0);
   struct grpc_memory_counters counters;
   if (squelch) gpr_set_log_function(dont_log);
diff --git a/test/core/end2end/gen_build_yaml.py b/test/core/end2end/gen_build_yaml.py
index f7f996d..7c8e7f4 100755
--- a/test/core/end2end/gen_build_yaml.py
+++ b/test/core/end2end/gen_build_yaml.py
@@ -220,9 +220,9 @@
               'build': 'private',
               'language': 'c',
               'secure': True,
-              'src': ['test/core/end2end/end2end_tests.c',
-                      'test/core/end2end/end2end_test_utils.c'] + [
-                  'test/core/end2end/tests/%s.c' % t
+              'src': ['test/core/end2end/end2end_tests.cc',
+                      'test/core/end2end/end2end_test_utils.cc'] + [
+                  'test/core/end2end/tests/%s.cc' % t
                   for t in sorted(END2END_TESTS.keys())],
               'headers': ['test/core/end2end/tests/cancel_test_helpers.h',
                           'test/core/end2end/end2end_tests.h'],
@@ -235,9 +235,9 @@
               'build': 'private',
               'language': 'c',
               'secure': False,
-              'src': ['test/core/end2end/end2end_nosec_tests.c',
-                      'test/core/end2end/end2end_test_utils.c'] + [
-                  'test/core/end2end/tests/%s.c' % t
+              'src': ['test/core/end2end/end2end_nosec_tests.cc',
+                      'test/core/end2end/end2end_test_utils.cc'] + [
+                  'test/core/end2end/tests/%s.cc' % t
                   for t in sorted(END2END_TESTS.keys())
                   if not END2END_TESTS[t].secure],
               'headers': ['test/core/end2end/tests/cancel_test_helpers.h',
@@ -252,7 +252,7 @@
               'build': 'test',
               'language': 'c',
               'run': False,
-              'src': ['test/core/end2end/fixtures/%s.c' % f],
+              'src': ['test/core/end2end/fixtures/%s.cc' % f],
               'platforms': END2END_FIXTURES[f].platforms,
               'ci_platforms': (END2END_FIXTURES[f].platforms
                                if END2END_FIXTURES[f].ci_mac else without(
@@ -269,7 +269,7 @@
               'build': 'test',
               'language': 'c',
               'secure': False,
-              'src': ['test/core/end2end/fixtures/%s.c' % f],
+              'src': ['test/core/end2end/fixtures/%s.cc' % f],
               'run': False,
               'platforms': END2END_FIXTURES[f].platforms,
               'ci_platforms': (END2END_FIXTURES[f].platforms
diff --git a/test/core/end2end/generate_tests.bzl b/test/core/end2end/generate_tests.bzl
index 89a95ed..b9a42bd 100755
--- a/test/core/end2end/generate_tests.bzl
+++ b/test/core/end2end/generate_tests.bzl
@@ -186,14 +186,14 @@
 def grpc_end2end_tests():
   grpc_cc_library(
     name = 'end2end_tests',
-    srcs = ['end2end_tests.c', 'end2end_test_utils.c'] + [
-             'tests/%s.c' % t
+    srcs = ['end2end_tests.cc', 'end2end_test_utils.cc'] + [
+             'tests/%s.cc' % t
              for t in sorted(END2END_TESTS.keys())],
     hdrs = [
       'tests/cancel_test_helpers.h',
       'end2end_tests.h'
     ],
-    language = "C",
+    language = "C++",
     deps = [
       ':cq_verifier',
       ':ssl_test_data',
@@ -205,8 +205,8 @@
   for f, fopt in END2END_FIXTURES.items():
     grpc_cc_binary(
       name = '%s_test' % f,
-      srcs = ['fixtures/%s.c' % f],
-      language = "C",
+      srcs = ['fixtures/%s.cc' % f],
+      language = "C++",
       deps = [
         ':end2end_tests',
         '//test/core/util:grpc_test_util',
diff --git a/test/core/end2end/goaway_server_test.c b/test/core/end2end/goaway_server_test.cc
similarity index 96%
rename from test/core/end2end/goaway_server_test.c
rename to test/core/end2end/goaway_server_test.cc
index ec6a678..12a966d 100644
--- a/test/core/end2end/goaway_server_test.c
+++ b/test/core/end2end/goaway_server_test.cc
@@ -74,9 +74,10 @@
     gpr_mu_unlock(&g_mu);
     error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Failure");
   } else {
-    *addrs = gpr_malloc(sizeof(**addrs));
+    *addrs = static_cast<grpc_resolved_addresses*>(gpr_malloc(sizeof(**addrs)));
     (*addrs)->naddrs = 1;
-    (*addrs)->addrs = gpr_malloc(sizeof(*(*addrs)->addrs));
+    (*addrs)->addrs = static_cast<grpc_resolved_address*>(
+        gpr_malloc(sizeof(*(*addrs)->addrs)));
     memset((*addrs)->addrs, 0, sizeof(*(*addrs)->addrs));
     struct sockaddr_in* sa = (struct sockaddr_in*)(*addrs)->addrs[0].addr;
     sa->sin_family = AF_INET;
@@ -106,7 +107,8 @@
     error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Forced Failure");
   } else {
     *lb_addrs = grpc_lb_addresses_create(1, NULL);
-    struct sockaddr_in* sa = gpr_zalloc(sizeof(struct sockaddr_in));
+    struct sockaddr_in* sa = static_cast<struct sockaddr_in*>(
+        gpr_zalloc(sizeof(struct sockaddr_in)));
     sa->sin_family = AF_INET;
     sa->sin_addr.s_addr = htonl(0x7f000001);
     sa->sin_port = htons((uint16_t)g_resolve_port);
@@ -167,7 +169,8 @@
   grpc_channel_args client_args;
   grpc_arg arg_array[1];
   arg_array[0].type = GRPC_ARG_INTEGER;
-  arg_array[0].key = "grpc.testing.fixed_reconnect_backoff_ms";
+  arg_array[0].key =
+      const_cast<char*>("grpc.testing.fixed_reconnect_backoff_ms");
   arg_array[0].value.integer = 1000;
   client_args.args = arg_array;
   client_args.num_args = 1;
diff --git a/test/core/end2end/h2_ssl_cert_test.cc b/test/core/end2end/h2_ssl_cert_test.cc
index fe4fd10..8994b63 100644
--- a/test/core/end2end/h2_ssl_cert_test.cc
+++ b/test/core/end2end/h2_ssl_cert_test.cc
@@ -16,9 +16,7 @@
  *
  */
 
-extern "C" {
 #include "test/core/end2end/end2end_tests.h"
-}
 
 #include <stdio.h>
 #include <string.h>
@@ -27,7 +25,6 @@
 #include <grpc/support/host_port.h>
 #include <grpc/support/log.h>
 
-extern "C" {
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/security/credentials/credentials.h"
 #include "src/core/lib/support/env.h"
@@ -37,7 +34,6 @@
 #include "test/core/end2end/data/ssl_test_data.h"
 #include "test/core/util/port.h"
 #include "test/core/util/test_config.h"
-}
 
 #include <gtest/gtest.h>
 
diff --git a/test/core/end2end/invalid_call_argument_test.c b/test/core/end2end/invalid_call_argument_test.cc
similarity index 99%
rename from test/core/end2end/invalid_call_argument_test.c
rename to test/core/end2end/invalid_call_argument_test.cc
index 4847787..c310a0e 100644
--- a/test/core/end2end/invalid_call_argument_test.c
+++ b/test/core/end2end/invalid_call_argument_test.cc
@@ -258,7 +258,7 @@
   op->reserved = NULL;
   op++;
   op->op = GRPC_OP_SEND_MESSAGE;
-  op->data.send_message.send_message = tag(2);
+  op->data.send_message.send_message = static_cast<grpc_byte_buffer*>(tag(2));
   op->flags = 0;
   op->reserved = NULL;
   op++;
diff --git a/test/core/end2end/multiple_server_queues_test.c b/test/core/end2end/multiple_server_queues_test.cc
similarity index 100%
rename from test/core/end2end/multiple_server_queues_test.c
rename to test/core/end2end/multiple_server_queues_test.cc
diff --git a/test/core/end2end/no_server_test.c b/test/core/end2end/no_server_test.cc
similarity index 100%
rename from test/core/end2end/no_server_test.c
rename to test/core/end2end/no_server_test.cc
diff --git a/test/core/end2end/tests/authority_not_supported.c b/test/core/end2end/tests/authority_not_supported.cc
similarity index 100%
rename from test/core/end2end/tests/authority_not_supported.c
rename to test/core/end2end/tests/authority_not_supported.cc
diff --git a/test/core/end2end/tests/bad_hostname.c b/test/core/end2end/tests/bad_hostname.cc
similarity index 100%
rename from test/core/end2end/tests/bad_hostname.c
rename to test/core/end2end/tests/bad_hostname.cc
diff --git a/test/core/end2end/tests/bad_ping.c b/test/core/end2end/tests/bad_ping.cc
similarity index 84%
rename from test/core/end2end/tests/bad_ping.c
rename to test/core/end2end/tests/bad_ping.cc
index feca592..6480615 100644
--- a/test/core/end2end/tests/bad_ping.c
+++ b/test/core/end2end/tests/bad_ping.cc
@@ -66,30 +66,30 @@
 static void test_bad_ping(grpc_end2end_test_config config) {
   grpc_end2end_test_fixture f = config.create_fixture(NULL, NULL);
   cq_verifier* cqv = cq_verifier_create(f.cq);
-  grpc_arg client_a[] = {
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS,
-       .value.integer = 10},
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA,
-       .value.integer = 0},
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_BDP_PROBE,
-       .value.integer = 0}};
-  grpc_arg server_a[] = {
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS,
-       .value.integer = 300000 /* 5 minutes */},
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_MAX_PING_STRIKES,
-       .value.integer = MAX_PING_STRIKES},
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_BDP_PROBE,
-       .value.integer = 0}};
-  grpc_channel_args client_args = {.num_args = GPR_ARRAY_SIZE(client_a),
-                                   .args = client_a};
-  grpc_channel_args server_args = {.num_args = GPR_ARRAY_SIZE(server_a),
-                                   .args = server_a};
+  grpc_arg client_a[3];
+  client_a[0].type = GRPC_ARG_INTEGER;
+  client_a[0].key =
+      const_cast<char*>(GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS);
+  client_a[0].value.integer = 10;
+  client_a[1].type = GRPC_ARG_INTEGER;
+  client_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA);
+  client_a[1].value.integer = 0;
+  client_a[2].type = GRPC_ARG_INTEGER;
+  client_a[2].key = const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE);
+  client_a[2].value.integer = 0;
+  grpc_arg server_a[3];
+  server_a[0].type = GRPC_ARG_INTEGER;
+  server_a[0].key =
+      const_cast<char*>(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS);
+  server_a[0].value.integer = 300000 /* 5 minutes */;
+  server_a[1].type = GRPC_ARG_INTEGER;
+  server_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PING_STRIKES);
+  server_a[1].value.integer = MAX_PING_STRIKES;
+  server_a[2].type = GRPC_ARG_INTEGER;
+  server_a[2].key = const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE);
+  server_a[2].value.integer = 0;
+  grpc_channel_args client_args = {GPR_ARRAY_SIZE(client_a), client_a};
+  grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
 
   config.init_client(&f, &client_args);
   config.init_server(&f, &server_args);
diff --git a/test/core/end2end/tests/binary_metadata.c b/test/core/end2end/tests/binary_metadata.cc
similarity index 100%
rename from test/core/end2end/tests/binary_metadata.c
rename to test/core/end2end/tests/binary_metadata.cc
diff --git a/test/core/end2end/tests/call_creds.c b/test/core/end2end/tests/call_creds.cc
similarity index 98%
rename from test/core/end2end/tests/call_creds.c
rename to test/core/end2end/tests/call_creds.cc
index a3d1eac..fc550b7 100644
--- a/test/core/end2end/tests/call_creds.c
+++ b/test/core/end2end/tests/call_creds.cc
@@ -49,7 +49,9 @@
   config.init_client(&f, NULL);
   if (fail_server_auth_check) {
     grpc_arg fail_auth_arg = {
-        GRPC_ARG_STRING, FAIL_AUTH_CHECK_SERVER_ARG_NAME, {NULL}};
+        GRPC_ARG_STRING,
+        const_cast<char*>(FAIL_AUTH_CHECK_SERVER_ARG_NAME),
+        {NULL}};
     grpc_channel_args args;
     args.num_args = 1;
     args.args = &fail_auth_arg;
diff --git a/test/core/end2end/tests/cancel_after_accept.c b/test/core/end2end/tests/cancel_after_accept.cc
similarity index 98%
rename from test/core/end2end/tests/cancel_after_accept.c
rename to test/core/end2end/tests/cancel_after_accept.cc
index 92c89fb..e2ad5bd 100644
--- a/test/core/end2end/tests/cancel_after_accept.c
+++ b/test/core/end2end/tests/cancel_after_accept.cc
@@ -125,8 +125,8 @@
   if (use_service_config) {
     grpc_arg arg;
     arg.type = GRPC_ARG_STRING;
-    arg.key = GRPC_ARG_SERVICE_CONFIG;
-    arg.value.string =
+    arg.key = const_cast<char*>(GRPC_ARG_SERVICE_CONFIG);
+    arg.value.string = const_cast<char*>(
         "{\n"
         "  \"methodConfig\": [ {\n"
         "    \"name\": [\n"
@@ -135,7 +135,7 @@
         "    ],\n"
         "    \"timeout\": \"5s\"\n"
         "  } ]\n"
-        "}";
+        "}");
     args = grpc_channel_args_copy_and_add(args, &arg, 1);
   }
 
diff --git a/test/core/end2end/tests/cancel_after_client_done.c b/test/core/end2end/tests/cancel_after_client_done.cc
similarity index 100%
rename from test/core/end2end/tests/cancel_after_client_done.c
rename to test/core/end2end/tests/cancel_after_client_done.cc
diff --git a/test/core/end2end/tests/cancel_after_invoke.c b/test/core/end2end/tests/cancel_after_invoke.cc
similarity index 100%
rename from test/core/end2end/tests/cancel_after_invoke.c
rename to test/core/end2end/tests/cancel_after_invoke.cc
diff --git a/test/core/end2end/tests/cancel_after_round_trip.c b/test/core/end2end/tests/cancel_after_round_trip.cc
similarity index 98%
rename from test/core/end2end/tests/cancel_after_round_trip.c
rename to test/core/end2end/tests/cancel_after_round_trip.cc
index 402e0bb..35b5214 100644
--- a/test/core/end2end/tests/cancel_after_round_trip.c
+++ b/test/core/end2end/tests/cancel_after_round_trip.cc
@@ -127,8 +127,8 @@
   if (use_service_config) {
     grpc_arg arg;
     arg.type = GRPC_ARG_STRING;
-    arg.key = GRPC_ARG_SERVICE_CONFIG;
-    arg.value.string =
+    arg.key = const_cast<char*>(GRPC_ARG_SERVICE_CONFIG);
+    arg.value.string = const_cast<char*>(
         "{\n"
         "  \"methodConfig\": [ {\n"
         "    \"name\": [\n"
@@ -136,7 +136,7 @@
         "    ],\n"
         "    \"timeout\": \"5s\"\n"
         "  } ]\n"
-        "}";
+        "}");
     args = grpc_channel_args_copy_and_add(args, &arg, 1);
   }
 
diff --git a/test/core/end2end/tests/cancel_before_invoke.c b/test/core/end2end/tests/cancel_before_invoke.cc
similarity index 100%
rename from test/core/end2end/tests/cancel_before_invoke.c
rename to test/core/end2end/tests/cancel_before_invoke.cc
diff --git a/test/core/end2end/tests/cancel_in_a_vacuum.c b/test/core/end2end/tests/cancel_in_a_vacuum.cc
similarity index 100%
rename from test/core/end2end/tests/cancel_in_a_vacuum.c
rename to test/core/end2end/tests/cancel_in_a_vacuum.cc
diff --git a/test/core/end2end/tests/cancel_with_status.c b/test/core/end2end/tests/cancel_with_status.cc
similarity index 100%
rename from test/core/end2end/tests/cancel_with_status.c
rename to test/core/end2end/tests/cancel_with_status.cc
diff --git a/test/core/end2end/tests/compressed_payload.c b/test/core/end2end/tests/compressed_payload.cc
similarity index 100%
rename from test/core/end2end/tests/compressed_payload.c
rename to test/core/end2end/tests/compressed_payload.cc
diff --git a/test/core/end2end/tests/connectivity.c b/test/core/end2end/tests/connectivity.cc
similarity index 98%
rename from test/core/end2end/tests/connectivity.c
rename to test/core/end2end/tests/connectivity.cc
index a3f69cd..4f302d1 100644
--- a/test/core/end2end/tests/connectivity.c
+++ b/test/core/end2end/tests/connectivity.cc
@@ -56,7 +56,8 @@
   grpc_channel_args client_args;
   grpc_arg arg_array[1];
   arg_array[0].type = GRPC_ARG_INTEGER;
-  arg_array[0].key = "grpc.testing.fixed_reconnect_backoff_ms";
+  arg_array[0].key =
+      const_cast<char*>("grpc.testing.fixed_reconnect_backoff_ms");
   arg_array[0].value.integer = 1000;
   client_args.args = arg_array;
   client_args.num_args = 1;
diff --git a/test/core/end2end/tests/default_host.c b/test/core/end2end/tests/default_host.cc
similarity index 100%
rename from test/core/end2end/tests/default_host.c
rename to test/core/end2end/tests/default_host.cc
diff --git a/test/core/end2end/tests/disappearing_server.c b/test/core/end2end/tests/disappearing_server.cc
similarity index 100%
rename from test/core/end2end/tests/disappearing_server.c
rename to test/core/end2end/tests/disappearing_server.cc
diff --git a/test/core/end2end/tests/empty_batch.c b/test/core/end2end/tests/empty_batch.cc
similarity index 100%
rename from test/core/end2end/tests/empty_batch.c
rename to test/core/end2end/tests/empty_batch.cc
diff --git a/test/core/end2end/tests/filter_call_init_fails.c b/test/core/end2end/tests/filter_call_init_fails.cc
similarity index 100%
rename from test/core/end2end/tests/filter_call_init_fails.c
rename to test/core/end2end/tests/filter_call_init_fails.cc
diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.cc
similarity index 100%
rename from test/core/end2end/tests/filter_causes_close.c
rename to test/core/end2end/tests/filter_causes_close.cc
diff --git a/test/core/end2end/tests/filter_latency.c b/test/core/end2end/tests/filter_latency.cc
similarity index 100%
rename from test/core/end2end/tests/filter_latency.c
rename to test/core/end2end/tests/filter_latency.cc
diff --git a/test/core/end2end/tests/graceful_server_shutdown.c b/test/core/end2end/tests/graceful_server_shutdown.cc
similarity index 100%
rename from test/core/end2end/tests/graceful_server_shutdown.c
rename to test/core/end2end/tests/graceful_server_shutdown.cc
diff --git a/test/core/end2end/tests/high_initial_seqno.c b/test/core/end2end/tests/high_initial_seqno.cc
similarity index 98%
rename from test/core/end2end/tests/high_initial_seqno.c
rename to test/core/end2end/tests/high_initial_seqno.cc
index d60dd82..72f1d0f 100644
--- a/test/core/end2end/tests/high_initial_seqno.c
+++ b/test/core/end2end/tests/high_initial_seqno.cc
@@ -211,7 +211,7 @@
   char* name;
 
   client_arg.type = GRPC_ARG_INTEGER;
-  client_arg.key = GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER;
+  client_arg.key = const_cast<char*>(GRPC_ARG_HTTP2_INITIAL_SEQUENCE_NUMBER);
   client_arg.value.integer = initial_sequence_number;
 
   client_args.num_args = 1;
diff --git a/test/core/end2end/tests/hpack_size.c b/test/core/end2end/tests/hpack_size.cc
similarity index 98%
rename from test/core/end2end/tests/hpack_size.c
rename to test/core/end2end/tests/hpack_size.cc
index 706aa2f..b2c683e 100644
--- a/test/core/end2end/tests/hpack_size.c
+++ b/test/core/end2end/tests/hpack_size.cc
@@ -360,13 +360,13 @@
   char* name;
 
   server_arg.type = GRPC_ARG_INTEGER;
-  server_arg.key = GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER;
+  server_arg.key = const_cast<char*>(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER);
   server_arg.value.integer = decode_size;
   server_args.num_args = 1;
   server_args.args = &server_arg;
 
   client_arg.type = GRPC_ARG_INTEGER;
-  client_arg.key = GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER;
+  client_arg.key = const_cast<char*>(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER);
   client_arg.value.integer = encode_size;
   client_args.num_args = 1;
   client_args.args = &client_arg;
diff --git a/test/core/end2end/tests/idempotent_request.c b/test/core/end2end/tests/idempotent_request.cc
similarity index 100%
rename from test/core/end2end/tests/idempotent_request.c
rename to test/core/end2end/tests/idempotent_request.cc
diff --git a/test/core/end2end/tests/invoke_large_request.c b/test/core/end2end/tests/invoke_large_request.cc
similarity index 98%
rename from test/core/end2end/tests/invoke_large_request.c
rename to test/core/end2end/tests/invoke_large_request.cc
index 4b10665..ade61ac 100644
--- a/test/core/end2end/tests/invoke_large_request.c
+++ b/test/core/end2end/tests/invoke_large_request.cc
@@ -96,10 +96,10 @@
 
   grpc_arg args[2];
   args[0].type = GRPC_ARG_INTEGER;
-  args[0].key = GRPC_ARG_HTTP2_MAX_FRAME_SIZE;
+  args[0].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_FRAME_SIZE);
   args[0].value.integer = max_frame_size;
   args[1].type = GRPC_ARG_INTEGER;
-  args[1].key = GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES;
+  args[1].key = const_cast<char*>(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES);
   args[1].value.integer = lookahead_bytes;
   grpc_channel_args channel_args = {GPR_ARRAY_SIZE(args), args};
 
diff --git a/test/core/end2end/tests/keepalive_timeout.c b/test/core/end2end/tests/keepalive_timeout.cc
similarity index 90%
rename from test/core/end2end/tests/keepalive_timeout.c
rename to test/core/end2end/tests/keepalive_timeout.cc
index 91c0631..d071254 100644
--- a/test/core/end2end/tests/keepalive_timeout.c
+++ b/test/core/end2end/tests/keepalive_timeout.cc
@@ -98,18 +98,18 @@
   grpc_byte_buffer* response_payload =
       grpc_raw_byte_buffer_create(&response_payload_slice, 1);
 
-  grpc_arg keepalive_arg_elems[] = {{.type = GRPC_ARG_INTEGER,
-                                     .key = GRPC_ARG_KEEPALIVE_TIME_MS,
-                                     .value.integer = 1500},
-                                    {.type = GRPC_ARG_INTEGER,
-                                     .key = GRPC_ARG_KEEPALIVE_TIMEOUT_MS,
-                                     .value.integer = 0},
-                                    {.type = GRPC_ARG_INTEGER,
-                                     .key = GRPC_ARG_HTTP2_BDP_PROBE,
-                                     .value.integer = 0}};
-  grpc_channel_args keepalive_args = {
-      .num_args = GPR_ARRAY_SIZE(keepalive_arg_elems),
-      .args = keepalive_arg_elems};
+  grpc_arg keepalive_arg_elems[3];
+  keepalive_arg_elems[0].type = GRPC_ARG_INTEGER;
+  keepalive_arg_elems[0].key = const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS);
+  keepalive_arg_elems[0].value.integer = 1500;
+  keepalive_arg_elems[1].type = GRPC_ARG_INTEGER;
+  keepalive_arg_elems[1].key = const_cast<char*>(GRPC_ARG_KEEPALIVE_TIMEOUT_MS);
+  keepalive_arg_elems[1].value.integer = 0;
+  keepalive_arg_elems[2].type = GRPC_ARG_INTEGER;
+  keepalive_arg_elems[2].key = const_cast<char*>(GRPC_ARG_HTTP2_BDP_PROBE);
+  keepalive_arg_elems[2].value.integer = 0;
+  grpc_channel_args keepalive_args = {GPR_ARRAY_SIZE(keepalive_arg_elems),
+                                      keepalive_arg_elems};
 
   grpc_end2end_test_fixture f =
       begin_test(config, "keepalive_timeout", &keepalive_args, NULL);
diff --git a/test/core/end2end/tests/large_metadata.c b/test/core/end2end/tests/large_metadata.cc
similarity index 97%
rename from test/core/end2end/tests/large_metadata.c
rename to test/core/end2end/tests/large_metadata.cc
index 280e411..4afd9f3 100644
--- a/test/core/end2end/tests/large_metadata.c
+++ b/test/core/end2end/tests/large_metadata.cc
@@ -94,9 +94,10 @@
       grpc_raw_byte_buffer_create(&request_payload_slice, 1);
   grpc_metadata meta;
   const size_t large_size = 64 * 1024;
-  grpc_arg arg = {GRPC_ARG_INTEGER,
-                  GRPC_ARG_MAX_METADATA_SIZE,
-                  {.integer = (int)large_size + 1024}};
+  grpc_arg arg;
+  arg.type = GRPC_ARG_INTEGER;
+  arg.key = const_cast<char*>(GRPC_ARG_MAX_METADATA_SIZE);
+  arg.value.integer = (int)large_size + 1024;
   grpc_channel_args args = {1, &arg};
   grpc_end2end_test_fixture f =
       begin_test(config, "test_request_with_large_metadata", &args, &args);
diff --git a/test/core/end2end/tests/load_reporting_hook.c b/test/core/end2end/tests/load_reporting_hook.cc
similarity index 100%
rename from test/core/end2end/tests/load_reporting_hook.c
rename to test/core/end2end/tests/load_reporting_hook.cc
diff --git a/test/core/end2end/tests/max_concurrent_streams.c b/test/core/end2end/tests/max_concurrent_streams.cc
similarity index 98%
rename from test/core/end2end/tests/max_concurrent_streams.c
rename to test/core/end2end/tests/max_concurrent_streams.cc
index 675b1be..b8b49d6 100644
--- a/test/core/end2end/tests/max_concurrent_streams.c
+++ b/test/core/end2end/tests/max_concurrent_streams.cc
@@ -221,7 +221,7 @@
   int got_client_start;
   int got_server_start;
 
-  server_arg.key = GRPC_ARG_MAX_CONCURRENT_STREAMS;
+  server_arg.key = const_cast<char*>(GRPC_ARG_MAX_CONCURRENT_STREAMS);
   server_arg.type = GRPC_ARG_INTEGER;
   server_arg.value.integer = 1;
 
@@ -461,7 +461,7 @@
   grpc_op* op;
   int was_cancelled;
 
-  server_arg.key = GRPC_ARG_MAX_CONCURRENT_STREAMS;
+  server_arg.key = const_cast<char*>(GRPC_ARG_MAX_CONCURRENT_STREAMS);
   server_arg.type = GRPC_ARG_INTEGER;
   server_arg.value.integer = 1;
 
@@ -655,7 +655,7 @@
   grpc_op* op;
   int was_cancelled;
 
-  server_arg.key = GRPC_ARG_MAX_CONCURRENT_STREAMS;
+  server_arg.key = const_cast<char*>(GRPC_ARG_MAX_CONCURRENT_STREAMS);
   server_arg.type = GRPC_ARG_INTEGER;
   server_arg.value.integer = 1;
 
diff --git a/test/core/end2end/tests/max_connection_age.c b/test/core/end2end/tests/max_connection_age.cc
similarity index 89%
rename from test/core/end2end/tests/max_connection_age.c
rename to test/core/end2end/tests/max_connection_age.cc
index ed52133..b5d4dcf 100644
--- a/test/core/end2end/tests/max_connection_age.c
+++ b/test/core/end2end/tests/max_connection_age.cc
@@ -80,17 +80,17 @@
 static void test_max_age_forcibly_close(grpc_end2end_test_config config) {
   grpc_end2end_test_fixture f = config.create_fixture(NULL, NULL);
   cq_verifier* cqv = cq_verifier_create(f.cq);
-  grpc_arg server_a[] = {{.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_AGE_MS,
-                          .value.integer = MAX_CONNECTION_AGE_MS},
-                         {.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS,
-                          .value.integer = MAX_CONNECTION_AGE_GRACE_MS},
-                         {.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_IDLE_MS,
-                          .value.integer = MAX_CONNECTION_IDLE_MS}};
-  grpc_channel_args server_args = {.num_args = GPR_ARRAY_SIZE(server_a),
-                                   .args = server_a};
+  grpc_arg server_a[3];
+  server_a[0].type = GRPC_ARG_INTEGER;
+  server_a[0].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_AGE_MS);
+  server_a[0].value.integer = MAX_CONNECTION_AGE_MS;
+  server_a[1].type = GRPC_ARG_INTEGER;
+  server_a[1].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS);
+  server_a[1].value.integer = MAX_CONNECTION_AGE_GRACE_MS;
+  server_a[2].type = GRPC_ARG_INTEGER;
+  server_a[2].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_IDLE_MS);
+  server_a[2].value.integer = MAX_CONNECTION_IDLE_MS;
+  grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
 
   config.init_client(&f, NULL);
   config.init_server(&f, &server_args);
@@ -223,17 +223,17 @@
 static void test_max_age_gracefully_close(grpc_end2end_test_config config) {
   grpc_end2end_test_fixture f = config.create_fixture(NULL, NULL);
   cq_verifier* cqv = cq_verifier_create(f.cq);
-  grpc_arg server_a[] = {{.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_AGE_MS,
-                          .value.integer = MAX_CONNECTION_AGE_MS},
-                         {.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS,
-                          .value.integer = INT_MAX},
-                         {.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_IDLE_MS,
-                          .value.integer = MAX_CONNECTION_IDLE_MS}};
-  grpc_channel_args server_args = {.num_args = GPR_ARRAY_SIZE(server_a),
-                                   .args = server_a};
+  grpc_arg server_a[3];
+  server_a[0].type = GRPC_ARG_INTEGER;
+  server_a[0].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_AGE_MS);
+  server_a[0].value.integer = MAX_CONNECTION_AGE_MS;
+  server_a[1].type = GRPC_ARG_INTEGER;
+  server_a[1].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_AGE_GRACE_MS);
+  server_a[1].value.integer = INT_MAX;
+  server_a[2].type = GRPC_ARG_INTEGER;
+  server_a[2].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_IDLE_MS);
+  server_a[2].value.integer = MAX_CONNECTION_IDLE_MS;
+  grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
 
   config.init_client(&f, NULL);
   config.init_server(&f, &server_args);
diff --git a/test/core/end2end/tests/max_connection_idle.c b/test/core/end2end/tests/max_connection_idle.cc
similarity index 89%
rename from test/core/end2end/tests/max_connection_idle.c
rename to test/core/end2end/tests/max_connection_idle.cc
index 8866a3d..d850e42 100644
--- a/test/core/end2end/tests/max_connection_idle.c
+++ b/test/core/end2end/tests/max_connection_idle.cc
@@ -171,19 +171,20 @@
   grpc_connectivity_state state = GRPC_CHANNEL_IDLE;
   cq_verifier* cqv = cq_verifier_create(f.cq);
 
-  grpc_arg client_a[] = {{.type = GRPC_ARG_INTEGER,
-                          .key = "grpc.testing.fixed_reconnect_backoff_ms",
-                          .value.integer = 1000}};
-  grpc_arg server_a[] = {{.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_IDLE_MS,
-                          .value.integer = MAX_CONNECTION_IDLE_MS},
-                         {.type = GRPC_ARG_INTEGER,
-                          .key = GRPC_ARG_MAX_CONNECTION_AGE_MS,
-                          .value.integer = MAX_CONNECTION_AGE_MS}};
-  grpc_channel_args client_args = {.num_args = GPR_ARRAY_SIZE(client_a),
-                                   .args = client_a};
-  grpc_channel_args server_args = {.num_args = GPR_ARRAY_SIZE(server_a),
-                                   .args = server_a};
+  grpc_arg client_a[1];
+  client_a[0].type = GRPC_ARG_INTEGER;
+  client_a[0].key =
+      const_cast<char*>("grpc.testing.fixed_reconnect_backoff_ms");
+  client_a[0].value.integer = 1000;
+  grpc_arg server_a[2];
+  server_a[0].type = GRPC_ARG_INTEGER;
+  server_a[0].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_IDLE_MS);
+  server_a[0].value.integer = MAX_CONNECTION_IDLE_MS;
+  server_a[1].type = GRPC_ARG_INTEGER;
+  server_a[1].key = const_cast<char*>(GRPC_ARG_MAX_CONNECTION_AGE_MS);
+  server_a[1].value.integer = MAX_CONNECTION_AGE_MS;
+  grpc_channel_args client_args = {GPR_ARRAY_SIZE(client_a), client_a};
+  grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
 
   config.init_client(&f, &client_args);
   config.init_server(&f, &server_args);
diff --git a/test/core/end2end/tests/max_message_length.c b/test/core/end2end/tests/max_message_length.cc
similarity index 92%
rename from test/core/end2end/tests/max_message_length.c
rename to test/core/end2end/tests/max_message_length.cc
index ba730ec..3d677f1 100644
--- a/test/core/end2end/tests/max_message_length.c
+++ b/test/core/end2end/tests/max_message_length.cc
@@ -132,32 +132,34 @@
     GPR_ASSERT(send_limit);
     grpc_arg arg;
     arg.type = GRPC_ARG_STRING;
-    arg.key = GRPC_ARG_SERVICE_CONFIG;
+    arg.key = const_cast<char*>(GRPC_ARG_SERVICE_CONFIG);
     arg.value.string =
         use_string_json_value
-            ? "{\n"
-              "  \"methodConfig\": [ {\n"
-              "    \"name\": [\n"
-              "      { \"service\": \"service\", \"method\": \"method\" },\n"
-              "      { \"service\": \"unused\" }\n"
-              "    ],\n"
-              "    \"maxRequestMessageBytes\": \"5\"\n"
-              "  } ]\n"
-              "}"
-            : "{\n"
-              "  \"methodConfig\": [ {\n"
-              "    \"name\": [\n"
-              "      { \"service\": \"service\", \"method\": \"method\" }\n"
-              "    ],\n"
-              "    \"maxRequestMessageBytes\": 5\n"
-              "  } ]\n"
-              "}";
+            ? const_cast<char*>(
+                  "{\n"
+                  "  \"methodConfig\": [ {\n"
+                  "    \"name\": [\n"
+                  "      { \"service\": \"service\", \"method\": \"method\" }\n"
+                  "    ],\n"
+                  "    \"maxRequestMessageBytes\": \"5\"\n"
+                  "  } ]\n"
+                  "}")
+            : const_cast<char*>(
+                  "{\n"
+                  "  \"methodConfig\": [ {\n"
+                  "    \"name\": [\n"
+                  "      { \"service\": \"service\", \"method\": \"method\" }\n"
+                  "    ],\n"
+                  "    \"maxRequestMessageBytes\": 5\n"
+                  "  } ]\n"
+                  "}");
     client_args = grpc_channel_args_copy_and_add(NULL, &arg, 1);
   } else {
     // Set limit via channel args.
     grpc_arg arg;
-    arg.key = send_limit ? GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
-                         : GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH;
+    arg.key = send_limit
+                  ? const_cast<char*>(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH)
+                  : const_cast<char*>(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH);
     arg.type = GRPC_ARG_INTEGER;
     arg.value.integer = 5;
     grpc_channel_args* args = grpc_channel_args_copy_and_add(NULL, &arg, 1);
@@ -323,8 +325,8 @@
     GPR_ASSERT(!send_limit);
     grpc_arg arg;
     arg.type = GRPC_ARG_STRING;
-    arg.key = GRPC_ARG_SERVICE_CONFIG;
-    arg.value.string =
+    arg.key = const_cast<char*>(GRPC_ARG_SERVICE_CONFIG);
+    arg.value.string = const_cast<char*>(
         use_string_json_value
             ? "{\n"
               "  \"methodConfig\": [ {\n"
@@ -341,13 +343,14 @@
               "    ],\n"
               "    \"maxResponseMessageBytes\": 5\n"
               "  } ]\n"
-              "}";
+              "}");
     client_args = grpc_channel_args_copy_and_add(NULL, &arg, 1);
   } else {
     // Set limit via channel args.
     grpc_arg arg;
-    arg.key = send_limit ? GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
-                         : GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH;
+    arg.key = send_limit
+                  ? const_cast<char*>(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH)
+                  : const_cast<char*>(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH);
     arg.type = GRPC_ARG_INTEGER;
     arg.value.integer = 5;
     grpc_channel_args* args = grpc_channel_args_copy_and_add(NULL, &arg, 1);
diff --git a/test/core/end2end/tests/negative_deadline.c b/test/core/end2end/tests/negative_deadline.cc
similarity index 100%
rename from test/core/end2end/tests/negative_deadline.c
rename to test/core/end2end/tests/negative_deadline.cc
diff --git a/test/core/end2end/tests/network_status_change.c b/test/core/end2end/tests/network_status_change.cc
similarity index 100%
rename from test/core/end2end/tests/network_status_change.c
rename to test/core/end2end/tests/network_status_change.cc
diff --git a/test/core/end2end/tests/no_logging.c b/test/core/end2end/tests/no_logging.cc
similarity index 98%
rename from test/core/end2end/tests/no_logging.c
rename to test/core/end2end/tests/no_logging.cc
index c75ff8a..1a7b57c 100644
--- a/test/core/end2end/tests/no_logging.c
+++ b/test/core/end2end/tests/no_logging.cc
@@ -36,7 +36,7 @@
 
 static void* tag(intptr_t t) { return (void*)t; }
 
-extern void gpr_default_log(gpr_log_func_args* args);
+extern "C" void gpr_default_log(gpr_log_func_args* args);
 
 static void test_no_log(gpr_log_func_args* args) {
   char* message = NULL;
diff --git a/test/core/end2end/tests/no_op.c b/test/core/end2end/tests/no_op.cc
similarity index 100%
rename from test/core/end2end/tests/no_op.c
rename to test/core/end2end/tests/no_op.cc
diff --git a/test/core/end2end/tests/payload.c b/test/core/end2end/tests/payload.cc
similarity index 100%
rename from test/core/end2end/tests/payload.c
rename to test/core/end2end/tests/payload.cc
diff --git a/test/core/end2end/tests/ping.c b/test/core/end2end/tests/ping.cc
similarity index 75%
rename from test/core/end2end/tests/ping.c
rename to test/core/end2end/tests/ping.cc
index f2bb71b..88f62c0 100644
--- a/test/core/end2end/tests/ping.c
+++ b/test/core/end2end/tests/ping.cc
@@ -37,27 +37,27 @@
   grpc_connectivity_state state = GRPC_CHANNEL_IDLE;
   int i;
 
-  grpc_arg client_a[] = {
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS,
-       .value.integer = 10},
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA,
-       .value.integer = 0},
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS,
-       .value.integer = 1}};
-  grpc_arg server_a[] = {
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS,
-       .value.integer = 0},
-      {.type = GRPC_ARG_INTEGER,
-       .key = GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS,
-       .value.integer = 1}};
-  grpc_channel_args client_args = {.num_args = GPR_ARRAY_SIZE(client_a),
-                                   .args = client_a};
-  grpc_channel_args server_args = {.num_args = GPR_ARRAY_SIZE(server_a),
-                                   .args = server_a};
+  grpc_arg client_a[3];
+  client_a[0].type = GRPC_ARG_INTEGER;
+  client_a[0].key =
+      const_cast<char*>(GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS);
+  client_a[0].value.integer = 10;
+  client_a[1].type = GRPC_ARG_INTEGER;
+  client_a[1].key = const_cast<char*>(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA);
+  client_a[1].value.integer = 0;
+  client_a[2].type = GRPC_ARG_INTEGER;
+  client_a[2].key = const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS);
+  client_a[2].value.integer = 1;
+  grpc_arg server_a[2];
+  server_a[0].type = GRPC_ARG_INTEGER;
+  server_a[0].key =
+      const_cast<char*>(GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS);
+  server_a[0].value.integer = 0;
+  server_a[1].type = GRPC_ARG_INTEGER;
+  server_a[1].key = const_cast<char*>(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS);
+  server_a[1].value.integer = 1;
+  grpc_channel_args client_args = {GPR_ARRAY_SIZE(client_a), client_a};
+  grpc_channel_args server_args = {GPR_ARRAY_SIZE(server_a), server_a};
 
   config.init_client(&f, &client_args);
   config.init_server(&f, &server_args);
diff --git a/test/core/end2end/tests/ping_pong_streaming.c b/test/core/end2end/tests/ping_pong_streaming.cc
similarity index 100%
rename from test/core/end2end/tests/ping_pong_streaming.c
rename to test/core/end2end/tests/ping_pong_streaming.cc
diff --git a/test/core/end2end/tests/proxy_auth.c b/test/core/end2end/tests/proxy_auth.cc
similarity index 96%
rename from test/core/end2end/tests/proxy_auth.c
rename to test/core/end2end/tests/proxy_auth.cc
index 05cbc12..d5dce7c 100644
--- a/test/core/end2end/tests/proxy_auth.c
+++ b/test/core/end2end/tests/proxy_auth.cc
@@ -217,10 +217,11 @@
 
 static void test_invoke_proxy_auth(grpc_end2end_test_config config) {
   /* Indicate that the proxy requires user auth */
-  grpc_arg client_arg = {.type = GRPC_ARG_STRING,
-                         .key = GRPC_ARG_HTTP_PROXY_AUTH_CREDS,
-                         .value.string = GRPC_TEST_HTTP_PROXY_AUTH_CREDS};
-  grpc_channel_args client_args = {.num_args = 1, .args = &client_arg};
+  grpc_arg client_arg;
+  client_arg.type = GRPC_ARG_STRING;
+  client_arg.key = const_cast<char*>(GRPC_ARG_HTTP_PROXY_AUTH_CREDS);
+  client_arg.value.string = const_cast<char*>(GRPC_TEST_HTTP_PROXY_AUTH_CREDS);
+  grpc_channel_args client_args = {1, &client_arg};
   grpc_end2end_test_fixture f =
       begin_test(config, "test_invoke_proxy_auth", &client_args, NULL);
   simple_request_body(config, f);
diff --git a/test/core/end2end/tests/registered_call.c b/test/core/end2end/tests/registered_call.cc
similarity index 100%
rename from test/core/end2end/tests/registered_call.c
rename to test/core/end2end/tests/registered_call.cc
diff --git a/test/core/end2end/tests/request_with_flags.c b/test/core/end2end/tests/request_with_flags.cc
similarity index 100%
rename from test/core/end2end/tests/request_with_flags.c
rename to test/core/end2end/tests/request_with_flags.cc
diff --git a/test/core/end2end/tests/request_with_payload.c b/test/core/end2end/tests/request_with_payload.cc
similarity index 100%
rename from test/core/end2end/tests/request_with_payload.c
rename to test/core/end2end/tests/request_with_payload.cc
diff --git a/test/core/end2end/tests/resource_quota_server.c b/test/core/end2end/tests/resource_quota_server.cc
similarity index 99%
rename from test/core/end2end/tests/resource_quota_server.c
rename to test/core/end2end/tests/resource_quota_server.cc
index 445c536..dd00c98 100644
--- a/test/core/end2end/tests/resource_quota_server.c
+++ b/test/core/end2end/tests/resource_quota_server.cc
@@ -117,7 +117,7 @@
 #define SERVER_END_BASE_TAG 0x4000
 
   grpc_arg arg;
-  arg.key = GRPC_ARG_RESOURCE_QUOTA;
+  arg.key = const_cast<char*>(GRPC_ARG_RESOURCE_QUOTA);
   arg.type = GRPC_ARG_POINTER;
   arg.value.pointer.p = resource_quota;
   arg.value.pointer.vtable = grpc_resource_quota_arg_vtable();
diff --git a/test/core/end2end/tests/server_finishes_request.c b/test/core/end2end/tests/server_finishes_request.cc
similarity index 100%
rename from test/core/end2end/tests/server_finishes_request.c
rename to test/core/end2end/tests/server_finishes_request.cc
diff --git a/test/core/end2end/tests/shutdown_finishes_calls.c b/test/core/end2end/tests/shutdown_finishes_calls.cc
similarity index 100%
rename from test/core/end2end/tests/shutdown_finishes_calls.c
rename to test/core/end2end/tests/shutdown_finishes_calls.cc
diff --git a/test/core/end2end/tests/shutdown_finishes_tags.c b/test/core/end2end/tests/shutdown_finishes_tags.cc
similarity index 100%
rename from test/core/end2end/tests/shutdown_finishes_tags.c
rename to test/core/end2end/tests/shutdown_finishes_tags.cc
diff --git a/test/core/end2end/tests/simple_cacheable_request.c b/test/core/end2end/tests/simple_cacheable_request.cc
similarity index 100%
rename from test/core/end2end/tests/simple_cacheable_request.c
rename to test/core/end2end/tests/simple_cacheable_request.cc
diff --git a/test/core/end2end/tests/simple_delayed_request.c b/test/core/end2end/tests/simple_delayed_request.cc
similarity index 97%
rename from test/core/end2end/tests/simple_delayed_request.c
rename to test/core/end2end/tests/simple_delayed_request.cc
index 009eb58..eef36c9 100644
--- a/test/core/end2end/tests/simple_delayed_request.c
+++ b/test/core/end2end/tests/simple_delayed_request.cc
@@ -191,7 +191,8 @@
   grpc_channel_args client_args;
   grpc_arg arg_array[1];
   arg_array[0].type = GRPC_ARG_INTEGER;
-  arg_array[0].key = "grpc.testing.fixed_reconnect_backoff_ms";
+  arg_array[0].key =
+      const_cast<char*>("grpc.testing.fixed_reconnect_backoff_ms");
   arg_array[0].value.integer = 1000;
   client_args.args = arg_array;
   client_args.num_args = 1;
@@ -210,7 +211,8 @@
   grpc_channel_args client_args;
   grpc_arg arg_array[1];
   arg_array[0].type = GRPC_ARG_INTEGER;
-  arg_array[0].key = "grpc.testing.fixed_reconnect_backoff_ms";
+  arg_array[0].key =
+      const_cast<char*>("grpc.testing.fixed_reconnect_backoff_ms");
   arg_array[0].value.integer = 1000;
   client_args.args = arg_array;
   client_args.num_args = 1;
diff --git a/test/core/end2end/tests/simple_metadata.c b/test/core/end2end/tests/simple_metadata.cc
similarity index 100%
rename from test/core/end2end/tests/simple_metadata.c
rename to test/core/end2end/tests/simple_metadata.cc
diff --git a/test/core/end2end/tests/simple_request.c b/test/core/end2end/tests/simple_request.cc
similarity index 97%
rename from test/core/end2end/tests/simple_request.c
rename to test/core/end2end/tests/simple_request.cc
index 8faac97..d48010b 100644
--- a/test/core/end2end/tests/simple_request.c
+++ b/test/core/end2end/tests/simple_request.cc
@@ -103,8 +103,10 @@
   grpc_slice details;
   int was_cancelled = 2;
   char* peer;
-  grpc_stats_data* before = gpr_malloc(sizeof(grpc_stats_data));
-  grpc_stats_data* after = gpr_malloc(sizeof(grpc_stats_data));
+  grpc_stats_data* before =
+      static_cast<grpc_stats_data*>(gpr_malloc(sizeof(grpc_stats_data)));
+  grpc_stats_data* after =
+      static_cast<grpc_stats_data*>(gpr_malloc(sizeof(grpc_stats_data)));
 
   grpc_stats_collect(before);
 
diff --git a/test/core/end2end/tests/stream_compression_compressed_payload.c b/test/core/end2end/tests/stream_compression_compressed_payload.cc
similarity index 100%
rename from test/core/end2end/tests/stream_compression_compressed_payload.c
rename to test/core/end2end/tests/stream_compression_compressed_payload.cc
diff --git a/test/core/end2end/tests/stream_compression_payload.c b/test/core/end2end/tests/stream_compression_payload.cc
similarity index 100%
rename from test/core/end2end/tests/stream_compression_payload.c
rename to test/core/end2end/tests/stream_compression_payload.cc
diff --git a/test/core/end2end/tests/stream_compression_ping_pong_streaming.c b/test/core/end2end/tests/stream_compression_ping_pong_streaming.cc
similarity index 100%
rename from test/core/end2end/tests/stream_compression_ping_pong_streaming.c
rename to test/core/end2end/tests/stream_compression_ping_pong_streaming.cc
diff --git a/test/core/end2end/tests/streaming_error_response.c b/test/core/end2end/tests/streaming_error_response.cc
similarity index 100%
rename from test/core/end2end/tests/streaming_error_response.c
rename to test/core/end2end/tests/streaming_error_response.cc
diff --git a/test/core/end2end/tests/trailing_metadata.c b/test/core/end2end/tests/trailing_metadata.cc
similarity index 100%
rename from test/core/end2end/tests/trailing_metadata.c
rename to test/core/end2end/tests/trailing_metadata.cc
diff --git a/test/core/end2end/tests/workaround_cronet_compression.c b/test/core/end2end/tests/workaround_cronet_compression.cc
similarity index 96%
rename from test/core/end2end/tests/workaround_cronet_compression.c
rename to test/core/end2end/tests/workaround_cronet_compression.cc
index e9a2b8a..8f8ca16 100644
--- a/test/core/end2end/tests/workaround_cronet_compression.c
+++ b/test/core/end2end/tests/workaround_cronet_compression.cc
@@ -145,7 +145,7 @@
     grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
     grpc_channel_args* client_args_old = client_args;
     grpc_arg arg;
-    arg.key = GRPC_ARG_PRIMARY_USER_AGENT_STRING;
+    arg.key = const_cast<char*>(GRPC_ARG_PRIMARY_USER_AGENT_STRING);
     arg.type = GRPC_ARG_STRING;
     arg.value.string = user_agent_override;
     client_args = grpc_channel_args_copy_and_add(client_args_old, &arg, 1);
@@ -366,11 +366,14 @@
 
 static workaround_cronet_compression_config workaround_configs[] = {
     {NULL, GRPC_COMPRESS_GZIP},
-    {"grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; cronet_http; gentle)",
+    {const_cast<char*>(
+         "grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; cronet_http; gentle)"),
      GRPC_COMPRESS_NONE},
-    {"grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; chttp2; gentle)",
+    {const_cast<char*>(
+         "grpc-objc/1.3.0-dev grpc-c/3.0.0-dev (ios; chttp2; gentle)"),
      GRPC_COMPRESS_GZIP},
-    {"grpc-objc/1.4.0 grpc-c/3.0.0-dev (ios; cronet_http; gentle)",
+    {const_cast<char*>(
+         "grpc-objc/1.4.0 grpc-c/3.0.0-dev (ios; cronet_http; gentle)"),
      GRPC_COMPRESS_GZIP}};
 static const size_t workaround_configs_num =
     sizeof(workaround_configs) / sizeof(*workaround_configs);
diff --git a/test/core/end2end/tests/write_buffering.c b/test/core/end2end/tests/write_buffering.cc
similarity index 100%
rename from test/core/end2end/tests/write_buffering.c
rename to test/core/end2end/tests/write_buffering.cc
diff --git a/test/core/end2end/tests/write_buffering_at_end.c b/test/core/end2end/tests/write_buffering_at_end.cc
similarity index 100%
rename from test/core/end2end/tests/write_buffering_at_end.c
rename to test/core/end2end/tests/write_buffering_at_end.cc
diff --git a/test/core/fling/BUILD b/test/core/fling/BUILD
index 27b2b5b..268e94a 100644
--- a/test/core/fling/BUILD
+++ b/test/core/fling/BUILD
@@ -23,8 +23,8 @@
 grpc_cc_binary(
     name = "client",
     testonly = 1,
-    srcs = ["client.c"],
-    language = "C",
+    srcs = ["client.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -37,8 +37,8 @@
 grpc_cc_binary(
     name = "server",
     testonly = 1,
-    srcs = ["server.c"],
-    language = "C",
+    srcs = ["server.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -50,7 +50,7 @@
 
 grpc_cc_test(
     name = "fling",
-    srcs = ["fling_test.c"],
+    srcs = ["fling_test.cc"],
     data = [
         ":client",
         ":server",
@@ -66,7 +66,7 @@
 
 grpc_cc_test(
     name = "fling_stream",
-    srcs = ["fling_stream_test.c"],
+    srcs = ["fling_stream_test.cc"],
     data = [
         ":client",
         ":server",
diff --git a/test/core/fling/client.c b/test/core/fling/client.cc
similarity index 98%
rename from test/core/fling/client.c
rename to test/core/fling/client.cc
index 80d3793..64d1dc5 100644
--- a/test/core/fling/client.c
+++ b/test/core/fling/client.cc
@@ -151,10 +151,10 @@
 
   int payload_size = 1;
   int secure = 0;
-  char* target = "localhost:443";
+  const char* target = "localhost:443";
   gpr_cmdline* cl;
   grpc_event event;
-  char* scenario_name = "ping-pong-request";
+  const char* scenario_name = "ping-pong-request";
   scenario sc = {NULL, NULL, NULL};
 
   gpr_timers_set_log_filename("latency_trace.fling_client.txt");
diff --git a/test/core/fling/fling_stream_test.c b/test/core/fling/fling_stream_test.cc
similarity index 89%
rename from test/core/fling/fling_stream_test.c
rename to test/core/fling/fling_stream_test.cc
index 1f7d7d7..620427e 100644
--- a/test/core/fling/fling_stream_test.c
+++ b/test/core/fling/fling_stream_test.cc
@@ -44,9 +44,9 @@
   /* start the server */
   gpr_asprintf(&args[0], "%s/fling_server%s", root,
                gpr_subprocess_binary_extension());
-  args[1] = "--bind";
+  args[1] = const_cast<char*>("--bind");
   gpr_join_host_port(&args[2], "::", port);
-  args[3] = "--no-secure";
+  args[3] = const_cast<char*>("--no-secure");
   svr = gpr_subprocess_create(4, (const char**)args);
   gpr_free(args[0]);
   gpr_free(args[2]);
@@ -54,10 +54,10 @@
   /* start the client */
   gpr_asprintf(&args[0], "%s/fling_client%s", root,
                gpr_subprocess_binary_extension());
-  args[1] = "--target";
+  args[1] = const_cast<char*>("--target");
   gpr_join_host_port(&args[2], "127.0.0.1", port);
-  args[3] = "--scenario=ping-pong-stream";
-  args[4] = "--no-secure";
+  args[3] = const_cast<char*>("--scenario=ping-pong-stream");
+  args[4] = const_cast<char*>("--no-secure");
   args[5] = 0;
   cli = gpr_subprocess_create(6, (const char**)args);
   gpr_free(args[0]);
diff --git a/test/core/fling/fling_test.c b/test/core/fling/fling_test.c
deleted file mode 100644
index ce5efb0..0000000
--- a/test/core/fling/fling_test.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *
- * Copyright 2015 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <stdio.h>
-#include <string.h>
-
-#include <grpc/support/alloc.h>
-#include <grpc/support/host_port.h>
-#include <grpc/support/string_util.h>
-#include <grpc/support/subprocess.h>
-#include "src/core/lib/support/string.h"
-#include "test/core/util/port.h"
-
-int main(int argc, char** argv) {
-  char* me = argv[0];
-  char* lslash = strrchr(me, '/');
-  char root[1024];
-  int port = grpc_pick_unused_port_or_die();
-  char* args[10];
-  int status;
-  gpr_subprocess *svr, *cli;
-  /* figure out where we are */
-  if (lslash) {
-    memcpy(root, me, (size_t)(lslash - me));
-    root[lslash - me] = 0;
-  } else {
-    strcpy(root, ".");
-  }
-  /* start the server */
-  gpr_asprintf(&args[0], "%s/fling_server%s", root,
-               gpr_subprocess_binary_extension());
-  args[1] = "--bind";
-  gpr_join_host_port(&args[2], "::", port);
-  args[3] = "--no-secure";
-  svr = gpr_subprocess_create(4, (const char**)args);
-  gpr_free(args[0]);
-  gpr_free(args[2]);
-
-  /* start the client */
-  gpr_asprintf(&args[0], "%s/fling_client%s", root,
-               gpr_subprocess_binary_extension());
-  args[1] = "--target";
-  gpr_join_host_port(&args[2], "127.0.0.1", port);
-  args[3] = "--scenario=ping-pong-request";
-  args[4] = "--no-secure";
-  args[5] = 0;
-  cli = gpr_subprocess_create(6, (const char**)args);
-  gpr_free(args[0]);
-  gpr_free(args[2]);
-
-  /* wait for completion */
-  printf("waiting for client\n");
-  if ((status = gpr_subprocess_join(cli))) {
-    gpr_subprocess_destroy(cli);
-    gpr_subprocess_destroy(svr);
-    return status;
-  }
-  gpr_subprocess_destroy(cli);
-
-  gpr_subprocess_interrupt(svr);
-  status = gpr_subprocess_join(svr);
-  gpr_subprocess_destroy(svr);
-  return status;
-}
diff --git a/test/core/fling/fling_stream_test.c b/test/core/fling/fling_test.cc
similarity index 85%
copy from test/core/fling/fling_stream_test.c
copy to test/core/fling/fling_test.cc
index 1f7d7d7..1d4263a 100644
--- a/test/core/fling/fling_stream_test.c
+++ b/test/core/fling/fling_test.cc
@@ -26,9 +26,9 @@
 #include "src/core/lib/support/string.h"
 #include "test/core/util/port.h"
 
-int main(int argc, char** argv) {
-  char* me = argv[0];
-  char* lslash = strrchr(me, '/');
+int main(int argc, const char** argv) {
+  const char* me = argv[0];
+  const char* lslash = strrchr(me, '/');
   char root[1024];
   int port = grpc_pick_unused_port_or_die();
   char* args[10];
@@ -44,9 +44,9 @@
   /* start the server */
   gpr_asprintf(&args[0], "%s/fling_server%s", root,
                gpr_subprocess_binary_extension());
-  args[1] = "--bind";
+  args[1] = const_cast<char*>("--bind");
   gpr_join_host_port(&args[2], "::", port);
-  args[3] = "--no-secure";
+  args[3] = const_cast<char*>("--no-secure");
   svr = gpr_subprocess_create(4, (const char**)args);
   gpr_free(args[0]);
   gpr_free(args[2]);
@@ -54,10 +54,10 @@
   /* start the client */
   gpr_asprintf(&args[0], "%s/fling_client%s", root,
                gpr_subprocess_binary_extension());
-  args[1] = "--target";
+  args[1] = const_cast<char*>("--target");
   gpr_join_host_port(&args[2], "127.0.0.1", port);
-  args[3] = "--scenario=ping-pong-stream";
-  args[4] = "--no-secure";
+  args[3] = const_cast<char*>("--scenario=ping-pong-request");
+  args[4] = const_cast<char*>("--no-secure");
   args[5] = 0;
   cli = gpr_subprocess_create(6, (const char**)args);
   gpr_free(args[0]);
diff --git a/test/core/fling/server.c b/test/core/fling/server.cc
similarity index 98%
rename from test/core/fling/server.c
rename to test/core/fling/server.cc
index e284a61..4dfb30f 100644
--- a/test/core/fling/server.c
+++ b/test/core/fling/server.cc
@@ -177,7 +177,7 @@
   int shutdown_finished = 0;
 
   int secure = 0;
-  char* addr = NULL;
+  const char* addr = NULL;
 
   char* fake_argv[1];
 
@@ -248,7 +248,7 @@
         gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
                      gpr_time_from_micros(1000000, GPR_TIMESPAN)),
         NULL);
-    s = ev.tag;
+    s = static_cast<call_state*>(ev.tag);
     switch (ev.type) {
       case GRPC_OP_COMPLETE:
         switch ((intptr_t)s) {
diff --git a/test/core/handshake/BUILD b/test/core/handshake/BUILD
index 8e462cf..aea4a27 100644
--- a/test/core/handshake/BUILD
+++ b/test/core/handshake/BUILD
@@ -20,8 +20,8 @@
 
 grpc_cc_test(
     name = "client_ssl",
-    srcs = ["client_ssl.c"],
-    language = "C",
+    srcs = ["client_ssl.cc"],
+    language = "C++",
     data = [
         "//src/core/tsi/test_creds:ca.pem",
         "//src/core/tsi/test_creds:server1.key",
@@ -37,8 +37,8 @@
 
 grpc_cc_test(
     name = "server_ssl",
-    srcs = ["server_ssl.c"],
-    language = "C",
+    srcs = ["server_ssl.cc"],
+    language = "C++",
     data = [
         "//src/core/tsi/test_creds:ca.pem",
         "//src/core/tsi/test_creds:server1.key",
diff --git a/test/core/handshake/client_ssl.c b/test/core/handshake/client_ssl.cc
similarity index 95%
rename from test/core/handshake/client_ssl.c
rename to test/core/handshake/client_ssl.cc
index 6d4a14c..b8cfd62 100644
--- a/test/core/handshake/client_ssl.c
+++ b/test/core/handshake/client_ssl.cc
@@ -230,8 +230,7 @@
   gpr_thd_options thdopt = gpr_thd_options_default();
   gpr_thd_id thdid;
   gpr_thd_options_set_joinable(&thdopt);
-  server_args args = {.socket = server_socket,
-                      .alpn_preferred = server_alpn_preferred};
+  server_args args = {server_socket, server_alpn_preferred};
   GPR_ASSERT(gpr_thd_new(&thdid, server_thread, &args, &thdopt));
 
   // Load key pair and establish client SSL credentials.
@@ -253,9 +252,10 @@
   // lazy, this won't necessarily establish a connection yet.
   char* target;
   gpr_asprintf(&target, "127.0.0.1:%d", port);
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args grpc_args;
   grpc_args.num_args = 1;
   grpc_args.args = &ssl_name_override;
@@ -305,14 +305,14 @@
 
 int main(int argc, char* argv[]) {
   // Handshake succeeeds when the server has grpc-exp as the ALPN preference.
-  GPR_ASSERT(client_ssl_test("grpc-exp"));
+  GPR_ASSERT(client_ssl_test(const_cast<char*>("grpc-exp")));
   // Handshake succeeeds when the server has h2 as the ALPN preference. This
   // covers legacy gRPC servers which don't support grpc-exp.
-  GPR_ASSERT(client_ssl_test("h2"));
+  GPR_ASSERT(client_ssl_test(const_cast<char*>("h2")));
   // Handshake fails when the server uses a fake protocol as its ALPN
   // preference. This validates the client is correctly validating ALPN returns
   // and sanity checks the client_ssl_test.
-  GPR_ASSERT(!client_ssl_test("foo"));
+  GPR_ASSERT(!client_ssl_test(const_cast<char*>("foo")));
   return 0;
 }
 
diff --git a/test/core/handshake/server_ssl.c b/test/core/handshake/server_ssl.cc
similarity index 98%
rename from test/core/handshake/server_ssl.c
rename to test/core/handshake/server_ssl.cc
index 84a1cf1..bb92c84 100644
--- a/test/core/handshake/server_ssl.c
+++ b/test/core/handshake/server_ssl.cc
@@ -175,7 +175,8 @@
   for (unsigned int i = 0; i < alpn_list_len; ++i) {
     alpn_protos_len += (unsigned int)strlen(alpn_list[i]);
   }
-  unsigned char* alpn_protos = gpr_malloc(alpn_protos_len);
+  unsigned char* alpn_protos =
+      static_cast<unsigned char*>(gpr_malloc(alpn_protos_len));
   unsigned char* p = alpn_protos;
   for (unsigned int i = 0; i < alpn_list_len; ++i) {
     const uint8_t len = (uint8_t)strlen(alpn_list[i]);
diff --git a/test/core/http/BUILD b/test/core/http/BUILD
index fffdac5..a5ae627 100644
--- a/test/core/http/BUILD
+++ b/test/core/http/BUILD
@@ -22,8 +22,8 @@
 
 grpc_fuzzer(
     name = "response_fuzzer",
-    srcs = ["response_fuzzer.c"],
-    language = "C",
+    srcs = ["response_fuzzer.cc"],
+    language = "C++",
     corpus = "response_corpus",
     deps = [
         "//:gpr",
@@ -34,8 +34,8 @@
 
 grpc_fuzzer(
     name = "request_fuzzer",
-    srcs = ["request_fuzzer.c"],
-    language = "C",
+    srcs = ["request_fuzzer.cc"],
+    language = "C++",
     corpus = "request_corpus",
     deps = [
         "//:gpr",
@@ -64,8 +64,8 @@
 
 grpc_cc_test(
     name = "httpcli_test",
-    srcs = ["httpcli_test.c"],
-    language = "C",
+    srcs = ["httpcli_test.cc"],
+    language = "C++",
     data = ["test_server.py"],
     deps = [
         "//:gpr",
@@ -78,8 +78,8 @@
 
 grpc_cc_test(
     name = "httpscli_test",
-    srcs = ["httpscli_test.c"],
-    language = "C",
+    srcs = ["httpscli_test.cc"],
+    language = "C++",
     data = ["test_server.py"],
     deps = [
         "//:gpr",
@@ -92,8 +92,8 @@
 
 grpc_cc_test(
     name = "parser_test",
-    srcs = ["parser_test.c"],
-    language = "C",
+    srcs = ["parser_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/http/format_request_test.c b/test/core/http/format_request_test.cc
similarity index 83%
rename from test/core/http/format_request_test.c
rename to test/core/http/format_request_test.cc
index a1476e1..253e591 100644
--- a/test/core/http/format_request_test.c
+++ b/test/core/http/format_request_test.cc
@@ -24,13 +24,13 @@
 #include "test/core/util/test_config.h"
 
 static void test_format_get_request(void) {
-  grpc_http_header hdr = {"x-yz", "abc"};
+  grpc_http_header hdr = {const_cast<char*>("x-yz"), const_cast<char*>("abc")};
   grpc_httpcli_request req;
   grpc_slice slice;
 
   memset(&req, 0, sizeof(req));
-  req.host = "example.com";
-  req.http.path = "/index.html";
+  req.host = const_cast<char*>("example.com");
+  req.http.path = const_cast<char*>("/index.html");
   req.http.hdr_count = 1;
   req.http.hdrs = &hdr;
 
@@ -49,15 +49,15 @@
 }
 
 static void test_format_post_request(void) {
-  grpc_http_header hdr = {"x-yz", "abc"};
+  grpc_http_header hdr = {const_cast<char*>("x-yz"), const_cast<char*>("abc")};
   grpc_httpcli_request req;
   grpc_slice slice;
   char body_bytes[] = "fake body";
   size_t body_len = 9;
 
   memset(&req, 0, sizeof(req));
-  req.host = "example.com";
-  req.http.path = "/index.html";
+  req.host = const_cast<char*>("example.com");
+  req.http.path = const_cast<char*>("/index.html");
   req.http.hdr_count = 1;
   req.http.hdrs = &hdr;
 
@@ -79,13 +79,13 @@
 }
 
 static void test_format_post_request_no_body(void) {
-  grpc_http_header hdr = {"x-yz", "abc"};
+  grpc_http_header hdr = {const_cast<char*>("x-yz"), const_cast<char*>("abc")};
   grpc_httpcli_request req;
   grpc_slice slice;
 
   memset(&req, 0, sizeof(req));
-  req.host = "example.com";
-  req.http.path = "/index.html";
+  req.host = const_cast<char*>("example.com");
+  req.http.path = const_cast<char*>("/index.html");
   req.http.hdr_count = 1;
   req.http.hdrs = &hdr;
 
@@ -110,13 +110,13 @@
   char body_bytes[] = "fake%20body";
   size_t body_len = 11;
 
-  hdrs[0].key = "x-yz";
-  hdrs[0].value = "abc";
-  hdrs[1].key = "Content-Type";
-  hdrs[1].value = "application/x-www-form-urlencoded";
+  hdrs[0].key = const_cast<char*>("x-yz");
+  hdrs[0].value = const_cast<char*>("abc");
+  hdrs[1].key = const_cast<char*>("Content-Type");
+  hdrs[1].value = const_cast<char*>("application/x-www-form-urlencoded");
   memset(&req, 0, sizeof(req));
-  req.host = "example.com";
-  req.http.path = "/index.html";
+  req.host = const_cast<char*>("example.com");
+  req.http.path = const_cast<char*>("/index.html");
   req.http.hdr_count = 2;
   req.http.hdrs = hdrs;
 
diff --git a/test/core/http/httpcli_test.c b/test/core/http/httpcli_test.cc
similarity index 91%
rename from test/core/http/httpcli_test.c
rename to test/core/http/httpcli_test.cc
index 8c22b64..ac3c6a2 100644
--- a/test/core/http/httpcli_test.c
+++ b/test/core/http/httpcli_test.cc
@@ -44,7 +44,7 @@
   const char* expect =
       "<html><head><title>Hello world!</title></head>"
       "<body><p>This is a test</p></body></html>";
-  grpc_http_response* response = arg;
+  grpc_http_response* response = static_cast<grpc_http_response*>(arg);
   GPR_ASSERT(response);
   GPR_ASSERT(response->status == 200);
   GPR_ASSERT(response->body_length == strlen(expect));
@@ -70,7 +70,7 @@
 
   memset(&req, 0, sizeof(req));
   req.host = host;
-  req.http.path = "/get";
+  req.http.path = const_cast<char*>("/get");
   req.handshaker = &grpc_httpcli_plaintext;
 
   grpc_http_response response;
@@ -110,7 +110,7 @@
 
   memset(&req, 0, sizeof(req));
   req.host = host;
-  req.http.path = "/post";
+  req.http.path = const_cast<char*>("/post");
   req.handshaker = &grpc_httpcli_plaintext;
 
   grpc_http_response response;
@@ -139,7 +139,8 @@
 }
 
 static void destroy_pops(grpc_exec_ctx* exec_ctx, void* p, grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, grpc_polling_entity_pollset(p));
+  grpc_pollset_destroy(exec_ctx, grpc_polling_entity_pollset(
+                                     static_cast<grpc_polling_entity*>(p)));
 }
 
 int main(int argc, char** argv) {
@@ -154,7 +155,7 @@
   /* figure out where we are */
   char* root;
   if (lslash) {
-    root = gpr_malloc((size_t)(lslash - me + 1));
+    root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1)));
     memcpy(root, me, (size_t)(lslash - me));
     root[lslash - me] = 0;
   } else {
@@ -171,7 +172,7 @@
   }
 
   /* start the server */
-  args[1 + arg_shift] = "--port";
+  args[1 + arg_shift] = const_cast<char*>("--port");
   gpr_asprintf(&args[2 + arg_shift], "%d", port);
   server = gpr_subprocess_create(3 + arg_shift, (const char**)args);
   GPR_ASSERT(server);
@@ -186,7 +187,8 @@
   grpc_test_init(argc, argv);
   grpc_init();
   grpc_httpcli_context_init(&g_context);
-  grpc_pollset* pollset = gpr_zalloc(grpc_pollset_size());
+  grpc_pollset* pollset =
+      static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(pollset, &g_mu);
   g_pops = grpc_polling_entity_create_from_pollset(pollset);
 
diff --git a/test/core/http/httpscli_test.c b/test/core/http/httpscli_test.cc
similarity index 89%
rename from test/core/http/httpscli_test.c
rename to test/core/http/httpscli_test.cc
index b375d46..bf851b1 100644
--- a/test/core/http/httpscli_test.c
+++ b/test/core/http/httpscli_test.cc
@@ -44,7 +44,7 @@
   const char* expect =
       "<html><head><title>Hello world!</title></head>"
       "<body><p>This is a test</p></body></html>";
-  grpc_http_response* response = arg;
+  grpc_http_response* response = static_cast<grpc_http_response*>(arg);
   GPR_ASSERT(response);
   GPR_ASSERT(response->status == 200);
   GPR_ASSERT(response->body_length == strlen(expect));
@@ -70,8 +70,8 @@
 
   memset(&req, 0, sizeof(req));
   req.host = host;
-  req.ssl_host_override = "foo.test.google.fr";
-  req.http.path = "/get";
+  req.ssl_host_override = const_cast<char*>("foo.test.google.fr");
+  req.http.path = const_cast<char*>("/get");
   req.handshaker = &grpc_httpcli_ssl;
 
   grpc_http_response response;
@@ -111,8 +111,8 @@
 
   memset(&req, 0, sizeof(req));
   req.host = host;
-  req.ssl_host_override = "foo.test.google.fr";
-  req.http.path = "/post";
+  req.ssl_host_override = const_cast<char*>("foo.test.google.fr");
+  req.http.path = const_cast<char*>("/post");
   req.handshaker = &grpc_httpcli_ssl;
 
   grpc_http_response response;
@@ -141,7 +141,8 @@
 }
 
 static void destroy_pops(grpc_exec_ctx* exec_ctx, void* p, grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, grpc_polling_entity_pollset(p));
+  grpc_pollset_destroy(exec_ctx, grpc_polling_entity_pollset(
+                                     static_cast<grpc_polling_entity*>(p)));
 }
 
 int main(int argc, char** argv) {
@@ -156,7 +157,7 @@
   /* figure out where we are */
   char* root;
   if (lslash) {
-    root = gpr_malloc((size_t)(lslash - me + 1));
+    root = static_cast<char*>(gpr_malloc((size_t)(lslash - me + 1)));
     memcpy(root, me, (size_t)(lslash - me));
     root[lslash - me] = 0;
   } else {
@@ -173,9 +174,9 @@
   }
 
   /* start the server */
-  args[1 + arg_shift] = "--port";
+  args[1 + arg_shift] = const_cast<char*>("--port");
   gpr_asprintf(&args[2 + arg_shift], "%d", port);
-  args[3 + arg_shift] = "--ssl";
+  args[3 + arg_shift] = const_cast<char*>("--ssl");
   server = gpr_subprocess_create(4 + arg_shift, (const char**)args);
   GPR_ASSERT(server);
   gpr_free(args[0]);
@@ -189,7 +190,8 @@
   grpc_test_init(argc, argv);
   grpc_init();
   grpc_httpcli_context_init(&g_context);
-  grpc_pollset* pollset = gpr_zalloc(grpc_pollset_size());
+  grpc_pollset* pollset =
+      static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(pollset, &g_mu);
   g_pops = grpc_polling_entity_create_from_pollset(pollset);
 
diff --git a/test/core/http/parser_test.c b/test/core/http/parser_test.cc
similarity index 92%
rename from test/core/http/parser_test.c
rename to test/core/http/parser_test.cc
index 9a8528d..d0d2559 100644
--- a/test/core/http/parser_test.c
+++ b/test/core/http/parser_test.cc
@@ -29,9 +29,11 @@
 #include "test/core/util/test_config.h"
 
 static void test_request_succeeds(grpc_slice_split_mode split_mode,
-                                  char* request_text, char* expect_method,
+                                  const char* request_text,
+                                  const char* expect_method,
                                   grpc_http_version expect_version,
-                                  char* expect_path, char* expect_body, ...) {
+                                  const char* expect_path,
+                                  const char* expect_body, ...) {
   grpc_http_parser parser;
   grpc_slice input_slice = grpc_slice_from_copied_string(request_text);
   size_t num_slices;
@@ -87,8 +89,9 @@
   gpr_free(slices);
 }
 
-static void test_succeeds(grpc_slice_split_mode split_mode, char* response_text,
-                          int expect_status, char* expect_body, ...) {
+static void test_succeeds(grpc_slice_split_mode split_mode,
+                          const char* response_text, int expect_status,
+                          const char* expect_body, ...) {
   grpc_http_parser parser;
   grpc_slice input_slice = grpc_slice_from_copied_string(response_text);
   size_t num_slices;
@@ -141,7 +144,8 @@
   gpr_free(slices);
 }
 
-static void test_fails(grpc_slice_split_mode split_mode, char* response_text) {
+static void test_fails(grpc_slice_split_mode split_mode,
+                       const char* response_text) {
   grpc_http_parser parser;
   grpc_slice input_slice = grpc_slice_from_copied_string(response_text);
   size_t num_slices;
@@ -174,7 +178,7 @@
 }
 
 static void test_request_fails(grpc_slice_split_mode split_mode,
-                               char* request_text) {
+                               const char* request_text) {
   grpc_http_parser parser;
   grpc_slice input_slice = grpc_slice_from_copied_string(request_text);
   size_t num_slices;
@@ -286,7 +290,8 @@
     test_request_fails(split_modes[i], "GET / HTTP/1.2\r\n");
     test_request_fails(split_modes[i], "GET / HTTP/1.0\n");
 
-    tmp1 = gpr_malloc(2 * GRPC_HTTP_PARSER_MAX_HEADER_LENGTH);
+    tmp1 =
+        static_cast<char*>(gpr_malloc(2 * GRPC_HTTP_PARSER_MAX_HEADER_LENGTH));
     memset(tmp1, 'a', 2 * GRPC_HTTP_PARSER_MAX_HEADER_LENGTH - 1);
     tmp1[2 * GRPC_HTTP_PARSER_MAX_HEADER_LENGTH - 1] = 0;
     gpr_asprintf(&tmp2, "HTTP/1.0 200 OK\r\nxyz: %s\r\n\r\n", tmp1);
diff --git a/test/core/http/request_fuzzer.c b/test/core/http/request_fuzzer.cc
similarity index 93%
rename from test/core/http/request_fuzzer.c
rename to test/core/http/request_fuzzer.cc
index 3f68571..dfdb579 100644
--- a/test/core/http/request_fuzzer.c
+++ b/test/core/http/request_fuzzer.cc
@@ -27,7 +27,7 @@
 bool squelch = true;
 bool leak_check = true;
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   grpc_http_parser parser;
   grpc_http_request request;
   memset(&request, 0, sizeof(request));
diff --git a/test/core/http/response_fuzzer.c b/test/core/http/response_fuzzer.cc
similarity index 93%
rename from test/core/http/response_fuzzer.c
rename to test/core/http/response_fuzzer.cc
index b41a340..89ee676 100644
--- a/test/core/http/response_fuzzer.c
+++ b/test/core/http/response_fuzzer.cc
@@ -26,7 +26,7 @@
 bool squelch = true;
 bool leak_check = true;
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   grpc_http_parser parser;
   grpc_http_response response;
   memset(&response, 0, sizeof(response));
diff --git a/test/core/iomgr/BUILD b/test/core/iomgr/BUILD
index 7620d1d..41e2607 100644
--- a/test/core/iomgr/BUILD
+++ b/test/core/iomgr/BUILD
@@ -22,9 +22,9 @@
 
 grpc_cc_library(
     name = "endpoint_tests",
-    srcs = ["endpoint_tests.c"],
+    srcs = ["endpoint_tests.cc"],
     hdrs = ["endpoint_tests.h"],
-    language = "C",
+    language = "C++",
     visibility = ["//test:__subpackages__"],
     deps = [
         "//:gpr",
@@ -36,8 +36,8 @@
 
 grpc_cc_test(
     name = "combiner_test",
-    srcs = ["combiner_test.c"],
-    language = "C",
+    srcs = ["combiner_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -48,8 +48,8 @@
 
 grpc_cc_test(
     name = "endpoint_pair_test",
-    srcs = ["endpoint_pair_test.c"],
-    language = "C",
+    srcs = ["endpoint_pair_test.cc"],
+    language = "C++",
     deps = [
         ":endpoint_tests",
         "//:gpr",
@@ -61,20 +61,20 @@
 
 grpc_cc_test(
     name = "ev_epollsig_linux_test",
-    srcs = ["ev_epollsig_linux_test.c"],
+    srcs = ["ev_epollsig_linux_test.cc"],
     deps = [
         "//:gpr",
         "//:grpc",
         "//test/core/util:gpr_test_util",
         "//test/core/util:grpc_test_util",
     ],
-    language = "C",
+    language = "C++",
 )
 
 grpc_cc_test(
     name = "fd_conservation_posix_test",
-    srcs = ["fd_conservation_posix_test.c"],
-    language = "C",
+    srcs = ["fd_conservation_posix_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -85,8 +85,8 @@
 
 grpc_cc_test(
     name = "fd_posix_test",
-    srcs = ["fd_posix_test.c"],
-    language = "C",
+    srcs = ["fd_posix_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -97,8 +97,8 @@
 
 grpc_cc_test(
     name = "load_file_test",
-    srcs = ["load_file_test.c"],
-    language = "C",
+    srcs = ["load_file_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -109,8 +109,8 @@
 
 grpc_cc_test(
     name = "pollset_set_test",
-    srcs = ["pollset_set_test.c"],
-    language = "C",
+    srcs = ["pollset_set_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -121,8 +121,8 @@
 
 grpc_cc_test(
     name = "resolve_address_posix_test",
-    srcs = ["resolve_address_posix_test.c"],
-    language = "C",
+    srcs = ["resolve_address_posix_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -133,8 +133,8 @@
 
 grpc_cc_test(
     name = "resolve_address_test",
-    srcs = ["resolve_address_test.c"],
-    language = "C",
+    srcs = ["resolve_address_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -145,8 +145,8 @@
 
 grpc_cc_test(
     name = "resource_quota_test",
-    srcs = ["resource_quota_test.c"],
-    language = "C",
+    srcs = ["resource_quota_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -157,8 +157,8 @@
 
 grpc_cc_test(
     name = "sockaddr_utils_test",
-    srcs = ["sockaddr_utils_test.c"],
-    language = "C",
+    srcs = ["sockaddr_utils_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -169,8 +169,8 @@
 
 grpc_cc_test(
     name = "socket_utils_test",
-    srcs = ["socket_utils_test.c"],
-    language = "C",
+    srcs = ["socket_utils_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -181,8 +181,8 @@
 
 grpc_cc_test(
     name = "tcp_client_posix_test",
-    srcs = ["tcp_client_posix_test.c"],
-    language = "C",
+    srcs = ["tcp_client_posix_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -193,8 +193,8 @@
 
 grpc_cc_test(
     name = "tcp_posix_test",
-    srcs = ["tcp_posix_test.c"],
-    language = "C",
+    srcs = ["tcp_posix_test.cc"],
+    language = "C++",
     deps = [
         ":endpoint_tests",
         "//:gpr",
@@ -206,8 +206,8 @@
 
 grpc_cc_test(
     name = "tcp_server_posix_test",
-    srcs = ["tcp_server_posix_test.c"],
-    language = "C",
+    srcs = ["tcp_server_posix_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -218,8 +218,8 @@
 
 grpc_cc_test(
     name = "time_averaged_stats_test",
-    srcs = ["time_averaged_stats_test.c"],
-    language = "C",
+    srcs = ["time_averaged_stats_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -230,8 +230,8 @@
 
 grpc_cc_test(
     name = "timer_heap_test",
-    srcs = ["timer_heap_test.c"],
-    language = "C",
+    srcs = ["timer_heap_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -242,8 +242,8 @@
 
 grpc_cc_test(
     name = "timer_list_test",
-    srcs = ["timer_list_test.c"],
-    language = "C",
+    srcs = ["timer_list_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -254,8 +254,8 @@
 
 grpc_cc_test(
     name = "udp_server_test",
-    srcs = ["udp_server_test.c"],
-    language = "C",
+    srcs = ["udp_server_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -266,8 +266,8 @@
 
 grpc_cc_test(
     name = "wakeup_fd_cv_test",
-    srcs = ["wakeup_fd_cv_test.c"],
-    language = "C",
+    srcs = ["wakeup_fd_cv_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/iomgr/combiner_test.c b/test/core/iomgr/combiner_test.cc
similarity index 93%
rename from test/core/iomgr/combiner_test.c
rename to test/core/iomgr/combiner_test.cc
index 063bcb6..5a82536 100644
--- a/test/core/iomgr/combiner_test.c
+++ b/test/core/iomgr/combiner_test.cc
@@ -35,7 +35,7 @@
 
 static void set_event_to_true(grpc_exec_ctx* exec_ctx, void* value,
                               grpc_error* error) {
-  gpr_event_set(value, (void*)1);
+  gpr_event_set(static_cast<gpr_event*>(value), (void*)1);
 }
 
 static void test_execute_one(void) {
@@ -68,19 +68,19 @@
 } ex_args;
 
 static void check_one(grpc_exec_ctx* exec_ctx, void* a, grpc_error* error) {
-  ex_args* args = a;
+  ex_args* args = static_cast<ex_args*>(a);
   GPR_ASSERT(*args->ctr == args->value - 1);
   *args->ctr = args->value;
   gpr_free(a);
 }
 
 static void execute_many_loop(void* a) {
-  thd_args* args = a;
+  thd_args* args = static_cast<thd_args*>(a);
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   size_t n = 1;
   for (size_t i = 0; i < 10; i++) {
     for (size_t j = 0; j < 10000; j++) {
-      ex_args* c = gpr_malloc(sizeof(*c));
+      ex_args* c = static_cast<ex_args*>(gpr_malloc(sizeof(*c)));
       c->ctr = &args->ctr;
       c->value = n++;
       GRPC_CLOSURE_SCHED(&exec_ctx,
@@ -133,7 +133,8 @@
 static void add_finally(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
   GRPC_CLOSURE_SCHED(exec_ctx,
                      GRPC_CLOSURE_CREATE(in_finally, arg,
-                                         grpc_combiner_finally_scheduler(arg)),
+                                         grpc_combiner_finally_scheduler(
+                                             static_cast<grpc_combiner*>(arg))),
                      GRPC_ERROR_NONE);
 }
 
diff --git a/test/core/iomgr/endpoint_pair_test.c b/test/core/iomgr/endpoint_pair_test.cc
similarity index 86%
rename from test/core/iomgr/endpoint_pair_test.c
rename to test/core/iomgr/endpoint_pair_test.cc
index 795061f..30a0cb5 100644
--- a/test/core/iomgr/endpoint_pair_test.c
+++ b/test/core/iomgr/endpoint_pair_test.cc
@@ -34,10 +34,11 @@
     size_t slice_size) {
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_endpoint_test_fixture f;
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = (int)slice_size}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[1];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER;
+  a[0].value.integer = (int)slice_size;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   grpc_endpoint_pair p = grpc_iomgr_create_endpoint_pair("test", &args);
 
   f.client_ep = p.client;
@@ -55,7 +56,7 @@
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 int main(int argc, char** argv) {
@@ -63,7 +64,7 @@
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_test_init(argc, argv);
   grpc_init();
-  g_pollset = gpr_zalloc(grpc_pollset_size());
+  g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(g_pollset, &g_mu);
   grpc_endpoint_tests(configs[0], g_pollset, g_mu);
   GRPC_CLOSURE_INIT(&destroyed, destroy_pollset, g_pollset,
diff --git a/test/core/iomgr/endpoint_tests.c b/test/core/iomgr/endpoint_tests.cc
similarity index 100%
rename from test/core/iomgr/endpoint_tests.c
rename to test/core/iomgr/endpoint_tests.cc
diff --git a/test/core/iomgr/error_test.c b/test/core/iomgr/error_test.cc
similarity index 100%
rename from test/core/iomgr/error_test.c
rename to test/core/iomgr/error_test.cc
diff --git a/test/core/iomgr/ev_epollsig_linux_test.c b/test/core/iomgr/ev_epollsig_linux_test.cc
similarity index 96%
rename from test/core/iomgr/ev_epollsig_linux_test.c
rename to test/core/iomgr/ev_epollsig_linux_test.cc
index 2170f5c..3ee607d 100644
--- a/test/core/iomgr/ev_epollsig_linux_test.c
+++ b/test/core/iomgr/ev_epollsig_linux_test.cc
@@ -92,14 +92,15 @@
 static void test_pollset_init(test_pollset* pollsets, int num_pollsets) {
   int i;
   for (i = 0; i < num_pollsets; i++) {
-    pollsets[i].pollset = gpr_zalloc(grpc_pollset_size());
+    pollsets[i].pollset =
+        static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
     grpc_pollset_init(pollsets[i].pollset, &pollsets[i].mu);
   }
 }
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, (grpc_pollset*)p);
 }
 
 static void test_pollset_cleanup(grpc_exec_ctx* exec_ctx,
@@ -232,7 +233,7 @@
 static __thread int thread_wakeups = 0;
 
 static void test_threading_loop(void* arg) {
-  threading_shared* shared = arg;
+  threading_shared* shared = static_cast<threading_shared*>(arg);
   while (thread_wakeups < 1000000) {
     grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
     grpc_pollset_worker* worker;
@@ -247,7 +248,7 @@
 
 static void test_threading_wakeup(grpc_exec_ctx* exec_ctx, void* arg,
                                   grpc_error* error) {
-  threading_shared* shared = arg;
+  threading_shared* shared = static_cast<threading_shared*>(arg);
   ++shared->wakeups;
   ++thread_wakeups;
   if (error == GRPC_ERROR_NONE) {
@@ -261,7 +262,7 @@
 
 static void test_threading(void) {
   threading_shared shared;
-  shared.pollset = gpr_zalloc(grpc_pollset_size());
+  shared.pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(shared.pollset, &shared.mu);
 
   gpr_thd_id thds[10];
diff --git a/test/core/iomgr/fd_conservation_posix_test.c b/test/core/iomgr/fd_conservation_posix_test.cc
similarity index 100%
rename from test/core/iomgr/fd_conservation_posix_test.c
rename to test/core/iomgr/fd_conservation_posix_test.cc
diff --git a/test/core/iomgr/fd_posix_test.c b/test/core/iomgr/fd_posix_test.cc
similarity index 96%
rename from test/core/iomgr/fd_posix_test.c
rename to test/core/iomgr/fd_posix_test.cc
index d19ce18..c70187c 100644
--- a/test/core/iomgr/fd_posix_test.c
+++ b/test/core/iomgr/fd_posix_test.cc
@@ -113,7 +113,7 @@
    Close session FD and start to shutdown listen FD. */
 static void session_shutdown_cb(grpc_exec_ctx* exec_ctx, void* arg, /*session */
                                 bool success) {
-  session* se = arg;
+  session* se = static_cast<session*>(arg);
   server* sv = se->sv;
   grpc_fd_orphan(exec_ctx, se->em_fd, NULL, NULL, false /* already_closed */,
                  "a");
@@ -126,7 +126,7 @@
 /* Called when data become readable in a session. */
 static void session_read_cb(grpc_exec_ctx* exec_ctx, void* arg, /*session */
                             grpc_error* error) {
-  session* se = arg;
+  session* se = static_cast<session*>(arg);
   int fd = grpc_fd_wrapped_fd(se->em_fd);
 
   ssize_t read_once = 0;
@@ -171,7 +171,7 @@
    Close listen FD and signal that server can be shutdown. */
 static void listen_shutdown_cb(grpc_exec_ctx* exec_ctx, void* arg /*server */,
                                int success) {
-  server* sv = arg;
+  server* sv = static_cast<server*>(arg);
 
   grpc_fd_orphan(exec_ctx, sv->em_fd, NULL, NULL, false /* already_closed */,
                  "b");
@@ -186,7 +186,7 @@
 /* Called when a new TCP connection request arrives in the listening port. */
 static void listen_cb(grpc_exec_ctx* exec_ctx, void* arg, /*=sv_arg*/
                       grpc_error* error) {
-  server* sv = arg;
+  server* sv = static_cast<server*>(arg);
   int fd;
   int flags;
   session* se;
@@ -204,7 +204,7 @@
   GPR_ASSERT(fd < FD_SETSIZE);
   flags = fcntl(fd, F_GETFL, 0);
   fcntl(fd, F_SETFL, flags | O_NONBLOCK);
-  se = gpr_malloc(sizeof(*se));
+  se = static_cast<session*>(gpr_malloc(sizeof(*se)));
   se->sv = sv;
   se->em_fd = grpc_fd_create(fd, "listener");
   grpc_pollset_add_fd(exec_ctx, g_pollset, se->em_fd);
@@ -291,7 +291,7 @@
 /* Called when a client upload session is ready to shutdown. */
 static void client_session_shutdown_cb(grpc_exec_ctx* exec_ctx,
                                        void* arg /*client */, int success) {
-  client* cl = arg;
+  client* cl = static_cast<client*>(arg);
   grpc_fd_orphan(exec_ctx, cl->em_fd, NULL, NULL, false /* already_closed */,
                  "c");
   cl->done = 1;
@@ -302,7 +302,7 @@
 /* Write as much as possible, then register notify_on_write. */
 static void client_session_write(grpc_exec_ctx* exec_ctx, void* arg, /*client */
                                  grpc_error* error) {
-  client* cl = arg;
+  client* cl = static_cast<client*>(arg);
   int fd = grpc_fd_wrapped_fd(cl->em_fd);
   ssize_t write_once = 0;
 
@@ -409,7 +409,7 @@
 static void first_read_callback(grpc_exec_ctx* exec_ctx,
                                 void* arg /* fd_change_data */,
                                 grpc_error* error) {
-  fd_change_data* fdc = arg;
+  fd_change_data* fdc = static_cast<fd_change_data*>(arg);
 
   gpr_mu_lock(g_mu);
   fdc->cb_that_ran = first_read_callback;
@@ -421,7 +421,7 @@
 static void second_read_callback(grpc_exec_ctx* exec_ctx,
                                  void* arg /* fd_change_data */,
                                  grpc_error* error) {
-  fd_change_data* fdc = arg;
+  fd_change_data* fdc = static_cast<fd_change_data*>(arg);
 
   gpr_mu_lock(g_mu);
   fdc->cb_that_ran = second_read_callback;
@@ -516,7 +516,7 @@
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 int main(int argc, char** argv) {
@@ -524,7 +524,7 @@
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_test_init(argc, argv);
   grpc_init();
-  g_pollset = gpr_zalloc(grpc_pollset_size());
+  g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(g_pollset, &g_mu);
   test_grpc_fd();
   test_grpc_fd_change();
diff --git a/test/core/iomgr/load_file_test.c b/test/core/iomgr/load_file_test.cc
similarity index 97%
rename from test/core/iomgr/load_file_test.c
rename to test/core/iomgr/load_file_test.cc
index f079003..2c9e7c3 100644
--- a/test/core/iomgr/load_file_test.c
+++ b/test/core/iomgr/load_file_test.cc
@@ -122,7 +122,7 @@
   grpc_error* error;
   char* tmp_name;
   static const size_t buffer_size = 124631;
-  unsigned char* buffer = gpr_malloc(buffer_size);
+  unsigned char* buffer = static_cast<unsigned char*>(gpr_malloc(buffer_size));
   unsigned char* current;
   size_t i;
 
diff --git a/test/core/iomgr/pollset_set_test.c b/test/core/iomgr/pollset_set_test.cc
similarity index 98%
rename from test/core/iomgr/pollset_set_test.c
rename to test/core/iomgr/pollset_set_test.cc
index d8a8123..8d0198c 100644
--- a/test/core/iomgr/pollset_set_test.c
+++ b/test/core/iomgr/pollset_set_test.cc
@@ -67,14 +67,15 @@
 
 static void init_test_pollsets(test_pollset* pollsets, const int num_pollsets) {
   for (int i = 0; i < num_pollsets; i++) {
-    pollsets[i].ps = gpr_zalloc(grpc_pollset_size());
+    pollsets[i].ps =
+        static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
     grpc_pollset_init(pollsets[i].ps, &pollsets[i].mu);
   }
 }
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 static void cleanup_test_pollsets(grpc_exec_ctx* exec_ctx,
diff --git a/test/core/iomgr/resolve_address_posix_test.c b/test/core/iomgr/resolve_address_posix_test.cc
similarity index 93%
rename from test/core/iomgr/resolve_address_posix_test.c
rename to test/core/iomgr/resolve_address_posix_test.cc
index c5eb2c8..ba89fc8 100644
--- a/test/core/iomgr/resolve_address_posix_test.c
+++ b/test/core/iomgr/resolve_address_posix_test.cc
@@ -50,7 +50,7 @@
 
 void args_init(grpc_exec_ctx* exec_ctx, args_struct* args) {
   gpr_event_init(&args->ev);
-  args->pollset = gpr_zalloc(grpc_pollset_size());
+  args->pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(args->pollset, &args->mu);
   args->pollset_set = grpc_pollset_set_create();
   grpc_pollset_set_add_pollset(exec_ctx, args->pollset_set, args->pollset);
@@ -78,7 +78,7 @@
 }
 
 static void actually_poll(void* argsp) {
-  args_struct* args = argsp;
+  args_struct* args = static_cast<args_struct*>(argsp);
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_millis deadline = n_sec_deadline(10);
   while (true) {
@@ -109,7 +109,7 @@
 
 static void must_succeed(grpc_exec_ctx* exec_ctx, void* argsp,
                          grpc_error* err) {
-  args_struct* args = argsp;
+  args_struct* args = static_cast<args_struct*>(argsp);
   GPR_ASSERT(err == GRPC_ERROR_NONE);
   GPR_ASSERT(args->addrs != NULL);
   GPR_ASSERT(args->addrs->naddrs > 0);
@@ -117,7 +117,7 @@
 }
 
 static void must_fail(grpc_exec_ctx* exec_ctx, void* argsp, grpc_error* err) {
-  args_struct* args = argsp;
+  args_struct* args = static_cast<args_struct*>(argsp);
   GPR_ASSERT(err != GRPC_ERROR_NONE);
   gpr_atm_rel_store(&args->done_atm, 1);
 }
@@ -142,7 +142,8 @@
   const char prefix[] = "unix:/path/name";
   size_t path_name_length =
       GPR_ARRAY_SIZE(((struct sockaddr_un*)0)->sun_path) + 6;
-  char* path_name = gpr_malloc(sizeof(char) * path_name_length);
+  char* path_name =
+      static_cast<char*>(gpr_malloc(sizeof(char) * path_name_length));
   memset(path_name, 'a', path_name_length);
   memcpy(path_name, prefix, strlen(prefix) - 1);
   path_name[path_name_length - 1] = '\0';
diff --git a/test/core/iomgr/resolve_address_test.c b/test/core/iomgr/resolve_address_test.cc
similarity index 97%
rename from test/core/iomgr/resolve_address_test.c
rename to test/core/iomgr/resolve_address_test.cc
index 64a3539..0aa3e5f 100644
--- a/test/core/iomgr/resolve_address_test.c
+++ b/test/core/iomgr/resolve_address_test.cc
@@ -43,7 +43,7 @@
 
 void args_init(grpc_exec_ctx* exec_ctx, args_struct* args) {
   gpr_event_init(&args->ev);
-  args->pollset = gpr_zalloc(grpc_pollset_size());
+  args->pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(args->pollset, &args->mu);
   args->pollset_set = grpc_pollset_set_create();
   grpc_pollset_set_add_pollset(exec_ctx, args->pollset_set, args->pollset);
@@ -98,7 +98,7 @@
 
 static void must_succeed(grpc_exec_ctx* exec_ctx, void* argsp,
                          grpc_error* err) {
-  args_struct* args = argsp;
+  args_struct* args = static_cast<args_struct*>(argsp);
   GPR_ASSERT(err == GRPC_ERROR_NONE);
   GPR_ASSERT(args->addrs != NULL);
   GPR_ASSERT(args->addrs->naddrs > 0);
@@ -110,7 +110,7 @@
 }
 
 static void must_fail(grpc_exec_ctx* exec_ctx, void* argsp, grpc_error* err) {
-  args_struct* args = argsp;
+  args_struct* args = static_cast<args_struct*>(argsp);
   GPR_ASSERT(err != GRPC_ERROR_NONE);
   gpr_atm_rel_store(&args->done_atm, 1);
   gpr_mu_lock(args->mu);
diff --git a/test/core/iomgr/resource_quota_test.c b/test/core/iomgr/resource_quota_test.cc
similarity index 98%
rename from test/core/iomgr/resource_quota_test.c
rename to test/core/iomgr/resource_quota_test.cc
index 837fd01..8a2faae 100644
--- a/test/core/iomgr/resource_quota_test.c
+++ b/test/core/iomgr/resource_quota_test.cc
@@ -55,18 +55,20 @@
   grpc_resource_user* resource_user;
   grpc_closure* then;
 } reclaimer_args;
+
 static void reclaimer_cb(grpc_exec_ctx* exec_ctx, void* args,
                          grpc_error* error) {
   GPR_ASSERT(error == GRPC_ERROR_NONE);
-  reclaimer_args* a = args;
+  reclaimer_args* a = static_cast<reclaimer_args*>(args);
   grpc_resource_user_free(exec_ctx, a->resource_user, a->size);
   grpc_resource_user_finish_reclamation(exec_ctx, a->resource_user);
   GRPC_CLOSURE_RUN(exec_ctx, a->then, GRPC_ERROR_NONE);
   gpr_free(a);
 }
+
 grpc_closure* make_reclaimer(grpc_resource_user* resource_user, size_t size,
                              grpc_closure* then) {
-  reclaimer_args* a = gpr_malloc(sizeof(*a));
+  reclaimer_args* a = static_cast<reclaimer_args*>(gpr_malloc(sizeof(*a)));
   a->size = size;
   a->resource_user = resource_user;
   a->then = then;
@@ -76,7 +78,7 @@
 static void unused_reclaimer_cb(grpc_exec_ctx* exec_ctx, void* arg,
                                 grpc_error* error) {
   GPR_ASSERT(error == GRPC_ERROR_CANCELLED);
-  GRPC_CLOSURE_RUN(exec_ctx, arg, GRPC_ERROR_NONE);
+  GRPC_CLOSURE_RUN(exec_ctx, static_cast<grpc_closure*>(arg), GRPC_ERROR_NONE);
 }
 grpc_closure* make_unused_reclaimer(grpc_closure* then) {
   return GRPC_CLOSURE_CREATE(unused_reclaimer_cb, then,
diff --git a/test/core/iomgr/sockaddr_utils_test.c b/test/core/iomgr/sockaddr_utils_test.cc
similarity index 100%
rename from test/core/iomgr/sockaddr_utils_test.c
rename to test/core/iomgr/sockaddr_utils_test.cc
diff --git a/test/core/iomgr/socket_utils_test.c b/test/core/iomgr/socket_utils_test.cc
similarity index 100%
rename from test/core/iomgr/socket_utils_test.c
rename to test/core/iomgr/socket_utils_test.cc
diff --git a/test/core/iomgr/tcp_client_posix_test.c b/test/core/iomgr/tcp_client_posix_test.cc
similarity index 97%
rename from test/core/iomgr/tcp_client_posix_test.c
rename to test/core/iomgr/tcp_client_posix_test.cc
index 84b4041..206fa5d 100644
--- a/test/core/iomgr/tcp_client_posix_test.c
+++ b/test/core/iomgr/tcp_client_posix_test.cc
@@ -189,7 +189,7 @@
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 int main(int argc, char** argv) {
@@ -198,7 +198,7 @@
   grpc_test_init(argc, argv);
   grpc_init();
   g_pollset_set = grpc_pollset_set_create();
-  g_pollset = gpr_zalloc(grpc_pollset_size());
+  g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(g_pollset, &g_mu);
   grpc_pollset_set_add_pollset(&exec_ctx, g_pollset_set, g_pollset);
   grpc_exec_ctx_finish(&exec_ctx);
diff --git a/test/core/iomgr/tcp_client_uv_test.c b/test/core/iomgr/tcp_client_uv_test.cc
similarity index 95%
rename from test/core/iomgr/tcp_client_uv_test.c
rename to test/core/iomgr/tcp_client_uv_test.cc
index 978e3fa..101d7bf 100644
--- a/test/core/iomgr/tcp_client_uv_test.c
+++ b/test/core/iomgr/tcp_client_uv_test.cc
@@ -75,7 +75,8 @@
 static void close_cb(uv_handle_t* handle) { gpr_free(handle); }
 
 static void connection_cb(uv_stream_t* server, int status) {
-  uv_tcp_t* client_handle = gpr_malloc(sizeof(uv_tcp_t));
+  uv_tcp_t* client_handle =
+      static_cast<uv_tcp_t*>(gpr_malloc(sizeof(uv_tcp_t)));
   GPR_ASSERT(0 == status);
   GPR_ASSERT(0 == uv_tcp_init(uv_default_loop(), client_handle));
   GPR_ASSERT(0 == uv_accept(server, (uv_stream_t*)client_handle));
@@ -85,7 +86,7 @@
 void test_succeeds(void) {
   grpc_resolved_address resolved_addr;
   struct sockaddr_in* addr = (struct sockaddr_in*)resolved_addr.addr;
-  uv_tcp_t* svr_handle = gpr_malloc(sizeof(uv_tcp_t));
+  uv_tcp_t* svr_handle = static_cast<uv_tcp_t*>(gpr_malloc(sizeof(uv_tcp_t)));
   int connections_complete_before;
   grpc_closure done;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -186,7 +187,7 @@
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 int main(int argc, char** argv) {
@@ -194,7 +195,7 @@
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_test_init(argc, argv);
   grpc_init();
-  g_pollset = gpr_malloc(grpc_pollset_size());
+  g_pollset = static_cast<grpc_pollset*>(gpr_malloc(grpc_pollset_size()));
   grpc_pollset_init(g_pollset, &g_mu);
   grpc_exec_ctx_finish(&exec_ctx);
   test_succeeds();
diff --git a/test/core/iomgr/tcp_posix_test.c b/test/core/iomgr/tcp_posix_test.cc
similarity index 93%
rename from test/core/iomgr/tcp_posix_test.c
rename to test/core/iomgr/tcp_posix_test.cc
index 916bb9f..51ab0bf 100644
--- a/test/core/iomgr/tcp_posix_test.c
+++ b/test/core/iomgr/tcp_posix_test.cc
@@ -171,10 +171,10 @@
 
   create_sockets(sv);
 
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = (int)slice_size}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[1];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER, a[0].value.integer = (int)slice_size;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "read_test"), &args,
                        "test");
   grpc_endpoint_add_to_pollset(&exec_ctx, ep, g_pollset);
@@ -223,10 +223,11 @@
 
   create_sockets(sv);
 
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = (int)slice_size}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[1];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER;
+  a[0].value.integer = (int)slice_size;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "large_read_test"),
                        &args, "test");
   grpc_endpoint_add_to_pollset(&exec_ctx, ep, g_pollset);
@@ -363,10 +364,10 @@
 
   create_sockets(sv);
 
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = (int)slice_size}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[1];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER, a[0].value.integer = (int)slice_size;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "write_test"), &args,
                        "test");
   grpc_endpoint_add_to_pollset(&exec_ctx, ep, g_pollset);
@@ -433,10 +434,11 @@
 
   create_sockets(sv);
 
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = (int)slice_size}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[1];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER;
+  a[0].value.integer = (int)slice_size;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   ep = grpc_tcp_create(&exec_ctx, grpc_fd_create(sv[1], "read_test"), &args,
                        "test");
   GPR_ASSERT(grpc_tcp_fd(ep) == sv[1] && sv[1] >= 0);
@@ -525,10 +527,11 @@
   create_sockets(sv);
   grpc_resource_quota* resource_quota =
       grpc_resource_quota_create("tcp_posix_test_socketpair");
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = (int)slice_size}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[1];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER;
+  a[0].value.integer = (int)slice_size;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   f.client_ep = grpc_tcp_create(
       &exec_ctx, grpc_fd_create(sv[0], "fixture:client"), &args, "test");
   f.server_ep = grpc_tcp_create(
diff --git a/test/core/iomgr/tcp_server_posix_test.c b/test/core/iomgr/tcp_server_posix_test.cc
similarity index 96%
rename from test/core/iomgr/tcp_server_posix_test.c
rename to test/core/iomgr/tcp_server_posix_test.cc
index 4f91669..6efa74c 100644
--- a/test/core/iomgr/tcp_server_posix_test.c
+++ b/test/core/iomgr/tcp_server_posix_test.cc
@@ -112,7 +112,7 @@
 
 static void server_weak_ref_shutdown(grpc_exec_ctx* exec_ctx, void* arg,
                                      grpc_error* error) {
-  server_weak_ref* weak_ref = arg;
+  server_weak_ref* weak_ref = static_cast<server_weak_ref*>(arg);
   weak_ref->server = NULL;
 }
 
@@ -429,22 +429,25 @@
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 int main(int argc, char** argv) {
   grpc_closure destroyed;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  grpc_arg chan_args[] = {
-      {GRPC_ARG_INTEGER, GRPC_ARG_EXPAND_WILDCARD_ADDRS, {.integer = 1}}};
+  grpc_arg chan_args[1];
+  chan_args[0].type = GRPC_ARG_INTEGER;
+  chan_args[0].key = const_cast<char*>(GRPC_ARG_EXPAND_WILDCARD_ADDRS);
+  chan_args[0].value.integer = 1;
   const grpc_channel_args channel_args = {1, chan_args};
   struct ifaddrs* ifa = NULL;
   struct ifaddrs* ifa_it;
   // Zalloc dst_addrs to avoid oversized frames.
-  test_addrs* dst_addrs = gpr_zalloc(sizeof(*dst_addrs));
+  test_addrs* dst_addrs =
+      static_cast<test_addrs*>(gpr_zalloc(sizeof(*dst_addrs)));
   grpc_test_init(argc, argv);
   grpc_init();
-  g_pollset = gpr_zalloc(grpc_pollset_size());
+  g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(g_pollset, &g_mu);
 
   test_no_op();
diff --git a/test/core/iomgr/tcp_server_uv_test.c b/test/core/iomgr/tcp_server_uv_test.cc
similarity index 96%
rename from test/core/iomgr/tcp_server_uv_test.c
rename to test/core/iomgr/tcp_server_uv_test.cc
index f2047c9..dd047a0 100644
--- a/test/core/iomgr/tcp_server_uv_test.c
+++ b/test/core/iomgr/tcp_server_uv_test.cc
@@ -76,7 +76,7 @@
 
 static void server_weak_ref_shutdown(grpc_exec_ctx* exec_ctx, void* arg,
                                      grpc_error* error) {
-  server_weak_ref* weak_ref = arg;
+  server_weak_ref* weak_ref = static_cast<server_weak_ref*>(arg);
   weak_ref->server = NULL;
 }
 
@@ -190,8 +190,10 @@
 static void tcp_connect(grpc_exec_ctx* exec_ctx, const struct sockaddr* remote,
                         socklen_t remote_len, on_connect_result* result) {
   gpr_timespec deadline = grpc_timeout_seconds_to_deadline(10);
-  uv_tcp_t* client_handle = gpr_malloc(sizeof(uv_tcp_t));
-  uv_connect_t* req = gpr_malloc(sizeof(uv_connect_t));
+  uv_tcp_t* client_handle =
+      static_cast<uv_tcp_t*>(gpr_malloc(sizeof(uv_tcp_t)));
+  uv_connect_t* req =
+      static_cast<uv_connect_t*>(gpr_malloc(sizeof(uv_connect_t)));
   int nconnects_before;
 
   gpr_mu_lock(g_mu);
@@ -291,7 +293,7 @@
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 int main(int argc, char** argv) {
@@ -299,7 +301,7 @@
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_test_init(argc, argv);
   grpc_init();
-  g_pollset = gpr_malloc(grpc_pollset_size());
+  g_pollset = static_cast<grpc_pollset*>(gpr_malloc(grpc_pollset_size()));
   grpc_pollset_init(g_pollset, &g_mu);
 
   test_no_op();
diff --git a/test/core/iomgr/time_averaged_stats_test.c b/test/core/iomgr/time_averaged_stats_test.cc
similarity index 100%
rename from test/core/iomgr/time_averaged_stats_test.c
rename to test/core/iomgr/time_averaged_stats_test.cc
diff --git a/test/core/iomgr/timer_heap_test.c b/test/core/iomgr/timer_heap_test.cc
similarity index 95%
rename from test/core/iomgr/timer_heap_test.c
rename to test/core/iomgr/timer_heap_test.cc
index e0ab7b5..20a3833 100644
--- a/test/core/iomgr/timer_heap_test.c
+++ b/test/core/iomgr/timer_heap_test.cc
@@ -35,7 +35,8 @@
 static gpr_atm random_deadline(void) { return rand(); }
 
 static grpc_timer* create_test_elements(size_t num_elements) {
-  grpc_timer* elems = gpr_malloc(num_elements * sizeof(grpc_timer));
+  grpc_timer* elems =
+      static_cast<grpc_timer*>(gpr_malloc(num_elements * sizeof(grpc_timer)));
   size_t i;
   for (i = 0; i < num_elements; i++) {
     elems[i].deadline = random_deadline();
@@ -75,7 +76,7 @@
   const size_t num_test_operations = 10000;
   size_t i;
   grpc_timer* test_elements = create_test_elements(num_test_elements);
-  uint8_t* inpq = gpr_malloc(num_test_elements);
+  uint8_t* inpq = static_cast<uint8_t*>(gpr_malloc(num_test_elements));
 
   gpr_log(GPR_INFO, "test1");
 
@@ -135,7 +136,8 @@
 
 static elem_struct* search_elems(elem_struct* elems, size_t count,
                                  bool inserted) {
-  size_t* search_order = gpr_malloc(count * sizeof(*search_order));
+  size_t* search_order =
+      static_cast<size_t*>(gpr_malloc(count * sizeof(*search_order)));
   for (size_t i = 0; i < count; i++) {
     search_order[i] = i;
   }
@@ -160,7 +162,8 @@
   grpc_timer_heap pq;
 
   static const size_t elems_size = 1000;
-  elem_struct* elems = gpr_malloc(elems_size * sizeof(elem_struct));
+  elem_struct* elems =
+      static_cast<elem_struct*>(gpr_malloc(elems_size * sizeof(elem_struct)));
   size_t num_inserted = 0;
 
   grpc_timer_heap_init(&pq);
diff --git a/test/core/iomgr/timer_list_test.c b/test/core/iomgr/timer_list_test.cc
similarity index 97%
rename from test/core/iomgr/timer_list_test.c
rename to test/core/iomgr/timer_list_test.cc
index d530dfb..8783c5c6 100644
--- a/test/core/iomgr/timer_list_test.c
+++ b/test/core/iomgr/timer_list_test.cc
@@ -31,8 +31,8 @@
 
 #define MAX_CB 30
 
-extern grpc_tracer_flag grpc_timer_trace;
-extern grpc_tracer_flag grpc_timer_check_trace;
+extern "C" grpc_tracer_flag grpc_timer_trace;
+extern "C" grpc_tracer_flag grpc_timer_check_trace;
 
 static int cb_called[MAX_CB][2];
 
diff --git a/test/core/iomgr/udp_server_test.c b/test/core/iomgr/udp_server_test.cc
similarity index 97%
rename from test/core/iomgr/udp_server_test.c
rename to test/core/iomgr/udp_server_test.cc
index 4eb5ce1..4e8f234 100644
--- a/test/core/iomgr/udp_server_test.c
+++ b/test/core/iomgr/udp_server_test.cc
@@ -118,7 +118,8 @@
     test_socket_factory_compare, test_socket_factory_destroy};
 
 static test_socket_factory* test_socket_factory_create(void) {
-  test_socket_factory* factory = gpr_malloc(sizeof(test_socket_factory));
+  test_socket_factory* factory = static_cast<test_socket_factory*>(
+      gpr_malloc(sizeof(test_socket_factory)));
   grpc_socket_factory_init(&factory->base, &test_socket_factory_vtable);
   factory->number_of_socket_calls = 0;
   factory->number_of_bind_calls = 0;
@@ -292,7 +293,7 @@
 
 static void destroy_pollset(grpc_exec_ctx* exec_ctx, void* p,
                             grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, p);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(p));
 }
 
 int main(int argc, char** argv) {
@@ -300,7 +301,7 @@
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   grpc_test_init(argc, argv);
   grpc_init();
-  g_pollset = gpr_zalloc(grpc_pollset_size());
+  g_pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(g_pollset, &g_mu);
 
   test_no_op();
diff --git a/test/core/iomgr/wakeup_fd_cv_test.c b/test/core/iomgr/wakeup_fd_cv_test.cc
similarity index 100%
rename from test/core/iomgr/wakeup_fd_cv_test.c
rename to test/core/iomgr/wakeup_fd_cv_test.cc
diff --git a/test/core/json/BUILD b/test/core/json/BUILD
index 3ff7918..b8b36c0 100644
--- a/test/core/json/BUILD
+++ b/test/core/json/BUILD
@@ -22,8 +22,8 @@
 
 grpc_fuzzer(
     name = "json_fuzzer",
-    srcs = ["fuzzer.c"],
-    language = "C",
+    srcs = ["fuzzer.cc"],
+    language = "C++",
     corpus = "corpus",
     deps = [
         "//:gpr",
@@ -35,8 +35,8 @@
 grpc_cc_binary(
     name = "json_rewrite",
     testonly = 1,
-    srcs = ["json_rewrite.c"],
-    language = "C",
+    srcs = ["json_rewrite.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -47,8 +47,8 @@
 
 grpc_cc_test(
     name = "json_rewrite_test",
-    srcs = ["json_rewrite_test.c"],
-    language = "C",
+    srcs = ["json_rewrite_test.cc"],
+    language = "C++",
     data = [
         "rewrite_test_input.json",
         "rewrite_test_output_condensed.json",
@@ -65,8 +65,8 @@
 
 grpc_cc_test(
     name = "json_stream_error_test",
-    srcs = ["json_stream_error_test.c"],
-    language = "C",
+    srcs = ["json_stream_error_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -77,8 +77,8 @@
 
 grpc_cc_test(
     name = "json_test",
-    srcs = ["json_test.c"],
-    language = "C",
+    srcs = ["json_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/json/fuzzer.c b/test/core/json/fuzzer.cc
similarity index 90%
rename from test/core/json/fuzzer.c
rename to test/core/json/fuzzer.cc
index 2738868..6dafabb 100644
--- a/test/core/json/fuzzer.c
+++ b/test/core/json/fuzzer.cc
@@ -29,11 +29,11 @@
 bool squelch = true;
 bool leak_check = true;
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   char* s;
   struct grpc_memory_counters counters;
   grpc_memory_counters_init();
-  s = gpr_malloc(size);
+  s = static_cast<char*>(gpr_malloc(size));
   memcpy(s, data, size);
   grpc_json* x;
   if ((x = grpc_json_parse_string_with_len(s, size))) {
diff --git a/test/core/json/json_rewrite.c b/test/core/json/json_rewrite.cc
similarity index 82%
rename from test/core/json/json_rewrite.c
rename to test/core/json/json_rewrite.cc
index 3bd50e6..98e76e9 100644
--- a/test/core/json/json_rewrite.c
+++ b/test/core/json/json_rewrite.cc
@@ -47,18 +47,18 @@
 } json_reader_userdata;
 
 static void json_writer_output_char(void* userdata, char c) {
-  json_writer_userdata* state = userdata;
+  json_writer_userdata* state = static_cast<json_writer_userdata*>(userdata);
   fputc(c, state->out);
 }
 
 static void json_writer_output_string(void* userdata, const char* str) {
-  json_writer_userdata* state = userdata;
+  json_writer_userdata* state = static_cast<json_writer_userdata*>(userdata);
   fputs(str, state->out);
 }
 
 static void json_writer_output_string_with_len(void* userdata, const char* str,
                                                size_t len) {
-  json_writer_userdata* state = userdata;
+  json_writer_userdata* state = static_cast<json_writer_userdata*>(userdata);
   fwrite(str, len, 1, state->out);
 }
 
@@ -70,19 +70,20 @@
   if (state->free_space >= needed) return;
   needed -= state->free_space;
   needed = (needed + 0xffu) & ~0xffu;
-  state->scratchpad = gpr_realloc(state->scratchpad, state->allocated + needed);
+  state->scratchpad = static_cast<char*>(
+      gpr_realloc(state->scratchpad, state->allocated + needed));
   state->free_space += needed;
   state->allocated += needed;
 }
 
 static void json_reader_string_clear(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   state->free_space = state->allocated;
   state->string_len = 0;
 }
 
 static void json_reader_string_add_char(void* userdata, uint32_t c) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   check_string(state, 1);
   GPR_ASSERT(c < 256);
   state->scratchpad[state->string_len++] = (char)c;
@@ -117,7 +118,7 @@
 
 static uint32_t json_reader_read_char(void* userdata) {
   int r;
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   r = fgetc(state->in);
   if (r == EOF) r = GRPC_JSON_READ_CHAR_EOF;
@@ -125,8 +126,9 @@
 }
 
 static void json_reader_container_begins(void* userdata, grpc_json_type type) {
-  json_reader_userdata* state = userdata;
-  stacked_container* container = gpr_malloc(sizeof(stacked_container));
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
+  stacked_container* container =
+      static_cast<stacked_container*>(gpr_malloc(sizeof(stacked_container)));
 
   container->type = type;
   container->next = state->top;
@@ -136,7 +138,7 @@
 }
 
 static grpc_json_type json_reader_container_ends(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   stacked_container* container = state->top;
 
   grpc_json_writer_container_ends(state->writer, container->type);
@@ -146,21 +148,21 @@
 }
 
 static void json_reader_set_key(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   json_reader_string_add_char(userdata, 0);
 
   grpc_json_writer_object_key(state->writer, state->scratchpad);
 }
 
 static void json_reader_set_string(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   json_reader_string_add_char(userdata, 0);
 
   grpc_json_writer_value_string(state->writer, state->scratchpad);
 }
 
 static int json_reader_set_number(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, state->scratchpad,
                                       state->string_len);
@@ -169,19 +171,19 @@
 }
 
 static void json_reader_set_true(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, "true", 4);
 }
 
 static void json_reader_set_false(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, "false", 5);
 }
 
 static void json_reader_set_null(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, "null", 4);
 }
diff --git a/test/core/json/json_rewrite_test.c b/test/core/json/json_rewrite_test.cc
similarity index 87%
rename from test/core/json/json_rewrite_test.c
rename to test/core/json/json_rewrite_test.cc
index a83989f..47b4f01 100644
--- a/test/core/json/json_rewrite_test.c
+++ b/test/core/json/json_rewrite_test.cc
@@ -49,7 +49,7 @@
 } json_reader_userdata;
 
 static void json_writer_output_char(void* userdata, char c) {
-  json_writer_userdata* state = userdata;
+  json_writer_userdata* state = static_cast<json_writer_userdata*>(userdata);
   int cmp = fgetc(state->cmp);
 
   /* treat CRLF as LF */
@@ -81,19 +81,20 @@
   if (state->free_space >= needed) return;
   needed -= state->free_space;
   needed = (needed + 0xffu) & ~0xffu;
-  state->scratchpad = gpr_realloc(state->scratchpad, state->allocated + needed);
+  state->scratchpad = static_cast<char*>(
+      gpr_realloc(state->scratchpad, state->allocated + needed));
   state->free_space += needed;
   state->allocated += needed;
 }
 
 static void json_reader_string_clear(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   state->free_space = state->allocated;
   state->string_len = 0;
 }
 
 static void json_reader_string_add_char(void* userdata, uint32_t c) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   check_string(state, 1);
   GPR_ASSERT(c <= 256);
   state->scratchpad[state->string_len++] = (char)c;
@@ -128,7 +129,7 @@
 
 static uint32_t json_reader_read_char(void* userdata) {
   int r;
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   if (!state->did_eagain) {
     state->did_eagain = 1;
@@ -143,8 +144,9 @@
 }
 
 static void json_reader_container_begins(void* userdata, grpc_json_type type) {
-  json_reader_userdata* state = userdata;
-  stacked_container* container = gpr_malloc(sizeof(stacked_container));
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
+  stacked_container* container =
+      static_cast<stacked_container*>(gpr_malloc(sizeof(stacked_container)));
 
   container->type = type;
   container->next = state->top;
@@ -154,7 +156,7 @@
 }
 
 static grpc_json_type json_reader_container_ends(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   stacked_container* container = state->top;
 
   grpc_json_writer_container_ends(state->writer, container->type);
@@ -164,21 +166,21 @@
 }
 
 static void json_reader_set_key(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   json_reader_string_add_char(userdata, 0);
 
   grpc_json_writer_object_key(state->writer, state->scratchpad);
 }
 
 static void json_reader_set_string(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
   json_reader_string_add_char(userdata, 0);
 
   grpc_json_writer_value_string(state->writer, state->scratchpad);
 }
 
 static int json_reader_set_number(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, state->scratchpad,
                                       state->string_len);
@@ -187,19 +189,19 @@
 }
 
 static void json_reader_set_true(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, "true", 4);
 }
 
 static void json_reader_set_false(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, "false", 5);
 }
 
 static void json_reader_set_null(void* userdata) {
-  json_reader_userdata* state = userdata;
+  json_reader_userdata* state = static_cast<json_reader_userdata*>(userdata);
 
   grpc_json_writer_value_raw_with_len(state->writer, "null", 4);
 }
diff --git a/test/core/json/json_stream_error_test.c b/test/core/json/json_stream_error_test.cc
similarity index 100%
rename from test/core/json/json_stream_error_test.c
rename to test/core/json/json_stream_error_test.cc
diff --git a/test/core/json/json_test.c b/test/core/json/json_test.cc
similarity index 100%
rename from test/core/json/json_test.c
rename to test/core/json/json_test.cc
diff --git a/test/core/memory_usage/client.c b/test/core/memory_usage/client.cc
similarity index 99%
rename from test/core/memory_usage/client.c
rename to test/core/memory_usage/client.cc
index cd84c4e..74ec4b0 100644
--- a/test/core/memory_usage/client.c
+++ b/test/core/memory_usage/client.cc
@@ -183,7 +183,7 @@
   grpc_slice slice = grpc_slice_from_copied_string("x");
   char* fake_argv[1];
 
-  char* target = "localhost:443";
+  const char* target = "localhost:443";
   gpr_cmdline* cl;
   grpc_event event;
 
diff --git a/test/core/memory_usage/memory_usage_test.c b/test/core/memory_usage/memory_usage_test.cc
similarity index 89%
rename from test/core/memory_usage/memory_usage_test.c
rename to test/core/memory_usage/memory_usage_test.cc
index 258bf75..58e31c9 100644
--- a/test/core/memory_usage/memory_usage_test.c
+++ b/test/core/memory_usage/memory_usage_test.cc
@@ -44,9 +44,9 @@
   /* start the server */
   gpr_asprintf(&args[0], "%s/memory_profile_server%s", root,
                gpr_subprocess_binary_extension());
-  args[1] = "--bind";
+  args[1] = const_cast<char*>("--bind");
   gpr_join_host_port(&args[2], "::", port);
-  args[3] = "--no-secure";
+  args[3] = const_cast<char*>("--no-secure");
   svr = gpr_subprocess_create(4, (const char**)args);
   gpr_free(args[0]);
   gpr_free(args[2]);
@@ -54,10 +54,10 @@
   /* start the client */
   gpr_asprintf(&args[0], "%s/memory_profile_client%s", root,
                gpr_subprocess_binary_extension());
-  args[1] = "--target";
+  args[1] = const_cast<char*>("--target");
   gpr_join_host_port(&args[2], "127.0.0.1", port);
-  args[3] = "--warmup=1000";
-  args[4] = "--benchmark=9000";
+  args[3] = const_cast<char*>("--warmup=1000");
+  args[4] = const_cast<char*>("--benchmark=9000");
   cli = gpr_subprocess_create(5, (const char**)args);
   gpr_free(args[0]);
   gpr_free(args[2]);
diff --git a/test/core/memory_usage/server.c b/test/core/memory_usage/server.cc
similarity index 98%
rename from test/core/memory_usage/server.c
rename to test/core/memory_usage/server.cc
index cc2cf75..04e55db 100644
--- a/test/core/memory_usage/server.c
+++ b/test/core/memory_usage/server.cc
@@ -151,7 +151,7 @@
   int shutdown_finished = 0;
 
   int secure = 0;
-  char* addr = NULL;
+  const char* addr = NULL;
 
   char* fake_argv[1];
 
@@ -232,7 +232,7 @@
         gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
                      gpr_time_from_micros(1000000, GPR_TIMESPAN)),
         NULL);
-    fling_call* s = ev.tag;
+    fling_call* s = static_cast<fling_call*>(ev.tag);
     switch (ev.type) {
       case GRPC_OP_COMPLETE:
         switch (s->state) {
diff --git a/test/core/nanopb/BUILD b/test/core/nanopb/BUILD
index f332207..1497f82 100644
--- a/test/core/nanopb/BUILD
+++ b/test/core/nanopb/BUILD
@@ -22,8 +22,8 @@
 
 grpc_fuzzer(
     name = "fuzzer_response",
-    srcs = ["fuzzer_response.c"],
-    language = "C",
+    srcs = ["fuzzer_response.cc"],
+    language = "C++",
     corpus = "corpus_response",
     deps = [
         "//:gpr",
@@ -34,8 +34,8 @@
 
 grpc_fuzzer(
     name = "fuzzer_serverlist",
-    srcs = ["fuzzer_serverlist.c"],
-    language = "C",
+    srcs = ["fuzzer_serverlist.cc"],
+    language = "C++",
     corpus = "corpus_serverlist",
     deps = [
         "//:gpr",
diff --git a/test/core/nanopb/fuzzer_response.c b/test/core/nanopb/fuzzer_response.cc
similarity index 93%
rename from test/core/nanopb/fuzzer_response.c
rename to test/core/nanopb/fuzzer_response.cc
index 42826c1..7039c80 100644
--- a/test/core/nanopb/fuzzer_response.c
+++ b/test/core/nanopb/fuzzer_response.cc
@@ -28,7 +28,7 @@
 
 static void dont_log(gpr_log_func_args* args) {}
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   if (squelch) gpr_set_log_function(dont_log);
   grpc_slice slice = grpc_slice_from_copied_buffer((const char*)data, size);
   grpc_grpclb_initial_response* response;
diff --git a/test/core/nanopb/fuzzer_serverlist.c b/test/core/nanopb/fuzzer_serverlist.cc
similarity index 93%
rename from test/core/nanopb/fuzzer_serverlist.c
rename to test/core/nanopb/fuzzer_serverlist.cc
index 059e33d..0a6b176 100644
--- a/test/core/nanopb/fuzzer_serverlist.c
+++ b/test/core/nanopb/fuzzer_serverlist.cc
@@ -28,7 +28,7 @@
 
 static void dont_log(gpr_log_func_args* args) {}
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   if (squelch) gpr_set_log_function(dont_log);
   grpc_slice slice = grpc_slice_from_copied_buffer((const char*)data, size);
   grpc_grpclb_serverlist* serverlist;
diff --git a/test/core/network_benchmarks/BUILD b/test/core/network_benchmarks/BUILD
index 0e15393..e1b4953 100644
--- a/test/core/network_benchmarks/BUILD
+++ b/test/core/network_benchmarks/BUILD
@@ -22,8 +22,8 @@
 
 grpc_cc_binary(
     name = "low_level_ping_pong",
-    srcs = ["low_level_ping_pong.c"],
-    language = "C",
+    srcs = ["low_level_ping_pong.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/network_benchmarks/low_level_ping_pong.c b/test/core/network_benchmarks/low_level_ping_pong.cc
similarity index 94%
rename from test/core/network_benchmarks/low_level_ping_pong.c
rename to test/core/network_benchmarks/low_level_ping_pong.cc
index 8680117..7226521 100644
--- a/test/core/network_benchmarks/low_level_ping_pong.c
+++ b/test/core/network_benchmarks/low_level_ping_pong.cc
@@ -56,7 +56,7 @@
   int (*write_bytes)(struct thread_args* args, char* buf);
   int (*setup)(struct thread_args* args);
   int epoll_fd;
-  char* strategy_name;
+  const char* strategy_name;
 } thread_args;
 
 /*
@@ -252,7 +252,7 @@
 #endif
 
 static void server_thread(thread_args* args) {
-  char* buf = gpr_malloc(args->msg_size);
+  char* buf = static_cast<char*>(gpr_malloc(args->msg_size));
   if (args->setup(args) < 0) {
     gpr_log(GPR_ERROR, "Setup failed");
   }
@@ -271,7 +271,7 @@
 }
 
 static void server_thread_wrap(void* arg) {
-  thread_args* args = arg;
+  thread_args* args = static_cast<thread_args*>(arg);
   server_thread(args);
 }
 
@@ -291,7 +291,7 @@
 }
 
 static void client_thread(thread_args* args) {
-  char* buf = gpr_malloc(args->msg_size * sizeof(char));
+  char* buf = static_cast<char*>(gpr_malloc(args->msg_size * sizeof(char)));
   memset(buf, 0, args->msg_size * sizeof(char));
   gpr_histogram* histogram = gpr_histogram_create(0.01, 60e9);
   double start_time;
@@ -538,7 +538,7 @@
 }
 
 typedef struct test_strategy {
-  char* name;
+  const char* name;
   int (*read_strategy)(struct thread_args* args, char* buf);
   int (*setup)(struct thread_args* args);
 } test_strategy;
@@ -553,9 +553,10 @@
     {"spin_read", spin_read_bytes, set_socket_nonblocking},
     {"spin_poll", poll_read_bytes_spin, set_socket_nonblocking}};
 
-static char* socket_types[] = {"tcp", "socketpair", "pipe"};
+static const char* socket_types[] = {"tcp", "socketpair", "pipe"};
 
-int create_socket(char* socket_type, fd_pair* client_fds, fd_pair* server_fds) {
+int create_socket(const char* socket_type, fd_pair* client_fds,
+                  fd_pair* server_fds) {
   if (strcmp(socket_type, "tcp") == 0) {
     create_sockets_tcp(client_fds, server_fds);
   } else if (strcmp(socket_type, "socketpair") == 0) {
@@ -569,7 +570,7 @@
   return 0;
 }
 
-static int run_benchmark(char* socket_type, thread_args* client_args,
+static int run_benchmark(const char* socket_type, thread_args* client_args,
                          thread_args* server_args) {
   gpr_thd_id tid;
   int rv = 0;
@@ -594,9 +595,11 @@
     test_strategy* strategy = &test_strategies[i];
     size_t j;
     for (j = 0; j < GPR_ARRAY_SIZE(socket_types); ++j) {
-      thread_args* client_args = gpr_malloc(sizeof(thread_args));
-      thread_args* server_args = gpr_malloc(sizeof(thread_args));
-      char* socket_type = socket_types[j];
+      thread_args* client_args =
+          static_cast<thread_args*>(gpr_malloc(sizeof(thread_args)));
+      thread_args* server_args =
+          static_cast<thread_args*>(gpr_malloc(sizeof(thread_args)));
+      const char* socket_type = socket_types[j];
 
       client_args->read_bytes = strategy->read_strategy;
       client_args->write_bytes = blocking_write_bytes;
@@ -618,11 +621,13 @@
 }
 
 int main(int argc, char** argv) {
-  thread_args* client_args = gpr_malloc(sizeof(thread_args));
-  thread_args* server_args = gpr_malloc(sizeof(thread_args));
+  thread_args* client_args =
+      static_cast<thread_args*>(gpr_malloc(sizeof(thread_args)));
+  thread_args* server_args =
+      static_cast<thread_args*>(gpr_malloc(sizeof(thread_args)));
   int msg_size = -1;
-  char* read_strategy = NULL;
-  char* socket_type = NULL;
+  const char* read_strategy = NULL;
+  const char* socket_type = NULL;
   size_t i;
   const test_strategy* strategy = NULL;
   int error = 0;
diff --git a/test/core/security/BUILD b/test/core/security/BUILD
index 83b1747..7cd3ae5 100644
--- a/test/core/security/BUILD
+++ b/test/core/security/BUILD
@@ -22,8 +22,8 @@
 
 grpc_fuzzer(
     name = "ssl_server_fuzzer",
-    srcs = ["ssl_server_fuzzer.c"],
-    language = "C",
+    srcs = ["ssl_server_fuzzer.cc"],
+    language = "C++",
     corpus = "corpus",
     deps = [
         "//:gpr",
@@ -35,17 +35,17 @@
 
 grpc_cc_library(
     name = "oauth2_utils",
-    srcs = ["oauth2_utils.c"],
+    srcs = ["oauth2_utils.cc"],
     hdrs = ["oauth2_utils.h"],
-    language = "C",
+    language = "C++",
     deps = ["//:grpc"],
     visibility = ["//test/cpp:__subpackages__"],
 )
 
 grpc_cc_test(
     name = "auth_context_test",
-    srcs = ["auth_context_test.c"],
-    language = "C",
+    srcs = ["auth_context_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -56,8 +56,8 @@
 
 grpc_cc_test(
     name = "credentials_test",
-    srcs = ["credentials_test.c"],
-    language = "C",
+    srcs = ["credentials_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -68,8 +68,8 @@
 
 grpc_cc_test(
     name = "secure_endpoint_test",
-    srcs = ["secure_endpoint_test.c"],
-    language = "C",
+    srcs = ["secure_endpoint_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -81,8 +81,8 @@
 
 grpc_cc_test(
     name = "security_connector_test",
-    srcs = ["security_connector_test.c"],
-    language = "C",
+    srcs = ["security_connector_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -93,8 +93,8 @@
 
 grpc_cc_test(
     name = "ssl_credentials_test",
-    srcs = ["ssl_credentials_test.c"],
-    language = "C",
+    srcs = ["ssl_credentials_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -105,8 +105,8 @@
 
 grpc_cc_binary(
     name = "create_jwt",
-    srcs = ["create_jwt.c"],
-    language = "C",
+    srcs = ["create_jwt.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -115,8 +115,8 @@
 
 grpc_cc_binary(
     name = "fetch_oauth2",
-    srcs = ["fetch_oauth2.c"],
-    language = "C",
+    srcs = ["fetch_oauth2.cc"],
+    language = "C++",
     deps = [
         ":oauth2_utils",
         "//:gpr",
@@ -126,8 +126,8 @@
 
 grpc_cc_binary(
     name = "verify_jwt",
-    srcs = ["verify_jwt.c"],
-    language = "C",
+    srcs = ["verify_jwt.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/security/auth_context_test.c b/test/core/security/auth_context_test.cc
similarity index 100%
rename from test/core/security/auth_context_test.c
rename to test/core/security/auth_context_test.cc
diff --git a/test/core/security/create_jwt.c b/test/core/security/create_jwt.cc
similarity index 96%
rename from test/core/security/create_jwt.c
rename to test/core/security/create_jwt.cc
index 327179c..95f3615 100644
--- a/test/core/security/create_jwt.c
+++ b/test/core/security/create_jwt.cc
@@ -54,9 +54,9 @@
 }
 
 int main(int argc, char** argv) {
-  char* scope = NULL;
-  char* json_key_file_path = NULL;
-  char* service_url = NULL;
+  const char* scope = NULL;
+  const char* json_key_file_path = NULL;
+  const char* service_url = NULL;
   grpc_init();
   gpr_cmdline* cl = gpr_cmdline_create("create_jwt");
   gpr_cmdline_add_string(cl, "json_key", "File path of the json key.",
diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.cc
similarity index 98%
rename from test/core/security/credentials_test.c
rename to test/core/security/credentials_test.cc
index 3962d35..9b575c4 100644
--- a/test/core/security/credentials_test.c
+++ b/test/core/security/credentials_test.cc
@@ -47,7 +47,8 @@
 
 static grpc_channel_credentials* grpc_mock_channel_credentials_create(
     const grpc_channel_credentials_vtable* vtable) {
-  grpc_channel_credentials* c = gpr_malloc(sizeof(*c));
+  grpc_channel_credentials* c =
+      static_cast<grpc_channel_credentials*>(gpr_malloc(sizeof(*c)));
   memset(c, 0, sizeof(*c));
   c->type = "mock";
   c->vtable = vtable;
@@ -125,7 +126,7 @@
   size_t result_len = strlen(test_json_key_str_part1) +
                       strlen(test_json_key_str_part2) +
                       strlen(test_json_key_str_part3);
-  char* result = gpr_malloc(result_len + 1);
+  char* result = static_cast<char*>(gpr_malloc(result_len + 1));
   char* current = result;
   strcpy(result, test_json_key_str_part1);
   current += strlen(test_json_key_str_part1);
@@ -366,7 +367,8 @@
 static request_metadata_state* make_request_metadata_state(
     grpc_error* expected_error, const expected_md* expected,
     size_t expected_size) {
-  request_metadata_state* state = gpr_zalloc(sizeof(*state));
+  request_metadata_state* state =
+      static_cast<request_metadata_state*>(gpr_zalloc(sizeof(*state)));
   state->expected_error = expected_error;
   state->expected = expected;
   state->expected_size = expected_size;
@@ -937,7 +939,8 @@
     grpc_millis deadline, grpc_closure* on_done,
     grpc_httpcli_response* response) {
   *response = http_response(200, "");
-  grpc_http_header* headers = gpr_malloc(sizeof(*headers) * 1);
+  grpc_http_header* headers =
+      static_cast<grpc_http_header*>(gpr_malloc(sizeof(*headers) * 1));
   headers[0].key = gpr_strdup("Metadata-Flavor");
   headers[0].value = gpr_strdup("Google");
   response->hdr_count = 1;
diff --git a/test/core/security/fetch_oauth2.c b/test/core/security/fetch_oauth2.cc
similarity index 98%
rename from test/core/security/fetch_oauth2.c
rename to test/core/security/fetch_oauth2.cc
index 42f68fc..fa8036e 100644
--- a/test/core/security/fetch_oauth2.c
+++ b/test/core/security/fetch_oauth2.cc
@@ -44,7 +44,7 @@
 int main(int argc, char** argv) {
   grpc_call_credentials* creds = NULL;
   char* json_key_file_path = NULL;
-  char* json_refresh_token_file_path = NULL;
+  const char* json_refresh_token_file_path = NULL;
   char* token = NULL;
   int use_gce = 0;
   char* scope = NULL;
diff --git a/test/core/security/json_token_test.c b/test/core/security/json_token_test.cc
similarity index 98%
rename from test/core/security/json_token_test.c
rename to test/core/security/json_token_test.cc
index 4159367..a06e1d0 100644
--- a/test/core/security/json_token_test.c
+++ b/test/core/security/json_token_test.cc
@@ -81,7 +81,7 @@
   const char* part3 = bad_part3 != NULL ? bad_part3 : test_json_key_str_part3;
   size_t result_len = strlen(test_json_key_str_part1) +
                       strlen(test_json_key_str_part2) + strlen(part3);
-  char* result = gpr_malloc(result_len + 1);
+  char* result = static_cast<char*>(gpr_malloc(result_len + 1));
   char* current = result;
   strcpy(result, test_json_key_str_part1);
   current += strlen(test_json_key_str_part1);
@@ -211,12 +211,12 @@
   char* decoded;
   grpc_json* json;
   grpc_slice slice;
-  b64 = gpr_malloc(len + 1);
+  b64 = static_cast<char*>(gpr_malloc(len + 1));
   strncpy(b64, str, len);
   b64[len] = '\0';
   slice = grpc_base64_decode(&exec_ctx, b64, 1);
   GPR_ASSERT(!GRPC_SLICE_IS_EMPTY(slice));
-  decoded = gpr_malloc(GRPC_SLICE_LENGTH(slice) + 1);
+  decoded = static_cast<char*>(gpr_malloc(GRPC_SLICE_LENGTH(slice) + 1));
   strncpy(decoded, (const char*)GRPC_SLICE_START_PTR(slice),
           GRPC_SLICE_LENGTH(slice));
   decoded[GRPC_SLICE_LENGTH(slice)] = '\0';
diff --git a/test/core/security/jwt_verifier_test.c b/test/core/security/jwt_verifier_test.cc
similarity index 99%
rename from test/core/security/jwt_verifier_test.c
rename to test/core/security/jwt_verifier_test.cc
index 0e16dc9..6858b36 100644
--- a/test/core/security/jwt_verifier_test.c
+++ b/test/core/security/jwt_verifier_test.cc
@@ -292,7 +292,7 @@
 static char* json_key_str(const char* last_part) {
   size_t result_len = strlen(json_key_str_part1) + strlen(json_key_str_part2) +
                       strlen(last_part);
-  char* result = gpr_malloc(result_len + 1);
+  char* result = static_cast<char*>(gpr_malloc(result_len + 1));
   char* current = result;
   strcpy(result, json_key_str_part1);
   current += strlen(json_key_str_part1);
@@ -305,7 +305,7 @@
 static char* good_google_email_keys(void) {
   size_t result_len = strlen(good_google_email_keys_part1) +
                       strlen(good_google_email_keys_part2);
-  char* result = gpr_malloc(result_len + 1);
+  char* result = static_cast<char*>(gpr_malloc(result_len + 1));
   char* current = result;
   strcpy(result, good_google_email_keys_part1);
   current += strlen(good_google_email_keys_part1);
diff --git a/test/core/security/oauth2_utils.c b/test/core/security/oauth2_utils.cc
similarity index 100%
rename from test/core/security/oauth2_utils.c
rename to test/core/security/oauth2_utils.cc
diff --git a/test/core/security/oauth2_utils.h b/test/core/security/oauth2_utils.h
index 5e33ef4..5ad2e39 100644
--- a/test/core/security/oauth2_utils.h
+++ b/test/core/security/oauth2_utils.h
@@ -21,17 +21,9 @@
 
 #include "src/core/lib/security/credentials/credentials.h"
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 /* Fetch oauth2 access token with a credentials object. Does not take ownership.
    Returns NULL on a failure. The caller should call gpr_free on the token. */
 char* grpc_test_fetch_oauth2_token_with_credentials(
     grpc_call_credentials* creds);
 
-#ifdef __cplusplus
-}
-#endif
-
 #endif /* GRPC_TEST_CORE_SECURITY_OAUTH2_UTILS_H */
diff --git a/test/core/security/print_google_default_creds_token.c b/test/core/security/print_google_default_creds_token.cc
similarity index 93%
rename from test/core/security/print_google_default_creds_token.c
rename to test/core/security/print_google_default_creds_token.cc
index c5d4e9c..a57180b 100644
--- a/test/core/security/print_google_default_creds_token.c
+++ b/test/core/security/print_google_default_creds_token.cc
@@ -43,7 +43,7 @@
 
 static void on_metadata_response(grpc_exec_ctx* exec_ctx, void* arg,
                                  grpc_error* error) {
-  synchronizer* sync = arg;
+  synchronizer* sync = static_cast<synchronizer*>(arg);
   if (error != GRPC_ERROR_NONE) {
     fprintf(stderr, "Fetching token failed: %s\n", grpc_error_string(error));
   } else {
@@ -67,9 +67,11 @@
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
   synchronizer sync;
   grpc_channel_credentials* creds = NULL;
-  char* service_url = "https://test.foo.google.com/Foo";
+  const char* service_url = "https://test.foo.google.com/Foo";
   grpc_auth_metadata_context context;
   gpr_cmdline* cl = gpr_cmdline_create("print_google_default_creds_token");
+  grpc_pollset* pollset = nullptr;
+  grpc_error* error = nullptr;
   gpr_cmdline_add_string(cl, "service_url",
                          "Service URL for the token request.", &service_url);
   gpr_cmdline_parse(cl, argc, argv);
@@ -86,14 +88,14 @@
   }
 
   memset(&sync, 0, sizeof(sync));
-  grpc_pollset* pollset = gpr_zalloc(grpc_pollset_size());
+  pollset = (grpc_pollset*)gpr_zalloc(grpc_pollset_size());
   grpc_pollset_init(pollset, &sync.mu);
   sync.pops = grpc_polling_entity_create_from_pollset(pollset);
   sync.is_done = false;
   GRPC_CLOSURE_INIT(&sync.on_request_metadata, on_metadata_response, &sync,
                     grpc_schedule_on_exec_ctx);
 
-  grpc_error* error = GRPC_ERROR_NONE;
+  error = GRPC_ERROR_NONE;
   if (grpc_call_credentials_get_request_metadata(
           &exec_ctx, ((grpc_composite_channel_credentials*)creds)->call_creds,
           &sync.pops, context, &sync.md_array, &sync.on_request_metadata,
diff --git a/test/core/security/secure_endpoint_test.c b/test/core/security/secure_endpoint_test.cc
similarity index 96%
rename from test/core/security/secure_endpoint_test.c
rename to test/core/security/secure_endpoint_test.cc
index b772c30..11d1e5f 100644
--- a/test/core/security/secure_endpoint_test.c
+++ b/test/core/security/secure_endpoint_test.cc
@@ -52,10 +52,11 @@
   grpc_endpoint_test_fixture f;
   grpc_endpoint_pair tcp;
 
-  grpc_arg a[] = {{.key = GRPC_ARG_TCP_READ_CHUNK_SIZE,
-                   .type = GRPC_ARG_INTEGER,
-                   .value.integer = (int)slice_size}};
-  grpc_channel_args args = {.num_args = GPR_ARRAY_SIZE(a), .args = a};
+  grpc_arg a[1];
+  a[0].key = const_cast<char*>(GRPC_ARG_TCP_READ_CHUNK_SIZE);
+  a[0].type = GRPC_ARG_INTEGER;
+  a[0].value.integer = (int)slice_size;
+  grpc_channel_args args = {GPR_ARRAY_SIZE(a), a};
   tcp = grpc_iomgr_create_endpoint_pair("fixture", &args);
   grpc_endpoint_add_to_pollset(&exec_ctx, tcp.client, g_pollset);
   grpc_endpoint_add_to_pollset(&exec_ctx, tcp.server, g_pollset);
diff --git a/test/core/security/security_connector_test.c b/test/core/security/security_connector_test.cc
similarity index 100%
rename from test/core/security/security_connector_test.c
rename to test/core/security/security_connector_test.cc
diff --git a/test/core/security/ssl_credentials_test.c b/test/core/security/ssl_credentials_test.cc
similarity index 100%
rename from test/core/security/ssl_credentials_test.c
rename to test/core/security/ssl_credentials_test.cc
diff --git a/test/core/security/ssl_server_fuzzer.c b/test/core/security/ssl_server_fuzzer.cc
similarity index 94%
rename from test/core/security/ssl_server_fuzzer.c
rename to test/core/security/ssl_server_fuzzer.cc
index 7d6b340..5c5153b 100644
--- a/test/core/security/ssl_server_fuzzer.c
+++ b/test/core/security/ssl_server_fuzzer.cc
@@ -42,15 +42,16 @@
 
 static void on_handshake_done(grpc_exec_ctx* exec_ctx, void* arg,
                               grpc_error* error) {
-  grpc_handshaker_args* args = arg;
-  struct handshake_state* state = args->user_data;
+  grpc_handshaker_args* args = static_cast<grpc_handshaker_args*>(arg);
+  struct handshake_state* state =
+      static_cast<struct handshake_state*>(args->user_data);
   GPR_ASSERT(state->done_callback_called == false);
   state->done_callback_called = true;
   // The fuzzer should not pass the handshake.
   GPR_ASSERT(error != GRPC_ERROR_NONE);
 }
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   struct grpc_memory_counters counters;
   if (squelch) gpr_set_log_function(dont_log);
   if (leak_check) grpc_memory_counters_init();
diff --git a/test/core/security/verify_jwt.c b/test/core/security/verify_jwt.cc
similarity index 94%
rename from test/core/security/verify_jwt.c
rename to test/core/security/verify_jwt.cc
index 08adb6e..e0e22d1 100644
--- a/test/core/security/verify_jwt.c
+++ b/test/core/security/verify_jwt.cc
@@ -47,7 +47,7 @@
 static void on_jwt_verification_done(grpc_exec_ctx* exec_ctx, void* user_data,
                                      grpc_jwt_verifier_status status,
                                      grpc_jwt_claims* claims) {
-  synchronizer* sync = user_data;
+  synchronizer* sync = static_cast<synchronizer*>(user_data);
 
   sync->success = (status == GRPC_JWT_VERIFIER_OK);
   if (sync->success) {
@@ -75,8 +75,8 @@
   synchronizer sync;
   grpc_jwt_verifier* verifier;
   gpr_cmdline* cl;
-  char* jwt = NULL;
-  char* aud = NULL;
+  const char* jwt = NULL;
+  const char* aud = NULL;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 
   grpc_init();
@@ -92,7 +92,7 @@
 
   grpc_init();
 
-  sync.pollset = gpr_zalloc(grpc_pollset_size());
+  sync.pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(sync.pollset, &sync.mu);
   sync.is_done = 0;
 
diff --git a/test/core/slice/BUILD b/test/core/slice/BUILD
index ad2308a..ba2b553 100644
--- a/test/core/slice/BUILD
+++ b/test/core/slice/BUILD
@@ -22,8 +22,8 @@
 
 grpc_fuzzer(
     name = "percent_encode_fuzzer",
-    srcs = ["percent_encode_fuzzer.c"],
-    language = "C",
+    srcs = ["percent_encode_fuzzer.cc"],
+    language = "C++",
     corpus = "percent_encode_corpus",
     deps = [
         "//:gpr",
@@ -34,8 +34,8 @@
 
 grpc_fuzzer(
     name = "percent_decode_fuzzer",
-    srcs = ["percent_decode_fuzzer.c"],
-    language = "C",
+    srcs = ["percent_decode_fuzzer.cc"],
+    language = "C++",
     corpus = "percent_decode_corpus",
     deps = [
         "//:gpr",
@@ -46,8 +46,8 @@
 
 grpc_cc_test(
     name = "percent_encoding_test",
-    srcs = ["percent_encoding_test.c"],
-    language = "C",
+    srcs = ["percent_encoding_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -58,15 +58,15 @@
 
 grpc_cc_test(
     name = "slice_test",
-    srcs = ["slice_test.c"],
+    srcs = ["slice_test.cc"],
     deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
-    language = "C",
+    language = "C++",
 )
 
 grpc_cc_test(
     name = "slice_string_helpers_test",
-    srcs = ["slice_string_helpers_test.c"],
-    language = "C",
+    srcs = ["slice_string_helpers_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -77,22 +77,22 @@
 
 grpc_cc_test(
     name = "slice_buffer_test",
-    srcs = ["slice_buffer_test.c"],
+    srcs = ["slice_buffer_test.cc"],
     deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
-    language = "C",
+    language = "C++",
 )
 
 grpc_cc_test(
     name = "slice_hash_table_test",
-    srcs = ["slice_hash_table_test.c"],
+    srcs = ["slice_hash_table_test.cc"],
     deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
-    language = "C",
+    language = "C++",
 )
 
 grpc_cc_test(
     name = "b64_test",
-    srcs = ["b64_test.c"],
-    language = "C",
+    srcs = ["b64_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/slice/b64_test.c b/test/core/slice/b64_test.cc
similarity index 100%
rename from test/core/slice/b64_test.c
rename to test/core/slice/b64_test.cc
diff --git a/test/core/slice/percent_decode_fuzzer.c b/test/core/slice/percent_decode_fuzzer.cc
similarity index 95%
rename from test/core/slice/percent_decode_fuzzer.c
rename to test/core/slice/percent_decode_fuzzer.cc
index e645873..3603177 100644
--- a/test/core/slice/percent_decode_fuzzer.c
+++ b/test/core/slice/percent_decode_fuzzer.cc
@@ -29,7 +29,7 @@
 bool squelch = true;
 bool leak_check = true;
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   struct grpc_memory_counters counters;
   grpc_memory_counters_init();
   grpc_slice input = grpc_slice_from_copied_buffer((const char*)data, size);
diff --git a/test/core/slice/percent_encode_fuzzer.c b/test/core/slice/percent_encode_fuzzer.cc
similarity index 95%
rename from test/core/slice/percent_encode_fuzzer.c
rename to test/core/slice/percent_encode_fuzzer.cc
index 776a998..c8e3849 100644
--- a/test/core/slice/percent_encode_fuzzer.c
+++ b/test/core/slice/percent_encode_fuzzer.cc
@@ -51,7 +51,7 @@
   GPR_ASSERT(counters.total_size_relative == 0);
 }
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   test(data, size, grpc_url_percent_encoding_unreserved_bytes);
   test(data, size, grpc_compatible_percent_encoding_unreserved_bytes);
   return 0;
diff --git a/test/core/slice/percent_encoding_test.c b/test/core/slice/percent_encoding_test.cc
similarity index 100%
rename from test/core/slice/percent_encoding_test.c
rename to test/core/slice/percent_encoding_test.cc
diff --git a/test/core/slice/slice_buffer_test.c b/test/core/slice/slice_buffer_test.cc
similarity index 100%
rename from test/core/slice/slice_buffer_test.c
rename to test/core/slice/slice_buffer_test.cc
diff --git a/test/core/slice/slice_hash_table_test.c b/test/core/slice/slice_hash_table_test.cc
similarity index 96%
rename from test/core/slice/slice_hash_table_test.c
rename to test/core/slice/slice_hash_table_test.cc
index f3689aa..a2006b3 100644
--- a/test/core/slice/slice_hash_table_test.c
+++ b/test/core/slice/slice_hash_table_test.cc
@@ -28,8 +28,8 @@
 #include "test/core/util/test_config.h"
 
 typedef struct {
-  char* key;
-  char* value;
+  const char* key;
+  const char* value;
 } test_entry;
 
 static void populate_entries(const test_entry* input, size_t num_entries,
@@ -44,7 +44,8 @@
                          grpc_slice_hash_table* table) {
   for (size_t i = 0; i < num_entries; ++i) {
     grpc_slice key = grpc_slice_from_static_string(input[i].key);
-    char* actual = grpc_slice_hash_table_get(table, key);
+    const char* actual =
+        static_cast<const char*>(grpc_slice_hash_table_get(table, key));
     GPR_ASSERT(actual != NULL);
     GPR_ASSERT(strcmp(actual, input[i].value) == 0);
     grpc_slice_unref(key);
@@ -67,7 +68,8 @@
     int (*value_cmp_fn)(void*, void*)) {
   // Construct table.
   grpc_slice_hash_table_entry* entries =
-      gpr_zalloc(sizeof(*entries) * num_test_entries);
+      static_cast<grpc_slice_hash_table_entry*>(
+          gpr_zalloc(sizeof(*entries) * num_test_entries));
   populate_entries(test_entries, num_test_entries, entries);
   grpc_slice_hash_table* table = grpc_slice_hash_table_create(
       num_test_entries, entries, destroy_string, value_cmp_fn);
@@ -125,8 +127,8 @@
 }
 
 static int value_cmp_fn(void* a, void* b) {
-  const char* a_str = a;
-  const char* b_str = b;
+  const char* a_str = static_cast<const char*>(a);
+  const char* b_str = static_cast<const char*>(b);
   return strcmp(a_str, b_str);
 }
 
diff --git a/test/core/slice/slice_string_helpers_test.c b/test/core/slice/slice_string_helpers_test.cc
similarity index 97%
rename from test/core/slice/slice_string_helpers_test.c
rename to test/core/slice/slice_string_helpers_test.cc
index 7378735..260f8c8 100644
--- a/test/core/slice/slice_string_helpers_test.c
+++ b/test/core/slice/slice_string_helpers_test.cc
@@ -67,7 +67,8 @@
 
   LOG_TEST_NAME("test_strsplit");
 
-  parts = gpr_malloc(sizeof(grpc_slice_buffer));
+  parts =
+      static_cast<grpc_slice_buffer*>(gpr_malloc(sizeof(grpc_slice_buffer)));
   grpc_slice_buffer_init(parts);
 
   str = grpc_slice_from_copied_string("one, two, three, four");
diff --git a/test/core/slice/slice_test.c b/test/core/slice/slice_test.cc
similarity index 98%
rename from test/core/slice/slice_test.c
rename to test/core/slice/slice_test.cc
index 0a069c9..aec5636 100644
--- a/test/core/slice/slice_test.c
+++ b/test/core/slice/slice_test.cc
@@ -43,8 +43,8 @@
     slice = grpc_slice_malloc(length);
     /* If there is a length, slice.data must be non-NULL. If length is zero
        we don't care. */
-    if (length) {
-      GPR_ASSERT(GRPC_SLICE_START_PTR(slice));
+    if (length > GRPC_SLICE_INLINED_SIZE) {
+      GPR_ASSERT(slice.data.refcounted.bytes);
     }
     /* Returned slice length must be what was requested. */
     GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == length);
diff --git a/test/core/statistics/census_log_tests.c b/test/core/statistics/census_log_tests.cc
similarity index 100%
rename from test/core/statistics/census_log_tests.c
rename to test/core/statistics/census_log_tests.cc
diff --git a/test/core/statistics/census_stub_test.c b/test/core/statistics/census_stub_test.cc
similarity index 100%
rename from test/core/statistics/census_stub_test.c
rename to test/core/statistics/census_stub_test.cc
diff --git a/test/core/statistics/hash_table_test.c b/test/core/statistics/hash_table_test.cc
similarity index 94%
rename from test/core/statistics/hash_table_test.c
rename to test/core/statistics/hash_table_test.cc
index 0f6147a..b660006 100644
--- a/test/core/statistics/hash_table_test.c
+++ b/test/core/statistics/hash_table_test.cc
@@ -89,7 +89,7 @@
     uint64_t* val = NULL;
     census_ht_key key;
     key.val = i;
-    val = census_ht_find(ht, key);
+    val = static_cast<uint64_t*>(census_ht_find(ht, key));
     GPR_ASSERT(val == (void*)(intptr_t)i);
   }
   elements = census_ht_get_all_elements(ht, &num_elements);
@@ -112,22 +112,22 @@
   char* val = NULL;
   char* val2 = NULL;
   key.ptr = gpr_malloc(100);
-  val = gpr_malloc(10);
+  val = static_cast<char*>(gpr_malloc(10));
   strcpy(val, "value");
   strcpy(key.ptr, "some string as a key");
   GPR_ASSERT(ht != NULL);
   GPR_ASSERT(census_ht_get_size(ht) == 0);
   census_ht_insert(ht, key, val);
   GPR_ASSERT(census_ht_get_size(ht) == 1);
-  val = census_ht_find(ht, key);
+  val = static_cast<char*>(census_ht_find(ht, key));
   GPR_ASSERT(val != NULL);
   GPR_ASSERT(strcmp(val, "value") == 0);
   /* Insert same key different value, old value is overwritten. */
-  val2 = gpr_malloc(10);
+  val2 = static_cast<char*>(gpr_malloc(10));
   strcpy(val2, "v2");
   census_ht_insert(ht, key, val2);
   GPR_ASSERT(census_ht_get_size(ht) == 1);
-  val2 = census_ht_find(ht, key);
+  val2 = static_cast<char*>(census_ht_find(ht, key));
   GPR_ASSERT(val2 != NULL);
   GPR_ASSERT(strcmp(val2, "v2") == 0);
   census_ht_destroy(ht);
@@ -214,7 +214,7 @@
     census_ht_key key;
     int* val_ptr;
     key.ptr = (void*)(keys[i]);
-    val_ptr = census_ht_find(ht, key);
+    val_ptr = static_cast<int*>(census_ht_find(ht, key));
     GPR_ASSERT(*val_ptr == vals[i]);
   }
   {
@@ -225,7 +225,7 @@
     census_ht_insert(ht, key, (void*)(vals + 8));
     /* expect value to be over written by new insertion */
     GPR_ASSERT(census_ht_get_size(ht) == 9);
-    val_ptr = census_ht_find(ht, key);
+    val_ptr = static_cast<int*>(census_ht_find(ht, key));
     GPR_ASSERT(*val_ptr == vals[8]);
   }
   for (i = 0; i < 9; i++) {
@@ -234,11 +234,11 @@
     uint32_t expected_tbl_sz = 9 - i;
     GPR_ASSERT(census_ht_get_size(ht) == expected_tbl_sz);
     key.ptr = (void*)(keys[i]);
-    val_ptr = census_ht_find(ht, key);
+    val_ptr = static_cast<int*>(census_ht_find(ht, key));
     GPR_ASSERT(val_ptr != NULL);
     census_ht_erase(ht, key);
     GPR_ASSERT(census_ht_get_size(ht) == expected_tbl_sz - 1);
-    val_ptr = census_ht_find(ht, key);
+    val_ptr = static_cast<int*>(census_ht_find(ht, key));
     GPR_ASSERT(val_ptr == NULL);
   }
   census_ht_destroy(ht);
diff --git a/test/core/statistics/multiple_writers_circular_buffer_test.c b/test/core/statistics/multiple_writers_circular_buffer_test.cc
similarity index 100%
rename from test/core/statistics/multiple_writers_circular_buffer_test.c
rename to test/core/statistics/multiple_writers_circular_buffer_test.cc
diff --git a/test/core/statistics/multiple_writers_test.c b/test/core/statistics/multiple_writers_test.cc
similarity index 100%
rename from test/core/statistics/multiple_writers_test.c
rename to test/core/statistics/multiple_writers_test.cc
diff --git a/test/core/statistics/performance_test.c b/test/core/statistics/performance_test.cc
similarity index 100%
rename from test/core/statistics/performance_test.c
rename to test/core/statistics/performance_test.cc
diff --git a/test/core/statistics/quick_test.c b/test/core/statistics/quick_test.cc
similarity index 100%
rename from test/core/statistics/quick_test.c
rename to test/core/statistics/quick_test.cc
diff --git a/test/core/statistics/rpc_stats_test.c b/test/core/statistics/rpc_stats_test.cc
similarity index 100%
rename from test/core/statistics/rpc_stats_test.c
rename to test/core/statistics/rpc_stats_test.cc
diff --git a/test/core/statistics/small_log_test.c b/test/core/statistics/small_log_test.cc
similarity index 100%
rename from test/core/statistics/small_log_test.c
rename to test/core/statistics/small_log_test.cc
diff --git a/test/core/statistics/trace_test.c b/test/core/statistics/trace_test.cc
similarity index 100%
rename from test/core/statistics/trace_test.c
rename to test/core/statistics/trace_test.cc
diff --git a/test/core/statistics/window_stats_test.c b/test/core/statistics/window_stats_test.cc
similarity index 93%
rename from test/core/statistics/window_stats_test.c
rename to test/core/statistics/window_stats_test.cc
index 457004b..b17c61a 100644
--- a/test/core/statistics/window_stats_test.c
+++ b/test/core/statistics/window_stats_test.cc
@@ -44,11 +44,11 @@
 const struct census_window_stats_stat_info kMyStatInfo = {
     sizeof(test_stat), NULL, add_test_stat, add_proportion_test_stat};
 
-const gpr_timespec kMilliSecInterval = {0, 1000000};
-const gpr_timespec kSecInterval = {1, 0};
-const gpr_timespec kMinInterval = {60, 0};
-const gpr_timespec kHourInterval = {3600, 0};
-const gpr_timespec kPrimeInterval = {0, 101};
+const gpr_timespec kMilliSecInterval = {0, 1000000, GPR_CLOCK_MONOTONIC};
+const gpr_timespec kSecInterval = {1, 0, GPR_CLOCK_MONOTONIC};
+const gpr_timespec kMinInterval = {60, 0 GPR_CLOCK_MONOTONIC};
+const gpr_timespec kHourInterval = {3600, 0, GPR_CLOCK_MONOTONIC};
+const gpr_timespec kPrimeInterval = {0, 101, GPR_CLOCK_MONOTONIC};
 
 static int compare_double(double a, double b, double epsilon) {
   if (a >= b) {
@@ -60,7 +60,7 @@
 
 void empty_test(void) {
   census_window_stats_sums result;
-  const gpr_timespec zero = {0, 0};
+  const gpr_timespec zero = {0, 0, GPR_CLOCK_MONOTONIC};
   test_stat sum;
   struct census_window_stats* stats =
       census_window_stats_create(1, &kMinInterval, 5, &kMyStatInfo);
@@ -76,7 +76,7 @@
 void one_interval_test(void) {
   const test_stat value = {0.1, 4};
   const double epsilon = 1e10 - 11;
-  gpr_timespec when = {0, 0};
+  gpr_timespec when = {0, 0, GPR_CLOCK_MONOTONIC};
   census_window_stats_sums result;
   test_stat sum;
   /* granularity == 5 so width of internal windows should be 12s */
@@ -186,7 +186,7 @@
   gpr_timespec intervals[4];
   const test_stat value = {123.45, 8};
   const double epsilon = 1e10 - 11;
-  gpr_timespec when = {3600, 0}; /* one hour */
+  gpr_timespec when = {3600, 0, GPR_CLOCK_MONOTONIC}; /* one hour */
   census_window_stats_sums result[4];
   test_stat sums[4];
   int i;
@@ -245,11 +245,11 @@
 
 void rolling_time_test(void) {
   const test_stat value = {0.1, 4};
-  gpr_timespec when = {0, 0};
+  gpr_timespec when = {0, 0, GPR_CLOCK_MONOTONIC};
   census_window_stats_sums result;
   test_stat sum;
   int i;
-  gpr_timespec increment = {0, 0};
+  gpr_timespec increment = {0, 0, GPR_CLOCK_MONOTONIC};
   struct census_window_stats* stats =
       census_window_stats_create(1, &kMinInterval, 7, &kMyStatInfo);
   GPR_ASSERT(stats != NULL);
@@ -270,12 +270,13 @@
 #include <stdio.h>
 void infinite_interval_test(void) {
   const test_stat value = {0.1, 4};
-  gpr_timespec when = {0, 0};
+  gpr_timespec when = {0, 0, GPR_CLOCK_MONOTONIC};
   census_window_stats_sums result;
   test_stat sum;
   int i;
   const int count = 100000;
-  gpr_timespec increment = {0, 0};
+  gpr_timespec increment = {0, 0, GPR_CLOCK_MONOTONIC};
+  gpr_timespec temp = gpr_inf_future(GPR_CLOCK_REALTIME);
   struct census_window_stats* stats = census_window_stats_create(
       1, &gpr_inf_future(GPR_CLOCK_REALTIME), 10, &kMyStatInfo);
   srand(gpr_now(GPR_CLOCK_REALTIME).tv_nsec);
diff --git a/test/core/support/BUILD b/test/core/support/BUILD
index 3bdc1c4..9d042fd 100644
--- a/test/core/support/BUILD
+++ b/test/core/support/BUILD
@@ -20,8 +20,8 @@
 
 grpc_cc_test(
     name = "alloc_test",
-    srcs = ["alloc_test.c"],
-    language = "C",
+    srcs = ["alloc_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -30,8 +30,8 @@
 
 grpc_cc_test(
     name = "avl_test",
-    srcs = ["avl_test.c"],
-    language = "C",
+    srcs = ["avl_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -40,8 +40,8 @@
 
 grpc_cc_test(
     name = "cmdline_test",
-    srcs = ["cmdline_test.c"],
-    language = "C",
+    srcs = ["cmdline_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -50,8 +50,8 @@
 
 grpc_cc_test(
     name = "cpu_test",
-    srcs = ["cpu_test.c"],
-    language = "C",
+    srcs = ["cpu_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -60,8 +60,8 @@
 
 grpc_cc_test(
     name = "env_test",
-    srcs = ["env_test.c"],
-    language = "C",
+    srcs = ["env_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -70,8 +70,8 @@
 
 grpc_cc_test(
     name = "histogram_test",
-    srcs = ["histogram_test.c"],
-    language = "C",
+    srcs = ["histogram_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -80,8 +80,8 @@
 
 grpc_cc_test(
     name = "host_port_test",
-    srcs = ["host_port_test.c"],
-    language = "C",
+    srcs = ["host_port_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -90,8 +90,8 @@
 
 grpc_cc_test(
     name = "log_test",
-    srcs = ["log_test.c"],
-    language = "C",
+    srcs = ["log_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -100,8 +100,8 @@
 
 grpc_cc_test(
     name = "mpscq_test",
-    srcs = ["mpscq_test.c"],
-    language = "C",
+    srcs = ["mpscq_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -110,8 +110,8 @@
 
 grpc_cc_test(
     name = "murmur_hash_test",
-    srcs = ["murmur_hash_test.c"],
-    language = "C",
+    srcs = ["murmur_hash_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -120,8 +120,8 @@
 
 grpc_cc_test(
     name = "stack_lockfree_test",
-    srcs = ["stack_lockfree_test.c"],
-    language = "C",
+    srcs = ["stack_lockfree_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -130,8 +130,8 @@
 
 grpc_cc_test(
     name = "string_test",
-    srcs = ["string_test.c"],
-    language = "C",
+    srcs = ["string_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -140,8 +140,8 @@
 
 grpc_cc_test(
     name = "spinlock_test",
-    srcs = ["spinlock_test.c"],
-    language = "C",
+    srcs = ["spinlock_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -150,8 +150,8 @@
 
 grpc_cc_test(
     name = "sync_test",
-    srcs = ["sync_test.c"],
-    language = "C",
+    srcs = ["sync_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -160,8 +160,8 @@
 
 grpc_cc_test(
     name = "thd_test",
-    srcs = ["thd_test.c"],
-    language = "C",
+    srcs = ["thd_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -170,8 +170,8 @@
 
 grpc_cc_test(
     name = "time_test",
-    srcs = ["time_test.c"],
-    language = "C",
+    srcs = ["time_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -180,8 +180,8 @@
 
 grpc_cc_test(
     name = "tls_test",
-    srcs = ["tls_test.c"],
-    language = "C",
+    srcs = ["tls_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
@@ -190,8 +190,8 @@
 
 grpc_cc_test(
     name = "useful_test",
-    srcs = ["useful_test.c"],
-    language = "C",
+    srcs = ["useful_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//test/core/util:gpr_test_util",
diff --git a/test/core/support/alloc_test.c b/test/core/support/alloc_test.cc
similarity index 90%
rename from test/core/support/alloc_test.c
rename to test/core/support/alloc_test.cc
index 37f2c2e..ee59036 100644
--- a/test/core/support/alloc_test.c
+++ b/test/core/support/alloc_test.cc
@@ -41,8 +41,9 @@
 
   /* Restore and check we don't get funky values and that we don't leak */
   gpr_set_allocation_functions(default_fns);
-  GPR_ASSERT((void*)sizeof(*i) != (i = gpr_malloc(sizeof(*i))));
-  GPR_ASSERT((void*)2 != (i = gpr_realloc(i, 2)));
+  GPR_ASSERT((void*)sizeof(*i) !=
+             (i = static_cast<char*>(gpr_malloc(sizeof(*i)))));
+  GPR_ASSERT((void*)2 != (i = static_cast<char*>(gpr_realloc(i, 2))));
   gpr_free(i);
 }
 
diff --git a/test/core/support/arena_test.c b/test/core/support/arena_test.cc
similarity index 95%
rename from test/core/support/arena_test.c
rename to test/core/support/arena_test.cc
index d198c40..6c666af 100644
--- a/test/core/support/arena_test.c
+++ b/test/core/support/arena_test.cc
@@ -50,7 +50,7 @@
   gpr_free(s);
 
   gpr_arena* a = gpr_arena_create(init_size);
-  void** ps = gpr_zalloc(sizeof(*ps) * nallocs);
+  void** ps = static_cast<void**>(gpr_zalloc(sizeof(*ps) * nallocs));
   for (size_t i = 0; i < nallocs; i++) {
     ps[i] = gpr_arena_alloc(a, allocs[i]);
     // ensure no duplicate results
@@ -81,7 +81,7 @@
 } concurrent_test_args;
 
 static void concurrent_test_body(void* arg) {
-  concurrent_test_args* a = arg;
+  concurrent_test_args* a = static_cast<concurrent_test_args*>(arg);
   gpr_event_wait(&a->ev_start, gpr_inf_future(GPR_CLOCK_REALTIME));
   for (size_t i = 0; i < concurrent_test_iterations(); i++) {
     *(char*)gpr_arena_alloc(a->arena, 1) = (char)i;
diff --git a/test/core/support/avl_test.c b/test/core/support/avl_test.cc
similarity index 99%
rename from test/core/support/avl_test.c
rename to test/core/support/avl_test.cc
index bd7487f..cd3a852 100644
--- a/test/core/support/avl_test.c
+++ b/test/core/support/avl_test.cc
@@ -28,7 +28,7 @@
 #include "test/core/util/test_config.h"
 
 static int* box(int x) {
-  int* b = gpr_malloc(sizeof(*b));
+  int* b = static_cast<int*>(gpr_malloc(sizeof(*b)));
   *b = x;
   return b;
 }
diff --git a/test/core/support/cmdline_test.c b/test/core/support/cmdline_test.cc
similarity index 81%
rename from test/core/support/cmdline_test.c
rename to test/core/support/cmdline_test.cc
index 8d6a372..5afaa2a 100644
--- a/test/core/support/cmdline_test.c
+++ b/test/core/support/cmdline_test.cc
@@ -30,7 +30,8 @@
 static void test_simple_int(void) {
   int x = 1;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "-foo", "3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("-foo"),
+                  const_cast<char*>("3")};
 
   LOG_TEST();
 
@@ -45,7 +46,7 @@
 static void test_eq_int(void) {
   int x = 1;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "-foo=3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("-foo=3")};
 
   LOG_TEST();
 
@@ -60,7 +61,8 @@
 static void test_2dash_int(void) {
   int x = 1;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo", "3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo"),
+                  const_cast<char*>("3")};
 
   LOG_TEST();
 
@@ -75,7 +77,7 @@
 static void test_2dash_eq_int(void) {
   int x = 1;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo=3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo=3")};
 
   LOG_TEST();
 
@@ -88,9 +90,10 @@
 }
 
 static void test_simple_string(void) {
-  char* x = NULL;
+  const char* x = NULL;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "-foo", "3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("-foo"),
+                  const_cast<char*>("3")};
 
   LOG_TEST();
 
@@ -103,9 +106,9 @@
 }
 
 static void test_eq_string(void) {
-  char* x = NULL;
+  const char* x = NULL;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "-foo=3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("-foo=3")};
 
   LOG_TEST();
 
@@ -118,9 +121,10 @@
 }
 
 static void test_2dash_string(void) {
-  char* x = NULL;
+  const char* x = NULL;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo", "3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo"),
+                  const_cast<char*>("3")};
 
   LOG_TEST();
 
@@ -133,9 +137,9 @@
 }
 
 static void test_2dash_eq_string(void) {
-  char* x = NULL;
+  const char* x = NULL;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo=3"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo=3")};
 
   LOG_TEST();
 
@@ -150,7 +154,7 @@
 static void test_flag_on(void) {
   int x = 2;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo")};
 
   LOG_TEST();
 
@@ -165,7 +169,7 @@
 static void test_flag_no(void) {
   int x = 2;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--no-foo"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--no-foo")};
 
   LOG_TEST();
 
@@ -180,7 +184,7 @@
 static void test_flag_val_1(void) {
   int x = 2;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo=1"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo=1")};
 
   LOG_TEST();
 
@@ -195,7 +199,7 @@
 static void test_flag_val_0(void) {
   int x = 2;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo=0"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo=0")};
 
   LOG_TEST();
 
@@ -210,7 +214,7 @@
 static void test_flag_val_true(void) {
   int x = 2;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo=true"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo=true")};
 
   LOG_TEST();
 
@@ -225,7 +229,7 @@
 static void test_flag_val_false(void) {
   int x = 2;
   gpr_cmdline* cl;
-  char* args[] = {(char*)__FILE__, "--foo=false"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--foo=false")};
 
   LOG_TEST();
 
@@ -238,12 +242,14 @@
 }
 
 static void test_many(void) {
-  char* str = NULL;
+  const char* str = NULL;
   int x = 0;
   int flag = 2;
   gpr_cmdline* cl;
 
-  char* args[] = {(char*)__FILE__, "--str", "hello", "-x=4", "-no-flag"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--str"),
+                  const_cast<char*>("hello"), const_cast<char*>("-x=4"),
+                  const_cast<char*>("-no-flag")};
 
   LOG_TEST();
 
@@ -259,7 +265,7 @@
 }
 
 static void extra_arg_cb(void* user_data, const char* arg) {
-  int* count = user_data;
+  int* count = static_cast<int*>(user_data);
   GPR_ASSERT(arg != NULL);
   GPR_ASSERT(strlen(arg) == 1);
   GPR_ASSERT(arg[0] == 'a' + *count);
@@ -269,7 +275,8 @@
 static void test_extra(void) {
   gpr_cmdline* cl;
   int count = 0;
-  char* args[] = {(char*)__FILE__, "a", "b", "c"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("a"),
+                  const_cast<char*>("b"), const_cast<char*>("c")};
 
   LOG_TEST();
 
@@ -284,7 +291,9 @@
 static void test_extra_dashdash(void) {
   gpr_cmdline* cl;
   int count = 0;
-  char* args[] = {(char*)__FILE__, "--", "a", "b", "c"};
+  char* args[] = {(char*)__FILE__, const_cast<char*>("--"),
+                  const_cast<char*>("a"), const_cast<char*>("b"),
+                  const_cast<char*>("c")};
 
   LOG_TEST();
 
@@ -300,7 +309,7 @@
   gpr_cmdline* cl;
   char* usage;
 
-  char* str = NULL;
+  const char* str = NULL;
   int x = 0;
   int flag = 2;
 
@@ -331,11 +340,11 @@
 static void test_help(void) {
   gpr_cmdline* cl;
 
-  char* str = NULL;
+  const char* str = NULL;
   int x = 0;
   int flag = 2;
 
-  char* help[] = {(char*)__FILE__, "-h"};
+  char* help[] = {(char*)__FILE__, const_cast<char*>("-h")};
 
   LOG_TEST();
 
@@ -355,11 +364,11 @@
 static void test_badargs1(void) {
   gpr_cmdline* cl;
 
-  char* str = NULL;
+  const char* str = NULL;
   int x = 0;
   int flag = 2;
 
-  char* bad_arg_name[] = {(char*)__FILE__, "--y"};
+  char* bad_arg_name[] = {(char*)__FILE__, const_cast<char*>("--y")};
 
   LOG_TEST();
 
@@ -380,11 +389,12 @@
 static void test_badargs2(void) {
   gpr_cmdline* cl;
 
-  char* str = NULL;
+  const char* str = NULL;
   int x = 0;
   int flag = 2;
 
-  char* bad_int_value[] = {(char*)__FILE__, "--x", "henry"};
+  char* bad_int_value[] = {(char*)__FILE__, const_cast<char*>("--x"),
+                           const_cast<char*>("henry")};
 
   LOG_TEST();
 
@@ -405,11 +415,11 @@
 static void test_badargs3(void) {
   gpr_cmdline* cl;
 
-  char* str = NULL;
+  const char* str = NULL;
   int x = 0;
   int flag = 2;
 
-  char* bad_bool_value[] = {(char*)__FILE__, "--flag=henry"};
+  char* bad_bool_value[] = {(char*)__FILE__, const_cast<char*>("--flag=henry")};
 
   LOG_TEST();
 
@@ -430,11 +440,11 @@
 static void test_badargs4(void) {
   gpr_cmdline* cl;
 
-  char* str = NULL;
+  const char* str = NULL;
   int x = 0;
   int flag = 2;
 
-  char* bad_bool_value[] = {(char*)__FILE__, "--no-str"};
+  char* bad_bool_value[] = {(char*)__FILE__, const_cast<char*>("--no-str")};
 
   LOG_TEST();
 
diff --git a/test/core/support/cpu_test.c b/test/core/support/cpu_test.cc
similarity index 97%
rename from test/core/support/cpu_test.c
rename to test/core/support/cpu_test.cc
index 3c49486..a76531e 100644
--- a/test/core/support/cpu_test.c
+++ b/test/core/support/cpu_test.cc
@@ -104,7 +104,7 @@
   ct.ncores = gpr_cpu_num_cores();
   GPR_ASSERT(ct.ncores > 0);
   ct.nthreads = (int)ct.ncores * 3;
-  ct.used = gpr_malloc(ct.ncores * sizeof(int));
+  ct.used = static_cast<int*>(gpr_malloc(ct.ncores * sizeof(int)));
   memset(ct.used, 0, ct.ncores * sizeof(int));
   gpr_mu_init(&ct.mu);
   gpr_cv_init(&ct.done_cv);
diff --git a/test/core/support/env_test.c b/test/core/support/env_test.cc
similarity index 100%
rename from test/core/support/env_test.c
rename to test/core/support/env_test.cc
diff --git a/test/core/support/histogram_test.c b/test/core/support/histogram_test.cc
similarity index 100%
rename from test/core/support/histogram_test.c
rename to test/core/support/histogram_test.cc
diff --git a/test/core/support/host_port_test.c b/test/core/support/host_port_test.cc
similarity index 100%
rename from test/core/support/host_port_test.c
rename to test/core/support/host_port_test.cc
diff --git a/test/core/support/log_test.c b/test/core/support/log_test.cc
similarity index 100%
rename from test/core/support/log_test.c
rename to test/core/support/log_test.cc
diff --git a/test/core/support/mpscq_test.c b/test/core/support/mpscq_test.cc
similarity index 96%
rename from test/core/support/mpscq_test.c
rename to test/core/support/mpscq_test.cc
index c71132b..d5b7bf2 100644
--- a/test/core/support/mpscq_test.c
+++ b/test/core/support/mpscq_test.cc
@@ -34,7 +34,7 @@
 } test_node;
 
 static test_node* new_node(size_t i, size_t* ctr) {
-  test_node* n = gpr_malloc(sizeof(test_node));
+  test_node* n = static_cast<test_node*>(gpr_malloc(sizeof(test_node)));
   n->i = i;
   n->ctr = ctr;
   return n;
@@ -64,7 +64,7 @@
 #define THREAD_ITERATIONS 10000
 
 static void test_thread(void* args) {
-  thd_args* a = args;
+  thd_args* a = static_cast<thd_args*>(args);
   gpr_event_wait(a->start, gpr_inf_future(GPR_CLOCK_REALTIME));
   for (size_t i = 1; i <= THREAD_ITERATIONS; i++) {
     gpr_mpscq_push(a->q, &new_node(i, &a->ctr)->node);
@@ -119,7 +119,7 @@
 } pull_args;
 
 static void pull_thread(void* arg) {
-  pull_args* pa = arg;
+  pull_args* pa = static_cast<pull_args*>(arg);
   gpr_event_wait(pa->start, gpr_inf_future(GPR_CLOCK_REALTIME));
 
   for (;;) {
diff --git a/test/core/support/murmur_hash_test.c b/test/core/support/murmur_hash_test.cc
similarity index 100%
rename from test/core/support/murmur_hash_test.c
rename to test/core/support/murmur_hash_test.cc
diff --git a/test/core/support/spinlock_test.c b/test/core/support/spinlock_test.cc
similarity index 93%
rename from test/core/support/spinlock_test.c
rename to test/core/support/spinlock_test.cc
index 185538e..3639802 100644
--- a/test/core/support/spinlock_test.c
+++ b/test/core/support/spinlock_test.cc
@@ -43,9 +43,10 @@
 
 /* Return pointer to a new struct test. */
 static struct test* test_new(int threads, int64_t iterations, int incr_step) {
-  struct test* m = gpr_malloc(sizeof(*m));
+  struct test* m = static_cast<struct test*>(gpr_malloc(sizeof(*m)));
   m->thread_count = threads;
-  m->threads = gpr_malloc(sizeof(*m->threads) * (size_t)threads);
+  m->threads = static_cast<gpr_thd_id*>(
+      gpr_malloc(sizeof(*m->threads) * (size_t)threads));
   m->iterations = iterations;
   m->counter = 0;
   m->thread_count = 0;
@@ -113,7 +114,7 @@
 
 /* Increment m->counter on each iteration; then mark thread as done.  */
 static void inc(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations; i++) {
     gpr_spinlock_lock(&m->mu);
@@ -125,7 +126,7 @@
 /* Increment m->counter under lock acquired with trylock, m->iterations times;
    then mark thread as done.  */
 static void inctry(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations;) {
     if (gpr_spinlock_trylock(&m->mu)) {
diff --git a/test/core/support/stack_lockfree_test.c b/test/core/support/stack_lockfree_test.cc
similarity index 100%
rename from test/core/support/stack_lockfree_test.c
rename to test/core/support/stack_lockfree_test.cc
diff --git a/test/core/support/string_test.c b/test/core/support/string_test.cc
similarity index 100%
rename from test/core/support/string_test.c
rename to test/core/support/string_test.cc
diff --git a/test/core/support/sync_test.c b/test/core/support/sync_test.cc
similarity index 95%
rename from test/core/support/sync_test.c
rename to test/core/support/sync_test.cc
index b4436f7..416e94d 100644
--- a/test/core/support/sync_test.c
+++ b/test/core/support/sync_test.cc
@@ -157,7 +157,7 @@
 
 /* Return pointer to a new struct test. */
 static struct test* test_new(int threads, int64_t iterations, int incr_step) {
-  struct test* m = gpr_malloc(sizeof(*m));
+  struct test* m = static_cast<struct test*>(gpr_malloc(sizeof(*m)));
   m->threads = threads;
   m->iterations = iterations;
   m->counter = 0;
@@ -263,7 +263,7 @@
 
 /* Increment m->counter on each iteration; then mark thread as done.  */
 static void inc(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations; i++) {
     gpr_mu_lock(&m->mu);
@@ -276,7 +276,7 @@
 /* Increment m->counter under lock acquired with trylock, m->iterations times;
    then mark thread as done.  */
 static void inctry(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations;) {
     if (gpr_mu_trylock(&m->mu)) {
@@ -291,7 +291,7 @@
 /* Increment counter only when (m->counter%m->threads)==m->thread_id; then mark
    thread as done.  */
 static void inc_by_turns(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   int id = thread_id(m);
   for (i = 0; i != m->iterations; i++) {
@@ -309,7 +309,7 @@
 /* Wait a millisecond and increment counter on each iteration;
    then mark thread as done. */
 static void inc_with_1ms_delay(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations; i++) {
     gpr_timespec deadline;
@@ -327,7 +327,7 @@
 /* Wait a millisecond and increment counter on each iteration, using an event
    for timing; then mark thread as done. */
 static void inc_with_1ms_delay_event(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations; i++) {
     gpr_timespec deadline;
@@ -345,7 +345,7 @@
    Even threads use queue_append(), and odd threads use queue_try_append()
    until it succeeds. */
 static void many_producers(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   int x = thread_id(m);
   if ((x & 1) == 0) {
@@ -365,7 +365,7 @@
    wait an extra second to confirm that no more elements are arriving,
    then mark thread as done. */
 static void consumer(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t n = m->iterations * m->threads;
   int64_t i;
   int value;
@@ -385,7 +385,7 @@
 /* Increment m->stats_counter m->iterations times, transfer counter value to
    m->counter, then mark thread as done.  */
 static void statsinc(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations; i++) {
     gpr_stats_inc(&m->stats_counter, 1);
@@ -400,7 +400,7 @@
    m->thread_refcount once, and if it reaches zero, set m->event to (void*)1;
    then mark thread as done.  */
 static void refinc(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t i;
   for (i = 0; i != m->iterations; i++) {
     if (m->incr_step == 1) {
@@ -419,7 +419,7 @@
    (m->threads * m->iterations * m->incr_step) times, and ensure that the last
    decrement caused the counter to reach zero, then mark thread as done.  */
 static void refcheck(void* v /*=m*/) {
-  struct test* m = v;
+  struct test* m = static_cast<struct test*>(v);
   int64_t n = m->iterations * m->threads * m->incr_step;
   int64_t i;
   GPR_ASSERT(gpr_event_wait(&m->event, gpr_inf_future(GPR_CLOCK_REALTIME)) ==
diff --git a/test/core/support/thd_test.c b/test/core/support/thd_test.cc
similarity index 97%
rename from test/core/support/thd_test.c
rename to test/core/support/thd_test.cc
index 4fd0051..f70a3b4 100644
--- a/test/core/support/thd_test.c
+++ b/test/core/support/thd_test.cc
@@ -37,7 +37,7 @@
 
 /* A Thread body.   Decrement t->n, and if is becomes zero, set t->done. */
 static void thd_body(void* v) {
-  struct test* t = v;
+  struct test* t = static_cast<struct test*>(v);
   gpr_mu_lock(&t->mu);
   t->n--;
   if (t->n == 0) {
diff --git a/test/core/support/time_test.c b/test/core/support/time_test.cc
similarity index 100%
rename from test/core/support/time_test.c
rename to test/core/support/time_test.cc
diff --git a/test/core/support/tls_test.c b/test/core/support/tls_test.cc
similarity index 100%
rename from test/core/support/tls_test.c
rename to test/core/support/tls_test.cc
diff --git a/test/core/support/useful_test.c b/test/core/support/useful_test.cc
similarity index 100%
rename from test/core/support/useful_test.c
rename to test/core/support/useful_test.cc
diff --git a/test/core/surface/BUILD b/test/core/surface/BUILD
index 17db773..6cec7fe 100644
--- a/test/core/surface/BUILD
+++ b/test/core/surface/BUILD
@@ -20,8 +20,8 @@
 
 grpc_cc_test(
     name = "alarm_test",
-    srcs = ["alarm_test.c"],
-    language = "C",
+    srcs = ["alarm_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -32,8 +32,8 @@
 
 grpc_cc_test(
     name = "grpc_byte_buffer_reader_test",
-    srcs = ["byte_buffer_reader_test.c"],
-    language = "C",
+    srcs = ["byte_buffer_reader_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -44,8 +44,8 @@
 
 grpc_cc_test(
     name = "channel_create_test",
-    srcs = ["channel_create_test.c"],
-    language = "C",
+    srcs = ["channel_create_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -56,8 +56,8 @@
 
 grpc_cc_test(
     name = "grpc_completion_queue_test",
-    srcs = ["completion_queue_test.c"],
-    language = "C",
+    srcs = ["completion_queue_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -68,8 +68,8 @@
 
 grpc_cc_test(
     name = "concurrent_connectivity_test",
-    srcs = ["concurrent_connectivity_test.c"],
-    language = "C",
+    srcs = ["concurrent_connectivity_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -80,8 +80,8 @@
 
 grpc_cc_test(
     name = "init_test",
-    srcs = ["init_test.c"],
-    language = "C",
+    srcs = ["init_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -92,8 +92,8 @@
 
 grpc_cc_test(
     name = "grpc_invalid_channel_args_test",
-    srcs = ["invalid_channel_args_test.c"],
-    language = "C",
+    srcs = ["invalid_channel_args_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -104,8 +104,8 @@
 
 grpc_cc_test(
     name = "lame_client_test",
-    srcs = ["lame_client_test.c"],
-    language = "C",
+    srcs = ["lame_client_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -129,8 +129,8 @@
 
 grpc_cc_test(
     name = "secure_channel_create_test",
-    srcs = ["secure_channel_create_test.c"],
-    language = "C",
+    srcs = ["secure_channel_create_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -141,8 +141,8 @@
 
 grpc_cc_test(
     name = "sequential_connectivity_test",
-    srcs = ["sequential_connectivity_test.c"],
-    language = "C",
+    srcs = ["sequential_connectivity_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -154,8 +154,8 @@
 
 grpc_cc_test(
     name = "server_chttp2_test",
-    srcs = ["server_chttp2_test.c"],
-    language = "C",
+    srcs = ["server_chttp2_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -166,8 +166,8 @@
 
 grpc_cc_test(
     name = "server_test",
-    srcs = ["server_test.c"],
-    language = "C",
+    srcs = ["server_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/surface/alarm_test.c b/test/core/surface/alarm_test.cc
similarity index 100%
rename from test/core/surface/alarm_test.c
rename to test/core/surface/alarm_test.cc
diff --git a/test/core/surface/byte_buffer_reader_test.c b/test/core/surface/byte_buffer_reader_test.cc
similarity index 100%
rename from test/core/surface/byte_buffer_reader_test.c
rename to test/core/surface/byte_buffer_reader_test.cc
diff --git a/test/core/surface/channel_create_test.c b/test/core/surface/channel_create_test.cc
similarity index 100%
rename from test/core/surface/channel_create_test.c
rename to test/core/surface/channel_create_test.cc
diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.cc
similarity index 100%
rename from test/core/surface/completion_queue_test.c
rename to test/core/surface/completion_queue_test.cc
diff --git a/test/core/surface/completion_queue_threading_test.c b/test/core/surface/completion_queue_threading_test.cc
similarity index 95%
rename from test/core/surface/completion_queue_threading_test.c
rename to test/core/surface/completion_queue_threading_test.cc
index d98289f..043c5c1 100644
--- a/test/core/surface/completion_queue_threading_test.c
+++ b/test/core/surface/completion_queue_threading_test.cc
@@ -68,7 +68,7 @@
 };
 
 static void pluck_one(void* arg) {
-  struct thread_state* state = arg;
+  struct thread_state* state = static_cast<struct thread_state*>(arg);
   grpc_completion_queue_pluck(state->cc, state->tag,
                               gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
 }
@@ -143,7 +143,7 @@
 }
 
 static void producer_thread(void* arg) {
-  test_thread_options* opt = arg;
+  test_thread_options* opt = static_cast<test_thread_options*>(arg);
   int i;
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 
@@ -164,7 +164,8 @@
   for (i = 0; i < TEST_THREAD_EVENTS; i++) {
     grpc_cq_end_op(&exec_ctx, opt->cc, (void*)(intptr_t)1, GRPC_ERROR_NONE,
                    free_completion, NULL,
-                   gpr_malloc(sizeof(grpc_cq_completion)));
+                   static_cast<grpc_cq_completion*>(
+                       gpr_malloc(sizeof(grpc_cq_completion))));
     opt->events_triggered++;
     grpc_exec_ctx_finish(&exec_ctx);
   }
@@ -175,7 +176,7 @@
 }
 
 static void consumer_thread(void* arg) {
-  test_thread_options* opt = arg;
+  test_thread_options* opt = static_cast<test_thread_options*>(arg);
   grpc_event ev;
 
   gpr_log(GPR_INFO, "consumer %d started", opt->id);
@@ -209,8 +210,8 @@
 }
 
 static void test_threading(size_t producers, size_t consumers) {
-  test_thread_options* options =
-      gpr_malloc((producers + consumers) * sizeof(test_thread_options));
+  test_thread_options* options = static_cast<test_thread_options*>(
+      gpr_malloc((producers + consumers) * sizeof(test_thread_options)));
   gpr_event phase1 = GPR_EVENT_INIT;
   gpr_event phase2 = GPR_EVENT_INIT;
   grpc_completion_queue* cc = grpc_completion_queue_create_for_next(NULL);
diff --git a/test/core/surface/concurrent_connectivity_test.c b/test/core/surface/concurrent_connectivity_test.cc
similarity index 98%
rename from test/core/surface/concurrent_connectivity_test.c
rename to test/core/surface/concurrent_connectivity_test.cc
index 105905f..6f6a71e 100644
--- a/test/core/surface/concurrent_connectivity_test.c
+++ b/test/core/surface/concurrent_connectivity_test.cc
@@ -158,7 +158,7 @@
 
 static void done_pollset_shutdown(grpc_exec_ctx* exec_ctx, void* pollset,
                                   grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, pollset);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(pollset));
   gpr_free(pollset);
 }
 
@@ -211,7 +211,7 @@
 
   /* Third round, bogus tcp server */
   gpr_log(GPR_DEBUG, "Wave 3");
-  args.pollset = gpr_zalloc(grpc_pollset_size());
+  args.pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(args.pollset, &args.mu);
   gpr_event_init(&args.ready);
   gpr_thd_new(&server, bad_server_thread, &args, &options);
diff --git a/test/core/surface/init_test.c b/test/core/surface/init_test.cc
similarity index 100%
rename from test/core/surface/init_test.c
rename to test/core/surface/init_test.cc
diff --git a/test/core/surface/invalid_channel_args_test.c b/test/core/surface/invalid_channel_args_test.cc
similarity index 90%
rename from test/core/surface/invalid_channel_args_test.c
rename to test/core/surface/invalid_channel_args_test.cc
index 1f81b3c..6a58a32 100644
--- a/test/core/surface/invalid_channel_args_test.c
+++ b/test/core/surface/invalid_channel_args_test.cc
@@ -75,7 +75,7 @@
   char* expected_error_message;
 
   client_arg.type = GRPC_ARG_INTEGER;
-  client_arg.key = GRPC_ARG_DEFAULT_AUTHORITY;
+  client_arg.key = const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY);
   client_arg.value.integer = 0;
 
   client_args.num_args = 1;
@@ -91,7 +91,7 @@
   char* expected_error_message;
 
   client_arg.type = GRPC_ARG_INTEGER;
-  client_arg.key = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG;
+  client_arg.key = const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
   client_arg.value.integer = 0;
 
   client_args.num_args = 1;
@@ -107,11 +107,11 @@
   char* expected_error_message;
 
   client_arg[0].type = GRPC_ARG_STRING;
-  client_arg[0].key = GRPC_ARG_DEFAULT_AUTHORITY;
-  client_arg[0].value.string = "default";
+  client_arg[0].key = const_cast<char*>(GRPC_ARG_DEFAULT_AUTHORITY);
+  client_arg[0].value.string = const_cast<char*>("default");
   client_arg[1].type = GRPC_ARG_STRING;
-  client_arg[1].key = GRPC_SSL_TARGET_NAME_OVERRIDE_ARG;
-  client_arg[1].value.string = "ssl";
+  client_arg[1].key = const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
+  client_arg[1].value.string = const_cast<char*>("ssl");
 
   client_args.num_args = 2;
   client_args.args = client_arg;
diff --git a/test/core/surface/lame_client_test.c b/test/core/surface/lame_client_test.cc
similarity index 97%
rename from test/core/surface/lame_client_test.c
rename to test/core/surface/lame_client_test.cc
index 274efa6..c374adc 100644
--- a/test/core/surface/lame_client_test.c
+++ b/test/core/surface/lame_client_test.cc
@@ -34,7 +34,7 @@
 
 void verify_connectivity(grpc_exec_ctx* exec_ctx, void* arg,
                          grpc_error* error) {
-  grpc_connectivity_state* state = arg;
+  grpc_connectivity_state* state = static_cast<grpc_connectivity_state*>(arg);
   GPR_ASSERT(GRPC_CHANNEL_SHUTDOWN == *state);
   GPR_ASSERT(error == GRPC_ERROR_NONE);
 }
diff --git a/test/core/surface/num_external_connectivity_watchers_test.c b/test/core/surface/num_external_connectivity_watchers_test.cc
similarity index 97%
rename from test/core/surface/num_external_connectivity_watchers_test.c
rename to test/core/surface/num_external_connectivity_watchers_test.cc
index faf3945..89dc364 100644
--- a/test/core/surface/num_external_connectivity_watchers_test.c
+++ b/test/core/surface/num_external_connectivity_watchers_test.cc
@@ -169,9 +169,10 @@
 static grpc_channel* secure_test_create_channel(const char* addr) {
   grpc_channel_credentials* ssl_creds =
       grpc_ssl_credentials_create(test_root_cert, NULL, NULL);
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args* new_client_args =
       grpc_channel_args_copy_and_add(NULL, &ssl_name_override, 1);
   grpc_channel* channel =
diff --git a/test/core/surface/secure_channel_create_test.c b/test/core/surface/secure_channel_create_test.cc
similarity index 97%
rename from test/core/surface/secure_channel_create_test.c
rename to test/core/surface/secure_channel_create_test.cc
index a052e10..f3163c1 100644
--- a/test/core/surface/secure_channel_create_test.c
+++ b/test/core/surface/secure_channel_create_test.cc
@@ -47,7 +47,7 @@
   grpc_arg arg;
   arg.type = GRPC_ARG_POINTER;
   arg.value.pointer.p = NULL;
-  arg.key = GRPC_ARG_SECURITY_CONNECTOR;
+  arg.key = const_cast<char*>(GRPC_ARG_SECURITY_CONNECTOR);
   grpc_channel_args args;
   args.num_args = 1;
   args.args = &arg;
diff --git a/test/core/surface/sequential_connectivity_test.c b/test/core/surface/sequential_connectivity_test.cc
similarity index 95%
rename from test/core/surface/sequential_connectivity_test.c
rename to test/core/surface/sequential_connectivity_test.cc
index 712bfb9..9ffbc82 100644
--- a/test/core/surface/sequential_connectivity_test.c
+++ b/test/core/surface/sequential_connectivity_test.cc
@@ -43,7 +43,7 @@
 } server_thread_args;
 
 static void server_thread_func(void* args) {
-  server_thread_args* a = args;
+  server_thread_args* a = static_cast<server_thread_args*>(args);
   grpc_event ev = grpc_completion_queue_next(
       a->cq, gpr_inf_future(GPR_CLOCK_REALTIME), NULL);
   GPR_ASSERT(ev.type == GRPC_OP_COMPLETE);
@@ -147,9 +147,10 @@
 static grpc_channel* secure_test_create_channel(const char* addr) {
   grpc_channel_credentials* ssl_creds =
       grpc_ssl_credentials_create(test_root_cert, NULL, NULL);
-  grpc_arg ssl_name_override = {GRPC_ARG_STRING,
-                                GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
-                                {"foo.test.google.fr"}};
+  grpc_arg ssl_name_override = {
+      GRPC_ARG_STRING,
+      const_cast<char*>(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG),
+      {const_cast<char*>("foo.test.google.fr")}};
   grpc_channel_args* new_client_args =
       grpc_channel_args_copy_and_add(NULL, &ssl_name_override, 1);
   grpc_channel* channel =
diff --git a/test/core/surface/server_chttp2_test.c b/test/core/surface/server_chttp2_test.cc
similarity index 97%
rename from test/core/surface/server_chttp2_test.c
rename to test/core/surface/server_chttp2_test.cc
index f90dccc..b0ffb1d 100644
--- a/test/core/surface/server_chttp2_test.c
+++ b/test/core/surface/server_chttp2_test.cc
@@ -39,7 +39,7 @@
 void test_add_same_port_twice() {
   grpc_arg a;
   a.type = GRPC_ARG_INTEGER;
-  a.key = GRPC_ARG_ALLOW_REUSEPORT;
+  a.key = const_cast<char*>(GRPC_ARG_ALLOW_REUSEPORT);
   a.value.integer = 0;
   grpc_channel_args args = {1, &a};
 
diff --git a/test/core/surface/server_test.c b/test/core/surface/server_test.cc
similarity index 98%
rename from test/core/surface/server_test.c
rename to test/core/surface/server_test.cc
index 6e1e1b6..240969a 100644
--- a/test/core/surface/server_test.c
+++ b/test/core/surface/server_test.cc
@@ -69,7 +69,7 @@
 void test_bind_server_twice(void) {
   grpc_arg a;
   a.type = GRPC_ARG_INTEGER;
-  a.key = GRPC_ARG_ALLOW_REUSEPORT;
+  a.key = const_cast<char*>(GRPC_ARG_ALLOW_REUSEPORT);
   a.value.integer = 0;
   grpc_channel_args args = {1, &a};
 
diff --git a/test/core/transport/BUILD b/test/core/transport/BUILD
index edd27b8..b31d4ff 100644
--- a/test/core/transport/BUILD
+++ b/test/core/transport/BUILD
@@ -35,8 +35,8 @@
 
 grpc_cc_test(
     name = "byte_stream_test",
-    srcs = ["byte_stream_test.c"],
-    language = "C",
+    srcs = ["byte_stream_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -47,8 +47,8 @@
 
 grpc_cc_test(
     name = "connectivity_state_test",
-    srcs = ["connectivity_state_test.c"],
-    language = "C",
+    srcs = ["connectivity_state_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -59,8 +59,8 @@
 
 grpc_cc_test(
     name = "metadata_test",
-    srcs = ["metadata_test.c"],
-    language = "C",
+    srcs = ["metadata_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -86,8 +86,8 @@
 
 grpc_cc_test(
     name = "status_conversion_test",
-    srcs = ["status_conversion_test.c"],
-    language = "C",
+    srcs = ["status_conversion_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -98,8 +98,8 @@
 
 grpc_cc_test(
     name = "stream_owned_slice_test",
-    srcs = ["stream_owned_slice_test.c"],
-    language = "C",
+    srcs = ["stream_owned_slice_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -110,8 +110,8 @@
 
 grpc_cc_test(
     name = "timeout_encoding_test",
-    srcs = ["timeout_encoding_test.c"],
-    language = "C",
+    srcs = ["timeout_encoding_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/transport/byte_stream_test.c b/test/core/transport/byte_stream_test.cc
similarity index 100%
rename from test/core/transport/byte_stream_test.c
rename to test/core/transport/byte_stream_test.cc
diff --git a/test/core/transport/chttp2/BUILD b/test/core/transport/chttp2/BUILD
index 6081940..1ea7d03 100644
--- a/test/core/transport/chttp2/BUILD
+++ b/test/core/transport/chttp2/BUILD
@@ -22,7 +22,7 @@
 
 grpc_fuzzer(
     name = "hpack_parser_fuzzer",
-    srcs = ["hpack_parser_fuzzer_test.c"],
+    srcs = ["hpack_parser_fuzzer_test.cc"],
     corpus = "hpack_parser_corpus",
     deps = [
         "//:grpc",
@@ -32,8 +32,8 @@
 
 grpc_cc_test(
     name = "alpn_test",
-    srcs = ["alpn_test.c"],
-    language = "C",
+    srcs = ["alpn_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -44,8 +44,8 @@
 
 grpc_cc_test(
     name = "bin_decoder_test",
-    srcs = ["bin_decoder_test.c"],
-    language = "C",
+    srcs = ["bin_decoder_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -56,8 +56,8 @@
 
 grpc_cc_test(
     name = "bin_encoder_test",
-    srcs = ["bin_encoder_test.c"],
-    language = "C",
+    srcs = ["bin_encoder_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -68,8 +68,8 @@
 
 grpc_cc_test(
     name = "hpack_encoder_test",
-    srcs = ["hpack_encoder_test.c"],
-    language = "C",
+    srcs = ["hpack_encoder_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -80,8 +80,8 @@
 
 grpc_cc_test(
     name = "hpack_parser_test",
-    srcs = ["hpack_parser_test.c"],
-    language = "C",
+    srcs = ["hpack_parser_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -92,8 +92,8 @@
 
 grpc_cc_test(
     name = "hpack_table_test",
-    srcs = ["hpack_table_test.c"],
-    language = "C",
+    srcs = ["hpack_table_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -104,8 +104,8 @@
 
 grpc_cc_test(
     name = "stream_map_test",
-    srcs = ["stream_map_test.c"],
-    language = "C",
+    srcs = ["stream_map_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
@@ -116,8 +116,8 @@
 
 grpc_cc_test(
     name = "varint_test",
-    srcs = ["varint_test.c"],
-    language = "C",
+    srcs = ["varint_test.cc"],
+    language = "C++",
     deps = [
         "//:gpr",
         "//:grpc",
diff --git a/test/core/transport/chttp2/alpn_test.c b/test/core/transport/chttp2/alpn_test.cc
similarity index 100%
rename from test/core/transport/chttp2/alpn_test.c
rename to test/core/transport/chttp2/alpn_test.cc
diff --git a/test/core/transport/chttp2/bin_decoder_test.c b/test/core/transport/chttp2/bin_decoder_test.cc
similarity index 98%
rename from test/core/transport/chttp2/bin_decoder_test.c
rename to test/core/transport/chttp2/bin_decoder_test.cc
index 64cb158..a29ec8a 100644
--- a/test/core/transport/chttp2/bin_decoder_test.c
+++ b/test/core/transport/chttp2/bin_decoder_test.cc
@@ -30,7 +30,7 @@
 static int all_ok = 1;
 
 static void expect_slice_eq(grpc_exec_ctx* exec_ctx, grpc_slice expected,
-                            grpc_slice slice, char* debug, int line) {
+                            grpc_slice slice, const char* debug, int line) {
   if (!grpc_slice_eq(slice, expected)) {
     char* hs = grpc_dump_slice(slice, GPR_DUMP_HEX | GPR_DUMP_ASCII);
     char* he = grpc_dump_slice(expected, GPR_DUMP_HEX | GPR_DUMP_ASCII);
diff --git a/test/core/transport/chttp2/bin_encoder_test.c b/test/core/transport/chttp2/bin_encoder_test.cc
similarity index 98%
rename from test/core/transport/chttp2/bin_encoder_test.c
rename to test/core/transport/chttp2/bin_encoder_test.cc
index 2465c59..78b8808 100644
--- a/test/core/transport/chttp2/bin_encoder_test.c
+++ b/test/core/transport/chttp2/bin_encoder_test.cc
@@ -31,8 +31,8 @@
 
 static int all_ok = 1;
 
-static void expect_slice_eq(grpc_slice expected, grpc_slice slice, char* debug,
-                            int line) {
+static void expect_slice_eq(grpc_slice expected, grpc_slice slice,
+                            const char* debug, int line) {
   if (!grpc_slice_eq(slice, expected)) {
     char* hs = grpc_dump_slice(slice, GPR_DUMP_HEX | GPR_DUMP_ASCII);
     char* he = grpc_dump_slice(expected, GPR_DUMP_HEX | GPR_DUMP_ASCII);
diff --git a/test/core/transport/chttp2/hpack_encoder_test.c b/test/core/transport/chttp2/hpack_encoder_test.cc
similarity index 90%
rename from test/core/transport/chttp2/hpack_encoder_test.c
rename to test/core/transport/chttp2/hpack_encoder_test.cc
index 9045f32..a7e44ab 100644
--- a/test/core/transport/chttp2/hpack_encoder_test.c
+++ b/test/core/transport/chttp2/hpack_encoder_test.cc
@@ -58,7 +58,8 @@
   grpc_slice expect = parse_hexstring(expected);
   size_t i;
   va_list l;
-  grpc_linked_mdelem* e = gpr_malloc(sizeof(*e) * nheaders);
+  grpc_linked_mdelem* e =
+      static_cast<grpc_linked_mdelem*>(gpr_malloc(sizeof(*e) * nheaders));
   grpc_metadata_batch b;
 
   grpc_metadata_batch_init(&b);
@@ -89,7 +90,8 @@
 
   if (cap_to_delete == num_to_delete) {
     cap_to_delete = GPR_MAX(2 * cap_to_delete, 1000);
-    to_delete = gpr_realloc(to_delete, sizeof(*to_delete) * cap_to_delete);
+    to_delete = static_cast<void**>(
+        gpr_realloc(to_delete, sizeof(*to_delete) * cap_to_delete));
   }
   to_delete[num_to_delete++] = e;
 
@@ -98,11 +100,11 @@
   grpc_transport_one_way_stats stats;
   memset(&stats, 0, sizeof(stats));
   grpc_encode_header_options hopt = {
-      .stream_id = 0xdeadbeef,
-      .is_eof = params.eof,
-      .use_true_binary_metadata = params.use_true_binary_metadata,
-      .max_frame_size = 16384,
-      .stats = &stats,
+      0xdeadbeef,                      /* stream_id */
+      params.eof,                      /* is_eof */
+      params.use_true_binary_metadata, /* use_true_binary_metadata */
+      16384,                           /* max_frame_size */
+      &stats                           /* stats */
   };
   grpc_chttp2_encode_header(exec_ctx, &g_compressor, NULL, 0, &b, &hopt,
                             &output);
@@ -129,9 +131,9 @@
   int i;
 
   verify_params params = {
-      .eof = false,
-      .use_true_binary_metadata = false,
-      .only_intern_key = false,
+      false,
+      false,
+      false,
   };
   verify(exec_ctx, params, "000005 0104 deadbeef 40 0161 0161", 1, "a", "a");
   verify(exec_ctx, params, "000001 0104 deadbeef be", 1, "a", "a");
@@ -167,9 +169,9 @@
   char* expect;
 
   verify_params params = {
-      .eof = false,
-      .use_true_binary_metadata = false,
-      .only_intern_key = false,
+      false,
+      false,
+      false,
   };
 
   for (i = 0; i < 114; i++) {
@@ -213,7 +215,8 @@
       grpc_slice_intern(grpc_slice_from_static_string(value)));
   size_t elem_size = grpc_mdelem_get_size_in_hpack_table(elem, use_true_binary);
   size_t initial_table_size = g_compressor.table_size;
-  grpc_linked_mdelem* e = gpr_malloc(sizeof(*e));
+  grpc_linked_mdelem* e =
+      static_cast<grpc_linked_mdelem*>(gpr_malloc(sizeof(*e)));
   grpc_metadata_batch b;
   grpc_metadata_batch_init(&b);
   e[0].md = elem;
@@ -227,11 +230,11 @@
   grpc_transport_one_way_stats stats;
   memset(&stats, 0, sizeof(stats));
   grpc_encode_header_options hopt = {
-      .stream_id = 0xdeadbeef,
-      .is_eof = false,
-      .use_true_binary_metadata = use_true_binary,
-      .max_frame_size = 16384,
-      .stats = &stats};
+      0xdeadbeef,      /* stream_id */
+      false,           /* is_eof */
+      use_true_binary, /* use_true_binary_metadata */
+      16384,           /* max_frame_size */
+      &stats /* stats */};
   grpc_chttp2_encode_header(exec_ctx, &g_compressor, NULL, 0, &b, &hopt,
                             &output);
   grpc_slice_buffer_destroy_internal(exec_ctx, &output);
@@ -251,11 +254,7 @@
 
 static void test_interned_key_indexed(grpc_exec_ctx* exec_ctx) {
   int i;
-  verify_params params = {
-      .eof = false,
-      .use_true_binary_metadata = false,
-      .only_intern_key = true,
-  };
+  verify_params params = {false, false, true};
   verify(exec_ctx, params, "000009 0104 deadbeef 40 0161 0162 0f2f 0163", 2,
          "a", "b", "a", "c");
   for (i = 0; i < 10; i++) {
diff --git a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
similarity index 95%
rename from test/core/transport/chttp2/hpack_parser_fuzzer_test.c
rename to test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
index 01230eb..942f25e 100644
--- a/test/core/transport/chttp2/hpack_parser_fuzzer_test.c
+++ b/test/core/transport/chttp2/hpack_parser_fuzzer_test.cc
@@ -34,7 +34,7 @@
 }
 static void dont_log(gpr_log_func_args* args) {}
 
-int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   grpc_test_only_set_slice_hash_seed(0);
   if (squelch) gpr_set_log_function(dont_log);
   grpc_init();
diff --git a/test/core/transport/chttp2/hpack_parser_test.c b/test/core/transport/chttp2/hpack_parser_test.cc
similarity index 98%
rename from test/core/transport/chttp2/hpack_parser_test.c
rename to test/core/transport/chttp2/hpack_parser_test.cc
index 6fbbaca..434b46e 100644
--- a/test/core/transport/chttp2/hpack_parser_test.c
+++ b/test/core/transport/chttp2/hpack_parser_test.cc
@@ -34,7 +34,7 @@
 
 static void onhdr(grpc_exec_ctx* exec_ctx, void* ud, grpc_mdelem md) {
   const char *ekey, *evalue;
-  test_checker* chk = ud;
+  test_checker* chk = static_cast<test_checker*>(ud);
   ekey = va_arg(chk->args, char*);
   GPR_ASSERT(ekey);
   evalue = va_arg(chk->args, char*);
diff --git a/test/core/transport/chttp2/hpack_table_test.c b/test/core/transport/chttp2/hpack_table_test.cc
similarity index 100%
rename from test/core/transport/chttp2/hpack_table_test.c
rename to test/core/transport/chttp2/hpack_table_test.cc
diff --git a/test/core/transport/chttp2/stream_map_test.c b/test/core/transport/chttp2/stream_map_test.cc
similarity index 98%
rename from test/core/transport/chttp2/stream_map_test.c
rename to test/core/transport/chttp2/stream_map_test.cc
index 43e7e7f..23a7b3f 100644
--- a/test/core/transport/chttp2/stream_map_test.c
+++ b/test/core/transport/chttp2/stream_map_test.cc
@@ -92,7 +92,7 @@
 
 /* verify that for_each gets the right values during test_delete_evens_XXX */
 static void verify_for_each(void* user_data, uint32_t stream_id, void* ptr) {
-  uint32_t* for_each_check = user_data;
+  uint32_t* for_each_check = static_cast<uint32_t*>(user_data);
   GPR_ASSERT(ptr);
   GPR_ASSERT(*for_each_check == stream_id);
   *for_each_check += 2;
diff --git a/test/core/transport/chttp2/varint_test.c b/test/core/transport/chttp2/varint_test.cc
similarity index 100%
rename from test/core/transport/chttp2/varint_test.c
rename to test/core/transport/chttp2/varint_test.cc
diff --git a/test/core/transport/connectivity_state_test.c b/test/core/transport/connectivity_state_test.cc
similarity index 100%
rename from test/core/transport/connectivity_state_test.c
rename to test/core/transport/connectivity_state_test.cc
diff --git a/test/core/transport/metadata_test.c b/test/core/transport/metadata_test.cc
similarity index 96%
rename from test/core/transport/metadata_test.c
rename to test/core/transport/metadata_test.cc
index c555159..b60a961 100644
--- a/test/core/transport/metadata_test.c
+++ b/test/core/transport/metadata_test.cc
@@ -114,7 +114,8 @@
 static void test_create_many_persistant_metadata(void) {
   char buffer[GPR_LTOA_MIN_BUFSIZE];
   long i;
-  grpc_mdelem* created = gpr_malloc(sizeof(grpc_mdelem) * MANY);
+  grpc_mdelem* created =
+      static_cast<grpc_mdelem*>(gpr_malloc(sizeof(grpc_mdelem) * MANY));
   grpc_mdelem md;
 
   gpr_log(GPR_INFO, "test_create_many_persistant_metadata");
@@ -226,8 +227,9 @@
   size_t i, j;
   char* buffer;
   size_t nstrs = 1000;
-  grpc_slice* strs = gpr_malloc(sizeof(grpc_slice) * nstrs);
-  size_t* shuf = gpr_malloc(sizeof(size_t) * nstrs);
+  grpc_slice* strs =
+      static_cast<grpc_slice*>(gpr_malloc(sizeof(grpc_slice) * nstrs));
+  size_t* shuf = static_cast<size_t*>(gpr_malloc(sizeof(size_t) * nstrs));
   grpc_slice test;
 
   gpr_log(GPR_INFO, "test_things_stick_around");
@@ -281,9 +283,9 @@
 
   grpc_init();
   grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
-  ud1 = gpr_malloc(sizeof(int));
+  ud1 = static_cast<int*>(gpr_malloc(sizeof(int)));
   *ud1 = 1;
-  ud2 = gpr_malloc(sizeof(int));
+  ud2 = static_cast<int*>(gpr_malloc(sizeof(int)));
   *ud2 = 2;
   md = grpc_mdelem_from_slices(
       &exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")),
diff --git a/test/core/transport/status_conversion_test.c b/test/core/transport/status_conversion_test.cc
similarity index 100%
rename from test/core/transport/status_conversion_test.c
rename to test/core/transport/status_conversion_test.cc
diff --git a/test/core/transport/stream_owned_slice_test.c b/test/core/transport/stream_owned_slice_test.cc
similarity index 100%
rename from test/core/transport/stream_owned_slice_test.c
rename to test/core/transport/stream_owned_slice_test.cc
diff --git a/test/core/transport/timeout_encoding_test.c b/test/core/transport/timeout_encoding_test.cc
similarity index 100%
rename from test/core/transport/timeout_encoding_test.c
rename to test/core/transport/timeout_encoding_test.cc
diff --git a/test/core/tsi/BUILD b/test/core/tsi/BUILD
index 0c5509d..e28c0b5 100644
--- a/test/core/tsi/BUILD
+++ b/test/core/tsi/BUILD
@@ -20,7 +20,7 @@
 
 grpc_cc_library(
     name = "transport_security_test_lib",
-    srcs = ["transport_security_test_lib.c"],
+    srcs = ["transport_security_test_lib.cc"],
     hdrs = ["transport_security_test_lib.h"],
     deps = [
         "//:grpc",
@@ -30,8 +30,8 @@
 
 grpc_cc_test(
     name = "fake_transport_security_test",
-    srcs = ["fake_transport_security_test.c"],
-    language = "C",
+    srcs = ["fake_transport_security_test.cc"],
+    language = "C++",
     deps = [
         ":transport_security_test_lib",
         "//:grpc",
@@ -44,7 +44,7 @@
 
 grpc_cc_test(
     name = "ssl_transport_security_test",
-    srcs = ["ssl_transport_security_test.c"],
+    srcs = ["ssl_transport_security_test.cc"],
     data = [
         "//src/core/tsi/test_creds:badclient.key",
         "//src/core/tsi/test_creds:badclient.pem",
@@ -58,7 +58,7 @@
         "//src/core/tsi/test_creds:server1.key",
         "//src/core/tsi/test_creds:server1.pem",
     ],
-    language = "C",
+    language = "C++",
     deps = [
         ":transport_security_test_lib",
         "//:grpc",
@@ -70,8 +70,8 @@
 
 grpc_cc_test(
     name = "transport_security_test",
-    srcs = ["transport_security_test.c"],
-    language = "C",
+    srcs = ["transport_security_test.cc"],
+    language = "C++",
     deps = [
         "//:grpc",
         "//:gpr",
diff --git a/test/core/tsi/fake_transport_security_test.c b/test/core/tsi/fake_transport_security_test.cc
similarity index 96%
rename from test/core/tsi/fake_transport_security_test.c
rename to test/core/tsi/fake_transport_security_test.cc
index 39b36cd..32b0f89 100644
--- a/test/core/tsi/fake_transport_security_test.c
+++ b/test/core/tsi/fake_transport_security_test.cc
@@ -64,7 +64,8 @@
     fake_test_destruct};
 
 static tsi_test_fixture* fake_tsi_test_fixture_create() {
-  fake_tsi_test_fixture* fake_fixture = gpr_zalloc(sizeof(*fake_fixture));
+  fake_tsi_test_fixture* fake_fixture =
+      static_cast<fake_tsi_test_fixture*>(gpr_zalloc(sizeof(*fake_fixture)));
   tsi_test_fixture_init(&fake_fixture->base);
   fake_fixture->base.vtable = &vtable;
   return &fake_fixture->base;
@@ -91,8 +92,8 @@
 }
 
 void fake_tsi_test_do_round_trip_for_all_configs() {
-  unsigned int* bit_array =
-      gpr_zalloc(sizeof(unsigned int) * TSI_TEST_NUM_OF_ARGUMENTS);
+  unsigned int* bit_array = static_cast<unsigned int*>(
+      gpr_zalloc(sizeof(unsigned int) * TSI_TEST_NUM_OF_ARGUMENTS));
   const unsigned int mask = 1U << (TSI_TEST_NUM_OF_ARGUMENTS - 1);
   for (unsigned int val = 0; val < TSI_TEST_NUM_OF_COMBINATIONS; val++) {
     unsigned int v = val;
diff --git a/test/core/tsi/ssl_transport_security_test.c b/test/core/tsi/ssl_transport_security_test.cc
similarity index 95%
rename from test/core/tsi/ssl_transport_security_test.c
rename to test/core/tsi/ssl_transport_security_test.cc
index ad133bc..0903ce8 100644
--- a/test/core/tsi/ssl_transport_security_test.c
+++ b/test/core/tsi/ssl_transport_security_test.cc
@@ -324,8 +324,8 @@
     ssl_test_destruct};
 
 static char* load_file(const char* dir_path, const char* file_name) {
-  char* file_path =
-      gpr_zalloc(sizeof(char) * (strlen(dir_path) + strlen(file_name) + 1));
+  char* file_path = static_cast<char*>(
+      gpr_zalloc(sizeof(char) * (strlen(dir_path) + strlen(file_name) + 1)));
   memcpy(file_path, dir_path, strlen(dir_path));
   memcpy(file_path + strlen(dir_path), file_name, strlen(file_name));
   grpc_slice slice;
@@ -337,12 +337,14 @@
 }
 
 static tsi_test_fixture* ssl_tsi_test_fixture_create() {
-  ssl_tsi_test_fixture* ssl_fixture = gpr_zalloc(sizeof(*ssl_fixture));
+  ssl_tsi_test_fixture* ssl_fixture =
+      static_cast<ssl_tsi_test_fixture*>(gpr_zalloc(sizeof(*ssl_fixture)));
   tsi_test_fixture_init(&ssl_fixture->base);
   ssl_fixture->base.test_unused_bytes = false;
   ssl_fixture->base.vtable = &vtable;
   /* Create ssl_key_cert_lib. */
-  ssl_key_cert_lib* key_cert_lib = gpr_zalloc(sizeof(*key_cert_lib));
+  ssl_key_cert_lib* key_cert_lib =
+      static_cast<ssl_key_cert_lib*>(gpr_zalloc(sizeof(*key_cert_lib)));
   key_cert_lib->use_bad_server_cert = false;
   key_cert_lib->use_bad_client_cert = false;
   key_cert_lib->server_num_key_cert_pairs =
@@ -350,11 +352,13 @@
   key_cert_lib->bad_server_num_key_cert_pairs =
       SSL_TSI_TEST_BAD_SERVER_KEY_CERT_PAIRS_NUM;
   key_cert_lib->server_pem_key_cert_pairs =
-      gpr_malloc(sizeof(tsi_ssl_pem_key_cert_pair) *
-                 key_cert_lib->server_num_key_cert_pairs);
+      static_cast<tsi_ssl_pem_key_cert_pair*>(
+          gpr_malloc(sizeof(tsi_ssl_pem_key_cert_pair) *
+                     key_cert_lib->server_num_key_cert_pairs));
   key_cert_lib->bad_server_pem_key_cert_pairs =
-      gpr_malloc(sizeof(tsi_ssl_pem_key_cert_pair) *
-                 key_cert_lib->bad_server_num_key_cert_pairs);
+      static_cast<tsi_ssl_pem_key_cert_pair*>(
+          gpr_malloc(sizeof(tsi_ssl_pem_key_cert_pair) *
+                     key_cert_lib->bad_server_num_key_cert_pairs));
   key_cert_lib->server_pem_key_cert_pairs[0].private_key =
       load_file(SSL_TSI_TEST_CREDENTIALS_DIR, "server0.key");
   key_cert_lib->server_pem_key_cert_pairs[0].cert_chain =
@@ -378,11 +382,12 @@
   key_cert_lib->root_cert = load_file(SSL_TSI_TEST_CREDENTIALS_DIR, "ca.pem");
   ssl_fixture->key_cert_lib = key_cert_lib;
   /* Create ssl_alpn_lib. */
-  ssl_alpn_lib* alpn_lib = gpr_zalloc(sizeof(*alpn_lib));
+  ssl_alpn_lib* alpn_lib =
+      static_cast<ssl_alpn_lib*>(gpr_zalloc(sizeof(*alpn_lib)));
   alpn_lib->server_alpn_protocols =
-      gpr_zalloc(sizeof(char*) * SSL_TSI_TEST_ALPN_NUM);
+      static_cast<char**>(gpr_zalloc(sizeof(char*) * SSL_TSI_TEST_ALPN_NUM));
   alpn_lib->client_alpn_protocols =
-      gpr_zalloc(sizeof(char*) * SSL_TSI_TEST_ALPN_NUM);
+      static_cast<char**>(gpr_zalloc(sizeof(char*) * SSL_TSI_TEST_ALPN_NUM));
   alpn_lib->server_alpn_protocols[0] = gpr_strdup(SSL_TSI_TEST_ALPN1);
   alpn_lib->server_alpn_protocols[1] = gpr_strdup(SSL_TSI_TEST_ALPN3);
   alpn_lib->client_alpn_protocols[0] = gpr_strdup(SSL_TSI_TEST_ALPN2);
@@ -429,7 +434,8 @@
   /* server1 cert contains "waterzooi.test.google.be" in SAN. */
   tsi_test_fixture* fixture = ssl_tsi_test_fixture_create();
   ssl_tsi_test_fixture* ssl_fixture = (ssl_tsi_test_fixture*)fixture;
-  ssl_fixture->server_name_indication = "waterzooi.test.google.be";
+  ssl_fixture->server_name_indication =
+      const_cast<char*>("waterzooi.test.google.be");
   tsi_test_do_handshake(fixture);
   tsi_test_fixture_destroy(fixture);
 }
@@ -438,7 +444,8 @@
   /* server1 cert contains "*.test.google.fr" in SAN. */
   tsi_test_fixture* fixture = ssl_tsi_test_fixture_create();
   ssl_tsi_test_fixture* ssl_fixture = (ssl_tsi_test_fixture*)fixture;
-  ssl_fixture->server_name_indication = "juju.test.google.fr";
+  ssl_fixture->server_name_indication =
+      const_cast<char*>("juju.test.google.fr");
   tsi_test_do_handshake(fixture);
   tsi_test_fixture_destroy(fixture);
 }
@@ -493,8 +500,8 @@
 }
 
 void ssl_tsi_test_do_round_trip_for_all_configs() {
-  unsigned int* bit_array =
-      gpr_zalloc(sizeof(unsigned int) * TSI_TEST_NUM_OF_ARGUMENTS);
+  unsigned int* bit_array = static_cast<unsigned int*>(
+      gpr_zalloc(sizeof(unsigned int) * TSI_TEST_NUM_OF_ARGUMENTS));
   const unsigned int mask = 1U << (TSI_TEST_NUM_OF_ARGUMENTS - 1);
   for (unsigned int val = 0; val < TSI_TEST_NUM_OF_COMBINATIONS; val++) {
     unsigned int v = val;
diff --git a/test/core/tsi/transport_security_test.c b/test/core/tsi/transport_security_test.cc
similarity index 98%
rename from test/core/tsi/transport_security_test.c
rename to test/core/tsi/transport_security_test.cc
index f99afd8..39adf2f 100644
--- a/test/core/tsi/transport_security_test.c
+++ b/test/core/tsi/transport_security_test.cc
@@ -200,7 +200,7 @@
 } parsed_names;
 
 name_list* name_list_add(const char* n) {
-  name_list* result = gpr_malloc(sizeof(name_list));
+  name_list* result = static_cast<name_list*>(gpr_malloc(sizeof(name_list)));
   result->name = n;
   result->next = NULL;
   return result;
diff --git a/test/core/tsi/transport_security_test_lib.c b/test/core/tsi/transport_security_test_lib.cc
similarity index 94%
rename from test/core/tsi/transport_security_test_lib.c
rename to test/core/tsi/transport_security_test_lib.cc
index 090f0cf..af83168 100644
--- a/test/core/tsi/transport_security_test_lib.c
+++ b/test/core/tsi/transport_security_test_lib.cc
@@ -57,10 +57,12 @@
                                                bool is_client) {
   GPR_ASSERT(fixture != NULL);
   GPR_ASSERT(fixture->config != NULL);
-  handshaker_args* args = gpr_zalloc(sizeof(*args));
+  handshaker_args* args =
+      static_cast<handshaker_args*>(gpr_zalloc(sizeof(*args)));
   args->fixture = fixture;
   args->handshake_buffer_size = fixture->handshake_buffer_size;
-  args->handshake_buffer = gpr_zalloc(args->handshake_buffer_size);
+  args->handshake_buffer =
+      static_cast<unsigned char*>(gpr_zalloc(args->handshake_buffer_size));
   args->is_client = is_client;
   args->error = GRPC_ERROR_NONE;
   return args;
@@ -181,7 +183,8 @@
   GPR_ASSERT(fixture->config != NULL);
   GPR_ASSERT(protector != NULL);
   tsi_test_frame_protector_config* config = fixture->config;
-  unsigned char* protected_buffer = gpr_zalloc(config->protected_buffer_size);
+  unsigned char* protected_buffer =
+      static_cast<unsigned char*>(gpr_zalloc(config->protected_buffer_size));
   size_t message_size =
       is_client ? config->client_message_size : config->server_message_size;
   uint8_t* message =
@@ -238,9 +241,10 @@
   size_t read_from_peer_size = 0;
   tsi_result result = TSI_OK;
   bool done = false;
-  unsigned char* read_buffer = gpr_zalloc(config->read_buffer_allocated_size);
-  unsigned char* message_buffer =
-      gpr_zalloc(config->message_buffer_allocated_size);
+  unsigned char* read_buffer = static_cast<unsigned char*>(
+      gpr_zalloc(config->read_buffer_allocated_size));
+  unsigned char* message_buffer = static_cast<unsigned char*>(
+      gpr_zalloc(config->message_buffer_allocated_size));
   /* Do unprotect on data received from peer. */
   while (!done && result == TSI_OK) {
     /* Receive data from peer. */
@@ -432,7 +436,7 @@
   /* Client sends a message to server. */
   send_message_to_peer(fixture, client_frame_protector, true /* is_client */);
   unsigned char* server_received_message =
-      gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE);
+      static_cast<unsigned char*>(gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE));
   size_t server_received_message_size = 0;
   receive_message_from_peer(
       fixture, server_frame_protector, server_received_message,
@@ -443,7 +447,7 @@
   /* Server sends a message to client. */
   send_message_to_peer(fixture, server_frame_protector, false /* is_client */);
   unsigned char* client_received_message =
-      gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE);
+      static_cast<unsigned char*>(gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE));
   size_t client_received_message_size = 0;
   receive_message_from_peer(
       fixture, client_frame_protector, client_received_message,
@@ -461,7 +465,8 @@
 static unsigned char* generate_random_message(size_t size) {
   size_t i;
   unsigned char chars[] = "abcdefghijklmnopqrstuvwxyz1234567890";
-  unsigned char* output = gpr_zalloc(sizeof(unsigned char) * size);
+  unsigned char* output =
+      static_cast<unsigned char*>(gpr_zalloc(sizeof(unsigned char) * size));
   for (i = 0; i < size - 1; ++i) {
     output[i] = chars[rand() % (int)(sizeof(chars) - 1)];
   }
@@ -476,7 +481,9 @@
     bool use_default_client_max_output_protected_frame_size,
     bool use_default_server_max_output_protected_frame_size,
     bool use_default_handshake_buffer_size) {
-  tsi_test_frame_protector_config* config = gpr_zalloc(sizeof(*config));
+  tsi_test_frame_protector_config* config =
+      static_cast<tsi_test_frame_protector_config*>(
+          gpr_zalloc(sizeof(*config)));
   /* Set the value for read_buffer_allocated_size. */
   config->read_buffer_allocated_size =
       use_default_read_buffer_allocated_size
@@ -551,8 +558,10 @@
   fixture->config = tsi_test_frame_protector_config_create(
       true, true, true, true, true, true, true, true);
   fixture->handshake_buffer_size = TSI_TEST_DEFAULT_BUFFER_SIZE;
-  fixture->client_channel = gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE);
-  fixture->server_channel = gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE);
+  fixture->client_channel =
+      static_cast<uint8_t*>(gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE));
+  fixture->server_channel =
+      static_cast<uint8_t*>(gpr_zalloc(TSI_TEST_DEFAULT_CHANNEL_SIZE));
   fixture->bytes_written_to_client_channel = 0;
   fixture->bytes_written_to_server_channel = 0;
   fixture->bytes_read_from_client_channel = 0;
diff --git a/test/core/tsi/transport_security_test_lib.h b/test/core/tsi/transport_security_test_lib.h
index d067b6d..9b07448 100644
--- a/test/core/tsi/transport_security_test_lib.h
+++ b/test/core/tsi/transport_security_test_lib.h
@@ -23,10 +23,6 @@
 
 #include <grpc/support/sync.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 #define TSI_TEST_TINY_HANDSHAKE_BUFFER_SIZE 32
 #define TSI_TEST_SMALL_HANDSHAKE_BUFFER_SIZE 128
 #define TSI_TEST_SMALL_READ_BUFFER_ALLOCATED_SIZE 41
@@ -175,8 +171,4 @@
    the client and server switching its role. */
 void tsi_test_do_round_trip(tsi_test_fixture* fixture);
 
-#ifdef __cplusplus
-}
-#endif
-
 #endif  // GRPC_TEST_CORE_TSI_TRANSPORT_SECURITY_TEST_LIB_H_
diff --git a/test/core/util/BUILD b/test/core/util/BUILD
index 5844a17..bc6fe9d 100644
--- a/test/core/util/BUILD
+++ b/test/core/util/BUILD
@@ -21,8 +21,8 @@
 grpc_cc_library(
     name = "gpr_test_util",
     srcs = [
-        "memory_counters.c",
-        "test_config.c",
+        "memory_counters.cc",
+        "test_config.cc",
     ],
     hdrs = [
         "memory_counters.h",
@@ -48,16 +48,16 @@
 grpc_cc_library(
     name = "grpc_test_util_base",
     srcs = [
-        "grpc_profiler.c",
-        "mock_endpoint.c",
-        "parse_hexstring.c",
-        "passthru_endpoint.c",
-        "port.c",
-        "port_server_client.c",
-        "reconnect_server.c",
-        "slice_splitter.c",
-        "test_tcp_server.c",
-        "trickle_endpoint.c",
+        "grpc_profiler.cc",
+        "mock_endpoint.cc",
+        "parse_hexstring.cc",
+        "passthru_endpoint.cc",
+        "port.cc",
+        "port_server_client.cc",
+        "reconnect_server.cc",
+        "slice_splitter.cc",
+        "test_tcp_server.cc",
+        "trickle_endpoint.cc",
     ],
     hdrs = [
         "grpc_profiler.h",
@@ -71,7 +71,7 @@
         "test_tcp_server.h",
         "trickle_endpoint.h",
     ],
-    language = "C",
+    language = "C++",
     deps = [
         ":gpr_test_util",
         "//:grpc_common",
@@ -83,7 +83,7 @@
     name = "grpc_test_util",
     srcs = [],
     hdrs = [],
-    language = "C",
+    language = "C++",
     deps = [
         ":grpc_test_util_base",
         "//:grpc",
@@ -94,7 +94,7 @@
     name = "grpc_test_util_unsecure",
     srcs = [],
     hdrs = [],
-    language = "C",
+    language = "C++",
     deps = [
         ":grpc_test_util_base",
         "//:grpc_unsecure",
diff --git a/test/core/util/debugger_macros.cc b/test/core/util/debugger_macros.cc
index 5985fcf..d344c3f 100644
--- a/test/core/util/debugger_macros.cc
+++ b/test/core/util/debugger_macros.cc
@@ -29,7 +29,7 @@
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/surface/call.h"
 
-extern "C" void grpc_summon_debugger_macros() {}
+void grpc_summon_debugger_macros() {}
 
 grpc_stream* grpc_transport_stream_from_call(grpc_call* call) {
   grpc_call_stack* cs = grpc_call_get_call_stack(call);
diff --git a/test/core/util/debugger_macros.h b/test/core/util/debugger_macros.h
index 24718d9..c6b3720 100644
--- a/test/core/util/debugger_macros.h
+++ b/test/core/util/debugger_macros.h
@@ -19,14 +19,6 @@
 #ifndef GRPC_TEST_CORE_UTIL_DEBUGGER_MACROS_H
 #define GRPC_TEST_CORE_UTIL_DEBUGGER_MACROS_H
 
-#ifdef __cplusplus
-extern "C" {
-#endif /*  __cplusplus */
-
 void grpc_summon_debugger_macros();
 
-#ifdef __cplusplus
-}
-#endif /*  __cplusplus */
-
 #endif /* GRPC_TEST_CORE_UTIL_DEBUGGER_MACROS_H */
diff --git a/test/core/util/grpc_profiler.c b/test/core/util/grpc_profiler.cc
similarity index 100%
rename from test/core/util/grpc_profiler.c
rename to test/core/util/grpc_profiler.cc
diff --git a/test/core/util/grpc_profiler.h b/test/core/util/grpc_profiler.h
index 0c35822..f9ddd22 100644
--- a/test/core/util/grpc_profiler.h
+++ b/test/core/util/grpc_profiler.h
@@ -19,15 +19,7 @@
 #ifndef GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H
 #define GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H
 
-#ifdef __cplusplus
-extern "C" {
-#endif /*  __cplusplus */
-
 void grpc_profiler_start(const char* filename);
 void grpc_profiler_stop();
 
-#ifdef __cplusplus
-}
-#endif /*  __cplusplus */
-
 #endif /* GRPC_TEST_CORE_UTIL_GRPC_PROFILER_H */
diff --git a/test/core/util/memory_counters.c b/test/core/util/memory_counters.cc
similarity index 100%
rename from test/core/util/memory_counters.c
rename to test/core/util/memory_counters.cc
diff --git a/test/core/util/mock_endpoint.c b/test/core/util/mock_endpoint.cc
similarity index 100%
rename from test/core/util/mock_endpoint.c
rename to test/core/util/mock_endpoint.cc
diff --git a/test/core/util/one_corpus_entry_fuzzer.c b/test/core/util/one_corpus_entry_fuzzer.cc
similarity index 93%
rename from test/core/util/one_corpus_entry_fuzzer.c
rename to test/core/util/one_corpus_entry_fuzzer.cc
index cfd5a10..c0b67da 100644
--- a/test/core/util/one_corpus_entry_fuzzer.c
+++ b/test/core/util/one_corpus_entry_fuzzer.cc
@@ -21,7 +21,7 @@
 #include <grpc/support/log.h>
 #include "src/core/lib/iomgr/load_file.h"
 
-extern int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size);
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size);
 
 extern bool squelch;
 extern bool leak_check;
diff --git a/test/core/util/parse_hexstring.c b/test/core/util/parse_hexstring.cc
similarity index 100%
rename from test/core/util/parse_hexstring.c
rename to test/core/util/parse_hexstring.cc
diff --git a/test/core/util/passthru_endpoint.c b/test/core/util/passthru_endpoint.cc
similarity index 100%
rename from test/core/util/passthru_endpoint.c
rename to test/core/util/passthru_endpoint.cc
diff --git a/test/core/util/port.c b/test/core/util/port.cc
similarity index 100%
rename from test/core/util/port.c
rename to test/core/util/port.cc
diff --git a/test/core/util/port_server_client.c b/test/core/util/port_server_client.cc
similarity index 96%
rename from test/core/util/port_server_client.c
rename to test/core/util/port_server_client.cc
index 988a538..927bc91 100644
--- a/test/core/util/port_server_client.c
+++ b/test/core/util/port_server_client.cc
@@ -80,7 +80,7 @@
   shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops,
                                          grpc_schedule_on_exec_ctx);
 
-  req.host = GRPC_PORT_SERVER_ADDRESS;
+  req.host = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS);
   gpr_asprintf(&path, "/drop/%d", port);
   req.http.path = path;
 
@@ -167,7 +167,7 @@
             GPR_TIMESPAN)));
     pr->retries++;
     req.host = pr->server;
-    req.http.path = "/get";
+    req.http.path = const_cast<char*>("/get");
     grpc_http_response_destroy(&pr->response);
     memset(&pr->response, 0, sizeof(pr->response));
     grpc_resource_quota* resource_quota =
@@ -213,11 +213,11 @@
   shutdown_closure = GRPC_CLOSURE_CREATE(destroy_pops_and_shutdown, &pr.pops,
                                          grpc_schedule_on_exec_ctx);
   pr.port = -1;
-  pr.server = GRPC_PORT_SERVER_ADDRESS;
+  pr.server = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS);
   pr.ctx = &context;
 
-  req.host = GRPC_PORT_SERVER_ADDRESS;
-  req.http.path = "/get";
+  req.host = const_cast<char*>(GRPC_PORT_SERVER_ADDRESS);
+  req.http.path = const_cast<char*>("/get");
 
   grpc_httpcli_context_init(&context);
   grpc_resource_quota* resource_quota =
diff --git a/test/core/util/reconnect_server.c b/test/core/util/reconnect_server.cc
similarity index 97%
rename from test/core/util/reconnect_server.c
rename to test/core/util/reconnect_server.cc
index 742bcf5..c7c0595 100644
--- a/test/core/util/reconnect_server.c
+++ b/test/core/util/reconnect_server.cc
@@ -82,7 +82,7 @@
       gpr_free(peer);
     }
   }
-  new_tail = gpr_malloc(sizeof(timestamp_list));
+  new_tail = static_cast<timestamp_list*>(gpr_malloc(sizeof(timestamp_list)));
   new_tail->timestamp = now;
   new_tail->next = NULL;
   if (server->tail == NULL) {
diff --git a/test/core/util/reconnect_server.h b/test/core/util/reconnect_server.h
index 5aec586..d15abe5 100644
--- a/test/core/util/reconnect_server.h
+++ b/test/core/util/reconnect_server.h
@@ -23,10 +23,6 @@
 #include <grpc/support/time.h>
 #include "test/core/util/test_tcp_server.h"
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 typedef struct timestamp_list {
   gpr_timespec timestamp;
   struct timestamp_list* next;
@@ -46,8 +42,4 @@
 void reconnect_server_destroy(reconnect_server* server);
 void reconnect_server_clear_timestamps(reconnect_server* server);
 
-#ifdef __cplusplus
-}
-#endif
-
 #endif /* GRPC_TEST_CORE_UTIL_RECONNECT_SERVER_H */
diff --git a/test/core/util/slice_splitter.c b/test/core/util/slice_splitter.cc
similarity index 100%
rename from test/core/util/slice_splitter.c
rename to test/core/util/slice_splitter.cc
diff --git a/test/core/util/test_config.c b/test/core/util/test_config.cc
similarity index 99%
rename from test/core/util/test_config.c
rename to test/core/util/test_config.cc
index ea3a4b5..3106fb0 100644
--- a/test/core/util/test_config.c
+++ b/test/core/util/test_config.cc
@@ -176,7 +176,7 @@
 
 static void abort_handler(int sig) {
   fprintf(stderr, "Abort handler called.\n");
-  print_current_stack(NULL);
+  print_current_stack();
   if (IsDebuggerPresent()) {
     __debugbreak();
   } else {
diff --git a/test/core/util/test_config.h b/test/core/util/test_config.h
index edc0fba..4383fbf 100644
--- a/test/core/util/test_config.h
+++ b/test/core/util/test_config.h
@@ -23,7 +23,7 @@
 
 #ifdef __cplusplus
 extern "C" {
-#endif /*  __cplusplus */
+#endif
 
 extern int64_t g_fixture_slowdown_factor;
 extern int64_t g_poller_slowdown_factor;
@@ -45,6 +45,6 @@
 
 #ifdef __cplusplus
 }
-#endif /*  __cplusplus */
+#endif
 
 #endif /* GRPC_TEST_CORE_UTIL_TEST_CONFIG_H */
diff --git a/test/core/util/test_tcp_server.c b/test/core/util/test_tcp_server.cc
similarity index 94%
rename from test/core/util/test_tcp_server.c
rename to test/core/util/test_tcp_server.cc
index d97f2c7..925209d 100644
--- a/test/core/util/test_tcp_server.c
+++ b/test/core/util/test_tcp_server.cc
@@ -35,7 +35,7 @@
 
 static void on_server_destroyed(grpc_exec_ctx* exec_ctx, void* data,
                                 grpc_error* error) {
-  test_tcp_server* server = data;
+  test_tcp_server* server = static_cast<test_tcp_server*>(data);
   server->shutdown = 1;
 }
 
@@ -46,7 +46,7 @@
   GRPC_CLOSURE_INIT(&server->shutdown_complete, on_server_destroyed, server,
                     grpc_schedule_on_exec_ctx);
   server->shutdown = 0;
-  server->pollset = gpr_zalloc(grpc_pollset_size());
+  server->pollset = static_cast<grpc_pollset*>(gpr_zalloc(grpc_pollset_size()));
   grpc_pollset_init(server->pollset, &server->mu);
   server->on_connect = on_connect;
   server->cb_data = user_data;
@@ -93,7 +93,7 @@
 static void do_nothing(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {}
 static void finish_pollset(grpc_exec_ctx* exec_ctx, void* arg,
                            grpc_error* error) {
-  grpc_pollset_destroy(exec_ctx, arg);
+  grpc_pollset_destroy(exec_ctx, static_cast<grpc_pollset*>(arg));
 }
 
 void test_tcp_server_destroy(test_tcp_server* server) {
diff --git a/test/core/util/trickle_endpoint.c b/test/core/util/trickle_endpoint.cc
similarity index 100%
rename from test/core/util/trickle_endpoint.c
rename to test/core/util/trickle_endpoint.cc
diff --git a/test/core/util/trickle_endpoint.h b/test/core/util/trickle_endpoint.h
index de87a1f..11c113b 100644
--- a/test/core/util/trickle_endpoint.h
+++ b/test/core/util/trickle_endpoint.h
@@ -21,10 +21,6 @@
 
 #include "src/core/lib/iomgr/endpoint.h"
 
-#ifdef __cplusplus
-extern "C" {
-#endif  // __cplusplus
-
 grpc_endpoint* grpc_trickle_endpoint_create(grpc_endpoint* wrap,
                                             double bytes_per_second);
 
@@ -34,8 +30,4 @@
 
 size_t grpc_trickle_get_backlog(grpc_endpoint* endpoint);
 
-#ifdef __cplusplus
-}
-#endif  // __cplusplus
-
 #endif
diff --git a/test/cpp/common/auth_property_iterator_test.cc b/test/cpp/common/auth_property_iterator_test.cc
index e25d2a7..4a097e8 100644
--- a/test/cpp/common/auth_property_iterator_test.cc
+++ b/test/cpp/common/auth_property_iterator_test.cc
@@ -22,9 +22,7 @@
 #include "src/cpp/common/secure_auth_context.h"
 #include "test/cpp/util/string_ref_helper.h"
 
-extern "C" {
 #include "src/core/lib/security/context/security_context.h"
-}
 
 using ::grpc::testing::ToString;
 
diff --git a/test/cpp/common/channel_arguments_test.cc b/test/cpp/common/channel_arguments_test.cc
index 748ce27..d6ed2e5 100644
--- a/test/cpp/common/channel_arguments_test.cc
+++ b/test/cpp/common/channel_arguments_test.cc
@@ -23,10 +23,8 @@
 #include <grpc/support/useful.h>
 #include <gtest/gtest.h>
 
-extern "C" {
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/iomgr/socket_mutator.h"
-}
 
 namespace grpc {
 namespace testing {
diff --git a/test/cpp/common/secure_auth_context_test.cc b/test/cpp/common/secure_auth_context_test.cc
index 91c7a3b..0cc32c1 100644
--- a/test/cpp/common/secure_auth_context_test.cc
+++ b/test/cpp/common/secure_auth_context_test.cc
@@ -22,9 +22,7 @@
 #include <gtest/gtest.h>
 #include "test/cpp/util/string_ref_helper.h"
 
-extern "C" {
 #include "src/core/lib/security/context/security_context.h"
-}
 
 using grpc::testing::ToString;
 
diff --git a/test/cpp/end2end/client_lb_end2end_test.cc b/test/cpp/end2end/client_lb_end2end_test.cc
index fc87bad..95630a7 100644
--- a/test/cpp/end2end/client_lb_end2end_test.cc
+++ b/test/cpp/end2end/client_lb_end2end_test.cc
@@ -33,11 +33,9 @@
 #include <grpc/support/thd.h>
 #include <grpc/support/time.h>
 
-extern "C" {
 #include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
 #include "src/core/ext/filters/client_channel/subchannel_index.h"
 #include "src/core/lib/support/env.h"
-}
 
 #include "src/proto/grpc/testing/echo.grpc.pb.h"
 #include "test/core/util/port.h"
diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc
index aaf7b14..c15ab88 100644
--- a/test/cpp/end2end/grpclb_end2end_test.cc
+++ b/test/cpp/end2end/grpclb_end2end_test.cc
@@ -33,11 +33,9 @@
 #include <grpc/support/thd.h>
 #include <grpc/support/time.h>
 
-extern "C" {
 #include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
 #include "src/core/lib/iomgr/sockaddr.h"
 #include "src/core/lib/support/env.h"
-}
 
 #include "test/core/util/port.h"
 #include "test/core/util/test_config.h"
diff --git a/test/cpp/grpclb/grpclb_test.cc b/test/cpp/grpclb/grpclb_test.cc
index cc5a4c7..a764734 100644
--- a/test/cpp/grpclb/grpclb_test.cc
+++ b/test/cpp/grpclb/grpclb_test.cc
@@ -35,7 +35,7 @@
 #include <grpc/support/time.h>
 
 #include <grpc++/impl/codegen/config.h>
-extern "C" {
+
 #include "src/core/ext/filters/client_channel/client_channel.h"
 #include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
 #include "src/core/lib/channel/channel_args.h"
@@ -50,7 +50,6 @@
 #include "test/core/end2end/cq_verifier.h"
 #include "test/core/util/port.h"
 #include "test/core/util/test_config.h"
-}
 
 #include "src/proto/grpc/lb/v1/load_balancer.pb.h"
 
diff --git a/test/cpp/interop/interop_test.cc b/test/cpp/interop/interop_test.cc
index c18fe1e..1bf0d8d 100644
--- a/test/cpp/interop/interop_test.cc
+++ b/test/cpp/interop/interop_test.cc
@@ -37,10 +37,8 @@
 #include "test/core/util/port.h"
 #include "test/cpp/util/test_config.h"
 
-extern "C" {
 #include "src/core/lib/iomgr/socket_utils_posix.h"
 #include "src/core/lib/support/string.h"
-}
 
 DEFINE_string(extra_server_flags, "", "Extra flags to pass to server.");
 
diff --git a/test/cpp/microbenchmarks/bm_arena.cc b/test/cpp/microbenchmarks/bm_arena.cc
index 165b746..5b7c611 100644
--- a/test/cpp/microbenchmarks/bm_arena.cc
+++ b/test/cpp/microbenchmarks/bm_arena.cc
@@ -18,9 +18,7 @@
 
 /* Benchmark arenas */
 
-extern "C" {
 #include "src/core/lib/support/arena.h"
-}
 #include "test/cpp/microbenchmarks/helpers.h"
 #include "third_party/benchmark/include/benchmark/benchmark.h"
 
diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc
index 1c625c7..ec5c127 100644
--- a/test/cpp/microbenchmarks/bm_call_create.cc
+++ b/test/cpp/microbenchmarks/bm_call_create.cc
@@ -29,7 +29,6 @@
 #include <grpc/support/alloc.h>
 #include <grpc/support/string_util.h>
 
-extern "C" {
 #include "src/core/ext/filters/client_channel/client_channel.h"
 #include "src/core/ext/filters/deadline/deadline_filter.h"
 #include "src/core/ext/filters/http/client/http_client_filter.h"
@@ -43,7 +42,6 @@
 #include "src/core/lib/profiling/timers.h"
 #include "src/core/lib/surface/channel.h"
 #include "src/core/lib/transport/transport_impl.h"
-}
 
 #include "src/cpp/client/create_channel_internal.h"
 #include "src/proto/grpc/testing/echo.grpc.pb.h"
diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
index f8c3191..45f5382 100644
--- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
+++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
@@ -22,14 +22,14 @@
 #include <grpc/support/log.h>
 #include <string.h>
 #include <sstream>
-extern "C" {
+
 #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
 #include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
 #include "src/core/lib/slice/slice_internal.h"
 #include "src/core/lib/slice/slice_string_helpers.h"
 #include "src/core/lib/transport/static_metadata.h"
 #include "src/core/lib/transport/timeout_encoding.h"
-}
+
 #include "test/cpp/microbenchmarks/helpers.h"
 #include "third_party/benchmark/include/benchmark/benchmark.h"
 
diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc
index d600ce7..458a2ce 100644
--- a/test/cpp/microbenchmarks/bm_closure.cc
+++ b/test/cpp/microbenchmarks/bm_closure.cc
@@ -22,12 +22,10 @@
 #include <grpc/grpc.h>
 #include <sstream>
 
-extern "C" {
 #include "src/core/lib/iomgr/closure.h"
 #include "src/core/lib/iomgr/combiner.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 #include "src/core/lib/support/spinlock.h"
-}
 
 #include "test/cpp/microbenchmarks/helpers.h"
 
diff --git a/test/cpp/microbenchmarks/bm_cq.cc b/test/cpp/microbenchmarks/bm_cq.cc
index 020ec04..dac702b 100644
--- a/test/cpp/microbenchmarks/bm_cq.cc
+++ b/test/cpp/microbenchmarks/bm_cq.cc
@@ -26,9 +26,7 @@
 #include <grpc/support/log.h>
 #include "test/cpp/microbenchmarks/helpers.h"
 
-extern "C" {
 #include "src/core/lib/surface/completion_queue.h"
-}
 
 namespace grpc {
 namespace testing {
diff --git a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc
index 57a69ac..8d4349a 100644
--- a/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc
+++ b/test/cpp/microbenchmarks/bm_cq_multiple_threads.cc
@@ -25,11 +25,9 @@
 #include <grpc/support/log.h>
 #include "test/cpp/microbenchmarks/helpers.h"
 
-extern "C" {
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/port.h"
 #include "src/core/lib/surface/completion_queue.h"
-}
 
 struct grpc_pollset {
   gpr_mu mu;
diff --git a/test/cpp/microbenchmarks/bm_error.cc b/test/cpp/microbenchmarks/bm_error.cc
index 56b80df..aa78226 100644
--- a/test/cpp/microbenchmarks/bm_error.cc
+++ b/test/cpp/microbenchmarks/bm_error.cc
@@ -21,10 +21,8 @@
 #include <benchmark/benchmark.h>
 #include <memory>
 
-extern "C" {
 #include "src/core/lib/iomgr/error.h"
 #include "src/core/lib/transport/error_utils.h"
-}
 
 #include "test/cpp/microbenchmarks/helpers.h"
 
diff --git a/test/cpp/microbenchmarks/bm_metadata.cc b/test/cpp/microbenchmarks/bm_metadata.cc
index 360bbab..1ed05f7 100644
--- a/test/cpp/microbenchmarks/bm_metadata.cc
+++ b/test/cpp/microbenchmarks/bm_metadata.cc
@@ -21,10 +21,8 @@
 #include <benchmark/benchmark.h>
 #include <grpc/grpc.h>
 
-extern "C" {
 #include "src/core/lib/transport/metadata.h"
 #include "src/core/lib/transport/static_metadata.h"
-}
 
 #include "test/cpp/microbenchmarks/helpers.h"
 
diff --git a/test/cpp/microbenchmarks/bm_pollset.cc b/test/cpp/microbenchmarks/bm_pollset.cc
index eab1e89..92d76f3 100644
--- a/test/cpp/microbenchmarks/bm_pollset.cc
+++ b/test/cpp/microbenchmarks/bm_pollset.cc
@@ -23,12 +23,10 @@
 #include <grpc/support/log.h>
 #include <grpc/support/useful.h>
 
-extern "C" {
 #include "src/core/lib/iomgr/ev_posix.h"
 #include "src/core/lib/iomgr/pollset.h"
 #include "src/core/lib/iomgr/port.h"
 #include "src/core/lib/iomgr/wakeup_fd_posix.h"
-}
 
 #include "test/cpp/microbenchmarks/helpers.h"
 #include "third_party/benchmark/include/benchmark/benchmark.h"
diff --git a/test/cpp/microbenchmarks/fullstack_fixtures.h b/test/cpp/microbenchmarks/fullstack_fixtures.h
index 9d345a9..71bbb39 100644
--- a/test/cpp/microbenchmarks/fullstack_fixtures.h
+++ b/test/cpp/microbenchmarks/fullstack_fixtures.h
@@ -28,7 +28,6 @@
 #include <grpc/support/atm.h>
 #include <grpc/support/log.h>
 
-extern "C" {
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/iomgr/endpoint.h"
@@ -40,7 +39,6 @@
 #include "src/core/lib/surface/server.h"
 #include "test/core/util/passthru_endpoint.h"
 #include "test/core/util/port.h"
-}
 
 #include "src/cpp/client/create_channel_internal.h"
 #include "test/cpp/microbenchmarks/helpers.h"
diff --git a/test/cpp/microbenchmarks/helpers.h b/test/cpp/microbenchmarks/helpers.h
index b6cea7c..07be589 100644
--- a/test/cpp/microbenchmarks/helpers.h
+++ b/test/cpp/microbenchmarks/helpers.h
@@ -22,11 +22,9 @@
 #include <sstream>
 #include <vector>
 
-extern "C" {
 #include <grpc/support/port_platform.h>
 #include "src/core/lib/debug/stats.h"
 #include "test/core/util/memory_counters.h"
-}
 
 #include <benchmark/benchmark.h>
 #include <grpc++/impl/grpc_library.h>
diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc
index 205a68b..94adbcb 100644
--- a/test/cpp/naming/resolver_component_test.cc
+++ b/test/cpp/naming/resolver_component_test.cc
@@ -32,7 +32,6 @@
 #include "test/cpp/util/subprocess.h"
 #include "test/cpp/util/test_config.h"
 
-extern "C" {
 #include "src/core/ext/filters/client_channel/client_channel.h"
 #include "src/core/ext/filters/client_channel/resolver.h"
 #include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
@@ -47,7 +46,6 @@
 #include "src/core/lib/support/string.h"
 #include "test/core/util/port.h"
 #include "test/core/util/test_config.h"
-}
 
 using grpc::SubProcess;
 using std::vector;
diff --git a/test/cpp/naming/resolver_component_tests_runner_invoker.cc b/test/cpp/naming/resolver_component_tests_runner_invoker.cc
index 1577253..7ea005c 100644
--- a/test/cpp/naming/resolver_component_tests_runner_invoker.cc
+++ b/test/cpp/naming/resolver_component_tests_runner_invoker.cc
@@ -32,10 +32,8 @@
 #include "test/cpp/util/subprocess.h"
 #include "test/cpp/util/test_config.h"
 
-extern "C" {
 #include "src/core/lib/support/env.h"
 #include "test/core/util/port.h"
-}
 
 DEFINE_bool(
     running_under_bazel, false,
diff --git a/test/cpp/performance/writes_per_rpc_test.cc b/test/cpp/performance/writes_per_rpc_test.cc
index f4f794c..6c23245 100644
--- a/test/cpp/performance/writes_per_rpc_test.cc
+++ b/test/cpp/performance/writes_per_rpc_test.cc
@@ -26,7 +26,6 @@
 #include <grpc/support/log.h>
 #include <gtest/gtest.h>
 
-extern "C" {
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/iomgr/endpoint.h"
@@ -38,7 +37,7 @@
 #include "src/core/lib/surface/server.h"
 #include "test/core/util/passthru_endpoint.h"
 #include "test/core/util/port.h"
-}
+
 #include "src/cpp/client/create_channel_internal.h"
 #include "src/proto/grpc/testing/echo.grpc.pb.h"
 #include "test/core/util/test_config.h"
diff --git a/tools/buildgen/plugins/make_fuzzer_tests.py b/tools/buildgen/plugins/make_fuzzer_tests.py
index 6d318fe..56dad2d 100644
--- a/tools/buildgen/plugins/make_fuzzer_tests.py
+++ b/tools/buildgen/plugins/make_fuzzer_tests.py
@@ -26,8 +26,8 @@
       new_target['build'] = 'test'
       new_target['name'] += '_one_entry'
       new_target['run'] = False
-      new_target['src'].append('test/core/util/one_corpus_entry_fuzzer.c')
-      new_target['own_src'].append('test/core/util/one_corpus_entry_fuzzer.c')
+      new_target['src'].append('test/core/util/one_corpus_entry_fuzzer.cc')
+      new_target['own_src'].append('test/core/util/one_corpus_entry_fuzzer.cc')
       targets.append(new_target)
       for corpus in new_target['corpus_dirs']:
         for fn in sorted(glob.glob('%s/*' % corpus)):
diff --git a/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh b/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh
index d36e9e5..f9011b6 100755
--- a/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh
+++ b/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh
@@ -29,7 +29,7 @@
 do
   for glob in $GLOB
   do
-    files="$files `find ${CLANG_FORMAT_ROOT}/$dir -name $glob -and -not -name '*.generated.*' -and -not -name '*.pb.h' -and -not -name '*.pb.c' -and -not -name '*.pb.cc' -and -not -name end2end_tests.c -and -not -name end2end_nosec_tests.c -and -not -name public_headers_must_be_c89.c`"
+    files="$files `find ${CLANG_FORMAT_ROOT}/$dir -name $glob -and -not -name '*.generated.*' -and -not -name '*.pb.h' -and -not -name '*.pb.c' -and -not -name '*.pb.cc' -and -not -name end2end_tests.cc -and -not -name end2end_nosec_tests.cc -and -not -name public_headers_must_be_c89.c`"
   done
 done
 
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index b74e49f..6cd9a04 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -13,7 +13,7 @@
     "language": "c", 
     "name": "alarm_test", 
     "src": [
-      "test/core/surface/alarm_test.c"
+      "test/core/surface/alarm_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -30,7 +30,7 @@
     "language": "c", 
     "name": "algorithm_test", 
     "src": [
-      "test/core/compression/algorithm_test.c"
+      "test/core/compression/algorithm_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -45,7 +45,7 @@
     "language": "c", 
     "name": "alloc_test", 
     "src": [
-      "test/core/support/alloc_test.c"
+      "test/core/support/alloc_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -62,7 +62,7 @@
     "language": "c", 
     "name": "alpn_test", 
     "src": [
-      "test/core/transport/chttp2/alpn_test.c"
+      "test/core/transport/chttp2/alpn_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -79,7 +79,7 @@
     "language": "c", 
     "name": "api_fuzzer", 
     "src": [
-      "test/core/end2end/fuzzers/api_fuzzer.c"
+      "test/core/end2end/fuzzers/api_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -94,7 +94,7 @@
     "language": "c", 
     "name": "arena_test", 
     "src": [
-      "test/core/support/arena_test.c"
+      "test/core/support/arena_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -111,7 +111,7 @@
     "language": "c", 
     "name": "backoff_test", 
     "src": [
-      "test/core/backoff/backoff_test.c"
+      "test/core/backoff/backoff_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -129,7 +129,7 @@
     "language": "c", 
     "name": "bad_server_response_test", 
     "src": [
-      "test/core/end2end/bad_server_response_test.c"
+      "test/core/end2end/bad_server_response_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -144,7 +144,7 @@
     "language": "c", 
     "name": "bin_decoder_test", 
     "src": [
-      "test/core/transport/chttp2/bin_decoder_test.c"
+      "test/core/transport/chttp2/bin_decoder_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -159,7 +159,7 @@
     "language": "c", 
     "name": "bin_encoder_test", 
     "src": [
-      "test/core/transport/chttp2/bin_encoder_test.c"
+      "test/core/transport/chttp2/bin_encoder_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -176,7 +176,7 @@
     "language": "c", 
     "name": "byte_stream_test", 
     "src": [
-      "test/core/transport/byte_stream_test.c"
+      "test/core/transport/byte_stream_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -193,7 +193,7 @@
     "language": "c", 
     "name": "channel_create_test", 
     "src": [
-      "test/core/surface/channel_create_test.c"
+      "test/core/surface/channel_create_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -225,7 +225,7 @@
     "language": "c", 
     "name": "chttp2_hpack_encoder_test", 
     "src": [
-      "test/core/transport/chttp2/hpack_encoder_test.c"
+      "test/core/transport/chttp2/hpack_encoder_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -242,7 +242,7 @@
     "language": "c", 
     "name": "chttp2_stream_map_test", 
     "src": [
-      "test/core/transport/chttp2/stream_map_test.c"
+      "test/core/transport/chttp2/stream_map_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -259,7 +259,7 @@
     "language": "c", 
     "name": "chttp2_varint_test", 
     "src": [
-      "test/core/transport/chttp2/varint_test.c"
+      "test/core/transport/chttp2/varint_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -276,7 +276,7 @@
     "language": "c", 
     "name": "client_fuzzer", 
     "src": [
-      "test/core/end2end/fuzzers/client_fuzzer.c"
+      "test/core/end2end/fuzzers/client_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -293,7 +293,7 @@
     "language": "c", 
     "name": "combiner_test", 
     "src": [
-      "test/core/iomgr/combiner_test.c"
+      "test/core/iomgr/combiner_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -310,7 +310,7 @@
     "language": "c", 
     "name": "compression_test", 
     "src": [
-      "test/core/compression/compression_test.c"
+      "test/core/compression/compression_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -327,7 +327,7 @@
     "language": "c", 
     "name": "concurrent_connectivity_test", 
     "src": [
-      "test/core/surface/concurrent_connectivity_test.c"
+      "test/core/surface/concurrent_connectivity_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -344,7 +344,7 @@
     "language": "c", 
     "name": "connection_refused_test", 
     "src": [
-      "test/core/end2end/connection_refused_test.c"
+      "test/core/end2end/connection_refused_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -361,7 +361,7 @@
     "language": "c", 
     "name": "dns_resolver_connectivity_test", 
     "src": [
-      "test/core/client_channel/resolvers/dns_resolver_connectivity_test.c"
+      "test/core/client_channel/resolvers/dns_resolver_connectivity_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -378,7 +378,7 @@
     "language": "c", 
     "name": "dns_resolver_test", 
     "src": [
-      "test/core/client_channel/resolvers/dns_resolver_test.c"
+      "test/core/client_channel/resolvers/dns_resolver_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -395,7 +395,7 @@
     "language": "c", 
     "name": "dualstack_socket_test", 
     "src": [
-      "test/core/end2end/dualstack_socket_test.c"
+      "test/core/end2end/dualstack_socket_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -412,7 +412,7 @@
     "language": "c", 
     "name": "endpoint_pair_test", 
     "src": [
-      "test/core/iomgr/endpoint_pair_test.c"
+      "test/core/iomgr/endpoint_pair_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -429,7 +429,7 @@
     "language": "c", 
     "name": "error_test", 
     "src": [
-      "test/core/iomgr/error_test.c"
+      "test/core/iomgr/error_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -446,7 +446,7 @@
     "language": "c", 
     "name": "ev_epollsig_linux_test", 
     "src": [
-      "test/core/iomgr/ev_epollsig_linux_test.c"
+      "test/core/iomgr/ev_epollsig_linux_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -463,7 +463,7 @@
     "language": "c", 
     "name": "fake_resolver_test", 
     "src": [
-      "test/core/client_channel/resolvers/fake_resolver_test.c"
+      "test/core/client_channel/resolvers/fake_resolver_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -480,7 +480,7 @@
     "language": "c", 
     "name": "fake_transport_security_test", 
     "src": [
-      "test/core/tsi/fake_transport_security_test.c"
+      "test/core/tsi/fake_transport_security_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -497,7 +497,7 @@
     "language": "c", 
     "name": "fd_conservation_posix_test", 
     "src": [
-      "test/core/iomgr/fd_conservation_posix_test.c"
+      "test/core/iomgr/fd_conservation_posix_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -514,7 +514,7 @@
     "language": "c", 
     "name": "fd_posix_test", 
     "src": [
-      "test/core/iomgr/fd_posix_test.c"
+      "test/core/iomgr/fd_posix_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -531,7 +531,7 @@
     "language": "c", 
     "name": "fling_client", 
     "src": [
-      "test/core/fling/client.c"
+      "test/core/fling/client.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -548,7 +548,7 @@
     "language": "c", 
     "name": "fling_server", 
     "src": [
-      "test/core/fling/server.c"
+      "test/core/fling/server.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -565,7 +565,7 @@
     "language": "c", 
     "name": "fling_stream_test", 
     "src": [
-      "test/core/fling/fling_stream_test.c"
+      "test/core/fling/fling_stream_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -582,7 +582,7 @@
     "language": "c", 
     "name": "fling_test", 
     "src": [
-      "test/core/fling/fling_test.c"
+      "test/core/fling/fling_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -638,7 +638,7 @@
     "language": "c", 
     "name": "goaway_server_test", 
     "src": [
-      "test/core/end2end/goaway_server_test.c"
+      "test/core/end2end/goaway_server_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -653,7 +653,7 @@
     "language": "c", 
     "name": "gpr_avl_test", 
     "src": [
-      "test/core/support/avl_test.c"
+      "test/core/support/avl_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -668,7 +668,7 @@
     "language": "c", 
     "name": "gpr_cmdline_test", 
     "src": [
-      "test/core/support/cmdline_test.c"
+      "test/core/support/cmdline_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -683,7 +683,7 @@
     "language": "c", 
     "name": "gpr_cpu_test", 
     "src": [
-      "test/core/support/cpu_test.c"
+      "test/core/support/cpu_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -698,7 +698,7 @@
     "language": "c", 
     "name": "gpr_env_test", 
     "src": [
-      "test/core/support/env_test.c"
+      "test/core/support/env_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -713,7 +713,7 @@
     "language": "c", 
     "name": "gpr_histogram_test", 
     "src": [
-      "test/core/support/histogram_test.c"
+      "test/core/support/histogram_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -728,7 +728,7 @@
     "language": "c", 
     "name": "gpr_host_port_test", 
     "src": [
-      "test/core/support/host_port_test.c"
+      "test/core/support/host_port_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -743,7 +743,7 @@
     "language": "c", 
     "name": "gpr_log_test", 
     "src": [
-      "test/core/support/log_test.c"
+      "test/core/support/log_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -758,7 +758,7 @@
     "language": "c", 
     "name": "gpr_mpscq_test", 
     "src": [
-      "test/core/support/mpscq_test.c"
+      "test/core/support/mpscq_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -773,7 +773,7 @@
     "language": "c", 
     "name": "gpr_spinlock_test", 
     "src": [
-      "test/core/support/spinlock_test.c"
+      "test/core/support/spinlock_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -788,7 +788,7 @@
     "language": "c", 
     "name": "gpr_stack_lockfree_test", 
     "src": [
-      "test/core/support/stack_lockfree_test.c"
+      "test/core/support/stack_lockfree_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -803,7 +803,7 @@
     "language": "c", 
     "name": "gpr_string_test", 
     "src": [
-      "test/core/support/string_test.c"
+      "test/core/support/string_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -818,7 +818,7 @@
     "language": "c", 
     "name": "gpr_sync_test", 
     "src": [
-      "test/core/support/sync_test.c"
+      "test/core/support/sync_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -833,7 +833,7 @@
     "language": "c", 
     "name": "gpr_thd_test", 
     "src": [
-      "test/core/support/thd_test.c"
+      "test/core/support/thd_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -848,7 +848,7 @@
     "language": "c", 
     "name": "gpr_time_test", 
     "src": [
-      "test/core/support/time_test.c"
+      "test/core/support/time_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -863,7 +863,7 @@
     "language": "c", 
     "name": "gpr_tls_test", 
     "src": [
-      "test/core/support/tls_test.c"
+      "test/core/support/tls_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -878,7 +878,7 @@
     "language": "c", 
     "name": "gpr_useful_test", 
     "src": [
-      "test/core/support/useful_test.c"
+      "test/core/support/useful_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -895,7 +895,7 @@
     "language": "c", 
     "name": "grpc_auth_context_test", 
     "src": [
-      "test/core/security/auth_context_test.c"
+      "test/core/security/auth_context_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -912,7 +912,7 @@
     "language": "c", 
     "name": "grpc_b64_test", 
     "src": [
-      "test/core/slice/b64_test.c"
+      "test/core/slice/b64_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -929,7 +929,7 @@
     "language": "c", 
     "name": "grpc_byte_buffer_reader_test", 
     "src": [
-      "test/core/surface/byte_buffer_reader_test.c"
+      "test/core/surface/byte_buffer_reader_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -946,7 +946,7 @@
     "language": "c", 
     "name": "grpc_channel_args_test", 
     "src": [
-      "test/core/channel/channel_args_test.c"
+      "test/core/channel/channel_args_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -963,7 +963,7 @@
     "language": "c", 
     "name": "grpc_channel_stack_builder_test", 
     "src": [
-      "test/core/channel/channel_stack_builder_test.c"
+      "test/core/channel/channel_stack_builder_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -980,7 +980,7 @@
     "language": "c", 
     "name": "grpc_channel_stack_test", 
     "src": [
-      "test/core/channel/channel_stack_test.c"
+      "test/core/channel/channel_stack_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -997,7 +997,7 @@
     "language": "c", 
     "name": "grpc_completion_queue_test", 
     "src": [
-      "test/core/surface/completion_queue_test.c"
+      "test/core/surface/completion_queue_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1014,7 +1014,7 @@
     "language": "c", 
     "name": "grpc_completion_queue_threading_test", 
     "src": [
-      "test/core/surface/completion_queue_threading_test.c"
+      "test/core/surface/completion_queue_threading_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1029,7 +1029,7 @@
     "language": "c", 
     "name": "grpc_create_jwt", 
     "src": [
-      "test/core/security/create_jwt.c"
+      "test/core/security/create_jwt.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1046,7 +1046,7 @@
     "language": "c", 
     "name": "grpc_credentials_test", 
     "src": [
-      "test/core/security/credentials_test.c"
+      "test/core/security/credentials_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1063,7 +1063,7 @@
     "language": "c", 
     "name": "grpc_fetch_oauth2", 
     "src": [
-      "test/core/security/fetch_oauth2.c"
+      "test/core/security/fetch_oauth2.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1080,7 +1080,7 @@
     "language": "c", 
     "name": "grpc_invalid_channel_args_test", 
     "src": [
-      "test/core/surface/invalid_channel_args_test.c"
+      "test/core/surface/invalid_channel_args_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1097,7 +1097,7 @@
     "language": "c", 
     "name": "grpc_json_token_test", 
     "src": [
-      "test/core/security/json_token_test.c"
+      "test/core/security/json_token_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1114,7 +1114,7 @@
     "language": "c", 
     "name": "grpc_jwt_verifier_test", 
     "src": [
-      "test/core/security/jwt_verifier_test.c"
+      "test/core/security/jwt_verifier_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1129,7 +1129,7 @@
     "language": "c", 
     "name": "grpc_print_google_default_creds_token", 
     "src": [
-      "test/core/security/print_google_default_creds_token.c"
+      "test/core/security/print_google_default_creds_token.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1146,7 +1146,7 @@
     "language": "c", 
     "name": "grpc_security_connector_test", 
     "src": [
-      "test/core/security/security_connector_test.c"
+      "test/core/security/security_connector_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1163,7 +1163,7 @@
     "language": "c", 
     "name": "grpc_ssl_credentials_test", 
     "src": [
-      "test/core/security/ssl_credentials_test.c"
+      "test/core/security/ssl_credentials_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1178,7 +1178,7 @@
     "language": "c", 
     "name": "grpc_verify_jwt", 
     "src": [
-      "test/core/security/verify_jwt.c"
+      "test/core/security/verify_jwt.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1195,7 +1195,7 @@
     "language": "c", 
     "name": "handshake_client", 
     "src": [
-      "test/core/handshake/client_ssl.c"
+      "test/core/handshake/client_ssl.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1212,7 +1212,7 @@
     "language": "c", 
     "name": "handshake_server", 
     "src": [
-      "test/core/handshake/server_ssl.c"
+      "test/core/handshake/server_ssl.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1229,7 +1229,7 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test", 
     "src": [
-      "test/core/transport/chttp2/hpack_parser_fuzzer_test.c"
+      "test/core/transport/chttp2/hpack_parser_fuzzer_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1246,7 +1246,7 @@
     "language": "c", 
     "name": "hpack_parser_test", 
     "src": [
-      "test/core/transport/chttp2/hpack_parser_test.c"
+      "test/core/transport/chttp2/hpack_parser_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1263,7 +1263,7 @@
     "language": "c", 
     "name": "hpack_table_test", 
     "src": [
-      "test/core/transport/chttp2/hpack_table_test.c"
+      "test/core/transport/chttp2/hpack_table_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1280,7 +1280,7 @@
     "language": "c", 
     "name": "http_parser_test", 
     "src": [
-      "test/core/http/parser_test.c"
+      "test/core/http/parser_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1297,7 +1297,7 @@
     "language": "c", 
     "name": "http_request_fuzzer_test", 
     "src": [
-      "test/core/http/request_fuzzer.c"
+      "test/core/http/request_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1314,7 +1314,7 @@
     "language": "c", 
     "name": "http_response_fuzzer_test", 
     "src": [
-      "test/core/http/response_fuzzer.c"
+      "test/core/http/response_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1331,7 +1331,7 @@
     "language": "c", 
     "name": "httpcli_format_request_test", 
     "src": [
-      "test/core/http/format_request_test.c"
+      "test/core/http/format_request_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1348,7 +1348,7 @@
     "language": "c", 
     "name": "httpcli_test", 
     "src": [
-      "test/core/http/httpcli_test.c"
+      "test/core/http/httpcli_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1365,7 +1365,7 @@
     "language": "c", 
     "name": "httpscli_test", 
     "src": [
-      "test/core/http/httpscli_test.c"
+      "test/core/http/httpscli_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1382,7 +1382,7 @@
     "language": "c", 
     "name": "init_test", 
     "src": [
-      "test/core/surface/init_test.c"
+      "test/core/surface/init_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1399,7 +1399,7 @@
     "language": "c", 
     "name": "invalid_call_argument_test", 
     "src": [
-      "test/core/end2end/invalid_call_argument_test.c"
+      "test/core/end2end/invalid_call_argument_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1416,7 +1416,7 @@
     "language": "c", 
     "name": "json_fuzzer_test", 
     "src": [
-      "test/core/json/fuzzer.c"
+      "test/core/json/fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1431,7 +1431,7 @@
     "language": "c", 
     "name": "json_rewrite", 
     "src": [
-      "test/core/json/json_rewrite.c"
+      "test/core/json/json_rewrite.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1448,7 +1448,7 @@
     "language": "c", 
     "name": "json_rewrite_test", 
     "src": [
-      "test/core/json/json_rewrite_test.c"
+      "test/core/json/json_rewrite_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1465,7 +1465,7 @@
     "language": "c", 
     "name": "json_stream_error_test", 
     "src": [
-      "test/core/json/json_stream_error_test.c"
+      "test/core/json/json_stream_error_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1482,7 +1482,7 @@
     "language": "c", 
     "name": "json_test", 
     "src": [
-      "test/core/json/json_test.c"
+      "test/core/json/json_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1499,7 +1499,7 @@
     "language": "c", 
     "name": "lame_client_test", 
     "src": [
-      "test/core/surface/lame_client_test.c"
+      "test/core/surface/lame_client_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1516,7 +1516,7 @@
     "language": "c", 
     "name": "lb_policies_test", 
     "src": [
-      "test/core/client_channel/lb_policies_test.c"
+      "test/core/client_channel/lb_policies_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1533,7 +1533,7 @@
     "language": "c", 
     "name": "load_file_test", 
     "src": [
-      "test/core/iomgr/load_file_test.c"
+      "test/core/iomgr/load_file_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1550,7 +1550,7 @@
     "language": "c", 
     "name": "low_level_ping_pong_benchmark", 
     "src": [
-      "test/core/network_benchmarks/low_level_ping_pong.c"
+      "test/core/network_benchmarks/low_level_ping_pong.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1567,7 +1567,7 @@
     "language": "c", 
     "name": "memory_profile_client", 
     "src": [
-      "test/core/memory_usage/client.c"
+      "test/core/memory_usage/client.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1584,7 +1584,7 @@
     "language": "c", 
     "name": "memory_profile_server", 
     "src": [
-      "test/core/memory_usage/server.c"
+      "test/core/memory_usage/server.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1601,7 +1601,7 @@
     "language": "c", 
     "name": "memory_profile_test", 
     "src": [
-      "test/core/memory_usage/memory_usage_test.c"
+      "test/core/memory_usage/memory_usage_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1618,7 +1618,7 @@
     "language": "c", 
     "name": "message_compress_test", 
     "src": [
-      "test/core/compression/message_compress_test.c"
+      "test/core/compression/message_compress_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1635,7 +1635,7 @@
     "language": "c", 
     "name": "minimal_stack_is_minimal_test", 
     "src": [
-      "test/core/channel/minimal_stack_is_minimal_test.c"
+      "test/core/channel/minimal_stack_is_minimal_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1652,7 +1652,7 @@
     "language": "c", 
     "name": "multiple_server_queues_test", 
     "src": [
-      "test/core/end2end/multiple_server_queues_test.c"
+      "test/core/end2end/multiple_server_queues_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1667,7 +1667,7 @@
     "language": "c", 
     "name": "murmur_hash_test", 
     "src": [
-      "test/core/support/murmur_hash_test.c"
+      "test/core/support/murmur_hash_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1684,7 +1684,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test", 
     "src": [
-      "test/core/nanopb/fuzzer_response.c"
+      "test/core/nanopb/fuzzer_response.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1701,7 +1701,7 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test", 
     "src": [
-      "test/core/nanopb/fuzzer_serverlist.c"
+      "test/core/nanopb/fuzzer_serverlist.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1718,7 +1718,7 @@
     "language": "c", 
     "name": "no_server_test", 
     "src": [
-      "test/core/end2end/no_server_test.c"
+      "test/core/end2end/no_server_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1735,7 +1735,7 @@
     "language": "c", 
     "name": "num_external_connectivity_watchers_test", 
     "src": [
-      "test/core/surface/num_external_connectivity_watchers_test.c"
+      "test/core/surface/num_external_connectivity_watchers_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1752,7 +1752,7 @@
     "language": "c", 
     "name": "parse_address_test", 
     "src": [
-      "test/core/client_channel/parse_address_test.c"
+      "test/core/client_channel/parse_address_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1769,7 +1769,7 @@
     "language": "c", 
     "name": "percent_decode_fuzzer", 
     "src": [
-      "test/core/slice/percent_decode_fuzzer.c"
+      "test/core/slice/percent_decode_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1786,7 +1786,7 @@
     "language": "c", 
     "name": "percent_encode_fuzzer", 
     "src": [
-      "test/core/slice/percent_encode_fuzzer.c"
+      "test/core/slice/percent_encode_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1803,7 +1803,7 @@
     "language": "c", 
     "name": "percent_encoding_test", 
     "src": [
-      "test/core/slice/percent_encoding_test.c"
+      "test/core/slice/percent_encoding_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1820,7 +1820,7 @@
     "language": "c", 
     "name": "pollset_set_test", 
     "src": [
-      "test/core/iomgr/pollset_set_test.c"
+      "test/core/iomgr/pollset_set_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1837,7 +1837,7 @@
     "language": "c", 
     "name": "resolve_address_posix_test", 
     "src": [
-      "test/core/iomgr/resolve_address_posix_test.c"
+      "test/core/iomgr/resolve_address_posix_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1854,7 +1854,7 @@
     "language": "c", 
     "name": "resolve_address_test", 
     "src": [
-      "test/core/iomgr/resolve_address_test.c"
+      "test/core/iomgr/resolve_address_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1871,7 +1871,7 @@
     "language": "c", 
     "name": "resource_quota_test", 
     "src": [
-      "test/core/iomgr/resource_quota_test.c"
+      "test/core/iomgr/resource_quota_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1888,7 +1888,7 @@
     "language": "c", 
     "name": "secure_channel_create_test", 
     "src": [
-      "test/core/surface/secure_channel_create_test.c"
+      "test/core/surface/secure_channel_create_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1905,7 +1905,7 @@
     "language": "c", 
     "name": "secure_endpoint_test", 
     "src": [
-      "test/core/security/secure_endpoint_test.c"
+      "test/core/security/secure_endpoint_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1922,7 +1922,7 @@
     "language": "c", 
     "name": "sequential_connectivity_test", 
     "src": [
-      "test/core/surface/sequential_connectivity_test.c"
+      "test/core/surface/sequential_connectivity_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1939,7 +1939,7 @@
     "language": "c", 
     "name": "server_chttp2_test", 
     "src": [
-      "test/core/surface/server_chttp2_test.c"
+      "test/core/surface/server_chttp2_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1956,7 +1956,7 @@
     "language": "c", 
     "name": "server_fuzzer", 
     "src": [
-      "test/core/end2end/fuzzers/server_fuzzer.c"
+      "test/core/end2end/fuzzers/server_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1973,7 +1973,7 @@
     "language": "c", 
     "name": "server_test", 
     "src": [
-      "test/core/surface/server_test.c"
+      "test/core/surface/server_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -1990,7 +1990,7 @@
     "language": "c", 
     "name": "slice_buffer_test", 
     "src": [
-      "test/core/slice/slice_buffer_test.c"
+      "test/core/slice/slice_buffer_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2007,7 +2007,7 @@
     "language": "c", 
     "name": "slice_hash_table_test", 
     "src": [
-      "test/core/slice/slice_hash_table_test.c"
+      "test/core/slice/slice_hash_table_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2024,7 +2024,7 @@
     "language": "c", 
     "name": "slice_string_helpers_test", 
     "src": [
-      "test/core/slice/slice_string_helpers_test.c"
+      "test/core/slice/slice_string_helpers_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2041,7 +2041,7 @@
     "language": "c", 
     "name": "slice_test", 
     "src": [
-      "test/core/slice/slice_test.c"
+      "test/core/slice/slice_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2058,7 +2058,7 @@
     "language": "c", 
     "name": "sockaddr_resolver_test", 
     "src": [
-      "test/core/client_channel/resolvers/sockaddr_resolver_test.c"
+      "test/core/client_channel/resolvers/sockaddr_resolver_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2075,7 +2075,7 @@
     "language": "c", 
     "name": "sockaddr_utils_test", 
     "src": [
-      "test/core/iomgr/sockaddr_utils_test.c"
+      "test/core/iomgr/sockaddr_utils_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2092,7 +2092,7 @@
     "language": "c", 
     "name": "socket_utils_test", 
     "src": [
-      "test/core/iomgr/socket_utils_test.c"
+      "test/core/iomgr/socket_utils_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2109,7 +2109,7 @@
     "language": "c", 
     "name": "ssl_server_fuzzer", 
     "src": [
-      "test/core/security/ssl_server_fuzzer.c"
+      "test/core/security/ssl_server_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2126,7 +2126,7 @@
     "language": "c", 
     "name": "ssl_transport_security_test", 
     "src": [
-      "test/core/tsi/ssl_transport_security_test.c"
+      "test/core/tsi/ssl_transport_security_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2143,7 +2143,7 @@
     "language": "c", 
     "name": "status_conversion_test", 
     "src": [
-      "test/core/transport/status_conversion_test.c"
+      "test/core/transport/status_conversion_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2160,7 +2160,7 @@
     "language": "c", 
     "name": "stream_compression_test", 
     "src": [
-      "test/core/compression/stream_compression_test.c"
+      "test/core/compression/stream_compression_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2177,7 +2177,7 @@
     "language": "c", 
     "name": "stream_owned_slice_test", 
     "src": [
-      "test/core/transport/stream_owned_slice_test.c"
+      "test/core/transport/stream_owned_slice_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2194,7 +2194,7 @@
     "language": "c", 
     "name": "tcp_client_posix_test", 
     "src": [
-      "test/core/iomgr/tcp_client_posix_test.c"
+      "test/core/iomgr/tcp_client_posix_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2211,7 +2211,7 @@
     "language": "c", 
     "name": "tcp_client_uv_test", 
     "src": [
-      "test/core/iomgr/tcp_client_uv_test.c"
+      "test/core/iomgr/tcp_client_uv_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2228,7 +2228,7 @@
     "language": "c", 
     "name": "tcp_posix_test", 
     "src": [
-      "test/core/iomgr/tcp_posix_test.c"
+      "test/core/iomgr/tcp_posix_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2245,7 +2245,7 @@
     "language": "c", 
     "name": "tcp_server_posix_test", 
     "src": [
-      "test/core/iomgr/tcp_server_posix_test.c"
+      "test/core/iomgr/tcp_server_posix_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2262,7 +2262,7 @@
     "language": "c", 
     "name": "tcp_server_uv_test", 
     "src": [
-      "test/core/iomgr/tcp_server_uv_test.c"
+      "test/core/iomgr/tcp_server_uv_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2279,7 +2279,7 @@
     "language": "c", 
     "name": "time_averaged_stats_test", 
     "src": [
-      "test/core/iomgr/time_averaged_stats_test.c"
+      "test/core/iomgr/time_averaged_stats_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2296,7 +2296,7 @@
     "language": "c", 
     "name": "timeout_encoding_test", 
     "src": [
-      "test/core/transport/timeout_encoding_test.c"
+      "test/core/transport/timeout_encoding_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2313,7 +2313,7 @@
     "language": "c", 
     "name": "timer_heap_test", 
     "src": [
-      "test/core/iomgr/timer_heap_test.c"
+      "test/core/iomgr/timer_heap_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2330,7 +2330,7 @@
     "language": "c", 
     "name": "timer_list_test", 
     "src": [
-      "test/core/iomgr/timer_list_test.c"
+      "test/core/iomgr/timer_list_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2347,7 +2347,7 @@
     "language": "c", 
     "name": "transport_connectivity_state_test", 
     "src": [
-      "test/core/transport/connectivity_state_test.c"
+      "test/core/transport/connectivity_state_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2364,7 +2364,7 @@
     "language": "c", 
     "name": "transport_metadata_test", 
     "src": [
-      "test/core/transport/metadata_test.c"
+      "test/core/transport/metadata_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2381,7 +2381,7 @@
     "language": "c", 
     "name": "transport_security_test", 
     "src": [
-      "test/core/tsi/transport_security_test.c"
+      "test/core/tsi/transport_security_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2398,7 +2398,7 @@
     "language": "c", 
     "name": "udp_server_test", 
     "src": [
-      "test/core/iomgr/udp_server_test.c"
+      "test/core/iomgr/udp_server_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2415,7 +2415,7 @@
     "language": "c", 
     "name": "uri_fuzzer_test", 
     "src": [
-      "test/core/client_channel/uri_fuzzer_test.c"
+      "test/core/client_channel/uri_fuzzer_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2432,7 +2432,7 @@
     "language": "c", 
     "name": "uri_parser_test", 
     "src": [
-      "test/core/client_channel/uri_parser_test.c"
+      "test/core/client_channel/uri_parser_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -2449,7 +2449,7 @@
     "language": "c", 
     "name": "wakeup_fd_cv_test", 
     "src": [
-      "test/core/iomgr/wakeup_fd_cv_test.c"
+      "test/core/iomgr/wakeup_fd_cv_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4796,7 +4796,7 @@
     "language": "c", 
     "name": "badreq_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/badreq.c"
+      "test/core/bad_client/tests/badreq.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4814,7 +4814,7 @@
     "language": "c", 
     "name": "connection_prefix_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/connection_prefix.c"
+      "test/core/bad_client/tests/connection_prefix.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4832,7 +4832,7 @@
     "language": "c", 
     "name": "head_of_line_blocking_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/head_of_line_blocking.c"
+      "test/core/bad_client/tests/head_of_line_blocking.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4850,7 +4850,7 @@
     "language": "c", 
     "name": "headers_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/headers.c"
+      "test/core/bad_client/tests/headers.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4868,7 +4868,7 @@
     "language": "c", 
     "name": "initial_settings_frame_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/initial_settings_frame.c"
+      "test/core/bad_client/tests/initial_settings_frame.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4886,7 +4886,7 @@
     "language": "c", 
     "name": "server_registered_method_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/server_registered_method.c"
+      "test/core/bad_client/tests/server_registered_method.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4904,7 +4904,7 @@
     "language": "c", 
     "name": "simple_request_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/simple_request.c"
+      "test/core/bad_client/tests/simple_request.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4922,7 +4922,7 @@
     "language": "c", 
     "name": "unknown_frame_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/unknown_frame.c"
+      "test/core/bad_client/tests/unknown_frame.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4940,7 +4940,7 @@
     "language": "c", 
     "name": "window_overflow_bad_client_test", 
     "src": [
-      "test/core/bad_client/tests/window_overflow.c"
+      "test/core/bad_client/tests/window_overflow.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4958,7 +4958,7 @@
     "language": "c", 
     "name": "bad_ssl_cert_server", 
     "src": [
-      "test/core/bad_ssl/servers/cert.c"
+      "test/core/bad_ssl/servers/cert.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4975,7 +4975,7 @@
     "language": "c", 
     "name": "bad_ssl_cert_test", 
     "src": [
-      "test/core/bad_ssl/bad_ssl_test.c"
+      "test/core/bad_ssl/bad_ssl_test.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -4993,7 +4993,7 @@
     "language": "c", 
     "name": "h2_census_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_census.c"
+      "test/core/end2end/fixtures/h2_census.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5011,7 +5011,7 @@
     "language": "c", 
     "name": "h2_compress_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_compress.c"
+      "test/core/end2end/fixtures/h2_compress.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5029,7 +5029,7 @@
     "language": "c", 
     "name": "h2_fakesec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_fakesec.c"
+      "test/core/end2end/fixtures/h2_fakesec.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5047,7 +5047,7 @@
     "language": "c", 
     "name": "h2_fd_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_fd.c"
+      "test/core/end2end/fixtures/h2_fd.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5065,7 +5065,7 @@
     "language": "c", 
     "name": "h2_full_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full.c"
+      "test/core/end2end/fixtures/h2_full.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5083,7 +5083,7 @@
     "language": "c", 
     "name": "h2_full+pipe_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full+pipe.c"
+      "test/core/end2end/fixtures/h2_full+pipe.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5101,7 +5101,7 @@
     "language": "c", 
     "name": "h2_full+trace_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full+trace.c"
+      "test/core/end2end/fixtures/h2_full+trace.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5119,7 +5119,7 @@
     "language": "c", 
     "name": "h2_full+workarounds_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full+workarounds.c"
+      "test/core/end2end/fixtures/h2_full+workarounds.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5137,7 +5137,7 @@
     "language": "c", 
     "name": "h2_http_proxy_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_http_proxy.c"
+      "test/core/end2end/fixtures/h2_http_proxy.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5155,7 +5155,7 @@
     "language": "c", 
     "name": "h2_load_reporting_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_load_reporting.c"
+      "test/core/end2end/fixtures/h2_load_reporting.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5173,7 +5173,7 @@
     "language": "c", 
     "name": "h2_oauth2_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_oauth2.c"
+      "test/core/end2end/fixtures/h2_oauth2.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5191,7 +5191,7 @@
     "language": "c", 
     "name": "h2_proxy_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_proxy.c"
+      "test/core/end2end/fixtures/h2_proxy.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5209,7 +5209,7 @@
     "language": "c", 
     "name": "h2_sockpair_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_sockpair.c"
+      "test/core/end2end/fixtures/h2_sockpair.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5227,7 +5227,7 @@
     "language": "c", 
     "name": "h2_sockpair+trace_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_sockpair+trace.c"
+      "test/core/end2end/fixtures/h2_sockpair+trace.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5245,7 +5245,7 @@
     "language": "c", 
     "name": "h2_sockpair_1byte_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_sockpair_1byte.c"
+      "test/core/end2end/fixtures/h2_sockpair_1byte.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5263,7 +5263,7 @@
     "language": "c", 
     "name": "h2_ssl_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_ssl.c"
+      "test/core/end2end/fixtures/h2_ssl.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5281,7 +5281,7 @@
     "language": "c", 
     "name": "h2_ssl_proxy_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_ssl_proxy.c"
+      "test/core/end2end/fixtures/h2_ssl_proxy.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5299,7 +5299,7 @@
     "language": "c", 
     "name": "h2_uds_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_uds.c"
+      "test/core/end2end/fixtures/h2_uds.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5317,7 +5317,7 @@
     "language": "c", 
     "name": "inproc_test", 
     "src": [
-      "test/core/end2end/fixtures/inproc.c"
+      "test/core/end2end/fixtures/inproc.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5335,7 +5335,7 @@
     "language": "c", 
     "name": "h2_census_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_census.c"
+      "test/core/end2end/fixtures/h2_census.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5353,7 +5353,7 @@
     "language": "c", 
     "name": "h2_compress_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_compress.c"
+      "test/core/end2end/fixtures/h2_compress.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5371,7 +5371,7 @@
     "language": "c", 
     "name": "h2_fd_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_fd.c"
+      "test/core/end2end/fixtures/h2_fd.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5389,7 +5389,7 @@
     "language": "c", 
     "name": "h2_full_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full.c"
+      "test/core/end2end/fixtures/h2_full.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5407,7 +5407,7 @@
     "language": "c", 
     "name": "h2_full+pipe_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full+pipe.c"
+      "test/core/end2end/fixtures/h2_full+pipe.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5425,7 +5425,7 @@
     "language": "c", 
     "name": "h2_full+trace_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full+trace.c"
+      "test/core/end2end/fixtures/h2_full+trace.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5443,7 +5443,7 @@
     "language": "c", 
     "name": "h2_full+workarounds_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_full+workarounds.c"
+      "test/core/end2end/fixtures/h2_full+workarounds.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5461,7 +5461,7 @@
     "language": "c", 
     "name": "h2_http_proxy_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_http_proxy.c"
+      "test/core/end2end/fixtures/h2_http_proxy.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5479,7 +5479,7 @@
     "language": "c", 
     "name": "h2_load_reporting_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_load_reporting.c"
+      "test/core/end2end/fixtures/h2_load_reporting.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5497,7 +5497,7 @@
     "language": "c", 
     "name": "h2_proxy_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_proxy.c"
+      "test/core/end2end/fixtures/h2_proxy.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5515,7 +5515,7 @@
     "language": "c", 
     "name": "h2_sockpair_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_sockpair.c"
+      "test/core/end2end/fixtures/h2_sockpair.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5533,7 +5533,7 @@
     "language": "c", 
     "name": "h2_sockpair+trace_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_sockpair+trace.c"
+      "test/core/end2end/fixtures/h2_sockpair+trace.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5551,7 +5551,7 @@
     "language": "c", 
     "name": "h2_sockpair_1byte_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_sockpair_1byte.c"
+      "test/core/end2end/fixtures/h2_sockpair_1byte.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5569,7 +5569,7 @@
     "language": "c", 
     "name": "h2_uds_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/h2_uds.c"
+      "test/core/end2end/fixtures/h2_uds.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5587,7 +5587,7 @@
     "language": "c", 
     "name": "inproc_nosec_test", 
     "src": [
-      "test/core/end2end/fixtures/inproc.c"
+      "test/core/end2end/fixtures/inproc.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5684,8 +5684,8 @@
     "language": "c", 
     "name": "api_fuzzer_one_entry", 
     "src": [
-      "test/core/end2end/fuzzers/api_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/end2end/fuzzers/api_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5702,8 +5702,8 @@
     "language": "c", 
     "name": "client_fuzzer_one_entry", 
     "src": [
-      "test/core/end2end/fuzzers/client_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/end2end/fuzzers/client_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5720,8 +5720,8 @@
     "language": "c", 
     "name": "hpack_parser_fuzzer_test_one_entry", 
     "src": [
-      "test/core/transport/chttp2/hpack_parser_fuzzer_test.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/transport/chttp2/hpack_parser_fuzzer_test.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5738,8 +5738,8 @@
     "language": "c", 
     "name": "http_request_fuzzer_test_one_entry", 
     "src": [
-      "test/core/http/request_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/http/request_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5756,8 +5756,8 @@
     "language": "c", 
     "name": "http_response_fuzzer_test_one_entry", 
     "src": [
-      "test/core/http/response_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/http/response_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5774,8 +5774,8 @@
     "language": "c", 
     "name": "json_fuzzer_test_one_entry", 
     "src": [
-      "test/core/json/fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/json/fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5792,8 +5792,8 @@
     "language": "c", 
     "name": "nanopb_fuzzer_response_test_one_entry", 
     "src": [
-      "test/core/nanopb/fuzzer_response.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/nanopb/fuzzer_response.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5810,8 +5810,8 @@
     "language": "c", 
     "name": "nanopb_fuzzer_serverlist_test_one_entry", 
     "src": [
-      "test/core/nanopb/fuzzer_serverlist.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/nanopb/fuzzer_serverlist.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5828,8 +5828,8 @@
     "language": "c", 
     "name": "percent_decode_fuzzer_one_entry", 
     "src": [
-      "test/core/slice/percent_decode_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/slice/percent_decode_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5846,8 +5846,8 @@
     "language": "c", 
     "name": "percent_encode_fuzzer_one_entry", 
     "src": [
-      "test/core/slice/percent_encode_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/slice/percent_encode_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5864,8 +5864,8 @@
     "language": "c", 
     "name": "server_fuzzer_one_entry", 
     "src": [
-      "test/core/end2end/fuzzers/server_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/end2end/fuzzers/server_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5882,8 +5882,8 @@
     "language": "c", 
     "name": "ssl_server_fuzzer_one_entry", 
     "src": [
-      "test/core/security/ssl_server_fuzzer.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/security/ssl_server_fuzzer.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5900,8 +5900,8 @@
     "language": "c", 
     "name": "uri_fuzzer_test_one_entry", 
     "src": [
-      "test/core/client_channel/uri_fuzzer_test.c", 
-      "test/core/util/one_corpus_entry_fuzzer.c"
+      "test/core/client_channel/uri_fuzzer_test.cc", 
+      "test/core/util/one_corpus_entry_fuzzer.cc"
     ], 
     "third_party": false, 
     "type": "target"
@@ -5929,7 +5929,7 @@
     "language": "c", 
     "name": "gpr_test_util", 
     "src": [
-      "test/core/util/test_config.c", 
+      "test/core/util/test_config.cc", 
       "test/core/util/test_config.h"
     ], 
     "third_party": false, 
@@ -6016,12 +6016,12 @@
     "language": "c", 
     "name": "grpc_test_util", 
     "src": [
-      "test/core/end2end/data/client_certs.c", 
-      "test/core/end2end/data/server1_cert.c", 
-      "test/core/end2end/data/server1_key.c", 
+      "test/core/end2end/data/client_certs.cc", 
+      "test/core/end2end/data/server1_cert.cc", 
+      "test/core/end2end/data/server1_key.cc", 
       "test/core/end2end/data/ssl_test_data.h", 
-      "test/core/end2end/data/test_root_cert.c", 
-      "test/core/security/oauth2_utils.c", 
+      "test/core/end2end/data/test_root_cert.cc", 
+      "test/core/security/oauth2_utils.cc", 
       "test/core/security/oauth2_utils.h"
     ], 
     "third_party": false, 
@@ -6090,7 +6090,7 @@
     "language": "c", 
     "name": "reconnect_server", 
     "src": [
-      "test/core/util/reconnect_server.c", 
+      "test/core/util/reconnect_server.cc", 
       "test/core/util/reconnect_server.h"
     ], 
     "third_party": false, 
@@ -6110,7 +6110,7 @@
     "language": "c", 
     "name": "test_tcp_server", 
     "src": [
-      "test/core/util/test_tcp_server.c", 
+      "test/core/util/test_tcp_server.cc", 
       "test/core/util/test_tcp_server.h"
     ], 
     "third_party": false, 
@@ -7467,7 +7467,7 @@
     "language": "c", 
     "name": "bad_client_test", 
     "src": [
-      "test/core/bad_client/bad_client.c", 
+      "test/core/bad_client/bad_client.cc", 
       "test/core/bad_client/bad_client.h"
     ], 
     "third_party": false, 
@@ -7487,7 +7487,7 @@
     "language": "c", 
     "name": "bad_ssl_test_server", 
     "src": [
-      "test/core/bad_ssl/server_common.c", 
+      "test/core/bad_ssl/server_common.cc", 
       "test/core/bad_ssl/server_common.h"
     ], 
     "third_party": false, 
@@ -7508,69 +7508,69 @@
     "language": "c", 
     "name": "end2end_tests", 
     "src": [
-      "test/core/end2end/end2end_test_utils.c", 
-      "test/core/end2end/end2end_tests.c", 
+      "test/core/end2end/end2end_test_utils.cc", 
+      "test/core/end2end/end2end_tests.cc", 
       "test/core/end2end/end2end_tests.h", 
-      "test/core/end2end/tests/authority_not_supported.c", 
-      "test/core/end2end/tests/bad_hostname.c", 
-      "test/core/end2end/tests/bad_ping.c", 
-      "test/core/end2end/tests/binary_metadata.c", 
-      "test/core/end2end/tests/call_creds.c", 
-      "test/core/end2end/tests/cancel_after_accept.c", 
-      "test/core/end2end/tests/cancel_after_client_done.c", 
-      "test/core/end2end/tests/cancel_after_invoke.c", 
-      "test/core/end2end/tests/cancel_after_round_trip.c", 
-      "test/core/end2end/tests/cancel_before_invoke.c", 
-      "test/core/end2end/tests/cancel_in_a_vacuum.c", 
+      "test/core/end2end/tests/authority_not_supported.cc", 
+      "test/core/end2end/tests/bad_hostname.cc", 
+      "test/core/end2end/tests/bad_ping.cc", 
+      "test/core/end2end/tests/binary_metadata.cc", 
+      "test/core/end2end/tests/call_creds.cc", 
+      "test/core/end2end/tests/cancel_after_accept.cc", 
+      "test/core/end2end/tests/cancel_after_client_done.cc", 
+      "test/core/end2end/tests/cancel_after_invoke.cc", 
+      "test/core/end2end/tests/cancel_after_round_trip.cc", 
+      "test/core/end2end/tests/cancel_before_invoke.cc", 
+      "test/core/end2end/tests/cancel_in_a_vacuum.cc", 
       "test/core/end2end/tests/cancel_test_helpers.h", 
-      "test/core/end2end/tests/cancel_with_status.c", 
-      "test/core/end2end/tests/compressed_payload.c", 
-      "test/core/end2end/tests/connectivity.c", 
-      "test/core/end2end/tests/default_host.c", 
-      "test/core/end2end/tests/disappearing_server.c", 
-      "test/core/end2end/tests/empty_batch.c", 
-      "test/core/end2end/tests/filter_call_init_fails.c", 
-      "test/core/end2end/tests/filter_causes_close.c", 
-      "test/core/end2end/tests/filter_latency.c", 
-      "test/core/end2end/tests/graceful_server_shutdown.c", 
-      "test/core/end2end/tests/high_initial_seqno.c", 
-      "test/core/end2end/tests/hpack_size.c", 
-      "test/core/end2end/tests/idempotent_request.c", 
-      "test/core/end2end/tests/invoke_large_request.c", 
-      "test/core/end2end/tests/keepalive_timeout.c", 
-      "test/core/end2end/tests/large_metadata.c", 
-      "test/core/end2end/tests/load_reporting_hook.c", 
-      "test/core/end2end/tests/max_concurrent_streams.c", 
-      "test/core/end2end/tests/max_connection_age.c", 
-      "test/core/end2end/tests/max_connection_idle.c", 
-      "test/core/end2end/tests/max_message_length.c", 
-      "test/core/end2end/tests/negative_deadline.c", 
-      "test/core/end2end/tests/network_status_change.c", 
-      "test/core/end2end/tests/no_logging.c", 
-      "test/core/end2end/tests/no_op.c", 
-      "test/core/end2end/tests/payload.c", 
-      "test/core/end2end/tests/ping.c", 
-      "test/core/end2end/tests/ping_pong_streaming.c", 
-      "test/core/end2end/tests/proxy_auth.c", 
-      "test/core/end2end/tests/registered_call.c", 
-      "test/core/end2end/tests/request_with_flags.c", 
-      "test/core/end2end/tests/request_with_payload.c", 
-      "test/core/end2end/tests/resource_quota_server.c", 
-      "test/core/end2end/tests/server_finishes_request.c", 
-      "test/core/end2end/tests/shutdown_finishes_calls.c", 
-      "test/core/end2end/tests/shutdown_finishes_tags.c", 
-      "test/core/end2end/tests/simple_cacheable_request.c", 
-      "test/core/end2end/tests/simple_delayed_request.c", 
-      "test/core/end2end/tests/simple_metadata.c", 
-      "test/core/end2end/tests/simple_request.c", 
-      "test/core/end2end/tests/stream_compression_compressed_payload.c", 
-      "test/core/end2end/tests/stream_compression_payload.c", 
-      "test/core/end2end/tests/stream_compression_ping_pong_streaming.c", 
-      "test/core/end2end/tests/streaming_error_response.c", 
-      "test/core/end2end/tests/trailing_metadata.c", 
-      "test/core/end2end/tests/workaround_cronet_compression.c", 
-      "test/core/end2end/tests/write_buffering.c", 
-      "test/core/end2end/tests/write_buffering_at_end.c"
+      "test/core/end2end/tests/cancel_with_status.cc", 
+      "test/core/end2end/tests/compressed_payload.cc", 
+      "test/core/end2end/tests/connectivity.cc", 
+      "test/core/end2end/tests/default_host.cc", 
+      "test/core/end2end/tests/disappearing_server.cc", 
+      "test/core/end2end/tests/empty_batch.cc", 
+      "test/core/end2end/tests/filter_call_init_fails.cc", 
+      "test/core/end2end/tests/filter_causes_close.cc", 
+      "test/core/end2end/tests/filter_latency.cc", 
+      "test/core/end2end/tests/graceful_server_shutdown.cc", 
+      "test/core/end2end/tests/high_initial_seqno.cc", 
+      "test/core/end2end/tests/hpack_size.cc", 
+      "test/core/end2end/tests/idempotent_request.cc", 
+      "test/core/end2end/tests/invoke_large_request.cc", 
+      "test/core/end2end/tests/keepalive_timeout.cc", 
+      "test/core/end2end/tests/large_metadata.cc", 
+      "test/core/end2end/tests/load_reporting_hook.cc", 
+      "test/core/end2end/tests/max_concurrent_streams.cc", 
+      "test/core/end2end/tests/max_connection_age.cc", 
+      "test/core/end2end/tests/max_connection_idle.cc", 
+      "test/core/end2end/tests/max_message_length.cc", 
+      "test/core/end2end/tests/negative_deadline.cc", 
+      "test/core/end2end/tests/network_status_change.cc", 
+      "test/core/end2end/tests/no_logging.cc", 
+      "test/core/end2end/tests/no_op.cc", 
+      "test/core/end2end/tests/payload.cc", 
+      "test/core/end2end/tests/ping.cc", 
+      "test/core/end2end/tests/ping_pong_streaming.cc", 
+      "test/core/end2end/tests/proxy_auth.cc", 
+      "test/core/end2end/tests/registered_call.cc", 
+      "test/core/end2end/tests/request_with_flags.cc", 
+      "test/core/end2end/tests/request_with_payload.cc", 
+      "test/core/end2end/tests/resource_quota_server.cc", 
+      "test/core/end2end/tests/server_finishes_request.cc", 
+      "test/core/end2end/tests/shutdown_finishes_calls.cc", 
+      "test/core/end2end/tests/shutdown_finishes_tags.cc", 
+      "test/core/end2end/tests/simple_cacheable_request.cc", 
+      "test/core/end2end/tests/simple_delayed_request.cc", 
+      "test/core/end2end/tests/simple_metadata.cc", 
+      "test/core/end2end/tests/simple_request.cc", 
+      "test/core/end2end/tests/stream_compression_compressed_payload.cc", 
+      "test/core/end2end/tests/stream_compression_payload.cc", 
+      "test/core/end2end/tests/stream_compression_ping_pong_streaming.cc", 
+      "test/core/end2end/tests/streaming_error_response.cc", 
+      "test/core/end2end/tests/trailing_metadata.cc", 
+      "test/core/end2end/tests/workaround_cronet_compression.cc", 
+      "test/core/end2end/tests/write_buffering.cc", 
+      "test/core/end2end/tests/write_buffering_at_end.cc"
     ], 
     "third_party": false, 
     "type": "lib"
@@ -7590,68 +7590,68 @@
     "language": "c", 
     "name": "end2end_nosec_tests", 
     "src": [
-      "test/core/end2end/end2end_nosec_tests.c", 
-      "test/core/end2end/end2end_test_utils.c", 
+      "test/core/end2end/end2end_nosec_tests.cc", 
+      "test/core/end2end/end2end_test_utils.cc", 
       "test/core/end2end/end2end_tests.h", 
-      "test/core/end2end/tests/authority_not_supported.c", 
-      "test/core/end2end/tests/bad_hostname.c", 
-      "test/core/end2end/tests/bad_ping.c", 
-      "test/core/end2end/tests/binary_metadata.c", 
-      "test/core/end2end/tests/cancel_after_accept.c", 
-      "test/core/end2end/tests/cancel_after_client_done.c", 
-      "test/core/end2end/tests/cancel_after_invoke.c", 
-      "test/core/end2end/tests/cancel_after_round_trip.c", 
-      "test/core/end2end/tests/cancel_before_invoke.c", 
-      "test/core/end2end/tests/cancel_in_a_vacuum.c", 
+      "test/core/end2end/tests/authority_not_supported.cc", 
+      "test/core/end2end/tests/bad_hostname.cc", 
+      "test/core/end2end/tests/bad_ping.cc", 
+      "test/core/end2end/tests/binary_metadata.cc", 
+      "test/core/end2end/tests/cancel_after_accept.cc", 
+      "test/core/end2end/tests/cancel_after_client_done.cc", 
+      "test/core/end2end/tests/cancel_after_invoke.cc", 
+      "test/core/end2end/tests/cancel_after_round_trip.cc", 
+      "test/core/end2end/tests/cancel_before_invoke.cc", 
+      "test/core/end2end/tests/cancel_in_a_vacuum.cc", 
       "test/core/end2end/tests/cancel_test_helpers.h", 
-      "test/core/end2end/tests/cancel_with_status.c", 
-      "test/core/end2end/tests/compressed_payload.c", 
-      "test/core/end2end/tests/connectivity.c", 
-      "test/core/end2end/tests/default_host.c", 
-      "test/core/end2end/tests/disappearing_server.c", 
-      "test/core/end2end/tests/empty_batch.c", 
-      "test/core/end2end/tests/filter_call_init_fails.c", 
-      "test/core/end2end/tests/filter_causes_close.c", 
-      "test/core/end2end/tests/filter_latency.c", 
-      "test/core/end2end/tests/graceful_server_shutdown.c", 
-      "test/core/end2end/tests/high_initial_seqno.c", 
-      "test/core/end2end/tests/hpack_size.c", 
-      "test/core/end2end/tests/idempotent_request.c", 
-      "test/core/end2end/tests/invoke_large_request.c", 
-      "test/core/end2end/tests/keepalive_timeout.c", 
-      "test/core/end2end/tests/large_metadata.c", 
-      "test/core/end2end/tests/load_reporting_hook.c", 
-      "test/core/end2end/tests/max_concurrent_streams.c", 
-      "test/core/end2end/tests/max_connection_age.c", 
-      "test/core/end2end/tests/max_connection_idle.c", 
-      "test/core/end2end/tests/max_message_length.c", 
-      "test/core/end2end/tests/negative_deadline.c", 
-      "test/core/end2end/tests/network_status_change.c", 
-      "test/core/end2end/tests/no_logging.c", 
-      "test/core/end2end/tests/no_op.c", 
-      "test/core/end2end/tests/payload.c", 
-      "test/core/end2end/tests/ping.c", 
-      "test/core/end2end/tests/ping_pong_streaming.c", 
-      "test/core/end2end/tests/proxy_auth.c", 
-      "test/core/end2end/tests/registered_call.c", 
-      "test/core/end2end/tests/request_with_flags.c", 
-      "test/core/end2end/tests/request_with_payload.c", 
-      "test/core/end2end/tests/resource_quota_server.c", 
-      "test/core/end2end/tests/server_finishes_request.c", 
-      "test/core/end2end/tests/shutdown_finishes_calls.c", 
-      "test/core/end2end/tests/shutdown_finishes_tags.c", 
-      "test/core/end2end/tests/simple_cacheable_request.c", 
-      "test/core/end2end/tests/simple_delayed_request.c", 
-      "test/core/end2end/tests/simple_metadata.c", 
-      "test/core/end2end/tests/simple_request.c", 
-      "test/core/end2end/tests/stream_compression_compressed_payload.c", 
-      "test/core/end2end/tests/stream_compression_payload.c", 
-      "test/core/end2end/tests/stream_compression_ping_pong_streaming.c", 
-      "test/core/end2end/tests/streaming_error_response.c", 
-      "test/core/end2end/tests/trailing_metadata.c", 
-      "test/core/end2end/tests/workaround_cronet_compression.c", 
-      "test/core/end2end/tests/write_buffering.c", 
-      "test/core/end2end/tests/write_buffering_at_end.c"
+      "test/core/end2end/tests/cancel_with_status.cc", 
+      "test/core/end2end/tests/compressed_payload.cc", 
+      "test/core/end2end/tests/connectivity.cc", 
+      "test/core/end2end/tests/default_host.cc", 
+      "test/core/end2end/tests/disappearing_server.cc", 
+      "test/core/end2end/tests/empty_batch.cc", 
+      "test/core/end2end/tests/filter_call_init_fails.cc", 
+      "test/core/end2end/tests/filter_causes_close.cc", 
+      "test/core/end2end/tests/filter_latency.cc", 
+      "test/core/end2end/tests/graceful_server_shutdown.cc", 
+      "test/core/end2end/tests/high_initial_seqno.cc", 
+      "test/core/end2end/tests/hpack_size.cc", 
+      "test/core/end2end/tests/idempotent_request.cc", 
+      "test/core/end2end/tests/invoke_large_request.cc", 
+      "test/core/end2end/tests/keepalive_timeout.cc", 
+      "test/core/end2end/tests/large_metadata.cc", 
+      "test/core/end2end/tests/load_reporting_hook.cc", 
+      "test/core/end2end/tests/max_concurrent_streams.cc", 
+      "test/core/end2end/tests/max_connection_age.cc", 
+      "test/core/end2end/tests/max_connection_idle.cc", 
+      "test/core/end2end/tests/max_message_length.cc", 
+      "test/core/end2end/tests/negative_deadline.cc", 
+      "test/core/end2end/tests/network_status_change.cc", 
+      "test/core/end2end/tests/no_logging.cc", 
+      "test/core/end2end/tests/no_op.cc", 
+      "test/core/end2end/tests/payload.cc", 
+      "test/core/end2end/tests/ping.cc", 
+      "test/core/end2end/tests/ping_pong_streaming.cc", 
+      "test/core/end2end/tests/proxy_auth.cc", 
+      "test/core/end2end/tests/registered_call.cc", 
+      "test/core/end2end/tests/request_with_flags.cc", 
+      "test/core/end2end/tests/request_with_payload.cc", 
+      "test/core/end2end/tests/resource_quota_server.cc", 
+      "test/core/end2end/tests/server_finishes_request.cc", 
+      "test/core/end2end/tests/shutdown_finishes_calls.cc", 
+      "test/core/end2end/tests/shutdown_finishes_tags.cc", 
+      "test/core/end2end/tests/simple_cacheable_request.cc", 
+      "test/core/end2end/tests/simple_delayed_request.cc", 
+      "test/core/end2end/tests/simple_metadata.cc", 
+      "test/core/end2end/tests/simple_request.cc", 
+      "test/core/end2end/tests/stream_compression_compressed_payload.cc", 
+      "test/core/end2end/tests/stream_compression_payload.cc", 
+      "test/core/end2end/tests/stream_compression_ping_pong_streaming.cc", 
+      "test/core/end2end/tests/streaming_error_response.cc", 
+      "test/core/end2end/tests/trailing_metadata.cc", 
+      "test/core/end2end/tests/workaround_cronet_compression.cc", 
+      "test/core/end2end/tests/write_buffering.cc", 
+      "test/core/end2end/tests/write_buffering_at_end.cc"
     ], 
     "third_party": false, 
     "type": "lib"
@@ -8863,33 +8863,33 @@
     "src": [
       "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc", 
       "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h", 
-      "test/core/end2end/cq_verifier.c", 
+      "test/core/end2end/cq_verifier.cc", 
       "test/core/end2end/cq_verifier.h", 
-      "test/core/end2end/fixtures/http_proxy_fixture.c", 
+      "test/core/end2end/fixtures/http_proxy_fixture.cc", 
       "test/core/end2end/fixtures/http_proxy_fixture.h", 
-      "test/core/end2end/fixtures/proxy.c", 
+      "test/core/end2end/fixtures/proxy.cc", 
       "test/core/end2end/fixtures/proxy.h", 
-      "test/core/iomgr/endpoint_tests.c", 
+      "test/core/iomgr/endpoint_tests.cc", 
       "test/core/iomgr/endpoint_tests.h", 
       "test/core/util/debugger_macros.cc", 
       "test/core/util/debugger_macros.h", 
-      "test/core/util/grpc_profiler.c", 
+      "test/core/util/grpc_profiler.cc", 
       "test/core/util/grpc_profiler.h", 
-      "test/core/util/memory_counters.c", 
+      "test/core/util/memory_counters.cc", 
       "test/core/util/memory_counters.h", 
-      "test/core/util/mock_endpoint.c", 
+      "test/core/util/mock_endpoint.cc", 
       "test/core/util/mock_endpoint.h", 
-      "test/core/util/parse_hexstring.c", 
+      "test/core/util/parse_hexstring.cc", 
       "test/core/util/parse_hexstring.h", 
-      "test/core/util/passthru_endpoint.c", 
+      "test/core/util/passthru_endpoint.cc", 
       "test/core/util/passthru_endpoint.h", 
-      "test/core/util/port.c", 
+      "test/core/util/port.cc", 
       "test/core/util/port.h", 
-      "test/core/util/port_server_client.c", 
+      "test/core/util/port_server_client.cc", 
       "test/core/util/port_server_client.h", 
-      "test/core/util/slice_splitter.c", 
+      "test/core/util/slice_splitter.cc", 
       "test/core/util/slice_splitter.h", 
-      "test/core/util/trickle_endpoint.c", 
+      "test/core/util/trickle_endpoint.cc", 
       "test/core/util/trickle_endpoint.h"
     ], 
     "third_party": false, 
@@ -9255,7 +9255,7 @@
     "language": "c", 
     "name": "transport_security_test_lib", 
     "src": [
-      "test/core/tsi/transport_security_test_lib.c", 
+      "test/core/tsi/transport_security_test_lib.cc", 
       "test/core/tsi/transport_security_test_lib.h"
     ], 
     "third_party": false,