Merge master
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 764bee5..59d4d6e 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 76ce863..26382d1 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 9f46491..5baa06b 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 cba38d4..c0295c1 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 9fb80d4..9a059ba 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 b9b82e5..cecf2d6 100644
--- a/src/ruby/ext/grpc/rb_grpc_imports.generated.h
+++ b/src/ruby/ext/grpc/rb_grpc_imports.generated.h
@@ -628,7 +628,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 04485d5..cb89423 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 e4b5f97..40552e5 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 793627b..2183fbb 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 0588d43..5def618 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 deaf293..08dd1f4 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 682efd1..f912960 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 a07ef89..8800737 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 b452834..5884893 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) {
@@ -194,7 +196,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),
+            transport_name,
+            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);
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 0e47d8f..25b8966 100644
--- a/test/core/client_channel/lb_policies_test.c
+++ b/test/core/client_channel/lb_policies_test.cc
@@ -88,14 +88,16 @@
   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 +174,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 +232,10 @@
 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 +263,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 +434,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 +474,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 +484,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 +523,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 +552,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 +598,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 +639,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 +647,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 +690,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 +709,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 +736,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 +766,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 +802,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 +823,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 +846,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 +861,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 +915,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 +927,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 +954,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 4597285..4dfee8c 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,11 @@
     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 +97,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 +123,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 +132,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 9b0854d..ed14151 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 8b88619..254ce59 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 e51d003..9674dad 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 a11e6e9..4ca979e 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 326a800..f4fa3a8 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 f7f4893..1395d42 100644
--- a/test/core/compression/message_compress_test.c
+++ b/test/core/compression/message_compress_test.cc
@@ -148,16 +148,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);
   }
@@ -252,8 +253,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);
 
@@ -276,8 +279,10 @@
       &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);
 
@@ -300,8 +305,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 afed6cd..d136408 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 5015819..915254f 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 40227de..b295682 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 cc80b58..d8a5d49 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 f19b15c..2bd9401 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 fc873b7..79e686c 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 f9150f1..bfb2e22 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 9870ccb..d705818 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 9866dea..bdfeef2 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 e622d95..7cbcfcc 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 e82c120..2dc7898 100644
--- a/test/core/end2end/fixtures/h2_fd.c
+++ b/test/core/end2end/fixtures/h2_fd.cc
@@ -50,7 +50,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));
@@ -66,7 +67,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(
@@ -79,7 +80,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 c764bd7..beff1be 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 7eb29e0..efed0c5 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 a98e5ad..d4930ce 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 ae68bd9..d132198 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 6145892..5630b49 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 8a05bb7..e461f13 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 ee1d0b1..f1e49f2 100644
--- a/test/core/end2end/fixtures/h2_oauth2.c
+++ b/test/core/end2end/fixtures/h2_oauth2.cc
@@ -92,7 +92,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);
@@ -107,7 +108,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);
@@ -117,7 +119,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);
   }
@@ -130,7 +133,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);
 }
@@ -144,9 +148,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);
@@ -175,7 +180,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 069130b..e1eb968 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 39ccb84..81d0768 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 03566ea..78b5ad8 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 c75a387..b144771 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 0bac464..045a8b7 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 8bc7183..b9b68c8 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 05a3198..f9336b5 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 6f742f0..c075dc6 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,8 @@
 }
 
 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 0a787bb..69d2553 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;
@@ -373,18 +374,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);
@@ -403,7 +406,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;
@@ -418,7 +421,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;
@@ -433,10 +436,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);
@@ -449,7 +452,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));
@@ -480,7 +483,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;
@@ -494,8 +497,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));
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -508,7 +512,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;
@@ -528,14 +532,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);
   }
@@ -585,7 +590,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;
@@ -634,8 +639,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;
 }
@@ -643,12 +648,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];
 }
@@ -657,7 +662,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);
@@ -667,7 +673,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);
 }
@@ -679,7 +685,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) {
@@ -696,7 +702,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)) {
@@ -721,13 +727,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);
@@ -803,7 +809,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;
@@ -992,7 +998,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;
@@ -1035,7 +1042,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 88ba6ba..bea8ec8 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 ef4c0a4..36b16af 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 c3aca13..c0d7fb8 100644
--- a/test/core/end2end/goaway_server_test.c
+++ b/test/core/end2end/goaway_server_test.cc
@@ -74,9 +74,11 @@
     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 +108,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 +170,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 6da5e83..515707a 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 e3fd5a8..ac704a6 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 34cc8e7..50e02ed 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 600005c..dfe6d19 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 c3ac0c3..58e807b 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"
