diff --git a/Makefile b/Makefile
index 59dfb3d525767306586e3368ed9f160bbe0331e3..b7b41c1a78db230087da0179c446d3f5d222ad55 100644
--- a/Makefile
+++ b/Makefile
@@ -858,6 +858,7 @@ timeout_encoding_test: $(BINDIR)/$(CONFIG)/timeout_encoding_test
 timer_heap_test: $(BINDIR)/$(CONFIG)/timer_heap_test
 timer_list_test: $(BINDIR)/$(CONFIG)/timer_list_test
 timers_test: $(BINDIR)/$(CONFIG)/timers_test
+transport_connectivity_state_test: $(BINDIR)/$(CONFIG)/transport_connectivity_state_test
 transport_metadata_test: $(BINDIR)/$(CONFIG)/transport_metadata_test
 transport_security_test: $(BINDIR)/$(CONFIG)/transport_security_test
 udp_server_test: $(BINDIR)/$(CONFIG)/udp_server_test
@@ -1882,12 +1883,983 @@ endif
 
 buildtests: buildtests_c buildtests_cxx buildtests_zookeeper
 
-buildtests_c: privatelibs_c $(BINDIR)/$(CONFIG)/alloc_test $(BINDIR)/$(CONFIG)/alpn_test $(BINDIR)/$(CONFIG)/bin_encoder_test $(BINDIR)/$(CONFIG)/channel_create_test $(BINDIR)/$(CONFIG)/chttp2_hpack_encoder_test $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test $(BINDIR)/$(CONFIG)/chttp2_stream_map_test $(BINDIR)/$(CONFIG)/chttp2_varint_test $(BINDIR)/$(CONFIG)/compression_test $(BINDIR)/$(CONFIG)/dualstack_socket_test $(BINDIR)/$(CONFIG)/endpoint_pair_test $(BINDIR)/$(CONFIG)/fd_conservation_posix_test $(BINDIR)/$(CONFIG)/fd_posix_test $(BINDIR)/$(CONFIG)/fling_client $(BINDIR)/$(CONFIG)/fling_server $(BINDIR)/$(CONFIG)/fling_stream_test $(BINDIR)/$(CONFIG)/fling_test $(BINDIR)/$(CONFIG)/gpr_avl_test $(BINDIR)/$(CONFIG)/gpr_cmdline_test $(BINDIR)/$(CONFIG)/gpr_cpu_test $(BINDIR)/$(CONFIG)/gpr_env_test $(BINDIR)/$(CONFIG)/gpr_file_test $(BINDIR)/$(CONFIG)/gpr_histogram_test $(BINDIR)/$(CONFIG)/gpr_host_port_test $(BINDIR)/$(CONFIG)/gpr_log_test $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test $(BINDIR)/$(CONFIG)/gpr_slice_test $(BINDIR)/$(CONFIG)/gpr_stack_lockfree_test $(BINDIR)/$(CONFIG)/gpr_string_test $(BINDIR)/$(CONFIG)/gpr_sync_test $(BINDIR)/$(CONFIG)/gpr_thd_test $(BINDIR)/$(CONFIG)/gpr_time_test $(BINDIR)/$(CONFIG)/gpr_tls_test $(BINDIR)/$(CONFIG)/gpr_useful_test $(BINDIR)/$(CONFIG)/grpc_auth_context_test $(BINDIR)/$(CONFIG)/grpc_base64_test $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test $(BINDIR)/$(CONFIG)/grpc_channel_args_test $(BINDIR)/$(CONFIG)/grpc_channel_stack_test $(BINDIR)/$(CONFIG)/grpc_completion_queue_test $(BINDIR)/$(CONFIG)/grpc_credentials_test $(BINDIR)/$(CONFIG)/grpc_invalid_channel_args_test $(BINDIR)/$(CONFIG)/grpc_json_token_test $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test $(BINDIR)/$(CONFIG)/grpc_security_connector_test $(BINDIR)/$(CONFIG)/hpack_parser_test $(BINDIR)/$(CONFIG)/hpack_table_test $(BINDIR)/$(CONFIG)/httpcli_format_request_test $(BINDIR)/$(CONFIG)/httpcli_parser_test $(BINDIR)/$(CONFIG)/httpcli_test $(BINDIR)/$(CONFIG)/init_test $(BINDIR)/$(CONFIG)/invalid_call_argument_test $(BINDIR)/$(CONFIG)/json_rewrite $(BINDIR)/$(CONFIG)/json_rewrite_test $(BINDIR)/$(CONFIG)/json_test $(BINDIR)/$(CONFIG)/lame_client_test $(BINDIR)/$(CONFIG)/lb_policies_test $(BINDIR)/$(CONFIG)/message_compress_test $(BINDIR)/$(CONFIG)/multiple_server_queues_test $(BINDIR)/$(CONFIG)/murmur_hash_test $(BINDIR)/$(CONFIG)/no_server_test $(BINDIR)/$(CONFIG)/resolve_address_test $(BINDIR)/$(CONFIG)/secure_endpoint_test $(BINDIR)/$(CONFIG)/server_chttp2_test $(BINDIR)/$(CONFIG)/set_initial_connect_string_test $(BINDIR)/$(CONFIG)/sockaddr_utils_test $(BINDIR)/$(CONFIG)/tcp_client_posix_test $(BINDIR)/$(CONFIG)/tcp_posix_test $(BINDIR)/$(CONFIG)/tcp_server_posix_test $(BINDIR)/$(CONFIG)/time_averaged_stats_test $(BINDIR)/$(CONFIG)/timeout_encoding_test $(BINDIR)/$(CONFIG)/timer_heap_test $(BINDIR)/$(CONFIG)/timer_list_test $(BINDIR)/$(CONFIG)/timers_test $(BINDIR)/$(CONFIG)/transport_metadata_test $(BINDIR)/$(CONFIG)/transport_security_test $(BINDIR)/$(CONFIG)/udp_server_test $(BINDIR)/$(CONFIG)/uri_parser_test $(BINDIR)/$(CONFIG)/workqueue_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_call_creds_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_compress_hpack_size_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_test $(BINDIR)/$(CONFIG)/h2_compress_payload_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_fakesec_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_call_creds_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_fakesec_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_fakesec_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_default_host_test $(BINDIR)/$(CONFIG)/h2_fakesec_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_fakesec_empty_batch_test $(BINDIR)/$(CONFIG)/h2_fakesec_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_fakesec_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_fakesec_hpack_size_test $(BINDIR)/$(CONFIG)/h2_fakesec_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_large_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_fakesec_max_message_length_test $(BINDIR)/$(CONFIG)/h2_fakesec_metadata_test $(BINDIR)/$(CONFIG)/h2_fakesec_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_fakesec_no_op_test $(BINDIR)/$(CONFIG)/h2_fakesec_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_fakesec_registered_call_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_fakesec_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_simple_request_test $(BINDIR)/$(CONFIG)/h2_fakesec_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full_call_creds_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full_default_host_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full_hpack_size_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full_metadata_test $(BINDIR)/$(CONFIG)/h2_full_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_full_no_op_test $(BINDIR)/$(CONFIG)/h2_full_payload_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_full+poll_hpack_size_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_full+poll_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_oauth2_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_call_creds_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_oauth2_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_oauth2_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_default_host_test $(BINDIR)/$(CONFIG)/h2_oauth2_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_oauth2_empty_batch_test $(BINDIR)/$(CONFIG)/h2_oauth2_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_oauth2_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_oauth2_hpack_size_test $(BINDIR)/$(CONFIG)/h2_oauth2_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_large_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_oauth2_max_message_length_test $(BINDIR)/$(CONFIG)/h2_oauth2_metadata_test $(BINDIR)/$(CONFIG)/h2_oauth2_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_oauth2_no_op_test $(BINDIR)/$(CONFIG)/h2_oauth2_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_oauth2_registered_call_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_oauth2_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_simple_request_test $(BINDIR)/$(CONFIG)/h2_oauth2_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_proxy_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_hpack_size_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_call_creds_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_hpack_size_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_ssl_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_hpack_size_test $(BINDIR)/$(CONFIG)/h2_ssl_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_ssl_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_hpack_size_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_call_creds_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_default_host_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_empty_batch_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_large_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_max_message_length_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_metadata_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_no_op_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_registered_call_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_request_test $(BINDIR)/$(CONFIG)/h2_ssl_proxy_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uchannel_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uchannel_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uchannel_call_creds_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_uchannel_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uchannel_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uchannel_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uchannel_default_host_test $(BINDIR)/$(CONFIG)/h2_uchannel_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uchannel_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uchannel_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uchannel_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uchannel_hpack_size_test $(BINDIR)/$(CONFIG)/h2_uchannel_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uchannel_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uchannel_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uchannel_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uchannel_metadata_test $(BINDIR)/$(CONFIG)/h2_uchannel_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_uchannel_no_op_test $(BINDIR)/$(CONFIG)/h2_uchannel_payload_test $(BINDIR)/$(CONFIG)/h2_uchannel_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uchannel_registered_call_test $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uchannel_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uchannel_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uchannel_simple_request_test $(BINDIR)/$(CONFIG)/h2_uchannel_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds_hpack_size_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_test $(BINDIR)/$(CONFIG)/h2_uds_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_test $(BINDIR)/$(CONFIG)/h2_uds_payload_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_call_creds_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_with_status_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_test $(BINDIR)/$(CONFIG)/h2_uds+poll_hpack_size_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_test $(BINDIR)/$(CONFIG)/h2_uds+poll_negative_deadline_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_test $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_full_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_default_host_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uchannel_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_with_status_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_hpack_size_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_negative_deadline_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_nosec_test $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_nosec_test $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test $(BINDIR)/$(CONFIG)/headers_bad_client_test $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test $(BINDIR)/$(CONFIG)/simple_request_bad_client_test $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test
+buildtests_c: privatelibs_c \
+  $(BINDIR)/$(CONFIG)/alloc_test \
+  $(BINDIR)/$(CONFIG)/alpn_test \
+  $(BINDIR)/$(CONFIG)/bin_encoder_test \
+  $(BINDIR)/$(CONFIG)/channel_create_test \
+  $(BINDIR)/$(CONFIG)/chttp2_hpack_encoder_test \
+  $(BINDIR)/$(CONFIG)/chttp2_status_conversion_test \
+  $(BINDIR)/$(CONFIG)/chttp2_stream_map_test \
+  $(BINDIR)/$(CONFIG)/chttp2_varint_test \
+  $(BINDIR)/$(CONFIG)/compression_test \
+  $(BINDIR)/$(CONFIG)/dualstack_socket_test \
+  $(BINDIR)/$(CONFIG)/endpoint_pair_test \
+  $(BINDIR)/$(CONFIG)/fd_conservation_posix_test \
+  $(BINDIR)/$(CONFIG)/fd_posix_test \
+  $(BINDIR)/$(CONFIG)/fling_client \
+  $(BINDIR)/$(CONFIG)/fling_server \
+  $(BINDIR)/$(CONFIG)/fling_stream_test \
+  $(BINDIR)/$(CONFIG)/fling_test \
+  $(BINDIR)/$(CONFIG)/gpr_avl_test \
+  $(BINDIR)/$(CONFIG)/gpr_cmdline_test \
+  $(BINDIR)/$(CONFIG)/gpr_cpu_test \
+  $(BINDIR)/$(CONFIG)/gpr_env_test \
+  $(BINDIR)/$(CONFIG)/gpr_file_test \
+  $(BINDIR)/$(CONFIG)/gpr_histogram_test \
+  $(BINDIR)/$(CONFIG)/gpr_host_port_test \
+  $(BINDIR)/$(CONFIG)/gpr_log_test \
+  $(BINDIR)/$(CONFIG)/gpr_slice_buffer_test \
+  $(BINDIR)/$(CONFIG)/gpr_slice_test \
+  $(BINDIR)/$(CONFIG)/gpr_stack_lockfree_test \
+  $(BINDIR)/$(CONFIG)/gpr_string_test \
+  $(BINDIR)/$(CONFIG)/gpr_sync_test \
+  $(BINDIR)/$(CONFIG)/gpr_thd_test \
+  $(BINDIR)/$(CONFIG)/gpr_time_test \
+  $(BINDIR)/$(CONFIG)/gpr_tls_test \
+  $(BINDIR)/$(CONFIG)/gpr_useful_test \
+  $(BINDIR)/$(CONFIG)/grpc_auth_context_test \
+  $(BINDIR)/$(CONFIG)/grpc_base64_test \
+  $(BINDIR)/$(CONFIG)/grpc_byte_buffer_reader_test \
+  $(BINDIR)/$(CONFIG)/grpc_channel_args_test \
+  $(BINDIR)/$(CONFIG)/grpc_channel_stack_test \
+  $(BINDIR)/$(CONFIG)/grpc_completion_queue_test \
+  $(BINDIR)/$(CONFIG)/grpc_credentials_test \
+  $(BINDIR)/$(CONFIG)/grpc_invalid_channel_args_test \
+  $(BINDIR)/$(CONFIG)/grpc_json_token_test \
+  $(BINDIR)/$(CONFIG)/grpc_jwt_verifier_test \
+  $(BINDIR)/$(CONFIG)/grpc_security_connector_test \
+  $(BINDIR)/$(CONFIG)/hpack_parser_test \
+  $(BINDIR)/$(CONFIG)/hpack_table_test \
+  $(BINDIR)/$(CONFIG)/httpcli_format_request_test \
+  $(BINDIR)/$(CONFIG)/httpcli_parser_test \
+  $(BINDIR)/$(CONFIG)/httpcli_test \
+  $(BINDIR)/$(CONFIG)/init_test \
+  $(BINDIR)/$(CONFIG)/invalid_call_argument_test \
+  $(BINDIR)/$(CONFIG)/json_rewrite \
+  $(BINDIR)/$(CONFIG)/json_rewrite_test \
+  $(BINDIR)/$(CONFIG)/json_test \
+  $(BINDIR)/$(CONFIG)/lame_client_test \
+  $(BINDIR)/$(CONFIG)/lb_policies_test \
+  $(BINDIR)/$(CONFIG)/message_compress_test \
+  $(BINDIR)/$(CONFIG)/multiple_server_queues_test \
+  $(BINDIR)/$(CONFIG)/murmur_hash_test \
+  $(BINDIR)/$(CONFIG)/no_server_test \
+  $(BINDIR)/$(CONFIG)/resolve_address_test \
+  $(BINDIR)/$(CONFIG)/secure_endpoint_test \
+  $(BINDIR)/$(CONFIG)/server_chttp2_test \
+  $(BINDIR)/$(CONFIG)/set_initial_connect_string_test \
+  $(BINDIR)/$(CONFIG)/sockaddr_utils_test \
+  $(BINDIR)/$(CONFIG)/tcp_client_posix_test \
+  $(BINDIR)/$(CONFIG)/tcp_posix_test \
+  $(BINDIR)/$(CONFIG)/tcp_server_posix_test \
+  $(BINDIR)/$(CONFIG)/time_averaged_stats_test \
+  $(BINDIR)/$(CONFIG)/timeout_encoding_test \
+  $(BINDIR)/$(CONFIG)/timer_heap_test \
+  $(BINDIR)/$(CONFIG)/timer_list_test \
+  $(BINDIR)/$(CONFIG)/timers_test \
+  $(BINDIR)/$(CONFIG)/transport_connectivity_state_test \
+  $(BINDIR)/$(CONFIG)/transport_metadata_test \
+  $(BINDIR)/$(CONFIG)/transport_security_test \
+  $(BINDIR)/$(CONFIG)/udp_server_test \
+  $(BINDIR)/$(CONFIG)/uri_parser_test \
+  $(BINDIR)/$(CONFIG)/workqueue_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_fakesec_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_full_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_full_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_full_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_full_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_full_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_full_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_full_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_full_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_oauth2_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl+poll_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_ssl_proxy_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_default_host_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_call_creds_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_with_status_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_hpack_size_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_negative_deadline_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_channel_connectivity_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_default_host_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_disappearing_server_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_simple_delayed_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_compress_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_channel_connectivity_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_default_host_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_disappearing_server_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_simple_delayed_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_channel_connectivity_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_default_host_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_disappearing_server_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_simple_delayed_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_full+poll_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_default_host_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_disappearing_server_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_simple_delayed_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_proxy_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair+trace_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_sockpair_1byte_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_channel_connectivity_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_default_host_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_disappearing_server_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_simple_delayed_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uchannel_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_channel_connectivity_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_disappearing_server_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_simple_delayed_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_bad_hostname_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_binary_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_accept_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_client_done_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_after_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_before_invoke_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_in_a_vacuum_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_cancel_with_status_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_census_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_channel_connectivity_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_compressed_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_disappearing_server_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_empty_batch_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_graceful_server_shutdown_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_high_initial_seqno_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_hpack_size_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_invoke_large_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_large_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_max_concurrent_streams_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_max_message_length_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_negative_deadline_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_no_op_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_ping_pong_streaming_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_registered_call_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_flags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_request_with_payload_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_server_finishes_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_calls_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_shutdown_finishes_tags_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_delayed_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_simple_request_nosec_test \
+  $(BINDIR)/$(CONFIG)/h2_uds+poll_trailing_metadata_nosec_test \
+  $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test \
+  $(BINDIR)/$(CONFIG)/headers_bad_client_test \
+  $(BINDIR)/$(CONFIG)/initial_settings_frame_bad_client_test \
+  $(BINDIR)/$(CONFIG)/simple_request_bad_client_test \
+  $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test \
+
+
+buildtests_cxx: buildtests_zookeeper privatelibs_cxx \
+  $(BINDIR)/$(CONFIG)/async_end2end_test \
+  $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test \
+  $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test \
+  $(BINDIR)/$(CONFIG)/auth_property_iterator_test \
+  $(BINDIR)/$(CONFIG)/channel_arguments_test \
+  $(BINDIR)/$(CONFIG)/cli_call_test \
+  $(BINDIR)/$(CONFIG)/client_crash_test \
+  $(BINDIR)/$(CONFIG)/client_crash_test_server \
+  $(BINDIR)/$(CONFIG)/credentials_test \
+  $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test \
+  $(BINDIR)/$(CONFIG)/cxx_slice_test \
+  $(BINDIR)/$(CONFIG)/cxx_string_ref_test \
+  $(BINDIR)/$(CONFIG)/cxx_time_test \
+  $(BINDIR)/$(CONFIG)/end2end_test \
+  $(BINDIR)/$(CONFIG)/generic_end2end_test \
+  $(BINDIR)/$(CONFIG)/grpc_cli \
+  $(BINDIR)/$(CONFIG)/interop_client \
+  $(BINDIR)/$(CONFIG)/interop_server \
+  $(BINDIR)/$(CONFIG)/interop_test \
+  $(BINDIR)/$(CONFIG)/metrics_client \
+  $(BINDIR)/$(CONFIG)/mock_test \
+  $(BINDIR)/$(CONFIG)/qps_interarrival_test \
+  $(BINDIR)/$(CONFIG)/qps_openloop_test \
+  $(BINDIR)/$(CONFIG)/qps_test \
+  $(BINDIR)/$(CONFIG)/reconnect_interop_client \
+  $(BINDIR)/$(CONFIG)/reconnect_interop_server \
+  $(BINDIR)/$(CONFIG)/secure_auth_context_test \
+  $(BINDIR)/$(CONFIG)/secure_sync_unary_ping_pong_test \
+  $(BINDIR)/$(CONFIG)/server_crash_test \
+  $(BINDIR)/$(CONFIG)/server_crash_test_client \
+  $(BINDIR)/$(CONFIG)/shutdown_test \
+  $(BINDIR)/$(CONFIG)/status_test \
+  $(BINDIR)/$(CONFIG)/streaming_throughput_test \
+  $(BINDIR)/$(CONFIG)/stress_test \
+  $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test \
+  $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test \
+  $(BINDIR)/$(CONFIG)/thread_stress_test \
 
-buildtests_cxx: buildtests_zookeeper privatelibs_cxx $(BINDIR)/$(CONFIG)/async_end2end_test $(BINDIR)/$(CONFIG)/async_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/async_unary_ping_pong_test $(BINDIR)/$(CONFIG)/auth_property_iterator_test $(BINDIR)/$(CONFIG)/channel_arguments_test $(BINDIR)/$(CONFIG)/cli_call_test $(BINDIR)/$(CONFIG)/client_crash_test $(BINDIR)/$(CONFIG)/client_crash_test_server $(BINDIR)/$(CONFIG)/credentials_test $(BINDIR)/$(CONFIG)/cxx_byte_buffer_test $(BINDIR)/$(CONFIG)/cxx_slice_test $(BINDIR)/$(CONFIG)/cxx_string_ref_test $(BINDIR)/$(CONFIG)/cxx_time_test $(BINDIR)/$(CONFIG)/end2end_test $(BINDIR)/$(CONFIG)/generic_end2end_test $(BINDIR)/$(CONFIG)/grpc_cli $(BINDIR)/$(CONFIG)/interop_client $(BINDIR)/$(CONFIG)/interop_server $(BINDIR)/$(CONFIG)/interop_test $(BINDIR)/$(CONFIG)/metrics_client $(BINDIR)/$(CONFIG)/mock_test $(BINDIR)/$(CONFIG)/qps_interarrival_test $(BINDIR)/$(CONFIG)/qps_openloop_test $(BINDIR)/$(CONFIG)/qps_test $(BINDIR)/$(CONFIG)/reconnect_interop_client $(BINDIR)/$(CONFIG)/reconnect_interop_server $(BINDIR)/$(CONFIG)/secure_auth_context_test $(BINDIR)/$(CONFIG)/secure_sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/server_crash_test $(BINDIR)/$(CONFIG)/server_crash_test_client $(BINDIR)/$(CONFIG)/shutdown_test $(BINDIR)/$(CONFIG)/status_test $(BINDIR)/$(CONFIG)/streaming_throughput_test $(BINDIR)/$(CONFIG)/stress_test $(BINDIR)/$(CONFIG)/sync_streaming_ping_pong_test $(BINDIR)/$(CONFIG)/sync_unary_ping_pong_test $(BINDIR)/$(CONFIG)/thread_stress_test
 
 ifeq ($(HAS_ZOOKEEPER),true)
-buildtests_zookeeper: privatelibs_zookeeper $(BINDIR)/$(CONFIG)/zookeeper_test
+buildtests_zookeeper: privatelibs_zookeeper \
+ $(BINDIR)/$(CONFIG)/zookeeper_test \
+
 else
 buildtests_zookeeper:
 endif
@@ -2040,6 +3012,8 @@ test_c: buildtests_c
 	$(Q) $(BINDIR)/$(CONFIG)/timer_list_test || ( echo test timer_list_test failed ; exit 1 )
 	$(E) "[RUN]     Testing timers_test"
 	$(Q) $(BINDIR)/$(CONFIG)/timers_test || ( echo test timers_test failed ; exit 1 )
+	$(E) "[RUN]     Testing transport_connectivity_state_test"
+	$(Q) $(BINDIR)/$(CONFIG)/transport_connectivity_state_test || ( echo test transport_connectivity_state_test failed ; exit 1 )
 	$(E) "[RUN]     Testing transport_metadata_test"
 	$(Q) $(BINDIR)/$(CONFIG)/transport_metadata_test || ( echo test transport_metadata_test failed ; exit 1 )
 	$(E) "[RUN]     Testing transport_security_test"
@@ -10585,6 +11559,35 @@ endif
 endif
 
 