@@ -134,7 +134,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 bc41bd3..202eeb5 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 610243e..2cba259 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 04b9483..2b72d09 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 9358c11..e838be9 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 ff269fa..c0e6310 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 0053368..721c136 100644
--- a/test/core/end2end/tests/keepalive_timeout.c
+++ b/test/core/end2end/tests/keepalive_timeout.cc
@@ -98,18 +98,19 @@
   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 81a45d8..c2aa4d1 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 d18c139..deb44bb 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 b6daa59..01cae9e 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 f26b0be..a44d154 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 01eb8d3..2ee7b0b 100644
--- a/test/core/end2end/tests/max_message_length.c
+++ b/test/core/end2end/tests/max_message_length.cc
@@ -132,31 +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"
-              "    ],\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);
@@ -322,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"
@@ -340,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 f7d50c2..d898ef0 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 23c8256..e6b0e55 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 d922049..fe87399 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 93befee..e710e39 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 c3f66a0..a4cbcbf 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 7ce7e1f..48c9824 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 44e8e04..17e59ad 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 be7bfc2..356ec4b 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 566d9ae..4e3b63e 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 90b48e7..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 566d9ae..a7681d5 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 b3a7fa2..34e5f79 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];
 
@@ -247,7 +247,7 @@
         cq, 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 de660fe..f501948 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 85a8b4d..7b24459 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 81%
rename from test/core/http/format_request_test.c
rename to test/core/http/format_request_test.cc
index 0279a1b..b2d9034 100644
--- a/test/core/http/format_request_test.c
+++ b/test/core/http/format_request_test.cc
@@ -24,13 +24,14 @@
 #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 +50,16 @@
 }
 
 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 +81,14 @@
 }
 
 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 +113,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 cc1c16d..925f63d 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 f8a3cfd..179b3a7 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 a7044c0..9eff491 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 94%
rename from test/core/http/request_fuzzer.c
rename to test/core/http/request_fuzzer.cc
index aefe9eb..8677fd2 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 d5bb675..e84353f 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 91%
rename from test/core/iomgr/combiner_test.c
rename to test/core/iomgr/combiner_test.cc
index 38f512d..7d2d098 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,
@@ -131,10 +131,11 @@
 }
 
 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_ERROR_NONE);
+  GRPC_CLOSURE_SCHED(
+      exec_ctx, GRPC_CLOSURE_CREATE(in_finally, arg,
+                                    grpc_combiner_finally_scheduler(
+                                        static_cast<grpc_combiner *>(arg))),
+      GRPC_ERROR_NONE);
 }
 
 static void test_execute_finally(void) {
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 f2ce3d0..c7ce6c0 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 37aadac..23079c1 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 1c62f34..63363a4 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 537c343..5fb8266 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 cddc146..ae19c81 100644
--- a/test/core/iomgr/pollset_set_test.c
+++ b/test/core/iomgr/pollset_set_test.cc
@@ -65,14 +65,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 cb9d608..572b422 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 178bbbb..da6aab35 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 b588f3d..f0002e0 100644
--- a/test/core/iomgr/resource_quota_test.c
+++ b/test/core/iomgr/resource_quota_test.cc
@@ -58,7 +58,7 @@
 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);
@@ -66,7 +66,7 @@
 }
 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 +76,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 b8b76d1..b2dcb1d 100644
--- a/test/core/iomgr/tcp_client_posix_test.c
+++ b/test/core/iomgr/tcp_client_posix_test.cc
@@ -190,7 +190,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) {
@@ -199,7 +199,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 edfccbe..7eb4bd5 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 6501160..8a4433b 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 782dfb4..a44e395 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 9fafd31..3fcbd40 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 ee5a474..3eb25dd 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 c3d9f9d..b07eb50 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 2e44d0a..51c7ab8 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 b825904..58c34e5 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 dfe32f5..27443e3 100644
--- a/test/core/json/json_rewrite.c
+++ b/test/core/json/json_rewrite.cc
@@ -45,18 +45,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);
 }
 
@@ -68,19 +68,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;
@@ -115,7 +116,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;
@@ -123,8 +124,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;
@@ -134,7 +136,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);
@@ -144,21 +146,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);
@@ -167,19 +169,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 86%
rename from test/core/json/json_rewrite_test.c
rename to test/core/json/json_rewrite_test.cc
index a654971..ba22709 100644
--- a/test/core/json/json_rewrite_test.c
+++ b/test/core/json/json_rewrite_test.cc
@@ -47,7 +47,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 */
@@ -79,19 +79,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;
@@ -126,7 +127,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;
@@ -141,8 +142,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;
@@ -152,7 +154,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);
@@ -162,21 +164,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);
@@ -185,19 +187,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 6392554..fbf907fe 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 f4ee6c6..7bf1657 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 b25341e..8dee58e 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];
 