+TRANSPORT_CONNECTIVITY_STATE_TEST_SRC = \
+    test/core/transport/connectivity_state_test.c \
+
+TRANSPORT_CONNECTIVITY_STATE_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(TRANSPORT_CONNECTIVITY_STATE_TEST_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/transport_connectivity_state_test: openssl_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/transport_connectivity_state_test: $(TRANSPORT_CONNECTIVITY_STATE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+	$(E) "[LD]      Linking $@"
+	$(Q) mkdir -p `dirname $@`
+	$(Q) $(LD) $(LDFLAGS) $(TRANSPORT_CONNECTIVITY_STATE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/transport_connectivity_state_test
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/core/transport/connectivity_state_test.o:  $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+deps_transport_connectivity_state_test: $(TRANSPORT_CONNECTIVITY_STATE_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TRANSPORT_CONNECTIVITY_STATE_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
 TRANSPORT_METADATA_TEST_SRC = \
     test/core/transport/metadata_test.c \
 
diff --git a/build.yaml b/build.yaml
index 740ddebd7a452eab668e857cdf072dd0af2f4673..0b285121d0f888c11662e427ab42eed50c81fa8a 100644
--- a/build.yaml
+++ b/build.yaml
@@ -1621,6 +1621,16 @@ targets:
   - grpc
   - gpr_test_util
   - gpr
+- name: transport_connectivity_state_test
+  build: test
+  language: c
+  src:
+  - test/core/transport/connectivity_state_test.c
+  deps:
+  - grpc_test_util
+  - grpc
+  - gpr_test_util
+  - gpr
 - name: transport_metadata_test
   build: test
   language: c
diff --git a/include/grpc++/impl/rpc_service_method.h b/include/grpc++/impl/rpc_service_method.h
index fcb0b7ccce67b27f4923bcf1124be066c7128a86..b203c8f53ae281c0ded0ae5a5c3d1291bb88fef5 100644
--- a/include/grpc++/impl/rpc_service_method.h
+++ b/include/grpc++/impl/rpc_service_method.h
@@ -34,6 +34,7 @@
 #ifndef GRPCXX_IMPL_RPC_SERVICE_METHOD_H
 #define GRPCXX_IMPL_RPC_SERVICE_METHOD_H
 
+#include <climits>
 #include <functional>
 #include <map>
 #include <memory>
@@ -251,7 +252,11 @@ class RpcService {
   void AddMethod(RpcServiceMethod* method) { methods_.emplace_back(method); }
 
   RpcServiceMethod* GetMethod(int i) { return methods_[i].get(); }
-  int GetMethodCount() const { return methods_.size(); }
+  int GetMethodCount() const {
+    // On win x64, int is only 32bit
+    GPR_ASSERT(methods_.size() <= INT_MAX);
+    return (int)methods_.size();
+  }
 
  private:
   std::vector<std::unique_ptr<RpcServiceMethod>> methods_;
diff --git a/src/core/iomgr/tcp_server_posix.c b/src/core/iomgr/tcp_server_posix.c
index a89ee02d349abfce4f844dc067ac3b9e7c5be953..b758702da8e11416b2558715f9c8dfd6cf702acf 100644
--- a/src/core/iomgr/tcp_server_posix.c
+++ b/src/core/iomgr/tcp_server_posix.c
@@ -411,7 +411,6 @@ static grpc_tcp_listener *add_socket_to_server(grpc_tcp_server *s, int fd,
 
 grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
                                             const void *addr, size_t addr_len) {
-  int allocated_port = -1;
   grpc_tcp_listener *sp;
   grpc_tcp_listener *sp2 = NULL;
   int fd;
@@ -464,14 +463,13 @@ grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
     addr_len = sizeof(wild6);
     fd = grpc_create_dualstack_socket(addr, SOCK_STREAM, 0, &dsmode);
     sp = add_socket_to_server(s, fd, addr, addr_len);
-    allocated_port = sp->port;
     if (fd >= 0 && dsmode == GRPC_DSMODE_DUALSTACK) {
       goto done;
     }
 
     /* If we didn't get a dualstack socket, also listen on 0.0.0.0. */
-    if (port == 0 && allocated_port > 0) {
-      grpc_sockaddr_set_port((struct sockaddr *)&wild4, allocated_port);
+    if (port == 0 && sp != NULL) {
+      grpc_sockaddr_set_port((struct sockaddr *)&wild4, sp->port);
       sp2 = sp;
     }
     addr = (struct sockaddr *)&wild4;
@@ -488,8 +486,8 @@ grpc_tcp_listener *grpc_tcp_server_add_port(grpc_tcp_server *s,
     addr_len = sizeof(addr4_copy);
   }
   sp = add_socket_to_server(s, fd, addr, addr_len);
-  sp->sibling = sp2;
-  if (sp2) sp2->is_sibling = 1;
+  if (sp != NULL) sp->sibling = sp2;
+  if (sp2 != NULL) sp2->is_sibling = 1;
 
 done:
   gpr_free(allocated_addr);
diff --git a/src/core/iomgr/tcp_windows.c b/src/core/iomgr/tcp_windows.c
index 5ff78231bd737c2a5ce62c178edd388ee1b73147..6915cb2f4931dcec41d2db9998e0eeeeefc18398 100644
--- a/src/core/iomgr/tcp_windows.c
+++ b/src/core/iomgr/tcp_windows.c
@@ -197,7 +197,7 @@ static void win_read(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
 
   tcp->read_slice = gpr_slice_malloc(8192);
 
-  buffer.len = GPR_SLICE_LENGTH(tcp->read_slice);
+  buffer.len = (ULONG)GPR_SLICE_LENGTH(tcp->read_slice);  // we know slice size fits in 32bit.
   buffer.buf = (char *)GPR_SLICE_START_PTR(tcp->read_slice);
 
   TCP_REF(tcp, "read");
@@ -273,6 +273,7 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
   WSABUF local_buffers[16];
   WSABUF *allocated = NULL;
   WSABUF *buffers = local_buffers;
+  size_t len;
 
   if (tcp->shutting_down) {
     grpc_exec_ctx_enqueue(exec_ctx, cb, 0);
@@ -281,19 +282,21 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
 
   tcp->write_cb = cb;
   tcp->write_slices = slices;
-
+  GPR_ASSERT(tcp->write_slices->count <= UINT_MAX);
   if (tcp->write_slices->count > GPR_ARRAY_SIZE(local_buffers)) {
     buffers = (WSABUF *)gpr_malloc(sizeof(WSABUF) * tcp->write_slices->count);
     allocated = buffers;
   }
 
   for (i = 0; i < tcp->write_slices->count; i++) {
-    buffers[i].len = GPR_SLICE_LENGTH(tcp->write_slices->slices[i]);
+    len = GPR_SLICE_LENGTH(tcp->write_slices->slices[i]);
+    GPR_ASSERT(len <= ULONG_MAX);
+    buffers[i].len = (ULONG) len;
     buffers[i].buf = (char *)GPR_SLICE_START_PTR(tcp->write_slices->slices[i]);
   }
 
   /* First, let's try a synchronous, non-blocking write. */
-  status = WSASend(socket->socket, buffers, tcp->write_slices->count,
+  status = WSASend(socket->socket, buffers, (DWORD)tcp->write_slices->count,
                    &bytes_sent, 0, NULL, NULL);
   info->wsa_error = status == 0 ? 0 : WSAGetLastError();
 
@@ -322,7 +325,7 @@ static void win_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
   /* If we got a WSAEWOULDBLOCK earlier, then we need to re-do the same
      operation, this time asynchronously. */
   memset(&socket->write_info.overlapped, 0, sizeof(OVERLAPPED));
-  status = WSASend(socket->socket, buffers, tcp->write_slices->count,
+  status = WSASend(socket->socket, buffers, (DWORD)tcp->write_slices->count,
                    &bytes_sent, 0, &socket->write_info.overlapped, NULL);
   if (allocated) gpr_free(allocated);
 
diff --git a/src/core/security/credentials.h b/src/core/security/credentials.h
index 6d45895e77ed641585c9466f1dfac2ca7518f514..3cd652cd574db505e471c7f229e1430e28715bbc 100644
--- a/src/core/security/credentials.h
+++ b/src/core/security/credentials.h
@@ -93,6 +93,14 @@ typedef enum {
 /* It is the caller's responsibility to gpr_free the result if not NULL. */
 char *grpc_get_well_known_google_credentials_file_path(void);
 
+/* Implementation function for the different platforms. */
+char *grpc_get_well_known_google_credentials_file_path_impl(void);
+
+/* Override for testing only. Not thread-safe */
+typedef char *(*grpc_well_known_credentials_path_getter)(void);
+void grpc_override_well_known_credentials_path_getter(
+    grpc_well_known_credentials_path_getter getter);
+
 /* --- grpc_channel_credentials. --- */
 
 typedef struct {
@@ -201,6 +209,7 @@ grpc_credentials_status
 grpc_oauth2_token_fetcher_credentials_parse_server_response(
     const struct grpc_httpcli_response *response,
     grpc_credentials_md_store **token_md, gpr_timespec *token_lifetime);
+
 void grpc_flush_cached_google_default_credentials(void);
 
 /* Metadata-only credentials with the specified key and value where
diff --git a/src/core/security/credentials_posix.c b/src/core/security/credentials_posix.c
index 20f67a7f14942efc2f424055dfb86ddb8db30f0a..0c92bd4a96bcfa741284b7985e16b1e1ddbf28e7 100644
--- a/src/core/security/credentials_posix.c
+++ b/src/core/security/credentials_posix.c
@@ -44,7 +44,7 @@
 #include "src/core/support/env.h"
 #include "src/core/support/string.h"
 
-char *grpc_get_well_known_google_credentials_file_path(void) {
+char *grpc_get_well_known_google_credentials_file_path_impl(void) {
   char *result = NULL;
   char *home = gpr_getenv("HOME");
   if (home == NULL) {
diff --git a/src/core/security/credentials_win32.c b/src/core/security/credentials_win32.c
index 92dfd9bdfe624aa34c0caedb7c7c22c8e9778932..8ee9f706a1f2d90d02cd111f5cdd9bd17824e69a 100644
--- a/src/core/security/credentials_win32.c
+++ b/src/core/security/credentials_win32.c
@@ -44,7 +44,7 @@
 #include "src/core/support/env.h"
 #include "src/core/support/string.h"
 
-char *grpc_get_well_known_google_credentials_file_path(void) {
+char *grpc_get_well_known_google_credentials_file_path_impl(void) {
   char *result = NULL;
   char *appdata_path = gpr_getenv("APPDATA");
   if (appdata_path == NULL) {
diff --git a/src/core/security/google_default_credentials.c b/src/core/security/google_default_credentials.c
index 6a54fe4e47cd37feade3568605fb5ce080eb66e0..5385e41130f68ae4d71ea4cbdb0e86e0d3c14984 100644
--- a/src/core/security/google_default_credentials.c
+++ b/src/core/security/google_default_credentials.c
@@ -241,5 +241,20 @@ void grpc_flush_cached_google_default_credentials(void) {
     grpc_channel_credentials_unref(default_credentials);
     default_credentials = NULL;
   }
+  compute_engine_detection_done = 0;
   gpr_mu_unlock(&g_mu);
 }
+
+/* -- Well known credentials path. -- */
+
+static grpc_well_known_credentials_path_getter creds_path_getter = NULL;
+
+char *grpc_get_well_known_google_credentials_file_path(void) {
+  if (creds_path_getter != NULL) return creds_path_getter();
+  return grpc_get_well_known_google_credentials_file_path_impl();
+}
+
+void grpc_override_well_known_credentials_path_getter(
+    grpc_well_known_credentials_path_getter getter) {
+  creds_path_getter = getter;
+}
diff --git a/src/core/security/json_token.c b/src/core/security/json_token.c
index 021912f3337bc602de5e2f1b47dbd68bee8a2475..92775d885d244ae09e4e01ad329003b94561e8b7 100644
--- a/src/core/security/json_token.c
+++ b/src/core/security/json_token.c
@@ -215,8 +215,8 @@ static char *encoded_jwt_claim(const grpc_auth_json_key *json_key,
     gpr_log(GPR_INFO, "Cropping token lifetime to maximum allowed value.");
     expiration = gpr_time_add(now, grpc_max_auth_token_lifetime);
   }
-  gpr_ltoa(now.tv_sec, now_str);
-  gpr_ltoa(expiration.tv_sec, expiration_str);
+  gpr_int64toa(now.tv_sec, now_str);
+  gpr_int64toa(expiration.tv_sec, expiration_str);
 
   child =
       create_child(NULL, json, "iss", json_key->client_email, GRPC_JSON_STRING);
diff --git a/src/core/support/string.c b/src/core/support/string.c
index e0ffeb8a4afecfb6847688f9e1058ee10090df2a..46a7ca3d462fca16f47210db6313139ed09b9b73 100644
--- a/src/core/support/string.c
+++ b/src/core/support/string.c
@@ -153,8 +153,8 @@ void gpr_reverse_bytes(char *str, int len) {
 }
 
 int gpr_ltoa(long value, char *string) {
+  long sign;
   int i = 0;
-  int neg = value < 0;
 
   if (value == 0) {
     string[0] = '0';
@@ -162,12 +162,33 @@ int gpr_ltoa(long value, char *string) {
     return 1;
   }
 
-  if (neg) value = -value;
+  sign = value < 0 ? -1 : 1;
   while (value) {
-    string[i++] = (char)('0' + value % 10);
+    string[i++] = (char)('0' + sign * (value % 10));
     value /= 10;
   }
-  if (neg) string[i++] = '-';
+  if (sign < 0) string[i++] = '-';
+  gpr_reverse_bytes(string, i);
+  string[i] = 0;
+  return i;
+}
+
+int gpr_int64toa(gpr_int64 value, char *string) {
+  gpr_int64 sign;
+  int i = 0;
+
+  if (value == 0) {
+    string[0] = '0';
+    string[1] = 0;
+    return 1;
+  }
+
+  sign = value < 0 ? -1 : 1;
+  while (value) {
+    string[i++] = (char)('0' + sign * (value % 10));
+    value /= 10;
+  }
+  if (sign < 0) string[i++] = '-';
   gpr_reverse_bytes(string, i);
   string[i] = 0;
   return i;
diff --git a/src/core/support/string.h b/src/core/support/string.h
index a28e00fd3ec5ab21924af157f72319c4fae51de8..9b604ac5bf59dd5217db356107d0da37c131fd2f 100644
--- a/src/core/support/string.h
+++ b/src/core/support/string.h
@@ -70,6 +70,16 @@ int gpr_parse_bytes_to_uint32(const char *data, size_t length,
    output must be at least GPR_LTOA_MIN_BUFSIZE bytes long. */
 int gpr_ltoa(long value, char *output);
 
+/* Minimum buffer size for calling int64toa */
+#define GPR_INT64TOA_MIN_BUFSIZE (3 * sizeof(gpr_int64))
+
+/* Convert an int64 to a string in base 10; returns the length of the
+output string (or 0 on failure).
+output must be at least GPR_INT64TOA_MIN_BUFSIZE bytes long.
+NOTE: This function ensures sufficient bit width even on Win x64,
+where long is 32bit is size.*/
+int gpr_int64toa(gpr_int64 value, char *output);
+
 /* Reverse a run of bytes */
 void gpr_reverse_bytes(char *str, int len);
 
diff --git a/src/core/surface/init.c b/src/core/surface/init.c
index e0106d8f2bb8c2c5be3954ac486bbccd3d527ca6..82027af651ff8ff4c462544e55f443ddc0df05fd 100644
--- a/src/core/surface/init.c
+++ b/src/core/surface/init.c
@@ -147,6 +147,7 @@ void grpc_shutdown(void) {
     gpr_timers_global_destroy();
     grpc_tracer_shutdown();
     grpc_resolver_registry_shutdown();
+    grpc_lb_policy_registry_shutdown();
     for (i = 0; i < g_number_of_plugins; i++) {
       if (g_all_of_the_plugins[i].destroy != NULL) {
         g_all_of_the_plugins[i].destroy();
diff --git a/src/core/transport/chttp2/timeout_encoding.c b/src/core/transport/chttp2/timeout_encoding.c
index 8a9b290ecb9b0a8c6f8f1adb895caa4cfc7029a9..cf81c18a20bbf679231c1bbe6d49d6533149a3c9 100644
--- a/src/core/transport/chttp2/timeout_encoding.c
+++ b/src/core/transport/chttp2/timeout_encoding.c
@@ -36,6 +36,7 @@
 #include <stdio.h>
 #include <string.h>
 
+#include <grpc/support/port_platform.h>
 #include "src/core/support/string.h"
 
 static int round_up(int x, int divisor) {
@@ -57,13 +58,13 @@ static int round_up_to_three_sig_figs(int x) {
 /* encode our minimum viable timeout value */
 static void enc_tiny(char *buffer) { memcpy(buffer, "1n", 3); }
 
-static void enc_ext(char *buffer, long value, char ext) {
-  int n = gpr_ltoa(value, buffer);
+static void enc_ext(char *buffer, gpr_int64 value, char ext) {
+  int n = gpr_int64toa(value, buffer);
   buffer[n] = ext;
   buffer[n + 1] = 0;
 }
 
-static void enc_seconds(char *buffer, long sec) {
+static void enc_seconds(char *buffer, gpr_int64 sec) {
   if (sec % 3600 == 0) {
     enc_ext(buffer, sec / 3600, 'H');
   } else if (sec % 60 == 0) {
diff --git a/src/core/transport/connectivity_state.c b/src/core/transport/connectivity_state.c
index 09b298c131b6dab8b2f7741712cb3445b20dd32a..b001af7e35755270ff8c0bdf66aac3016588912e 100644
--- a/src/core/transport/connectivity_state.c
+++ b/src/core/transport/connectivity_state.c
@@ -54,8 +54,7 @@ const char *grpc_connectivity_state_name(grpc_connectivity_state state) {
     case GRPC_CHANNEL_FATAL_FAILURE:
       return "FATAL_FAILURE";
   }
-  abort();
-  return "UNKNOWN";
+  GPR_UNREACHABLE_CODE(return "UNKNOWN");
 }
 
 void grpc_connectivity_state_init(grpc_connectivity_state_tracker *tracker,
diff --git a/src/core/transport/connectivity_state.h b/src/core/transport/connectivity_state.h
index 119b1c1554db07a65814e46002ad09e7f3173771..af2734c01649e679f63aafce6f46e354d033a316 100644
--- a/src/core/transport/connectivity_state.h
+++ b/src/core/transport/connectivity_state.h
@@ -57,6 +57,8 @@ typedef struct {
 
 extern int grpc_connectivity_state_trace;
 
+const char *grpc_connectivity_state_name(grpc_connectivity_state state);
+
 void grpc_connectivity_state_init(grpc_connectivity_state_tracker *tracker,
                                   grpc_connectivity_state init_state,
                                   const char *name);
diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc
index b1330fde7f6541ddd55cfb9fac841228f3d45383..898a1d4f5813935839e047f889527fa4bf485067 100644
--- a/src/cpp/proto/proto_utils.cc
+++ b/src/cpp/proto/proto_utils.cc
@@ -33,6 +33,8 @@
 
 #include <grpc++/impl/proto_utils.h>
 
+#include <climits>
+
 #include <grpc/grpc.h>
 #include <grpc/byte_buffer.h>
 #include <grpc/byte_buffer_reader.h>
@@ -70,7 +72,9 @@ class GrpcBufferWriter GRPC_FINAL
       slice_ = gpr_slice_malloc(block_size_);
     }
     *data = GPR_SLICE_START_PTR(slice_);
-    byte_count_ += * size = GPR_SLICE_LENGTH(slice_);
+    // On win x64, int is only 32bit
+    GPR_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
+    byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
     gpr_slice_buffer_add(slice_buffer_, slice_);
     return true;
   }
@@ -124,7 +128,9 @@ class GrpcBufferReader GRPC_FINAL
     }
     gpr_slice_unref(slice_);
     *data = GPR_SLICE_START_PTR(slice_);
-    byte_count_ += * size = GPR_SLICE_LENGTH(slice_);
+    // On win x64, int is only 32bit
+    GPR_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
+    byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
     return true;
   }
 
diff --git a/src/csharp/Grpc.Core.Tests/ChannelTest.cs b/src/csharp/Grpc.Core.Tests/ChannelTest.cs
index f4ae9abefd803002a91685a86400260b471824bc..ed0ec14df5c366a894e9e719c818e76a81d4abca 100644
--- a/src/csharp/Grpc.Core.Tests/ChannelTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ChannelTest.cs
@@ -47,6 +47,17 @@ namespace Grpc.Core.Tests
             Assert.Throws(typeof(ArgumentNullException), () => new Channel(null, ChannelCredentials.Insecure));
         }
 
+        [Test]
+        public void Constructor_RejectsDuplicateOptions()
+        {
+            var options = new ChannelOption[]
+            {
+                new ChannelOption(ChannelOptions.PrimaryUserAgentString, "ABC"),
+                new ChannelOption(ChannelOptions.PrimaryUserAgentString, "XYZ")
+            };
+            Assert.Throws(typeof(ArgumentException), () => new Channel("127.0.0.1", ChannelCredentials.Insecure, options));
+        }
+
         [Test]
         public void State_IdleAfterCreation()
         {
diff --git a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
index 25a5a27c8e3f00ac7b689e79825f6bbce5d98e83..b683751bc037197aa46a235bc38dbf07dd266303 100644
--- a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
@@ -201,7 +201,7 @@ namespace Grpc.Core.Tests
             Assert.AreEqual(headers[1].Key, trailers[1].Key);
             CollectionAssert.AreEqual(headers[1].ValueBytes, trailers[1].ValueBytes);
         }
-            
+
         [Test]
         public void UnknownMethodHandler()
         {
@@ -218,18 +218,6 @@ namespace Grpc.Core.Tests
             Assert.AreEqual(StatusCode.Unimplemented, ex.Status.StatusCode);
         }
 
-        [Test]
-        public void UserAgentStringPresent()
-        {
-            helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
-            {
-                return context.RequestHeaders.Where(entry => entry.Key == "user-agent").Single().Value;
-            });
-
-            string userAgent = Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "abc");
-            Assert.IsTrue(userAgent.StartsWith("grpc-csharp/"));
-        }
-
         [Test]
         public void PeerInfoPresent()
         {
diff --git a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
index e5ffa319895dee48029bf8dbd709855e32c5e7cc..70b83f7fb14f374b939c266ef0457a9bebb2ca61 100644
--- a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
+++ b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
@@ -64,6 +64,7 @@
       <Link>Version.cs</Link>
     </Compile>
     <Compile Include="CallCredentialsTest.cs" />
+    <Compile Include="UserAgentStringTest.cs" />
     <Compile Include="FakeCredentials.cs" />
     <Compile Include="MarshallingErrorsTest.cs" />
     <Compile Include="ChannelCredentialsTest.cs" />
diff --git a/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs b/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs
index 567e04eddccbc4cf95d1a11b79267ca1571fae23..30473143452b2915272c5fcfcfb61a107c84d52b 100644
--- a/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs
+++ b/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs
@@ -32,6 +32,7 @@
 #endregion
 
 using System;
+using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
 using System.Threading;
@@ -52,6 +53,7 @@ namespace Grpc.Core.Tests
 
         readonly string host;
         readonly ServerServiceDefinition serviceDefinition;
+        readonly IEnumerable<ChannelOption> channelOptions;
 
         readonly Method<string, string> unaryMethod;
         readonly Method<string, string> clientStreamingMethod;
@@ -66,9 +68,10 @@ namespace Grpc.Core.Tests
         Server server;
         Channel channel;
 
-        public MockServiceHelper(string host = null, Marshaller<string> marshaller = null)
+        public MockServiceHelper(string host = null, Marshaller<string> marshaller = null, IEnumerable<ChannelOption> channelOptions = null)
         {
             this.host = host ?? "localhost";
+            this.channelOptions = channelOptions;
             marshaller = marshaller ?? Marshallers.StringMarshaller;
 
             unaryMethod = new Method<string, string>(
@@ -154,7 +157,7 @@ namespace Grpc.Core.Tests
         {
             if (channel == null)
             {
-                channel = new Channel(Host, GetServer().Ports.Single().BoundPort, ChannelCredentials.Insecure);
+                channel = new Channel(Host, GetServer().Ports.Single().BoundPort, ChannelCredentials.Insecure, channelOptions);
             }
             return channel;
         }
diff --git a/src/csharp/Grpc.Core.Tests/UserAgentStringTest.cs b/src/csharp/Grpc.Core.Tests/UserAgentStringTest.cs
new file mode 100644
index 0000000000000000000000000000000000000000..cc830086a67d3b7f4444262fe03bf0dbbc1154a0
--- /dev/null
+++ b/src/csharp/Grpc.Core.Tests/UserAgentStringTest.cs
@@ -0,0 +1,101 @@
+#region Copyright notice and license
+
+// Copyright 2015, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#endregion
+
+using System;
+using System.Diagnostics;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using Grpc.Core;
+using Grpc.Core.Internal;
+using Grpc.Core.Profiling;
+using Grpc.Core.Utils;
+using NUnit.Framework;
+
+namespace Grpc.Core.Tests
+{
+    public class UserAgentStringTest
+    {
+        const string Host = "127.0.0.1";
+
+        MockServiceHelper helper;
+        Server server;
+        Channel channel;
+
+        [TearDown]
+        public void Cleanup()
+        {
+            channel.ShutdownAsync().Wait();
+            server.ShutdownAsync().Wait();
+        }
+
+        [Test]
+        public void DefaultUserAgentString()
+        {
+            helper = new MockServiceHelper(Host);
+            server = helper.GetServer();
+            server.Start();
+            channel = helper.GetChannel();
+
+            helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
+            {
+                var userAgentString = context.RequestHeaders.First(m => (m.Key == "user-agent")).Value;
+                var parts = userAgentString.Split(new [] {' '}, 2);
+                Assert.AreEqual(string.Format("grpc-csharp/{0}", VersionInfo.CurrentVersion), parts[0]);
+                Assert.IsTrue(parts[1].StartsWith("grpc-c/"));
+                return Task.FromResult("PASS");
+            });
+            Assert.AreEqual("PASS", Calls.BlockingUnaryCall(helper.CreateUnaryCall(), ""));
+        }
+
+        [Test]
+        public void ApplicationUserAgentString()
+        {
+            helper = new MockServiceHelper(Host,
+                channelOptions: new[] { new ChannelOption(ChannelOptions.PrimaryUserAgentString, "XYZ") });
+            server = helper.GetServer();
+            server.Start();
+            channel = helper.GetChannel();
+            
+            channel = helper.GetChannel();
+            helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
+            {
+                var userAgentString = context.RequestHeaders.First(m => (m.Key == "user-agent")).Value;
+                var parts = userAgentString.Split(new[] { ' ' }, 3);
+                Assert.AreEqual("XYZ", parts[0]);
+                return Task.FromResult("PASS");
+            });
+            Assert.AreEqual("PASS", Calls.BlockingUnaryCall(helper.CreateUnaryCall(), ""));
+        }
+    }
+}
diff --git a/src/csharp/Grpc.Core/Channel.cs b/src/csharp/Grpc.Core/Channel.cs
index ec60354639e224d768b0259d6818abf2afeca10e..d8d43c7998d1b84c6cbfcbf394a85662991f5ef5 100644
--- a/src/csharp/Grpc.Core/Channel.cs
+++ b/src/csharp/Grpc.Core/Channel.cs
@@ -32,8 +32,6 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
-using System.Runtime.InteropServices;
-using System.Threading;
 using System.Threading.Tasks;
 
 using Grpc.Core.Internal;
@@ -57,7 +55,7 @@ namespace Grpc.Core
         readonly string target;
         readonly GrpcEnvironment environment;
         readonly ChannelSafeHandle handle;
-        readonly List<ChannelOption> options;
+        readonly Dictionary<string, ChannelOption> options;
 
         bool shutdownRequested;
 
@@ -71,12 +69,12 @@ namespace Grpc.Core
         public Channel(string target, ChannelCredentials credentials, IEnumerable<ChannelOption> options = null)
         {
             this.target = Preconditions.CheckNotNull(target, "target");
+            this.options = CreateOptionsDictionary(options);
+            EnsureUserAgentChannelOption(this.options);
             this.environment = GrpcEnvironment.AddRef();
-            this.options = options != null ? new List<ChannelOption>(options) : new List<ChannelOption>();
 
-            EnsureUserAgentChannelOption(this.options);
             using (var nativeCredentials = credentials.ToNativeCredentials())
-            using (var nativeChannelArgs = ChannelOptions.CreateChannelArgs(this.options))
+            using (var nativeChannelArgs = ChannelOptions.CreateChannelArgs(this.options.Values))
             {
                 if (nativeCredentials != null)
                 {
@@ -233,18 +231,36 @@ namespace Grpc.Core
             activeCallCounter.Decrement();
         }
 
-        private static void EnsureUserAgentChannelOption(List<ChannelOption> options)
+        private static void EnsureUserAgentChannelOption(Dictionary<string, ChannelOption> options)
         {
-            if (!options.Any((option) => option.Name == ChannelOptions.PrimaryUserAgentString))
+            var key = ChannelOptions.PrimaryUserAgentString;
+            var userAgentString = "";
+
+            ChannelOption option;
+            if (options.TryGetValue(key, out option))
             {
-                options.Add(new ChannelOption(ChannelOptions.PrimaryUserAgentString, GetUserAgentString()));
-            }
+                // user-provided userAgentString needs to be at the beginning
+                userAgentString = option.StringValue + " ";
+            };
+
+            // TODO(jtattermusch): it would be useful to also provide .NET/mono version.
+            userAgentString += string.Format("grpc-csharp/{0}", VersionInfo.CurrentVersion);
+
+            options[ChannelOptions.PrimaryUserAgentString] = new ChannelOption(key, userAgentString);
         }
 
-        private static string GetUserAgentString()
+        private static Dictionary<string, ChannelOption> CreateOptionsDictionary(IEnumerable<ChannelOption> options)
         {
-            // TODO(jtattermusch): it would be useful to also provide .NET/mono version.
-            return string.Format("grpc-csharp/{0}", VersionInfo.CurrentVersion);
+            var dict = new Dictionary<string, ChannelOption>();
+            if (options == null)
+            {
+                return dict;
+            }
+            foreach (var option in options)
+            {
+                dict.Add(option.Name, option);
+            }
+            return dict;
         }
     }
 }
diff --git a/src/csharp/Grpc.Core/ChannelOptions.cs b/src/csharp/Grpc.Core/ChannelOptions.cs
index f5ef63af54424e11a5015d9d0ae44d0c1c266822..d70673cf781f3dce1ab20c07af13488e8e2d9835 100644
--- a/src/csharp/Grpc.Core/ChannelOptions.cs
+++ b/src/csharp/Grpc.Core/ChannelOptions.cs
@@ -169,7 +169,7 @@ namespace Grpc.Core
         /// Creates native object for a collection of channel options.
         /// </summary>
         /// <returns>The native channel arguments.</returns>
-        internal static ChannelArgsSafeHandle CreateChannelArgs(List<ChannelOption> options)
+        internal static ChannelArgsSafeHandle CreateChannelArgs(ICollection<ChannelOption> options)
         {
             if (options == null || options.Count == 0)
             {
@@ -179,9 +179,9 @@ namespace Grpc.Core
             try
             {
                 nativeArgs = ChannelArgsSafeHandle.Create(options.Count);
-                for (int i = 0; i < options.Count; i++)
+                int i = 0;
+                foreach (var option in options)
                 {
-                    var option = options[i];
                     if (option.Type == ChannelOption.OptionType.Integer)
                     {
                         nativeArgs.SetInteger(i, option.Name, option.IntValue);
@@ -194,6 +194,7 @@ namespace Grpc.Core
                     {
                         throw new InvalidOperationException("Unknown option type");
                     }
+                    i++;
                 }
                 return nativeArgs;
             }
diff --git a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
index 0ade701a5387841c6da9fe05bbcc5781e910e5d3..de66759b94bdee24efa26d6209b663f401a5953c 100644
--- a/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
+++ b/src/csharp/Grpc.Core/Internal/ServerCallHandler.cs
@@ -284,7 +284,7 @@ namespace Grpc.Core.Internal
             var finishedTask = asyncCall.ServerSideCallAsync();
             var responseStream = new ServerResponseStream<byte[], byte[]>(asyncCall);
 
-            await responseStream.WriteStatusAsync(new Status(StatusCode.Unimplemented, "No such method."), Metadata.Empty).ConfigureAwait(false);
+            await responseStream.WriteStatusAsync(new Status(StatusCode.Unimplemented, ""), Metadata.Empty).ConfigureAwait(false);
             await finishedTask.ConfigureAwait(false);
         }
     }
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
index 5eec11abf7f71b6a948f5dc29916bf06716c3f96..b0e33e49f77eefabf6a80ada6e0b22e2ab6f2fae 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
@@ -34,6 +34,7 @@
 using System;
 using System.Collections.Generic;
 using System.IO;
+using System.Linq;
 using System.Text.RegularExpressions;
 using System.Threading;
 using System.Threading.Tasks;
@@ -130,8 +131,7 @@ namespace Grpc.IntegrationTesting
                 };
             }
             var channel = new Channel(options.ServerHost, options.ServerPort, credentials, channelOptions);
-            TestService.TestServiceClient client = new TestService.TestServiceClient(channel);
-            await RunTestCaseAsync(client, options);
+            await RunTestCaseAsync(channel, options);
             await channel.ShutdownAsync();
         }
 
@@ -159,8 +159,9 @@ namespace Grpc.IntegrationTesting
             return credentials;
         }
 
-        private async Task RunTestCaseAsync(TestService.TestServiceClient client, ClientOptions options)
+        private async Task RunTestCaseAsync(Channel channel, ClientOptions options)
         {
+            var client = new TestService.TestServiceClient(channel);
             switch (options.TestCase)
             {
                 case "empty_unary":
@@ -202,8 +203,14 @@ namespace Grpc.IntegrationTesting
                 case "timeout_on_sleeping_server":
                     await RunTimeoutOnSleepingServerAsync(client);
                     break;
-                case "benchmark_empty_unary":
-                    RunBenchmarkEmptyUnary(client);
+                case "custom_metadata":
+                    await RunCustomMetadataAsync(client);
+                    break;
+                case "status_code_and_message":
+                    await RunStatusCodeAndMessageAsync(client);
+                    break;
+                case "unimplemented_method":
+                    RunUnimplementedMethod(new UnimplementedService.UnimplementedServiceClient(channel));
                     break;
                 default:
                     throw new ArgumentException("Unknown test case " + options.TestCase);
@@ -227,7 +234,6 @@ namespace Grpc.IntegrationTesting
                 ResponseSize = 314159,
                 Payload = CreateZerosPayload(271828)
             };
-
             var response = client.UnaryCall(request);
 
             Assert.AreEqual(PayloadType.COMPRESSABLE, response.Payload.Type);
@@ -493,11 +499,95 @@ namespace Grpc.IntegrationTesting
             Console.WriteLine("Passed!");
         }
 
-        // This is not an official interop test, but it's useful.
-        public static void RunBenchmarkEmptyUnary(TestService.ITestServiceClient client)
+        public static async Task RunCustomMetadataAsync(TestService.ITestServiceClient client)
         {
-            BenchmarkUtil.RunBenchmark(10000, 10000,
-                                       () => { client.EmptyCall(new Empty()); });
+            Console.WriteLine("running custom_metadata");
+            {
+                // step 1: test unary call
+                var request = new SimpleRequest
+                {
+                    ResponseType = PayloadType.COMPRESSABLE,
+                    ResponseSize = 314159,
+                    Payload = CreateZerosPayload(271828)
+                };
+
+                var call = client.UnaryCallAsync(request, headers: CreateTestMetadata());
+                await call.ResponseAsync;
+
+                var responseHeaders = await call.ResponseHeadersAsync;
+                var responseTrailers = call.GetTrailers();
+
+                Assert.AreEqual("test_initial_metadata_value", responseHeaders.First((entry) => entry.Key == "x-grpc-test-echo-initial").Value);
+                CollectionAssert.AreEqual(new byte[] { 0xab, 0xab, 0xab }, responseTrailers.First((entry) => entry.Key == "x-grpc-test-echo-trailing-bin").ValueBytes);
+            }
+
+            {
+                // step 2: test full duplex call
+                var request = new StreamingOutputCallRequest
+                {
+                    ResponseType = PayloadType.COMPRESSABLE,
+                    ResponseParameters = { new ResponseParameters { Size = 31415 } },
+                    Payload = CreateZerosPayload(27182)
+                };
+
+                var call = client.FullDuplexCall(headers: CreateTestMetadata());
+                var responseHeaders = await call.ResponseHeadersAsync;
+
+                await call.RequestStream.WriteAsync(request);
+                await call.RequestStream.CompleteAsync();
+                await call.ResponseStream.ToListAsync();
+
+                var responseTrailers = call.GetTrailers();
+
+                Assert.AreEqual("test_initial_metadata_value", responseHeaders.First((entry) => entry.Key == "x-grpc-test-echo-initial").Value);
+                CollectionAssert.AreEqual(new byte[] { 0xab, 0xab, 0xab }, responseTrailers.First((entry) => entry.Key == "x-grpc-test-echo-trailing-bin").ValueBytes);
+            }
+
+            Console.WriteLine("Passed!");
+        }
+
+        public static async Task RunStatusCodeAndMessageAsync(TestService.ITestServiceClient client)
+        {
+            Console.WriteLine("running status_code_and_message");
+            var echoStatus = new EchoStatus
+            {
+                Code = 2,
+                Message = "test status message"
+            };
+
+            {
+                // step 1: test unary call
+                var request = new SimpleRequest { ResponseStatus = echoStatus };
+
+                var e = Assert.Throws<RpcException>(() => client.UnaryCall(request));
+                Assert.AreEqual(StatusCode.Unknown, e.Status.StatusCode);
+                Assert.AreEqual(echoStatus.Message, e.Status.Detail);
+            }
+
+            {
+                // step 2: test full duplex call
+                var request = new StreamingOutputCallRequest { ResponseStatus = echoStatus };
+
+                var call = client.FullDuplexCall();
+                await call.RequestStream.WriteAsync(request);
+                await call.RequestStream.CompleteAsync();
+
+                var e = Assert.Throws<RpcException>(async () => await call.ResponseStream.ToListAsync());
+                Assert.AreEqual(StatusCode.Unknown, e.Status.StatusCode);
+                Assert.AreEqual(echoStatus.Message, e.Status.Detail);
+            }
+
+            Console.WriteLine("Passed!");
+        }
+
+        public static void RunUnimplementedMethod(UnimplementedService.IUnimplementedServiceClient client)
+        {
+            Console.WriteLine("running unimplemented_method");
+            var e = Assert.Throws<RpcException>(() => client.UnimplementedCall(new Empty()));
+
+            Assert.AreEqual(StatusCode.Unimplemented, e.Status.StatusCode);
+            Assert.AreEqual("", e.Status.Detail);
+            Console.WriteLine("Passed!");
         }
 
         private static Payload CreateZerosPayload(int size)
@@ -516,5 +606,14 @@ namespace Grpc.IntegrationTesting
             Assert.IsTrue(email.Length > 0);  // spec requires nonempty client email.
             return email;
         }
+
+        private static Metadata CreateTestMetadata()
+        {
+            return new Metadata
+            {
+                {"x-grpc-test-echo-initial", "test_initial_metadata_value"},
+                {"x-grpc-test-echo-trailing-bin", new byte[] {0xab, 0xab, 0xab}}
+            };
+        }
     }
 }
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
index 837ae74c453db8bfa4c1ad921180c019a5872b3d..5facb87971ec04964bfbe7088b7f4c0d34d87cd7 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
@@ -128,9 +128,27 @@ namespace Grpc.IntegrationTesting
         }
 
         [Test]
-        public async Task TimeoutOnSleepingServerAsync()
+        public async Task TimeoutOnSleepingServer()
         {
             await InteropClient.RunTimeoutOnSleepingServerAsync(client);
         }
+
+        [Test]
+        public async Task CustomMetadata()
+        {
+            await InteropClient.RunCustomMetadataAsync(client);
+        }
+
+        [Test]
+        public async Task StatusCodeAndMessage()
+        {
+            await InteropClient.RunStatusCodeAndMessageAsync(client);
+        }
+
+        [Test]
+        public void UnimplementedMethod()
+        {
+            InteropClient.RunUnimplementedMethod(UnimplementedService.NewClient(channel));
+        }
     }
 }
diff --git a/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs b/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs
index c5bfcf08c0c0397f5adc0d442db579a44181499c..5a1b4cf319b696a57a0ec41badcdf6b2f598f280 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs
@@ -33,6 +33,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
 using Google.Protobuf;
@@ -51,14 +52,20 @@ namespace Grpc.Testing
             return Task.FromResult(new Empty());
         }
 
-        public Task<SimpleResponse> UnaryCall(SimpleRequest request, ServerCallContext context)
+        public async Task<SimpleResponse> UnaryCall(SimpleRequest request, ServerCallContext context)
         {
+            await EnsureEchoMetadataAsync(context);
+            EnsureEchoStatus(request.ResponseStatus, context);
+
             var response = new SimpleResponse { Payload = CreateZerosPayload(request.ResponseSize) };
-            return Task.FromResult(response);
+            return response;
         }
 
         public async Task StreamingOutputCall(StreamingOutputCallRequest request, IServerStreamWriter<StreamingOutputCallResponse> responseStream, ServerCallContext context)
         {
+            await EnsureEchoMetadataAsync(context);
+            EnsureEchoStatus(request.ResponseStatus, context);
+
             foreach (var responseParam in request.ResponseParameters)
             {
                 var response = new StreamingOutputCallResponse { Payload = CreateZerosPayload(responseParam.Size) };
@@ -68,6 +75,8 @@ namespace Grpc.Testing
 
         public async Task<StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<StreamingInputCallRequest> requestStream, ServerCallContext context)
         {
+            await EnsureEchoMetadataAsync(context);
+
             int sum = 0;
             await requestStream.ForEachAsync(async request =>
             {
@@ -78,8 +87,11 @@ namespace Grpc.Testing
 
         public async Task FullDuplexCall(IAsyncStreamReader<StreamingOutputCallRequest> requestStream, IServerStreamWriter<StreamingOutputCallResponse> responseStream, ServerCallContext context)
         {
+            await EnsureEchoMetadataAsync(context);
+
             await requestStream.ForEachAsync(async request =>
             {
+                EnsureEchoStatus(request.ResponseStatus, context);
                 foreach (var responseParam in request.ResponseParameters)
                 {
                     var response = new StreamingOutputCallResponse { Payload = CreateZerosPayload(responseParam.Size) };
@@ -97,5 +109,28 @@ namespace Grpc.Testing
         {
             return new Payload { Body = ByteString.CopyFrom(new byte[size]) };
         }
+
+        private static async Task EnsureEchoMetadataAsync(ServerCallContext context)
+        {
+            var echoInitialList = context.RequestHeaders.Where((entry) => entry.Key == "x-grpc-test-echo-initial").ToList();
+            if (echoInitialList.Any()) {
+                var entry = echoInitialList.Single();
+                await context.WriteResponseHeadersAsync(new Metadata { entry });
+            }
+
+            var echoTrailingList = context.RequestHeaders.Where((entry) => entry.Key == "x-grpc-test-echo-trailing-bin").ToList();
+            if (echoTrailingList.Any()) {
+                context.ResponseTrailers.Add(echoTrailingList.Single());
+            }
+        }
+
+        private static void EnsureEchoStatus(EchoStatus responseStatus, ServerCallContext context)
+        {
+            if (responseStatus != null)
+            {
+                var statusCode = (StatusCode)responseStatus.Code;
+                context.Status = new Status(statusCode, responseStatus.Message);
+            }
+        }
     }
 }
diff --git a/src/node/ext/channel_credentials.cc b/src/node/ext/channel_credentials.cc
index b77ff80af275f22f5b1c9f5966964f0f3455aa67..059bc8a890262d20e2042f4577fa8648120e569d 100644
--- a/src/node/ext/channel_credentials.cc
+++ b/src/node/ext/channel_credentials.cc
@@ -154,6 +154,12 @@ NAN_METHOD(ChannelCredentials::CreateSsl) {
     return Nan::ThrowTypeError(
         "createSSl's third argument must be a Buffer if provided");
   }
+  if ((key_cert_pair.private_key == NULL) !=
+      (key_cert_pair.cert_chain == NULL)) {
+    return Nan::ThrowError(
+        "createSsl's second and third arguments must be"
+        " provided or omitted together");
+  }
   grpc_channel_credentials *creds = grpc_ssl_credentials_create(
       root_certs, key_cert_pair.private_key == NULL ? NULL : &key_cert_pair,
       NULL);
diff --git a/src/node/ext/server_credentials.cc b/src/node/ext/server_credentials.cc
index e6c55e263cbc4996d3aca41b266aa288291d2fbd..5285d53df418c2802fe777446ab9a45281992855 100644
--- a/src/node/ext/server_credentials.cc
+++ b/src/node/ext/server_credentials.cc
@@ -167,30 +167,18 @@ NAN_METHOD(ServerCredentials::CreateSsl) {
       return Nan::ThrowTypeError("Key/cert pairs must be objects");
     }
     Local<Object> pair_obj = Nan::To<Object>(pair_val).ToLocalChecked();
-    MaybeLocal<Value> maybe_key = Nan::Get(pair_obj, key_key);
-    if (maybe_key.IsEmpty()) {
-      delete key_cert_pairs;
-      return Nan::ThrowTypeError(
-          "Key/cert pairs must have a private_key and a cert_chain");
-    }
-    MaybeLocal<Value> maybe_cert = Nan::Get(pair_obj, cert_key);
-    if (maybe_cert.IsEmpty()) {
-      delete key_cert_pairs;
-      return Nan::ThrowTypeError(
-          "Key/cert pairs must have a private_key and a cert_chain");
-    }
-    if (!::node::Buffer::HasInstance(maybe_key.ToLocalChecked())) {
+    Local<Value> maybe_key = Nan::Get(pair_obj, key_key).ToLocalChecked();
+    Local<Value> maybe_cert = Nan::Get(pair_obj, cert_key).ToLocalChecked();
+    if (!::node::Buffer::HasInstance(maybe_key)) {
       delete key_cert_pairs;
       return Nan::ThrowTypeError("private_key must be a Buffer");
     }
-    if (!::node::Buffer::HasInstance(maybe_cert.ToLocalChecked())) {
+    if (!::node::Buffer::HasInstance(maybe_cert)) {
       delete key_cert_pairs;
       return Nan::ThrowTypeError("cert_chain must be a Buffer");
     }
-    key_cert_pairs[i].private_key = ::node::Buffer::Data(
-        maybe_key.ToLocalChecked());
-    key_cert_pairs[i].cert_chain = ::node::Buffer::Data(
-        maybe_cert.ToLocalChecked());
+    key_cert_pairs[i].private_key = ::node::Buffer::Data(maybe_key);
+    key_cert_pairs[i].cert_chain = ::node::Buffer::Data(maybe_cert);
   }
   grpc_server_credentials *creds = grpc_ssl_server_credentials_create(
       root_certs, key_cert_pairs, key_cert_pair_count, force_client_auth, NULL);
diff --git a/src/node/test/credentials_test.js b/src/node/test/credentials_test.js
index 647f648ca93eb08332b58e879589a22d9160a5c0..294600c85a93b66ca3da31614ccb5366a55cd2c5 100644
--- a/src/node/test/credentials_test.js
+++ b/src/node/test/credentials_test.js
@@ -76,6 +76,146 @@ var fakeFailingGoogleCredentials = {
   }
 };
 
+var key_data, pem_data, ca_data;
+
+before(function() {
+  var key_path = path.join(__dirname, './data/server1.key');
+  var pem_path = path.join(__dirname, './data/server1.pem');
+  var ca_path = path.join(__dirname, '../test/data/ca.pem');
+  key_data = fs.readFileSync(key_path);
+  pem_data = fs.readFileSync(pem_path);
+  ca_data = fs.readFileSync(ca_path);
+});
+
+describe('channel credentials', function() {
+  describe('#createSsl', function() {
+    it('works with no arguments', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.credentials.createSsl();
+      });
+      assert.notEqual(creds, null);
+    });
+    it('works with just one Buffer argument', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.credentials.createSsl(ca_data);
+      });
+      assert.notEqual(creds, null);
+    });
+    it('works with 3 Buffer arguments', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.credentials.createSsl(ca_data, key_data, pem_data);
+      });
+      assert.notEqual(creds, null);
+    });
+    it('works if the first argument is null', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.credentials.createSsl(null, key_data, pem_data);
+      });
+      assert.notEqual(creds, null);
+    });
+    it('fails if the first argument is a non-Buffer value', function() {
+      assert.throws(function() {
+        grpc.credentials.createSsl('test');
+      }, TypeError);
+    });
+    it('fails if the second argument is a non-Buffer value', function() {
+      assert.throws(function() {
+        grpc.credentials.createSsl(null, 'test', pem_data);
+      }, TypeError);
+    });
+    it('fails if the third argument is a non-Buffer value', function() {
+      assert.throws(function() {
+        grpc.credentials.createSsl(null, key_data, 'test');
+      }, TypeError);
+    });
+    it('fails if only 1 of the last 2 arguments is provided', function() {
+      assert.throws(function() {
+        grpc.credentials.createSsl(null, key_data);
+      });
+      assert.throws(function() {
+        grpc.credentials.createSsl(null, null, pem_data);
+      });
+    });
+  });
+});
+
+describe('server credentials', function() {
+  describe('#createSsl', function() {
+    it('accepts a buffer and array as the first 2 arguments', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.ServerCredentials.createSsl(ca_data, []);
+      });
+      assert.notEqual(creds, null);
+    });
+    it('accepts a boolean as the third argument', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.ServerCredentials.createSsl(ca_data, [], true);
+      });
+      assert.notEqual(creds, null);
+    });
+    it('accepts an object with two buffers in the second argument', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.ServerCredentials.createSsl(null,
+                                                 [{private_key: key_data,
+                                                   cert_chain: pem_data}]);
+      });
+      assert.notEqual(creds, null);
+    });
+    it('accepts multiple objects in the second argument', function() {
+      var creds;
+      assert.doesNotThrow(function() {
+        creds = grpc.ServerCredentials.createSsl(null,
+                                                 [{private_key: key_data,
+                                                   cert_chain: pem_data},
+                                                  {private_key: key_data,
+                                                   cert_chain: pem_data}]);
+      });
+      assert.notEqual(creds, null);
+    });
+    it('fails if the second argument is not an Array', function() {
+      assert.throws(function() {
+        grpc.ServerCredentials.createSsl(ca_data, 'test');
+      }, TypeError);
+    });
+    it('fails if the first argument is a non-Buffer value', function() {
+      assert.throws(function() {
+        grpc.ServerCredentials.createSsl('test', []);
+      }, TypeError);
+    });
+    it('fails if the third argument is a non-boolean value', function() {
+      assert.throws(function() {
+        grpc.ServerCredentials.createSsl(ca_data, [], 'test');
+      }, TypeError);
+    });
+    it('fails if the array elements are not objects', function() {
+      assert.throws(function() {
+        grpc.ServerCredentials.createSsl(ca_data, 'test');
+      }, TypeError);
+    });
+    it('fails if the object does not have a Buffer private_key', function() {
+      assert.throws(function() {
+        grpc.ServerCredentials.createSsl(null,
+                                         [{private_key: 'test',
+                                           cert_chain: pem_data}]);
+      }, TypeError);
+    });
+    it('fails if the object does not have a Buffer cert_chain', function() {
+      assert.throws(function() {
+        grpc.ServerCredentials.createSsl(null,
+                                         [{private_key: key_data,
+                                           cert_chain: 'test'}]);
+      }, TypeError);
+    });
+  });
+});
+
 describe('client credentials', function() {
   var Client;
   var server;
@@ -109,20 +249,13 @@ describe('client credentials', function() {
         });
       }
     });
-    var key_path = path.join(__dirname, './data/server1.key');
-    var pem_path = path.join(__dirname, './data/server1.pem');
-    var key_data = fs.readFileSync(key_path);
-    var pem_data = fs.readFileSync(pem_path);
     var creds = grpc.ServerCredentials.createSsl(null,
                                                  [{private_key: key_data,
                                                    cert_chain: pem_data}]);
-    //creds = grpc.ServerCredentials.createInsecure();
     port = server.bind('localhost:0', creds);
     server.start();
 
     Client = proto.TestService;
-    var ca_path = path.join(__dirname, '../test/data/ca.pem');
-    var ca_data = fs.readFileSync(ca_path);
     client_ssl_creds = grpc.credentials.createSsl(ca_data);
     var host_override = 'foo.test.google.fr';
     client_options['grpc.ssl_target_name_override'] = host_override;
diff --git a/src/node/test/server_test.js b/src/node/test/server_test.js
index 999a183b3cb5043b81c861a36eb8a6adbaea4e54..592f47e1456db6d4f99e34668b89c2440ae034ec 100644
--- a/src/node/test/server_test.js
+++ b/src/node/test/server_test.js
@@ -45,9 +45,30 @@ describe('server', function() {
         new grpc.Server();
       });
     });
-    it('should work with an empty list argument', function() {
+    it('should work with an empty object argument', function() {
       assert.doesNotThrow(function() {
-        new grpc.Server([]);
+        new grpc.Server({});
+      });
+    });
+    it('should work without the new keyword', function() {
+      var server;
+      assert.doesNotThrow(function() {
+        server = grpc.Server();
+      });
+      assert(server instanceof grpc.Server);
+    });
+    it('should only accept objects with string or int values', function() {
+      assert.doesNotThrow(function() {
+        new grpc.Server({'key' : 'value'});
+      });
+      assert.doesNotThrow(function() {
+        new grpc.Server({'key' : 5});
+      });
+      assert.throws(function() {
+        new grpc.Server({'key' : null});
+      });
+      assert.throws(function() {
+        new grpc.Server({'key' : new Date()});
       });
     });
   });