@@ -231,7 +231,7 @@
         cq, 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 c9b6397..9a52c33 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 dd70f0c..75b0bbe 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 1550003..84aebc9 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 93ea27f..2444dbe 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 34f3101..dfc071b 100644
--- a/test/core/security/credentials_test.c
+++ b/test/core/security/credentials_test.cc
@@ -44,7 +44,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;
@@ -122,7 +123,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);
@@ -363,7 +364,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;
@@ -934,7 +936,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 3998cb5..1f1cf11 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 6573f70..70661a1 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 a4bfe01..b0b94ba 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 15f68bd..85ef988 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 29c38df..81c992c 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 839a05f..00ff7cf 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 f9b754b..8f34e2e 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 cec6fb9..c6591cf 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 ad4e3fe..2aae335 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 db3dc3b..4813d12 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 504acf8..8877da7 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 cda37fb..ad62344 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 d714e15..72ea0d8 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 254c14a..91eafd5 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 088ae7d..ef9785a 100644
--- a/test/core/support/alloc_test.c
+++ b/test/core/support/alloc_test.cc
@@ -43,8 +43,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 afb3092..021bd18 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 37424d6..474e773 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 72e7c7f..a3740d4 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,12 @@
 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 +441,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 72db53f..7eaf65b 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 5e7dc9f..a4fa6a3 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 b236a88..8c8c8ce 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 178d77e..c005a2b 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 2c578a2..e6b4ea4 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 9996b6b..abe1197 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 3595885..303180c 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 89%
rename from test/core/surface/invalid_channel_args_test.c
rename to test/core/surface/invalid_channel_args_test.cc
index 9c84c30..e6099d4 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 f623e1a..6d563d2 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 16401bb..f5f09b3 100644
--- a/test/core/surface/num_external_connectivity_watchers_test.c
+++ b/test/core/surface/num_external_connectivity_watchers_test.cc
@@ -168,9 +168,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 0c45135..ccb58ee 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 d5fd2db..6596a3a 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);
@@ -145,9 +145,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 cd8931e..ecd5314 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 4c185cd..08b8dca 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 775161e..a09aadb 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 acadcf6..d073f74 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 a2af83b..f950f8a 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,7 +131,7 @@
   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");
@@ -165,7 +167,7 @@
   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++) {
@@ -209,7 +211,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;
@@ -223,11 +226,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);
@@ -247,9 +250,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 0383408..bad7491 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 0946c05..27b4a1c 100644
--- a/test/core/transport/chttp2/hpack_parser_test.c
+++ b/test/core/transport/chttp2/hpack_parser_test.cc
@@ -32,7 +32,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 ae2583a..7df7b1b 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 f7124d2..e043078 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 11be880..6561028 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 2399b05..27b2049 100644
--- a/test/core/tsi/ssl_transport_security_test.c
+++ b/test/core/tsi/ssl_transport_security_test.cc
@@ -326,8 +326,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;
@@ -339,12 +339,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 =
@@ -352,11 +354,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 =
@@ -380,11 +384,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);
@@ -431,7 +436,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);
 }
@@ -440,7 +446,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);
 }
@@ -495,8 +502,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 27932a8..c1be1e9 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 329b237..454b79c 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. */
@@ -429,7 +433,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,
@@ -440,7 +444,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,
@@ -458,7 +462,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)];
   }
@@ -473,7 +478,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
@@ -548,8 +555,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 ed8ff85..1a04c1f 100644
--- a/test/core/tsi/transport_security_test_lib.h
+++ b/test/core/tsi/transport_security_test_lib.h
@@ -21,10 +21,6 @@
 
 #include "src/core/tsi/transport_security_interface.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
@@ -173,8 +169,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 72384f2..ebe74f1 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 8809f55..f3d0eaa 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 4246739..aebc1bf 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 7b94ac4..2c7301d 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 9c56e02..883c02e 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 38db729..de9150a 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 536045e..a673d6b 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 051d7e9..9761f46 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 611ecb3..e2d1562 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,8 @@
   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 +94,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 ca39638..78f1eee 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 cfe64f1..6f27ddd 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 b9ee77d..499e4ef 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 522bc9e..a4b3644 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 cf9a42e..a53565b 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 bc2157b..9300813 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 41649b8..3b9e261 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 7d0371b..a0ac4c5 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 std::vector;
 using grpc::SubProcess;
diff --git a/test/cpp/naming/resolver_component_tests_runner_invoker.cc b/test/cpp/naming/resolver_component_tests_runner_invoker.cc
index b143912..96f2e5a 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 c471344..5e26dd8 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`"
+    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`"
   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,