diff --git a/templates/Makefile.template b/templates/Makefile.template
index c1e472c00e715305a6328e5202e61128f5bd3c8f..394ffb8c5126d243268f494c51ec6d9d2b49c06d 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -1003,27 +1003,27 @@
 
   buildtests: buildtests_c buildtests_cxx buildtests_zookeeper
 
-  buildtests_c: privatelibs_c\
+  buildtests_c: privatelibs_c <%text>\</%text>
   % for tgt in targets:
   % if tgt.build == 'test' and not tgt.language == 'c++' and not tgt.get('external_deps', None):
-   $(BINDIR)/$(CONFIG)/${tgt.name}\
+    $(BINDIR)/$(CONFIG)/${tgt.name} <%text>\</%text>
   % endif
   % endfor
 
 
-  buildtests_cxx: buildtests_zookeeper privatelibs_cxx\
+  buildtests_cxx: buildtests_zookeeper privatelibs_cxx <%text>\</%text>
   % for tgt in targets:
   % if tgt.build == 'test' and tgt.language == 'c++' and not tgt.get('external_deps', None):
-   $(BINDIR)/$(CONFIG)/${tgt.name}\
+    $(BINDIR)/$(CONFIG)/${tgt.name} <%text>\</%text>
   % endif
   % endfor
 
 
   ifeq ($(HAS_ZOOKEEPER),true)
-  buildtests_zookeeper: privatelibs_zookeeper\
+  buildtests_zookeeper: privatelibs_zookeeper <%text>\</%text>
   % for tgt in targets:
   % if tgt.build == 'test' and tgt.language == 'c++' and 'zookeeper' in tgt.get('external_deps', []):
-   $(BINDIR)/$(CONFIG)/${tgt.name}\
+   $(BINDIR)/$(CONFIG)/${tgt.name} <%text>\</%text>
   % endif
   % endfor
 
diff --git a/test/core/client_config/lb_policies_test.c b/test/core/client_config/lb_policies_test.c
index 5aa8140e080b71a7b6228ed4d2dd8b0f6be496a5..175ebb6375bae257525316018e9059dd7c2105b4 100644
--- a/test/core/client_config/lb_policies_test.c
+++ b/test/core/client_config/lb_policies_test.c
@@ -42,8 +42,9 @@
 #include <grpc/support/string_util.h>
 
 #include "src/core/channel/channel_stack.h"
-#include "src/core/surface/channel.h"
 #include "src/core/channel/client_channel.h"
+#include "src/core/client_config/lb_policy_registry.h"
+#include "src/core/surface/channel.h"
 #include "src/core/support/string.h"
 #include "src/core/surface/server.h"
 #include "test/core/util/test_config.h"
@@ -716,6 +717,9 @@ int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
   grpc_init();
 
+  GPR_ASSERT(grpc_lb_policy_create("this-lb-policy-does-not-exist", NULL) == NULL);
+  GPR_ASSERT(grpc_lb_policy_create(NULL, NULL) == NULL);
+
   /* everything is fine, all servers stay up the whole time and life's peachy */
   spec = test_spec_create(NUM_ITERS, NUM_SERVERS);
   spec->verifier = verify_vanilla_round_robin;
diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c
index 834113488c99826634dd1bf00c8ca6bb9e2e0b79..d6febf586ea9bd52235ffe9b3e17520596f4b6c9 100644
--- a/test/core/security/credentials_test.c
+++ b/test/core/security/credentials_test.c
@@ -878,7 +878,7 @@ static void test_google_default_creds_auth_key(void) {
   gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */
 }
 
-static void test_google_default_creds_access_token(void) {
+static void test_google_default_creds_refresh_token(void) {
   grpc_google_refresh_token_credentials *refresh;
   grpc_composite_channel_credentials *creds;
   grpc_flush_cached_google_default_credentials();
@@ -894,6 +894,60 @@ static void test_google_default_creds_access_token(void) {
   gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */
 }
 
+static int default_creds_gce_detection_httpcli_get_success_override(
+    grpc_exec_ctx *exec_ctx, const grpc_httpcli_request *request,
+    gpr_timespec deadline, grpc_httpcli_response_cb on_response,
+    void *user_data) {
+  grpc_httpcli_response response = http_response(200, "");
+  grpc_httpcli_header header;
+  header.key = "Metadata-Flavor";
+  header.value = "Google";
+  response.hdr_count = 1;
+  response.hdrs = &header;
+  GPR_ASSERT(strcmp(request->path, "/") == 0);
+  GPR_ASSERT(strcmp(request->host, "metadata.google.internal") == 0);
+  on_response(exec_ctx, user_data, &response);
+  return 1;
+}
+
+static char *null_well_known_creds_path_getter(void) {
+  return NULL;
+}
+
+static void test_google_default_creds_gce(void) {
+  grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+  grpc_composite_channel_credentials *creds;
+  grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, NULL,
+                                            NULL};
+  grpc_flush_cached_google_default_credentials();
+  gpr_setenv(GRPC_GOOGLE_CREDENTIALS_ENV_VAR, ""); /* Reset. */
+  grpc_override_well_known_credentials_path_getter(
+      null_well_known_creds_path_getter);
+
+  /* Simulate a successful detection of GCE. */
+  grpc_httpcli_set_override(
+      default_creds_gce_detection_httpcli_get_success_override,
+      httpcli_post_should_not_be_called);
+  creds = (grpc_composite_channel_credentials *)
+      grpc_google_default_credentials_create();
+
+  /* Verify that the default creds actually embeds a GCE creds. */
+  GPR_ASSERT(creds != NULL);
+  GPR_ASSERT(creds->call_creds != NULL);
+  grpc_httpcli_set_override(compute_engine_httpcli_get_success_override,
+                            httpcli_post_should_not_be_called);
+  grpc_call_credentials_get_request_metadata(
+      &exec_ctx, creds->call_creds, NULL, auth_md_ctx,
+      on_oauth2_creds_get_metadata_success, (void *)test_user_data);
+  grpc_exec_ctx_flush(&exec_ctx);
+  grpc_exec_ctx_finish(&exec_ctx);
+
+  /* Cleanup. */
+  grpc_channel_credentials_release(&creds->base);
+  grpc_httpcli_set_override(NULL, NULL);
+  grpc_override_well_known_credentials_path_getter(NULL);
+}
+
 typedef enum {
   PLUGIN_INITIAL_STATE,
   PLUGIN_GET_METADATA_CALLED_STATE,
@@ -1067,7 +1121,8 @@ int main(int argc, char **argv) {
   test_jwt_creds_success();
   test_jwt_creds_signing_failure();
   test_google_default_creds_auth_key();
-  test_google_default_creds_access_token();
+  test_google_default_creds_refresh_token();
+  test_google_default_creds_gce();
   test_metadata_plugin_success();
   test_metadata_plugin_failure();
   test_get_well_known_google_credentials_file_path();
diff --git a/test/core/support/string_test.c b/test/core/support/string_test.c
index f62cbe34358309565da936007b5f184241464195..c97d3176c5d2f78105cafca2eb26a921d5576870 100644
--- a/test/core/support/string_test.c
+++ b/test/core/support/string_test.c
@@ -33,6 +33,7 @@
 
 #include "src/core/support/string.h"
 
+#include <limits.h>
 #include <stddef.h>
 #include <stdlib.h>
 #include <string.h>
@@ -286,6 +287,53 @@ static void test_strsplit(void) {
   gpr_free(parts);
 }
 
+static void test_ltoa() {
+  char *str;
+  char buf[GPR_LTOA_MIN_BUFSIZE];
+
+  LOG_TEST_NAME("test_ltoa");
+
+  /* zero */
+  GPR_ASSERT(1 == gpr_ltoa(0, buf));
+  GPR_ASSERT(0 == strcmp("0", buf));
+
+  /* positive number */
+  GPR_ASSERT(3 == gpr_ltoa(123, buf));
+  GPR_ASSERT(0 == strcmp("123", buf));
+
+  /* negative number */
+  GPR_ASSERT(6 == gpr_ltoa(-12345, buf));
+  GPR_ASSERT(0 == strcmp("-12345", buf));
+
+  /* large negative - we don't know the size of long in advance */
+  GPR_ASSERT(gpr_asprintf(&str, "%lld", (long long)LONG_MIN));
+  GPR_ASSERT(strlen(str) == (size_t)gpr_ltoa(LONG_MIN, buf));
+  GPR_ASSERT(0 == strcmp(str, buf));
+  gpr_free(str);
+}
+
+static void test_int64toa() {
+  char buf[GPR_INT64TOA_MIN_BUFSIZE];
+
+  LOG_TEST_NAME("test_int64toa");
+
+  /* zero */
+  GPR_ASSERT(1 == gpr_int64toa(0, buf));
+  GPR_ASSERT(0 == strcmp("0", buf));
+
+  /* positive */
+  GPR_ASSERT(3 == gpr_int64toa(123, buf));
+  GPR_ASSERT(0 == strcmp("123", buf));
+
+  /* large positive */
+  GPR_ASSERT(19 == gpr_int64toa(9223372036854775807LL, buf));
+  GPR_ASSERT(0 == strcmp("9223372036854775807", buf));
+
+  /* large negative */
+  GPR_ASSERT(20 == gpr_int64toa(-9223372036854775807LL - 1, buf));
+  GPR_ASSERT(0 == strcmp("-9223372036854775808", buf));
+}
+
 int main(int argc, char **argv) {
   grpc_test_init(argc, argv);
   test_strdup();
@@ -296,5 +344,7 @@ int main(int argc, char **argv) {
   test_strjoin();
   test_strjoin_sep();
   test_strsplit();
+  test_ltoa();
+  test_int64toa();
   return 0;
 }
diff --git a/test/core/transport/connectivity_state_test.c b/test/core/transport/connectivity_state_test.c
new file mode 100644
index 0000000000000000000000000000000000000000..d2341beb657734e411119d41b8ae5d1e5daf4054
--- /dev/null
+++ b/test/core/transport/connectivity_state_test.c
@@ -0,0 +1,57 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "src/core/transport/connectivity_state.h"
+
+#include <string.h>
+
+#include <grpc/support/log.h>
+
+#include "test/core/util/test_config.h"
+
+#define LOG_TEST(x) gpr_log(GPR_INFO, "%s", x)
+
+static void test_connectivity_state_name(void) {
+  GPR_ASSERT(0 == strcmp(grpc_connectivity_state_name(GRPC_CHANNEL_IDLE), "IDLE"));
+  GPR_ASSERT(0 == strcmp(grpc_connectivity_state_name(GRPC_CHANNEL_CONNECTING), "CONNECTING"));
+  GPR_ASSERT(0 == strcmp(grpc_connectivity_state_name(GRPC_CHANNEL_READY), "READY"));
+  GPR_ASSERT(0 == strcmp(grpc_connectivity_state_name(GRPC_CHANNEL_TRANSIENT_FAILURE), "TRANSIENT_FAILURE"));
+  GPR_ASSERT(0 == strcmp(grpc_connectivity_state_name(GRPC_CHANNEL_FATAL_FAILURE), "FATAL_FAILURE"));
+}
+
+int main(int argc, char **argv) {
+  grpc_test_init(argc, argv);
+  grpc_connectivity_state_trace = 1;
+  test_connectivity_state_name();
+  return 0;
+}
diff --git a/tools/run_tests/jobset.py b/tools/run_tests/jobset.py
index 5a26bff709c56fb531f110595247a0a81c2f7c66..01739be27c96b966285d40f5bb755cb63b84ec15 100755
--- a/tools/run_tests/jobset.py
+++ b/tools/run_tests/jobset.py
@@ -178,6 +178,9 @@ class JobSpec(object):
 
   def __cmp__(self, other):
     return self.identity() == other.identity()
+    
+  def __repr__(self):
+    return 'JobSpec(shortname=%s, cmdline=%s)' % (self.shortname, self.cmdline)
 
 
 class JobResult(object):
diff --git a/tools/run_tests/run_interop_tests.py b/tools/run_tests/run_interop_tests.py
index 37b631bd0da96dc49f20632b056b14c9abfb6b35..763ff5615c2dfa1dfe2dda93e922d60991737e84 100755
--- a/tools/run_tests/run_interop_tests.py
+++ b/tools/run_tests/run_interop_tests.py
@@ -52,6 +52,11 @@ _DEFAULT_SERVER_PORT=8080
 # supported by C core SslCredentials instead.
 _SSL_CERT_ENV = { 'SSL_CERT_FILE':'/usr/local/share/grpc/roots.pem' }
 
+_SKIP_COMPRESSION = ['large_compressed_unary',
+                     'server_compressed_streaming']
+
+_SKIP_ADVANCED = ['custom_metadata', 'status_code_and_message',
+                  'unimplemented_method']
 
 class CXXLanguage:
 
@@ -73,7 +78,10 @@ class CXXLanguage:
     return {}
 
   def unimplemented_test_cases(self):
-    return []
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
+
+  def unimplemented_test_cases_server(self):
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
 
   def __str__(self):
     return 'c++'
@@ -99,7 +107,11 @@ class CSharpLanguage:
     return {}
 
   def unimplemented_test_cases(self):
-    return []
+    # TODO: status_code_and_message doesn't work against node_server
+    return _SKIP_COMPRESSION + ['status_code_and_message']
+
+  def unimplemented_test_cases_server(self):
+    return _SKIP_COMPRESSION
 
   def __str__(self):
     return 'csharp'
@@ -125,7 +137,10 @@ class JavaLanguage:
     return {}
 
   def unimplemented_test_cases(self):
-    return []
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
+
+  def unimplemented_test_cases_server(self):
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
 
   def __str__(self):
     return 'java'
@@ -152,7 +167,10 @@ class GoLanguage:
     return {}
 
   def unimplemented_test_cases(self):
-    return []
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
+
+  def unimplemented_test_cases_server(self):
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
 
   def __str__(self):
     return 'go'
@@ -180,6 +198,9 @@ class Http2Client:
   def unimplemented_test_cases(self):
     return _TEST_CASES
 
+  def unimplemented_test_cases_server(self):
+    return []
+
   def __str__(self):
     return 'http2'
 
@@ -203,7 +224,10 @@ class NodeLanguage:
     return {}
 
   def unimplemented_test_cases(self):
-    return []
+    return _SKIP_COMPRESSION
+
+  def unimplemented_test_cases_server(self):
+    return _SKIP_COMPRESSION
 
   def __str__(self):
     return 'node'
@@ -225,6 +249,9 @@ class PHPLanguage:
     return {}
 
   def unimplemented_test_cases(self):
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
+
+  def unimplemented_test_cases_server(self):
     return []
 
   def __str__(self):
@@ -251,7 +278,10 @@ class RubyLanguage:
     return {}
 
   def unimplemented_test_cases(self):
-    return []
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
+
+  def unimplemented_test_cases_server(self):
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
 
   def __str__(self):
     return 'ruby'
@@ -289,7 +319,11 @@ class PythonLanguage:
     return {'LD_LIBRARY_PATH': '{}/libs/opt'.format(DOCKER_WORKDIR_ROOT)}
 
   def unimplemented_test_cases(self):
-    return ['jwt_token_creds', 'per_rpc_creds']
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION + ['jwt_token_creds',
+                                                 'per_rpc_creds']
+
+  def unimplemented_test_cases_server(self):
+    return _SKIP_ADVANCED + _SKIP_COMPRESSION
 
   def __str__(self):
     return 'python'
@@ -312,7 +346,9 @@ _SERVERS = ['c++', 'node', 'csharp', 'java', 'go', 'ruby', 'python']
 _TEST_CASES = ['large_unary', 'empty_unary', 'ping_pong',
                'empty_stream', 'client_streaming', 'server_streaming',
                'cancel_after_begin', 'cancel_after_first_response',
-               'timeout_on_sleeping_server']
+               'timeout_on_sleeping_server', 'custom_metadata',
+               'status_code_and_message', 'unimplemented_method',
+               'large_compressed_unary', 'server_compressed_streaming']
 
 _AUTH_TEST_CASES = ['compute_engine_creds', 'jwt_token_creds',
                     'oauth2_auth_token', 'per_rpc_creds']
@@ -635,9 +671,10 @@ try:
     for language in languages:
       for test_case in _TEST_CASES:
         if not test_case in language.unimplemented_test_cases():
-          test_job = cloud_to_prod_jobspec(language, test_case,
-                                           docker_image=docker_images.get(str(language)))
-          jobs.append(test_job)
+          if not test_case in _SKIP_ADVANCED + _SKIP_COMPRESSION:
+            test_job = cloud_to_prod_jobspec(language, test_case,
+                                             docker_image=docker_images.get(str(language)))
+            jobs.append(test_job)
 
     # TODO(carl-mastrangelo): Currently prod TLS terminators aren't spec compliant. Reenable
     # this once a better solution is in place.
@@ -664,16 +701,21 @@ try:
 
   for server_name, server_address in server_addresses.iteritems():
     (server_host, server_port) = server_address
+    server_language = _LANGUAGES.get(server_name, None)
+    skip_server = []  # test cases unimplemented by server
+    if server_language:
+      skip_server = server_language.unimplemented_test_cases_server()
     for language in languages:
       for test_case in _TEST_CASES:
         if not test_case in language.unimplemented_test_cases():
-          test_job = cloud_to_cloud_jobspec(language,
-                                            test_case,
-                                            server_name,
-                                            server_host,
-                                            server_port,
-                                            docker_image=docker_images.get(str(language)))
-          jobs.append(test_job)
+          if not test_case in skip_server:
+            test_job = cloud_to_cloud_jobspec(language,
+                                              test_case,
+                                              server_name,
+                                              server_host,
+                                              server_port,
+                                              docker_image=docker_images.get(str(language)))
+            jobs.append(test_job)
 
     if args.http2_interop:
       for test_case in _HTTP2_TEST_CASES:
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 4c85f202f47bc9fc08bd1d453641c38281ae0ebd..e3df912480389b105eaaef8e4c53f25e0125df6c 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -508,6 +508,43 @@ _WINDOWS_CONFIG = {
     }
 
 
+def _windows_arch_option(arch):
+  """Returns msbuild cmdline option for selected architecture."""
+  if arch == 'default' or arch == 'windows_x86':
+    return '/p:Platform=Win32'
+  elif arch == 'windows_x64':
+    return '/p:Platform=x64'
+  else:
+    print 'Architecture %s not supported on current platform.' % arch
+    sys.exit(1)
+
+    
+def _windows_build_bat(compiler):
+  """Returns name of build.bat for selected compiler."""
+  if compiler == 'default' or compiler == 'vs2013':
+    return 'vsprojects\\build_vs2013.bat'
+  elif compiler == 'vs2015':
+    return 'vsprojects\\build_vs2015.bat'
+  elif compiler == 'vs2010':
+    return 'vsprojects\\build_vs2010.bat'
+  else:
+    print 'Compiler %s not supported.' % compiler
+    sys.exit(1)
+    
+    
+def _windows_toolset_option(compiler):
+  """Returns msbuild PlatformToolset for selected compiler."""
+  if compiler == 'default' or compiler == 'vs2013':
+    return '/p:PlatformToolset=v120'
+  elif compiler == 'vs2015':
+    return '/p:PlatformToolset=v140'
+  elif compiler == 'vs2010':
+    return '/p:PlatformToolset=v100'
+  else:
+    print 'Compiler %s not supported.' % compiler
+    sys.exit(1)
+   
+
 def runs_per_test_type(arg_str):
     """Auxilary function to parse the "runs_per_test" flag.
 
@@ -572,6 +609,19 @@ argp.add_argument('--allow_flakes',
                   action='store_const',
                   const=True,
                   help='Allow flaky tests to show as passing (re-runs failed tests up to five times)')
+argp.add_argument('--arch',
+                  choices=['default', 'windows_x86', 'windows_x64'],
+                  default='default',
+                  help='Selects architecture to target. For some platforms "default" is the only supported choice.')
+argp.add_argument('--compiler',
+                  choices=['default', 'vs2010', 'vs2013', 'vs2015'],
+                  default='default',
+                  help='Selects compiler to use. For some platforms "default" is the only supported choice.')
+argp.add_argument('--build_only',
+                  default=False,
+                  action='store_const',
+                  const=True,
+                  help='Perform all the build steps but dont run any tests.')
 argp.add_argument('-a', '--antagonists', default=0, type=int)
 argp.add_argument('-x', '--xml_report', default=None, type=str,
         help='Generates a JUnit-compatible XML report')
@@ -633,6 +683,14 @@ if len(build_configs) > 1:
       print language, 'does not support multiple build configurations'
       sys.exit(1)
 
+if platform_string() != 'windows':
+  if args.arch != 'default':
+    print 'Architecture %s not supported on current platform.' % args.arch
+    sys.exit(1)
+  if args.compiler != 'default':
+    print 'Compiler %s not supported on current platform.' % args.compiler
+    sys.exit(1)
+
 if platform_string() == 'windows':
   def make_jobspec(cfg, targets, makefile='Makefile'):
     extra_args = []
@@ -643,9 +701,11 @@ if platform_string() == 'windows':
     # disable PDB generation: it's broken, and we don't need it during CI
     extra_args.extend(['/p:Jenkins=true'])
     return [
-      jobset.JobSpec(['vsprojects\\build.bat',
+      jobset.JobSpec([_windows_build_bat(args.compiler),
                       'vsprojects\\%s.sln' % target,
-                      '/p:Configuration=%s' % _WINDOWS_CONFIG[cfg]] +
+                      '/p:Configuration=%s' % _WINDOWS_CONFIG[cfg],
+                      _windows_toolset_option(args.compiler),
+                      _windows_arch_option(args.arch)] +
                       extra_args,
                       shell=True, timeout_seconds=90*60)
       for target in targets]
@@ -840,7 +900,7 @@ def _calculate_num_runs_failures(list_of_results):
 
 
 def _build_and_run(
-    check_cancelled, newline_on_success, cache, xml_report=None):
+    check_cancelled, newline_on_success, cache, xml_report=None, build_only=False):
   """Do one pass of building & running tests."""
   # build latest sequentially
   num_failures, _ = jobset.run(
@@ -848,6 +908,9 @@ def _build_and_run(
       newline_on_success=newline_on_success, travis=args.travis)
   if num_failures:
     return 1
+    
+  if build_only:
+    return 0
 
   # start antagonists
   antagonists = [subprocess.Popen(['tools/run_tests/antagonist.py'])
@@ -925,7 +988,8 @@ if forever:
     previous_success = success
     success = _build_and_run(check_cancelled=have_files_changed,
                              newline_on_success=False,
-                             cache=test_cache) == 0
+                             cache=test_cache,
+                             build_only=args.build_only) == 0
     if not previous_success and success:
       jobset.message('SUCCESS',
                      'All tests are now passing properly',
@@ -937,7 +1001,8 @@ else:
   result = _build_and_run(check_cancelled=lambda: False,
                           newline_on_success=args.newline_on_success,
                           cache=test_cache,
-                          xml_report=args.xml_report)
+                          xml_report=args.xml_report,
+                          build_only=args.build_only)
   if result == 0:
     jobset.message('SUCCESS', 'All tests passed', do_newline=True)
   else:
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 292c69a0be3095ee56acdaa593b0398a63bdf45c..55b5203cd2633b4403790d5ae7d2639229ffd274 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -1089,6 +1089,20 @@
       "test/core/profiling/timers_test.c"
     ]
   }, 
+  {
+    "deps": [
+      "gpr", 
+      "gpr_test_util", 
+      "grpc", 
+      "grpc_test_util"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "transport_connectivity_state_test", 
+    "src": [
+      "test/core/transport/connectivity_state_test.c"
+    ]
+  }, 
   {
     "deps": [
       "gpr", 
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
index 1b66a322a8db360cd4028ba8ba27e42d602bbb98..f75091d75b67ac56f8c0f8f42992821ed40a1f76 100644
--- a/tools/run_tests/tests.json
+++ b/tools/run_tests/tests.json
@@ -1259,6 +1259,24 @@
       "windows"
     ]
   }, 
+  {
+    "ci_platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ], 
+    "exclude_configs": [], 
+    "flaky": false, 
+    "language": "c", 
+    "name": "transport_connectivity_state_test", 
+    "platforms": [
+      "linux", 
+      "mac", 
+      "posix", 
+      "windows"
+    ]
+  }, 
   {
     "ci_platforms": [
       "linux", 
diff --git a/vsprojects/build_vs2010.bat b/vsprojects/build_vs2010.bat
new file mode 100644
index 0000000000000000000000000000000000000000..64b0ed5d3f51262996bf14945493183d373b7325
--- /dev/null
+++ b/vsprojects/build_vs2010.bat
@@ -0,0 +1,10 @@
+@rem Convenience wrapper that runs specified gRPC target using msbuild
+@rem Usage: build.bat TARGET_NAME
+
+setlocal
+@rem Set VS variables (uses Visual Studio 2010)
+@call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
+
+msbuild %*
+exit /b %ERRORLEVEL%
+endlocal
diff --git a/vsprojects/build.bat b/vsprojects/build_vs2013.bat
similarity index 100%
rename from vsprojects/build.bat
rename to vsprojects/build_vs2013.bat
diff --git a/vsprojects/build_vs2015.bat b/vsprojects/build_vs2015.bat
new file mode 100644
index 0000000000000000000000000000000000000000..50485a30f3070a9b5816548fa647f267ee4a9137
--- /dev/null
+++ b/vsprojects/build_vs2015.bat
@@ -0,0 +1,10 @@
+@rem Convenience wrapper that runs specified gRPC target using msbuild
+@rem Usage: build.bat TARGET_NAME
+
+setlocal
+@rem Set VS variables (uses Visual Studio 2015)
+@call "%VS140COMNTOOLS%\..\..\vc\vcvarsall.bat" x86
+
+msbuild %*
+exit /b %ERRORLEVEL%
+endlocal
diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln
index 943a5c381152ab28f160b7214fd137f0b3ed2b2a..8ca27b02157c495e45d8a244d08235cbd5513c06 100644
--- a/vsprojects/buildtests_c.sln
+++ b/vsprojects/buildtests_c.sln
@@ -1858,6 +1858,17 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timers_test", "vcxproj\test
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
 	EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transport_connectivity_state_test", "vcxproj\test\transport_connectivity_state_test\transport_connectivity_state_test.vcxproj", "{659121F6-1639-AC6B-053E-9D17A8B94D56}"
+	ProjectSection(myProperties) = preProject
+        	lib = "False"
+	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+	EndProjectSection
+EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "transport_metadata_test", "vcxproj\test\transport_metadata_test\transport_metadata_test.vcxproj", "{89A119C5-0F62-33B8-5D08-1FAA29DA7DEB}"
 	ProjectSection(myProperties) = preProject
         	lib = "False"
@@ -12861,6 +12872,22 @@ Global
 		{FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Release-DLL|Win32.Build.0 = Release|Win32
 		{FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Release-DLL|x64.ActiveCfg = Release|x64
 		{FFE98236-3F4D-2CBA-29FB-D0A7467D2FA5}.Release-DLL|x64.Build.0 = Release|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug|Win32.ActiveCfg = Debug|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug|x64.ActiveCfg = Debug|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release|Win32.ActiveCfg = Release|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release|x64.ActiveCfg = Release|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug|Win32.Build.0 = Debug|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug|x64.Build.0 = Debug|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release|Win32.Build.0 = Release|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release|x64.Build.0 = Release|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug-DLL|Win32.Build.0 = Debug|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug-DLL|x64.ActiveCfg = Debug|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Debug-DLL|x64.Build.0 = Debug|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release-DLL|Win32.ActiveCfg = Release|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release-DLL|Win32.Build.0 = Release|Win32
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release-DLL|x64.ActiveCfg = Release|x64
+		{659121F6-1639-AC6B-053E-9D17A8B94D56}.Release-DLL|x64.Build.0 = Release|x64
 		{89A119C5-0F62-33B8-5D08-1FAA29DA7DEB}.Debug|Win32.ActiveCfg = Debug|Win32
 		{89A119C5-0F62-33B8-5D08-1FAA29DA7DEB}.Debug|x64.ActiveCfg = Debug|x64
 		{89A119C5-0F62-33B8-5D08-1FAA29DA7DEB}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vcxproj/test/transport_connectivity_state_test/transport_connectivity_state_test.vcxproj b/vsprojects/vcxproj/test/transport_connectivity_state_test/transport_connectivity_state_test.vcxproj
new file mode 100644
index 0000000000000000000000000000000000000000..7874b4cc160c87ed554964b3c327567137f54671
--- /dev/null
+++ b/vsprojects/vcxproj/test/transport_connectivity_state_test/transport_connectivity_state_test.vcxproj
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props" Condition="Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\1.0.204.1.props')" />
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|x64">
+      <Configuration>Debug</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|x64">
+      <Configuration>Release</Configuration>
+      <Platform>x64</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{659121F6-1639-AC6B-053E-9D17A8B94D56}</ProjectGuid>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
+    <PlatformToolset>v100</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
+    <PlatformToolset>v120</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="..\..\..\..\vsprojects\global.props" />
+    <Import Project="..\..\..\..\vsprojects\openssl.props" />
+    <Import Project="..\..\..\..\vsprojects\winsock.props" />
+    <Import Project="..\..\..\..\vsprojects\zlib.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <TargetName>transport_connectivity_state_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Release'">
+    <TargetName>transport_connectivity_state_test</TargetName>
+    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
+    <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+    <ClCompile>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>NotUsing</PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <SDLCheck>true</SDLCheck>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
+      <GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\..\test\core\transport\connectivity_state_test.c">
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\..\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
+      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\..\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\..\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\..\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  <Import Project="..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets" Condition="Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets" Condition="Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies\grpc.dependencies.zlib.targets')" />
+  <Import Project="..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets" Condition="Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  <Import Project="..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets" Condition="Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies\grpc.dependencies.openssl.targets')" />
+  </ImportGroup>
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.redist.1.2.8.10\build\native\grpc.dependencies.zlib.redist.targets')" />
+    <Error Condition="!Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\vsprojects\packages\grpc.dependencies.zlib.1.2.8.10\build\native\grpc.dependencies.zlib.targets')" />
+    <Error Condition="!Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.redist.1.0.204.1\build\native\grpc.dependencies.openssl.redist.targets')" />
+    <Error Condition="!Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.props')" />
+    <Error Condition="!Exists('..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\vsprojects\packages\grpc.dependencies.openssl.1.0.204.1\build\native\grpc.dependencies.openssl.targets')" />
+  </Target>
+</Project>
+
diff --git a/vsprojects/vcxproj/test/transport_connectivity_state_test/transport_connectivity_state_test.vcxproj.filters b/vsprojects/vcxproj/test/transport_connectivity_state_test/transport_connectivity_state_test.vcxproj.filters
new file mode 100644
index 0000000000000000000000000000000000000000..3415dc951b1bb183c2da24cca1937882d444bb23
--- /dev/null
+++ b/vsprojects/vcxproj/test/transport_connectivity_state_test/transport_connectivity_state_test.vcxproj.filters
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="..\..\..\..\test\core\transport\connectivity_state_test.c">
+      <Filter>test\core\transport</Filter>
+    </ClCompile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Filter Include="test">
+      <UniqueIdentifier>{714707eb-8e3c-a990-6aaf-a23ea345f0cc}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\core">
+      <UniqueIdentifier>{b79db837-dc1a-74b2-dc04-664d00ca3ec7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="test\core\transport">
+      <UniqueIdentifier>{21b47183-e00e-b938-5cae-9f2d972d032b}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+</Project>
+