Merge branch 'master' of github.com:google/grpc into tips
diff --git a/.clang-format b/.clang-format
index 38804f7..4b3f13f 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,65 +1,5 @@
---
Language: Cpp
-# BasedOnStyle: Google
-AccessModifierOffset: -1
-AlignAfterOpenBracket: true
-AlignEscapedNewlinesLeft: true
-AlignOperands: true
-AlignTrailingComments: true
-AllowAllParametersOfDeclarationOnNextLine: true
-AllowShortBlocksOnASingleLine: false
-AllowShortCaseLabelsOnASingleLine: false
-AllowShortIfStatementsOnASingleLine: true
-AllowShortLoopsOnASingleLine: true
-AllowShortFunctionsOnASingleLine: All
-AlwaysBreakAfterDefinitionReturnType: false
-AlwaysBreakTemplateDeclarations: true
-AlwaysBreakBeforeMultilineStrings: true
-BreakBeforeBinaryOperators: None
-BreakBeforeTernaryOperators: true
-BreakConstructorInitializersBeforeComma: false
-BinPackParameters: true
-BinPackArguments: true
-ColumnLimit: 80
-ConstructorInitializerAllOnOneLineOrOnePerLine: true
-ConstructorInitializerIndentWidth: 4
-DerivePointerAlignment: true
-ExperimentalAutoDetectBinPacking: false
-IndentCaseLabels: true
-IndentWrappedFunctionNames: false
-IndentFunctionDeclarationAfterType: false
-MaxEmptyLinesToKeep: 1
-KeepEmptyLinesAtTheStartOfBlocks: false
-NamespaceIndentation: None
-ObjCBlockIndentWidth: 2
-ObjCSpaceAfterProperty: false
-ObjCSpaceBeforeProtocolList: false
-PenaltyBreakBeforeFirstCallParameter: 1
-PenaltyBreakComment: 300
-PenaltyBreakString: 1000
-PenaltyBreakFirstLessLess: 120
-PenaltyExcessCharacter: 1000000
-PenaltyReturnTypeOnItsOwnLine: 200
-PointerAlignment: Left
-SpacesBeforeTrailingComments: 2
-Cpp11BracedListStyle: true
-Standard: Auto
-IndentWidth: 2
-TabWidth: 8
-UseTab: Never
-BreakBeforeBraces: Attach
-SpacesInParentheses: false
-SpacesInSquareBrackets: false
-SpacesInAngles: false
-SpaceInEmptyParentheses: false
-SpacesInCStyleCastParentheses: false
-SpaceAfterCStyleCast: false
-SpacesInContainerLiterals: true
-SpaceBeforeAssignmentOperators: true
-ContinuationIndentWidth: 4
-CommentPragmas: '^ IWYU pragma:'
-ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
-SpaceBeforeParens: ControlStatements
-DisableFormat: false
+BasedOnStyle: Google
...
diff --git a/.gitignore b/.gitignore
index 954b3cf..63332d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,12 +1,21 @@
+# C/C++ build outputs
bins
-coverage
-deps
-*.gcno
gens
libs
objs
+
+# gcov coverage data
+coverage
+*.gcno
+
+# profiler output
+*.prof
+
+# python compiled objects
*.pyc
# cache for run_tests.py
.run_tests_cache
+# emacs temp files
+*~
\ No newline at end of file
diff --git a/INSTALL b/INSTALL
index a9b0b58..98c20f5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,23 +1,103 @@
-Dependencies
-============
+These instructions only cover building grpc C and C++ libraries under
+typical unix systems. If you need more information, please try grpc's
+wiki pages:
-grpc has few external dependencies. If needed, they are present in the
-third_party directory, if you have cloned the github repository recursively.
-If you didn't clone recursively, you can still get them later by running the
-following command:
+ https://github.com/google/grpc/wiki
-$ git submodule update --init
+
+*************************
+* If you are in a hurry *
+*************************
+
+A typical unix installation won't require any more steps than running:
+
+ $ make
+ # make install
+
+You don't need anything else than GNU Make and gcc. Under a Debian or
+Ubuntu system, this should boil down to the following package:
+
+ # apt-get install build-essential
+
+
+*******************************
+* More detailled instructions *
+*******************************
+
+Setting up dependencies
+=======================
+
+Dependencies to compile the libraries
+-------------------------------------
+
+grpc libraries have few external dependencies. If you need to compile and
+install them, they are present in the third_party directory if you have
+cloned the github repository recursively. If you didn't clone recursively,
+you can still get them later by running the following command:
+
+ $ git submodule update --init
Note that the Makefile makes it much easier for you to compile from sources
-if you were to clone recursively our git repository.
+if you were to clone recursively our git repository: it will automatically
+compile zlib and OpenSSL, which are core requirements for grpc. Note this
+creates grpc libraries that will have zlib and OpenSSL built-in inside of them,
+which significantly increases the libraries' size.
+
+In order to decrease that size, you can manually install zlib and OpenSSL on
+your system, so that the Makefile can use them instead.
+
+Under a Debian or Ubuntu system, one can acquire the development package
+for zlib this way:
+
+ # apt-get install zlib1g-dev
+
+To the best of our knowledge, no distribution has an OpenSSL package that
+supports ALPN yet, so you would still have to depend on installing from source
+for that particular dependency if you want to reduce the libraries' size.
+
+The recommended version of OpenSSL that provides ALPN support is available
+at this URL:
+
+ https://www.openssl.org/source/openssl-1.0.2-beta3.tar.gz
-grpc core currently depends on zlib and OpenSSL 1.0.2beta3.
+Dependencies to compile and run the tests
+-----------------------------------------
-grpc++'s tests depends on protobuf 3.0.0, gtests and gflags.
+Compiling and running grpc plain-C tests dont't require any more dependency.
-OpenSSL
--------
+
+Compiling and running grpc C++ tests depend on protobuf 3.0.0, gtest and
+gflags. Although gflags and protobuf are provided in third_party, you will
+need to manually install these dependencies on your system to run these tests.
+
+Under a Debian or Ubuntu system, you can install the gtests and gflags packages
+using apt-get:
+
+ # apt-get install libgflags-dev libgtest-dev
+
+However, protobuf 3.0.0 isn't in a debian package yet: you'll need to compile
+and install it from the sources in the third_party. Note that if you already
+have the protobuf and protoc packages installed on your system, they will most
+likely interfere, and you'll need to uninstall them first.
+
+Compiling and installing protobuf 3.0.0 requires a few more dependencies in
+itself, notably the autoconf suite, curl, and unzip. If you have apt-get, you
+can install these dependencies this way:
+
+ # apt-get install unzip curl autotools-dev
+
+Then, you can build and install protobuf 3.0.0:
+
+ $ cd third_party/protobuf
+ $ ./configure
+ $ make
+ # make install
+ # ldconfig
+
+
+A word on OpenSSL
+-----------------
Secure HTTP2 requires to have the TLS extension ALPN (see rfc 7301 and
http://http2.github.io/http2-spec/ section 3.3). Our HTTP2 implementation
@@ -34,50 +114,29 @@
Compiling
=========
-If you have all the dependencies in the third_party subfolder, you should
-simply be able to go ahead and run "make" to compile grpc. The other targets
-that you might find interesting are "buildtests" and "test".
+If you have all the dependencies mentioned above, you should simply be able
+to go ahead and run "make" to compile grpc's C and C++ libraries:
-If you didn't clone from git, and thus are unable to get the required
-dependencies, you can manually download and unpack the necessary packages,
-and let the Makefile build them itself.
-
-You may also install the dependencies yourself, from the sources, or from
-your distribution's package manager.
-
-The only development package needed for grpc is zlib.
-The development packages needed for grpc++'s tests are gtests, and gflags.
-
-To the best of our knowledge, no distribution has an OpenSSL package that
-supports ALPN yet, so you would still have to depend on installing from source
-for that particular dependency.
-
-The recommended version of OpenSSL that provides ALPN support is available
-at this URL:
-
- https://www.openssl.org/source/openssl-1.0.2-beta3.tar.gz
-
-If you want to let the Makefile build them automatically for you, please
-extract them in the third_party folder. You will need to rename the extracted
-folder the following way:
-
- openssl-1.0.2-beta3 --> openssl
+ $ make
Testing
=======
-At the moment, C++ tests aren't fully available yet. If you want to run tests
-on the C core of grpc, you can do the following:
+To build and run the tests, you can run the command:
-$ make buildtests_c
-$ make test_c
+ $ make test
+
+If you want to be able to run them in parallel, and get better output, you can
+also use the python tool we have written:
+
+ $ ./tools/run_tests/run_tests.py
Installing
==========
-Once everything is compiled, you should be able to install grpc and grpc++
+Once everything is compiled, you should be able to install grpc C and C++
libraries and headers:
-$ sudo make install
+ # make install
diff --git a/Makefile b/Makefile
index db835c8..0f0365b 100644
--- a/Makefile
+++ b/Makefile
@@ -179,6 +179,13 @@
OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/openssl-alpn.c -lssl -lcrypto -ldl $(LDFLAGS)
ZLIB_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/zlib.c -lz $(LDFLAGS)
+PERFTOOLS_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/perftools.c -lprofiler $(LDFLAGS)
+
+HAS_SYSTEM_PERFTOOLS = $(shell $(PERFTOOLS_CHECK_CMD) 2> /dev/null && echo true || echo false)
+ifeq ($(HAS_SYSTEM_PERFTOOLS),true)
+DEFINES += GRPC_HAVE_PERFTOOLS
+LIBS += profiler
+endif
ifndef REQUIRE_CUSTOM_LIBRARIES_$(CONFIG)
HAS_SYSTEM_OPENSSL_ALPN = $(shell $(OPENSSL_ALPN_CHECK_CMD) 2> /dev/null && echo true || echo false)
@@ -287,91 +294,92 @@
stop:
@false
+alarm_heap_test: bins/$(CONFIG)/alarm_heap_test
+alarm_list_test: bins/$(CONFIG)/alarm_list_test
+alarm_test: bins/$(CONFIG)/alarm_test
+alpn_test: bins/$(CONFIG)/alpn_test
+bin_encoder_test: bins/$(CONFIG)/bin_encoder_test
+census_hash_table_test: bins/$(CONFIG)/census_hash_table_test
+census_statistics_multiple_writers_circular_buffer_test: bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test
+census_statistics_multiple_writers_test: bins/$(CONFIG)/census_statistics_multiple_writers_test
+census_statistics_performance_test: bins/$(CONFIG)/census_statistics_performance_test
+census_statistics_quick_test: bins/$(CONFIG)/census_statistics_quick_test
+census_statistics_small_log_test: bins/$(CONFIG)/census_statistics_small_log_test
+census_stats_store_test: bins/$(CONFIG)/census_stats_store_test
+census_stub_test: bins/$(CONFIG)/census_stub_test
+census_trace_store_test: bins/$(CONFIG)/census_trace_store_test
+census_window_stats_test: bins/$(CONFIG)/census_window_stats_test
+chttp2_status_conversion_test: bins/$(CONFIG)/chttp2_status_conversion_test
+chttp2_stream_encoder_test: bins/$(CONFIG)/chttp2_stream_encoder_test
+chttp2_stream_map_test: bins/$(CONFIG)/chttp2_stream_map_test
+chttp2_transport_end2end_test: bins/$(CONFIG)/chttp2_transport_end2end_test
+dualstack_socket_test: bins/$(CONFIG)/dualstack_socket_test
+echo_client: bins/$(CONFIG)/echo_client
+echo_server: bins/$(CONFIG)/echo_server
+echo_test: bins/$(CONFIG)/echo_test
+fd_posix_test: bins/$(CONFIG)/fd_posix_test
+fling_client: bins/$(CONFIG)/fling_client
+fling_server: bins/$(CONFIG)/fling_server
+fling_stream_test: bins/$(CONFIG)/fling_stream_test
+fling_test: bins/$(CONFIG)/fling_test
gen_hpack_tables: bins/$(CONFIG)/gen_hpack_tables
-cpp_plugin: bins/$(CONFIG)/cpp_plugin
-ruby_plugin: bins/$(CONFIG)/ruby_plugin
-grpc_byte_buffer_reader_test: bins/$(CONFIG)/grpc_byte_buffer_reader_test
gpr_cancellable_test: bins/$(CONFIG)/gpr_cancellable_test
-gpr_log_test: bins/$(CONFIG)/gpr_log_test
-gpr_useful_test: bins/$(CONFIG)/gpr_useful_test
gpr_cmdline_test: bins/$(CONFIG)/gpr_cmdline_test
gpr_histogram_test: bins/$(CONFIG)/gpr_histogram_test
gpr_host_port_test: bins/$(CONFIG)/gpr_host_port_test
+gpr_log_test: bins/$(CONFIG)/gpr_log_test
gpr_slice_buffer_test: bins/$(CONFIG)/gpr_slice_buffer_test
gpr_slice_test: bins/$(CONFIG)/gpr_slice_test
gpr_string_test: bins/$(CONFIG)/gpr_string_test
gpr_sync_test: bins/$(CONFIG)/gpr_sync_test
gpr_thd_test: bins/$(CONFIG)/gpr_thd_test
gpr_time_test: bins/$(CONFIG)/gpr_time_test
-murmur_hash_test: bins/$(CONFIG)/murmur_hash_test
-grpc_stream_op_test: bins/$(CONFIG)/grpc_stream_op_test
-alpn_test: bins/$(CONFIG)/alpn_test
-time_averaged_stats_test: bins/$(CONFIG)/time_averaged_stats_test
-chttp2_stream_encoder_test: bins/$(CONFIG)/chttp2_stream_encoder_test
-hpack_table_test: bins/$(CONFIG)/hpack_table_test
-chttp2_stream_map_test: bins/$(CONFIG)/chttp2_stream_map_test
-hpack_parser_test: bins/$(CONFIG)/hpack_parser_test
-transport_metadata_test: bins/$(CONFIG)/transport_metadata_test
-chttp2_status_conversion_test: bins/$(CONFIG)/chttp2_status_conversion_test
-chttp2_transport_end2end_test: bins/$(CONFIG)/chttp2_transport_end2end_test
-tcp_posix_test: bins/$(CONFIG)/tcp_posix_test
-dualstack_socket_test: bins/$(CONFIG)/dualstack_socket_test
-no_server_test: bins/$(CONFIG)/no_server_test
-resolve_address_test: bins/$(CONFIG)/resolve_address_test
-sockaddr_utils_test: bins/$(CONFIG)/sockaddr_utils_test
-tcp_server_posix_test: bins/$(CONFIG)/tcp_server_posix_test
-tcp_client_posix_test: bins/$(CONFIG)/tcp_client_posix_test
+gpr_useful_test: bins/$(CONFIG)/gpr_useful_test
+grpc_base64_test: bins/$(CONFIG)/grpc_base64_test
+grpc_byte_buffer_reader_test: bins/$(CONFIG)/grpc_byte_buffer_reader_test
grpc_channel_stack_test: bins/$(CONFIG)/grpc_channel_stack_test
-metadata_buffer_test: bins/$(CONFIG)/metadata_buffer_test
-grpc_completion_queue_test: bins/$(CONFIG)/grpc_completion_queue_test
grpc_completion_queue_benchmark: bins/$(CONFIG)/grpc_completion_queue_benchmark
-census_trace_store_test: bins/$(CONFIG)/census_trace_store_test
-census_stats_store_test: bins/$(CONFIG)/census_stats_store_test
-census_window_stats_test: bins/$(CONFIG)/census_window_stats_test
-census_statistics_quick_test: bins/$(CONFIG)/census_statistics_quick_test
-census_statistics_small_log_test: bins/$(CONFIG)/census_statistics_small_log_test
-census_statistics_performance_test: bins/$(CONFIG)/census_statistics_performance_test
-census_statistics_multiple_writers_test: bins/$(CONFIG)/census_statistics_multiple_writers_test
-census_statistics_multiple_writers_circular_buffer_test: bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test
-census_stub_test: bins/$(CONFIG)/census_stub_test
-census_hash_table_test: bins/$(CONFIG)/census_hash_table_test
-fling_server: bins/$(CONFIG)/fling_server
-fling_client: bins/$(CONFIG)/fling_client
-fling_test: bins/$(CONFIG)/fling_test
-echo_server: bins/$(CONFIG)/echo_server
-echo_client: bins/$(CONFIG)/echo_client
-echo_test: bins/$(CONFIG)/echo_test
-low_level_ping_pong_benchmark: bins/$(CONFIG)/low_level_ping_pong_benchmark
-message_compress_test: bins/$(CONFIG)/message_compress_test
-bin_encoder_test: bins/$(CONFIG)/bin_encoder_test
-secure_endpoint_test: bins/$(CONFIG)/secure_endpoint_test
+grpc_completion_queue_test: bins/$(CONFIG)/grpc_completion_queue_test
+grpc_credentials_test: bins/$(CONFIG)/grpc_credentials_test
+grpc_fetch_oauth2: bins/$(CONFIG)/grpc_fetch_oauth2
+grpc_json_token_test: bins/$(CONFIG)/grpc_json_token_test
+grpc_stream_op_test: bins/$(CONFIG)/grpc_stream_op_test
+hpack_parser_test: bins/$(CONFIG)/hpack_parser_test
+hpack_table_test: bins/$(CONFIG)/hpack_table_test
httpcli_format_request_test: bins/$(CONFIG)/httpcli_format_request_test
httpcli_parser_test: bins/$(CONFIG)/httpcli_parser_test
httpcli_test: bins/$(CONFIG)/httpcli_test
-grpc_credentials_test: bins/$(CONFIG)/grpc_credentials_test
-grpc_fetch_oauth2: bins/$(CONFIG)/grpc_fetch_oauth2
-grpc_base64_test: bins/$(CONFIG)/grpc_base64_test
-grpc_json_token_test: bins/$(CONFIG)/grpc_json_token_test
-timeout_encoding_test: bins/$(CONFIG)/timeout_encoding_test
-fd_posix_test: bins/$(CONFIG)/fd_posix_test
-fling_stream_test: bins/$(CONFIG)/fling_stream_test
lame_client_test: bins/$(CONFIG)/lame_client_test
-thread_pool_test: bins/$(CONFIG)/thread_pool_test
-status_test: bins/$(CONFIG)/status_test
-sync_client_async_server_test: bins/$(CONFIG)/sync_client_async_server_test
-qps_client: bins/$(CONFIG)/qps_client
-qps_server: bins/$(CONFIG)/qps_server
-interop_server: bins/$(CONFIG)/interop_server
+low_level_ping_pong_benchmark: bins/$(CONFIG)/low_level_ping_pong_benchmark
+message_compress_test: bins/$(CONFIG)/message_compress_test
+metadata_buffer_test: bins/$(CONFIG)/metadata_buffer_test
+murmur_hash_test: bins/$(CONFIG)/murmur_hash_test
+no_server_test: bins/$(CONFIG)/no_server_test
+poll_kick_test: bins/$(CONFIG)/poll_kick_test
+resolve_address_test: bins/$(CONFIG)/resolve_address_test
+secure_endpoint_test: bins/$(CONFIG)/secure_endpoint_test
+sockaddr_utils_test: bins/$(CONFIG)/sockaddr_utils_test
+tcp_client_posix_test: bins/$(CONFIG)/tcp_client_posix_test
+tcp_posix_test: bins/$(CONFIG)/tcp_posix_test
+tcp_server_posix_test: bins/$(CONFIG)/tcp_server_posix_test
+time_averaged_stats_test: bins/$(CONFIG)/time_averaged_stats_test
+time_test: bins/$(CONFIG)/time_test
+timeout_encoding_test: bins/$(CONFIG)/timeout_encoding_test
+transport_metadata_test: bins/$(CONFIG)/transport_metadata_test
+channel_arguments_test: bins/$(CONFIG)/channel_arguments_test
+cpp_plugin: bins/$(CONFIG)/cpp_plugin
+credentials_test: bins/$(CONFIG)/credentials_test
+end2end_test: bins/$(CONFIG)/end2end_test
interop_client: bins/$(CONFIG)/interop_client
+interop_server: bins/$(CONFIG)/interop_server
tips_client: bins/$(CONFIG)/tips_client
tips_client_test: bins/$(CONFIG)/tips_client_test
-end2end_test: bins/$(CONFIG)/end2end_test
-channel_arguments_test: bins/$(CONFIG)/channel_arguments_test
-credentials_test: bins/$(CONFIG)/credentials_test
-alarm_test: bins/$(CONFIG)/alarm_test
-alarm_list_test: bins/$(CONFIG)/alarm_list_test
-alarm_heap_test: bins/$(CONFIG)/alarm_heap_test
-time_test: bins/$(CONFIG)/time_test
+qps_client: bins/$(CONFIG)/qps_client
+qps_server: bins/$(CONFIG)/qps_server
+ruby_plugin: bins/$(CONFIG)/ruby_plugin
+status_test: bins/$(CONFIG)/status_test
+sync_client_async_server_test: bins/$(CONFIG)/sync_client_async_server_test
+thread_pool_test: bins/$(CONFIG)/thread_pool_test
chttp2_fake_security_cancel_after_accept_test: bins/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test
chttp2_fake_security_cancel_after_accept_and_writes_closed_test: bins/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test
chttp2_fake_security_cancel_after_invoke_test: bins/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test
@@ -545,27 +553,67 @@
buildtests: buildtests_c buildtests_cxx
-buildtests_c: privatelibs_c bins/$(CONFIG)/grpc_byte_buffer_reader_test bins/$(CONFIG)/gpr_cancellable_test bins/$(CONFIG)/gpr_log_test bins/$(CONFIG)/gpr_useful_test bins/$(CONFIG)/gpr_cmdline_test bins/$(CONFIG)/gpr_histogram_test bins/$(CONFIG)/gpr_host_port_test bins/$(CONFIG)/gpr_slice_buffer_test bins/$(CONFIG)/gpr_slice_test bins/$(CONFIG)/gpr_string_test bins/$(CONFIG)/gpr_sync_test bins/$(CONFIG)/gpr_thd_test bins/$(CONFIG)/gpr_time_test bins/$(CONFIG)/murmur_hash_test bins/$(CONFIG)/grpc_stream_op_test bins/$(CONFIG)/alpn_test bins/$(CONFIG)/time_averaged_stats_test bins/$(CONFIG)/chttp2_stream_encoder_test bins/$(CONFIG)/hpack_table_test bins/$(CONFIG)/chttp2_stream_map_test bins/$(CONFIG)/hpack_parser_test bins/$(CONFIG)/transport_metadata_test bins/$(CONFIG)/chttp2_status_conversion_test bins/$(CONFIG)/chttp2_transport_end2end_test bins/$(CONFIG)/tcp_posix_test bins/$(CONFIG)/dualstack_socket_test bins/$(CONFIG)/no_server_test bins/$(CONFIG)/resolve_address_test bins/$(CONFIG)/sockaddr_utils_test bins/$(CONFIG)/tcp_server_posix_test bins/$(CONFIG)/tcp_client_posix_test bins/$(CONFIG)/grpc_channel_stack_test bins/$(CONFIG)/metadata_buffer_test bins/$(CONFIG)/grpc_completion_queue_test bins/$(CONFIG)/census_window_stats_test bins/$(CONFIG)/census_statistics_quick_test bins/$(CONFIG)/census_statistics_small_log_test bins/$(CONFIG)/census_statistics_performance_test bins/$(CONFIG)/census_statistics_multiple_writers_test bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test bins/$(CONFIG)/census_stub_test bins/$(CONFIG)/census_hash_table_test bins/$(CONFIG)/fling_server bins/$(CONFIG)/fling_client bins/$(CONFIG)/fling_test bins/$(CONFIG)/echo_server bins/$(CONFIG)/echo_client bins/$(CONFIG)/echo_test bins/$(CONFIG)/message_compress_test bins/$(CONFIG)/bin_encoder_test bins/$(CONFIG)/secure_endpoint_test bins/$(CONFIG)/httpcli_format_request_test bins/$(CONFIG)/httpcli_parser_test bins/$(CONFIG)/httpcli_test bins/$(CONFIG)/grpc_credentials_test bins/$(CONFIG)/grpc_base64_test bins/$(CONFIG)/grpc_json_token_test bins/$(CONFIG)/timeout_encoding_test bins/$(CONFIG)/fd_posix_test bins/$(CONFIG)/fling_stream_test bins/$(CONFIG)/lame_client_test bins/$(CONFIG)/alarm_test bins/$(CONFIG)/alarm_list_test bins/$(CONFIG)/alarm_heap_test bins/$(CONFIG)/time_test bins/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test bins/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test bins/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test bins/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_fake_security_census_simple_request_test bins/$(CONFIG)/chttp2_fake_security_disappearing_server_test bins/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_fake_security_invoke_large_request_test bins/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test bins/$(CONFIG)/chttp2_fake_security_no_op_test bins/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test bins/$(CONFIG)/chttp2_fake_security_simple_request_test bins/$(CONFIG)/chttp2_fake_security_thread_stress_test bins/$(CONFIG)/chttp2_fake_security_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test bins/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test bins/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test bins/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_fullstack_census_simple_request_test bins/$(CONFIG)/chttp2_fullstack_disappearing_server_test bins/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_fullstack_invoke_large_request_test bins/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test bins/$(CONFIG)/chttp2_fullstack_no_op_test bins/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test bins/$(CONFIG)/chttp2_fullstack_simple_request_test bins/$(CONFIG)/chttp2_fullstack_thread_stress_test bins/$(CONFIG)/chttp2_fullstack_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_thread_stress_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_thread_stress_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test bins/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test bins/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test bins/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_socket_pair_census_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_disappearing_server_test bins/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test bins/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test bins/$(CONFIG)/chttp2_socket_pair_no_op_test bins/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_test bins/$(CONFIG)/chttp2_socket_pair_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_thread_stress_test bins/$(CONFIG)/chttp2_socket_pair_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_thread_stress_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_test
+buildtests_c: privatelibs_c bins/$(CONFIG)/alarm_heap_test bins/$(CONFIG)/alarm_list_test bins/$(CONFIG)/alarm_test bins/$(CONFIG)/alpn_test bins/$(CONFIG)/bin_encoder_test bins/$(CONFIG)/census_hash_table_test bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test bins/$(CONFIG)/census_statistics_multiple_writers_test bins/$(CONFIG)/census_statistics_performance_test bins/$(CONFIG)/census_statistics_quick_test bins/$(CONFIG)/census_statistics_small_log_test bins/$(CONFIG)/census_stub_test bins/$(CONFIG)/census_window_stats_test bins/$(CONFIG)/chttp2_status_conversion_test bins/$(CONFIG)/chttp2_stream_encoder_test bins/$(CONFIG)/chttp2_stream_map_test bins/$(CONFIG)/chttp2_transport_end2end_test bins/$(CONFIG)/dualstack_socket_test bins/$(CONFIG)/echo_client bins/$(CONFIG)/echo_server bins/$(CONFIG)/echo_test bins/$(CONFIG)/fd_posix_test bins/$(CONFIG)/fling_client bins/$(CONFIG)/fling_server bins/$(CONFIG)/fling_stream_test bins/$(CONFIG)/fling_test bins/$(CONFIG)/gpr_cancellable_test bins/$(CONFIG)/gpr_cmdline_test bins/$(CONFIG)/gpr_histogram_test bins/$(CONFIG)/gpr_host_port_test bins/$(CONFIG)/gpr_log_test bins/$(CONFIG)/gpr_slice_buffer_test bins/$(CONFIG)/gpr_slice_test bins/$(CONFIG)/gpr_string_test bins/$(CONFIG)/gpr_sync_test bins/$(CONFIG)/gpr_thd_test bins/$(CONFIG)/gpr_time_test bins/$(CONFIG)/gpr_useful_test bins/$(CONFIG)/grpc_base64_test bins/$(CONFIG)/grpc_byte_buffer_reader_test bins/$(CONFIG)/grpc_channel_stack_test bins/$(CONFIG)/grpc_completion_queue_test bins/$(CONFIG)/grpc_credentials_test bins/$(CONFIG)/grpc_json_token_test bins/$(CONFIG)/grpc_stream_op_test bins/$(CONFIG)/hpack_parser_test bins/$(CONFIG)/hpack_table_test bins/$(CONFIG)/httpcli_format_request_test bins/$(CONFIG)/httpcli_parser_test bins/$(CONFIG)/httpcli_test bins/$(CONFIG)/lame_client_test bins/$(CONFIG)/message_compress_test bins/$(CONFIG)/metadata_buffer_test bins/$(CONFIG)/murmur_hash_test bins/$(CONFIG)/no_server_test bins/$(CONFIG)/poll_kick_test bins/$(CONFIG)/resolve_address_test bins/$(CONFIG)/secure_endpoint_test bins/$(CONFIG)/sockaddr_utils_test bins/$(CONFIG)/tcp_client_posix_test bins/$(CONFIG)/tcp_posix_test bins/$(CONFIG)/tcp_server_posix_test bins/$(CONFIG)/time_averaged_stats_test bins/$(CONFIG)/time_test bins/$(CONFIG)/timeout_encoding_test bins/$(CONFIG)/transport_metadata_test bins/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test bins/$(CONFIG)/chttp2_fake_security_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_fake_security_cancel_after_invoke_test bins/$(CONFIG)/chttp2_fake_security_cancel_before_invoke_test bins/$(CONFIG)/chttp2_fake_security_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_fake_security_census_simple_request_test bins/$(CONFIG)/chttp2_fake_security_disappearing_server_test bins/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_fake_security_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_fake_security_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_fake_security_invoke_large_request_test bins/$(CONFIG)/chttp2_fake_security_max_concurrent_streams_test bins/$(CONFIG)/chttp2_fake_security_no_op_test bins/$(CONFIG)/chttp2_fake_security_ping_pong_streaming_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_payload_test bins/$(CONFIG)/chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_fake_security_simple_delayed_request_test bins/$(CONFIG)/chttp2_fake_security_simple_request_test bins/$(CONFIG)/chttp2_fake_security_thread_stress_test bins/$(CONFIG)/chttp2_fake_security_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_fullstack_cancel_after_accept_test bins/$(CONFIG)/chttp2_fullstack_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_fullstack_cancel_after_invoke_test bins/$(CONFIG)/chttp2_fullstack_cancel_before_invoke_test bins/$(CONFIG)/chttp2_fullstack_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_fullstack_census_simple_request_test bins/$(CONFIG)/chttp2_fullstack_disappearing_server_test bins/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_fullstack_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_fullstack_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_fullstack_invoke_large_request_test bins/$(CONFIG)/chttp2_fullstack_max_concurrent_streams_test bins/$(CONFIG)/chttp2_fullstack_no_op_test bins/$(CONFIG)/chttp2_fullstack_ping_pong_streaming_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_payload_test bins/$(CONFIG)/chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_fullstack_simple_delayed_request_test bins/$(CONFIG)/chttp2_fullstack_simple_request_test bins/$(CONFIG)/chttp2_fullstack_thread_stress_test bins/$(CONFIG)/chttp2_fullstack_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_after_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_before_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_census_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_disappearing_server_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_invoke_large_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_max_concurrent_streams_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_no_op_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_ping_pong_streaming_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_delayed_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_thread_stress_test bins/$(CONFIG)/chttp2_simple_ssl_fullstack_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_no_op_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_thread_stress_test bins/$(CONFIG)/chttp2_simple_ssl_with_oauth2_fullstack_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_test bins/$(CONFIG)/chttp2_socket_pair_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_socket_pair_cancel_after_invoke_test bins/$(CONFIG)/chttp2_socket_pair_cancel_before_invoke_test bins/$(CONFIG)/chttp2_socket_pair_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_socket_pair_census_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_disappearing_server_test bins/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_socket_pair_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_socket_pair_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_socket_pair_invoke_large_request_test bins/$(CONFIG)/chttp2_socket_pair_max_concurrent_streams_test bins/$(CONFIG)/chttp2_socket_pair_no_op_test bins/$(CONFIG)/chttp2_socket_pair_ping_pong_streaming_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_payload_test bins/$(CONFIG)/chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_simple_delayed_request_test bins/$(CONFIG)/chttp2_socket_pair_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_thread_stress_test bins/$(CONFIG)/chttp2_socket_pair_writes_done_hangs_with_pending_read_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_no_op_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_simple_request_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_thread_stress_test bins/$(CONFIG)/chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_test
-buildtests_cxx: privatelibs_cxx bins/$(CONFIG)/thread_pool_test bins/$(CONFIG)/status_test bins/$(CONFIG)/sync_client_async_server_test bins/$(CONFIG)/qps_client bins/$(CONFIG)/qps_server bins/$(CONFIG)/interop_server bins/$(CONFIG)/interop_client bins/$(CONFIG)/tips_client bins/$(CONFIG)/tips_client_test bins/$(CONFIG)/end2end_test bins/$(CONFIG)/channel_arguments_test bins/$(CONFIG)/credentials_test
+buildtests_cxx: privatelibs_cxx bins/$(CONFIG)/channel_arguments_test bins/$(CONFIG)/credentials_test bins/$(CONFIG)/end2end_test bins/$(CONFIG)/interop_client bins/$(CONFIG)/interop_server bins/$(CONFIG)/tips_client bins/$(CONFIG)/tips_client_test bins/$(CONFIG)/qps_client bins/$(CONFIG)/qps_server bins/$(CONFIG)/status_test bins/$(CONFIG)/sync_client_async_server_test bins/$(CONFIG)/thread_pool_test
test: test_c test_cxx
test_c: buildtests_c
- $(E) "[RUN] Testing grpc_byte_buffer_reader_test"
- $(Q) ./bins/$(CONFIG)/grpc_byte_buffer_reader_test || ( echo test grpc_byte_buffer_reader_test failed ; exit 1 )
+ $(E) "[RUN] Testing alarm_heap_test"
+ $(Q) ./bins/$(CONFIG)/alarm_heap_test || ( echo test alarm_heap_test failed ; exit 1 )
+ $(E) "[RUN] Testing alarm_list_test"
+ $(Q) ./bins/$(CONFIG)/alarm_list_test || ( echo test alarm_list_test failed ; exit 1 )
+ $(E) "[RUN] Testing alarm_test"
+ $(Q) ./bins/$(CONFIG)/alarm_test || ( echo test alarm_test failed ; exit 1 )
+ $(E) "[RUN] Testing alpn_test"
+ $(Q) ./bins/$(CONFIG)/alpn_test || ( echo test alpn_test failed ; exit 1 )
+ $(E) "[RUN] Testing bin_encoder_test"
+ $(Q) ./bins/$(CONFIG)/bin_encoder_test || ( echo test bin_encoder_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_hash_table_test"
+ $(Q) ./bins/$(CONFIG)/census_hash_table_test || ( echo test census_hash_table_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_statistics_multiple_writers_circular_buffer_test"
+ $(Q) ./bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test || ( echo test census_statistics_multiple_writers_circular_buffer_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_statistics_multiple_writers_test"
+ $(Q) ./bins/$(CONFIG)/census_statistics_multiple_writers_test || ( echo test census_statistics_multiple_writers_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_statistics_performance_test"
+ $(Q) ./bins/$(CONFIG)/census_statistics_performance_test || ( echo test census_statistics_performance_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_statistics_quick_test"
+ $(Q) ./bins/$(CONFIG)/census_statistics_quick_test || ( echo test census_statistics_quick_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_statistics_small_log_test"
+ $(Q) ./bins/$(CONFIG)/census_statistics_small_log_test || ( echo test census_statistics_small_log_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_stub_test"
+ $(Q) ./bins/$(CONFIG)/census_stub_test || ( echo test census_stub_test failed ; exit 1 )
+ $(E) "[RUN] Testing census_window_stats_test"
+ $(Q) ./bins/$(CONFIG)/census_window_stats_test || ( echo test census_window_stats_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_status_conversion_test"
+ $(Q) ./bins/$(CONFIG)/chttp2_status_conversion_test || ( echo test chttp2_status_conversion_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_stream_encoder_test"
+ $(Q) ./bins/$(CONFIG)/chttp2_stream_encoder_test || ( echo test chttp2_stream_encoder_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_stream_map_test"
+ $(Q) ./bins/$(CONFIG)/chttp2_stream_map_test || ( echo test chttp2_stream_map_test failed ; exit 1 )
+ $(E) "[RUN] Testing chttp2_transport_end2end_test"
+ $(Q) ./bins/$(CONFIG)/chttp2_transport_end2end_test || ( echo test chttp2_transport_end2end_test failed ; exit 1 )
+ $(E) "[RUN] Testing dualstack_socket_test"
+ $(Q) ./bins/$(CONFIG)/dualstack_socket_test || ( echo test dualstack_socket_test failed ; exit 1 )
+ $(E) "[RUN] Testing echo_test"
+ $(Q) ./bins/$(CONFIG)/echo_test || ( echo test echo_test failed ; exit 1 )
+ $(E) "[RUN] Testing fd_posix_test"
+ $(Q) ./bins/$(CONFIG)/fd_posix_test || ( echo test fd_posix_test failed ; exit 1 )
+ $(E) "[RUN] Testing fling_stream_test"
+ $(Q) ./bins/$(CONFIG)/fling_stream_test || ( echo test fling_stream_test failed ; exit 1 )
+ $(E) "[RUN] Testing fling_test"
+ $(Q) ./bins/$(CONFIG)/fling_test || ( echo test fling_test failed ; exit 1 )
$(E) "[RUN] Testing gpr_cancellable_test"
$(Q) ./bins/$(CONFIG)/gpr_cancellable_test || ( echo test gpr_cancellable_test failed ; exit 1 )
- $(E) "[RUN] Testing gpr_log_test"
- $(Q) ./bins/$(CONFIG)/gpr_log_test || ( echo test gpr_log_test failed ; exit 1 )
- $(E) "[RUN] Testing gpr_useful_test"
- $(Q) ./bins/$(CONFIG)/gpr_useful_test || ( echo test gpr_useful_test failed ; exit 1 )
$(E) "[RUN] Testing gpr_cmdline_test"
$(Q) ./bins/$(CONFIG)/gpr_cmdline_test || ( echo test gpr_cmdline_test failed ; exit 1 )
$(E) "[RUN] Testing gpr_histogram_test"
$(Q) ./bins/$(CONFIG)/gpr_histogram_test || ( echo test gpr_histogram_test failed ; exit 1 )
$(E) "[RUN] Testing gpr_host_port_test"
$(Q) ./bins/$(CONFIG)/gpr_host_port_test || ( echo test gpr_host_port_test failed ; exit 1 )
+ $(E) "[RUN] Testing gpr_log_test"
+ $(Q) ./bins/$(CONFIG)/gpr_log_test || ( echo test gpr_log_test failed ; exit 1 )
$(E) "[RUN] Testing gpr_slice_buffer_test"
$(Q) ./bins/$(CONFIG)/gpr_slice_buffer_test || ( echo test gpr_slice_buffer_test failed ; exit 1 )
$(E) "[RUN] Testing gpr_slice_test"
@@ -578,102 +626,64 @@
$(Q) ./bins/$(CONFIG)/gpr_thd_test || ( echo test gpr_thd_test failed ; exit 1 )
$(E) "[RUN] Testing gpr_time_test"
$(Q) ./bins/$(CONFIG)/gpr_time_test || ( echo test gpr_time_test failed ; exit 1 )
- $(E) "[RUN] Testing murmur_hash_test"
- $(Q) ./bins/$(CONFIG)/murmur_hash_test || ( echo test murmur_hash_test failed ; exit 1 )
- $(E) "[RUN] Testing grpc_stream_op_test"
- $(Q) ./bins/$(CONFIG)/grpc_stream_op_test || ( echo test grpc_stream_op_test failed ; exit 1 )
- $(E) "[RUN] Testing alpn_test"
- $(Q) ./bins/$(CONFIG)/alpn_test || ( echo test alpn_test failed ; exit 1 )
- $(E) "[RUN] Testing time_averaged_stats_test"
- $(Q) ./bins/$(CONFIG)/time_averaged_stats_test || ( echo test time_averaged_stats_test failed ; exit 1 )
- $(E) "[RUN] Testing chttp2_stream_encoder_test"
- $(Q) ./bins/$(CONFIG)/chttp2_stream_encoder_test || ( echo test chttp2_stream_encoder_test failed ; exit 1 )
- $(E) "[RUN] Testing hpack_table_test"
- $(Q) ./bins/$(CONFIG)/hpack_table_test || ( echo test hpack_table_test failed ; exit 1 )
- $(E) "[RUN] Testing chttp2_stream_map_test"
- $(Q) ./bins/$(CONFIG)/chttp2_stream_map_test || ( echo test chttp2_stream_map_test failed ; exit 1 )
- $(E) "[RUN] Testing hpack_parser_test"
- $(Q) ./bins/$(CONFIG)/hpack_parser_test || ( echo test hpack_parser_test failed ; exit 1 )
- $(E) "[RUN] Testing transport_metadata_test"
- $(Q) ./bins/$(CONFIG)/transport_metadata_test || ( echo test transport_metadata_test failed ; exit 1 )
- $(E) "[RUN] Testing chttp2_status_conversion_test"
- $(Q) ./bins/$(CONFIG)/chttp2_status_conversion_test || ( echo test chttp2_status_conversion_test failed ; exit 1 )
- $(E) "[RUN] Testing chttp2_transport_end2end_test"
- $(Q) ./bins/$(CONFIG)/chttp2_transport_end2end_test || ( echo test chttp2_transport_end2end_test failed ; exit 1 )
- $(E) "[RUN] Testing tcp_posix_test"
- $(Q) ./bins/$(CONFIG)/tcp_posix_test || ( echo test tcp_posix_test failed ; exit 1 )
- $(E) "[RUN] Testing dualstack_socket_test"
- $(Q) ./bins/$(CONFIG)/dualstack_socket_test || ( echo test dualstack_socket_test failed ; exit 1 )
- $(E) "[RUN] Testing no_server_test"
- $(Q) ./bins/$(CONFIG)/no_server_test || ( echo test no_server_test failed ; exit 1 )
- $(E) "[RUN] Testing resolve_address_test"
- $(Q) ./bins/$(CONFIG)/resolve_address_test || ( echo test resolve_address_test failed ; exit 1 )
- $(E) "[RUN] Testing sockaddr_utils_test"
- $(Q) ./bins/$(CONFIG)/sockaddr_utils_test || ( echo test sockaddr_utils_test failed ; exit 1 )
- $(E) "[RUN] Testing tcp_server_posix_test"
- $(Q) ./bins/$(CONFIG)/tcp_server_posix_test || ( echo test tcp_server_posix_test failed ; exit 1 )
- $(E) "[RUN] Testing tcp_client_posix_test"
- $(Q) ./bins/$(CONFIG)/tcp_client_posix_test || ( echo test tcp_client_posix_test failed ; exit 1 )
+ $(E) "[RUN] Testing gpr_useful_test"
+ $(Q) ./bins/$(CONFIG)/gpr_useful_test || ( echo test gpr_useful_test failed ; exit 1 )
+ $(E) "[RUN] Testing grpc_base64_test"
+ $(Q) ./bins/$(CONFIG)/grpc_base64_test || ( echo test grpc_base64_test failed ; exit 1 )
+ $(E) "[RUN] Testing grpc_byte_buffer_reader_test"
+ $(Q) ./bins/$(CONFIG)/grpc_byte_buffer_reader_test || ( echo test grpc_byte_buffer_reader_test failed ; exit 1 )
$(E) "[RUN] Testing grpc_channel_stack_test"
$(Q) ./bins/$(CONFIG)/grpc_channel_stack_test || ( echo test grpc_channel_stack_test failed ; exit 1 )
- $(E) "[RUN] Testing metadata_buffer_test"
- $(Q) ./bins/$(CONFIG)/metadata_buffer_test || ( echo test metadata_buffer_test failed ; exit 1 )
$(E) "[RUN] Testing grpc_completion_queue_test"
$(Q) ./bins/$(CONFIG)/grpc_completion_queue_test || ( echo test grpc_completion_queue_test failed ; exit 1 )
- $(E) "[RUN] Testing census_window_stats_test"
- $(Q) ./bins/$(CONFIG)/census_window_stats_test || ( echo test census_window_stats_test failed ; exit 1 )
- $(E) "[RUN] Testing census_statistics_quick_test"
- $(Q) ./bins/$(CONFIG)/census_statistics_quick_test || ( echo test census_statistics_quick_test failed ; exit 1 )
- $(E) "[RUN] Testing census_statistics_small_log_test"
- $(Q) ./bins/$(CONFIG)/census_statistics_small_log_test || ( echo test census_statistics_small_log_test failed ; exit 1 )
- $(E) "[RUN] Testing census_statistics_performance_test"
- $(Q) ./bins/$(CONFIG)/census_statistics_performance_test || ( echo test census_statistics_performance_test failed ; exit 1 )
- $(E) "[RUN] Testing census_statistics_multiple_writers_test"
- $(Q) ./bins/$(CONFIG)/census_statistics_multiple_writers_test || ( echo test census_statistics_multiple_writers_test failed ; exit 1 )
- $(E) "[RUN] Testing census_statistics_multiple_writers_circular_buffer_test"
- $(Q) ./bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test || ( echo test census_statistics_multiple_writers_circular_buffer_test failed ; exit 1 )
- $(E) "[RUN] Testing census_stub_test"
- $(Q) ./bins/$(CONFIG)/census_stub_test || ( echo test census_stub_test failed ; exit 1 )
- $(E) "[RUN] Testing census_hash_table_test"
- $(Q) ./bins/$(CONFIG)/census_hash_table_test || ( echo test census_hash_table_test failed ; exit 1 )
- $(E) "[RUN] Testing fling_test"
- $(Q) ./bins/$(CONFIG)/fling_test || ( echo test fling_test failed ; exit 1 )
- $(E) "[RUN] Testing echo_test"
- $(Q) ./bins/$(CONFIG)/echo_test || ( echo test echo_test failed ; exit 1 )
- $(E) "[RUN] Testing message_compress_test"
- $(Q) ./bins/$(CONFIG)/message_compress_test || ( echo test message_compress_test failed ; exit 1 )
- $(E) "[RUN] Testing bin_encoder_test"
- $(Q) ./bins/$(CONFIG)/bin_encoder_test || ( echo test bin_encoder_test failed ; exit 1 )
- $(E) "[RUN] Testing secure_endpoint_test"
- $(Q) ./bins/$(CONFIG)/secure_endpoint_test || ( echo test secure_endpoint_test failed ; exit 1 )
+ $(E) "[RUN] Testing grpc_credentials_test"
+ $(Q) ./bins/$(CONFIG)/grpc_credentials_test || ( echo test grpc_credentials_test failed ; exit 1 )
+ $(E) "[RUN] Testing grpc_json_token_test"
+ $(Q) ./bins/$(CONFIG)/grpc_json_token_test || ( echo test grpc_json_token_test failed ; exit 1 )
+ $(E) "[RUN] Testing grpc_stream_op_test"
+ $(Q) ./bins/$(CONFIG)/grpc_stream_op_test || ( echo test grpc_stream_op_test failed ; exit 1 )
+ $(E) "[RUN] Testing hpack_parser_test"
+ $(Q) ./bins/$(CONFIG)/hpack_parser_test || ( echo test hpack_parser_test failed ; exit 1 )
+ $(E) "[RUN] Testing hpack_table_test"
+ $(Q) ./bins/$(CONFIG)/hpack_table_test || ( echo test hpack_table_test failed ; exit 1 )
$(E) "[RUN] Testing httpcli_format_request_test"
$(Q) ./bins/$(CONFIG)/httpcli_format_request_test || ( echo test httpcli_format_request_test failed ; exit 1 )
$(E) "[RUN] Testing httpcli_parser_test"
$(Q) ./bins/$(CONFIG)/httpcli_parser_test || ( echo test httpcli_parser_test failed ; exit 1 )
$(E) "[RUN] Testing httpcli_test"
$(Q) ./bins/$(CONFIG)/httpcli_test || ( echo test httpcli_test failed ; exit 1 )
- $(E) "[RUN] Testing grpc_credentials_test"
- $(Q) ./bins/$(CONFIG)/grpc_credentials_test || ( echo test grpc_credentials_test failed ; exit 1 )
- $(E) "[RUN] Testing grpc_base64_test"
- $(Q) ./bins/$(CONFIG)/grpc_base64_test || ( echo test grpc_base64_test failed ; exit 1 )
- $(E) "[RUN] Testing grpc_json_token_test"
- $(Q) ./bins/$(CONFIG)/grpc_json_token_test || ( echo test grpc_json_token_test failed ; exit 1 )
- $(E) "[RUN] Testing timeout_encoding_test"
- $(Q) ./bins/$(CONFIG)/timeout_encoding_test || ( echo test timeout_encoding_test failed ; exit 1 )
- $(E) "[RUN] Testing fd_posix_test"
- $(Q) ./bins/$(CONFIG)/fd_posix_test || ( echo test fd_posix_test failed ; exit 1 )
- $(E) "[RUN] Testing fling_stream_test"
- $(Q) ./bins/$(CONFIG)/fling_stream_test || ( echo test fling_stream_test failed ; exit 1 )
$(E) "[RUN] Testing lame_client_test"
$(Q) ./bins/$(CONFIG)/lame_client_test || ( echo test lame_client_test failed ; exit 1 )
- $(E) "[RUN] Testing alarm_test"
- $(Q) ./bins/$(CONFIG)/alarm_test || ( echo test alarm_test failed ; exit 1 )
- $(E) "[RUN] Testing alarm_list_test"
- $(Q) ./bins/$(CONFIG)/alarm_list_test || ( echo test alarm_list_test failed ; exit 1 )
- $(E) "[RUN] Testing alarm_heap_test"
- $(Q) ./bins/$(CONFIG)/alarm_heap_test || ( echo test alarm_heap_test failed ; exit 1 )
+ $(E) "[RUN] Testing message_compress_test"
+ $(Q) ./bins/$(CONFIG)/message_compress_test || ( echo test message_compress_test failed ; exit 1 )
+ $(E) "[RUN] Testing metadata_buffer_test"
+ $(Q) ./bins/$(CONFIG)/metadata_buffer_test || ( echo test metadata_buffer_test failed ; exit 1 )
+ $(E) "[RUN] Testing murmur_hash_test"
+ $(Q) ./bins/$(CONFIG)/murmur_hash_test || ( echo test murmur_hash_test failed ; exit 1 )
+ $(E) "[RUN] Testing no_server_test"
+ $(Q) ./bins/$(CONFIG)/no_server_test || ( echo test no_server_test failed ; exit 1 )
+ $(E) "[RUN] Testing poll_kick_test"
+ $(Q) ./bins/$(CONFIG)/poll_kick_test || ( echo test poll_kick_test failed ; exit 1 )
+ $(E) "[RUN] Testing resolve_address_test"
+ $(Q) ./bins/$(CONFIG)/resolve_address_test || ( echo test resolve_address_test failed ; exit 1 )
+ $(E) "[RUN] Testing secure_endpoint_test"
+ $(Q) ./bins/$(CONFIG)/secure_endpoint_test || ( echo test secure_endpoint_test failed ; exit 1 )
+ $(E) "[RUN] Testing sockaddr_utils_test"
+ $(Q) ./bins/$(CONFIG)/sockaddr_utils_test || ( echo test sockaddr_utils_test failed ; exit 1 )
+ $(E) "[RUN] Testing tcp_client_posix_test"
+ $(Q) ./bins/$(CONFIG)/tcp_client_posix_test || ( echo test tcp_client_posix_test failed ; exit 1 )
+ $(E) "[RUN] Testing tcp_posix_test"
+ $(Q) ./bins/$(CONFIG)/tcp_posix_test || ( echo test tcp_posix_test failed ; exit 1 )
+ $(E) "[RUN] Testing tcp_server_posix_test"
+ $(Q) ./bins/$(CONFIG)/tcp_server_posix_test || ( echo test tcp_server_posix_test failed ; exit 1 )
+ $(E) "[RUN] Testing time_averaged_stats_test"
+ $(Q) ./bins/$(CONFIG)/time_averaged_stats_test || ( echo test time_averaged_stats_test failed ; exit 1 )
$(E) "[RUN] Testing time_test"
$(Q) ./bins/$(CONFIG)/time_test || ( echo test time_test failed ; exit 1 )
+ $(E) "[RUN] Testing timeout_encoding_test"
+ $(Q) ./bins/$(CONFIG)/timeout_encoding_test || ( echo test timeout_encoding_test failed ; exit 1 )
+ $(E) "[RUN] Testing transport_metadata_test"
+ $(Q) ./bins/$(CONFIG)/transport_metadata_test || ( echo test transport_metadata_test failed ; exit 1 )
$(E) "[RUN] Testing chttp2_fake_security_cancel_after_accept_test"
$(Q) ./bins/$(CONFIG)/chttp2_fake_security_cancel_after_accept_test || ( echo test chttp2_fake_security_cancel_after_accept_test failed ; exit 1 )
$(E) "[RUN] Testing chttp2_fake_security_cancel_after_accept_and_writes_closed_test"
@@ -941,24 +951,24 @@
test_cxx: buildtests_cxx
- $(E) "[RUN] Testing thread_pool_test"
- $(Q) ./bins/$(CONFIG)/thread_pool_test || ( echo test thread_pool_test failed ; exit 1 )
- $(E) "[RUN] Testing status_test"
- $(Q) ./bins/$(CONFIG)/status_test || ( echo test status_test failed ; exit 1 )
- $(E) "[RUN] Testing sync_client_async_server_test"
- $(Q) ./bins/$(CONFIG)/sync_client_async_server_test || ( echo test sync_client_async_server_test failed ; exit 1 )
- $(E) "[RUN] Testing qps_client"
- $(Q) ./bins/$(CONFIG)/qps_client || ( echo test qps_client failed ; exit 1 )
- $(E) "[RUN] Testing qps_server"
- $(Q) ./bins/$(CONFIG)/qps_server || ( echo test qps_server failed ; exit 1 )
- $(E) "[RUN] Testing tips_client_test"
- $(Q) ./bins/$(CONFIG)/tips_client_test || ( echo test tips_client_test failed ; exit 1 )
- $(E) "[RUN] Testing end2end_test"
- $(Q) ./bins/$(CONFIG)/end2end_test || ( echo test end2end_test failed ; exit 1 )
$(E) "[RUN] Testing channel_arguments_test"
$(Q) ./bins/$(CONFIG)/channel_arguments_test || ( echo test channel_arguments_test failed ; exit 1 )
$(E) "[RUN] Testing credentials_test"
$(Q) ./bins/$(CONFIG)/credentials_test || ( echo test credentials_test failed ; exit 1 )
+ $(E) "[RUN] Testing end2end_test"
+ $(Q) ./bins/$(CONFIG)/end2end_test || ( echo test end2end_test failed ; exit 1 )
+ $(E) "[RUN] Testing tips_client_test"
+ $(Q) ./bins/$(CONFIG)/tips_client_test || ( echo test tips_client_test failed ; exit 1 )
+ $(E) "[RUN] Testing qps_client"
+ $(Q) ./bins/$(CONFIG)/qps_client || ( echo test qps_client failed ; exit 1 )
+ $(E) "[RUN] Testing qps_server"
+ $(Q) ./bins/$(CONFIG)/qps_server || ( echo test qps_server failed ; exit 1 )
+ $(E) "[RUN] Testing status_test"
+ $(Q) ./bins/$(CONFIG)/status_test || ( echo test status_test failed ; exit 1 )
+ $(E) "[RUN] Testing sync_client_async_server_test"
+ $(Q) ./bins/$(CONFIG)/sync_client_async_server_test || ( echo test sync_client_async_server_test failed ; exit 1 )
+ $(E) "[RUN] Testing thread_pool_test"
+ $(Q) ./bins/$(CONFIG)/thread_pool_test || ( echo test thread_pool_test failed ; exit 1 )
tools: privatelibs bins/$(CONFIG)/gen_hpack_tables bins/$(CONFIG)/grpc_fetch_oauth2
@@ -1177,14 +1187,14 @@
src/core/support/cpu_posix.c \
src/core/support/histogram.c \
src/core/support/host_port.c \
- src/core/support/log_android.c \
src/core/support/log.c \
+ src/core/support/log_android.c \
src/core/support/log_linux.c \
src/core/support/log_posix.c \
src/core/support/log_win32.c \
src/core/support/murmur_hash.c \
- src/core/support/slice_buffer.c \
src/core/support/slice.c \
+ src/core/support/slice_buffer.c \
src/core/support/string.c \
src/core/support/string_posix.c \
src/core/support/string_win32.c \
@@ -1199,9 +1209,9 @@
PUBLIC_HEADERS_C += \
include/grpc/support/alloc.h \
+ include/grpc/support/atm.h \
include/grpc/support/atm_gcc_atomic.h \
include/grpc/support/atm_gcc_sync.h \
- include/grpc/support/atm.h \
include/grpc/support/atm_win32.h \
include/grpc/support/cancellable_platform.h \
include/grpc/support/cmdline.h \
@@ -1209,11 +1219,11 @@
include/grpc/support/host_port.h \
include/grpc/support/log.h \
include/grpc/support/port_platform.h \
- include/grpc/support/slice_buffer.h \
include/grpc/support/slice.h \
+ include/grpc/support/slice_buffer.h \
include/grpc/support/string.h \
- include/grpc/support/sync_generic.h \
include/grpc/support/sync.h \
+ include/grpc/support/sync_generic.h \
include/grpc/support/sync_posix.h \
include/grpc/support/sync_win32.h \
include/grpc/support/thd.h \
@@ -1262,14 +1272,14 @@
objs/$(CONFIG)/src/core/support/cpu_posix.o:
objs/$(CONFIG)/src/core/support/histogram.o:
objs/$(CONFIG)/src/core/support/host_port.o:
-objs/$(CONFIG)/src/core/support/log_android.o:
objs/$(CONFIG)/src/core/support/log.o:
+objs/$(CONFIG)/src/core/support/log_android.o:
objs/$(CONFIG)/src/core/support/log_linux.o:
objs/$(CONFIG)/src/core/support/log_posix.o:
objs/$(CONFIG)/src/core/support/log_win32.o:
objs/$(CONFIG)/src/core/support/murmur_hash.o:
-objs/$(CONFIG)/src/core/support/slice_buffer.o:
objs/$(CONFIG)/src/core/support/slice.o:
+objs/$(CONFIG)/src/core/support/slice_buffer.o:
objs/$(CONFIG)/src/core/support/string.o:
objs/$(CONFIG)/src/core/support/string_posix.o:
objs/$(CONFIG)/src/core/support/string_win32.o:
@@ -1283,6 +1293,45 @@
objs/$(CONFIG)/src/core/support/time_win32.o:
+LIBGPR_TEST_UTIL_SRC = \
+ test/core/util/test_config.c \
+
+
+LIBGPR_TEST_UTIL_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGPR_TEST_UTIL_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure libraries if you don't have OpenSSL with ALPN.
+
+libs/$(CONFIG)/libgpr_test_util.a: openssl_dep_error
+
+
+else
+
+ifneq ($(OPENSSL_DEP),)
+test/core/util/test_config.c: $(OPENSSL_DEP)
+endif
+
+libs/$(CONFIG)/libgpr_test_util.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGPR_TEST_UTIL_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(AR) rcs libs/$(CONFIG)/libgpr_test_util.a $(LIBGPR_TEST_UTIL_OBJS)
+
+
+
+
+
+endif
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(LIBGPR_TEST_UTIL_OBJS:.o=.dep)
+endif
+endif
+
+objs/$(CONFIG)/test/core/util/test_config.o:
+
+
LIBGRPC_SRC = \
src/core/security/auth.c \
src/core/security/base64.c \
@@ -1323,6 +1372,7 @@
src/core/iomgr/fd_posix.c \
src/core/iomgr/iomgr.c \
src/core/iomgr/iomgr_posix.c \
+ src/core/iomgr/pollset_kick_posix.c \
src/core/iomgr/pollset_multipoller_with_poll_posix.c \
src/core/iomgr/pollset_posix.c \
src/core/iomgr/resolve_address_posix.c \
@@ -1440,6 +1490,7 @@
src/core/iomgr/fd_posix.c: $(OPENSSL_DEP)
src/core/iomgr/iomgr.c: $(OPENSSL_DEP)
src/core/iomgr/iomgr_posix.c: $(OPENSSL_DEP)
+src/core/iomgr/pollset_kick_posix.c: $(OPENSSL_DEP)
src/core/iomgr/pollset_multipoller_with_poll_posix.c: $(OPENSSL_DEP)
src/core/iomgr/pollset_posix.c: $(OPENSSL_DEP)
src/core/iomgr/resolve_address_posix.c: $(OPENSSL_DEP)
@@ -1574,6 +1625,7 @@
objs/$(CONFIG)/src/core/iomgr/fd_posix.o:
objs/$(CONFIG)/src/core/iomgr/iomgr.o:
objs/$(CONFIG)/src/core/iomgr/iomgr_posix.o:
+objs/$(CONFIG)/src/core/iomgr/pollset_kick_posix.o:
objs/$(CONFIG)/src/core/iomgr/pollset_multipoller_with_poll_posix.o:
objs/$(CONFIG)/src/core/iomgr/pollset_posix.o:
objs/$(CONFIG)/src/core/iomgr/resolve_address_posix.o:
@@ -1629,6 +1681,78 @@
objs/$(CONFIG)/third_party/cJSON/cJSON.o:
+LIBGRPC_TEST_UTIL_SRC = \
+ test/core/end2end/cq_verifier.c \
+ test/core/end2end/data/prod_roots_certs.c \
+ test/core/end2end/data/server1_cert.c \
+ test/core/end2end/data/server1_key.c \
+ test/core/end2end/data/test_root_cert.c \
+ test/core/iomgr/endpoint_tests.c \
+ test/core/statistics/census_log_tests.c \
+ test/core/transport/transport_end2end_tests.c \
+ test/core/util/grpc_profiler.c \
+ test/core/util/parse_hexstring.c \
+ test/core/util/port_posix.c \
+ test/core/util/slice_splitter.c \
+
+
+LIBGRPC_TEST_UTIL_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_TEST_UTIL_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure libraries if you don't have OpenSSL with ALPN.
+
+libs/$(CONFIG)/libgrpc_test_util.a: openssl_dep_error
+
+
+else
+
+ifneq ($(OPENSSL_DEP),)
+test/core/end2end/cq_verifier.c: $(OPENSSL_DEP)
+test/core/end2end/data/prod_roots_certs.c: $(OPENSSL_DEP)
+test/core/end2end/data/server1_cert.c: $(OPENSSL_DEP)
+test/core/end2end/data/server1_key.c: $(OPENSSL_DEP)
+test/core/end2end/data/test_root_cert.c: $(OPENSSL_DEP)
+test/core/iomgr/endpoint_tests.c: $(OPENSSL_DEP)
+test/core/statistics/census_log_tests.c: $(OPENSSL_DEP)
+test/core/transport/transport_end2end_tests.c: $(OPENSSL_DEP)
+test/core/util/grpc_profiler.c: $(OPENSSL_DEP)
+test/core/util/parse_hexstring.c: $(OPENSSL_DEP)
+test/core/util/port_posix.c: $(OPENSSL_DEP)
+test/core/util/slice_splitter.c: $(OPENSSL_DEP)
+endif
+
+libs/$(CONFIG)/libgrpc_test_util.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC_TEST_UTIL_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(AR) rcs libs/$(CONFIG)/libgrpc_test_util.a $(LIBGRPC_TEST_UTIL_OBJS)
+
+
+
+
+
+endif
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(LIBGRPC_TEST_UTIL_OBJS:.o=.dep)
+endif
+endif
+
+objs/$(CONFIG)/test/core/end2end/cq_verifier.o:
+objs/$(CONFIG)/test/core/end2end/data/prod_roots_certs.o:
+objs/$(CONFIG)/test/core/end2end/data/server1_cert.o:
+objs/$(CONFIG)/test/core/end2end/data/server1_key.o:
+objs/$(CONFIG)/test/core/end2end/data/test_root_cert.o:
+objs/$(CONFIG)/test/core/iomgr/endpoint_tests.o:
+objs/$(CONFIG)/test/core/statistics/census_log_tests.o:
+objs/$(CONFIG)/test/core/transport/transport_end2end_tests.o:
+objs/$(CONFIG)/test/core/util/grpc_profiler.o:
+objs/$(CONFIG)/test/core/util/parse_hexstring.o:
+objs/$(CONFIG)/test/core/util/port_posix.o:
+objs/$(CONFIG)/test/core/util/slice_splitter.o:
+
+
LIBGRPC_UNSECURE_SRC = \
src/core/channel/call_op_string.c \
src/core/channel/census_filter.c \
@@ -1656,6 +1780,7 @@
src/core/iomgr/fd_posix.c \
src/core/iomgr/iomgr.c \
src/core/iomgr/iomgr_posix.c \
+ src/core/iomgr/pollset_kick_posix.c \
src/core/iomgr/pollset_multipoller_with_poll_posix.c \
src/core/iomgr/pollset_posix.c \
src/core/iomgr/resolve_address_posix.c \
@@ -1773,6 +1898,7 @@
objs/$(CONFIG)/src/core/iomgr/fd_posix.o:
objs/$(CONFIG)/src/core/iomgr/iomgr.o:
objs/$(CONFIG)/src/core/iomgr/iomgr_posix.o:
+objs/$(CONFIG)/src/core/iomgr/pollset_kick_posix.o:
objs/$(CONFIG)/src/core/iomgr/pollset_multipoller_with_poll_posix.o:
objs/$(CONFIG)/src/core/iomgr/pollset_posix.o:
objs/$(CONFIG)/src/core/iomgr/resolve_address_posix.o:
@@ -1828,117 +1954,6 @@
objs/$(CONFIG)/third_party/cJSON/cJSON.o:
-LIBGPR_TEST_UTIL_SRC = \
- test/core/util/test_config.c \
-
-
-LIBGPR_TEST_UTIL_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGPR_TEST_UTIL_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure libraries if you don't have OpenSSL with ALPN.
-
-libs/$(CONFIG)/libgpr_test_util.a: openssl_dep_error
-
-
-else
-
-ifneq ($(OPENSSL_DEP),)
-test/core/util/test_config.c: $(OPENSSL_DEP)
-endif
-
-libs/$(CONFIG)/libgpr_test_util.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGPR_TEST_UTIL_OBJS)
- $(E) "[AR] Creating $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(AR) rcs libs/$(CONFIG)/libgpr_test_util.a $(LIBGPR_TEST_UTIL_OBJS)
-
-
-
-
-
-endif
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(LIBGPR_TEST_UTIL_OBJS:.o=.dep)
-endif
-endif
-
-objs/$(CONFIG)/test/core/util/test_config.o:
-
-
-LIBGRPC_TEST_UTIL_SRC = \
- test/core/end2end/cq_verifier.c \
- test/core/end2end/data/test_root_cert.c \
- test/core/end2end/data/prod_roots_certs.c \
- test/core/end2end/data/server1_cert.c \
- test/core/end2end/data/server1_key.c \
- test/core/iomgr/endpoint_tests.c \
- test/core/statistics/census_log_tests.c \
- test/core/transport/transport_end2end_tests.c \
- test/core/util/grpc_profiler.c \
- test/core/util/port_posix.c \
- test/core/util/parse_hexstring.c \
- test/core/util/slice_splitter.c \
-
-
-LIBGRPC_TEST_UTIL_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_TEST_UTIL_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure libraries if you don't have OpenSSL with ALPN.
-
-libs/$(CONFIG)/libgrpc_test_util.a: openssl_dep_error
-
-
-else
-
-ifneq ($(OPENSSL_DEP),)
-test/core/end2end/cq_verifier.c: $(OPENSSL_DEP)
-test/core/end2end/data/test_root_cert.c: $(OPENSSL_DEP)
-test/core/end2end/data/prod_roots_certs.c: $(OPENSSL_DEP)
-test/core/end2end/data/server1_cert.c: $(OPENSSL_DEP)
-test/core/end2end/data/server1_key.c: $(OPENSSL_DEP)
-test/core/iomgr/endpoint_tests.c: $(OPENSSL_DEP)
-test/core/statistics/census_log_tests.c: $(OPENSSL_DEP)
-test/core/transport/transport_end2end_tests.c: $(OPENSSL_DEP)
-test/core/util/grpc_profiler.c: $(OPENSSL_DEP)
-test/core/util/port_posix.c: $(OPENSSL_DEP)
-test/core/util/parse_hexstring.c: $(OPENSSL_DEP)
-test/core/util/slice_splitter.c: $(OPENSSL_DEP)
-endif
-
-libs/$(CONFIG)/libgrpc_test_util.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC_TEST_UTIL_OBJS)
- $(E) "[AR] Creating $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(AR) rcs libs/$(CONFIG)/libgrpc_test_util.a $(LIBGRPC_TEST_UTIL_OBJS)
-
-
-
-
-
-endif
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(LIBGRPC_TEST_UTIL_OBJS:.o=.dep)
-endif
-endif
-
-objs/$(CONFIG)/test/core/end2end/cq_verifier.o:
-objs/$(CONFIG)/test/core/end2end/data/test_root_cert.o:
-objs/$(CONFIG)/test/core/end2end/data/prod_roots_certs.o:
-objs/$(CONFIG)/test/core/end2end/data/server1_cert.o:
-objs/$(CONFIG)/test/core/end2end/data/server1_key.o:
-objs/$(CONFIG)/test/core/iomgr/endpoint_tests.o:
-objs/$(CONFIG)/test/core/statistics/census_log_tests.o:
-objs/$(CONFIG)/test/core/transport/transport_end2end_tests.o:
-objs/$(CONFIG)/test/core/util/grpc_profiler.o:
-objs/$(CONFIG)/test/core/util/port_posix.o:
-objs/$(CONFIG)/test/core/util/parse_hexstring.o:
-objs/$(CONFIG)/test/core/util/slice_splitter.o:
-
-
LIBGRPC++_SRC = \
src/cpp/client/channel.cc \
src/cpp/client/channel_arguments.cc \
@@ -1946,24 +1961,24 @@
src/cpp/client/create_channel.cc \
src/cpp/client/credentials.cc \
src/cpp/client/internal_stub.cc \
- src/cpp/proto/proto_utils.cc \
src/cpp/common/rpc_method.cc \
+ src/cpp/proto/proto_utils.cc \
src/cpp/server/async_server.cc \
src/cpp/server/async_server_context.cc \
src/cpp/server/completion_queue.cc \
+ src/cpp/server/server.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_context_impl.cc \
- src/cpp/server/server.cc \
- src/cpp/server/server_rpc_handler.cc \
src/cpp/server/server_credentials.cc \
+ src/cpp/server/server_rpc_handler.cc \
src/cpp/server/thread_pool.cc \
src/cpp/stream/stream_context.cc \
src/cpp/util/status.cc \
src/cpp/util/time.cc \
PUBLIC_HEADERS_CXX += \
- include/grpc++/async_server_context.h \
include/grpc++/async_server.h \
+ include/grpc++/async_server_context.h \
include/grpc++/channel_arguments.h \
include/grpc++/channel_interface.h \
include/grpc++/client_context.h \
@@ -1974,13 +1989,13 @@
include/grpc++/impl/internal_stub.h \
include/grpc++/impl/rpc_method.h \
include/grpc++/impl/rpc_service_method.h \
+ include/grpc++/server.h \
include/grpc++/server_builder.h \
include/grpc++/server_context.h \
include/grpc++/server_credentials.h \
- include/grpc++/server.h \
include/grpc++/status.h \
- include/grpc++/stream_context_interface.h \
include/grpc++/stream.h \
+ include/grpc++/stream_context_interface.h \
LIBGRPC++_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_SRC))))
@@ -2005,16 +2020,16 @@
src/cpp/client/create_channel.cc: $(OPENSSL_DEP)
src/cpp/client/credentials.cc: $(OPENSSL_DEP)
src/cpp/client/internal_stub.cc: $(OPENSSL_DEP)
-src/cpp/proto/proto_utils.cc: $(OPENSSL_DEP)
src/cpp/common/rpc_method.cc: $(OPENSSL_DEP)
+src/cpp/proto/proto_utils.cc: $(OPENSSL_DEP)
src/cpp/server/async_server.cc: $(OPENSSL_DEP)
src/cpp/server/async_server_context.cc: $(OPENSSL_DEP)
src/cpp/server/completion_queue.cc: $(OPENSSL_DEP)
+src/cpp/server/server.cc: $(OPENSSL_DEP)
src/cpp/server/server_builder.cc: $(OPENSSL_DEP)
src/cpp/server/server_context_impl.cc: $(OPENSSL_DEP)
-src/cpp/server/server.cc: $(OPENSSL_DEP)
-src/cpp/server/server_rpc_handler.cc: $(OPENSSL_DEP)
src/cpp/server/server_credentials.cc: $(OPENSSL_DEP)
+src/cpp/server/server_rpc_handler.cc: $(OPENSSL_DEP)
src/cpp/server/thread_pool.cc: $(OPENSSL_DEP)
src/cpp/stream/stream_context.cc: $(OPENSSL_DEP)
src/cpp/util/status.cc: $(OPENSSL_DEP)
@@ -2060,16 +2075,16 @@
objs/$(CONFIG)/src/cpp/client/create_channel.o:
objs/$(CONFIG)/src/cpp/client/credentials.o:
objs/$(CONFIG)/src/cpp/client/internal_stub.o:
-objs/$(CONFIG)/src/cpp/proto/proto_utils.o:
objs/$(CONFIG)/src/cpp/common/rpc_method.o:
+objs/$(CONFIG)/src/cpp/proto/proto_utils.o:
objs/$(CONFIG)/src/cpp/server/async_server.o:
objs/$(CONFIG)/src/cpp/server/async_server_context.o:
objs/$(CONFIG)/src/cpp/server/completion_queue.o:
+objs/$(CONFIG)/src/cpp/server/server.o:
objs/$(CONFIG)/src/cpp/server/server_builder.o:
objs/$(CONFIG)/src/cpp/server/server_context_impl.o:
-objs/$(CONFIG)/src/cpp/server/server.o:
-objs/$(CONFIG)/src/cpp/server/server_rpc_handler.o:
objs/$(CONFIG)/src/cpp/server/server_credentials.o:
+objs/$(CONFIG)/src/cpp/server/server_rpc_handler.o:
objs/$(CONFIG)/src/cpp/server/thread_pool.o:
objs/$(CONFIG)/src/cpp/stream/stream_context.o:
objs/$(CONFIG)/src/cpp/util/status.o:
@@ -2077,11 +2092,11 @@
LIBGRPC++_TEST_UTIL_SRC = \
- gens/test/cpp/util/messages.pb.cc \
gens/test/cpp/util/echo.pb.cc \
gens/test/cpp/util/echo_duplicate.pb.cc \
- test/cpp/util/create_test_channel.cc \
+ gens/test/cpp/util/messages.pb.cc \
test/cpp/end2end/async_test_server.cc \
+ test/cpp/util/create_test_channel.cc \
LIBGRPC++_TEST_UTIL_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_TEST_UTIL_SRC))))
@@ -2096,11 +2111,11 @@
else
ifneq ($(OPENSSL_DEP),)
-test/cpp/util/messages.proto: $(OPENSSL_DEP)
test/cpp/util/echo.proto: $(OPENSSL_DEP)
test/cpp/util/echo_duplicate.proto: $(OPENSSL_DEP)
-test/cpp/util/create_test_channel.cc: $(OPENSSL_DEP)
+test/cpp/util/messages.proto: $(OPENSSL_DEP)
test/cpp/end2end/async_test_server.cc: $(OPENSSL_DEP)
+test/cpp/util/create_test_channel.cc: $(OPENSSL_DEP)
endif
libs/$(CONFIG)/libgrpc++_test_util.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(LIBGRPC++_TEST_UTIL_OBJS)
@@ -2123,8 +2138,8 @@
-objs/$(CONFIG)/test/cpp/util/create_test_channel.o: gens/test/cpp/util/messages.pb.cc gens/test/cpp/util/echo.pb.cc gens/test/cpp/util/echo_duplicate.pb.cc
-objs/$(CONFIG)/test/cpp/end2end/async_test_server.o: gens/test/cpp/util/messages.pb.cc gens/test/cpp/util/echo.pb.cc gens/test/cpp/util/echo_duplicate.pb.cc
+objs/$(CONFIG)/test/cpp/end2end/async_test_server.o: gens/test/cpp/util/echo.pb.cc gens/test/cpp/util/echo_duplicate.pb.cc gens/test/cpp/util/messages.pb.cc
+objs/$(CONFIG)/test/cpp/util/create_test_channel.o: gens/test/cpp/util/echo.pb.cc gens/test/cpp/util/echo_duplicate.pb.cc gens/test/cpp/util/messages.pb.cc
LIBTIPS_CLIENT_LIB_SRC = \
@@ -2945,6 +2960,874 @@
# All of the test targets, and protoc plugins
+ALARM_HEAP_TEST_SRC = \
+ test/core/iomgr/alarm_heap_test.c \
+
+ALARM_HEAP_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_HEAP_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/alarm_heap_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/alarm_heap_test: $(ALARM_HEAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(ALARM_HEAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alarm_heap_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/alarm_heap_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_alarm_heap_test: $(ALARM_HEAP_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(ALARM_HEAP_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+ALARM_LIST_TEST_SRC = \
+ test/core/iomgr/alarm_list_test.c \
+
+ALARM_LIST_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_LIST_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/alarm_list_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/alarm_list_test: $(ALARM_LIST_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(ALARM_LIST_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alarm_list_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/alarm_list_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_alarm_list_test: $(ALARM_LIST_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(ALARM_LIST_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+ALARM_TEST_SRC = \
+ test/core/iomgr/alarm_test.c \
+
+ALARM_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/alarm_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/alarm_test: $(ALARM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(ALARM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alarm_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/alarm_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_alarm_test: $(ALARM_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(ALARM_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+ALPN_TEST_SRC = \
+ test/core/transport/chttp2/alpn_test.c \
+
+ALPN_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALPN_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/alpn_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/alpn_test: $(ALPN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(ALPN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alpn_test
+
+endif
+
+objs/$(CONFIG)/test/core/transport/chttp2/alpn_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_alpn_test: $(ALPN_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(ALPN_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+BIN_ENCODER_TEST_SRC = \
+ test/core/transport/chttp2/bin_encoder_test.c \
+
+BIN_ENCODER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(BIN_ENCODER_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/bin_encoder_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/bin_encoder_test: $(BIN_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(BIN_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/bin_encoder_test
+
+endif
+
+objs/$(CONFIG)/test/core/transport/chttp2/bin_encoder_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_bin_encoder_test: $(BIN_ENCODER_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(BIN_ENCODER_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_HASH_TABLE_TEST_SRC = \
+ test/core/statistics/hash_table_test.c \
+
+CENSUS_HASH_TABLE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_HASH_TABLE_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_hash_table_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_hash_table_test: $(CENSUS_HASH_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_HASH_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_hash_table_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/hash_table_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_hash_table_test: $(CENSUS_HASH_TABLE_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_HASH_TABLE_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_SRC = \
+ test/core/statistics/multiple_writers_circular_buffer_test.c \
+
+CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/multiple_writers_circular_buffer_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_statistics_multiple_writers_circular_buffer_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_SRC = \
+ test/core/statistics/multiple_writers_test.c \
+
+CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_statistics_multiple_writers_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_statistics_multiple_writers_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_multiple_writers_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/multiple_writers_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_statistics_multiple_writers_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_STATISTICS_PERFORMANCE_TEST_SRC = \
+ test/core/statistics/performance_test.c \
+
+CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_PERFORMANCE_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_statistics_performance_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_statistics_performance_test: $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_performance_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/performance_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_statistics_performance_test: $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_STATISTICS_QUICK_TEST_SRC = \
+ test/core/statistics/quick_test.c \
+
+CENSUS_STATISTICS_QUICK_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_QUICK_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_statistics_quick_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_statistics_quick_test: $(CENSUS_STATISTICS_QUICK_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_QUICK_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_quick_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/quick_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_statistics_quick_test: $(CENSUS_STATISTICS_QUICK_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_STATISTICS_QUICK_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_STATISTICS_SMALL_LOG_TEST_SRC = \
+ test/core/statistics/small_log_test.c \
+
+CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_SMALL_LOG_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_statistics_small_log_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_statistics_small_log_test: $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_small_log_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/small_log_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_statistics_small_log_test: $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_STATS_STORE_TEST_SRC = \
+ test/core/statistics/rpc_stats_test.c \
+
+CENSUS_STATS_STORE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATS_STORE_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_stats_store_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_stats_store_test: $(CENSUS_STATS_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATS_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_stats_store_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/rpc_stats_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_stats_store_test: $(CENSUS_STATS_STORE_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_STATS_STORE_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_STUB_TEST_SRC = \
+ test/core/statistics/census_stub_test.c \
+
+CENSUS_STUB_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STUB_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_stub_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_stub_test: $(CENSUS_STUB_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_STUB_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_stub_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/census_stub_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_stub_test: $(CENSUS_STUB_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_STUB_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_TRACE_STORE_TEST_SRC = \
+ test/core/statistics/trace_test.c \
+
+CENSUS_TRACE_STORE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_TRACE_STORE_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_trace_store_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_trace_store_test: $(CENSUS_TRACE_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_TRACE_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_trace_store_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/trace_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_trace_store_test: $(CENSUS_TRACE_STORE_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_TRACE_STORE_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CENSUS_WINDOW_STATS_TEST_SRC = \
+ test/core/statistics/window_stats_test.c \
+
+CENSUS_WINDOW_STATS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_WINDOW_STATS_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/census_window_stats_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/census_window_stats_test: $(CENSUS_WINDOW_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CENSUS_WINDOW_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_window_stats_test
+
+endif
+
+objs/$(CONFIG)/test/core/statistics/window_stats_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_census_window_stats_test: $(CENSUS_WINDOW_STATS_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CENSUS_WINDOW_STATS_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CHTTP2_STATUS_CONVERSION_TEST_SRC = \
+ test/core/transport/chttp2/status_conversion_test.c \
+
+CHTTP2_STATUS_CONVERSION_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_STATUS_CONVERSION_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/chttp2_status_conversion_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/chttp2_status_conversion_test: $(CHTTP2_STATUS_CONVERSION_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CHTTP2_STATUS_CONVERSION_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_status_conversion_test
+
+endif
+
+objs/$(CONFIG)/test/core/transport/chttp2/status_conversion_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_chttp2_status_conversion_test: $(CHTTP2_STATUS_CONVERSION_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CHTTP2_STATUS_CONVERSION_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CHTTP2_STREAM_ENCODER_TEST_SRC = \
+ test/core/transport/chttp2/stream_encoder_test.c \
+
+CHTTP2_STREAM_ENCODER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_STREAM_ENCODER_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/chttp2_stream_encoder_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/chttp2_stream_encoder_test: $(CHTTP2_STREAM_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CHTTP2_STREAM_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_stream_encoder_test
+
+endif
+
+objs/$(CONFIG)/test/core/transport/chttp2/stream_encoder_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_chttp2_stream_encoder_test: $(CHTTP2_STREAM_ENCODER_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CHTTP2_STREAM_ENCODER_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CHTTP2_STREAM_MAP_TEST_SRC = \
+ test/core/transport/chttp2/stream_map_test.c \
+
+CHTTP2_STREAM_MAP_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_STREAM_MAP_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/chttp2_stream_map_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/chttp2_stream_map_test: $(CHTTP2_STREAM_MAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CHTTP2_STREAM_MAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_stream_map_test
+
+endif
+
+objs/$(CONFIG)/test/core/transport/chttp2/stream_map_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_chttp2_stream_map_test: $(CHTTP2_STREAM_MAP_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CHTTP2_STREAM_MAP_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+CHTTP2_TRANSPORT_END2END_TEST_SRC = \
+ test/core/transport/chttp2_transport_end2end_test.c \
+
+CHTTP2_TRANSPORT_END2END_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_TRANSPORT_END2END_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/chttp2_transport_end2end_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/chttp2_transport_end2end_test: $(CHTTP2_TRANSPORT_END2END_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(CHTTP2_TRANSPORT_END2END_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_transport_end2end_test
+
+endif
+
+objs/$(CONFIG)/test/core/transport/chttp2_transport_end2end_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_chttp2_transport_end2end_test: $(CHTTP2_TRANSPORT_END2END_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(CHTTP2_TRANSPORT_END2END_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+DUALSTACK_SOCKET_TEST_SRC = \
+ test/core/end2end/dualstack_socket_test.c \
+
+DUALSTACK_SOCKET_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(DUALSTACK_SOCKET_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/dualstack_socket_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/dualstack_socket_test: $(DUALSTACK_SOCKET_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(DUALSTACK_SOCKET_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/dualstack_socket_test
+
+endif
+
+objs/$(CONFIG)/test/core/end2end/dualstack_socket_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_dualstack_socket_test: $(DUALSTACK_SOCKET_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(DUALSTACK_SOCKET_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+ECHO_CLIENT_SRC = \
+ test/core/echo/client.c \
+
+ECHO_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ECHO_CLIENT_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/echo_client: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/echo_client: $(ECHO_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(ECHO_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/echo_client
+
+endif
+
+objs/$(CONFIG)/test/core/echo/client.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_echo_client: $(ECHO_CLIENT_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(ECHO_CLIENT_OBJS:.o=.dep)
+endif
+endif
+
+
+ECHO_SERVER_SRC = \
+ test/core/echo/server.c \
+
+ECHO_SERVER_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ECHO_SERVER_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/echo_server: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/echo_server: $(ECHO_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(ECHO_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/echo_server
+
+endif
+
+objs/$(CONFIG)/test/core/echo/server.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_echo_server: $(ECHO_SERVER_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(ECHO_SERVER_OBJS:.o=.dep)
+endif
+endif
+
+
+ECHO_TEST_SRC = \
+ test/core/echo/echo_test.c \
+
+ECHO_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ECHO_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/echo_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/echo_test: $(ECHO_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(ECHO_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/echo_test
+
+endif
+
+objs/$(CONFIG)/test/core/echo/echo_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_echo_test: $(ECHO_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(ECHO_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+FD_POSIX_TEST_SRC = \
+ test/core/iomgr/fd_posix_test.c \
+
+FD_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FD_POSIX_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/fd_posix_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/fd_posix_test: $(FD_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(FD_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fd_posix_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/fd_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_fd_posix_test: $(FD_POSIX_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(FD_POSIX_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+FLING_CLIENT_SRC = \
+ test/core/fling/client.c \
+
+FLING_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_CLIENT_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/fling_client: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/fling_client: $(FLING_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(FLING_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_client
+
+endif
+
+objs/$(CONFIG)/test/core/fling/client.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_fling_client: $(FLING_CLIENT_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(FLING_CLIENT_OBJS:.o=.dep)
+endif
+endif
+
+
+FLING_SERVER_SRC = \
+ test/core/fling/server.c \
+
+FLING_SERVER_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_SERVER_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/fling_server: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/fling_server: $(FLING_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(FLING_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_server
+
+endif
+
+objs/$(CONFIG)/test/core/fling/server.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_fling_server: $(FLING_SERVER_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(FLING_SERVER_OBJS:.o=.dep)
+endif
+endif
+
+
+FLING_STREAM_TEST_SRC = \
+ test/core/fling/fling_stream_test.c \
+
+FLING_STREAM_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_STREAM_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/fling_stream_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/fling_stream_test: $(FLING_STREAM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(FLING_STREAM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_stream_test
+
+endif
+
+objs/$(CONFIG)/test/core/fling/fling_stream_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_fling_stream_test: $(FLING_STREAM_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(FLING_STREAM_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+FLING_TEST_SRC = \
+ test/core/fling/fling_test.c \
+
+FLING_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/fling_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/fling_test: $(FLING_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(FLING_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_test
+
+endif
+
+objs/$(CONFIG)/test/core/fling/fling_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_fling_test: $(FLING_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(FLING_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
GEN_HPACK_TABLES_SRC = \
src/core/transport/chttp2/gen_hpack_tables.c \
@@ -2976,79 +3859,6 @@
endif
-CPP_PLUGIN_SRC = \
- src/compiler/cpp_plugin.cc \
- src/compiler/cpp_generator.cc \
-
-CPP_PLUGIN_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CPP_PLUGIN_SRC))))
-
-bins/$(CONFIG)/cpp_plugin: $(CPP_PLUGIN_OBJS)
- $(E) "[HOSTLD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(HOST_LDXX) $(HOST_LDFLAGS) $(CPP_PLUGIN_OBJS) $(HOST_LDLIBSXX) $(HOST_LDLIBS) $(HOST_LDLIBS_PROTOC) -o bins/$(CONFIG)/cpp_plugin
-
-objs/$(CONFIG)/src/compiler/cpp_plugin.o:
-objs/$(CONFIG)/src/compiler/cpp_generator.o:
-
-deps_cpp_plugin: $(CPP_PLUGIN_OBJS:.o=.dep)
-
-ifneq ($(NO_DEPS),true)
--include $(CPP_PLUGIN_OBJS:.o=.dep)
-endif
-
-
-RUBY_PLUGIN_SRC = \
- src/compiler/ruby_plugin.cc \
- src/compiler/ruby_generator.cc \
-
-RUBY_PLUGIN_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(RUBY_PLUGIN_SRC))))
-
-bins/$(CONFIG)/ruby_plugin: $(RUBY_PLUGIN_OBJS)
- $(E) "[HOSTLD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(HOST_LDXX) $(HOST_LDFLAGS) $(RUBY_PLUGIN_OBJS) $(HOST_LDLIBSXX) $(HOST_LDLIBS) $(HOST_LDLIBS_PROTOC) -o bins/$(CONFIG)/ruby_plugin
-
-objs/$(CONFIG)/src/compiler/ruby_plugin.o:
-objs/$(CONFIG)/src/compiler/ruby_generator.o:
-
-deps_ruby_plugin: $(RUBY_PLUGIN_OBJS:.o=.dep)
-
-ifneq ($(NO_DEPS),true)
--include $(RUBY_PLUGIN_OBJS:.o=.dep)
-endif
-
-
-GRPC_BYTE_BUFFER_READER_TEST_SRC = \
- test/core/surface/byte_buffer_reader_test.c \
-
-GRPC_BYTE_BUFFER_READER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_BYTE_BUFFER_READER_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/grpc_byte_buffer_reader_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/grpc_byte_buffer_reader_test: $(GRPC_BYTE_BUFFER_READER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GRPC_BYTE_BUFFER_READER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_byte_buffer_reader_test
-
-endif
-
-objs/$(CONFIG)/test/core/surface/byte_buffer_reader_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_grpc_byte_buffer_reader_test: $(GRPC_BYTE_BUFFER_READER_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(GRPC_BYTE_BUFFER_READER_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
GPR_CANCELLABLE_TEST_SRC = \
test/core/support/cancellable_test.c \
@@ -3080,68 +3890,6 @@
endif
-GPR_LOG_TEST_SRC = \
- test/core/support/log_test.c \
-
-GPR_LOG_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_LOG_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/gpr_log_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/gpr_log_test: $(GPR_LOG_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GPR_LOG_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/gpr_log_test
-
-endif
-
-objs/$(CONFIG)/test/core/support/log_test.o: libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_gpr_log_test: $(GPR_LOG_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(GPR_LOG_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-GPR_USEFUL_TEST_SRC = \
- test/core/support/useful_test.c \
-
-GPR_USEFUL_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_USEFUL_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/gpr_useful_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/gpr_useful_test: $(GPR_USEFUL_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GPR_USEFUL_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/gpr_useful_test
-
-endif
-
-objs/$(CONFIG)/test/core/support/useful_test.o: libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_gpr_useful_test: $(GPR_USEFUL_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(GPR_USEFUL_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
GPR_CMDLINE_TEST_SRC = \
test/core/support/cmdline_test.c \
@@ -3235,6 +3983,37 @@
endif
+GPR_LOG_TEST_SRC = \
+ test/core/support/log_test.c \
+
+GPR_LOG_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_LOG_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/gpr_log_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/gpr_log_test: $(GPR_LOG_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(GPR_LOG_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/gpr_log_test
+
+endif
+
+objs/$(CONFIG)/test/core/support/log_test.o: libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_gpr_log_test: $(GPR_LOG_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(GPR_LOG_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
GPR_SLICE_BUFFER_TEST_SRC = \
test/core/support/slice_buffer_test.c \
@@ -3421,560 +4200,95 @@
endif
-MURMUR_HASH_TEST_SRC = \
- test/core/support/murmur_hash_test.c \
+GPR_USEFUL_TEST_SRC = \
+ test/core/support/useful_test.c \
-MURMUR_HASH_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(MURMUR_HASH_TEST_SRC))))
+GPR_USEFUL_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GPR_USEFUL_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/murmur_hash_test: openssl_dep_error
+bins/$(CONFIG)/gpr_useful_test: openssl_dep_error
else
-bins/$(CONFIG)/murmur_hash_test: $(MURMUR_HASH_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/gpr_useful_test: $(GPR_USEFUL_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(MURMUR_HASH_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/murmur_hash_test
+ $(Q) $(LD) $(LDFLAGS) $(GPR_USEFUL_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/gpr_useful_test
endif
-objs/$(CONFIG)/test/core/support/murmur_hash_test.o: libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/support/useful_test.o: libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_murmur_hash_test: $(MURMUR_HASH_TEST_OBJS:.o=.dep)
+deps_gpr_useful_test: $(GPR_USEFUL_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(MURMUR_HASH_TEST_OBJS:.o=.dep)
+-include $(GPR_USEFUL_TEST_OBJS:.o=.dep)
endif
endif
-GRPC_STREAM_OP_TEST_SRC = \
- test/core/transport/stream_op_test.c \
+GRPC_BASE64_TEST_SRC = \
+ test/core/security/base64_test.c \
-GRPC_STREAM_OP_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_STREAM_OP_TEST_SRC))))
+GRPC_BASE64_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_BASE64_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/grpc_stream_op_test: openssl_dep_error
+bins/$(CONFIG)/grpc_base64_test: openssl_dep_error
else
-bins/$(CONFIG)/grpc_stream_op_test: $(GRPC_STREAM_OP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/grpc_base64_test: $(GRPC_BASE64_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GRPC_STREAM_OP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_stream_op_test
+ $(Q) $(LD) $(LDFLAGS) $(GRPC_BASE64_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_base64_test
endif
-objs/$(CONFIG)/test/core/transport/stream_op_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/security/base64_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_grpc_stream_op_test: $(GRPC_STREAM_OP_TEST_OBJS:.o=.dep)
+deps_grpc_base64_test: $(GRPC_BASE64_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(GRPC_STREAM_OP_TEST_OBJS:.o=.dep)
+-include $(GRPC_BASE64_TEST_OBJS:.o=.dep)
endif
endif
-ALPN_TEST_SRC = \
- test/core/transport/chttp2/alpn_test.c \
+GRPC_BYTE_BUFFER_READER_TEST_SRC = \
+ test/core/surface/byte_buffer_reader_test.c \
-ALPN_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALPN_TEST_SRC))))
+GRPC_BYTE_BUFFER_READER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_BYTE_BUFFER_READER_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/alpn_test: openssl_dep_error
+bins/$(CONFIG)/grpc_byte_buffer_reader_test: openssl_dep_error
else
-bins/$(CONFIG)/alpn_test: $(ALPN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/grpc_byte_buffer_reader_test: $(GRPC_BYTE_BUFFER_READER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(ALPN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alpn_test
+ $(Q) $(LD) $(LDFLAGS) $(GRPC_BYTE_BUFFER_READER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_byte_buffer_reader_test
endif
-objs/$(CONFIG)/test/core/transport/chttp2/alpn_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/surface/byte_buffer_reader_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_alpn_test: $(ALPN_TEST_OBJS:.o=.dep)
+deps_grpc_byte_buffer_reader_test: $(GRPC_BYTE_BUFFER_READER_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(ALPN_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-TIME_AVERAGED_STATS_TEST_SRC = \
- test/core/iomgr/time_averaged_stats_test.c \
-
-TIME_AVERAGED_STATS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIME_AVERAGED_STATS_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/time_averaged_stats_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/time_averaged_stats_test: $(TIME_AVERAGED_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(TIME_AVERAGED_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/time_averaged_stats_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/time_averaged_stats_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_time_averaged_stats_test: $(TIME_AVERAGED_STATS_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(TIME_AVERAGED_STATS_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CHTTP2_STREAM_ENCODER_TEST_SRC = \
- test/core/transport/chttp2/stream_encoder_test.c \
-
-CHTTP2_STREAM_ENCODER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_STREAM_ENCODER_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/chttp2_stream_encoder_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/chttp2_stream_encoder_test: $(CHTTP2_STREAM_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CHTTP2_STREAM_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_stream_encoder_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/chttp2/stream_encoder_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_chttp2_stream_encoder_test: $(CHTTP2_STREAM_ENCODER_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CHTTP2_STREAM_ENCODER_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-HPACK_TABLE_TEST_SRC = \
- test/core/transport/chttp2/hpack_table_test.c \
-
-HPACK_TABLE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_TABLE_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/hpack_table_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/hpack_table_test: $(HPACK_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(HPACK_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/hpack_table_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/chttp2/hpack_table_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_hpack_table_test: $(HPACK_TABLE_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(HPACK_TABLE_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CHTTP2_STREAM_MAP_TEST_SRC = \
- test/core/transport/chttp2/stream_map_test.c \
-
-CHTTP2_STREAM_MAP_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_STREAM_MAP_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/chttp2_stream_map_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/chttp2_stream_map_test: $(CHTTP2_STREAM_MAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CHTTP2_STREAM_MAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_stream_map_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/chttp2/stream_map_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_chttp2_stream_map_test: $(CHTTP2_STREAM_MAP_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CHTTP2_STREAM_MAP_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-HPACK_PARSER_TEST_SRC = \
- test/core/transport/chttp2/hpack_parser_test.c \
-
-HPACK_PARSER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_PARSER_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/hpack_parser_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/hpack_parser_test: $(HPACK_PARSER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(HPACK_PARSER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/hpack_parser_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/chttp2/hpack_parser_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_hpack_parser_test: $(HPACK_PARSER_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(HPACK_PARSER_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-TRANSPORT_METADATA_TEST_SRC = \
- test/core/transport/metadata_test.c \
-
-TRANSPORT_METADATA_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TRANSPORT_METADATA_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/transport_metadata_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/transport_metadata_test: $(TRANSPORT_METADATA_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(TRANSPORT_METADATA_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/transport_metadata_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/metadata_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_transport_metadata_test: $(TRANSPORT_METADATA_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(TRANSPORT_METADATA_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CHTTP2_STATUS_CONVERSION_TEST_SRC = \
- test/core/transport/chttp2/status_conversion_test.c \
-
-CHTTP2_STATUS_CONVERSION_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_STATUS_CONVERSION_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/chttp2_status_conversion_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/chttp2_status_conversion_test: $(CHTTP2_STATUS_CONVERSION_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CHTTP2_STATUS_CONVERSION_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_status_conversion_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/chttp2/status_conversion_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_chttp2_status_conversion_test: $(CHTTP2_STATUS_CONVERSION_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CHTTP2_STATUS_CONVERSION_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CHTTP2_TRANSPORT_END2END_TEST_SRC = \
- test/core/transport/chttp2_transport_end2end_test.c \
-
-CHTTP2_TRANSPORT_END2END_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHTTP2_TRANSPORT_END2END_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/chttp2_transport_end2end_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/chttp2_transport_end2end_test: $(CHTTP2_TRANSPORT_END2END_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CHTTP2_TRANSPORT_END2END_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/chttp2_transport_end2end_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/chttp2_transport_end2end_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_chttp2_transport_end2end_test: $(CHTTP2_TRANSPORT_END2END_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CHTTP2_TRANSPORT_END2END_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-TCP_POSIX_TEST_SRC = \
- test/core/iomgr/tcp_posix_test.c \
-
-TCP_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_POSIX_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/tcp_posix_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/tcp_posix_test: $(TCP_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(TCP_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tcp_posix_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/tcp_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_tcp_posix_test: $(TCP_POSIX_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(TCP_POSIX_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-DUALSTACK_SOCKET_TEST_SRC = \
- test/core/end2end/dualstack_socket_test.c \
-
-DUALSTACK_SOCKET_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(DUALSTACK_SOCKET_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/dualstack_socket_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/dualstack_socket_test: $(DUALSTACK_SOCKET_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(DUALSTACK_SOCKET_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/dualstack_socket_test
-
-endif
-
-objs/$(CONFIG)/test/core/end2end/dualstack_socket_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_dualstack_socket_test: $(DUALSTACK_SOCKET_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(DUALSTACK_SOCKET_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-NO_SERVER_TEST_SRC = \
- test/core/end2end/no_server_test.c \
-
-NO_SERVER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(NO_SERVER_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/no_server_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/no_server_test: $(NO_SERVER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(NO_SERVER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/no_server_test
-
-endif
-
-objs/$(CONFIG)/test/core/end2end/no_server_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_no_server_test: $(NO_SERVER_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(NO_SERVER_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-RESOLVE_ADDRESS_TEST_SRC = \
- test/core/iomgr/resolve_address_test.c \
-
-RESOLVE_ADDRESS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(RESOLVE_ADDRESS_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/resolve_address_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/resolve_address_test: $(RESOLVE_ADDRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(RESOLVE_ADDRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/resolve_address_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/resolve_address_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_resolve_address_test: $(RESOLVE_ADDRESS_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(RESOLVE_ADDRESS_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-SOCKADDR_UTILS_TEST_SRC = \
- test/core/iomgr/sockaddr_utils_test.c \
-
-SOCKADDR_UTILS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(SOCKADDR_UTILS_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/sockaddr_utils_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/sockaddr_utils_test: $(SOCKADDR_UTILS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(SOCKADDR_UTILS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/sockaddr_utils_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/sockaddr_utils_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_sockaddr_utils_test: $(SOCKADDR_UTILS_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(SOCKADDR_UTILS_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-TCP_SERVER_POSIX_TEST_SRC = \
- test/core/iomgr/tcp_server_posix_test.c \
-
-TCP_SERVER_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_SERVER_POSIX_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/tcp_server_posix_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/tcp_server_posix_test: $(TCP_SERVER_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(TCP_SERVER_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tcp_server_posix_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/tcp_server_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_tcp_server_posix_test: $(TCP_SERVER_POSIX_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(TCP_SERVER_POSIX_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-TCP_CLIENT_POSIX_TEST_SRC = \
- test/core/iomgr/tcp_client_posix_test.c \
-
-TCP_CLIENT_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_CLIENT_POSIX_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/tcp_client_posix_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/tcp_client_posix_test: $(TCP_CLIENT_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(TCP_CLIENT_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tcp_client_posix_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/tcp_client_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_tcp_client_posix_test: $(TCP_CLIENT_POSIX_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(TCP_CLIENT_POSIX_TEST_OBJS:.o=.dep)
+-include $(GRPC_BYTE_BUFFER_READER_TEST_OBJS:.o=.dep)
endif
endif
@@ -4010,33 +4324,33 @@
endif
-METADATA_BUFFER_TEST_SRC = \
- test/core/channel/metadata_buffer_test.c \
+GRPC_COMPLETION_QUEUE_BENCHMARK_SRC = \
+ test/core/surface/completion_queue_benchmark.c \
-METADATA_BUFFER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(METADATA_BUFFER_TEST_SRC))))
+GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_COMPLETION_QUEUE_BENCHMARK_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/metadata_buffer_test: openssl_dep_error
+bins/$(CONFIG)/grpc_completion_queue_benchmark: openssl_dep_error
else
-bins/$(CONFIG)/metadata_buffer_test: $(METADATA_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/grpc_completion_queue_benchmark: $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(METADATA_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/metadata_buffer_test
+ $(Q) $(LD) $(LDFLAGS) $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_completion_queue_benchmark
endif
-objs/$(CONFIG)/test/core/channel/metadata_buffer_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/surface/completion_queue_benchmark.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_metadata_buffer_test: $(METADATA_BUFFER_TEST_OBJS:.o=.dep)
+deps_grpc_completion_queue_benchmark: $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(METADATA_BUFFER_TEST_OBJS:.o=.dep)
+-include $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS:.o=.dep)
endif
endif
@@ -4072,653 +4386,188 @@
endif
-GRPC_COMPLETION_QUEUE_BENCHMARK_SRC = \
- test/core/surface/completion_queue_benchmark.c \
+GRPC_CREDENTIALS_TEST_SRC = \
+ test/core/security/credentials_test.c \
-GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_COMPLETION_QUEUE_BENCHMARK_SRC))))
+GRPC_CREDENTIALS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CREDENTIALS_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/grpc_completion_queue_benchmark: openssl_dep_error
+bins/$(CONFIG)/grpc_credentials_test: openssl_dep_error
else
-bins/$(CONFIG)/grpc_completion_queue_benchmark: $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/grpc_credentials_test: $(GRPC_CREDENTIALS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_completion_queue_benchmark
+ $(Q) $(LD) $(LDFLAGS) $(GRPC_CREDENTIALS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_credentials_test
endif
-objs/$(CONFIG)/test/core/surface/completion_queue_benchmark.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/security/credentials_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_grpc_completion_queue_benchmark: $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS:.o=.dep)
+deps_grpc_credentials_test: $(GRPC_CREDENTIALS_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(GRPC_COMPLETION_QUEUE_BENCHMARK_OBJS:.o=.dep)
+-include $(GRPC_CREDENTIALS_TEST_OBJS:.o=.dep)
endif
endif
-CENSUS_TRACE_STORE_TEST_SRC = \
- test/core/statistics/trace_test.c \
+GRPC_FETCH_OAUTH2_SRC = \
+ test/core/security/fetch_oauth2.c \
-CENSUS_TRACE_STORE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_TRACE_STORE_TEST_SRC))))
+GRPC_FETCH_OAUTH2_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_FETCH_OAUTH2_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/census_trace_store_test: openssl_dep_error
+bins/$(CONFIG)/grpc_fetch_oauth2: openssl_dep_error
else
-bins/$(CONFIG)/census_trace_store_test: $(CENSUS_TRACE_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/grpc_fetch_oauth2: $(GRPC_FETCH_OAUTH2_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_TRACE_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_trace_store_test
+ $(Q) $(LD) $(LDFLAGS) $(GRPC_FETCH_OAUTH2_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_fetch_oauth2
endif
-objs/$(CONFIG)/test/core/statistics/trace_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/security/fetch_oauth2.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_census_trace_store_test: $(CENSUS_TRACE_STORE_TEST_OBJS:.o=.dep)
+deps_grpc_fetch_oauth2: $(GRPC_FETCH_OAUTH2_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(CENSUS_TRACE_STORE_TEST_OBJS:.o=.dep)
+-include $(GRPC_FETCH_OAUTH2_OBJS:.o=.dep)
endif
endif
-CENSUS_STATS_STORE_TEST_SRC = \
- test/core/statistics/rpc_stats_test.c \
+GRPC_JSON_TOKEN_TEST_SRC = \
+ test/core/security/json_token_test.c \
-CENSUS_STATS_STORE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATS_STORE_TEST_SRC))))
+GRPC_JSON_TOKEN_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_JSON_TOKEN_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/census_stats_store_test: openssl_dep_error
+bins/$(CONFIG)/grpc_json_token_test: openssl_dep_error
else
-bins/$(CONFIG)/census_stats_store_test: $(CENSUS_STATS_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/grpc_json_token_test: $(GRPC_JSON_TOKEN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATS_STORE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_stats_store_test
+ $(Q) $(LD) $(LDFLAGS) $(GRPC_JSON_TOKEN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_json_token_test
endif
-objs/$(CONFIG)/test/core/statistics/rpc_stats_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/security/json_token_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_census_stats_store_test: $(CENSUS_STATS_STORE_TEST_OBJS:.o=.dep)
+deps_grpc_json_token_test: $(GRPC_JSON_TOKEN_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(CENSUS_STATS_STORE_TEST_OBJS:.o=.dep)
+-include $(GRPC_JSON_TOKEN_TEST_OBJS:.o=.dep)
endif
endif
-CENSUS_WINDOW_STATS_TEST_SRC = \
- test/core/statistics/window_stats_test.c \
+GRPC_STREAM_OP_TEST_SRC = \
+ test/core/transport/stream_op_test.c \
-CENSUS_WINDOW_STATS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_WINDOW_STATS_TEST_SRC))))
+GRPC_STREAM_OP_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_STREAM_OP_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/census_window_stats_test: openssl_dep_error
+bins/$(CONFIG)/grpc_stream_op_test: openssl_dep_error
else
-bins/$(CONFIG)/census_window_stats_test: $(CENSUS_WINDOW_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/grpc_stream_op_test: $(GRPC_STREAM_OP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_WINDOW_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_window_stats_test
+ $(Q) $(LD) $(LDFLAGS) $(GRPC_STREAM_OP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_stream_op_test
endif
-objs/$(CONFIG)/test/core/statistics/window_stats_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/transport/stream_op_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_census_window_stats_test: $(CENSUS_WINDOW_STATS_TEST_OBJS:.o=.dep)
+deps_grpc_stream_op_test: $(GRPC_STREAM_OP_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(CENSUS_WINDOW_STATS_TEST_OBJS:.o=.dep)
+-include $(GRPC_STREAM_OP_TEST_OBJS:.o=.dep)
endif
endif
-CENSUS_STATISTICS_QUICK_TEST_SRC = \
- test/core/statistics/quick_test.c \
+HPACK_PARSER_TEST_SRC = \
+ test/core/transport/chttp2/hpack_parser_test.c \
-CENSUS_STATISTICS_QUICK_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_QUICK_TEST_SRC))))
+HPACK_PARSER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_PARSER_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/census_statistics_quick_test: openssl_dep_error
+bins/$(CONFIG)/hpack_parser_test: openssl_dep_error
else
-bins/$(CONFIG)/census_statistics_quick_test: $(CENSUS_STATISTICS_QUICK_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/hpack_parser_test: $(HPACK_PARSER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_QUICK_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_quick_test
+ $(Q) $(LD) $(LDFLAGS) $(HPACK_PARSER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/hpack_parser_test
endif
-objs/$(CONFIG)/test/core/statistics/quick_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/transport/chttp2/hpack_parser_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_census_statistics_quick_test: $(CENSUS_STATISTICS_QUICK_TEST_OBJS:.o=.dep)
+deps_hpack_parser_test: $(HPACK_PARSER_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(CENSUS_STATISTICS_QUICK_TEST_OBJS:.o=.dep)
+-include $(HPACK_PARSER_TEST_OBJS:.o=.dep)
endif
endif
-CENSUS_STATISTICS_SMALL_LOG_TEST_SRC = \
- test/core/statistics/small_log_test.c \
+HPACK_TABLE_TEST_SRC = \
+ test/core/transport/chttp2/hpack_table_test.c \
-CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_SMALL_LOG_TEST_SRC))))
+HPACK_TABLE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(HPACK_TABLE_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/census_statistics_small_log_test: openssl_dep_error
+bins/$(CONFIG)/hpack_table_test: openssl_dep_error
else
-bins/$(CONFIG)/census_statistics_small_log_test: $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/hpack_table_test: $(HPACK_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_small_log_test
+ $(Q) $(LD) $(LDFLAGS) $(HPACK_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/hpack_table_test
endif
-objs/$(CONFIG)/test/core/statistics/small_log_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/transport/chttp2/hpack_table_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_census_statistics_small_log_test: $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS:.o=.dep)
+deps_hpack_table_test: $(HPACK_TABLE_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(CENSUS_STATISTICS_SMALL_LOG_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CENSUS_STATISTICS_PERFORMANCE_TEST_SRC = \
- test/core/statistics/performance_test.c \
-
-CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_PERFORMANCE_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/census_statistics_performance_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/census_statistics_performance_test: $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_performance_test
-
-endif
-
-objs/$(CONFIG)/test/core/statistics/performance_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_census_statistics_performance_test: $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CENSUS_STATISTICS_PERFORMANCE_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_SRC = \
- test/core/statistics/multiple_writers_test.c \
-
-CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/census_statistics_multiple_writers_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/census_statistics_multiple_writers_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_multiple_writers_test
-
-endif
-
-objs/$(CONFIG)/test/core/statistics/multiple_writers_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_census_statistics_multiple_writers_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CENSUS_STATISTICS_MULTIPLE_WRITERS_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_SRC = \
- test/core/statistics/multiple_writers_circular_buffer_test.c \
-
-CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_statistics_multiple_writers_circular_buffer_test
-
-endif
-
-objs/$(CONFIG)/test/core/statistics/multiple_writers_circular_buffer_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_census_statistics_multiple_writers_circular_buffer_test: $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CENSUS_STATISTICS_MULTIPLE_WRITERS_CIRCULAR_BUFFER_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CENSUS_STUB_TEST_SRC = \
- test/core/statistics/census_stub_test.c \
-
-CENSUS_STUB_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_STUB_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/census_stub_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/census_stub_test: $(CENSUS_STUB_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_STUB_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_stub_test
-
-endif
-
-objs/$(CONFIG)/test/core/statistics/census_stub_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_census_stub_test: $(CENSUS_STUB_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CENSUS_STUB_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CENSUS_HASH_TABLE_TEST_SRC = \
- test/core/statistics/hash_table_test.c \
-
-CENSUS_HASH_TABLE_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CENSUS_HASH_TABLE_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/census_hash_table_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/census_hash_table_test: $(CENSUS_HASH_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(CENSUS_HASH_TABLE_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/census_hash_table_test
-
-endif
-
-objs/$(CONFIG)/test/core/statistics/hash_table_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_census_hash_table_test: $(CENSUS_HASH_TABLE_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CENSUS_HASH_TABLE_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-FLING_SERVER_SRC = \
- test/core/fling/server.c \
-
-FLING_SERVER_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_SERVER_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/fling_server: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/fling_server: $(FLING_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(FLING_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_server
-
-endif
-
-objs/$(CONFIG)/test/core/fling/server.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_fling_server: $(FLING_SERVER_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(FLING_SERVER_OBJS:.o=.dep)
-endif
-endif
-
-
-FLING_CLIENT_SRC = \
- test/core/fling/client.c \
-
-FLING_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_CLIENT_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/fling_client: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/fling_client: $(FLING_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(FLING_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_client
-
-endif
-
-objs/$(CONFIG)/test/core/fling/client.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_fling_client: $(FLING_CLIENT_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(FLING_CLIENT_OBJS:.o=.dep)
-endif
-endif
-
-
-FLING_TEST_SRC = \
- test/core/fling/fling_test.c \
-
-FLING_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/fling_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/fling_test: $(FLING_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(FLING_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_test
-
-endif
-
-objs/$(CONFIG)/test/core/fling/fling_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_fling_test: $(FLING_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(FLING_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-ECHO_SERVER_SRC = \
- test/core/echo/server.c \
-
-ECHO_SERVER_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ECHO_SERVER_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/echo_server: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/echo_server: $(ECHO_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(ECHO_SERVER_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/echo_server
-
-endif
-
-objs/$(CONFIG)/test/core/echo/server.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_echo_server: $(ECHO_SERVER_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(ECHO_SERVER_OBJS:.o=.dep)
-endif
-endif
-
-
-ECHO_CLIENT_SRC = \
- test/core/echo/client.c \
-
-ECHO_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ECHO_CLIENT_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/echo_client: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/echo_client: $(ECHO_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(ECHO_CLIENT_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/echo_client
-
-endif
-
-objs/$(CONFIG)/test/core/echo/client.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_echo_client: $(ECHO_CLIENT_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(ECHO_CLIENT_OBJS:.o=.dep)
-endif
-endif
-
-
-ECHO_TEST_SRC = \
- test/core/echo/echo_test.c \
-
-ECHO_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ECHO_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/echo_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/echo_test: $(ECHO_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(ECHO_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/echo_test
-
-endif
-
-objs/$(CONFIG)/test/core/echo/echo_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_echo_test: $(ECHO_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(ECHO_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-LOW_LEVEL_PING_PONG_BENCHMARK_SRC = \
- test/core/network_benchmarks/low_level_ping_pong.c \
-
-LOW_LEVEL_PING_PONG_BENCHMARK_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LOW_LEVEL_PING_PONG_BENCHMARK_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/low_level_ping_pong_benchmark: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/low_level_ping_pong_benchmark: $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/low_level_ping_pong_benchmark
-
-endif
-
-objs/$(CONFIG)/test/core/network_benchmarks/low_level_ping_pong.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_low_level_ping_pong_benchmark: $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS:.o=.dep)
-endif
-endif
-
-
-MESSAGE_COMPRESS_TEST_SRC = \
- test/core/compression/message_compress_test.c \
-
-MESSAGE_COMPRESS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(MESSAGE_COMPRESS_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/message_compress_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/message_compress_test: $(MESSAGE_COMPRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(MESSAGE_COMPRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/message_compress_test
-
-endif
-
-objs/$(CONFIG)/test/core/compression/message_compress_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_message_compress_test: $(MESSAGE_COMPRESS_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(MESSAGE_COMPRESS_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-BIN_ENCODER_TEST_SRC = \
- test/core/transport/chttp2/bin_encoder_test.c \
-
-BIN_ENCODER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(BIN_ENCODER_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/bin_encoder_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/bin_encoder_test: $(BIN_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(BIN_ENCODER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/bin_encoder_test
-
-endif
-
-objs/$(CONFIG)/test/core/transport/chttp2/bin_encoder_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_bin_encoder_test: $(BIN_ENCODER_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(BIN_ENCODER_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-SECURE_ENDPOINT_TEST_SRC = \
- test/core/security/secure_endpoint_test.c \
-
-SECURE_ENDPOINT_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(SECURE_ENDPOINT_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/secure_endpoint_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/secure_endpoint_test: $(SECURE_ENDPOINT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(SECURE_ENDPOINT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/secure_endpoint_test
-
-endif
-
-objs/$(CONFIG)/test/core/security/secure_endpoint_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_secure_endpoint_test: $(SECURE_ENDPOINT_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(SECURE_ENDPOINT_TEST_OBJS:.o=.dep)
+-include $(HPACK_TABLE_TEST_OBJS:.o=.dep)
endif
endif
@@ -4816,126 +4665,467 @@
endif
-GRPC_CREDENTIALS_TEST_SRC = \
- test/core/security/credentials_test.c \
+LAME_CLIENT_TEST_SRC = \
+ test/core/surface/lame_client_test.c \
-GRPC_CREDENTIALS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_CREDENTIALS_TEST_SRC))))
+LAME_CLIENT_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LAME_CLIENT_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/grpc_credentials_test: openssl_dep_error
+bins/$(CONFIG)/lame_client_test: openssl_dep_error
else
-bins/$(CONFIG)/grpc_credentials_test: $(GRPC_CREDENTIALS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/lame_client_test: $(LAME_CLIENT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GRPC_CREDENTIALS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_credentials_test
+ $(Q) $(LD) $(LDFLAGS) $(LAME_CLIENT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/lame_client_test
endif
-objs/$(CONFIG)/test/core/security/credentials_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/surface/lame_client_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_grpc_credentials_test: $(GRPC_CREDENTIALS_TEST_OBJS:.o=.dep)
+deps_lame_client_test: $(LAME_CLIENT_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(GRPC_CREDENTIALS_TEST_OBJS:.o=.dep)
+-include $(LAME_CLIENT_TEST_OBJS:.o=.dep)
endif
endif
-GRPC_FETCH_OAUTH2_SRC = \
- test/core/security/fetch_oauth2.c \
+LOW_LEVEL_PING_PONG_BENCHMARK_SRC = \
+ test/core/network_benchmarks/low_level_ping_pong.c \
-GRPC_FETCH_OAUTH2_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_FETCH_OAUTH2_SRC))))
+LOW_LEVEL_PING_PONG_BENCHMARK_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LOW_LEVEL_PING_PONG_BENCHMARK_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/grpc_fetch_oauth2: openssl_dep_error
+bins/$(CONFIG)/low_level_ping_pong_benchmark: openssl_dep_error
else
-bins/$(CONFIG)/grpc_fetch_oauth2: $(GRPC_FETCH_OAUTH2_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/low_level_ping_pong_benchmark: $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GRPC_FETCH_OAUTH2_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_fetch_oauth2
+ $(Q) $(LD) $(LDFLAGS) $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/low_level_ping_pong_benchmark
endif
-objs/$(CONFIG)/test/core/security/fetch_oauth2.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/network_benchmarks/low_level_ping_pong.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_grpc_fetch_oauth2: $(GRPC_FETCH_OAUTH2_OBJS:.o=.dep)
+deps_low_level_ping_pong_benchmark: $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(GRPC_FETCH_OAUTH2_OBJS:.o=.dep)
+-include $(LOW_LEVEL_PING_PONG_BENCHMARK_OBJS:.o=.dep)
endif
endif
-GRPC_BASE64_TEST_SRC = \
- test/core/security/base64_test.c \
+MESSAGE_COMPRESS_TEST_SRC = \
+ test/core/compression/message_compress_test.c \
-GRPC_BASE64_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_BASE64_TEST_SRC))))
+MESSAGE_COMPRESS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(MESSAGE_COMPRESS_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/grpc_base64_test: openssl_dep_error
+bins/$(CONFIG)/message_compress_test: openssl_dep_error
else
-bins/$(CONFIG)/grpc_base64_test: $(GRPC_BASE64_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/message_compress_test: $(MESSAGE_COMPRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GRPC_BASE64_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_base64_test
+ $(Q) $(LD) $(LDFLAGS) $(MESSAGE_COMPRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/message_compress_test
endif
-objs/$(CONFIG)/test/core/security/base64_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/compression/message_compress_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_grpc_base64_test: $(GRPC_BASE64_TEST_OBJS:.o=.dep)
+deps_message_compress_test: $(MESSAGE_COMPRESS_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(GRPC_BASE64_TEST_OBJS:.o=.dep)
+-include $(MESSAGE_COMPRESS_TEST_OBJS:.o=.dep)
endif
endif
-GRPC_JSON_TOKEN_TEST_SRC = \
- test/core/security/json_token_test.c \
+METADATA_BUFFER_TEST_SRC = \
+ test/core/channel/metadata_buffer_test.c \
-GRPC_JSON_TOKEN_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(GRPC_JSON_TOKEN_TEST_SRC))))
+METADATA_BUFFER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(METADATA_BUFFER_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/grpc_json_token_test: openssl_dep_error
+bins/$(CONFIG)/metadata_buffer_test: openssl_dep_error
else
-bins/$(CONFIG)/grpc_json_token_test: $(GRPC_JSON_TOKEN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/metadata_buffer_test: $(METADATA_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(GRPC_JSON_TOKEN_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/grpc_json_token_test
+ $(Q) $(LD) $(LDFLAGS) $(METADATA_BUFFER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/metadata_buffer_test
endif
-objs/$(CONFIG)/test/core/security/json_token_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/channel/metadata_buffer_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_grpc_json_token_test: $(GRPC_JSON_TOKEN_TEST_OBJS:.o=.dep)
+deps_metadata_buffer_test: $(METADATA_BUFFER_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(GRPC_JSON_TOKEN_TEST_OBJS:.o=.dep)
+-include $(METADATA_BUFFER_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+MURMUR_HASH_TEST_SRC = \
+ test/core/support/murmur_hash_test.c \
+
+MURMUR_HASH_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(MURMUR_HASH_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/murmur_hash_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/murmur_hash_test: $(MURMUR_HASH_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(MURMUR_HASH_TEST_OBJS) libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/murmur_hash_test
+
+endif
+
+objs/$(CONFIG)/test/core/support/murmur_hash_test.o: libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_murmur_hash_test: $(MURMUR_HASH_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(MURMUR_HASH_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+NO_SERVER_TEST_SRC = \
+ test/core/end2end/no_server_test.c \
+
+NO_SERVER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(NO_SERVER_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/no_server_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/no_server_test: $(NO_SERVER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(NO_SERVER_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/no_server_test
+
+endif
+
+objs/$(CONFIG)/test/core/end2end/no_server_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_no_server_test: $(NO_SERVER_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(NO_SERVER_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+POLL_KICK_TEST_SRC = \
+ test/core/iomgr/poll_kick_test.c \
+
+POLL_KICK_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(POLL_KICK_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/poll_kick_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/poll_kick_test: $(POLL_KICK_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(POLL_KICK_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/poll_kick_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/poll_kick_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_poll_kick_test: $(POLL_KICK_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(POLL_KICK_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+RESOLVE_ADDRESS_TEST_SRC = \
+ test/core/iomgr/resolve_address_test.c \
+
+RESOLVE_ADDRESS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(RESOLVE_ADDRESS_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/resolve_address_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/resolve_address_test: $(RESOLVE_ADDRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(RESOLVE_ADDRESS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/resolve_address_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/resolve_address_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_resolve_address_test: $(RESOLVE_ADDRESS_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(RESOLVE_ADDRESS_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+SECURE_ENDPOINT_TEST_SRC = \
+ test/core/security/secure_endpoint_test.c \
+
+SECURE_ENDPOINT_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(SECURE_ENDPOINT_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/secure_endpoint_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/secure_endpoint_test: $(SECURE_ENDPOINT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(SECURE_ENDPOINT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/secure_endpoint_test
+
+endif
+
+objs/$(CONFIG)/test/core/security/secure_endpoint_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_secure_endpoint_test: $(SECURE_ENDPOINT_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(SECURE_ENDPOINT_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+SOCKADDR_UTILS_TEST_SRC = \
+ test/core/iomgr/sockaddr_utils_test.c \
+
+SOCKADDR_UTILS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(SOCKADDR_UTILS_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/sockaddr_utils_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/sockaddr_utils_test: $(SOCKADDR_UTILS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(SOCKADDR_UTILS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/sockaddr_utils_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/sockaddr_utils_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_sockaddr_utils_test: $(SOCKADDR_UTILS_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(SOCKADDR_UTILS_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+TCP_CLIENT_POSIX_TEST_SRC = \
+ test/core/iomgr/tcp_client_posix_test.c \
+
+TCP_CLIENT_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_CLIENT_POSIX_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/tcp_client_posix_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/tcp_client_posix_test: $(TCP_CLIENT_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(TCP_CLIENT_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tcp_client_posix_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/tcp_client_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_tcp_client_posix_test: $(TCP_CLIENT_POSIX_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TCP_CLIENT_POSIX_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+TCP_POSIX_TEST_SRC = \
+ test/core/iomgr/tcp_posix_test.c \
+
+TCP_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_POSIX_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/tcp_posix_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/tcp_posix_test: $(TCP_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(TCP_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tcp_posix_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/tcp_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_tcp_posix_test: $(TCP_POSIX_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TCP_POSIX_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+TCP_SERVER_POSIX_TEST_SRC = \
+ test/core/iomgr/tcp_server_posix_test.c \
+
+TCP_SERVER_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TCP_SERVER_POSIX_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/tcp_server_posix_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/tcp_server_posix_test: $(TCP_SERVER_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(TCP_SERVER_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tcp_server_posix_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/tcp_server_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_tcp_server_posix_test: $(TCP_SERVER_POSIX_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TCP_SERVER_POSIX_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+TIME_AVERAGED_STATS_TEST_SRC = \
+ test/core/iomgr/time_averaged_stats_test.c \
+
+TIME_AVERAGED_STATS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIME_AVERAGED_STATS_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/time_averaged_stats_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/time_averaged_stats_test: $(TIME_AVERAGED_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(TIME_AVERAGED_STATS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/time_averaged_stats_test
+
+endif
+
+objs/$(CONFIG)/test/core/iomgr/time_averaged_stats_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_time_averaged_stats_test: $(TIME_AVERAGED_STATS_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TIME_AVERAGED_STATS_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
+TIME_TEST_SRC = \
+ test/core/support/time_test.c \
+
+TIME_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIME_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/time_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/time_test: $(TIME_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LD) $(LDFLAGS) $(TIME_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/time_test
+
+endif
+
+objs/$(CONFIG)/test/core/support/time_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_time_test: $(TIME_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TIME_TEST_OBJS:.o=.dep)
endif
endif
@@ -4971,188 +5161,283 @@
endif
-FD_POSIX_TEST_SRC = \
- test/core/iomgr/fd_posix_test.c \
+TRANSPORT_METADATA_TEST_SRC = \
+ test/core/transport/metadata_test.c \
-FD_POSIX_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FD_POSIX_TEST_SRC))))
+TRANSPORT_METADATA_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TRANSPORT_METADATA_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/fd_posix_test: openssl_dep_error
+bins/$(CONFIG)/transport_metadata_test: openssl_dep_error
else
-bins/$(CONFIG)/fd_posix_test: $(FD_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/transport_metadata_test: $(TRANSPORT_METADATA_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(FD_POSIX_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fd_posix_test
+ $(Q) $(LD) $(LDFLAGS) $(TRANSPORT_METADATA_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/transport_metadata_test
endif
-objs/$(CONFIG)/test/core/iomgr/fd_posix_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/core/transport/metadata_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_fd_posix_test: $(FD_POSIX_TEST_OBJS:.o=.dep)
+deps_transport_metadata_test: $(TRANSPORT_METADATA_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(FD_POSIX_TEST_OBJS:.o=.dep)
+-include $(TRANSPORT_METADATA_TEST_OBJS:.o=.dep)
endif
endif
-FLING_STREAM_TEST_SRC = \
- test/core/fling/fling_stream_test.c \
+CHANNEL_ARGUMENTS_TEST_SRC = \
+ test/cpp/client/channel_arguments_test.cc \
-FLING_STREAM_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(FLING_STREAM_TEST_SRC))))
+CHANNEL_ARGUMENTS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHANNEL_ARGUMENTS_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/fling_stream_test: openssl_dep_error
+bins/$(CONFIG)/channel_arguments_test: openssl_dep_error
else
-bins/$(CONFIG)/fling_stream_test: $(FLING_STREAM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/channel_arguments_test: $(CHANNEL_ARGUMENTS_TEST_OBJS) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(FLING_STREAM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/fling_stream_test
+ $(Q) $(LDXX) $(LDFLAGS) $(CHANNEL_ARGUMENTS_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/channel_arguments_test
endif
-objs/$(CONFIG)/test/core/fling/fling_stream_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/client/channel_arguments_test.o: libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
-deps_fling_stream_test: $(FLING_STREAM_TEST_OBJS:.o=.dep)
+deps_channel_arguments_test: $(CHANNEL_ARGUMENTS_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(FLING_STREAM_TEST_OBJS:.o=.dep)
+-include $(CHANNEL_ARGUMENTS_TEST_OBJS:.o=.dep)
endif
endif
-LAME_CLIENT_TEST_SRC = \
- test/core/surface/lame_client_test.c \
+CPP_PLUGIN_SRC = \
+ src/compiler/cpp_generator.cc \
+ src/compiler/cpp_plugin.cc \
-LAME_CLIENT_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(LAME_CLIENT_TEST_SRC))))
+CPP_PLUGIN_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CPP_PLUGIN_SRC))))
+
+bins/$(CONFIG)/cpp_plugin: $(CPP_PLUGIN_OBJS)
+ $(E) "[HOSTLD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(HOST_LDXX) $(HOST_LDFLAGS) $(CPP_PLUGIN_OBJS) $(HOST_LDLIBSXX) $(HOST_LDLIBS) $(HOST_LDLIBS_PROTOC) -o bins/$(CONFIG)/cpp_plugin
+
+objs/$(CONFIG)/src/compiler/cpp_generator.o:
+objs/$(CONFIG)/src/compiler/cpp_plugin.o:
+
+deps_cpp_plugin: $(CPP_PLUGIN_OBJS:.o=.dep)
+
+ifneq ($(NO_DEPS),true)
+-include $(CPP_PLUGIN_OBJS:.o=.dep)
+endif
+
+
+CREDENTIALS_TEST_SRC = \
+ test/cpp/client/credentials_test.cc \
+
+CREDENTIALS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CREDENTIALS_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/lame_client_test: openssl_dep_error
+bins/$(CONFIG)/credentials_test: openssl_dep_error
else
-bins/$(CONFIG)/lame_client_test: $(LAME_CLIENT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/credentials_test: $(CREDENTIALS_TEST_OBJS) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(LAME_CLIENT_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/lame_client_test
+ $(Q) $(LDXX) $(LDFLAGS) $(CREDENTIALS_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/credentials_test
endif
-objs/$(CONFIG)/test/core/surface/lame_client_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/client/credentials_test.o: libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
-deps_lame_client_test: $(LAME_CLIENT_TEST_OBJS:.o=.dep)
+deps_credentials_test: $(CREDENTIALS_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(LAME_CLIENT_TEST_OBJS:.o=.dep)
+-include $(CREDENTIALS_TEST_OBJS:.o=.dep)
endif
endif
-THREAD_POOL_TEST_SRC = \
- test/cpp/server/thread_pool_test.cc \
+END2END_TEST_SRC = \
+ test/cpp/end2end/end2end_test.cc \
-THREAD_POOL_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(THREAD_POOL_TEST_SRC))))
+END2END_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(END2END_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/thread_pool_test: openssl_dep_error
+bins/$(CONFIG)/end2end_test: openssl_dep_error
else
-bins/$(CONFIG)/thread_pool_test: $(THREAD_POOL_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/end2end_test: $(END2END_TEST_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(THREAD_POOL_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/thread_pool_test
+ $(Q) $(LDXX) $(LDFLAGS) $(END2END_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/end2end_test
endif
-objs/$(CONFIG)/test/cpp/server/thread_pool_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/end2end/end2end_test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_thread_pool_test: $(THREAD_POOL_TEST_OBJS:.o=.dep)
+deps_end2end_test: $(END2END_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(THREAD_POOL_TEST_OBJS:.o=.dep)
+-include $(END2END_TEST_OBJS:.o=.dep)
endif
endif
-STATUS_TEST_SRC = \
- test/cpp/util/status_test.cc \
+INTEROP_CLIENT_SRC = \
+ gens/test/cpp/interop/empty.pb.cc \
+ gens/test/cpp/interop/messages.pb.cc \
+ gens/test/cpp/interop/test.pb.cc \
+ test/cpp/interop/client.cc \
-STATUS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(STATUS_TEST_SRC))))
+INTEROP_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(INTEROP_CLIENT_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/status_test: openssl_dep_error
+bins/$(CONFIG)/interop_client: openssl_dep_error
else
-bins/$(CONFIG)/status_test: $(STATUS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/interop_client: $(INTEROP_CLIENT_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(STATUS_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/status_test
+ $(Q) $(LDXX) $(LDFLAGS) $(INTEROP_CLIENT_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/interop_client
endif
-objs/$(CONFIG)/test/cpp/util/status_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/empty.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/messages.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/client.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_status_test: $(STATUS_TEST_OBJS:.o=.dep)
+deps_interop_client: $(INTEROP_CLIENT_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(STATUS_TEST_OBJS:.o=.dep)
+-include $(INTEROP_CLIENT_OBJS:.o=.dep)
endif
endif
-SYNC_CLIENT_ASYNC_SERVER_TEST_SRC = \
- test/cpp/end2end/sync_client_async_server_test.cc \
+INTEROP_SERVER_SRC = \
+ gens/test/cpp/interop/empty.pb.cc \
+ gens/test/cpp/interop/messages.pb.cc \
+ gens/test/cpp/interop/test.pb.cc \
+ test/cpp/interop/server.cc \
-SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(SYNC_CLIENT_ASYNC_SERVER_TEST_SRC))))
+INTEROP_SERVER_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(INTEROP_SERVER_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/sync_client_async_server_test: openssl_dep_error
+bins/$(CONFIG)/interop_server: openssl_dep_error
else
-bins/$(CONFIG)/sync_client_async_server_test: $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/interop_server: $(INTEROP_SERVER_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/sync_client_async_server_test
+ $(Q) $(LDXX) $(LDFLAGS) $(INTEROP_SERVER_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/interop_server
endif
-objs/$(CONFIG)/test/cpp/end2end/sync_client_async_server_test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/empty.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/messages.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/interop/server.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_sync_client_async_server_test: $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS:.o=.dep)
+deps_interop_server: $(INTEROP_SERVER_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS:.o=.dep)
+-include $(INTEROP_SERVER_OBJS:.o=.dep)
+endif
+endif
+
+
+TIPS_CLIENT_SRC = \
+ examples/tips/client_main.cc \
+
+TIPS_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIPS_CLIENT_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/tips_client: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/tips_client: $(TIPS_CLIENT_OBJS) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(TIPS_CLIENT_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tips_client
+
+endif
+
+objs/$(CONFIG)/examples/tips/client_main.o: libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_tips_client: $(TIPS_CLIENT_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TIPS_CLIENT_OBJS:.o=.dep)
+endif
+endif
+
+
+TIPS_CLIENT_TEST_SRC = \
+ examples/tips/client_test.cc \
+
+TIPS_CLIENT_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIPS_CLIENT_TEST_SRC))))
+
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL with ALPN.
+
+bins/$(CONFIG)/tips_client_test: openssl_dep_error
+
+else
+
+bins/$(CONFIG)/tips_client_test: $(TIPS_CLIENT_TEST_OBJS) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(TIPS_CLIENT_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tips_client_test
+
+endif
+
+objs/$(CONFIG)/examples/tips/client_test.o: libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+
+deps_tips_client_test: $(TIPS_CLIENT_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(TIPS_CLIENT_TEST_OBJS:.o=.dep)
endif
endif
@@ -5223,355 +5508,116 @@
endif
-INTEROP_SERVER_SRC = \
- gens/test/cpp/interop/empty.pb.cc \
- gens/test/cpp/interop/messages.pb.cc \
- gens/test/cpp/interop/test.pb.cc \
- test/cpp/interop/server.cc \
+RUBY_PLUGIN_SRC = \
+ src/compiler/ruby_generator.cc \
+ src/compiler/ruby_plugin.cc \
-INTEROP_SERVER_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(INTEROP_SERVER_SRC))))
+RUBY_PLUGIN_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(RUBY_PLUGIN_SRC))))
+
+bins/$(CONFIG)/ruby_plugin: $(RUBY_PLUGIN_OBJS)
+ $(E) "[HOSTLD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(HOST_LDXX) $(HOST_LDFLAGS) $(RUBY_PLUGIN_OBJS) $(HOST_LDLIBSXX) $(HOST_LDLIBS) $(HOST_LDLIBS_PROTOC) -o bins/$(CONFIG)/ruby_plugin
+
+objs/$(CONFIG)/src/compiler/ruby_generator.o:
+objs/$(CONFIG)/src/compiler/ruby_plugin.o:
+
+deps_ruby_plugin: $(RUBY_PLUGIN_OBJS:.o=.dep)
+
+ifneq ($(NO_DEPS),true)
+-include $(RUBY_PLUGIN_OBJS:.o=.dep)
+endif
+
+
+STATUS_TEST_SRC = \
+ test/cpp/util/status_test.cc \
+
+STATUS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(STATUS_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/interop_server: openssl_dep_error
+bins/$(CONFIG)/status_test: openssl_dep_error
else
-bins/$(CONFIG)/interop_server: $(INTEROP_SERVER_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/status_test: $(STATUS_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(INTEROP_SERVER_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/interop_server
+ $(Q) $(LDXX) $(LDFLAGS) $(STATUS_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/status_test
endif
-objs/$(CONFIG)/test/cpp/interop/empty.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-objs/$(CONFIG)/test/cpp/interop/messages.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-objs/$(CONFIG)/test/cpp/interop/test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-objs/$(CONFIG)/test/cpp/interop/server.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/util/status_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_interop_server: $(INTEROP_SERVER_OBJS:.o=.dep)
+deps_status_test: $(STATUS_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(INTEROP_SERVER_OBJS:.o=.dep)
+-include $(STATUS_TEST_OBJS:.o=.dep)
endif
endif
-INTEROP_CLIENT_SRC = \
- gens/test/cpp/interop/empty.pb.cc \
- gens/test/cpp/interop/messages.pb.cc \
- gens/test/cpp/interop/test.pb.cc \
- test/cpp/interop/client.cc \
+SYNC_CLIENT_ASYNC_SERVER_TEST_SRC = \
+ test/cpp/end2end/sync_client_async_server_test.cc \
-INTEROP_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(INTEROP_CLIENT_SRC))))
+SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(SYNC_CLIENT_ASYNC_SERVER_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/interop_client: openssl_dep_error
+bins/$(CONFIG)/sync_client_async_server_test: openssl_dep_error
else
-bins/$(CONFIG)/interop_client: $(INTEROP_CLIENT_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/sync_client_async_server_test: $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(INTEROP_CLIENT_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/interop_client
+ $(Q) $(LDXX) $(LDFLAGS) $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/sync_client_async_server_test
endif
-objs/$(CONFIG)/test/cpp/interop/empty.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-objs/$(CONFIG)/test/cpp/interop/messages.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-objs/$(CONFIG)/test/cpp/interop/test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-objs/$(CONFIG)/test/cpp/interop/client.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/end2end/sync_client_async_server_test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_interop_client: $(INTEROP_CLIENT_OBJS:.o=.dep)
+deps_sync_client_async_server_test: $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(INTEROP_CLIENT_OBJS:.o=.dep)
+-include $(SYNC_CLIENT_ASYNC_SERVER_TEST_OBJS:.o=.dep)
endif
endif
-TIPS_CLIENT_SRC = \
- examples/tips/client_main.cc \
+THREAD_POOL_TEST_SRC = \
+ test/cpp/server/thread_pool_test.cc \
-TIPS_CLIENT_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIPS_CLIENT_SRC))))
+THREAD_POOL_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(THREAD_POOL_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL with ALPN.
-bins/$(CONFIG)/tips_client: openssl_dep_error
+bins/$(CONFIG)/thread_pool_test: openssl_dep_error
else
-bins/$(CONFIG)/tips_client: $(TIPS_CLIENT_OBJS) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+bins/$(CONFIG)/thread_pool_test: $(THREAD_POOL_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(TIPS_CLIENT_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tips_client
+ $(Q) $(LDXX) $(LDFLAGS) $(THREAD_POOL_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/thread_pool_test
endif
-objs/$(CONFIG)/examples/tips/client_main.o: libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
+objs/$(CONFIG)/test/cpp/server/thread_pool_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-deps_tips_client: $(TIPS_CLIENT_OBJS:.o=.dep)
+deps_thread_pool_test: $(THREAD_POOL_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(TIPS_CLIENT_OBJS:.o=.dep)
-endif
-endif
-
-
-TIPS_CLIENT_TEST_SRC = \
- examples/tips/client_test.cc \
-
-TIPS_CLIENT_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIPS_CLIENT_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/tips_client_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/tips_client_test: $(TIPS_CLIENT_TEST_OBJS) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(TIPS_CLIENT_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/tips_client_test
-
-endif
-
-objs/$(CONFIG)/examples/tips/client_test.o: libs/$(CONFIG)/libtips_client_lib.a libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_tips_client_test: $(TIPS_CLIENT_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(TIPS_CLIENT_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-END2END_TEST_SRC = \
- test/cpp/end2end/end2end_test.cc \
-
-END2END_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(END2END_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/end2end_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/end2end_test: $(END2END_TEST_OBJS) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(END2END_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/end2end_test
-
-endif
-
-objs/$(CONFIG)/test/cpp/end2end/end2end_test.o: libs/$(CONFIG)/libgrpc++_test_util.a libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_end2end_test: $(END2END_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(END2END_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CHANNEL_ARGUMENTS_TEST_SRC = \
- test/cpp/client/channel_arguments_test.cc \
-
-CHANNEL_ARGUMENTS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CHANNEL_ARGUMENTS_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/channel_arguments_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/channel_arguments_test: $(CHANNEL_ARGUMENTS_TEST_OBJS) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(CHANNEL_ARGUMENTS_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/channel_arguments_test
-
-endif
-
-objs/$(CONFIG)/test/cpp/client/channel_arguments_test.o: libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
-
-deps_channel_arguments_test: $(CHANNEL_ARGUMENTS_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CHANNEL_ARGUMENTS_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-CREDENTIALS_TEST_SRC = \
- test/cpp/client/credentials_test.cc \
-
-CREDENTIALS_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(CREDENTIALS_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/credentials_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/credentials_test: $(CREDENTIALS_TEST_OBJS) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(CREDENTIALS_TEST_OBJS) $(GTEST_LIB) libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/credentials_test
-
-endif
-
-objs/$(CONFIG)/test/cpp/client/credentials_test.o: libs/$(CONFIG)/libgrpc++.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr.a
-
-deps_credentials_test: $(CREDENTIALS_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(CREDENTIALS_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-ALARM_TEST_SRC = \
- test/core/iomgr/alarm_test.c \
-
-ALARM_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/alarm_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/alarm_test: $(ALARM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(ALARM_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alarm_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/alarm_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_alarm_test: $(ALARM_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(ALARM_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-ALARM_LIST_TEST_SRC = \
- test/core/iomgr/alarm_list_test.c \
-
-ALARM_LIST_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_LIST_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/alarm_list_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/alarm_list_test: $(ALARM_LIST_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(ALARM_LIST_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alarm_list_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/alarm_list_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_alarm_list_test: $(ALARM_LIST_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(ALARM_LIST_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-ALARM_HEAP_TEST_SRC = \
- test/core/iomgr/alarm_heap_test.c \
-
-ALARM_HEAP_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(ALARM_HEAP_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/alarm_heap_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/alarm_heap_test: $(ALARM_HEAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(ALARM_HEAP_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/alarm_heap_test
-
-endif
-
-objs/$(CONFIG)/test/core/iomgr/alarm_heap_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_alarm_heap_test: $(ALARM_HEAP_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(ALARM_HEAP_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-TIME_TEST_SRC = \
- test/core/support/time_test.c \
-
-TIME_TEST_OBJS = $(addprefix objs/$(CONFIG)/, $(addsuffix .o, $(basename $(TIME_TEST_SRC))))
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL with ALPN.
-
-bins/$(CONFIG)/time_test: openssl_dep_error
-
-else
-
-bins/$(CONFIG)/time_test: $(TIME_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(TIME_TEST_OBJS) libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o bins/$(CONFIG)/time_test
-
-endif
-
-objs/$(CONFIG)/test/core/support/time_test.o: libs/$(CONFIG)/libgrpc_test_util.a libs/$(CONFIG)/libgrpc.a libs/$(CONFIG)/libgpr_test_util.a libs/$(CONFIG)/libgpr.a
-
-deps_time_test: $(TIME_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(TIME_TEST_OBJS:.o=.dep)
+-include $(THREAD_POOL_TEST_OBJS:.o=.dep)
endif
endif
diff --git a/build.json b/build.json
index a3dea9c..31bec6c 100644
--- a/build.json
+++ b/build.json
@@ -11,6 +11,91 @@
"filegroups": [
{
"name": "grpc_base",
+ "public_headers": [
+ "include/grpc/byte_buffer.h",
+ "include/grpc/byte_buffer_reader.h",
+ "include/grpc/grpc.h",
+ "include/grpc/status.h"
+ ],
+ "headers": [
+ "src/core/channel/census_filter.h",
+ "src/core/channel/channel_args.h",
+ "src/core/channel/channel_stack.h",
+ "src/core/channel/child_channel.h",
+ "src/core/channel/client_channel.h",
+ "src/core/channel/client_setup.h",
+ "src/core/channel/connected_channel.h",
+ "src/core/channel/http_client_filter.h",
+ "src/core/channel/http_filter.h",
+ "src/core/channel/http_server_filter.h",
+ "src/core/channel/metadata_buffer.h",
+ "src/core/channel/noop_filter.h",
+ "src/core/compression/algorithm.h",
+ "src/core/compression/message_compress.h",
+ "src/core/httpcli/format_request.h",
+ "src/core/httpcli/httpcli.h",
+ "src/core/httpcli/httpcli_security_context.h",
+ "src/core/httpcli/parser.h",
+ "src/core/iomgr/alarm.h",
+ "src/core/iomgr/alarm_heap.h",
+ "src/core/iomgr/alarm_internal.h",
+ "src/core/iomgr/endpoint.h",
+ "src/core/iomgr/endpoint_pair.h",
+ "src/core/iomgr/fd_posix.h",
+ "src/core/iomgr/iomgr.h",
+ "src/core/iomgr/iomgr_internal.h",
+ "src/core/iomgr/iomgr_posix.h",
+ "src/core/iomgr/pollset.h",
+ "src/core/iomgr/pollset_kick.h",
+ "src/core/iomgr/pollset_kick_posix.h",
+ "src/core/iomgr/pollset_posix.h",
+ "src/core/iomgr/resolve_address.h",
+ "src/core/iomgr/sockaddr.h",
+ "src/core/iomgr/sockaddr_posix.h",
+ "src/core/iomgr/sockaddr_utils.h",
+ "src/core/iomgr/sockaddr_win32.h",
+ "src/core/iomgr/socket_utils_posix.h",
+ "src/core/iomgr/tcp_client.h",
+ "src/core/iomgr/tcp_posix.h",
+ "src/core/iomgr/tcp_server.h",
+ "src/core/iomgr/time_averaged_stats.h",
+ "src/core/statistics/census_interface.h",
+ "src/core/statistics/census_log.h",
+ "src/core/statistics/census_rpc_stats.h",
+ "src/core/statistics/census_tracing.h",
+ "src/core/statistics/hash_table.h",
+ "src/core/statistics/window_stats.h",
+ "src/core/surface/call.h",
+ "src/core/surface/channel.h",
+ "src/core/surface/client.h",
+ "src/core/surface/completion_queue.h",
+ "src/core/surface/event_string.h",
+ "src/core/surface/lame_client.h",
+ "src/core/surface/server.h",
+ "src/core/surface/surface_trace.h",
+ "src/core/transport/chttp2/bin_encoder.h",
+ "src/core/transport/chttp2/frame.h",
+ "src/core/transport/chttp2/frame_data.h",
+ "src/core/transport/chttp2/frame_goaway.h",
+ "src/core/transport/chttp2/frame_ping.h",
+ "src/core/transport/chttp2/frame_rst_stream.h",
+ "src/core/transport/chttp2/frame_settings.h",
+ "src/core/transport/chttp2/frame_window_update.h",
+ "src/core/transport/chttp2/hpack_parser.h",
+ "src/core/transport/chttp2/hpack_table.h",
+ "src/core/transport/chttp2/http2_errors.h",
+ "src/core/transport/chttp2/huffsyms.h",
+ "src/core/transport/chttp2/status_conversion.h",
+ "src/core/transport/chttp2/stream_encoder.h",
+ "src/core/transport/chttp2/stream_map.h",
+ "src/core/transport/chttp2/timeout_encoding.h",
+ "src/core/transport/chttp2/varint.h",
+ "src/core/transport/chttp2_transport.h",
+ "src/core/transport/metadata.h",
+ "src/core/transport/stream_op.h",
+ "src/core/transport/transport.h",
+ "src/core/transport/transport_impl.h"
+ ],
"src": [
"src/core/channel/call_op_string.c",
"src/core/channel/census_filter.c",
@@ -38,6 +123,7 @@
"src/core/iomgr/fd_posix.c",
"src/core/iomgr/iomgr.c",
"src/core/iomgr/iomgr_posix.c",
+ "src/core/iomgr/pollset_kick_posix.c",
"src/core/iomgr/pollset_multipoller_with_poll_posix.c",
"src/core/iomgr/pollset_posix.c",
"src/core/iomgr/resolve_address_posix.c",
@@ -91,89 +177,6 @@
"src/core/transport/stream_op.c",
"src/core/transport/transport.c",
"third_party/cJSON/cJSON.c"
- ],
- "public_headers": [
- "include/grpc/byte_buffer.h",
- "include/grpc/byte_buffer_reader.h",
- "include/grpc/grpc.h",
- "include/grpc/status.h"
- ],
- "headers": [
- "src/core/channel/census_filter.h",
- "src/core/channel/channel_args.h",
- "src/core/channel/channel_stack.h",
- "src/core/channel/child_channel.h",
- "src/core/channel/client_channel.h",
- "src/core/channel/client_setup.h",
- "src/core/channel/connected_channel.h",
- "src/core/channel/http_client_filter.h",
- "src/core/channel/http_filter.h",
- "src/core/channel/http_server_filter.h",
- "src/core/channel/metadata_buffer.h",
- "src/core/channel/noop_filter.h",
- "src/core/compression/algorithm.h",
- "src/core/compression/message_compress.h",
- "src/core/httpcli/format_request.h",
- "src/core/httpcli/httpcli.h",
- "src/core/httpcli/httpcli_security_context.h",
- "src/core/httpcli/parser.h",
- "src/core/iomgr/alarm.h",
- "src/core/iomgr/alarm_heap.h",
- "src/core/iomgr/alarm_internal.h",
- "src/core/iomgr/endpoint.h",
- "src/core/iomgr/endpoint_pair.h",
- "src/core/iomgr/fd_posix.h",
- "src/core/iomgr/iomgr.h",
- "src/core/iomgr/iomgr_internal.h",
- "src/core/iomgr/iomgr_posix.h",
- "src/core/iomgr/pollset.h",
- "src/core/iomgr/pollset_posix.h",
- "src/core/iomgr/resolve_address.h",
- "src/core/iomgr/sockaddr.h",
- "src/core/iomgr/sockaddr_posix.h",
- "src/core/iomgr/sockaddr_utils.h",
- "src/core/iomgr/sockaddr_win32.h",
- "src/core/iomgr/socket_utils_posix.h",
- "src/core/iomgr/tcp_client.h",
- "src/core/iomgr/tcp_posix.h",
- "src/core/iomgr/tcp_server.h",
- "src/core/iomgr/time_averaged_stats.h",
- "src/core/statistics/census_interface.h",
- "src/core/statistics/census_log.h",
- "src/core/statistics/census_rpc_stats.h",
- "src/core/statistics/census_tracing.h",
- "src/core/statistics/hash_table.h",
- "src/core/statistics/window_stats.h",
- "src/core/surface/call.h",
- "src/core/surface/channel.h",
- "src/core/surface/client.h",
- "src/core/surface/completion_queue.h",
- "src/core/surface/event_string.h",
- "src/core/surface/lame_client.h",
- "src/core/surface/server.h",
- "src/core/surface/surface_trace.h",
- "src/core/transport/chttp2/bin_encoder.h",
- "src/core/transport/chttp2/frame.h",
- "src/core/transport/chttp2/frame_data.h",
- "src/core/transport/chttp2/frame_goaway.h",
- "src/core/transport/chttp2/frame_ping.h",
- "src/core/transport/chttp2/frame_rst_stream.h",
- "src/core/transport/chttp2/frame_settings.h",
- "src/core/transport/chttp2/frame_window_update.h",
- "src/core/transport/chttp2/hpack_parser.h",
- "src/core/transport/chttp2/hpack_table.h",
- "src/core/transport/chttp2/http2_errors.h",
- "src/core/transport/chttp2/huffsyms.h",
- "src/core/transport/chttp2/status_conversion.h",
- "src/core/transport/chttp2/stream_encoder.h",
- "src/core/transport/chttp2/stream_map.h",
- "src/core/transport/chttp2/timeout_encoding.h",
- "src/core/transport/chttp2/varint.h",
- "src/core/transport/chttp2_transport.h",
- "src/core/transport/metadata.h",
- "src/core/transport/stream_op.h",
- "src/core/transport/transport.h",
- "src/core/transport/transport_impl.h"
]
}
],
@@ -181,41 +184,12 @@
{
"name": "gpr",
"build": "all",
- "secure": false,
- "vs_project_guid": "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}",
- "src": [
- "src/core/support/alloc.c",
- "src/core/support/cancellable.c",
- "src/core/support/cmdline.c",
- "src/core/support/cpu_linux.c",
- "src/core/support/cpu_posix.c",
- "src/core/support/histogram.c",
- "src/core/support/host_port.c",
- "src/core/support/log_android.c",
- "src/core/support/log.c",
- "src/core/support/log_linux.c",
- "src/core/support/log_posix.c",
- "src/core/support/log_win32.c",
- "src/core/support/murmur_hash.c",
- "src/core/support/slice_buffer.c",
- "src/core/support/slice.c",
- "src/core/support/string.c",
- "src/core/support/string_posix.c",
- "src/core/support/string_win32.c",
- "src/core/support/sync.c",
- "src/core/support/sync_posix.c",
- "src/core/support/sync_win32.c",
- "src/core/support/thd_posix.c",
- "src/core/support/thd_win32.c",
- "src/core/support/time.c",
- "src/core/support/time_posix.c",
- "src/core/support/time_win32.c"
- ],
+ "language": "c",
"public_headers": [
"include/grpc/support/alloc.h",
+ "include/grpc/support/atm.h",
"include/grpc/support/atm_gcc_atomic.h",
"include/grpc/support/atm_gcc_sync.h",
- "include/grpc/support/atm.h",
"include/grpc/support/atm_win32.h",
"include/grpc/support/cancellable_platform.h",
"include/grpc/support/cmdline.h",
@@ -223,11 +197,11 @@
"include/grpc/support/host_port.h",
"include/grpc/support/log.h",
"include/grpc/support/port_platform.h",
- "include/grpc/support/slice_buffer.h",
"include/grpc/support/slice.h",
+ "include/grpc/support/slice_buffer.h",
"include/grpc/support/string.h",
- "include/grpc/support/sync_generic.h",
"include/grpc/support/sync.h",
+ "include/grpc/support/sync_generic.h",
"include/grpc/support/sync_posix.h",
"include/grpc/support/sync_win32.h",
"include/grpc/support/thd.h",
@@ -242,32 +216,51 @@
"src/core/support/cpu.h",
"src/core/support/murmur_hash.h",
"src/core/support/thd_internal.h"
- ]
+ ],
+ "src": [
+ "src/core/support/alloc.c",
+ "src/core/support/cancellable.c",
+ "src/core/support/cmdline.c",
+ "src/core/support/cpu_linux.c",
+ "src/core/support/cpu_posix.c",
+ "src/core/support/histogram.c",
+ "src/core/support/host_port.c",
+ "src/core/support/log.c",
+ "src/core/support/log_android.c",
+ "src/core/support/log_linux.c",
+ "src/core/support/log_posix.c",
+ "src/core/support/log_win32.c",
+ "src/core/support/murmur_hash.c",
+ "src/core/support/slice.c",
+ "src/core/support/slice_buffer.c",
+ "src/core/support/string.c",
+ "src/core/support/string_posix.c",
+ "src/core/support/string_win32.c",
+ "src/core/support/sync.c",
+ "src/core/support/sync_posix.c",
+ "src/core/support/sync_win32.c",
+ "src/core/support/thd_posix.c",
+ "src/core/support/thd_win32.c",
+ "src/core/support/time.c",
+ "src/core/support/time_posix.c",
+ "src/core/support/time_win32.c"
+ ],
+ "secure": false,
+ "vs_project_guid": "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}"
+ },
+ {
+ "name": "gpr_test_util",
+ "build": "private",
+ "language": "c",
+ "src": [
+ "test/core/util/test_config.c"
+ ],
+ "vs_project_guid": "{EAB0A629-17A9-44DB-B5FF-E91A721FE037}"
},
{
"name": "grpc",
"build": "all",
- "secure": true,
- "vs_project_guid": "{29D16885-7228-4C31-81ED-5F9187C7F2A9}",
- "baselib": true,
- "filegroups": [
- "grpc_base"
- ],
- "src": [
- "src/core/security/auth.c",
- "src/core/security/base64.c",
- "src/core/security/credentials.c",
- "src/core/security/factories.c",
- "src/core/security/google_root_certs.c",
- "src/core/security/json_token.c",
- "src/core/security/secure_endpoint.c",
- "src/core/security/secure_transport_setup.c",
- "src/core/security/security_context.c",
- "src/core/security/server_secure_chttp2.c",
- "src/core/tsi/fake_transport_security.c",
- "src/core/tsi/ssl_transport_security.c",
- "src/core/tsi/transport_security.c"
- ],
+ "language": "c",
"public_headers": [
"include/grpc/grpc_security.h"
],
@@ -284,81 +277,72 @@
"src/core/tsi/transport_security.h",
"src/core/tsi/transport_security_interface.h"
],
+ "src": [
+ "src/core/security/auth.c",
+ "src/core/security/base64.c",
+ "src/core/security/credentials.c",
+ "src/core/security/factories.c",
+ "src/core/security/google_root_certs.c",
+ "src/core/security/json_token.c",
+ "src/core/security/secure_endpoint.c",
+ "src/core/security/secure_transport_setup.c",
+ "src/core/security/security_context.c",
+ "src/core/security/server_secure_chttp2.c",
+ "src/core/tsi/fake_transport_security.c",
+ "src/core/tsi/ssl_transport_security.c",
+ "src/core/tsi/transport_security.c"
+ ],
"deps": [
"gpr"
- ]
- },
- {
- "name": "grpc_unsecure",
- "build": "all",
- "secure": false,
- "vs_project_guid": "{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}",
+ ],
"baselib": true,
"filegroups": [
"grpc_base"
],
- "deps": [
- "gpr"
- ]
- },
- {
- "name": "gpr_test_util",
- "build": "private",
- "vs_project_guid": "{EAB0A629-17A9-44DB-B5FF-E91A721FE037}",
- "src": [
- "test/core/util/test_config.c"
- ]
+ "secure": true,
+ "vs_project_guid": "{29D16885-7228-4C31-81ED-5F9187C7F2A9}"
},
{
"name": "grpc_test_util",
"build": "private",
- "vs_project_guid": "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}",
+ "language": "c",
"src": [
"test/core/end2end/cq_verifier.c",
- "test/core/end2end/data/test_root_cert.c",
"test/core/end2end/data/prod_roots_certs.c",
"test/core/end2end/data/server1_cert.c",
"test/core/end2end/data/server1_key.c",
+ "test/core/end2end/data/test_root_cert.c",
"test/core/iomgr/endpoint_tests.c",
"test/core/statistics/census_log_tests.c",
"test/core/transport/transport_end2end_tests.c",
"test/core/util/grpc_profiler.c",
- "test/core/util/port_posix.c",
"test/core/util/parse_hexstring.c",
+ "test/core/util/port_posix.c",
"test/core/util/slice_splitter.c"
- ]
+ ],
+ "vs_project_guid": "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
+ },
+ {
+ "name": "grpc_unsecure",
+ "build": "all",
+ "language": "c",
+ "deps": [
+ "gpr"
+ ],
+ "baselib": true,
+ "filegroups": [
+ "grpc_base"
+ ],
+ "secure": false,
+ "vs_project_guid": "{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}"
},
{
"name": "grpc++",
"build": "all",
- "c++": true,
- "secure": true,
- "vs_project_guid": "{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}",
- "src": [
- "src/cpp/client/channel.cc",
- "src/cpp/client/channel_arguments.cc",
- "src/cpp/client/client_context.cc",
- "src/cpp/client/create_channel.cc",
- "src/cpp/client/credentials.cc",
- "src/cpp/client/internal_stub.cc",
- "src/cpp/proto/proto_utils.cc",
- "src/cpp/common/rpc_method.cc",
- "src/cpp/server/async_server.cc",
- "src/cpp/server/async_server_context.cc",
- "src/cpp/server/completion_queue.cc",
- "src/cpp/server/server_builder.cc",
- "src/cpp/server/server_context_impl.cc",
- "src/cpp/server/server.cc",
- "src/cpp/server/server_rpc_handler.cc",
- "src/cpp/server/server_credentials.cc",
- "src/cpp/server/thread_pool.cc",
- "src/cpp/stream/stream_context.cc",
- "src/cpp/util/status.cc",
- "src/cpp/util/time.cc"
- ],
+ "language": "c++",
"public_headers": [
- "include/grpc++/async_server_context.h",
"include/grpc++/async_server.h",
+ "include/grpc++/async_server_context.h",
"include/grpc++/channel_arguments.h",
"include/grpc++/channel_interface.h",
"include/grpc++/client_context.h",
@@ -369,13 +353,13 @@
"include/grpc++/impl/internal_stub.h",
"include/grpc++/impl/rpc_method.h",
"include/grpc++/impl/rpc_service_method.h",
+ "include/grpc++/server.h",
"include/grpc++/server_builder.h",
"include/grpc++/server_context.h",
"include/grpc++/server_credentials.h",
- "include/grpc++/server.h",
"include/grpc++/status.h",
- "include/grpc++/stream_context_interface.h",
- "include/grpc++/stream.h"
+ "include/grpc++/stream.h",
+ "include/grpc++/stream_context_interface.h"
],
"headers": [
"src/cpp/client/channel.h",
@@ -385,25 +369,50 @@
"src/cpp/stream/stream_context.h",
"src/cpp/util/time.h"
],
+ "src": [
+ "src/cpp/client/channel.cc",
+ "src/cpp/client/channel_arguments.cc",
+ "src/cpp/client/client_context.cc",
+ "src/cpp/client/create_channel.cc",
+ "src/cpp/client/credentials.cc",
+ "src/cpp/client/internal_stub.cc",
+ "src/cpp/common/rpc_method.cc",
+ "src/cpp/proto/proto_utils.cc",
+ "src/cpp/server/async_server.cc",
+ "src/cpp/server/async_server_context.cc",
+ "src/cpp/server/completion_queue.cc",
+ "src/cpp/server/server.cc",
+ "src/cpp/server/server_builder.cc",
+ "src/cpp/server/server_context_impl.cc",
+ "src/cpp/server/server_credentials.cc",
+ "src/cpp/server/server_rpc_handler.cc",
+ "src/cpp/server/thread_pool.cc",
+ "src/cpp/stream/stream_context.cc",
+ "src/cpp/util/status.cc",
+ "src/cpp/util/time.cc"
+ ],
"deps": [
"grpc"
- ]
+ ],
+ "secure": true,
+ "vs_project_guid": "{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}"
},
{
"name": "grpc++_test_util",
"build": "private",
+ "language": "c++",
"src": [
- "test/cpp/util/messages.proto",
"test/cpp/util/echo.proto",
"test/cpp/util/echo_duplicate.proto",
- "test/cpp/util/create_test_channel.cc",
- "test/cpp/end2end/async_test_server.cc"
- ],
- "c++": true
+ "test/cpp/util/messages.proto",
+ "test/cpp/end2end/async_test_server.cc",
+ "test/cpp/util/create_test_channel.cc"
+ ]
},
{
"name": "tips_client_lib",
"build": "private",
+ "language": "c++",
"src": [
"examples/tips/label.proto",
"examples/tips/empty.proto",
@@ -414,61 +423,16 @@
"grpc++",
"grpc",
"gpr"
- ],
- "c++": true
+ ]
}
],
"targets": [
{
- "name": "gen_hpack_tables",
- "build": "tool",
- "src": [
- "src/core/transport/chttp2/gen_hpack_tables.c"
- ],
- "deps": [
- "grpc_test_util",
- "gpr",
- "grpc"
- ]
- },
-
- {
- "name": "cpp_plugin",
- "build": "protoc",
- "c++": true,
- "secure": false,
- "src": [
- "src/compiler/cpp_plugin.cc",
- "src/compiler/cpp_generator.cc"
- ],
- "headers": [
- "src/compiler/cpp_generator.h",
- "src/compiler/cpp_generator_helpers.h"
- ],
- "deps": []
- },
- {
- "name": "ruby_plugin",
- "build": "protoc",
- "c++": true,
- "secure": false,
- "src": [
- "src/compiler/ruby_plugin.cc",
- "src/compiler/ruby_generator.cc"
- ],
- "headers": [
- "src/compiler/cpp_generator.h",
- "src/compiler/cpp_generator_helpers-inl.h",
- "src/compiler/cpp_generator_map-inl.h",
- "src/compiler/cpp_generator_string-inl.h"
- ],
- "deps": []
- },
- {
- "name": "grpc_byte_buffer_reader_test",
+ "name": "alarm_heap_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/surface/byte_buffer_reader_test.c"
+ "test/core/iomgr/alarm_heap_test.c"
],
"deps": [
"grpc_test_util",
@@ -478,153 +442,25 @@
]
},
{
- "name": "gpr_cancellable_test",
+ "name": "alarm_list_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/support/cancellable_test.c"
+ "test/core/iomgr/alarm_list_test.c"
],
"deps": [
+ "grpc_test_util",
+ "grpc",
"gpr_test_util",
"gpr"
]
},
{
- "name": "gpr_log_test",
+ "name": "alarm_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/support/log_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_useful_test",
- "build": "test",
- "src": [
- "test/core/support/useful_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_cmdline_test",
- "build": "test",
- "src": [
- "test/core/support/cmdline_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_histogram_test",
- "build": "test",
- "src": [
- "test/core/support/histogram_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_host_port_test",
- "build": "test",
- "src": [
- "test/core/support/host_port_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_slice_buffer_test",
- "build": "test",
- "src": [
- "test/core/support/slice_buffer_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_slice_test",
- "build": "test",
- "src": [
- "test/core/support/slice_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_string_test",
- "build": "test",
- "src": [
- "test/core/support/string_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_sync_test",
- "build": "test",
- "src": [
- "test/core/support/sync_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_thd_test",
- "build": "test",
- "src": [
- "test/core/support/thd_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "gpr_time_test",
- "build": "test",
- "src": [
- "test/core/support/time_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "murmur_hash_test",
- "build": "test",
- "src": [
- "test/core/support/murmur_hash_test.c"
- ],
- "deps": [
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "grpc_stream_op_test",
- "build": "test",
- "src": [
- "test/core/transport/stream_op_test.c"
+ "test/core/iomgr/alarm_test.c"
],
"deps": [
"grpc_test_util",
@@ -636,6 +472,7 @@
{
"name": "alpn_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/transport/chttp2/alpn_test.c"
],
@@ -647,10 +484,11 @@
]
},
{
- "name": "time_averaged_stats_test",
+ "name": "bin_encoder_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/iomgr/time_averaged_stats_test.c"
+ "test/core/transport/chttp2/bin_encoder_test.c"
],
"deps": [
"grpc_test_util",
@@ -660,10 +498,11 @@
]
},
{
- "name": "chttp2_stream_encoder_test",
+ "name": "census_hash_table_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/transport/chttp2/stream_encoder_test.c"
+ "test/core/statistics/hash_table_test.c"
],
"deps": [
"grpc_test_util",
@@ -673,10 +512,11 @@
]
},
{
- "name": "hpack_table_test",
+ "name": "census_statistics_multiple_writers_circular_buffer_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/transport/chttp2/hpack_table_test.c"
+ "test/core/statistics/multiple_writers_circular_buffer_test.c"
],
"deps": [
"grpc_test_util",
@@ -686,10 +526,11 @@
]
},
{
- "name": "chttp2_stream_map_test",
+ "name": "census_statistics_multiple_writers_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/transport/chttp2/stream_map_test.c"
+ "test/core/statistics/multiple_writers_test.c"
],
"deps": [
"grpc_test_util",
@@ -699,231 +540,11 @@
]
},
{
- "name": "hpack_parser_test",
+ "name": "census_statistics_performance_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/transport/chttp2/hpack_parser_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "transport_metadata_test",
- "build": "test",
- "src": [
- "test/core/transport/metadata_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "chttp2_status_conversion_test",
- "build": "test",
- "src": [
- "test/core/transport/chttp2/status_conversion_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "chttp2_transport_end2end_test",
- "build": "test",
- "src": [
- "test/core/transport/chttp2_transport_end2end_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "tcp_posix_test",
- "build": "test",
- "src": [
- "test/core/iomgr/tcp_posix_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "dualstack_socket_test",
- "build": "test",
- "src": [
- "test/core/end2end/dualstack_socket_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "no_server_test",
- "build": "test",
- "src": [
- "test/core/end2end/no_server_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "resolve_address_test",
- "build": "test",
- "src": [
- "test/core/iomgr/resolve_address_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "sockaddr_utils_test",
- "build": "test",
- "src": [
- "test/core/iomgr/sockaddr_utils_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "tcp_server_posix_test",
- "build": "test",
- "src": [
- "test/core/iomgr/tcp_server_posix_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "tcp_client_posix_test",
- "build": "test",
- "src": [
- "test/core/iomgr/tcp_client_posix_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "grpc_channel_stack_test",
- "build": "test",
- "src": [
- "test/core/channel/channel_stack_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "metadata_buffer_test",
- "build": "test",
- "src": [
- "test/core/channel/metadata_buffer_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "grpc_completion_queue_test",
- "build": "test",
- "src": [
- "test/core/surface/completion_queue_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "grpc_completion_queue_benchmark",
- "build": "benchmark",
- "src": [
- "test/core/surface/completion_queue_benchmark.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "census_trace_store_test",
- "build": "executable",
- "src": [
- "test/core/statistics/trace_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "census_stats_store_test",
- "build": "executable",
- "src": [
- "test/core/statistics/rpc_stats_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "census_window_stats_test",
- "build": "test",
- "src": [
- "test/core/statistics/window_stats_test.c"
+ "test/core/statistics/performance_test.c"
],
"deps": [
"grpc_test_util",
@@ -935,6 +556,7 @@
{
"name": "census_statistics_quick_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/statistics/quick_test.c"
],
@@ -948,6 +570,7 @@
{
"name": "census_statistics_small_log_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/statistics/small_log_test.c"
],
@@ -959,36 +582,11 @@
]
},
{
- "name": "census_statistics_performance_test",
- "build": "test",
+ "name": "census_stats_store_test",
+ "build": "executable",
+ "language": "c",
"src": [
- "test/core/statistics/performance_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "census_statistics_multiple_writers_test",
- "build": "test",
- "src": [
- "test/core/statistics/multiple_writers_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "census_statistics_multiple_writers_circular_buffer_test",
- "build": "test",
- "src": [
- "test/core/statistics/multiple_writers_circular_buffer_test.c"
+ "test/core/statistics/rpc_stats_test.c"
],
"deps": [
"grpc_test_util",
@@ -1000,6 +598,7 @@
{
"name": "census_stub_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/statistics/census_stub_test.c"
],
@@ -1011,10 +610,11 @@
]
},
{
- "name": "census_hash_table_test",
- "build": "test",
+ "name": "census_trace_store_test",
+ "build": "executable",
+ "language": "c",
"src": [
- "test/core/statistics/hash_table_test.c"
+ "test/core/statistics/trace_test.c"
],
"deps": [
"grpc_test_util",
@@ -1024,11 +624,11 @@
]
},
{
- "name": "fling_server",
+ "name": "census_window_stats_test",
"build": "test",
- "run": false,
+ "language": "c",
"src": [
- "test/core/fling/server.c"
+ "test/core/statistics/window_stats_test.c"
],
"deps": [
"grpc_test_util",
@@ -1038,11 +638,11 @@
]
},
{
- "name": "fling_client",
+ "name": "chttp2_status_conversion_test",
"build": "test",
- "run": false,
+ "language": "c",
"src": [
- "test/core/fling/client.c"
+ "test/core/transport/chttp2/status_conversion_test.c"
],
"deps": [
"grpc_test_util",
@@ -1052,10 +652,11 @@
]
},
{
- "name": "fling_test",
+ "name": "chttp2_stream_encoder_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/fling/fling_test.c"
+ "test/core/transport/chttp2/stream_encoder_test.c"
],
"deps": [
"grpc_test_util",
@@ -1065,11 +666,39 @@
]
},
{
- "name": "echo_server",
+ "name": "chttp2_stream_map_test",
"build": "test",
- "run": false,
+ "language": "c",
"src": [
- "test/core/echo/server.c"
+ "test/core/transport/chttp2/stream_map_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "chttp2_transport_end2end_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/transport/chttp2_transport_end2end_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "dualstack_socket_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/end2end/dualstack_socket_test.c"
],
"deps": [
"grpc_test_util",
@@ -1081,7 +710,7 @@
{
"name": "echo_client",
"build": "test",
- "run": false,
+ "language": "c",
"src": [
"test/core/echo/client.c"
],
@@ -1090,11 +719,28 @@
"grpc",
"gpr_test_util",
"gpr"
- ]
+ ],
+ "run": false
+ },
+ {
+ "name": "echo_server",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/echo/server.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ],
+ "run": false
},
{
"name": "echo_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/echo/echo_test.c"
],
@@ -1106,10 +752,282 @@
]
},
{
- "name": "low_level_ping_pong_benchmark",
+ "name": "fd_posix_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/iomgr/fd_posix_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "fling_client",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/fling/client.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ],
+ "run": false
+ },
+ {
+ "name": "fling_server",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/fling/server.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ],
+ "run": false
+ },
+ {
+ "name": "fling_stream_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/fling/fling_stream_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "fling_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/fling/fling_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gen_hpack_tables",
+ "build": "tool",
+ "language": "c",
+ "src": [
+ "src/core/transport/chttp2/gen_hpack_tables.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "gpr",
+ "grpc"
+ ]
+ },
+ {
+ "name": "gpr_cancellable_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/cancellable_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_cmdline_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/cmdline_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_histogram_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/histogram_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_host_port_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/host_port_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_log_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/log_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_slice_buffer_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/slice_buffer_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_slice_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/slice_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_string_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/string_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_sync_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/sync_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_thd_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/thd_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_time_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/time_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "gpr_useful_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/useful_test.c"
+ ],
+ "deps": [
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "grpc_base64_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/security/base64_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "grpc_byte_buffer_reader_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/surface/byte_buffer_reader_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "grpc_channel_stack_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/channel/channel_stack_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "grpc_completion_queue_benchmark",
"build": "benchmark",
+ "language": "c",
"src": [
- "test/core/network_benchmarks/low_level_ping_pong.c"
+ "test/core/surface/completion_queue_benchmark.c"
],
"deps": [
"grpc_test_util",
@@ -1119,75 +1037,11 @@
]
},
{
- "name": "message_compress_test",
+ "name": "grpc_completion_queue_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/compression/message_compress_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "bin_encoder_test",
- "build": "test",
- "src": [
- "test/core/transport/chttp2/bin_encoder_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "secure_endpoint_test",
- "build": "test",
- "src": [
- "test/core/security/secure_endpoint_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "httpcli_format_request_test",
- "build": "test",
- "src": [
- "test/core/httpcli/format_request_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "httpcli_parser_test",
- "build": "test",
- "src": [
- "test/core/httpcli/parser_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "httpcli_test",
- "build": "test",
- "src": [
- "test/core/httpcli/httpcli_test.c"
+ "test/core/surface/completion_queue_test.c"
],
"deps": [
"grpc_test_util",
@@ -1199,6 +1053,7 @@
{
"name": "grpc_credentials_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/security/credentials_test.c"
],
@@ -1212,6 +1067,7 @@
{
"name": "grpc_fetch_oauth2",
"build": "tool",
+ "language": "c",
"src": [
"test/core/security/fetch_oauth2.c"
],
@@ -1223,21 +1079,9 @@
]
},
{
- "name": "grpc_base64_test",
- "build": "test",
- "src": [
- "test/core/security/base64_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
"name": "grpc_json_token_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/security/json_token_test.c"
],
@@ -1249,10 +1093,11 @@
]
},
{
- "name": "timeout_encoding_test",
+ "name": "grpc_stream_op_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/transport/chttp2/timeout_encoding_test.c"
+ "test/core/transport/stream_op_test.c"
],
"deps": [
"grpc_test_util",
@@ -1262,10 +1107,11 @@
]
},
{
- "name": "fd_posix_test",
+ "name": "hpack_parser_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/iomgr/fd_posix_test.c"
+ "test/core/transport/chttp2/hpack_parser_test.c"
],
"deps": [
"grpc_test_util",
@@ -1275,10 +1121,53 @@
]
},
{
- "name": "fling_stream_test",
+ "name": "hpack_table_test",
"build": "test",
+ "language": "c",
"src": [
- "test/core/fling/fling_stream_test.c"
+ "test/core/transport/chttp2/hpack_table_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "httpcli_format_request_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/httpcli/format_request_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "httpcli_parser_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/httpcli/parser_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "httpcli_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/httpcli/httpcli_test.c"
],
"deps": [
"grpc_test_util",
@@ -1290,6 +1179,7 @@
{
"name": "lame_client_test",
"build": "test",
+ "language": "c",
"src": [
"test/core/surface/lame_client_test.c"
],
@@ -1301,95 +1191,274 @@
]
},
{
- "name": "thread_pool_test",
- "build": "test",
- "c++": true,
+ "name": "low_level_ping_pong_benchmark",
+ "build": "benchmark",
+ "language": "c",
"src": [
- "test/cpp/server/thread_pool_test.cc"
+ "test/core/network_benchmarks/low_level_ping_pong.c"
],
"deps": [
"grpc_test_util",
- "grpc++",
"grpc",
"gpr_test_util",
"gpr"
]
},
{
- "name": "status_test",
+ "name": "message_compress_test",
"build": "test",
- "c++": true,
+ "language": "c",
"src": [
- "test/cpp/util/status_test.cc"
+ "test/core/compression/message_compress_test.c"
],
"deps": [
"grpc_test_util",
- "grpc++",
"grpc",
"gpr_test_util",
"gpr"
]
},
{
- "name": "sync_client_async_server_test",
+ "name": "metadata_buffer_test",
"build": "test",
- "c++": true,
+ "language": "c",
"src": [
- "test/cpp/end2end/sync_client_async_server_test.cc"
+ "test/core/channel/metadata_buffer_test.c"
],
"deps": [
- "grpc++_test_util",
"grpc_test_util",
- "grpc++",
"grpc",
"gpr_test_util",
"gpr"
]
},
{
- "name": "qps_client",
+ "name": "murmur_hash_test",
"build": "test",
- "c++": true,
+ "language": "c",
"src": [
- "test/cpp/qps/qpstest.proto",
- "test/cpp/qps/client.cc"
+ "test/core/support/murmur_hash_test.c"
],
"deps": [
- "grpc++_test_util",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "no_server_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/end2end/no_server_test.c"
+ ],
+ "deps": [
"grpc_test_util",
- "grpc++",
"grpc",
"gpr_test_util",
"gpr"
]
},
{
- "name": "qps_server",
+ "name": "poll_kick_test",
"build": "test",
- "c++": true,
+ "language": "c",
"src": [
- "test/cpp/qps/qpstest.proto",
- "test/cpp/qps/server.cc"
+ "test/core/iomgr/poll_kick_test.c"
],
"deps": [
- "grpc++_test_util",
"grpc_test_util",
- "grpc++",
"grpc",
"gpr_test_util",
"gpr"
]
},
{
- "name": "interop_server",
+ "name": "resolve_address_test",
"build": "test",
- "run": false,
- "c++": true,
+ "language": "c",
"src": [
- "test/cpp/interop/empty.proto",
- "test/cpp/interop/messages.proto",
- "test/cpp/interop/test.proto",
- "test/cpp/interop/server.cc"
+ "test/core/iomgr/resolve_address_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "secure_endpoint_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/security/secure_endpoint_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "sockaddr_utils_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/iomgr/sockaddr_utils_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "tcp_client_posix_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/iomgr/tcp_client_posix_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "tcp_posix_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/iomgr/tcp_posix_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "tcp_server_posix_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/iomgr/tcp_server_posix_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "time_averaged_stats_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/iomgr/time_averaged_stats_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "time_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/support/time_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "timeout_encoding_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/transport/chttp2/timeout_encoding_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "transport_metadata_test",
+ "build": "test",
+ "language": "c",
+ "src": [
+ "test/core/transport/metadata_test.c"
+ ],
+ "deps": [
+ "grpc_test_util",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ]
+ },
+ {
+ "name": "channel_arguments_test",
+ "build": "test",
+ "language": "c++",
+ "src": [
+ "test/cpp/client/channel_arguments_test.cc"
+ ],
+ "deps": [
+ "grpc++",
+ "grpc",
+ "gpr"
+ ]
+ },
+ {
+ "name": "cpp_plugin",
+ "build": "protoc",
+ "language": "c++",
+ "headers": [
+ "src/compiler/cpp_generator.h",
+ "src/compiler/cpp_generator_helpers.h"
+ ],
+ "src": [
+ "src/compiler/cpp_generator.cc",
+ "src/compiler/cpp_plugin.cc"
+ ],
+ "deps": [],
+ "secure": false
+ },
+ {
+ "name": "credentials_test",
+ "build": "test",
+ "language": "c++",
+ "src": [
+ "test/cpp/client/credentials_test.cc"
+ ],
+ "deps": [
+ "grpc++",
+ "grpc",
+ "gpr"
+ ]
+ },
+ {
+ "name": "end2end_test",
+ "build": "test",
+ "language": "c++",
+ "src": [
+ "test/cpp/end2end/end2end_test.cc"
],
"deps": [
"grpc++_test_util",
@@ -1403,8 +1472,7 @@
{
"name": "interop_client",
"build": "test",
- "run": false,
- "c++": true,
+ "language": "c++",
"src": [
"test/cpp/interop/empty.proto",
"test/cpp/interop/messages.proto",
@@ -1418,13 +1486,34 @@
"grpc",
"gpr_test_util",
"gpr"
- ]
+ ],
+ "run": false
+ },
+ {
+ "name": "interop_server",
+ "build": "test",
+ "language": "c++",
+ "src": [
+ "test/cpp/interop/empty.proto",
+ "test/cpp/interop/messages.proto",
+ "test/cpp/interop/test.proto",
+ "test/cpp/interop/server.cc"
+ ],
+ "deps": [
+ "grpc++_test_util",
+ "grpc_test_util",
+ "grpc++",
+ "grpc",
+ "gpr_test_util",
+ "gpr"
+ ],
+ "run": false
},
{
"name": "tips_client",
"build": "test",
"run": false,
- "c++": true,
+ "language": "c++",
"src": [
"examples/tips/client_main.cc"
],
@@ -1441,7 +1530,7 @@
{
"name": "tips_client_test",
"build": "test",
- "c++": true,
+ "language": "c++",
"src": [
"examples/tips/client_test.cc"
],
@@ -1456,11 +1545,12 @@
]
},
{
- "name": "end2end_test",
+ "name": "qps_client",
"build": "test",
- "c++": true,
+ "language": "c++",
"src": [
- "test/cpp/end2end/end2end_test.cc"
+ "test/cpp/qps/qpstest.proto",
+ "test/cpp/qps/client.cc"
],
"deps": [
"grpc++_test_util",
@@ -1472,78 +1562,80 @@
]
},
{
- "name": "channel_arguments_test",
+ "name": "qps_server",
"build": "test",
- "c++": true,
+ "language": "c++",
"src": [
- "test/cpp/client/channel_arguments_test.cc"
+ "test/cpp/qps/qpstest.proto",
+ "test/cpp/qps/server.cc"
],
"deps": [
+ "grpc++_test_util",
+ "grpc_test_util",
"grpc++",
"grpc",
+ "gpr_test_util",
"gpr"
]
},
{
- "name": "credentials_test",
- "build": "test",
- "c++": true,
+ "name": "ruby_plugin",
+ "build": "protoc",
+ "language": "c++",
+ "headers": [
+ "src/compiler/cpp_generator.h",
+ "src/compiler/cpp_generator_helpers-inl.h",
+ "src/compiler/cpp_generator_map-inl.h",
+ "src/compiler/cpp_generator_string-inl.h"
+ ],
"src": [
- "test/cpp/client/credentials_test.cc"
+ "src/compiler/ruby_generator.cc",
+ "src/compiler/ruby_plugin.cc"
+ ],
+ "deps": [],
+ "secure": false
+ },
+ {
+ "name": "status_test",
+ "build": "test",
+ "language": "c++",
+ "src": [
+ "test/cpp/util/status_test.cc"
],
"deps": [
+ "grpc_test_util",
"grpc++",
"grpc",
+ "gpr_test_util",
"gpr"
]
},
{
- "name": "alarm_test",
+ "name": "sync_client_async_server_test",
"build": "test",
+ "language": "c++",
"src": [
- "test/core/iomgr/alarm_test.c"
+ "test/cpp/end2end/sync_client_async_server_test.cc"
],
"deps": [
+ "grpc++_test_util",
"grpc_test_util",
+ "grpc++",
"grpc",
"gpr_test_util",
"gpr"
]
},
{
- "name": "alarm_list_test",
+ "name": "thread_pool_test",
"build": "test",
+ "language": "c++",
"src": [
- "test/core/iomgr/alarm_list_test.c"
+ "test/cpp/server/thread_pool_test.cc"
],
"deps": [
"grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "alarm_heap_test",
- "build": "test",
- "src": [
- "test/core/iomgr/alarm_heap_test.c"
- ],
- "deps": [
- "grpc_test_util",
- "grpc",
- "gpr_test_util",
- "gpr"
- ]
- },
- {
- "name": "time_test",
- "build": "test",
- "src": [
- "test/core/support/time_test.c"
- ],
- "deps": [
- "grpc_test_util",
+ "grpc++",
"grpc",
"gpr_test_util",
"gpr"
diff --git a/include/grpc++/server_credentials.h b/include/grpc++/server_credentials.h
index cf08870..91504ae 100644
--- a/include/grpc++/server_credentials.h
+++ b/include/grpc++/server_credentials.h
@@ -35,6 +35,7 @@
#define __GRPCPP_SERVER_CREDENTIALS_H_
#include <memory>
+#include <vector>
#include <grpc++/config.h>
@@ -60,9 +61,12 @@
// Options to create ServerCredentials with SSL
struct SslServerCredentialsOptions {
+ struct PemKeyCertPair{
+ grpc::string private_key;
+ grpc::string cert_chain;
+ };
grpc::string pem_root_certs;
- grpc::string pem_private_key;
- grpc::string pem_cert_chain;
+ std::vector<PemKeyCertPair> pem_key_cert_pairs;
};
// Factory for building different types of ServerCredentials
diff --git a/include/grpc/grpc.h b/include/grpc/grpc.h
index 3c5b0de..f03f61d 100644
--- a/include/grpc/grpc.h
+++ b/include/grpc/grpc.h
@@ -428,7 +428,8 @@
REQUIRES: server not started */
int grpc_server_add_http2_port(grpc_server *server, const char *addr);
-/* Add a secure port to server; returns 1 on success, 0 on failure
+/* Add a secure port to server.
+ Returns bound port number on success, 0 on failure.
REQUIRES: server not started */
int grpc_server_add_secure_http2_port(grpc_server *server, const char *addr);
diff --git a/include/grpc/grpc_security.h b/include/grpc/grpc_security.h
index 644b31f..0732a8f 100644
--- a/include/grpc/grpc_security.h
+++ b/include/grpc/grpc_security.h
@@ -54,22 +54,26 @@
/* Creates default credentials. */
grpc_credentials *grpc_default_credentials_create(void);
+/* Object that holds a private key / certificate chain pair in PEM format. */
+typedef struct {
+ /* private_key is the NULL-terminated string containing the PEM encoding of
+ the client's private key. */
+ const char *private_key;
+
+ /* cert_chain is the NULL-terminated string containing the PEM encoding of
+ the client's certificate chain. */
+ const char *cert_chain;
+} grpc_ssl_pem_key_cert_pair;
+
/* Creates an SSL credentials object.
- - pem_roots_cert is the buffer containing the PEM encoding of the server
- root certificates. This parameter cannot be NULL.
- - pem_roots_cert_size is the size of the associated buffer.
- - pem_private_key is the buffer containing the PEM encoding of the client's
- private key. This parameter can be NULL if the client does not have a
- private key.
- - pem_private_key_size is the size of the associated buffer.
- - pem_cert_chain is the buffer containing the PEM encoding of the client's
- certificate chain. This parameter can be NULL if the client does not have
- a certificate chain.
- - pem_cert_chain_size is the size of the associated buffer. */
+ - pem_roots_cert is the NULL-terminated string containing the PEM encoding
+ of the server root certificates. If this parameter is NULL, the default
+ roots will be used.
+ - pem_key_cert_pair is a pointer on the object containing client's private
+ key and certificate chain. This parameter can be NULL if the client does
+ not have such a key/cert pair. */
grpc_credentials *grpc_ssl_credentials_create(
- const unsigned char *pem_root_certs, size_t pem_root_certs_size,
- const unsigned char *pem_private_key, size_t pem_private_key_size,
- const unsigned char *pem_cert_chain, size_t pem_cert_chain_size);
+ const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair);
/* Creates a composite credentials object. */
grpc_credentials *grpc_composite_credentials_create(grpc_credentials *creds1,
@@ -130,22 +134,16 @@
void grpc_server_credentials_release(grpc_server_credentials *creds);
/* Creates an SSL server_credentials object.
- TODO(jboeuf): Change the constructor so that it can support multiple
- key/cert pairs.
- - pem_roots_cert is the buffer containing the PEM encoding of the server
- root certificates. This parameter may be NULL if the server does not want
- the client to be authenticated with SSL.
- - pem_roots_cert_size is the size of the associated buffer.
- - pem_private_key is the buffer containing the PEM encoding of the client's
- private key. This parameter cannot be NULL.
- - pem_private_key_size is the size of the associated buffer.
- - pem_cert_chain is the buffer containing the PEM encoding of the client's
- certificate chain. This parameter cannot be NULL.
- - pem_cert_chain_size is the size of the associated buffer. */
+ - pem_roots_cert is the NULL-terminated string containing the PEM encoding of
+ the client root certificates. This parameter may be NULL if the server does
+ not want the client to be authenticated with SSL.
+ - pem_key_cert_pairs is an array private key / certificate chains of the
+ server. This parameter cannot be NULL.
+ - num_key_cert_pairs indicates the number of items in the private_key_files
+ and cert_chain_files parameters. It should be at least 1. */
grpc_server_credentials *grpc_ssl_server_credentials_create(
- const unsigned char *pem_root_certs, size_t pem_root_certs_size,
- const unsigned char *pem_private_key, size_t pem_private_key_size,
- const unsigned char *pem_cert_chain, size_t pem_cert_chain_size);
+ const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs,
+ size_t num_key_cert_pairs);
/* Creates a fake server transport security credentials object for testing. */
grpc_server_credentials *grpc_fake_transport_security_server_credentials_create(
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index 29bd356..8724f97 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -45,23 +45,23 @@
namespace grpc_cpp_generator {
namespace {
-bool NoStreaming(const google::protobuf::MethodDescriptor* method) {
+bool NoStreaming(const google::protobuf::MethodDescriptor *method) {
return !method->client_streaming() && !method->server_streaming();
}
-bool ClientOnlyStreaming(const google::protobuf::MethodDescriptor* method) {
+bool ClientOnlyStreaming(const google::protobuf::MethodDescriptor *method) {
return method->client_streaming() && !method->server_streaming();
}
-bool ServerOnlyStreaming(const google::protobuf::MethodDescriptor* method) {
+bool ServerOnlyStreaming(const google::protobuf::MethodDescriptor *method) {
return !method->client_streaming() && method->server_streaming();
}
-bool BidiStreaming(const google::protobuf::MethodDescriptor* method) {
+bool BidiStreaming(const google::protobuf::MethodDescriptor *method) {
return method->client_streaming() && method->server_streaming();
}
-bool HasClientOnlyStreaming(const google::protobuf::FileDescriptor* file) {
+bool HasClientOnlyStreaming(const google::protobuf::FileDescriptor *file) {
for (int i = 0; i < file->service_count(); i++) {
for (int j = 0; j < file->service(i)->method_count(); j++) {
if (ClientOnlyStreaming(file->service(i)->method(j))) {
@@ -72,7 +72,7 @@
return false;
}
-bool HasServerOnlyStreaming(const google::protobuf::FileDescriptor* file) {
+bool HasServerOnlyStreaming(const google::protobuf::FileDescriptor *file) {
for (int i = 0; i < file->service_count(); i++) {
for (int j = 0; j < file->service(i)->method_count(); j++) {
if (ServerOnlyStreaming(file->service(i)->method(j))) {
@@ -83,7 +83,7 @@
return false;
}
-bool HasBidiStreaming(const google::protobuf::FileDescriptor* file) {
+bool HasBidiStreaming(const google::protobuf::FileDescriptor *file) {
for (int i = 0; i < file->service_count(); i++) {
for (int j = 0; j < file->service(i)->method_count(); j++) {
if (BidiStreaming(file->service(i)->method(j))) {
@@ -95,7 +95,7 @@
}
} // namespace
-std::string GetHeaderIncludes(const google::protobuf::FileDescriptor* file) {
+std::string GetHeaderIncludes(const google::protobuf::FileDescriptor *file) {
std::string temp =
"#include \"grpc++/impl/internal_stub.h\"\n"
"#include \"grpc++/status.h\"\n"
@@ -131,9 +131,9 @@
"#include \"grpc++/stream.h\"\n";
}
-void PrintHeaderClientMethod(google::protobuf::io::Printer* printer,
- const google::protobuf::MethodDescriptor* method,
- std::map<std::string, std::string>* vars) {
+void PrintHeaderClientMethod(google::protobuf::io::Printer *printer,
+ const google::protobuf::MethodDescriptor *method,
+ std::map<std::string, std::string> *vars) {
(*vars)["Method"] = method->name();
(*vars)["Request"] =
grpc_cpp_generator::ClassName(method->input_type(), true);
@@ -160,9 +160,9 @@
}
}
-void PrintHeaderServerMethod(google::protobuf::io::Printer* printer,
- const google::protobuf::MethodDescriptor* method,
- std::map<std::string, std::string>* vars) {
+void PrintHeaderServerMethod(google::protobuf::io::Printer *printer,
+ const google::protobuf::MethodDescriptor *method,
+ std::map<std::string, std::string> *vars) {
(*vars)["Method"] = method->name();
(*vars)["Request"] =
grpc_cpp_generator::ClassName(method->input_type(), true);
@@ -194,9 +194,9 @@
}
}
-void PrintHeaderService(google::protobuf::io::Printer* printer,
- const google::protobuf::ServiceDescriptor* service,
- std::map<std::string, std::string>* vars) {
+void PrintHeaderService(google::protobuf::io::Printer *printer,
+ const google::protobuf::ServiceDescriptor *service,
+ std::map<std::string, std::string> *vars) {
(*vars)["Service"] = service->name();
printer->Print(*vars,
@@ -241,7 +241,7 @@
printer->Print("};\n");
}
-std::string GetHeaderServices(const google::protobuf::FileDescriptor* file) {
+std::string GetHeaderServices(const google::protobuf::FileDescriptor *file) {
std::string output;
google::protobuf::io::StringOutputStream output_stream(&output);
google::protobuf::io::Printer printer(&output_stream, '$');
@@ -254,9 +254,9 @@
return output;
}
-void PrintSourceClientMethod(google::protobuf::io::Printer* printer,
- const google::protobuf::MethodDescriptor* method,
- std::map<std::string, std::string>* vars) {
+void PrintSourceClientMethod(google::protobuf::io::Printer *printer,
+ const google::protobuf::MethodDescriptor *method,
+ std::map<std::string, std::string> *vars) {
(*vars)["Method"] = method->name();
(*vars)["Request"] =
grpc_cpp_generator::ClassName(method->input_type(), true);
@@ -312,9 +312,9 @@
}
}
-void PrintSourceServerMethod(google::protobuf::io::Printer* printer,
- const google::protobuf::MethodDescriptor* method,
- std::map<std::string, std::string>* vars) {
+void PrintSourceServerMethod(google::protobuf::io::Printer *printer,
+ const google::protobuf::MethodDescriptor *method,
+ std::map<std::string, std::string> *vars) {
(*vars)["Method"] = method->name();
(*vars)["Request"] =
grpc_cpp_generator::ClassName(method->input_type(), true);
@@ -362,9 +362,9 @@
}
}
-void PrintSourceService(google::protobuf::io::Printer* printer,
- const google::protobuf::ServiceDescriptor* service,
- std::map<std::string, std::string>* vars) {
+void PrintSourceService(google::protobuf::io::Printer *printer,
+ const google::protobuf::ServiceDescriptor *service,
+ std::map<std::string, std::string> *vars) {
(*vars)["Service"] = service->name();
printer->Print(
*vars,
@@ -394,7 +394,7 @@
"}\n");
printer->Print("service_ = new ::grpc::RpcService();\n");
for (int i = 0; i < service->method_count(); ++i) {
- const google::protobuf::MethodDescriptor* method = service->method(i);
+ const google::protobuf::MethodDescriptor *method = service->method(i);
(*vars)["Method"] = method->name();
(*vars)["Request"] =
grpc_cpp_generator::ClassName(method->input_type(), true);
@@ -458,7 +458,7 @@
printer->Print("}\n\n");
}
-std::string GetSourceServices(const google::protobuf::FileDescriptor* file) {
+std::string GetSourceServices(const google::protobuf::FileDescriptor *file) {
std::string output;
google::protobuf::io::StringOutputStream output_stream(&output);
google::protobuf::io::Printer printer(&output_stream, '$');
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index 1a74211..fe84d08 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -45,16 +45,16 @@
namespace grpc_cpp_generator {
// Return the includes needed for generated header file.
-std::string GetHeaderIncludes(const google::protobuf::FileDescriptor* file);
+std::string GetHeaderIncludes(const google::protobuf::FileDescriptor *file);
// Return the includes needed for generated source file.
std::string GetSourceIncludes();
// Return the services for generated header file.
-std::string GetHeaderServices(const google::protobuf::FileDescriptor* file);
+std::string GetHeaderServices(const google::protobuf::FileDescriptor *file);
// Return the services for generated source file.
-std::string GetSourceServices(const google::protobuf::FileDescriptor* file);
+std::string GetSourceServices(const google::protobuf::FileDescriptor *file);
} // namespace grpc_cpp_generator
diff --git a/src/compiler/cpp_generator_helpers.h b/src/compiler/cpp_generator_helpers.h
index 1ad3cb2..54c3438 100644
--- a/src/compiler/cpp_generator_helpers.h
+++ b/src/compiler/cpp_generator_helpers.h
@@ -41,7 +41,7 @@
namespace grpc_cpp_generator {
-inline bool StripSuffix(std::string* filename, const std::string& suffix) {
+inline bool StripSuffix(std::string *filename, const std::string &suffix) {
if (filename->length() >= suffix.length()) {
size_t suffix_pos = filename->length() - suffix.length();
if (filename->compare(suffix_pos, std::string::npos, suffix) == 0) {
@@ -60,8 +60,8 @@
return filename;
}
-inline std::string StringReplace(std::string str, const std::string& from,
- const std::string& to) {
+inline std::string StringReplace(std::string str, const std::string &from,
+ const std::string &to) {
size_t pos = 0;
for (;;) {
@@ -76,22 +76,22 @@
return str;
}
-inline std::string DotsToColons(const std::string& name) {
+inline std::string DotsToColons(const std::string &name) {
return StringReplace(name, ".", "::");
}
-inline std::string DotsToUnderscores(const std::string& name) {
+inline std::string DotsToUnderscores(const std::string &name) {
return StringReplace(name, ".", "_");
}
-inline std::string ClassName(const google::protobuf::Descriptor* descriptor,
+inline std::string ClassName(const google::protobuf::Descriptor *descriptor,
bool qualified) {
// Find "outer", the descriptor of the top-level message in which
// "descriptor" is embedded.
- const google::protobuf::Descriptor* outer = descriptor;
+ const google::protobuf::Descriptor *outer = descriptor;
while (outer->containing_type() != NULL) outer = outer->containing_type();
- const std::string& outer_name = outer->full_name();
+ const std::string &outer_name = outer->full_name();
std::string inner_name = descriptor->full_name().substr(outer_name.size());
if (qualified) {
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index e432785..a7fdb1f 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -51,10 +51,10 @@
CppGrpcGenerator() {}
virtual ~CppGrpcGenerator() {}
- virtual bool Generate(const google::protobuf::FileDescriptor* file,
- const std::string& parameter,
- google::protobuf::compiler::GeneratorContext* context,
- std::string* error) const {
+ virtual bool Generate(const google::protobuf::FileDescriptor *file,
+ const std::string ¶meter,
+ google::protobuf::compiler::GeneratorContext *context,
+ std::string *error) const {
if (file->options().cc_generic_services()) {
*error =
"cpp grpc proto compiler plugin does not work with generic "
@@ -81,9 +81,9 @@
private:
// Insert the given code into the given file at the given insertion point.
- void Insert(google::protobuf::compiler::GeneratorContext* context,
- const std::string& filename, const std::string& insertion_point,
- const std::string& code) const {
+ void Insert(google::protobuf::compiler::GeneratorContext *context,
+ const std::string &filename, const std::string &insertion_point,
+ const std::string &code) const {
std::unique_ptr<google::protobuf::io::ZeroCopyOutputStream> output(
context->OpenForInsert(filename, insertion_point));
google::protobuf::io::CodedOutputStream coded_out(output.get());
@@ -91,7 +91,7 @@
}
};
-int main(int argc, char* argv[]) {
+int main(int argc, char *argv[]) {
CppGrpcGenerator generator;
return google::protobuf::compiler::PluginMain(argc, argv, &generator);
}
diff --git a/src/compiler/ruby_generator.cc b/src/compiler/ruby_generator.cc
index 393f8f3..1663232 100644
--- a/src/compiler/ruby_generator.cc
+++ b/src/compiler/ruby_generator.cc
@@ -57,8 +57,8 @@
namespace {
// Prints out the method using the ruby gRPC DSL.
-void PrintMethod(const MethodDescriptor* method, const std::string& package,
- Printer* out) {
+void PrintMethod(const MethodDescriptor *method, const std::string &package,
+ Printer *out) {
std::string input_type = RubyTypeOf(method->input_type()->name(), package);
if (method->client_streaming()) {
input_type = "stream(" + input_type + ")";
@@ -75,8 +75,8 @@
}
// Prints out the service using the ruby gRPC DSL.
-void PrintService(const ServiceDescriptor* service, const std::string& package,
- Printer* out) {
+void PrintService(const ServiceDescriptor *service, const std::string &package,
+ Printer *out) {
if (service->method_count() == 0) {
return;
}
@@ -125,7 +125,7 @@
} // namespace
-std::string GetServices(const FileDescriptor* file) {
+std::string GetServices(const FileDescriptor *file) {
std::string output;
StringOutputStream output_stream(&output);
Printer out(&output_stream, '$');
diff --git a/src/compiler/ruby_generator.h b/src/compiler/ruby_generator.h
index 0306536..89d7a0b 100644
--- a/src/compiler/ruby_generator.h
+++ b/src/compiler/ruby_generator.h
@@ -44,7 +44,7 @@
namespace grpc_ruby_generator {
-std::string GetServices(const google::protobuf::FileDescriptor* file);
+std::string GetServices(const google::protobuf::FileDescriptor *file);
} // namespace grpc_ruby_generator
diff --git a/src/compiler/ruby_generator_helpers-inl.h b/src/compiler/ruby_generator_helpers-inl.h
index 7b973ed..0034f5e 100644
--- a/src/compiler/ruby_generator_helpers-inl.h
+++ b/src/compiler/ruby_generator_helpers-inl.h
@@ -41,8 +41,8 @@
namespace grpc_ruby_generator {
-inline bool ServicesFilename(const google::protobuf::FileDescriptor* file,
- std::string* file_name_or_error) {
+inline bool ServicesFilename(const google::protobuf::FileDescriptor *file,
+ std::string *file_name_or_error) {
// Get output file name.
static const unsigned proto_suffix_length = 6; // length of ".proto"
if (file->name().size() > proto_suffix_length &&
@@ -58,7 +58,7 @@
}
inline std::string MessagesRequireName(
- const google::protobuf::FileDescriptor* file) {
+ const google::protobuf::FileDescriptor *file) {
return Replace(file->name(), ".proto", "");
}
diff --git a/src/compiler/ruby_generator_map-inl.h b/src/compiler/ruby_generator_map-inl.h
index a49650a..fea9c2e 100644
--- a/src/compiler/ruby_generator_map-inl.h
+++ b/src/compiler/ruby_generator_map-inl.h
@@ -49,7 +49,7 @@
// Converts an initializer list of the form { key0, value0, key1, value1, ... }
// into a map of key* to value*. Is merely a readability helper for later code.
inline std::map<std::string, std::string> ListToDict(
- const initializer_list<std::string>& values) {
+ const initializer_list<std::string> &values) {
if (values.size() % 2 != 0) {
// MOE: insert std::cerr << "Not every 'key' has a value in `values`."
// << std::endl;
diff --git a/src/compiler/ruby_generator_string-inl.h b/src/compiler/ruby_generator_string-inl.h
index a253f78..d24a61b 100644
--- a/src/compiler/ruby_generator_string-inl.h
+++ b/src/compiler/ruby_generator_string-inl.h
@@ -45,8 +45,8 @@
namespace grpc_ruby_generator {
// Split splits a string using char into elems.
-inline std::vector<std::string>& Split(const std::string& s, char delim,
- std::vector<std::string>* elems) {
+inline std::vector<std::string> &Split(const std::string &s, char delim,
+ std::vector<std::string> *elems) {
std::stringstream ss(s);
std::string item;
while (getline(ss, item, delim)) {
@@ -56,15 +56,15 @@
}
// Split splits a string using char, returning the result in a vector.
-inline std::vector<std::string> Split(const std::string& s, char delim) {
+inline std::vector<std::string> Split(const std::string &s, char delim) {
std::vector<std::string> elems;
Split(s, delim, &elems);
return elems;
}
// Replace replaces from with to in s.
-inline std::string Replace(std::string s, const std::string& from,
- const std::string& to) {
+inline std::string Replace(std::string s, const std::string &from,
+ const std::string &to) {
size_t start_pos = s.find(from);
if (start_pos == std::string::npos) {
return s;
@@ -74,8 +74,8 @@
}
// ReplaceAll replaces all instances of search with replace in s.
-inline std::string ReplaceAll(std::string s, const std::string& search,
- const std::string& replace) {
+inline std::string ReplaceAll(std::string s, const std::string &search,
+ const std::string &replace) {
size_t pos = 0;
while ((pos = s.find(search, pos)) != std::string::npos) {
s.replace(pos, search.length(), replace);
@@ -85,8 +85,8 @@
}
// ReplacePrefix replaces from with to in s if search is a prefix of s.
-inline bool ReplacePrefix(std::string* s, const std::string& from,
- const std::string& to) {
+inline bool ReplacePrefix(std::string *s, const std::string &from,
+ const std::string &to) {
size_t start_pos = s->find(from);
if (start_pos == std::string::npos || start_pos != 0) {
return false;
@@ -105,8 +105,8 @@
}
// RubyTypeOf updates a proto type to the required ruby equivalent.
-inline std::string RubyTypeOf(const std::string& a_type,
- const std::string& package) {
+inline std::string RubyTypeOf(const std::string &a_type,
+ const std::string &package) {
std::string res(a_type);
ReplacePrefix(&res, package, ""); // remove the leading package if present
ReplacePrefix(&res, ".", ""); // remove the leading . (no package)
diff --git a/src/compiler/ruby_plugin.cc b/src/compiler/ruby_plugin.cc
index 86c0e11..9397452 100644
--- a/src/compiler/ruby_plugin.cc
+++ b/src/compiler/ruby_plugin.cc
@@ -52,10 +52,10 @@
RubyGrpcGenerator() {}
~RubyGrpcGenerator() override {}
- bool Generate(const google::protobuf::FileDescriptor* file,
- const std::string& parameter,
- google::protobuf::compiler::GeneratorContext* context,
- std::string* error) const override {
+ bool Generate(const google::protobuf::FileDescriptor *file,
+ const std::string ¶meter,
+ google::protobuf::compiler::GeneratorContext *context,
+ std::string *error) const override {
std::string code = grpc_ruby_generator::GetServices(file);
if (code.size() == 0) {
return true; // don't generate a file if there are no services
@@ -74,7 +74,7 @@
}
};
-int main(int argc, char* argv[]) {
+int main(int argc, char *argv[]) {
RubyGrpcGenerator generator;
return google::protobuf::compiler::PluginMain(argc, argv, &generator);
}
diff --git a/src/core/channel/census_filter.c b/src/core/channel/census_filter.c
index 2799bde..ed60f0a 100644
--- a/src/core/channel/census_filter.c
+++ b/src/core/channel/census_filter.c
@@ -178,19 +178,19 @@
}
const grpc_channel_filter grpc_client_census_filter = {
- client_call_op, channel_op,
+ client_call_op, channel_op,
- sizeof(call_data), client_init_call_elem, client_destroy_call_elem,
+ sizeof(call_data), client_init_call_elem, client_destroy_call_elem,
- sizeof(channel_data), init_channel_elem, destroy_channel_elem,
+ sizeof(channel_data), init_channel_elem, destroy_channel_elem,
"census-client"};
const grpc_channel_filter grpc_server_census_filter = {
- server_call_op, channel_op,
+ server_call_op, channel_op,
- sizeof(call_data), server_init_call_elem, server_destroy_call_elem,
+ sizeof(call_data), server_init_call_elem, server_destroy_call_elem,
- sizeof(channel_data), init_channel_elem, destroy_channel_elem,
+ sizeof(channel_data), init_channel_elem, destroy_channel_elem,
"census-server"};
diff --git a/src/core/channel/channel_stack.c b/src/core/channel/channel_stack.c
index 14fc800..5ee412b 100644
--- a/src/core/channel/channel_stack.c
+++ b/src/core/channel/channel_stack.c
@@ -54,7 +54,7 @@
/* Given a size, round up to the next multiple of sizeof(void*) */
#define ROUND_UP_TO_ALIGNMENT_SIZE(x) \
- (((x) + GPR_MAX_ALIGNMENT - 1) & ~(GPR_MAX_ALIGNMENT - 1))
+ (((x)+GPR_MAX_ALIGNMENT - 1) & ~(GPR_MAX_ALIGNMENT - 1))
size_t grpc_channel_stack_size(const grpc_channel_filter **filters,
size_t filter_count) {
@@ -190,13 +190,14 @@
grpc_channel_stack *grpc_channel_stack_from_top_element(
grpc_channel_element *elem) {
- return (grpc_channel_stack *)((char *)(elem)-ROUND_UP_TO_ALIGNMENT_SIZE(
- sizeof(grpc_channel_stack)));
+ return (grpc_channel_stack *)((char *)(elem) -
+ ROUND_UP_TO_ALIGNMENT_SIZE(
+ sizeof(grpc_channel_stack)));
}
grpc_call_stack *grpc_call_stack_from_top_element(grpc_call_element *elem) {
- return (grpc_call_stack *)((char *)(elem)-ROUND_UP_TO_ALIGNMENT_SIZE(
- sizeof(grpc_call_stack)));
+ return (grpc_call_stack *)((char *)(elem) - ROUND_UP_TO_ALIGNMENT_SIZE(
+ sizeof(grpc_call_stack)));
}
static void do_nothing(void *user_data, grpc_op_error error) {}
diff --git a/src/core/channel/child_channel.c b/src/core/channel/child_channel.c
index 3778f4f..f400e9b 100644
--- a/src/core/channel/child_channel.c
+++ b/src/core/channel/child_channel.c
@@ -165,9 +165,9 @@
}
const grpc_channel_filter grpc_child_channel_top_filter = {
- lb_call_op, lb_channel_op,
+ lb_call_op, lb_channel_op,
- sizeof(lb_call_data), lb_init_call_elem, lb_destroy_call_elem,
+ sizeof(lb_call_data), lb_init_call_elem, lb_destroy_call_elem,
sizeof(lb_channel_data), lb_init_channel_elem, lb_destroy_channel_elem,
diff --git a/src/core/channel/child_channel.h b/src/core/channel/child_channel.h
index 3ba4c1b..ece0ff9 100644
--- a/src/core/channel/child_channel.h
+++ b/src/core/channel/child_channel.h
@@ -39,7 +39,7 @@
/* helper for filters that need to host child channel stacks... handles
lifetime and upwards propagation cleanly */
-const grpc_channel_filter grpc_child_channel_top_filter;
+extern const grpc_channel_filter grpc_child_channel_top_filter;
typedef grpc_channel_stack grpc_child_channel;
typedef grpc_call_stack grpc_child_call;
diff --git a/src/core/channel/client_channel.c b/src/core/channel/client_channel.c
index 4628383..fa75561 100644
--- a/src/core/channel/client_channel.c
+++ b/src/core/channel/client_channel.c
@@ -450,9 +450,9 @@
}
const grpc_channel_filter grpc_client_channel_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/channel/connected_channel.c b/src/core/channel/connected_channel.c
index 30de109..e01cb81 100644
--- a/src/core/channel/connected_channel.c
+++ b/src/core/channel/connected_channel.c
@@ -69,7 +69,7 @@
/* We perform a small hack to locate transport data alongside the connected
channel data in call allocations, to allow everything to be pulled in minimal
cache line requests */
-#define TRANSPORT_STREAM_FROM_CALL_DATA(calld) ((grpc_stream *)((calld) + 1))
+#define TRANSPORT_STREAM_FROM_CALL_DATA(calld) ((grpc_stream *)((calld)+1))
#define CALL_DATA_FROM_TRANSPORT_STREAM(transport_stream) \
(((call_data *)(transport_stream)) - 1)
@@ -257,9 +257,9 @@
}
const grpc_channel_filter grpc_connected_channel_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/channel/http_client_filter.c b/src/core/channel/http_client_filter.c
index ab9d3af..b139b72 100644
--- a/src/core/channel/http_client_filter.c
+++ b/src/core/channel/http_client_filter.c
@@ -178,9 +178,9 @@
}
const grpc_channel_filter grpc_http_client_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/channel/http_filter.c b/src/core/channel/http_filter.c
index 6cfe346..846f7b9 100644
--- a/src/core/channel/http_filter.c
+++ b/src/core/channel/http_filter.c
@@ -132,9 +132,9 @@
}
const grpc_channel_filter grpc_http_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/channel/http_server_filter.c b/src/core/channel/http_server_filter.c
index 44eab43..19b9606 100644
--- a/src/core/channel/http_server_filter.c
+++ b/src/core/channel/http_server_filter.c
@@ -244,9 +244,9 @@
}
const grpc_channel_filter grpc_http_server_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/channel/metadata_buffer.c b/src/core/channel/metadata_buffer.c
index d4de4ba..75fd90b 100644
--- a/src/core/channel/metadata_buffer.c
+++ b/src/core/channel/metadata_buffer.c
@@ -61,7 +61,7 @@
size_t elem_cap;
};
-#define ELEMS(buffer) ((qelem *)((buffer) + 1))
+#define ELEMS(buffer) ((qelem *)((buffer)+1))
void grpc_metadata_buffer_init(grpc_metadata_buffer *buffer) {
/* start buffer as NULL, indicating no elements */
diff --git a/src/core/channel/noop_filter.c b/src/core/channel/noop_filter.c
index 6f854a2..b6b3f66 100644
--- a/src/core/channel/noop_filter.c
+++ b/src/core/channel/noop_filter.c
@@ -131,9 +131,9 @@
}
const grpc_channel_filter grpc_no_op_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/iomgr/pollset_kick.h b/src/core/iomgr/pollset_kick.h
new file mode 100644
index 0000000..f088818
--- /dev/null
+++ b/src/core/iomgr/pollset_kick.h
@@ -0,0 +1,68 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_KICK_H_
+#define __GRPC_INTERNAL_IOMGR_POLLSET_KICK_H_
+
+#include <grpc/support/port_platform.h>
+
+/* This is an abstraction around the typical pipe mechanism for waking up a
+ thread sitting in a poll() style call. */
+
+#ifdef GPR_POSIX_SOCKET
+#include "src/core/iomgr/pollset_kick_posix.h"
+#else
+#error "No pollset kick support on platform"
+#endif
+
+void grpc_pollset_kick_global_init(void);
+void grpc_pollset_kick_global_destroy(void);
+
+void grpc_pollset_kick_init(grpc_pollset_kick_state *kick_state);
+void grpc_pollset_kick_destroy(grpc_pollset_kick_state *kick_state);
+
+/* Must be called before entering poll(). If return value is -1, this consumed
+ an existing kick. Otherwise the return value is an FD to add to the poll set.
+ */
+int grpc_pollset_kick_pre_poll(grpc_pollset_kick_state *kick_state);
+
+/* Consume an existing kick. Must be called after poll returns that the fd was
+ readable, and before calling kick_post_poll. */
+void grpc_pollset_kick_consume(grpc_pollset_kick_state *kick_state);
+
+/* Must be called after pre_poll, and after consume if applicable */
+void grpc_pollset_kick_post_poll(grpc_pollset_kick_state *kick_state);
+
+void grpc_pollset_kick_kick(grpc_pollset_kick_state *kick_state);
+
+#endif /* __GRPC_INTERNAL_IOMGR_POLLSET_KICK_H_ */
diff --git a/src/core/iomgr/pollset_kick_posix.c b/src/core/iomgr/pollset_kick_posix.c
new file mode 100644
index 0000000..9f85b61
--- /dev/null
+++ b/src/core/iomgr/pollset_kick_posix.c
@@ -0,0 +1,177 @@
+/*
+ *
+ * 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/iomgr/pollset_kick_posix.h"
+
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "src/core/iomgr/socket_utils_posix.h"
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+
+/* This implementation is based on a freelist of pipes. */
+
+#define GRPC_MAX_CACHED_PIPES 50
+#define GRPC_PIPE_LOW_WATERMARK 25
+
+typedef struct grpc_kick_pipe_info {
+ int pipe_read_fd;
+ int pipe_write_fd;
+ struct grpc_kick_pipe_info *next;
+} grpc_kick_pipe_info;
+
+static grpc_kick_pipe_info *pipe_freelist = NULL;
+static int pipe_freelist_count = 0;
+static gpr_mu pipe_freelist_mu;
+
+static grpc_kick_pipe_info *allocate_pipe(void) {
+ grpc_kick_pipe_info *info;
+ gpr_mu_lock(&pipe_freelist_mu);
+ if (pipe_freelist != NULL) {
+ info = pipe_freelist;
+ pipe_freelist = pipe_freelist->next;
+ --pipe_freelist_count;
+ } else {
+ int pipefd[2];
+ /* TODO(klempner): Make this nonfatal */
+ GPR_ASSERT(0 == pipe(pipefd));
+ GPR_ASSERT(grpc_set_socket_nonblocking(pipefd[0], 1));
+ GPR_ASSERT(grpc_set_socket_nonblocking(pipefd[1], 1));
+ info = gpr_malloc(sizeof(*info));
+ info->pipe_read_fd = pipefd[0];
+ info->pipe_write_fd = pipefd[1];
+ info->next = NULL;
+ }
+ gpr_mu_unlock(&pipe_freelist_mu);
+ return info;
+}
+
+static void destroy_pipe(void) {
+ /* assumes pipe_freelist_mu is held */
+ grpc_kick_pipe_info *current = pipe_freelist;
+ pipe_freelist = pipe_freelist->next;
+ pipe_freelist_count--;
+ close(current->pipe_read_fd);
+ close(current->pipe_write_fd);
+ gpr_free(current);
+}
+
+static void free_pipe(grpc_kick_pipe_info *pipe_info) {
+ gpr_mu_lock(&pipe_freelist_mu);
+ pipe_info->next = pipe_freelist;
+ pipe_freelist = pipe_info;
+ pipe_freelist_count++;
+ if (pipe_freelist_count > GRPC_MAX_CACHED_PIPES) {
+ while (pipe_freelist_count > GRPC_PIPE_LOW_WATERMARK) {
+ destroy_pipe();
+ }
+ }
+ gpr_mu_unlock(&pipe_freelist_mu);
+}
+
+void grpc_pollset_kick_global_init() {
+ pipe_freelist = NULL;
+ gpr_mu_init(&pipe_freelist_mu);
+}
+
+void grpc_pollset_kick_global_destroy() {
+ while (pipe_freelist != NULL) {
+ destroy_pipe();
+ }
+ gpr_mu_destroy(&pipe_freelist_mu);
+}
+
+void grpc_pollset_kick_init(grpc_pollset_kick_state *kick_state) {
+ gpr_mu_init(&kick_state->mu);
+ kick_state->kicked = 0;
+ kick_state->pipe_info = NULL;
+}
+
+void grpc_pollset_kick_destroy(grpc_pollset_kick_state *kick_state) {
+ gpr_mu_destroy(&kick_state->mu);
+ GPR_ASSERT(kick_state->pipe_info == NULL);
+}
+
+int grpc_pollset_kick_pre_poll(grpc_pollset_kick_state *kick_state) {
+ gpr_mu_lock(&kick_state->mu);
+ if (kick_state->kicked) {
+ kick_state->kicked = 0;
+ gpr_mu_unlock(&kick_state->mu);
+ return -1;
+ }
+ kick_state->pipe_info = allocate_pipe();
+ gpr_mu_unlock(&kick_state->mu);
+ return kick_state->pipe_info->pipe_read_fd;
+}
+
+void grpc_pollset_kick_consume(grpc_pollset_kick_state *kick_state) {
+ char buf[128];
+ int r;
+
+ for (;;) {
+ r = read(kick_state->pipe_info->pipe_read_fd, buf, sizeof(buf));
+ if (r > 0) continue;
+ if (r == 0) return;
+ switch (errno) {
+ case EAGAIN:
+ return;
+ case EINTR:
+ continue;
+ default:
+ gpr_log(GPR_ERROR, "error reading pipe: %s", strerror(errno));
+ return;
+ }
+ }
+}
+
+void grpc_pollset_kick_post_poll(grpc_pollset_kick_state *kick_state) {
+ gpr_mu_lock(&kick_state->mu);
+ free_pipe(kick_state->pipe_info);
+ kick_state->pipe_info = NULL;
+ gpr_mu_unlock(&kick_state->mu);
+}
+
+void grpc_pollset_kick_kick(grpc_pollset_kick_state *kick_state) {
+ gpr_mu_lock(&kick_state->mu);
+ if (kick_state->pipe_info != NULL) {
+ char c = 0;
+ while (write(kick_state->pipe_info->pipe_write_fd, &c, 1) != 1 &&
+ errno == EINTR)
+ ;
+ } else {
+ kick_state->kicked = 1;
+ }
+ gpr_mu_unlock(&kick_state->mu);
+}
diff --git a/src/node/port_picker.js b/src/core/iomgr/pollset_kick_posix.h
similarity index 73%
rename from src/node/port_picker.js
rename to src/core/iomgr/pollset_kick_posix.h
index ad82f2a..bae3b59 100644
--- a/src/node/port_picker.js
+++ b/src/core/iomgr/pollset_kick_posix.h
@@ -1,6 +1,6 @@
/*
*
- * Copyright 2014, Google Inc.
+ * Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,22 +31,17 @@
*
*/
-var net = require('net');
+#ifndef __GRPC_INTERNAL_IOMGR_POLLSET_KICK_POSIX_H_
+#define __GRPC_INTERNAL_IOMGR_POLLSET_KICK_POSIX_H_
-/**
- * Finds a free port that a server can bind to, in the format
- * "address:port"
- * @param {function(string)} cb The callback that should execute when the port
- * is available
- */
-function nextAvailablePort(cb) {
- var server = net.createServer();
- server.listen(function() {
- var address = server.address();
- server.close(function() {
- cb(address.address + ':' + address.port.toString());
- });
- });
-}
+#include <grpc/support/sync.h>
-exports.nextAvailablePort = nextAvailablePort;
+struct grpc_kick_pipe_info;
+
+typedef struct grpc_pollset_kick_state {
+ gpr_mu mu;
+ int kicked;
+ struct grpc_kick_pipe_info *pipe_info;
+} grpc_pollset_kick_state;
+
+#endif /* __GRPC_INTERNAL_IOMGR_POLLSET_KICK_POSIX_H_ */
diff --git a/src/core/iomgr/pollset_multipoller_with_poll_posix.c b/src/core/iomgr/pollset_multipoller_with_poll_posix.c
index e482da9..7c9a949 100644
--- a/src/core/iomgr/pollset_multipoller_with_poll_posix.c
+++ b/src/core/iomgr/pollset_multipoller_with_poll_posix.c
@@ -131,7 +131,11 @@
}
nf = 0;
np = 1;
- h->pfds[0].fd = grpc_kick_read_fd(pollset);
+ h->pfds[0].fd = grpc_pollset_kick_pre_poll(&pollset->kick_state);
+ if (h->pfds[0].fd < 0) {
+ /* Already kicked */
+ return 1;
+ }
h->pfds[0].events = POLLIN;
h->pfds[0].revents = POLLOUT;
for (i = 0; i < h->fd_count; i++) {
@@ -173,7 +177,7 @@
/* do nothing */
} else {
if (h->pfds[0].revents & POLLIN) {
- grpc_kick_drain(pollset);
+ grpc_pollset_kick_consume(&pollset->kick_state);
}
for (i = 1; i < np; i++) {
if (h->pfds[i].revents & POLLIN) {
@@ -184,6 +188,7 @@
}
}
}
+ grpc_pollset_kick_post_poll(&pollset->kick_state);
end_polling(pollset);
gpr_mu_lock(&pollset->mu);
diff --git a/src/core/iomgr/pollset_posix.c b/src/core/iomgr/pollset_posix.c
index 6f1b3ce..2555322 100644
--- a/src/core/iomgr/pollset_posix.c
+++ b/src/core/iomgr/pollset_posix.c
@@ -48,18 +48,6 @@
#include <grpc/support/thd.h>
#include <grpc/support/useful.h>
-/* kick pipes: we keep a sharded set of pipes to allow breaking from poll.
- Ideally this would be 1:1 with pollsets, but we'd like to avoid associating
- full kernel objects with each pollset to keep them lightweight, so instead
- keep a sharded set and allow associating a pollset with one of the shards.
-
- TODO(ctiller): move this out from this file, and allow an eventfd
- implementation on linux */
-
-#define LOG2_KICK_SHARDS 6
-#define KICK_SHARDS (1 << LOG2_KICK_SHARDS)
-
-static int g_kick_pipes[KICK_SHARDS][2];
static grpc_pollset g_backup_pollset;
static int g_shutdown_backup_poller;
static gpr_event g_backup_poller_done;
@@ -82,65 +70,22 @@
gpr_event_set(&g_backup_poller_done, (void *)1);
}
-static size_t kick_shard(const grpc_pollset *info) {
- size_t x = (size_t)info;
- return ((x >> 4) ^ (x >> 9) ^ (x >> 14)) & (KICK_SHARDS - 1);
-}
-
-int grpc_kick_read_fd(grpc_pollset *p) {
- return g_kick_pipes[kick_shard(p)][0];
-}
-
-static int grpc_kick_write_fd(grpc_pollset *p) {
- return g_kick_pipes[kick_shard(p)][1];
-}
-
-void grpc_pollset_force_kick(grpc_pollset *p) {
- char c = 0;
- while (write(grpc_kick_write_fd(p), &c, 1) != 1 && errno == EINTR)
- ;
-}
-
void grpc_pollset_kick(grpc_pollset *p) {
if (!p->counter) return;
- grpc_pollset_force_kick(p);
+ grpc_pollset_kick_kick(&p->kick_state);
}
-void grpc_kick_drain(grpc_pollset *p) {
- int fd = grpc_kick_read_fd(p);
- char buf[128];
- int r;
-
- for (;;) {
- r = read(fd, buf, sizeof(buf));
- if (r > 0) continue;
- if (r == 0) return;
- switch (errno) {
- case EAGAIN:
- return;
- case EINTR:
- continue;
- default:
- gpr_log(GPR_ERROR, "error reading pipe: %s", strerror(errno));
- return;
- }
- }
-}
+void grpc_pollset_force_kick(grpc_pollset *p) { grpc_pollset_kick(p); }
/* global state management */
grpc_pollset *grpc_backup_pollset(void) { return &g_backup_pollset; }
void grpc_pollset_global_init(void) {
- int i;
gpr_thd_id id;
- /* initialize the kick shards */
- for (i = 0; i < KICK_SHARDS; i++) {
- GPR_ASSERT(0 == pipe(g_kick_pipes[i]));
- GPR_ASSERT(grpc_set_socket_nonblocking(g_kick_pipes[i][0], 1));
- GPR_ASSERT(grpc_set_socket_nonblocking(g_kick_pipes[i][1], 1));
- }
+ /* Initialize kick fd state */
+ grpc_pollset_kick_global_init();
/* initialize the backup pollset */
grpc_pollset_init(&g_backup_pollset);
@@ -152,8 +97,6 @@
}
void grpc_pollset_global_shutdown(void) {
- int i;
-
/* terminate the backup poller thread */
gpr_mu_lock(&g_backup_pollset.mu);
g_shutdown_backup_poller = 1;
@@ -163,11 +106,8 @@
/* destroy the backup pollset */
grpc_pollset_destroy(&g_backup_pollset);
- /* destroy the kick shards */
- for (i = 0; i < KICK_SHARDS; i++) {
- close(g_kick_pipes[i][0]);
- close(g_kick_pipes[i][1]);
- }
+ /* destroy the kick pipes */
+ grpc_pollset_kick_global_destroy();
}
/* main interface */
@@ -178,6 +118,7 @@
void grpc_pollset_init(grpc_pollset *pollset) {
gpr_mu_init(&pollset->mu);
gpr_cv_init(&pollset->cv);
+ grpc_pollset_kick_init(&pollset->kick_state);
become_empty_pollset(pollset);
}
@@ -213,6 +154,7 @@
void grpc_pollset_destroy(grpc_pollset *pollset) {
pollset->vtable->destroy(pollset);
+ grpc_pollset_kick_destroy(&pollset->kick_state);
gpr_mu_destroy(&pollset->mu);
gpr_cv_destroy(&pollset->cv);
}
@@ -290,7 +232,11 @@
return 1;
}
}
- pfd[0].fd = grpc_kick_read_fd(pollset);
+ pfd[0].fd = grpc_pollset_kick_pre_poll(&pollset->kick_state);
+ if (pfd[0].fd < 0) {
+ /* Already kicked */
+ return 1;
+ }
pfd[0].events = POLLIN;
pfd[0].revents = 0;
pfd[1].fd = fd->fd;
@@ -308,7 +254,7 @@
/* do nothing */
} else {
if (pfd[0].revents & POLLIN) {
- grpc_kick_drain(pollset);
+ grpc_pollset_kick_consume(&pollset->kick_state);
}
if (pfd[1].revents & POLLIN) {
grpc_fd_become_readable(fd, allow_synchronous_callback);
@@ -318,6 +264,8 @@
}
}
+ grpc_pollset_kick_post_poll(&pollset->kick_state);
+
gpr_mu_lock(&pollset->mu);
grpc_fd_end_poll(fd, pollset);
pollset->counter = 0;
diff --git a/src/core/iomgr/pollset_posix.h b/src/core/iomgr/pollset_posix.h
index 32a8f53..f624337 100644
--- a/src/core/iomgr/pollset_posix.h
+++ b/src/core/iomgr/pollset_posix.h
@@ -36,6 +36,8 @@
#include <grpc/support/sync.h>
+#include "src/core/iomgr/pollset_kick.h"
+
typedef struct grpc_pollset_vtable grpc_pollset_vtable;
/* forward declare only in this file to avoid leaking impl details via
@@ -51,6 +53,7 @@
const grpc_pollset_vtable *vtable;
gpr_mu mu;
gpr_cv cv;
+ grpc_pollset_kick_state kick_state;
int counter;
union {
int fd;
diff --git a/src/core/security/auth.c b/src/core/security/auth.c
index e36bf23..f743b25 100644
--- a/src/core/security/auth.c
+++ b/src/core/security/auth.c
@@ -157,5 +157,6 @@
}
const grpc_channel_filter grpc_client_auth_filter = {
- call_op, channel_op, sizeof(call_data), init_call_elem, destroy_call_elem,
- sizeof(channel_data), init_channel_elem, destroy_channel_elem, "auth"};
+ call_op, channel_op, sizeof(call_data),
+ init_call_elem, destroy_call_elem, sizeof(channel_data),
+ init_channel_elem, destroy_channel_elem, "auth"};
diff --git a/src/core/security/credentials.c b/src/core/security/credentials.c
index 006d863..628963e 100644
--- a/src/core/security/credentials.c
+++ b/src/core/security/credentials.c
@@ -139,7 +139,7 @@
typedef struct {
grpc_server_credentials base;
- grpc_ssl_config config;
+ grpc_ssl_server_config config;
} grpc_ssl_server_credentials;
static void ssl_destroy(grpc_credentials *creds) {
@@ -152,9 +152,24 @@
static void ssl_server_destroy(grpc_server_credentials *creds) {
grpc_ssl_server_credentials *c = (grpc_ssl_server_credentials *)creds;
+ size_t i;
+ for (i = 0; i < c->config.num_key_cert_pairs; i++) {
+ if (c->config.pem_private_keys[i] != NULL) {
+ gpr_free(c->config.pem_private_keys[i]);
+ }
+ if (c->config.pem_cert_chains[i]!= NULL) {
+ gpr_free(c->config.pem_cert_chains[i]);
+ }
+ }
+ if (c->config.pem_private_keys != NULL) gpr_free(c->config.pem_private_keys);
+ if (c->config.pem_private_keys_sizes != NULL) {
+ gpr_free(c->config.pem_private_keys_sizes);
+ }
+ if (c->config.pem_cert_chains != NULL) gpr_free(c->config.pem_cert_chains);
+ if (c->config.pem_cert_chains_sizes != NULL) {
+ gpr_free(c->config.pem_cert_chains_sizes);
+ }
if (c->config.pem_root_certs != NULL) gpr_free(c->config.pem_root_certs);
- if (c->config.pem_private_key != NULL) gpr_free(c->config.pem_private_key);
- if (c->config.pem_cert_chain != NULL) gpr_free(c->config.pem_cert_chain);
gpr_free(creds);
}
@@ -179,7 +194,7 @@
}
}
-const grpc_ssl_config *grpc_ssl_server_credentials_get_config(
+const grpc_ssl_server_config *grpc_ssl_server_credentials_get_config(
const grpc_server_credentials *creds) {
if (creds == NULL || strcmp(creds->type, GRPC_CREDENTIALS_TYPE_SSL)) {
return NULL;
@@ -189,57 +204,89 @@
}
}
-static void ssl_build_config(const unsigned char *pem_root_certs,
- size_t pem_root_certs_size,
- const unsigned char *pem_private_key,
- size_t pem_private_key_size,
- const unsigned char *pem_cert_chain,
- size_t pem_cert_chain_size,
+static void ssl_copy_key_material(const char *input, unsigned char **output,
+ size_t *output_size) {
+ *output_size = strlen(input);
+ *output = gpr_malloc(*output_size);
+ memcpy(*output, input, *output_size);
+}
+
+static void ssl_build_config(const char *pem_root_certs,
+ grpc_ssl_pem_key_cert_pair *pem_key_cert_pair,
grpc_ssl_config *config) {
+ if (pem_root_certs == NULL) {
+ /* TODO(jboeuf): Get them from the environment. */
+ gpr_log(GPR_ERROR, "Default SSL roots not yet implemented.");
+ } else {
+ ssl_copy_key_material(pem_root_certs, &config->pem_root_certs,
+ &config->pem_root_certs_size);
+ }
+
+ if (pem_key_cert_pair != NULL) {
+ GPR_ASSERT(pem_key_cert_pair->private_key != NULL);
+ GPR_ASSERT(pem_key_cert_pair->cert_chain != NULL);
+ ssl_copy_key_material(pem_key_cert_pair->private_key,
+ &config->pem_private_key,
+ &config->pem_private_key_size);
+ ssl_copy_key_material(pem_key_cert_pair->cert_chain,
+ &config->pem_cert_chain,
+ &config->pem_cert_chain_size);
+ }
+}
+
+static void ssl_build_server_config(
+ const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs,
+ size_t num_key_cert_pairs, grpc_ssl_server_config *config) {
+ size_t i;
if (pem_root_certs != NULL) {
- config->pem_root_certs = gpr_malloc(pem_root_certs_size);
- memcpy(config->pem_root_certs, pem_root_certs, pem_root_certs_size);
- config->pem_root_certs_size = pem_root_certs_size;
+ ssl_copy_key_material(pem_root_certs, &config->pem_root_certs,
+ &config->pem_root_certs_size);
}
- if (pem_private_key != NULL) {
- config->pem_private_key = gpr_malloc(pem_private_key_size);
- memcpy(config->pem_private_key, pem_private_key, pem_private_key_size);
- config->pem_private_key_size = pem_private_key_size;
+ if (num_key_cert_pairs > 0) {
+ GPR_ASSERT(pem_key_cert_pairs != NULL);
+ config->pem_private_keys =
+ gpr_malloc(num_key_cert_pairs * sizeof(unsigned char *));
+ config->pem_cert_chains =
+ gpr_malloc(num_key_cert_pairs * sizeof(unsigned char *));
+ config->pem_private_keys_sizes =
+ gpr_malloc(num_key_cert_pairs * sizeof(size_t));
+ config->pem_cert_chains_sizes =
+ gpr_malloc(num_key_cert_pairs * sizeof(size_t));
}
- if (pem_cert_chain != NULL) {
- config->pem_cert_chain = gpr_malloc(pem_cert_chain_size);
- memcpy(config->pem_cert_chain, pem_cert_chain, pem_cert_chain_size);
- config->pem_cert_chain_size = pem_cert_chain_size;
+ config->num_key_cert_pairs = num_key_cert_pairs;
+ for (i = 0; i < num_key_cert_pairs; i++) {
+ GPR_ASSERT(pem_key_cert_pairs[i].private_key != NULL);
+ GPR_ASSERT(pem_key_cert_pairs[i].cert_chain != NULL);
+ ssl_copy_key_material(pem_key_cert_pairs[i].private_key,
+ &config->pem_private_keys[i],
+ &config->pem_private_keys_sizes[i]);
+ ssl_copy_key_material(pem_key_cert_pairs[i].cert_chain,
+ &config->pem_cert_chains[i],
+ &config->pem_cert_chains_sizes[i]);
}
}
grpc_credentials *grpc_ssl_credentials_create(
- const unsigned char *pem_root_certs, size_t pem_root_certs_size,
- const unsigned char *pem_private_key, size_t pem_private_key_size,
- const unsigned char *pem_cert_chain, size_t pem_cert_chain_size) {
+ const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pair) {
grpc_ssl_credentials *c = gpr_malloc(sizeof(grpc_ssl_credentials));
memset(c, 0, sizeof(grpc_ssl_credentials));
c->base.type = GRPC_CREDENTIALS_TYPE_SSL;
c->base.vtable = &ssl_vtable;
gpr_ref_init(&c->base.refcount, 1);
- ssl_build_config(pem_root_certs, pem_root_certs_size, pem_private_key,
- pem_private_key_size, pem_cert_chain, pem_cert_chain_size,
- &c->config);
+ ssl_build_config(pem_root_certs, pem_key_cert_pair, &c->config);
return &c->base;
}
grpc_server_credentials *grpc_ssl_server_credentials_create(
- const unsigned char *pem_root_certs, size_t pem_root_certs_size,
- const unsigned char *pem_private_key, size_t pem_private_key_size,
- const unsigned char *pem_cert_chain, size_t pem_cert_chain_size) {
+ const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs,
+ size_t num_key_cert_pairs) {
grpc_ssl_server_credentials *c =
gpr_malloc(sizeof(grpc_ssl_server_credentials));
memset(c, 0, sizeof(grpc_ssl_server_credentials));
c->base.type = GRPC_CREDENTIALS_TYPE_SSL;
c->base.vtable = &ssl_server_vtable;
- ssl_build_config(pem_root_certs, pem_root_certs_size, pem_private_key,
- pem_private_key_size, pem_cert_chain, pem_cert_chain_size,
- &c->config);
+ ssl_build_server_config(pem_root_certs, pem_key_cert_pairs,
+ num_key_cert_pairs, &c->config);
return &c->base;
}
diff --git a/src/core/security/credentials.h b/src/core/security/credentials.h
index 4a2532d..8a9ff41 100644
--- a/src/core/security/credentials.h
+++ b/src/core/security/credentials.h
@@ -137,10 +137,17 @@
const char *type;
};
-/* TODO(jboeuf): Have an ssl_server_config that can contain multiple key/cert
- pairs. */
+typedef struct {
+ unsigned char **pem_private_keys;
+ size_t *pem_private_keys_sizes;
+ unsigned char **pem_cert_chains;
+ size_t *pem_cert_chains_sizes;
+ size_t num_key_cert_pairs;
+ unsigned char *pem_root_certs;
+ size_t pem_root_certs_size;
+} grpc_ssl_server_config;
-const grpc_ssl_config *grpc_ssl_server_credentials_get_config(
+const grpc_ssl_server_config *grpc_ssl_server_credentials_get_config(
const grpc_server_credentials *ssl_creds);
#endif /* __GRPC_INTERNAL_SECURITY_CREDENTIALS_H__ */
diff --git a/src/core/security/security_context.c b/src/core/security/security_context.c
index 421b81f..cce3c7f 100644
--- a/src/core/security/security_context.c
+++ b/src/core/security/security_context.c
@@ -382,7 +382,7 @@
}
grpc_security_status grpc_ssl_server_security_context_create(
- const grpc_ssl_config *config, grpc_security_context **ctx) {
+ const grpc_ssl_server_config *config, grpc_security_context **ctx) {
size_t num_alpn_protocols = grpc_chttp2_num_alpn_versions();
const unsigned char **alpn_protocol_strings =
gpr_malloc(sizeof(const char *) * num_alpn_protocols);
@@ -399,8 +399,7 @@
strlen(grpc_chttp2_get_alpn_version_index(i));
}
- if (config == NULL || config->pem_private_key == NULL ||
- config->pem_cert_chain == NULL) {
+ if (config == NULL || config->num_key_cert_pairs == 0) {
gpr_log(GPR_ERROR, "An SSL server needs a key and a cert.");
goto error;
}
@@ -410,10 +409,10 @@
gpr_ref_init(&c->base.refcount, 1);
c->base.vtable = &ssl_server_vtable;
result = tsi_create_ssl_server_handshaker_factory(
- (const unsigned char **)&config->pem_private_key,
- &config->pem_private_key_size,
- (const unsigned char **)&config->pem_cert_chain,
- &config->pem_cert_chain_size, 1,
+ (const unsigned char **)config->pem_private_keys,
+ config->pem_private_keys_sizes,
+ (const unsigned char **)config->pem_cert_chains,
+ config->pem_cert_chains_sizes, config->num_key_cert_pairs,
config->pem_root_certs, config->pem_root_certs_size,
GRPC_SSL_CIPHER_SUITES, alpn_protocol_strings,
alpn_protocol_string_lengths, num_alpn_protocols, &c->handshaker_factory);
diff --git a/src/core/security/security_context.h b/src/core/security/security_context.h
index 9ace7f1..2caa2d3 100644
--- a/src/core/security/security_context.h
+++ b/src/core/security/security_context.h
@@ -157,7 +157,7 @@
specific error code otherwise.
*/
grpc_security_status grpc_ssl_server_security_context_create(
- const grpc_ssl_config *config, grpc_security_context **ctx);
+ const grpc_ssl_server_config *config, grpc_security_context **ctx);
/* --- Creation of high level objects. --- */
diff --git a/src/core/security/server_secure_chttp2.c b/src/core/security/server_secure_chttp2.c
index 931fa95..9dd4327 100644
--- a/src/core/security/server_secure_chttp2.c
+++ b/src/core/security/server_secure_chttp2.c
@@ -93,6 +93,8 @@
grpc_tcp_server *tcp = NULL;
size_t i;
int count = 0;
+ int port_num = -1;
+ int port_temp;
resolved = grpc_blocking_resolve_address(addr, "https");
if (!resolved) {
@@ -105,9 +107,15 @@
}
for (i = 0; i < resolved->naddrs; i++) {
- if (grpc_tcp_server_add_port(tcp,
- (struct sockaddr *)&resolved->addrs[i].addr,
- resolved->addrs[i].len)) {
+ port_temp = grpc_tcp_server_add_port(
+ tcp, (struct sockaddr *)&resolved->addrs[i].addr,
+ resolved->addrs[i].len);
+ if (port_temp >= 0) {
+ if (port_num == -1) {
+ port_num = port_temp;
+ } else {
+ GPR_ASSERT(port_num == port_temp);
+ }
count++;
}
}
@@ -125,7 +133,7 @@
/* Register with the server only upon success */
grpc_server_add_listener(server, tcp, start, destroy);
- return 1;
+ return port_num;
/* Error path: cleanup and return */
error:
diff --git a/src/core/statistics/census_rpc_stats.c b/src/core/statistics/census_rpc_stats.c
index 2db3054..39094b5 100644
--- a/src/core/statistics/census_rpc_stats.c
+++ b/src/core/statistics/census_rpc_stats.c
@@ -85,8 +85,9 @@
static const census_ht_option ht_opt = {
CENSUS_HT_POINTER /* key type */, 1999 /* n_of_buckets */,
- simple_hash /* hash function */, cmp_str_keys /* key comparator */,
- delete_stats /* data deleter */, delete_key /* key deleter */};
+ simple_hash /* hash function */, cmp_str_keys /* key comparator */,
+ delete_stats /* data deleter */, delete_key /* key deleter */
+};
static void init_rpc_stats(void* stats) {
memset(stats, 0, sizeof(census_rpc_stats));
diff --git a/src/core/statistics/census_tracing.c b/src/core/statistics/census_tracing.c
index 8c7cf11..1e61602 100644
--- a/src/core/statistics/census_tracing.c
+++ b/src/core/statistics/census_tracing.c
@@ -76,7 +76,8 @@
static const census_ht_option ht_opt = {
CENSUS_HT_UINT64 /* key type*/, 571 /* n_of_buckets */, NULL /* hash */,
NULL /* compare_keys */, delete_trace_obj /* delete data */,
- NULL /* delete key */};
+ NULL /* delete key */
+};
static gpr_once g_init_mutex_once = GPR_ONCE_INIT;
static gpr_mu g_mu; /* Guards following two static variables. */
diff --git a/src/core/support/murmur_hash.c b/src/core/support/murmur_hash.c
index 5d30263..08b1eb8 100644
--- a/src/core/support/murmur_hash.c
+++ b/src/core/support/murmur_hash.c
@@ -46,8 +46,8 @@
handle aligned reads, do the conversion here */
#define GETBLOCK32(p, i) (p)[(i)]
-gpr_uint32 gpr_murmur_hash3(const void* key, size_t len, gpr_uint32 seed) {
- const gpr_uint8* data = (const gpr_uint8*)key;
+gpr_uint32 gpr_murmur_hash3(const void *key, size_t len, gpr_uint32 seed) {
+ const gpr_uint8 *data = (const gpr_uint8 *)key;
const int nblocks = len / 4;
int i;
@@ -57,8 +57,8 @@
const gpr_uint32 c1 = 0xcc9e2d51;
const gpr_uint32 c2 = 0x1b873593;
- const gpr_uint32* blocks = (const uint32_t*)(data + nblocks * 4);
- const uint8_t* tail = (const uint8_t*)(data + nblocks * 4);
+ const gpr_uint32 *blocks = (const uint32_t *)(data + nblocks * 4);
+ const uint8_t *tail = (const uint8_t *)(data + nblocks * 4);
/* body */
for (i = -nblocks; i; i++) {
diff --git a/src/core/surface/call.c b/src/core/surface/call.c
index 26bfa02..46502fb 100644
--- a/src/core/surface/call.c
+++ b/src/core/surface/call.c
@@ -198,7 +198,7 @@
gpr_refcount internal_refcount;
};
-#define CALL_STACK_FROM_CALL(call) ((grpc_call_stack *)((call) + 1))
+#define CALL_STACK_FROM_CALL(call) ((grpc_call_stack *)((call)+1))
#define CALL_FROM_CALL_STACK(call_stack) (((grpc_call *)(call_stack)) - 1)
#define CALL_ELEM_FROM_CALL(call, idx) \
grpc_call_stack_element(CALL_STACK_FROM_CALL(call), idx)
@@ -801,7 +801,7 @@
gpr_uint32 status;
void *user_data = grpc_mdelem_get_user_data(md, destroy_status);
if (user_data) {
- status = ((gpr_uint32)(gpr_intptr)user_data) - STATUS_OFFSET;
+ status = ((gpr_uint32)(gpr_intptr) user_data) - STATUS_OFFSET;
} else {
if (!gpr_parse_bytes_to_uint32(grpc_mdstr_as_c_string(md->value),
GPR_SLICE_LENGTH(md->value->slice),
diff --git a/src/core/surface/channel.c b/src/core/surface/channel.c
index a1bcea5..8ef1367 100644
--- a/src/core/surface/channel.c
+++ b/src/core/surface/channel.c
@@ -51,7 +51,7 @@
grpc_mdstr *authority_string;
};
-#define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack *)((c) + 1))
+#define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack *)((c)+1))
grpc_channel *grpc_channel_create_from_filters(
const grpc_channel_filter **filters, size_t num_filters,
diff --git a/src/core/surface/client.c b/src/core/surface/client.c
index 524b071..74c79bd 100644
--- a/src/core/surface/client.c
+++ b/src/core/surface/client.c
@@ -109,9 +109,9 @@
static void destroy_channel_elem(grpc_channel_element *elem) {}
const grpc_channel_filter grpc_client_surface_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/surface/lame_client.c b/src/core/surface/lame_client.c
index 5fa3e42..a5244db 100644
--- a/src/core/surface/lame_client.c
+++ b/src/core/surface/lame_client.c
@@ -111,9 +111,9 @@
}
static const grpc_channel_filter lame_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/surface/server.c b/src/core/surface/server.c
index 846a00c..cbdd3bf 100644
--- a/src/core/surface/server.c
+++ b/src/core/surface/server.c
@@ -411,9 +411,9 @@
}
static const grpc_channel_filter server_surface_filter = {
- call_op, channel_op,
+ call_op, channel_op,
- sizeof(call_data), init_call_elem, destroy_call_elem,
+ sizeof(call_data), init_call_elem, destroy_call_elem,
sizeof(channel_data), init_channel_elem, destroy_channel_elem,
diff --git a/src/core/transport/chttp2/hpack_table.c b/src/core/transport/chttp2/hpack_table.c
index ae8bfa8..8f2ebec 100644
--- a/src/core/transport/chttp2/hpack_table.c
+++ b/src/core/transport/chttp2/hpack_table.c
@@ -43,68 +43,68 @@
const char *key;
const char *value;
} static_table[] = {
- /* 0: */ {NULL, NULL},
- /* 1: */ {":authority", ""},
- /* 2: */ {":method", "GET"},
- /* 3: */ {":method", "POST"},
- /* 4: */ {":path", "/"},
- /* 5: */ {":path", "/index.html"},
- /* 6: */ {":scheme", "http"},
- /* 7: */ {":scheme", "https"},
- /* 8: */ {":status", "200"},
- /* 9: */ {":status", "204"},
- /* 10: */ {":status", "206"},
- /* 11: */ {":status", "304"},
- /* 12: */ {":status", "400"},
- /* 13: */ {":status", "404"},
- /* 14: */ {":status", "500"},
- /* 15: */ {"accept-charset", ""},
- /* 16: */ {"accept-encoding", "gzip, deflate"},
- /* 17: */ {"accept-language", ""},
- /* 18: */ {"accept-ranges", ""},
- /* 19: */ {"accept", ""},
- /* 20: */ {"access-control-allow-origin", ""},
- /* 21: */ {"age", ""},
- /* 22: */ {"allow", ""},
- /* 23: */ {"authorization", ""},
- /* 24: */ {"cache-control", ""},
- /* 25: */ {"content-disposition", ""},
- /* 26: */ {"content-encoding", ""},
- /* 27: */ {"content-language", ""},
- /* 28: */ {"content-length", ""},
- /* 29: */ {"content-location", ""},
- /* 30: */ {"content-range", ""},
- /* 31: */ {"content-type", ""},
- /* 32: */ {"cookie", ""},
- /* 33: */ {"date", ""},
- /* 34: */ {"etag", ""},
- /* 35: */ {"expect", ""},
- /* 36: */ {"expires", ""},
- /* 37: */ {"from", ""},
- /* 38: */ {"host", ""},
- /* 39: */ {"if-match", ""},
- /* 40: */ {"if-modified-since", ""},
- /* 41: */ {"if-none-match", ""},
- /* 42: */ {"if-range", ""},
- /* 43: */ {"if-unmodified-since", ""},
- /* 44: */ {"last-modified", ""},
- /* 45: */ {"link", ""},
- /* 46: */ {"location", ""},
- /* 47: */ {"max-forwards", ""},
- /* 48: */ {"proxy-authenticate", ""},
- /* 49: */ {"proxy-authorization", ""},
- /* 50: */ {"range", ""},
- /* 51: */ {"referer", ""},
- /* 52: */ {"refresh", ""},
- /* 53: */ {"retry-after", ""},
- /* 54: */ {"server", ""},
- /* 55: */ {"set-cookie", ""},
- /* 56: */ {"strict-transport-security", ""},
- /* 57: */ {"transfer-encoding", ""},
- /* 58: */ {"user-agent", ""},
- /* 59: */ {"vary", ""},
- /* 60: */ {"via", ""},
- /* 61: */ {"www-authenticate", ""},
+ /* 0: */ {NULL, NULL},
+ /* 1: */ {":authority", ""},
+ /* 2: */ {":method", "GET"},
+ /* 3: */ {":method", "POST"},
+ /* 4: */ {":path", "/"},
+ /* 5: */ {":path", "/index.html"},
+ /* 6: */ {":scheme", "http"},
+ /* 7: */ {":scheme", "https"},
+ /* 8: */ {":status", "200"},
+ /* 9: */ {":status", "204"},
+ /* 10: */ {":status", "206"},
+ /* 11: */ {":status", "304"},
+ /* 12: */ {":status", "400"},
+ /* 13: */ {":status", "404"},
+ /* 14: */ {":status", "500"},
+ /* 15: */ {"accept-charset", ""},
+ /* 16: */ {"accept-encoding", "gzip, deflate"},
+ /* 17: */ {"accept-language", ""},
+ /* 18: */ {"accept-ranges", ""},
+ /* 19: */ {"accept", ""},
+ /* 20: */ {"access-control-allow-origin", ""},
+ /* 21: */ {"age", ""},
+ /* 22: */ {"allow", ""},
+ /* 23: */ {"authorization", ""},
+ /* 24: */ {"cache-control", ""},
+ /* 25: */ {"content-disposition", ""},
+ /* 26: */ {"content-encoding", ""},
+ /* 27: */ {"content-language", ""},
+ /* 28: */ {"content-length", ""},
+ /* 29: */ {"content-location", ""},
+ /* 30: */ {"content-range", ""},
+ /* 31: */ {"content-type", ""},
+ /* 32: */ {"cookie", ""},
+ /* 33: */ {"date", ""},
+ /* 34: */ {"etag", ""},
+ /* 35: */ {"expect", ""},
+ /* 36: */ {"expires", ""},
+ /* 37: */ {"from", ""},
+ /* 38: */ {"host", ""},
+ /* 39: */ {"if-match", ""},
+ /* 40: */ {"if-modified-since", ""},
+ /* 41: */ {"if-none-match", ""},
+ /* 42: */ {"if-range", ""},
+ /* 43: */ {"if-unmodified-since", ""},
+ /* 44: */ {"last-modified", ""},
+ /* 45: */ {"link", ""},
+ /* 46: */ {"location", ""},
+ /* 47: */ {"max-forwards", ""},
+ /* 48: */ {"proxy-authenticate", ""},
+ /* 49: */ {"proxy-authorization", ""},
+ /* 50: */ {"range", ""},
+ /* 51: */ {"referer", ""},
+ /* 52: */ {"refresh", ""},
+ /* 53: */ {"retry-after", ""},
+ /* 54: */ {"server", ""},
+ /* 55: */ {"set-cookie", ""},
+ /* 56: */ {"strict-transport-security", ""},
+ /* 57: */ {"transfer-encoding", ""},
+ /* 58: */ {"user-agent", ""},
+ /* 59: */ {"vary", ""},
+ /* 60: */ {"via", ""},
+ /* 61: */ {"www-authenticate", ""},
};
void grpc_chttp2_hptbl_init(grpc_chttp2_hptbl *tbl, grpc_mdctx *mdctx) {
diff --git a/src/core/transport/chttp2/varint.h b/src/core/transport/chttp2/varint.h
index 940df00..55f92af 100644
--- a/src/core/transport/chttp2/varint.h
+++ b/src/core/transport/chttp2/varint.h
@@ -58,16 +58,16 @@
: grpc_chttp2_hpack_varint_length( \
(n)-GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits)))
-#define GRPC_CHTTP2_WRITE_VARINT(n, prefix_bits, prefix_or, target, length) \
- do { \
- gpr_uint8* tgt = target; \
- if ((length) == 1) { \
- (tgt)[0] = (prefix_or) | (n); \
- } else { \
- (tgt)[0] = (prefix_or) | GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits); \
- grpc_chttp2_hpack_write_varint_tail( \
- (n)-GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits), (tgt) + 1, (length)-1); \
- } \
+#define GRPC_CHTTP2_WRITE_VARINT(n, prefix_bits, prefix_or, target, length) \
+ do { \
+ gpr_uint8* tgt = target; \
+ if ((length) == 1) { \
+ (tgt)[0] = (prefix_or) | (n); \
+ } else { \
+ (tgt)[0] = (prefix_or) | GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits); \
+ grpc_chttp2_hpack_write_varint_tail( \
+ (n)-GRPC_CHTTP2_MAX_IN_PREFIX(prefix_bits), (tgt)+1, (length)-1); \
+ } \
} while (0)
#endif /* __GRPC_INTERNAL_TRANSPORT_CHTTP2_VARINT_H__ */
diff --git a/src/core/transport/chttp2_transport.c b/src/core/transport/chttp2_transport.c
index 1b90d47..e61afb7 100644
--- a/src/core/transport/chttp2_transport.c
+++ b/src/core/transport/chttp2_transport.c
@@ -525,7 +525,7 @@
lock(t);
s->id = 0;
} else {
- s->id = (gpr_uint32)(gpr_uintptr)server_data;
+ s->id = (gpr_uint32)(gpr_uintptr) server_data;
t->incoming_stream = s;
grpc_chttp2_stream_map_add(&t->stream_map, s->id, s);
}
@@ -1238,7 +1238,7 @@
t->incoming_stream = NULL;
/* if stream is accepted, we set incoming_stream in init_stream */
t->cb->accept_stream(t->cb_user_data, &t->base,
- (void *)(gpr_uintptr)t->incoming_stream_id);
+ (void *)(gpr_uintptr) t->incoming_stream_id);
s = t->incoming_stream;
if (!s) {
gpr_log(GPR_ERROR, "stream not accepted");
@@ -1503,8 +1503,9 @@
"Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
"at byte %d",
CLIENT_CONNECT_STRING[t->deframe_state],
- (int)(gpr_uint8)CLIENT_CONNECT_STRING[t->deframe_state], *cur,
- (int)*cur, t->deframe_state);
+ (int)(gpr_uint8) CLIENT_CONNECT_STRING[t->deframe_state],
+ *cur, (int)*cur, t->deframe_state);
+ drop_connection(t);
return 0;
}
++cur;
@@ -1737,9 +1738,9 @@
*/
static const grpc_transport_vtable vtable = {
- sizeof(stream), init_stream, send_batch, set_allow_window_updates,
- add_to_pollset, destroy_stream, abort_stream, goaway, close_transport,
- send_ping, destroy_transport};
+ sizeof(stream), init_stream, send_batch, set_allow_window_updates,
+ add_to_pollset, destroy_stream, abort_stream, goaway,
+ close_transport, send_ping, destroy_transport};
void grpc_create_chttp2_transport(grpc_transport_setup_callback setup,
void *arg,
diff --git a/src/core/tsi/fake_transport_security.c b/src/core/tsi/fake_transport_security.c
index 4463292..756b217 100644
--- a/src/core/tsi/fake_transport_security.c
+++ b/src/core/tsi/fake_transport_security.c
@@ -120,7 +120,7 @@
buf[3] = (unsigned char)(value >> 24) & 0xFF;
buf[2] = (unsigned char)(value >> 16) & 0xFF;
buf[1] = (unsigned char)(value >> 8) & 0xFF;
- buf[0] = (unsigned char)(value)&0xFF;
+ buf[0] = (unsigned char)(value) & 0xFF;
}
static void tsi_fake_frame_reset(tsi_fake_frame* frame, int needs_draining) {
@@ -230,10 +230,11 @@
/* --- tsi_frame_protector methods implementation. ---*/
-static tsi_result fake_protector_protect(
- tsi_frame_protector* self, const unsigned char* unprotected_bytes,
- size_t* unprotected_bytes_size, unsigned char* protected_output_frames,
- size_t* protected_output_frames_size) {
+static tsi_result fake_protector_protect(tsi_frame_protector* self,
+ const unsigned char* unprotected_bytes,
+ size_t* unprotected_bytes_size,
+ unsigned char* protected_output_frames,
+ size_t* protected_output_frames_size) {
tsi_result result = TSI_OK;
tsi_fake_frame_protector* impl = (tsi_fake_frame_protector*)self;
unsigned char frame_header[TSI_FAKE_FRAME_HEADER_SIZE];
@@ -480,8 +481,10 @@
static const tsi_handshaker_vtable handshaker_vtable = {
fake_handshaker_get_bytes_to_send_to_peer,
- fake_handshaker_process_bytes_from_peer, fake_handshaker_get_result,
- fake_handshaker_extract_peer, fake_handshaker_create_frame_protector,
+ fake_handshaker_process_bytes_from_peer,
+ fake_handshaker_get_result,
+ fake_handshaker_extract_peer,
+ fake_handshaker_create_frame_protector,
fake_handshaker_destroy,
};
diff --git a/src/core/tsi/ssl_transport_security.c b/src/core/tsi/ssl_transport_security.c
index 02af080..1159254 100644
--- a/src/core/tsi/ssl_transport_security.c
+++ b/src/core/tsi/ssl_transport_security.c
@@ -573,10 +573,11 @@
/* --- tsi_frame_protector methods implementation. ---*/
-static tsi_result ssl_protector_protect(
- tsi_frame_protector* self, const unsigned char* unprotected_bytes,
- size_t* unprotected_bytes_size, unsigned char* protected_output_frames,
- size_t* protected_output_frames_size) {
+static tsi_result ssl_protector_protect(tsi_frame_protector* self,
+ const unsigned char* unprotected_bytes,
+ size_t* unprotected_bytes_size,
+ unsigned char* protected_output_frames,
+ size_t* protected_output_frames_size) {
tsi_ssl_frame_protector* impl = (tsi_ssl_frame_protector*)self;
int read_from_ssl;
size_t available;
@@ -707,8 +708,9 @@
/* --- tsi_handshaker methods implementation. ---*/
-static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(
- tsi_handshaker* self, unsigned char* bytes, size_t* bytes_size) {
+static tsi_result ssl_handshaker_get_bytes_to_send_to_peer(tsi_handshaker* self,
+ unsigned char* bytes,
+ size_t* bytes_size) {
tsi_ssl_handshaker* impl = (tsi_ssl_handshaker*)self;
int bytes_read_from_ssl = 0;
if (bytes == NULL || bytes_size == NULL || *bytes_size == 0 ||
@@ -871,8 +873,10 @@
static const tsi_handshaker_vtable handshaker_vtable = {
ssl_handshaker_get_bytes_to_send_to_peer,
- ssl_handshaker_process_bytes_from_peer, ssl_handshaker_get_result,
- ssl_handshaker_extract_peer, ssl_handshaker_create_frame_protector,
+ ssl_handshaker_process_bytes_from_peer,
+ ssl_handshaker_get_result,
+ ssl_handshaker_extract_peer,
+ ssl_handshaker_create_frame_protector,
ssl_handshaker_destroy,
};
@@ -1157,8 +1161,7 @@
tsi_result tsi_create_ssl_server_handshaker_factory(
const unsigned char** pem_private_keys,
- const size_t* pem_private_keys_sizes,
- const unsigned char** pem_cert_chains,
+ const size_t* pem_private_keys_sizes, const unsigned char** pem_cert_chains,
const size_t* pem_cert_chains_sizes, size_t key_cert_pair_count,
const unsigned char* pem_client_root_certs,
size_t pem_client_root_certs_size, const char* cipher_list,
diff --git a/src/core/tsi/ssl_transport_security.h b/src/core/tsi/ssl_transport_security.h
index 9c839b9..3a33dea 100644
--- a/src/core/tsi/ssl_transport_security.h
+++ b/src/core/tsi/ssl_transport_security.h
@@ -132,8 +132,7 @@
where a parameter is invalid. */
tsi_result tsi_create_ssl_server_handshaker_factory(
const unsigned char** pem_private_keys,
- const size_t* pem_private_keys_sizes,
- const unsigned char** pem_cert_chains,
+ const size_t* pem_private_keys_sizes, const unsigned char** pem_cert_chains,
const size_t* pem_cert_chains_sizes, size_t key_cert_pair_count,
const unsigned char* pem_client_root_certs,
size_t pem_client_root_certs_size, const char* cipher_suites,
diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc
index ddda8c2..a8919a1 100644
--- a/src/cpp/client/channel.cc
+++ b/src/cpp/client/channel.cc
@@ -53,7 +53,7 @@
namespace grpc {
-Channel::Channel(const grpc::string& target, const ChannelArguments& args)
+Channel::Channel(const grpc::string &target, const ChannelArguments &args)
: target_(target) {
grpc_channel_args channel_args;
args.SetChannelArgs(&channel_args);
@@ -61,15 +61,15 @@
target_.c_str(), channel_args.num_args > 0 ? &channel_args : nullptr);
}
-Channel::Channel(const grpc::string& target,
- const std::unique_ptr<Credentials>& creds,
- const ChannelArguments& args)
+Channel::Channel(const grpc::string &target,
+ const std::unique_ptr<Credentials> &creds,
+ const ChannelArguments &args)
: target_(args.GetSslTargetNameOverride().empty()
? target
: args.GetSslTargetNameOverride()) {
grpc_channel_args channel_args;
args.SetChannelArgs(&channel_args);
- grpc_credentials* c_creds = creds ? creds->GetRawCreds() : nullptr;
+ grpc_credentials *c_creds = creds ? creds->GetRawCreds() : nullptr;
c_channel_ = grpc_secure_channel_create(
c_creds, target.c_str(),
channel_args.num_args > 0 ? &channel_args : nullptr);
@@ -79,9 +79,9 @@
namespace {
// Pluck the finished event and set to status when it is not nullptr.
-void GetFinalStatus(grpc_completion_queue* cq, void* finished_tag,
- Status* status) {
- grpc_event* ev =
+void GetFinalStatus(grpc_completion_queue *cq, void *finished_tag,
+ Status *status) {
+ grpc_event *ev =
grpc_completion_queue_pluck(cq, finished_tag, gpr_inf_future);
if (status) {
StatusCode error_code = static_cast<StatusCode>(ev->data.finished.status);
@@ -94,23 +94,23 @@
} // namespace
// TODO(yangg) more error handling
-Status Channel::StartBlockingRpc(const RpcMethod& method,
- ClientContext* context,
- const google::protobuf::Message& request,
- google::protobuf::Message* result) {
+Status Channel::StartBlockingRpc(const RpcMethod &method,
+ ClientContext *context,
+ const google::protobuf::Message &request,
+ google::protobuf::Message *result) {
Status status;
- grpc_call* call = grpc_channel_create_call(
+ grpc_call *call = grpc_channel_create_call(
c_channel_, method.name(), target_.c_str(), context->RawDeadline());
context->set_call(call);
- grpc_event* ev;
- void* finished_tag = reinterpret_cast<char*>(call);
- void* invoke_tag = reinterpret_cast<char*>(call) + 1;
- void* metadata_read_tag = reinterpret_cast<char*>(call) + 2;
- void* write_tag = reinterpret_cast<char*>(call) + 3;
- void* halfclose_tag = reinterpret_cast<char*>(call) + 4;
- void* read_tag = reinterpret_cast<char*>(call) + 5;
+ grpc_event *ev;
+ void *finished_tag = reinterpret_cast<char *>(call);
+ void *invoke_tag = reinterpret_cast<char *>(call) + 1;
+ void *metadata_read_tag = reinterpret_cast<char *>(call) + 2;
+ void *write_tag = reinterpret_cast<char *>(call) + 3;
+ void *halfclose_tag = reinterpret_cast<char *>(call) + 4;
+ void *read_tag = reinterpret_cast<char *>(call) + 5;
- grpc_completion_queue* cq = grpc_completion_queue_create();
+ grpc_completion_queue *cq = grpc_completion_queue_create();
context->set_cq(cq);
// add_metadata from context
//
@@ -126,7 +126,7 @@
return status;
}
// write request
- grpc_byte_buffer* write_buffer = nullptr;
+ grpc_byte_buffer *write_buffer = nullptr;
success = SerializeProto(request, &write_buffer);
if (!success) {
grpc_call_cancel(call);
@@ -172,14 +172,14 @@
return status;
}
-StreamContextInterface* Channel::CreateStream(
- const RpcMethod& method, ClientContext* context,
- const google::protobuf::Message* request,
- google::protobuf::Message* result) {
- grpc_call* call = grpc_channel_create_call(
+StreamContextInterface *Channel::CreateStream(
+ const RpcMethod &method, ClientContext *context,
+ const google::protobuf::Message *request,
+ google::protobuf::Message *result) {
+ grpc_call *call = grpc_channel_create_call(
c_channel_, method.name(), target_.c_str(), context->RawDeadline());
context->set_call(call);
- grpc_completion_queue* cq = grpc_completion_queue_create();
+ grpc_completion_queue *cq = grpc_completion_queue_create();
context->set_cq(cq);
return new StreamContext(method, context, request, result);
}
diff --git a/src/cpp/client/channel.h b/src/cpp/client/channel.h
index 8de1180..67d18bf 100644
--- a/src/cpp/client/channel.h
+++ b/src/cpp/client/channel.h
@@ -48,24 +48,24 @@
class Channel : public ChannelInterface {
public:
- Channel(const grpc::string& target, const ChannelArguments& args);
- Channel(const grpc::string& target, const std::unique_ptr<Credentials>& creds,
- const ChannelArguments& args);
+ Channel(const grpc::string &target, const ChannelArguments &args);
+ Channel(const grpc::string &target, const std::unique_ptr<Credentials> &creds,
+ const ChannelArguments &args);
~Channel() override;
- Status StartBlockingRpc(const RpcMethod& method, ClientContext* context,
- const google::protobuf::Message& request,
- google::protobuf::Message* result) override;
+ Status StartBlockingRpc(const RpcMethod &method, ClientContext *context,
+ const google::protobuf::Message &request,
+ google::protobuf::Message *result) override;
- StreamContextInterface* CreateStream(
- const RpcMethod& method, ClientContext* context,
- const google::protobuf::Message* request,
- google::protobuf::Message* result) override;
+ StreamContextInterface *CreateStream(
+ const RpcMethod &method, ClientContext *context,
+ const google::protobuf::Message *request,
+ google::protobuf::Message *result) override;
private:
const grpc::string target_;
- grpc_channel* c_channel_; // owned
+ grpc_channel *c_channel_; // owned
};
} // namespace grpc
diff --git a/src/cpp/client/channel_arguments.cc b/src/cpp/client/channel_arguments.cc
index eba9c1e..70713f0 100644
--- a/src/cpp/client/channel_arguments.cc
+++ b/src/cpp/client/channel_arguments.cc
@@ -37,7 +37,7 @@
namespace grpc {
-void ChannelArguments::SetSslTargetNameOverride(const grpc::string& name) {
+void ChannelArguments::SetSslTargetNameOverride(const grpc::string &name) {
SetString(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG, name);
}
@@ -50,32 +50,32 @@
return "";
}
-void ChannelArguments::SetInt(const grpc::string& key, int value) {
+void ChannelArguments::SetInt(const grpc::string &key, int value) {
grpc_arg arg;
arg.type = GRPC_ARG_INTEGER;
strings_.push_back(key);
- arg.key = const_cast<char*>(strings_.back().c_str());
+ arg.key = const_cast<char *>(strings_.back().c_str());
arg.value.integer = value;
args_.push_back(arg);
}
-void ChannelArguments::SetString(const grpc::string& key,
- const grpc::string& value) {
+void ChannelArguments::SetString(const grpc::string &key,
+ const grpc::string &value) {
grpc_arg arg;
arg.type = GRPC_ARG_STRING;
strings_.push_back(key);
- arg.key = const_cast<char*>(strings_.back().c_str());
+ arg.key = const_cast<char *>(strings_.back().c_str());
strings_.push_back(value);
- arg.value.string = const_cast<char*>(strings_.back().c_str());
+ arg.value.string = const_cast<char *>(strings_.back().c_str());
args_.push_back(arg);
}
-void ChannelArguments::SetChannelArgs(grpc_channel_args* channel_args) const {
+void ChannelArguments::SetChannelArgs(grpc_channel_args *channel_args) const {
channel_args->num_args = args_.size();
if (channel_args->num_args > 0) {
- channel_args->args = const_cast<grpc_arg*>(&args_[0]);
+ channel_args->args = const_cast<grpc_arg *>(&args_[0]);
}
}
diff --git a/src/cpp/client/client_context.cc b/src/cpp/client/client_context.cc
index 505b7d8..7bda2d0 100644
--- a/src/cpp/client/client_context.cc
+++ b/src/cpp/client/client_context.cc
@@ -50,7 +50,7 @@
if (cq_) {
grpc_completion_queue_shutdown(cq_);
// Drain cq_.
- grpc_event* ev;
+ grpc_event *ev;
grpc_completion_type t;
do {
ev = grpc_completion_queue_next(cq_, gpr_inf_future);
@@ -62,7 +62,7 @@
}
void ClientContext::set_absolute_deadline(
- const system_clock::time_point& deadline) {
+ const system_clock::time_point &deadline) {
Timepoint2Timespec(deadline, &absolute_deadline_);
}
@@ -70,8 +70,8 @@
return Timespec2Timepoint(absolute_deadline_);
}
-void ClientContext::AddMetadata(const grpc::string& meta_key,
- const grpc::string& meta_value) {
+void ClientContext::AddMetadata(const grpc::string &meta_key,
+ const grpc::string &meta_value) {
return;
}
diff --git a/src/cpp/client/create_channel.cc b/src/cpp/client/create_channel.cc
index 1a88d7f..9cc5cff 100644
--- a/src/cpp/client/create_channel.cc
+++ b/src/cpp/client/create_channel.cc
@@ -40,14 +40,14 @@
namespace grpc {
class ChannelArguments;
-std::shared_ptr<ChannelInterface> CreateChannel(const grpc::string& target,
- const ChannelArguments& args) {
+std::shared_ptr<ChannelInterface> CreateChannel(const grpc::string &target,
+ const ChannelArguments &args) {
return std::shared_ptr<ChannelInterface>(new Channel(target, args));
}
std::shared_ptr<ChannelInterface> CreateChannel(
- const grpc::string& target, const std::unique_ptr<Credentials>& creds,
- const ChannelArguments& args) {
+ const grpc::string &target, const std::unique_ptr<Credentials> &creds,
+ const ChannelArguments &args) {
return std::shared_ptr<ChannelInterface>(new Channel(target, creds, args));
}
} // namespace grpc
diff --git a/src/cpp/client/credentials.cc b/src/cpp/client/credentials.cc
index d81cf9f..8e3a988 100644
--- a/src/cpp/client/credentials.cc
+++ b/src/cpp/client/credentials.cc
@@ -40,40 +40,26 @@
namespace grpc {
-Credentials::Credentials(grpc_credentials* c_creds) : creds_(c_creds) {}
+Credentials::Credentials(grpc_credentials *c_creds) : creds_(c_creds) {}
Credentials::~Credentials() { grpc_credentials_release(creds_); }
-grpc_credentials* Credentials::GetRawCreds() { return creds_; }
+grpc_credentials *Credentials::GetRawCreds() { return creds_; }
std::unique_ptr<Credentials> CredentialsFactory::DefaultCredentials() {
- grpc_credentials* c_creds = grpc_default_credentials_create();
+ grpc_credentials *c_creds = grpc_default_credentials_create();
std::unique_ptr<Credentials> cpp_creds(new Credentials(c_creds));
return cpp_creds;
}
// Builds SSL Credentials given SSL specific options
std::unique_ptr<Credentials> CredentialsFactory::SslCredentials(
- const SslCredentialsOptions& options) {
- const unsigned char* pem_root_certs =
- options.pem_root_certs.empty() ? nullptr
- : reinterpret_cast<const unsigned char*>(
- options.pem_root_certs.c_str());
- if (pem_root_certs == nullptr) {
- return std::unique_ptr<Credentials>();
- }
- const unsigned char* pem_private_key =
- options.pem_private_key.empty() ? nullptr
- : reinterpret_cast<const unsigned char*>(
- options.pem_private_key.c_str());
- const unsigned char* pem_cert_chain =
- options.pem_cert_chain.empty() ? nullptr
- : reinterpret_cast<const unsigned char*>(
- options.pem_cert_chain.c_str());
+ const SslCredentialsOptions &options) {
+ grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {
+ options.pem_private_key.c_str(), options.pem_cert_chain.c_str()};
- grpc_credentials* c_creds = grpc_ssl_credentials_create(
- pem_root_certs, options.pem_root_certs.size(), pem_private_key,
- options.pem_private_key.size(), pem_cert_chain,
- options.pem_cert_chain.size());
+ grpc_credentials *c_creds = grpc_ssl_credentials_create(
+ options.pem_root_certs.empty() ? nullptr : options.pem_root_certs.c_str(),
+ options.pem_private_key.empty() ? nullptr : &pem_key_cert_pair);
std::unique_ptr<Credentials> cpp_creds(
c_creds == nullptr ? nullptr : new Credentials(c_creds));
return cpp_creds;
@@ -81,7 +67,7 @@
// Builds credentials for use when running in GCE
std::unique_ptr<Credentials> CredentialsFactory::ComputeEngineCredentials() {
- grpc_credentials* c_creds = grpc_compute_engine_credentials_create();
+ grpc_credentials *c_creds = grpc_compute_engine_credentials_create();
std::unique_ptr<Credentials> cpp_creds(
c_creds == nullptr ? nullptr : new Credentials(c_creds));
return cpp_creds;
@@ -89,11 +75,11 @@
// Builds service account credentials.
std::unique_ptr<Credentials> CredentialsFactory::ServiceAccountCredentials(
- const grpc::string& json_key, const grpc::string& scope,
+ const grpc::string &json_key, const grpc::string &scope,
std::chrono::seconds token_lifetime) {
gpr_timespec lifetime = gpr_time_from_seconds(
token_lifetime.count() > 0 ? token_lifetime.count() : 0);
- grpc_credentials* c_creds = grpc_service_account_credentials_create(
+ grpc_credentials *c_creds = grpc_service_account_credentials_create(
json_key.c_str(), scope.c_str(), lifetime);
std::unique_ptr<Credentials> cpp_creds(
c_creds == nullptr ? nullptr : new Credentials(c_creds));
@@ -102,9 +88,9 @@
// Builds IAM credentials.
std::unique_ptr<Credentials> CredentialsFactory::IAMCredentials(
- const grpc::string& authorization_token,
- const grpc::string& authority_selector) {
- grpc_credentials* c_creds = grpc_iam_credentials_create(
+ const grpc::string &authorization_token,
+ const grpc::string &authority_selector) {
+ grpc_credentials *c_creds = grpc_iam_credentials_create(
authorization_token.c_str(), authority_selector.c_str());
std::unique_ptr<Credentials> cpp_creds(
c_creds == nullptr ? nullptr : new Credentials(c_creds));
@@ -113,13 +99,13 @@
// Combines two credentials objects into a composite credentials.
std::unique_ptr<Credentials> CredentialsFactory::ComposeCredentials(
- const std::unique_ptr<Credentials>& creds1,
- const std::unique_ptr<Credentials>& creds2) {
+ const std::unique_ptr<Credentials> &creds1,
+ const std::unique_ptr<Credentials> &creds2) {
// Note that we are not saving unique_ptrs to the two credentials
// passed in here. This is OK because the underlying C objects (i.e.,
// creds1 and creds2) into grpc_composite_credentials_create will see their
// refcounts incremented.
- grpc_credentials* c_creds = grpc_composite_credentials_create(
+ grpc_credentials *c_creds = grpc_composite_credentials_create(
creds1->GetRawCreds(), creds2->GetRawCreds());
std::unique_ptr<Credentials> cpp_creds(
c_creds == nullptr ? nullptr : new Credentials(c_creds));
diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc
index 3b94dc3..85f859b 100644
--- a/src/cpp/proto/proto_utils.cc
+++ b/src/cpp/proto/proto_utils.cc
@@ -40,8 +40,8 @@
namespace grpc {
-bool SerializeProto(const google::protobuf::Message& msg,
- grpc_byte_buffer** bp) {
+bool SerializeProto(const google::protobuf::Message &msg,
+ grpc_byte_buffer **bp) {
grpc::string msg_str;
bool success = msg.SerializeToString(&msg_str);
if (success) {
@@ -53,13 +53,13 @@
return success;
}
-bool DeserializeProto(grpc_byte_buffer* buffer,
- google::protobuf::Message* msg) {
+bool DeserializeProto(grpc_byte_buffer *buffer,
+ google::protobuf::Message *msg) {
grpc::string msg_string;
- grpc_byte_buffer_reader* reader = grpc_byte_buffer_reader_create(buffer);
+ grpc_byte_buffer_reader *reader = grpc_byte_buffer_reader_create(buffer);
gpr_slice slice;
while (grpc_byte_buffer_reader_next(reader, &slice)) {
- const char* data = reinterpret_cast<const char*>(
+ const char *data = reinterpret_cast<const char *>(
slice.refcount ? slice.data.refcounted.bytes
: slice.data.inlined.bytes);
msg_string.append(data, slice.refcount ? slice.data.refcounted.length
diff --git a/src/cpp/proto/proto_utils.h b/src/cpp/proto/proto_utils.h
index ea472f9..a611a22 100644
--- a/src/cpp/proto/proto_utils.h
+++ b/src/cpp/proto/proto_utils.h
@@ -46,11 +46,11 @@
// Serialize the msg into a buffer created inside the function. The caller
// should destroy the returned buffer when done with it. If serialization fails,
// false is returned and buffer is left unchanged.
-bool SerializeProto(const google::protobuf::Message& msg,
- grpc_byte_buffer** buffer);
+bool SerializeProto(const google::protobuf::Message &msg,
+ grpc_byte_buffer **buffer);
// The caller keeps ownership of buffer and msg.
-bool DeserializeProto(grpc_byte_buffer* buffer, google::protobuf::Message* msg);
+bool DeserializeProto(grpc_byte_buffer *buffer, google::protobuf::Message *msg);
} // namespace grpc
diff --git a/src/cpp/server/async_server.cc b/src/cpp/server/async_server.cc
index aae2c82..d576201 100644
--- a/src/cpp/server/async_server.cc
+++ b/src/cpp/server/async_server.cc
@@ -39,7 +39,7 @@
namespace grpc {
-AsyncServer::AsyncServer(CompletionQueue* cc)
+AsyncServer::AsyncServer(CompletionQueue *cc)
: started_(false), shutdown_(false) {
server_ = grpc_server_create(cc->cq(), nullptr);
}
@@ -53,7 +53,7 @@
grpc_server_destroy(server_);
}
-void AsyncServer::AddPort(const grpc::string& addr) {
+void AsyncServer::AddPort(const grpc::string &addr) {
GPR_ASSERT(!started_);
int success = grpc_server_add_http2_port(server_, addr.c_str());
GPR_ASSERT(success);
diff --git a/src/cpp/server/async_server_context.cc b/src/cpp/server/async_server_context.cc
index 298936d..9295811 100644
--- a/src/cpp/server/async_server_context.cc
+++ b/src/cpp/server/async_server_context.cc
@@ -42,7 +42,7 @@
namespace grpc {
AsyncServerContext::AsyncServerContext(
- grpc_call* call, const grpc::string& method, const grpc::string& host,
+ grpc_call *call, const grpc::string &method, const grpc::string &host,
system_clock::time_point absolute_deadline)
: method_(method),
host_(host),
@@ -52,21 +52,21 @@
AsyncServerContext::~AsyncServerContext() { grpc_call_destroy(call_); }
-void AsyncServerContext::Accept(grpc_completion_queue* cq) {
+void AsyncServerContext::Accept(grpc_completion_queue *cq) {
GPR_ASSERT(grpc_call_server_accept(call_, cq, this) == GRPC_CALL_OK);
GPR_ASSERT(grpc_call_server_end_initial_metadata(call_, 0) == GRPC_CALL_OK);
}
-bool AsyncServerContext::StartRead(google::protobuf::Message* request) {
+bool AsyncServerContext::StartRead(google::protobuf::Message *request) {
GPR_ASSERT(request);
request_ = request;
grpc_call_error err = grpc_call_start_read(call_, this);
return err == GRPC_CALL_OK;
}
-bool AsyncServerContext::StartWrite(const google::protobuf::Message& response,
+bool AsyncServerContext::StartWrite(const google::protobuf::Message &response,
int flags) {
- grpc_byte_buffer* buffer = nullptr;
+ grpc_byte_buffer *buffer = nullptr;
if (!SerializeProto(response, &buffer)) {
return false;
}
@@ -75,16 +75,16 @@
return err == GRPC_CALL_OK;
}
-bool AsyncServerContext::StartWriteStatus(const Status& status) {
+bool AsyncServerContext::StartWriteStatus(const Status &status) {
grpc_call_error err = grpc_call_start_write_status(
call_, static_cast<grpc_status_code>(status.code()),
status.details().empty() ? nullptr
- : const_cast<char*>(status.details().c_str()),
+ : const_cast<char *>(status.details().c_str()),
this);
return err == GRPC_CALL_OK;
}
-bool AsyncServerContext::ParseRead(grpc_byte_buffer* read_buffer) {
+bool AsyncServerContext::ParseRead(grpc_byte_buffer *read_buffer) {
GPR_ASSERT(request_);
bool success = DeserializeProto(read_buffer, request_);
request_ = nullptr;
diff --git a/src/cpp/server/completion_queue.cc b/src/cpp/server/completion_queue.cc
index 56d165c..102a81b 100644
--- a/src/cpp/server/completion_queue.cc
+++ b/src/cpp/server/completion_queue.cc
@@ -48,8 +48,8 @@
void CompletionQueue::Shutdown() { grpc_completion_queue_shutdown(cq_); }
-CompletionQueue::CompletionType CompletionQueue::Next(void** tag) {
- grpc_event* ev;
+CompletionQueue::CompletionType CompletionQueue::Next(void **tag) {
+ grpc_event *ev;
CompletionType return_type;
bool success;
@@ -65,8 +65,8 @@
case GRPC_READ:
*tag = ev->tag;
if (ev->data.read) {
- success =
- static_cast<AsyncServerContext*>(ev->tag)->ParseRead(ev->data.read);
+ success = static_cast<AsyncServerContext *>(ev->tag)
+ ->ParseRead(ev->data.read);
return_type = success ? SERVER_READ_OK : SERVER_READ_ERROR;
} else {
return_type = SERVER_READ_ERROR;
diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index d85748e..193688e 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -49,7 +49,7 @@
// TODO(rocking): consider a better default value like num of cores.
static const int kNumThreads = 4;
-Server::Server(ThreadPoolInterface* thread_pool, ServerCredentials* creds)
+Server::Server(ThreadPoolInterface *thread_pool, ServerCredentials *creds)
: started_(false),
shutdown_(false),
num_running_cb_(0),
@@ -82,14 +82,14 @@
}
}
-void Server::RegisterService(RpcService* service) {
+void Server::RegisterService(RpcService *service) {
for (int i = 0; i < service->GetMethodCount(); ++i) {
- RpcServiceMethod* method = service->GetMethod(i);
+ RpcServiceMethod *method = service->GetMethod(i);
method_map_.insert(std::make_pair(method->name(), method));
}
}
-void Server::AddPort(const grpc::string& addr) {
+void Server::AddPort(const grpc::string &addr) {
GPR_ASSERT(!started_);
int success;
if (secure_) {
@@ -131,7 +131,7 @@
// Shutdown the completion queue.
cq_.Shutdown();
- void* tag = nullptr;
+ void *tag = nullptr;
CompletionQueue::CompletionType t = cq_.Next(&tag);
GPR_ASSERT(t == CompletionQueue::QUEUE_CLOSED);
}
@@ -147,18 +147,18 @@
void Server::RunRpc() {
// Wait for one more incoming rpc.
- void* tag = nullptr;
+ void *tag = nullptr;
AllowOneRpc();
CompletionQueue::CompletionType t = cq_.Next(&tag);
GPR_ASSERT(t == CompletionQueue::SERVER_RPC_NEW);
- AsyncServerContext* server_context = static_cast<AsyncServerContext*>(tag);
+ AsyncServerContext *server_context = static_cast<AsyncServerContext *>(tag);
// server_context could be nullptr during server shutdown.
if (server_context != nullptr) {
// Schedule a new callback to handle more rpcs.
ScheduleCallback();
- RpcServiceMethod* method = nullptr;
+ RpcServiceMethod *method = nullptr;
auto iter = method_map_.find(server_context->method());
if (iter != method_map_.end()) {
method = iter->second;
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index d74d8cb..add22cc 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -40,30 +40,30 @@
ServerBuilder::ServerBuilder() : thread_pool_(nullptr) {}
-void ServerBuilder::RegisterService(RpcService* service) {
+void ServerBuilder::RegisterService(RpcService *service) {
services_.push_back(service);
}
-void ServerBuilder::AddPort(const grpc::string& addr) {
+void ServerBuilder::AddPort(const grpc::string &addr) {
ports_.push_back(addr);
}
void ServerBuilder::SetCredentials(
- const std::shared_ptr<ServerCredentials>& creds) {
+ const std::shared_ptr<ServerCredentials> &creds) {
GPR_ASSERT(!creds_);
creds_ = creds;
}
-void ServerBuilder::SetThreadPool(ThreadPoolInterface* thread_pool) {
+void ServerBuilder::SetThreadPool(ThreadPoolInterface *thread_pool) {
thread_pool_ = thread_pool;
}
std::unique_ptr<Server> ServerBuilder::BuildAndStart() {
std::unique_ptr<Server> server(new Server(thread_pool_, creds_.get()));
- for (auto* service : services_) {
+ for (auto *service : services_) {
server->RegisterService(service);
}
- for (auto& port : ports_) {
+ for (auto &port : ports_) {
server->AddPort(port);
}
server->Start();
diff --git a/src/cpp/server/server_credentials.cc b/src/cpp/server/server_credentials.cc
index 5d899b1..ce0271b 100644
--- a/src/cpp/server/server_credentials.cc
+++ b/src/cpp/server/server_credentials.cc
@@ -37,34 +37,25 @@
namespace grpc {
-ServerCredentials::ServerCredentials(grpc_server_credentials* c_creds)
+ServerCredentials::ServerCredentials(grpc_server_credentials *c_creds)
: creds_(c_creds) {}
ServerCredentials::~ServerCredentials() {
grpc_server_credentials_release(creds_);
}
-grpc_server_credentials* ServerCredentials::GetRawCreds() { return creds_; }
+grpc_server_credentials *ServerCredentials::GetRawCreds() { return creds_; }
std::shared_ptr<ServerCredentials> ServerCredentialsFactory::SslCredentials(
- const SslServerCredentialsOptions& options) {
- const unsigned char* pem_root_certs =
- options.pem_root_certs.empty() ? nullptr
- : reinterpret_cast<const unsigned char*>(
- options.pem_root_certs.c_str());
- const unsigned char* pem_private_key =
- options.pem_private_key.empty() ? nullptr
- : reinterpret_cast<const unsigned char*>(
- options.pem_private_key.c_str());
- const unsigned char* pem_cert_chain =
- options.pem_cert_chain.empty() ? nullptr
- : reinterpret_cast<const unsigned char*>(
- options.pem_cert_chain.c_str());
-
- grpc_server_credentials* c_creds = grpc_ssl_server_credentials_create(
- pem_root_certs, options.pem_root_certs.size(), pem_private_key,
- options.pem_private_key.size(), pem_cert_chain,
- options.pem_cert_chain.size());
+ const SslServerCredentialsOptions &options) {
+ std::vector<grpc_ssl_pem_key_cert_pair> pem_key_cert_pairs;
+ for (const auto &key_cert_pair : options.pem_key_cert_pairs) {
+ pem_key_cert_pairs.push_back(
+ {key_cert_pair.private_key.c_str(), key_cert_pair.cert_chain.c_str()});
+ }
+ grpc_server_credentials *c_creds = grpc_ssl_server_credentials_create(
+ options.pem_root_certs.empty() ? nullptr : options.pem_root_certs.c_str(),
+ &pem_key_cert_pairs[0], pem_key_cert_pairs.size());
return std::shared_ptr<ServerCredentials>(new ServerCredentials(c_creds));
}
diff --git a/src/cpp/server/server_rpc_handler.cc b/src/cpp/server/server_rpc_handler.cc
index 42f8b75..061ac1c 100644
--- a/src/cpp/server/server_rpc_handler.cc
+++ b/src/cpp/server/server_rpc_handler.cc
@@ -41,8 +41,8 @@
namespace grpc {
-ServerRpcHandler::ServerRpcHandler(AsyncServerContext* async_server_context,
- RpcServiceMethod* method)
+ServerRpcHandler::ServerRpcHandler(AsyncServerContext *async_server_context,
+ RpcServiceMethod *method)
: async_server_context_(async_server_context), method_(method) {}
void ServerRpcHandler::StartRpc() {
@@ -71,7 +71,7 @@
GPR_ASSERT(type == CompletionQueue::SERVER_READ_OK);
// Run the application's rpc handler
- MethodHandler* handler = method_->handler();
+ MethodHandler *handler = method_->handler();
Status status = handler->RunHandler(MethodHandler::HandlerParameter(
&user_context, request.get(), response.get()));
@@ -97,7 +97,7 @@
cq_.cq(), request.get(), response.get());
// Run the application's rpc handler
- MethodHandler* handler = method_->handler();
+ MethodHandler *handler = method_->handler();
Status status = handler->RunHandler(MethodHandler::HandlerParameter(
&user_context, request.get(), response.get(), &stream_context));
if (status.IsOk() &&
@@ -110,17 +110,17 @@
}
CompletionQueue::CompletionType ServerRpcHandler::WaitForNextEvent() {
- void* tag = nullptr;
+ void *tag = nullptr;
CompletionQueue::CompletionType type = cq_.Next(&tag);
if (type != CompletionQueue::QUEUE_CLOSED &&
type != CompletionQueue::RPC_END) {
- GPR_ASSERT(static_cast<AsyncServerContext*>(tag) ==
+ GPR_ASSERT(static_cast<AsyncServerContext *>(tag) ==
async_server_context_.get());
}
return type;
}
-void ServerRpcHandler::FinishRpc(const Status& status) {
+void ServerRpcHandler::FinishRpc(const Status &status) {
async_server_context_->StartWriteStatus(status);
CompletionQueue::CompletionType type;
diff --git a/src/cpp/server/server_rpc_handler.h b/src/cpp/server/server_rpc_handler.h
index 249576d..a43e07d 100644
--- a/src/cpp/server/server_rpc_handler.h
+++ b/src/cpp/server/server_rpc_handler.h
@@ -47,17 +47,17 @@
class ServerRpcHandler {
public:
// Takes ownership of async_server_context.
- ServerRpcHandler(AsyncServerContext* async_server_context,
- RpcServiceMethod* method);
+ ServerRpcHandler(AsyncServerContext *async_server_context,
+ RpcServiceMethod *method);
void StartRpc();
private:
CompletionQueue::CompletionType WaitForNextEvent();
- void FinishRpc(const Status& status);
+ void FinishRpc(const Status &status);
std::unique_ptr<AsyncServerContext> async_server_context_;
- RpcServiceMethod* method_;
+ RpcServiceMethod *method_;
CompletionQueue cq_;
};
diff --git a/src/cpp/server/thread_pool.cc b/src/cpp/server/thread_pool.cc
index ce364c4..a46d4c6 100644
--- a/src/cpp/server/thread_pool.cc
+++ b/src/cpp/server/thread_pool.cc
@@ -63,12 +63,12 @@
shutdown_ = true;
cv_.notify_all();
}
- for (auto& t : threads_) {
+ for (auto &t : threads_) {
t.join();
}
}
-void ThreadPool::ScheduleCallback(const std::function<void()>& callback) {
+void ThreadPool::ScheduleCallback(const std::function<void()> &callback) {
std::lock_guard<std::mutex> lock(mu_);
callbacks_.push(callback);
cv_.notify_all();
diff --git a/src/cpp/server/thread_pool.h b/src/cpp/server/thread_pool.h
index 6fc71d6..c53f7a7 100644
--- a/src/cpp/server/thread_pool.h
+++ b/src/cpp/server/thread_pool.h
@@ -49,7 +49,7 @@
explicit ThreadPool(int num_threads);
~ThreadPool();
- void ScheduleCallback(const std::function<void()>& callback) final;
+ void ScheduleCallback(const std::function<void()> &callback) final;
private:
std::mutex mu_;
diff --git a/src/cpp/stream/stream_context.cc b/src/cpp/stream/stream_context.cc
index 5ccf8c9..e64010b 100644
--- a/src/cpp/stream/stream_context.cc
+++ b/src/cpp/stream/stream_context.cc
@@ -44,14 +44,14 @@
namespace grpc {
// Client only ctor
-StreamContext::StreamContext(const RpcMethod& method, ClientContext* context,
- const google::protobuf::Message* request,
- google::protobuf::Message* result)
+StreamContext::StreamContext(const RpcMethod &method, ClientContext *context,
+ const google::protobuf::Message *request,
+ google::protobuf::Message *result)
: is_client_(true),
method_(&method),
call_(context->call()),
cq_(context->cq()),
- request_(const_cast<google::protobuf::Message*>(request)),
+ request_(const_cast<google::protobuf::Message *>(request)),
result_(result),
peer_halfclosed_(false),
self_halfclosed_(false) {
@@ -59,10 +59,10 @@
}
// Server only ctor
-StreamContext::StreamContext(const RpcMethod& method, grpc_call* call,
- grpc_completion_queue* cq,
- google::protobuf::Message* request,
- google::protobuf::Message* result)
+StreamContext::StreamContext(const RpcMethod &method, grpc_call *call,
+ grpc_completion_queue *cq,
+ google::protobuf::Message *request,
+ google::protobuf::Message *result)
: is_client_(false),
method_(&method),
call_(call),
@@ -84,7 +84,7 @@
client_metadata_read_tag(),
finished_tag(), flag);
GPR_ASSERT(GRPC_CALL_OK == error);
- grpc_event* invoke_ev =
+ grpc_event *invoke_ev =
grpc_completion_queue_pluck(cq(), invoke_tag(), gpr_inf_future);
if (invoke_ev->data.invoke_accepted != GRPC_OP_OK) {
peer_halfclosed_ = true;
@@ -101,11 +101,11 @@
}
}
-bool StreamContext::Read(google::protobuf::Message* msg) {
+bool StreamContext::Read(google::protobuf::Message *msg) {
// TODO(yangg) check peer_halfclosed_ here for possible early return.
grpc_call_error err = grpc_call_start_read(call(), read_tag());
GPR_ASSERT(err == GRPC_CALL_OK);
- grpc_event* read_ev =
+ grpc_event *read_ev =
grpc_completion_queue_pluck(cq(), read_tag(), gpr_inf_future);
GPR_ASSERT(read_ev->type == GRPC_READ);
bool ret = true;
@@ -123,13 +123,13 @@
return ret;
}
-bool StreamContext::Write(const google::protobuf::Message* msg, bool is_last) {
+bool StreamContext::Write(const google::protobuf::Message *msg, bool is_last) {
// TODO(yangg) check self_halfclosed_ for possible early return.
bool ret = true;
- grpc_event* ev = nullptr;
+ grpc_event *ev = nullptr;
if (msg) {
- grpc_byte_buffer* out_buf = nullptr;
+ grpc_byte_buffer *out_buf = nullptr;
if (!SerializeProto(*msg, &out_buf)) {
grpc_call_cancel_with_status(call(), GRPC_STATUS_INVALID_ARGUMENT,
"Failed to serialize outgoing proto");
@@ -163,16 +163,16 @@
return ret;
}
-const Status& StreamContext::Wait() {
+const Status &StreamContext::Wait() {
// TODO(yangg) properly support metadata
- grpc_event* metadata_ev = grpc_completion_queue_pluck(
+ grpc_event *metadata_ev = grpc_completion_queue_pluck(
cq(), client_metadata_read_tag(), gpr_inf_future);
grpc_event_finish(metadata_ev);
// TODO(yangg) protect states by a mutex, including other places.
if (!self_halfclosed_ || !peer_halfclosed_) {
Cancel();
}
- grpc_event* finish_ev =
+ grpc_event *finish_ev =
grpc_completion_queue_pluck(cq(), finished_tag(), gpr_inf_future);
GPR_ASSERT(finish_ev->type == GRPC_FINISHED);
final_status_ = Status(
diff --git a/src/cpp/stream/stream_context.h b/src/cpp/stream/stream_context.h
index 4781f27..8697d86 100644
--- a/src/cpp/stream/stream_context.h
+++ b/src/cpp/stream/stream_context.h
@@ -50,43 +50,45 @@
class StreamContext final : public StreamContextInterface {
public:
- StreamContext(const RpcMethod& method, ClientContext* context,
- const google::protobuf::Message* request,
- google::protobuf::Message* result);
- StreamContext(const RpcMethod& method, grpc_call* call,
- grpc_completion_queue* cq, google::protobuf::Message* request,
- google::protobuf::Message* result);
+ StreamContext(const RpcMethod &method, ClientContext *context,
+ const google::protobuf::Message *request,
+ google::protobuf::Message *result);
+ StreamContext(const RpcMethod &method, grpc_call *call,
+ grpc_completion_queue *cq, google::protobuf::Message *request,
+ google::protobuf::Message *result);
~StreamContext();
// Start the stream, if there is a final write following immediately, set
// buffered so that the messages can be sent in batch.
void Start(bool buffered) override;
- bool Read(google::protobuf::Message* msg) override;
- bool Write(const google::protobuf::Message* msg, bool is_last) override;
- const Status& Wait() override;
+ bool Read(google::protobuf::Message *msg) override;
+ bool Write(const google::protobuf::Message *msg, bool is_last) override;
+ const Status &Wait() override;
void Cancel() override;
- google::protobuf::Message* request() override { return request_; }
- google::protobuf::Message* response() override { return result_; }
+ google::protobuf::Message *request() override { return request_; }
+ google::protobuf::Message *response() override { return result_; }
private:
// Unique tags for plucking events from the c layer. this pointer is casted
// to char* to create single byte step between tags. It implicitly relies on
// that StreamContext is large enough to contain all the pointers.
- void* finished_tag() { return reinterpret_cast<char*>(this); }
- void* read_tag() { return reinterpret_cast<char*>(this) + 1; }
- void* write_tag() { return reinterpret_cast<char*>(this) + 2; }
- void* halfclose_tag() { return reinterpret_cast<char*>(this) + 3; }
- void* invoke_tag() { return reinterpret_cast<char*>(this) + 4; }
- void* client_metadata_read_tag() { return reinterpret_cast<char*>(this) + 5; }
- grpc_call* call() { return call_; }
- grpc_completion_queue* cq() { return cq_; }
+ void *finished_tag() { return reinterpret_cast<char *>(this); }
+ void *read_tag() { return reinterpret_cast<char *>(this) + 1; }
+ void *write_tag() { return reinterpret_cast<char *>(this) + 2; }
+ void *halfclose_tag() { return reinterpret_cast<char *>(this) + 3; }
+ void *invoke_tag() { return reinterpret_cast<char *>(this) + 4; }
+ void *client_metadata_read_tag() {
+ return reinterpret_cast<char *>(this) + 5;
+ }
+ grpc_call *call() { return call_; }
+ grpc_completion_queue *cq() { return cq_; }
bool is_client_;
- const RpcMethod* method_; // not owned
- grpc_call* call_; // not owned
- grpc_completion_queue* cq_; // not owned
- google::protobuf::Message* request_; // first request, not owned
- google::protobuf::Message* result_; // last response, not owned
+ const RpcMethod *method_; // not owned
+ grpc_call *call_; // not owned
+ grpc_completion_queue *cq_; // not owned
+ google::protobuf::Message *request_; // first request, not owned
+ google::protobuf::Message *result_; // last response, not owned
bool peer_halfclosed_;
bool self_halfclosed_;
diff --git a/src/cpp/util/status.cc b/src/cpp/util/status.cc
index e7ca41b..1ca12d0 100644
--- a/src/cpp/util/status.cc
+++ b/src/cpp/util/status.cc
@@ -35,7 +35,7 @@
namespace grpc {
-const Status& Status::OK = Status();
-const Status& Status::Cancelled = Status(StatusCode::CANCELLED);
+const Status &Status::OK = Status();
+const Status &Status::Cancelled = Status(StatusCode::CANCELLED);
} // namespace grpc
diff --git a/src/cpp/util/time.cc b/src/cpp/util/time.cc
index e58dde8..7ce7a37 100644
--- a/src/cpp/util/time.cc
+++ b/src/cpp/util/time.cc
@@ -43,8 +43,8 @@
namespace grpc {
// TODO(yangg) prevent potential overflow.
-void Timepoint2Timespec(const system_clock::time_point& from,
- gpr_timespec* to) {
+void Timepoint2Timespec(const system_clock::time_point &from,
+ gpr_timespec *to) {
system_clock::duration deadline = from.time_since_epoch();
seconds secs = duration_cast<seconds>(deadline);
nanoseconds nsecs = duration_cast<nanoseconds>(deadline - secs);
diff --git a/src/cpp/util/time.h b/src/cpp/util/time.h
index 338c4f5..908395c 100644
--- a/src/cpp/util/time.h
+++ b/src/cpp/util/time.h
@@ -41,8 +41,8 @@
namespace grpc {
// from and to should be absolute time.
-void Timepoint2Timespec(const std::chrono::system_clock::time_point& from,
- gpr_timespec* to);
+void Timepoint2Timespec(const std::chrono::system_clock::time_point &from,
+ gpr_timespec *to);
std::chrono::system_clock::time_point Timespec2Timepoint(gpr_timespec t);
diff --git a/src/node/binding.gyp b/src/node/binding.gyp
index 4a1fd7a..da4a943 100644
--- a/src/node/binding.gyp
+++ b/src/node/binding.gyp
@@ -19,9 +19,6 @@
'link_settings': {
'libraries': [
'-lgrpc',
- '-levent',
- '-levent_pthreads',
- '-levent_core',
'-lrt',
'-lgpr',
'-lpthread'
diff --git a/src/node/client.js b/src/node/client.js
index edaa115..f913b06 100644
--- a/src/node/client.js
+++ b/src/node/client.js
@@ -45,10 +45,22 @@
* from stream.Duplex.
* @constructor
* @param {grpc.Call} call Call object to proxy
- * @param {object} options Stream options
+ * @param {function(*):Buffer=} serialize Serialization function for requests
+ * @param {function(Buffer):*=} deserialize Deserialization function for
+ * responses
*/
-function GrpcClientStream(call, options) {
- Duplex.call(this, options);
+function GrpcClientStream(call, serialize, deserialize) {
+ Duplex.call(this, {objectMode: true});
+ if (!serialize) {
+ serialize = function(value) {
+ return value;
+ };
+ }
+ if (!deserialize) {
+ deserialize = function(value) {
+ return value;
+ };
+ }
var self = this;
// Indicates that we can start reading and have not received a null read
var can_read = false;
@@ -59,6 +71,32 @@
// Indicates that a write is currently pending
var writing = false;
this._call = call;
+
+ /**
+ * Serialize a request value to a buffer. Always maps null to null. Otherwise
+ * uses the provided serialize function
+ * @param {*} value The value to serialize
+ * @return {Buffer} The serialized value
+ */
+ this.serialize = function(value) {
+ if (value === null || value === undefined) {
+ return null;
+ }
+ return serialize(value);
+ };
+
+ /**
+ * Deserialize a response buffer to a value. Always maps null to null.
+ * Otherwise uses the provided deserialize function.
+ * @param {Buffer} buffer The buffer to deserialize
+ * @return {*} The deserialized value
+ */
+ this.deserialize = function(buffer) {
+ if (buffer === null) {
+ return null;
+ }
+ return deserialize(buffer);
+ };
/**
* Callback to handle receiving a READ event. Pushes the data from that event
* onto the read queue and starts reading again if applicable.
@@ -66,7 +104,7 @@
*/
function readCallback(event) {
var data = event.data;
- if (self.push(data)) {
+ if (self.push(self.deserialize(data))) {
if (data == null) {
// Disable starting to read after null read was received
can_read = false;
@@ -102,7 +140,7 @@
next.callback();
writeNext();
};
- call.startWrite(next.chunk, writeCallback, 0);
+ call.startWrite(self.serialize(next.chunk), writeCallback, 0);
} else {
writing = false;
}
@@ -171,6 +209,9 @@
* Make a request on the channel to the given method with the given arguments
* @param {grpc.Channel} channel The channel on which to make the request
* @param {string} method The method to request
+ * @param {function(*):Buffer} serialize Serialization function for requests
+ * @param {function(Buffer):*} deserialize Deserialization function for
+ * responses
* @param {array=} metadata Array of metadata key/value pairs to add to the call
* @param {(number|Date)=} deadline The deadline for processing this request.
* Defaults to infinite future.
@@ -178,6 +219,8 @@
*/
function makeRequest(channel,
method,
+ serialize,
+ deserialize,
metadata,
deadline) {
if (deadline === undefined) {
diff --git a/src/node/common.js b/src/node/common.js
index 656a4ac..54247e3 100644
--- a/src/node/common.js
+++ b/src/node/common.js
@@ -31,6 +31,8 @@
*
*/
+var capitalize = require('underscore.string/capitalize');
+
/**
* Get a function that deserializes a specific type of protobuf.
* @param {function()} cls The constructor of the message type to deserialize
@@ -73,6 +75,9 @@
return '';
}
var name = value.name;
+ if (value.className === 'Service.RPCMethod') {
+ name = capitalize(name);
+ }
if (value.hasOwnProperty('parent')) {
var parent_name = fullyQualifiedName(value.parent);
if (parent_name !== '') {
diff --git a/src/node/credentials.cc b/src/node/credentials.cc
index d58b7ed..f9cd2fc 100644
--- a/src/node/credentials.cc
+++ b/src/node/credentials.cc
@@ -136,33 +136,29 @@
NAN_METHOD(Credentials::CreateSsl) {
NanScope();
- char *root_certs;
- char *private_key = NULL;
- char *cert_chain = NULL;
- int root_certs_length, private_key_length = 0, cert_chain_length = 0;
- if (!Buffer::HasInstance(args[0])) {
+ char *root_certs = NULL;
+ grpc_ssl_pem_key_cert_pair key_cert_pair = {NULL, NULL};
+ if (Buffer::HasInstance(args[0])) {
+ root_certs = Buffer::Data(args[0]);
+ } else if (!(args[0]->IsNull() || args[0]->IsUndefined())) {
return NanThrowTypeError("createSsl's first argument must be a Buffer");
}
- root_certs = Buffer::Data(args[0]);
- root_certs_length = Buffer::Length(args[0]);
if (Buffer::HasInstance(args[1])) {
- private_key = Buffer::Data(args[1]);
- private_key_length = Buffer::Length(args[1]);
+ key_cert_pair.private_key = Buffer::Data(args[1]);
} else if (!(args[1]->IsNull() || args[1]->IsUndefined())) {
return NanThrowTypeError(
"createSSl's second argument must be a Buffer if provided");
}
if (Buffer::HasInstance(args[2])) {
- cert_chain = Buffer::Data(args[2]);
- cert_chain_length = Buffer::Length(args[2]);
+ key_cert_pair.cert_chain = Buffer::Data(args[2]);
} else if (!(args[2]->IsNull() || args[2]->IsUndefined())) {
return NanThrowTypeError(
"createSSl's third argument must be a Buffer if provided");
}
+
NanReturnValue(WrapStruct(grpc_ssl_credentials_create(
- reinterpret_cast<unsigned char *>(root_certs), root_certs_length,
- reinterpret_cast<unsigned char *>(private_key), private_key_length,
- reinterpret_cast<unsigned char *>(cert_chain), cert_chain_length)));
+ root_certs,
+ key_cert_pair.private_key == NULL ? NULL : &key_cert_pair)));
}
NAN_METHOD(Credentials::CreateComposite) {
diff --git a/src/node/examples/math_server.js b/src/node/examples/math_server.js
index 366513d..d649b4f 100644
--- a/src/node/examples/math_server.js
+++ b/src/node/examples/math_server.js
@@ -119,10 +119,10 @@
var server = new Server({
'math.Math' : {
- Div: mathDiv,
- Fib: mathFib,
- Sum: mathSum,
- DivMany: mathDivMany
+ div: mathDiv,
+ fib: mathFib,
+ sum: mathSum,
+ divMany: mathDivMany
}
});
diff --git a/src/node/interop/empty.proto b/src/node/interop/empty.proto
new file mode 100644
index 0000000..c9920a2
--- /dev/null
+++ b/src/node/interop/empty.proto
@@ -0,0 +1,19 @@
+syntax = "proto2";
+
+package grpc.testing;
+
+// An empty message that you can re-use to avoid defining duplicated empty
+// messages in your project. A typical example is to use it as argument or the
+// return value of a service API. For instance:
+//
+// service Foo {
+// rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { };
+// };
+//
+// MOE:begin_strip
+// The difference between this one and net/rpc/empty-message.proto is that
+// 1) The generated message here is in proto2 C++ API.
+// 2) The proto2.Empty has minimum dependencies
+// (no message_set or net/rpc dependencies)
+// MOE:end_strip
+message Empty {}
diff --git a/src/node/interop/interop_client.js b/src/node/interop/interop_client.js
new file mode 100644
index 0000000..cf75b9a
--- /dev/null
+++ b/src/node/interop/interop_client.js
@@ -0,0 +1,274 @@
+/*
+ *
+ * Copyright 2014, 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.
+ *
+ */
+
+var fs = require('fs');
+var path = require('path');
+var grpc = require('..');
+var testProto = grpc.load(__dirname + '/test.proto').grpc.testing;
+
+var assert = require('assert');
+
+/**
+ * Create a buffer filled with size zeroes
+ * @param {number} size The length of the buffer
+ * @return {Buffer} The new buffer
+ */
+function zeroBuffer(size) {
+ var zeros = new Buffer(size);
+ zeros.fill(0);
+ return zeros;
+}
+
+/**
+ * Run the empty_unary test
+ * @param {Client} client The client to test against
+ * @param {function} done Callback to call when the test is completed. Included
+ * primarily for use with mocha
+ */
+function emptyUnary(client, done) {
+ var call = client.emptyCall({}, function(err, resp) {
+ assert.ifError(err);
+ });
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.OK);
+ if (done) {
+ done();
+ }
+ });
+}
+
+/**
+ * Run the large_unary test
+ * @param {Client} client The client to test against
+ * @param {function} done Callback to call when the test is completed. Included
+ * primarily for use with mocha
+ */
+function largeUnary(client, done) {
+ var arg = {
+ response_type: testProto.PayloadType.COMPRESSABLE,
+ response_size: 314159,
+ payload: {
+ body: zeroBuffer(271828)
+ }
+ };
+ var call = client.unaryCall(arg, function(err, resp) {
+ assert.ifError(err);
+ assert.strictEqual(resp.payload.type, testProto.PayloadType.COMPRESSABLE);
+ assert.strictEqual(resp.payload.body.limit - resp.payload.body.offset,
+ 314159);
+ });
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.OK);
+ if (done) {
+ done();
+ }
+ });
+}
+
+/**
+ * Run the client_streaming test
+ * @param {Client} client The client to test against
+ * @param {function} done Callback to call when the test is completed. Included
+ * primarily for use with mocha
+ */
+function clientStreaming(client, done) {
+ var call = client.streamingInputCall(function(err, resp) {
+ assert.ifError(err);
+ assert.strictEqual(resp.aggregated_payload_size, 74922);
+ });
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.OK);
+ if (done) {
+ done();
+ }
+ });
+ var payload_sizes = [27182, 8, 1828, 45904];
+ for (var i = 0; i < payload_sizes.length; i++) {
+ call.write({payload: {body: zeroBuffer(payload_sizes[i])}});
+ }
+ call.end();
+}
+
+/**
+ * Run the server_streaming test
+ * @param {Client} client The client to test against
+ * @param {function} done Callback to call when the test is completed. Included
+ * primarily for use with mocha
+ */
+function serverStreaming(client, done) {
+ var arg = {
+ response_type: testProto.PayloadType.COMPRESSABLE,
+ response_parameters: [
+ {size: 31415},
+ {size: 9},
+ {size: 2653},
+ {size: 58979}
+ ]
+ };
+ var call = client.streamingOutputCall(arg);
+ var resp_index = 0;
+ call.on('data', function(value) {
+ assert(resp_index < 4);
+ assert.strictEqual(value.payload.type, testProto.PayloadType.COMPRESSABLE);
+ assert.strictEqual(value.payload.body.limit - value.payload.body.offset,
+ arg.response_parameters[resp_index].size);
+ resp_index += 1;
+ });
+ call.on('status', function(status) {
+ assert.strictEqual(resp_index, 4);
+ assert.strictEqual(status.code, grpc.status.OK);
+ if (done) {
+ done();
+ }
+ });
+}
+
+/**
+ * Run the ping_pong test
+ * @param {Client} client The client to test against
+ * @param {function} done Callback to call when the test is completed. Included
+ * primarily for use with mocha
+ */
+function pingPong(client, done) {
+ var payload_sizes = [27182, 8, 1828, 45904];
+ var response_sizes = [31415, 9, 2653, 58979];
+ var call = client.fullDuplexCall();
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.OK);
+ if (done) {
+ done();
+ }
+ });
+ var index = 0;
+ call.write({
+ response_type: testProto.PayloadType.COMPRESSABLE,
+ response_parameters: [
+ {size: response_sizes[index]}
+ ],
+ payload: {body: zeroBuffer(payload_sizes[index])}
+ });
+ call.on('data', function(response) {
+ assert.strictEqual(response.payload.type,
+ testProto.PayloadType.COMPRESSABLE);
+ assert.equal(response.payload.body.limit - response.payload.body.offset,
+ response_sizes[index]);
+ index += 1;
+ if (index == 4) {
+ call.end();
+ } else {
+ call.write({
+ response_type: testProto.PayloadType.COMPRESSABLE,
+ response_parameters: [
+ {size: response_sizes[index]}
+ ],
+ payload: {body: zeroBuffer(payload_sizes[index])}
+ });
+ }
+ });
+}
+
+/**
+ * Run the empty_stream test.
+ * NOTE: This does not work, but should with the new invoke API
+ * @param {Client} client The client to test against
+ * @param {function} done Callback to call when the test is completed. Included
+ * primarily for use with mocha
+ */
+function emptyStream(client, done) {
+ var call = client.fullDuplexCall();
+ call.on('status', function(status) {
+ assert.strictEqual(status.code, grpc.status.OK);
+ if (done) {
+ done();
+ }
+ });
+ call.on('data', function(value) {
+ assert.fail(value, null, 'No data should have been received', '!==');
+ });
+ call.end();
+}
+
+/**
+ * Map from test case names to test functions
+ */
+var test_cases = {
+ empty_unary: emptyUnary,
+ large_unary: largeUnary,
+ client_streaming: clientStreaming,
+ server_streaming: serverStreaming,
+ ping_pong: pingPong,
+ empty_stream: emptyStream
+};
+
+/**
+ * Execute a single test case.
+ * @param {string} address The address of the server to connect to, in the
+ * format "hostname:port"
+ * @param {string} host_overrirde The hostname of the server to use as an SSL
+ * override
+ * @param {string} test_case The name of the test case to run
+ * @param {bool} tls Indicates that a secure channel should be used
+ * @param {function} done Callback to call when the test is completed. Included
+ * primarily for use with mocha
+ */
+function runTest(address, host_override, test_case, tls, done) {
+ // TODO(mlumish): enable TLS functionality
+ var options = {};
+ if (tls) {
+ var ca_path = path.join(__dirname, '../test/data/ca.pem');
+ var ca_data = fs.readFileSync(ca_path);
+ var creds = grpc.Credentials.createSsl(ca_data);
+ options.credentials = creds;
+ if (host_override) {
+ options['grpc.ssl_target_name_override'] = host_override;
+ }
+ }
+ var client = new testProto.TestService(address, options);
+
+ test_cases[test_case](client, done);
+}
+
+if (require.main === module) {
+ var parseArgs = require('minimist');
+ var argv = parseArgs(process.argv, {
+ string: ['server_host', 'server_host_override', 'server_port', 'test_case',
+ 'use_tls', 'use_test_ca']
+ });
+ runTest(argv.server_host + ':' + argv.server_port, argv.server_host_override,
+ argv.test_case, argv.use_tls === 'true');
+}
+
+/**
+ * See docs for runTest
+ */
+exports.runTest = runTest;
diff --git a/src/node/interop/interop_server.js b/src/node/interop/interop_server.js
new file mode 100644
index 0000000..6d2bd7a
--- /dev/null
+++ b/src/node/interop/interop_server.js
@@ -0,0 +1,203 @@
+/*
+ *
+ * Copyright 2014, 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.
+ *
+ */
+
+var fs = require('fs');
+var path = require('path');
+var _ = require('underscore');
+var grpc = require('..');
+var testProto = grpc.load(__dirname + '/test.proto').grpc.testing;
+var Server = grpc.buildServer([testProto.TestService.service]);
+
+/**
+ * Create a buffer filled with size zeroes
+ * @param {number} size The length of the buffer
+ * @return {Buffer} The new buffer
+ */
+function zeroBuffer(size) {
+ var zeros = new Buffer(size);
+ zeros.fill(0);
+ return zeros;
+}
+
+/**
+ * Respond to an empty parameter with an empty response.
+ * NOTE: this currently does not work due to issue #137
+ * @param {Call} call Call to handle
+ * @param {function(Error, Object)} callback Callback to call with result
+ * or error
+ */
+function handleEmpty(call, callback) {
+ callback(null, {});
+}
+
+/**
+ * Handle a unary request by sending the requested payload
+ * @param {Call} call Call to handle
+ * @param {function(Error, Object)} callback Callback to call with result or
+ * error
+ */
+function handleUnary(call, callback) {
+ var req = call.request;
+ var zeros = zeroBuffer(req.response_size);
+ var payload_type = req.response_type;
+ if (payload_type === testProto.PayloadType.RANDOM) {
+ payload_type = [
+ testProto.PayloadType.COMPRESSABLE,
+ testProto.PayloadType.UNCOMPRESSABLE][Math.random() < 0.5 ? 0 : 1];
+ }
+ callback(null, {payload: {type: payload_type, body: zeros}});
+}
+
+/**
+ * Respond to a streaming call with the total size of all payloads
+ * @param {Call} call Call to handle
+ * @param {function(Error, Object)} callback Callback to call with result or
+ * error
+ */
+function handleStreamingInput(call, callback) {
+ var aggregate_size = 0;
+ call.on('data', function(value) {
+ aggregate_size += value.payload.body.limit - value.payload.body.offset;
+ });
+ call.on('end', function() {
+ callback(null, {aggregated_payload_size: aggregate_size});
+ });
+}
+
+/**
+ * Respond to a payload request with a stream of the requested payloads
+ * @param {Call} call Call to handle
+ */
+function handleStreamingOutput(call) {
+ var req = call.request;
+ var payload_type = req.response_type;
+ if (payload_type === testProto.PayloadType.RANDOM) {
+ payload_type = [
+ testProto.PayloadType.COMPRESSABLE,
+ testProto.PayloadType.UNCOMPRESSABLE][Math.random() < 0.5 ? 0 : 1];
+ }
+ _.each(req.response_parameters, function(resp_param) {
+ call.write({
+ payload: {
+ body: zeroBuffer(resp_param.size),
+ type: payload_type
+ }
+ });
+ });
+ call.end();
+}
+
+/**
+ * Respond to a stream of payload requests with a stream of payload responses as
+ * they arrive.
+ * @param {Call} call Call to handle
+ */
+function handleFullDuplex(call) {
+ call.on('data', function(value) {
+ var payload_type = value.response_type;
+ if (payload_type === testProto.PayloadType.RANDOM) {
+ payload_type = [
+ testProto.PayloadType.COMPRESSABLE,
+ testProto.PayloadType.UNCOMPRESSABLE][Math.random() < 0.5 ? 0 : 1];
+ }
+ _.each(value.response_parameters, function(resp_param) {
+ call.write({
+ payload: {
+ body: zeroBuffer(resp_param.size),
+ type: payload_type
+ }
+ });
+ });
+ });
+ call.on('end', function() {
+ call.end();
+ });
+}
+
+/**
+ * Respond to a stream of payload requests with a stream of payload responses
+ * after all requests have arrived
+ * @param {Call} call Call to handle
+ */
+function handleHalfDuplex(call) {
+ throw new Error('HalfDuplexCall not yet implemented');
+}
+
+/**
+ * Get a server object bound to the given port
+ * @param {string} port Port to which to bind
+ * @param {boolean} tls Indicates that the bound port should use TLS
+ * @return {{server: Server, port: number}} Server object bound to the support,
+ * and port number that the server is bound to
+ */
+function getServer(port, tls) {
+ // TODO(mlumish): enable TLS functionality
+ var options = {};
+ if (tls) {
+ var key_path = path.join(__dirname, '../test/data/server1.key');
+ var pem_path = path.join(__dirname, '../test/data/server1.pem');
+
+ var key_data = fs.readFileSync(key_path);
+ var pem_data = fs.readFileSync(pem_path);
+ var server_creds = grpc.ServerCredentials.createSsl(null,
+ key_data,
+ pem_data);
+ options.credentials = server_creds;
+ }
+ var server = new Server({
+ 'grpc.testing.TestService' : {
+ emptyCall: handleEmpty,
+ unaryCall: handleUnary,
+ streamingOutputCall: handleStreamingOutput,
+ streamingInputCall: handleStreamingInput,
+ fullDuplexCall: handleFullDuplex,
+ halfDuplexCall: handleHalfDuplex
+ }
+ }, options);
+ var port_num = server.bind('0.0.0.0:' + port, tls);
+ return {server: server, port: port_num};
+}
+
+if (require.main === module) {
+ var parseArgs = require('minimist');
+ var argv = parseArgs(process.argv, {
+ string: ['port', 'use_tls']
+ });
+ var server_obj = getServer(argv.port, argv.use_tls === 'true');
+ server_obj.server.start();
+}
+
+/**
+ * See docs for getServer
+ */
+exports.getServer = getServer;
diff --git a/src/node/interop/messages.proto b/src/node/interop/messages.proto
new file mode 100644
index 0000000..29db0dd
--- /dev/null
+++ b/src/node/interop/messages.proto
@@ -0,0 +1,94 @@
+// Message definitions to be used by integration test service definitions.
+
+syntax = "proto2";
+
+package grpc.testing;
+
+// The type of payload that should be returned.
+enum PayloadType {
+ // Compressable text format.
+ COMPRESSABLE = 0;
+
+ // Uncompressable binary format.
+ UNCOMPRESSABLE = 1;
+
+ // Randomly chosen from all other formats defined in this enum.
+ RANDOM = 2;
+}
+
+// A block of data, to simply increase gRPC message size.
+message Payload {
+ // The type of data in body.
+ optional PayloadType type = 1;
+ // Primary contents of payload.
+ optional bytes body = 2;
+}
+
+// Unary request.
+message SimpleRequest {
+ // Desired payload type in the response from the server.
+ // If response_type is RANDOM, server randomly chooses one from other formats.
+ optional PayloadType response_type = 1;
+
+ // Desired payload size in the response from the server.
+ // If response_type is COMPRESSABLE, this denotes the size before compression.
+ optional int32 response_size = 2;
+
+ // Optional input payload sent along with the request.
+ optional Payload payload = 3;
+}
+
+// Unary response, as configured by the request.
+message SimpleResponse {
+ // Payload to increase message size.
+ optional Payload payload = 1;
+ // The user the request came from, for verifying authentication was
+ // successful when the client expected it.
+ optional int64 effective_gaia_user_id = 2;
+}
+
+// Client-streaming request.
+message StreamingInputCallRequest {
+ // Optional input payload sent along with the request.
+ optional Payload payload = 1;
+
+ // Not expecting any payload from the response.
+}
+
+// Client-streaming response.
+message StreamingInputCallResponse {
+ // Aggregated size of payloads received from the client.
+ optional int32 aggregated_payload_size = 1;
+}
+
+// Configuration for a particular response.
+message ResponseParameters {
+ // Desired payload sizes in responses from the server.
+ // If response_type is COMPRESSABLE, this denotes the size before compression.
+ optional int32 size = 1;
+
+ // Desired interval between consecutive responses in the response stream in
+ // microseconds.
+ optional int32 interval_us = 2;
+}
+
+// Server-streaming request.
+message StreamingOutputCallRequest {
+ // Desired payload type in the response from the server.
+ // If response_type is RANDOM, the payload from each response in the stream
+ // might be of different types. This is to simulate a mixed type of payload
+ // stream.
+ optional PayloadType response_type = 1;
+
+ // Configuration for each expected response message.
+ repeated ResponseParameters response_parameters = 2;
+
+ // Optional input payload sent along with the request.
+ optional Payload payload = 3;
+}
+
+// Server-streaming response, as configured by the request and parameters.
+message StreamingOutputCallResponse {
+ // Payload to increase response size.
+ optional Payload payload = 1;
+}
diff --git a/src/node/interop/test.proto b/src/node/interop/test.proto
new file mode 100644
index 0000000..8380ebb
--- /dev/null
+++ b/src/node/interop/test.proto
@@ -0,0 +1,42 @@
+// An integration test service that covers all the method signature permutations
+// of unary/streaming requests/responses.
+syntax = "proto2";
+
+import "empty.proto";
+import "messages.proto";
+
+package grpc.testing;
+
+// A simple service to test the various types of RPCs and experiment with
+// performance with various types of payload.
+service TestService {
+ // One empty request followed by one empty response.
+ rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
+
+ // One request followed by one response.
+ // The server returns the client payload as-is.
+ rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
+
+ // One request followed by a sequence of responses (streamed download).
+ // The server returns the payload with client desired type and sizes.
+ rpc StreamingOutputCall(StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
+
+ // A sequence of requests followed by one response (streamed upload).
+ // The server returns the aggregated size of client payload as the result.
+ rpc StreamingInputCall(stream StreamingInputCallRequest)
+ returns (StreamingInputCallResponse);
+
+ // A sequence of requests with each request served by the server immediately.
+ // As one request could lead to multiple responses, this interface
+ // demonstrates the idea of full duplexing.
+ rpc FullDuplexCall(stream StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
+
+ // A sequence of requests followed by a sequence of responses.
+ // The server buffers all the client requests and then serves them in order. A
+ // stream of responses are returned to the client when the server starts with
+ // first request.
+ rpc HalfDuplexCall(stream StreamingOutputCallRequest)
+ returns (stream StreamingOutputCallResponse);
+}
diff --git a/src/node/main.js b/src/node/main.js
index a8dfa20..751c352 100644
--- a/src/node/main.js
+++ b/src/node/main.js
@@ -55,7 +55,7 @@
return result;
} else if (value.className === 'Service') {
return surface_client.makeClientConstructor(value);
- } else if (value.className === 'Service.Message') {
+ } else if (value.className === 'Message' || value.className === 'Enum') {
return value.build();
} else {
return value;
@@ -96,3 +96,13 @@
* Call error name to code number mapping
*/
exports.callError = grpc.callError;
+
+/**
+ * Credentials factories
+ */
+exports.Credentials = grpc.Credentials;
+
+/**
+ * ServerCredentials factories
+ */
+exports.ServerCredentials = grpc.ServerCredentials;
diff --git a/src/node/package.json b/src/node/package.json
index ed93c4f..5f3c6fa 100644
--- a/src/node/package.json
+++ b/src/node/package.json
@@ -8,12 +8,14 @@
"dependencies": {
"bindings": "^1.2.1",
"nan": "~1.3.0",
+ "protobufjs": "murgatroid99/ProtoBuf.js",
"underscore": "^1.7.0",
- "protobufjs": "murgatroid99/ProtoBuf.js"
+ "underscore.string": "^3.0.0"
},
"devDependencies": {
+ "highland": "~2.2.0",
"mocha": "~1.21.0",
- "highland": "~2.0.0"
+ "minimist": "^1.1.0"
},
"main": "main.js"
}
diff --git a/src/node/server.cc b/src/node/server.cc
index 6482689..b102775 100644
--- a/src/node/server.cc
+++ b/src/node/server.cc
@@ -194,7 +194,7 @@
return NanThrowTypeError("addHttp2Port's argument must be a String");
}
Server *server = ObjectWrap::Unwrap<Server>(args.This());
- NanReturnValue(NanNew<Boolean>(grpc_server_add_http2_port(
+ NanReturnValue(NanNew<Number>(grpc_server_add_http2_port(
server->wrapped_server, *NanUtf8String(args[0]))));
}
@@ -208,7 +208,7 @@
return NanThrowTypeError("addSecureHttp2Port's argument must be a String");
}
Server *server = ObjectWrap::Unwrap<Server>(args.This());
- NanReturnValue(NanNew<Boolean>(grpc_server_add_secure_http2_port(
+ NanReturnValue(NanNew<Number>(grpc_server_add_secure_http2_port(
server->wrapped_server, *NanUtf8String(args[0]))));
}
diff --git a/src/node/server.js b/src/node/server.js
index e947032..eca20aa 100644
--- a/src/node/server.js
+++ b/src/node/server.js
@@ -47,10 +47,22 @@
* from stream.Duplex.
* @constructor
* @param {grpc.Call} call Call object to proxy
- * @param {object} options Stream options
+ * @param {function(*):Buffer=} serialize Serialization function for responses
+ * @param {function(Buffer):*=} deserialize Deserialization function for
+ * requests
*/
-function GrpcServerStream(call, options) {
- Duplex.call(this, options);
+function GrpcServerStream(call, serialize, deserialize) {
+ Duplex.call(this, {objectMode: true});
+ if (!serialize) {
+ serialize = function(value) {
+ return value;
+ };
+ }
+ if (!deserialize) {
+ deserialize = function(value) {
+ return value;
+ };
+ }
this._call = call;
// Indicate that a status has been sent
var finished = false;
@@ -59,6 +71,33 @@
'code' : grpc.status.OK,
'details' : 'OK'
};
+
+ /**
+ * Serialize a response value to a buffer. Always maps null to null. Otherwise
+ * uses the provided serialize function
+ * @param {*} value The value to serialize
+ * @return {Buffer} The serialized value
+ */
+ this.serialize = function(value) {
+ if (value === null || value === undefined) {
+ return null;
+ }
+ return serialize(value);
+ };
+
+ /**
+ * Deserialize a request buffer to a value. Always maps null to null.
+ * Otherwise uses the provided deserialize function.
+ * @param {Buffer} buffer The buffer to deserialize
+ * @return {*} The deserialized value
+ */
+ this.deserialize = function(buffer) {
+ if (buffer === null) {
+ return null;
+ }
+ return deserialize(buffer);
+ };
+
/**
* Send the pending status
*/
@@ -75,7 +114,6 @@
* @param {Error} err The error object
*/
function setStatus(err) {
- console.log('Server setting status to', err);
var code = grpc.status.INTERNAL;
var details = 'Unknown Error';
@@ -113,7 +151,7 @@
return;
}
var data = event.data;
- if (self.push(data) && data != null) {
+ if (self.push(deserialize(data)) && data != null) {
self._call.startRead(readCallback);
} else {
reading = false;
@@ -155,7 +193,7 @@
*/
GrpcServerStream.prototype._write = function(chunk, encoding, callback) {
var self = this;
- self._call.startWrite(chunk, function(event) {
+ self._call.startWrite(self.serialize(chunk), function(event) {
callback();
}, 0);
};
@@ -211,12 +249,13 @@
}
}, 0);
call.serverEndInitialMetadata(0);
- var stream = new GrpcServerStream(call);
+ var stream = new GrpcServerStream(call, handler.serialize,
+ handler.deserialize);
Object.defineProperty(stream, 'cancelled', {
get: function() { return cancelled;}
});
try {
- handler(stream, data.metadata);
+ handler.func(stream, data.metadata);
} catch (e) {
stream.emit('error', e);
}
@@ -237,14 +276,20 @@
* handle/respond to.
* @param {function} handler Function that takes a stream of request values and
* returns a stream of response values
+ * @param {function(*):Buffer} serialize Serialization function for responses
+ * @param {function(Buffer):*} deserialize Deserialization function for requests
* @return {boolean} True if the handler was set. False if a handler was already
* set for that name.
*/
-Server.prototype.register = function(name, handler) {
+Server.prototype.register = function(name, handler, serialize, deserialize) {
if (this.handlers.hasOwnProperty(name)) {
return false;
}
- this.handlers[name] = handler;
+ this.handlers[name] = {
+ func: handler,
+ serialize: serialize,
+ deserialize: deserialize
+ };
return true;
};
@@ -256,9 +301,9 @@
*/
Server.prototype.bind = function(port, secure) {
if (secure) {
- this._server.addSecureHttp2Port(port);
+ return this._server.addSecureHttp2Port(port);
} else {
- this._server.addHttp2Port(port);
+ return this._server.addHttp2Port(port);
}
};
diff --git a/src/node/server_credentials.cc b/src/node/server_credentials.cc
index 38df547..393f3a6 100644
--- a/src/node/server_credentials.cc
+++ b/src/node/server_credentials.cc
@@ -123,14 +123,12 @@
}
NAN_METHOD(ServerCredentials::CreateSsl) {
+ // TODO: have the node API support multiple key/cert pairs.
NanScope();
char *root_certs = NULL;
- char *private_key;
- char *cert_chain;
- int root_certs_length = 0, private_key_length, cert_chain_length;
+ grpc_ssl_pem_key_cert_pair key_cert_pair;
if (Buffer::HasInstance(args[0])) {
root_certs = Buffer::Data(args[0]);
- root_certs_length = Buffer::Length(args[0]);
} else if (!(args[0]->IsNull() || args[0]->IsUndefined())) {
return NanThrowTypeError(
"createSSl's first argument must be a Buffer if provided");
@@ -138,17 +136,13 @@
if (!Buffer::HasInstance(args[1])) {
return NanThrowTypeError("createSsl's second argument must be a Buffer");
}
- private_key = Buffer::Data(args[1]);
- private_key_length = Buffer::Length(args[1]);
+ key_cert_pair.private_key = Buffer::Data(args[1]);
if (!Buffer::HasInstance(args[2])) {
return NanThrowTypeError("createSsl's third argument must be a Buffer");
}
- cert_chain = Buffer::Data(args[2]);
- cert_chain_length = Buffer::Length(args[2]);
- NanReturnValue(WrapStruct(grpc_ssl_server_credentials_create(
- reinterpret_cast<unsigned char *>(root_certs), root_certs_length,
- reinterpret_cast<unsigned char *>(private_key), private_key_length,
- reinterpret_cast<unsigned char *>(cert_chain), cert_chain_length)));
+ key_cert_pair.cert_chain = Buffer::Data(args[2]);
+ NanReturnValue(WrapStruct(
+ grpc_ssl_server_credentials_create(root_certs, &key_cert_pair, 1)));
}
NAN_METHOD(ServerCredentials::CreateFake) {
diff --git a/src/node/surface_client.js b/src/node/surface_client.js
index 77dab5c..996e3d1 100644
--- a/src/node/surface_client.js
+++ b/src/node/surface_client.js
@@ -33,6 +33,9 @@
var _ = require('underscore');
+var capitalize = require('underscore.string/capitalize');
+var decapitalize = require('underscore.string/decapitalize');
+
var client = require('./client.js');
var common = require('./common.js');
@@ -352,10 +355,11 @@
method_type = 'unary';
}
}
- SurfaceClient.prototype[method.name] = requester_makers[method_type](
- prefix + method.name,
- common.serializeCls(method.resolvedRequestType.build()),
- common.deserializeCls(method.resolvedResponseType.build()));
+ SurfaceClient.prototype[decapitalize(method.name)] =
+ requester_makers[method_type](
+ prefix + capitalize(method.name),
+ common.serializeCls(method.resolvedRequestType.build()),
+ common.deserializeCls(method.resolvedResponseType.build()));
});
SurfaceClient.service = service;
diff --git a/src/node/surface_server.js b/src/node/surface_server.js
index b6e0c37..bc68883 100644
--- a/src/node/surface_server.js
+++ b/src/node/surface_server.js
@@ -33,6 +33,9 @@
var _ = require('underscore');
+var capitalize = require('underscore.string/capitalize');
+var decapitalize = require('underscore.string/decapitalize');
+
var Server = require('./server.js');
var stream = require('stream');
@@ -332,15 +335,16 @@
method_type = 'unary';
}
}
- if (service_handlers[service_name][method.name] === undefined) {
+ if (service_handlers[service_name][decapitalize(method.name)] ===
+ undefined) {
throw new Error('Method handler for ' +
common.fullyQualifiedName(method) + ' not provided.');
}
var binary_handler = handler_makers[method_type](
- service_handlers[service_name][method.name],
+ service_handlers[service_name][decapitalize(method.name)],
common.serializeCls(method.resolvedResponseType.build()),
common.deserializeCls(method.resolvedRequestType.build()));
- server.register(prefix + method.name, binary_handler);
+ server.register(prefix + capitalize(method.name), binary_handler);
});
}, this);
}
@@ -353,8 +357,7 @@
* @return {SurfaceServer} this
*/
SurfaceServer.prototype.bind = function(port, secure) {
- this.inner_server.bind(port, secure);
- return this;
+ return this.inner_server.bind(port, secure);
};
/**
diff --git a/src/node/test/client_server_test.js b/src/node/test/client_server_test.js
index 534a5c4..2a25908 100644
--- a/src/node/test/client_server_test.js
+++ b/src/node/test/client_server_test.js
@@ -37,7 +37,6 @@
var grpc = require('bindings')('grpc.node');
var Server = require('../server');
var client = require('../client');
-var port_picker = require('../port_picker');
var common = require('../common');
var _ = require('highland');
@@ -80,55 +79,50 @@
describe('echo client', function() {
it('should receive echo responses', function(done) {
- port_picker.nextAvailablePort(function(port) {
- var server = new Server();
- server.bind(port);
- server.register('echo', echoHandler);
- server.start();
+ var server = new Server();
+ var port_num = server.bind('0.0.0.0:0');
+ server.register('echo', echoHandler);
+ server.start();
- var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
- var channel = new grpc.Channel(port);
- var stream = client.makeRequest(
- channel,
- 'echo');
- _(messages).map(function(val) {
- return new Buffer(val);
- }).pipe(stream);
- var index = 0;
- stream.on('data', function(chunk) {
- assert.equal(messages[index], chunk.toString());
- index += 1;
- });
- stream.on('end', function() {
- server.shutdown();
- done();
- });
+ var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
+ var channel = new grpc.Channel('localhost:' + port_num);
+ var stream = client.makeRequest(
+ channel,
+ 'echo');
+ _(messages).map(function(val) {
+ return new Buffer(val);
+ }).pipe(stream);
+ var index = 0;
+ stream.on('data', function(chunk) {
+ assert.equal(messages[index], chunk.toString());
+ index += 1;
+ });
+ stream.on('end', function() {
+ server.shutdown();
+ done();
});
});
it('should get an error status that the server throws', function(done) {
- port_picker.nextAvailablePort(function(port) {
- var server = new Server();
- server.bind(port);
- server.register('error', errorHandler);
- server.start();
+ var server = new Server();
+ var port_num = server.bind('0.0.0.0:0');
+ server.register('error', errorHandler);
+ server.start();
- var channel = new grpc.Channel(port);
- var stream = client.makeRequest(
- channel,
- 'error',
- null,
- getDeadline(1));
+ var channel = new grpc.Channel('localhost:' + port_num);
+ var stream = client.makeRequest(
+ channel,
+ 'error',
+ null,
+ getDeadline(1));
- stream.on('data', function() {});
- stream.write(new Buffer('test'));
- stream.end();
- stream.on('status', function(status) {
- assert.equal(status.code, grpc.status.UNIMPLEMENTED);
- assert.equal(status.details, 'error details');
- server.shutdown();
- done();
- });
-
+ stream.on('data', function() {});
+ stream.write(new Buffer('test'));
+ stream.end();
+ stream.on('status', function(status) {
+ assert.equal(status.code, grpc.status.UNIMPLEMENTED);
+ assert.equal(status.details, 'error details');
+ server.shutdown();
+ done();
});
});
});
@@ -136,46 +130,43 @@
* and the insecure echo client test */
describe('secure echo client', function() {
it('should recieve echo responses', function(done) {
- port_picker.nextAvailablePort(function(port) {
- fs.readFile(ca_path, function(err, ca_data) {
+ fs.readFile(ca_path, function(err, ca_data) {
+ assert.ifError(err);
+ fs.readFile(key_path, function(err, key_data) {
assert.ifError(err);
- fs.readFile(key_path, function(err, key_data) {
+ fs.readFile(pem_path, function(err, pem_data) {
assert.ifError(err);
- fs.readFile(pem_path, function(err, pem_data) {
- assert.ifError(err);
- var creds = grpc.Credentials.createSsl(ca_data);
- var server_creds = grpc.ServerCredentials.createSsl(null,
- key_data,
- pem_data);
+ var creds = grpc.Credentials.createSsl(ca_data);
+ var server_creds = grpc.ServerCredentials.createSsl(null,
+ key_data,
+ pem_data);
- var server = new Server({'credentials' : server_creds});
- server.bind(port, true);
- server.register('echo', echoHandler);
- server.start();
+ var server = new Server({'credentials' : server_creds});
+ var port_num = server.bind('0.0.0.0:0', true);
+ server.register('echo', echoHandler);
+ server.start();
- var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
- var channel = new grpc.Channel(port, {
- 'grpc.ssl_target_name_override' : 'foo.test.google.com',
- 'credentials' : creds
- });
- var stream = client.makeRequest(
- channel,
- 'echo');
-
- _(messages).map(function(val) {
- return new Buffer(val);
- }).pipe(stream);
- var index = 0;
- stream.on('data', function(chunk) {
- assert.equal(messages[index], chunk.toString());
- index += 1;
- });
- stream.on('end', function() {
- server.shutdown();
- done();
- });
+ var messages = ['echo1', 'echo2', 'echo3', 'echo4'];
+ var channel = new grpc.Channel('localhost:' + port_num, {
+ 'grpc.ssl_target_name_override' : 'foo.test.google.com',
+ 'credentials' : creds
});
+ var stream = client.makeRequest(
+ channel,
+ 'echo');
+ _(messages).map(function(val) {
+ return new Buffer(val);
+ }).pipe(stream);
+ var index = 0;
+ stream.on('data', function(chunk) {
+ assert.equal(messages[index], chunk.toString());
+ index += 1;
+ });
+ stream.on('end', function() {
+ server.shutdown();
+ done();
+ });
});
});
});
diff --git a/src/node/test/end_to_end_test.js b/src/node/test/end_to_end_test.js
index 40bb5f3..db3834d 100644
--- a/src/node/test/end_to_end_test.js
+++ b/src/node/test/end_to_end_test.js
@@ -33,7 +33,6 @@
var assert = require('assert');
var grpc = require('bindings')('grpc.node');
-var port_picker = require('../port_picker');
/**
* This is used for testing functions with multiple asynchronous calls that
@@ -58,143 +57,139 @@
describe('end-to-end', function() {
it('should start and end a request without error', function(complete) {
- port_picker.nextAvailablePort(function(port) {
- var server = new grpc.Server();
- var done = multiDone(function() {
- complete();
- server.shutdown();
- }, 2);
- server.addHttp2Port(port);
- var channel = new grpc.Channel(port);
- var deadline = new Date();
- deadline.setSeconds(deadline.getSeconds() + 3);
- var status_text = 'xyz';
- var call = new grpc.Call(channel,
- 'dummy_method',
- deadline);
- call.startInvoke(function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.INVOKE_ACCEPTED);
+ var server = new grpc.Server();
+ var done = multiDone(function() {
+ complete();
+ server.shutdown();
+ }, 2);
+ var port_num = server.addHttp2Port('0.0.0.0:0');
+ var channel = new grpc.Channel('localhost:' + port_num);
+ var deadline = new Date();
+ deadline.setSeconds(deadline.getSeconds() + 3);
+ var status_text = 'xyz';
+ var call = new grpc.Call(channel,
+ 'dummy_method',
+ deadline);
+ call.startInvoke(function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.INVOKE_ACCEPTED);
- call.writesDone(function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.FINISH_ACCEPTED);
- assert.strictEqual(event.data, grpc.opError.OK);
- });
- },function(event) {
+ call.writesDone(function(event) {
assert.strictEqual(event.type,
- grpc.completionType.CLIENT_METADATA_READ);
- },function(event) {
+ grpc.completionType.FINISH_ACCEPTED);
+ assert.strictEqual(event.data, grpc.opError.OK);
+ });
+ },function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.CLIENT_METADATA_READ);
+ },function(event) {
+ assert.strictEqual(event.type, grpc.completionType.FINISHED);
+ var status = event.data;
+ assert.strictEqual(status.code, grpc.status.OK);
+ assert.strictEqual(status.details, status_text);
+ done();
+ }, 0);
+
+ server.start();
+ server.requestCall(function(event) {
+ assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW);
+ var server_call = event.call;
+ assert.notEqual(server_call, null);
+ server_call.serverAccept(function(event) {
assert.strictEqual(event.type, grpc.completionType.FINISHED);
- var status = event.data;
- assert.strictEqual(status.code, grpc.status.OK);
- assert.strictEqual(status.details, status_text);
- done();
}, 0);
+ server_call.serverEndInitialMetadata(0);
+ server_call.startWriteStatus(
+ grpc.status.OK,
+ status_text,
+ function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.FINISH_ACCEPTED);
+ assert.strictEqual(event.data, grpc.opError.OK);
+ done();
+ });
+ });
+ });
- server.start();
- server.requestCall(function(event) {
- assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW);
- var server_call = event.call;
- assert.notEqual(server_call, null);
- server_call.serverAccept(function(event) {
- assert.strictEqual(event.type, grpc.completionType.FINISHED);
- }, 0);
- server_call.serverEndInitialMetadata(0);
- server_call.startWriteStatus(
- grpc.status.OK,
- status_text,
- function(event) {
+ it('should send and receive data without error', function(complete) {
+ var req_text = 'client_request';
+ var reply_text = 'server_response';
+ var server = new grpc.Server();
+ var done = multiDone(function() {
+ complete();
+ server.shutdown();
+ }, 6);
+ var port_num = server.addHttp2Port('0.0.0.0:0');
+ var channel = new grpc.Channel('localhost:' + port_num);
+ var deadline = new Date();
+ deadline.setSeconds(deadline.getSeconds() + 3);
+ var status_text = 'success';
+ var call = new grpc.Call(channel,
+ 'dummy_method',
+ deadline);
+ call.startInvoke(function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.INVOKE_ACCEPTED);
+ call.startWrite(
+ new Buffer(req_text),
+ function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.WRITE_ACCEPTED);
+ assert.strictEqual(event.data, grpc.opError.OK);
+ call.writesDone(function(event) {
assert.strictEqual(event.type,
grpc.completionType.FINISH_ACCEPTED);
assert.strictEqual(event.data, grpc.opError.OK);
done();
});
+ }, 0);
+ call.startRead(function(event) {
+ assert.strictEqual(event.type, grpc.completionType.READ);
+ assert.strictEqual(event.data.toString(), reply_text);
+ done();
});
- });
- });
+ },function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.CLIENT_METADATA_READ);
+ done();
+ },function(event) {
+ assert.strictEqual(event.type, grpc.completionType.FINISHED);
+ var status = event.data;
+ assert.strictEqual(status.code, grpc.status.OK);
+ assert.strictEqual(status.details, status_text);
+ done();
+ }, 0);
- it('should send and receive data without error', function(complete) {
- port_picker.nextAvailablePort(function(port) {
- var req_text = 'client_request';
- var reply_text = 'server_response';
- var server = new grpc.Server();
- var done = multiDone(function() {
- complete();
- server.shutdown();
- }, 6);
- server.addHttp2Port(port);
- var channel = new grpc.Channel(port);
- var deadline = new Date();
- deadline.setSeconds(deadline.getSeconds() + 3);
- var status_text = 'success';
- var call = new grpc.Call(channel,
- 'dummy_method',
- deadline);
- call.startInvoke(function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.INVOKE_ACCEPTED);
- call.startWrite(
- new Buffer(req_text),
+ server.start();
+ server.requestCall(function(event) {
+ assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW);
+ var server_call = event.call;
+ assert.notEqual(server_call, null);
+ server_call.serverAccept(function(event) {
+ assert.strictEqual(event.type, grpc.completionType.FINISHED);
+ done();
+ });
+ server_call.serverEndInitialMetadata(0);
+ server_call.startRead(function(event) {
+ assert.strictEqual(event.type, grpc.completionType.READ);
+ assert.strictEqual(event.data.toString(), req_text);
+ server_call.startWrite(
+ new Buffer(reply_text),
function(event) {
assert.strictEqual(event.type,
grpc.completionType.WRITE_ACCEPTED);
- assert.strictEqual(event.data, grpc.opError.OK);
- call.writesDone(function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.FINISH_ACCEPTED);
- assert.strictEqual(event.data, grpc.opError.OK);
- done();
- });
+ assert.strictEqual(event.data,
+ grpc.opError.OK);
+ server_call.startWriteStatus(
+ grpc.status.OK,
+ status_text,
+ function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.FINISH_ACCEPTED);
+ assert.strictEqual(event.data, grpc.opError.OK);
+ done();
+ });
}, 0);
- call.startRead(function(event) {
- assert.strictEqual(event.type, grpc.completionType.READ);
- assert.strictEqual(event.data.toString(), reply_text);
- done();
- });
- },function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.CLIENT_METADATA_READ);
- done();
- },function(event) {
- assert.strictEqual(event.type, grpc.completionType.FINISHED);
- var status = event.data;
- assert.strictEqual(status.code, grpc.status.OK);
- assert.strictEqual(status.details, status_text);
- done();
- }, 0);
-
- server.start();
- server.requestCall(function(event) {
- assert.strictEqual(event.type, grpc.completionType.SERVER_RPC_NEW);
- var server_call = event.call;
- assert.notEqual(server_call, null);
- server_call.serverAccept(function(event) {
- assert.strictEqual(event.type, grpc.completionType.FINISHED);
- done();
- });
- server_call.serverEndInitialMetadata(0);
- server_call.startRead(function(event) {
- assert.strictEqual(event.type, grpc.completionType.READ);
- assert.strictEqual(event.data.toString(), req_text);
- server_call.startWrite(
- new Buffer(reply_text),
- function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.WRITE_ACCEPTED);
- assert.strictEqual(event.data,
- grpc.opError.OK);
- server_call.startWriteStatus(
- grpc.status.OK,
- status_text,
- function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.FINISH_ACCEPTED);
- assert.strictEqual(event.data, grpc.opError.OK);
- done();
- });
- }, 0);
- });
});
});
});
diff --git a/src/node/test/interop_sanity_test.js b/src/node/test/interop_sanity_test.js
new file mode 100644
index 0000000..410b050
--- /dev/null
+++ b/src/node/test/interop_sanity_test.js
@@ -0,0 +1,71 @@
+/*
+ *
+ * Copyright 2014, 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.
+ *
+ */
+
+var interop_server = require('../interop/interop_server.js');
+var interop_client = require('../interop/interop_client.js');
+
+var server;
+
+var port;
+
+var name_override = 'foo.test.google.com';
+
+describe('Interop tests', function() {
+ before(function(done) {
+ var server_obj = interop_server.getServer(0, true);
+ server = server_obj.server;
+ server.listen();
+ port = 'localhost:' + server_obj.port;
+ done();
+ });
+ // This depends on not using a binary stream
+ it('should pass empty_unary', function(done) {
+ interop_client.runTest(port, name_override, 'empty_unary', true, done);
+ });
+ it('should pass large_unary', function(done) {
+ interop_client.runTest(port, name_override, 'large_unary', true, done);
+ });
+ it('should pass client_streaming', function(done) {
+ interop_client.runTest(port, name_override, 'client_streaming', true, done);
+ });
+ it('should pass server_streaming', function(done) {
+ interop_client.runTest(port, name_override, 'server_streaming', true, done);
+ });
+ it('should pass ping_pong', function(done) {
+ interop_client.runTest(port, name_override, 'ping_pong', true, done);
+ });
+ // This depends on the new invoke API
+ it.skip('should pass empty_stream', function(done) {
+ interop_client.runTest(port, name_override, 'empty_stream', true, done);
+ });
+});
diff --git a/src/node/test/math_client_test.js b/src/node/test/math_client_test.js
index 45c956d..0e365bf 100644
--- a/src/node/test/math_client_test.js
+++ b/src/node/test/math_client_test.js
@@ -32,7 +32,6 @@
*/
var assert = require('assert');
-var port_picker = require('../port_picker');
var grpc = require('..');
var math = grpc.load(__dirname + '/../examples/math.proto').math;
@@ -50,18 +49,17 @@
describe('Math client', function() {
before(function(done) {
- port_picker.nextAvailablePort(function(port) {
- server.bind(port).listen();
- math_client = new math.Math(port);
- done();
- });
+ var port_num = server.bind('0.0.0.0:0');
+ server.listen();
+ math_client = new math.Math('localhost:' + port_num);
+ done();
});
after(function() {
server.shutdown();
});
it('should handle a single request', function(done) {
var arg = {dividend: 7, divisor: 4};
- var call = math_client.Div(arg, function handleDivResult(err, value) {
+ var call = math_client.div(arg, function handleDivResult(err, value) {
assert.ifError(err);
assert.equal(value.quotient, 1);
assert.equal(value.remainder, 3);
@@ -72,7 +70,7 @@
});
});
it('should handle a server streaming request', function(done) {
- var call = math_client.Fib({limit: 7});
+ var call = math_client.fib({limit: 7});
var expected_results = [1, 1, 2, 3, 5, 8, 13];
var next_expected = 0;
call.on('data', function checkResponse(value) {
@@ -85,7 +83,7 @@
});
});
it('should handle a client streaming request', function(done) {
- var call = math_client.Sum(function handleSumResult(err, value) {
+ var call = math_client.sum(function handleSumResult(err, value) {
assert.ifError(err);
assert.equal(value.num, 21);
});
@@ -103,7 +101,7 @@
assert.equal(value.quotient, index);
assert.equal(value.remainder, 1);
}
- var call = math_client.DivMany();
+ var call = math_client.divMany();
var response_index = 0;
call.on('data', function(value) {
checkResponse(response_index, value);
diff --git a/src/node/test/server_test.js b/src/node/test/server_test.js
index 79f7b32..61aef46 100644
--- a/src/node/test/server_test.js
+++ b/src/node/test/server_test.js
@@ -34,7 +34,6 @@
var assert = require('assert');
var grpc = require('bindings')('grpc.node');
var Server = require('../server');
-var port_picker = require('../port_picker');
/**
* This is used for testing functions with multiple asynchronous calls that
@@ -68,54 +67,52 @@
describe('echo server', function() {
it('should echo inputs as responses', function(done) {
done = multiDone(done, 4);
- port_picker.nextAvailablePort(function(port) {
- var server = new Server();
- server.bind(port);
- server.register('echo', echoHandler);
- server.start();
+ var server = new Server();
+ var port_num = server.bind('[::]:0');
+ server.register('echo', echoHandler);
+ server.start();
- var req_text = 'echo test string';
- var status_text = 'OK';
+ var req_text = 'echo test string';
+ var status_text = 'OK';
- var channel = new grpc.Channel(port);
- var deadline = new Date();
- deadline.setSeconds(deadline.getSeconds() + 3);
- var call = new grpc.Call(channel,
- 'echo',
- deadline);
- call.startInvoke(function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.INVOKE_ACCEPTED);
- call.startWrite(
- new Buffer(req_text),
- function(event) {
+ var channel = new grpc.Channel('localhost:' + port_num);
+ var deadline = new Date();
+ deadline.setSeconds(deadline.getSeconds() + 3);
+ var call = new grpc.Call(channel,
+ 'echo',
+ deadline);
+ call.startInvoke(function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.INVOKE_ACCEPTED);
+ call.startWrite(
+ new Buffer(req_text),
+ function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.WRITE_ACCEPTED);
+ assert.strictEqual(event.data, grpc.opError.OK);
+ call.writesDone(function(event) {
assert.strictEqual(event.type,
- grpc.completionType.WRITE_ACCEPTED);
+ grpc.completionType.FINISH_ACCEPTED);
assert.strictEqual(event.data, grpc.opError.OK);
- call.writesDone(function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.FINISH_ACCEPTED);
- assert.strictEqual(event.data, grpc.opError.OK);
- done();
- });
- }, 0);
- call.startRead(function(event) {
- assert.strictEqual(event.type, grpc.completionType.READ);
- assert.strictEqual(event.data.toString(), req_text);
- done();
- });
- },function(event) {
- assert.strictEqual(event.type,
- grpc.completionType.CLIENT_METADATA_READ);
+ done();
+ });
+ }, 0);
+ call.startRead(function(event) {
+ assert.strictEqual(event.type, grpc.completionType.READ);
+ assert.strictEqual(event.data.toString(), req_text);
done();
- },function(event) {
- assert.strictEqual(event.type, grpc.completionType.FINISHED);
- var status = event.data;
- assert.strictEqual(status.code, grpc.status.OK);
- assert.strictEqual(status.details, status_text);
- server.shutdown();
- done();
- }, 0);
- });
+ });
+ },function(event) {
+ assert.strictEqual(event.type,
+ grpc.completionType.CLIENT_METADATA_READ);
+ done();
+ },function(event) {
+ assert.strictEqual(event.type, grpc.completionType.FINISHED);
+ var status = event.data;
+ assert.strictEqual(status.code, grpc.status.OK);
+ assert.strictEqual(status.details, status_text);
+ server.shutdown();
+ done();
+ }, 0);
});
});
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index 8d0d8ec..34f1a15 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -59,9 +59,9 @@
assert.throws(function() {
new Server({
'math.Math': {
- 'Div': function() {},
- 'DivMany': function() {},
- 'Fib': function() {}
+ 'div': function() {},
+ 'divMany': function() {},
+ 'fib': function() {}
}
});
}, /math.Math.Sum/);
diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index c01af34..410efbc 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -423,16 +423,15 @@
static zend_function_entry call_methods[] = {
PHP_ME(Call, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(Call, server_accept, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, server_end_initial_metadata, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, add_metadata, NULL, ZEND_ACC_PUBLIC) PHP_ME(
- Call, cancel, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, start_invoke, NULL, ZEND_ACC_PUBLIC) PHP_ME(
- Call, start_read, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, start_write, NULL, ZEND_ACC_PUBLIC) PHP_ME(
- Call, start_write_status, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, writes_done, NULL, ZEND_ACC_PUBLIC)
- PHP_FE_END};
+ PHP_ME(Call, server_accept, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, server_end_initial_metadata, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, add_metadata, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, cancel, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, start_invoke, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, start_read, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, start_write, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, start_write_status, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, writes_done, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
void grpc_init_call(TSRMLS_D) {
zend_class_entry ce;
diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c
index f0e4153..2ab229f 100644
--- a/src/php/ext/grpc/channel.c
+++ b/src/php/ext/grpc/channel.c
@@ -155,7 +155,7 @@
static zend_function_entry channel_methods[] = {
PHP_ME(Channel, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(Channel, close, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
+ PHP_ME(Channel, close, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
void grpc_init_channel(TSRMLS_D) {
zend_class_entry ce;
diff --git a/src/php/ext/grpc/completion_queue.c b/src/php/ext/grpc/completion_queue.c
index 9785eab..3a93bfc 100644
--- a/src/php/ext/grpc/completion_queue.c
+++ b/src/php/ext/grpc/completion_queue.c
@@ -63,8 +63,8 @@
*/
PHP_METHOD(CompletionQueue, __construct) {
wrapped_grpc_completion_queue *queue =
- (wrapped_grpc_completion_queue *)zend_object_store_get_object(
- getThis() TSRMLS_CC);
+ (wrapped_grpc_completion_queue *)zend_object_store_get_object(getThis()
+ TSRMLS_CC);
queue->wrapped = grpc_completion_queue_create();
}
@@ -86,8 +86,8 @@
return;
}
wrapped_grpc_completion_queue *completion_queue =
- (wrapped_grpc_completion_queue *)zend_object_store_get_object(
- getThis() TSRMLS_CC);
+ (wrapped_grpc_completion_queue *)zend_object_store_get_object(getThis()
+ TSRMLS_CC);
wrapped_grpc_timeval *wrapped_timeout =
(wrapped_grpc_timeval *)zend_object_store_get_object(timeout TSRMLS_CC);
grpc_event *event = grpc_completion_queue_next(completion_queue->wrapped,
@@ -109,8 +109,8 @@
"pluck needs a long and a Timeval", 1 TSRMLS_CC);
}
wrapped_grpc_completion_queue *completion_queue =
- (wrapped_grpc_completion_queue *)zend_object_store_get_object(
- getThis() TSRMLS_CC);
+ (wrapped_grpc_completion_queue *)zend_object_store_get_object(getThis()
+ TSRMLS_CC);
wrapped_grpc_timeval *wrapped_timeout =
(wrapped_grpc_timeval *)zend_object_store_get_object(timeout TSRMLS_CC);
grpc_event *event = grpc_completion_queue_pluck(
@@ -124,8 +124,8 @@
static zend_function_entry completion_queue_methods[] = {
PHP_ME(CompletionQueue, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(CompletionQueue, next, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(CompletionQueue, pluck, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
+ PHP_ME(CompletionQueue, next, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(CompletionQueue, pluck, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
void grpc_init_completion_queue(TSRMLS_D) {
zend_class_entry ce;
diff --git a/src/php/ext/grpc/credentials.c b/src/php/ext/grpc/credentials.c
index f486272..c63196b 100644
--- a/src/php/ext/grpc/credentials.c
+++ b/src/php/ext/grpc/credentials.c
@@ -77,24 +77,23 @@
*/
PHP_METHOD(Credentials, createSsl) {
char *pem_root_certs;
- char *pem_private_key = NULL;
- char *pem_cert_chain = NULL;
+ grpc_ssl_pem_key_cert_pair pem_key_cert_pair;
int root_certs_length, private_key_length = 0, cert_chain_length = 0;
/* "s|s!s! == 1 string, 2 optional nullable strings */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s!s!",
&pem_root_certs, &root_certs_length,
- &pem_private_key, &private_key_length,
- &pem_cert_chain, &cert_chain_length) == FAILURE) {
+ &pem_key_cert_pair.private_key, &private_key_length,
+ &pem_key_cert_pair.cert_chain,
+ &cert_chain_length) == FAILURE) {
zend_throw_exception(spl_ce_InvalidArgumentException,
"createSsl expects 1 to 3 strings", 1 TSRMLS_CC);
return;
}
grpc_credentials *creds = grpc_ssl_credentials_create(
- (unsigned char *)pem_root_certs, (size_t)root_certs_length,
- (unsigned char *)pem_private_key, (size_t)private_key_length,
- (unsigned char *)pem_cert_chain, (size_t)cert_chain_length);
+ pem_root_certs,
+ pem_key_cert_pair.private_key == NULL ? NULL : &pem_key_cert_pair);
zval *creds_object = grpc_php_wrap_credentials(creds);
RETURN_DESTROY_ZVAL(creds_object);
}
@@ -151,13 +150,12 @@
static zend_function_entry credentials_methods[] = {
PHP_ME(Credentials, createDefault, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Credentials, createSsl, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Credentials, createComposite, NULL,
- ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Credentials, createGce, NULL,
- ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Credentials, createFake, NULL,
- ZEND_ACC_PUBLIC | ZEND_ACC_STATIC) PHP_FE_END};
+ PHP_ME(Credentials, createSsl, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Credentials, createComposite, NULL,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Credentials, createGce, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Credentials, createFake, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_FE_END};
void grpc_init_credentials(TSRMLS_D) {
zend_class_entry ce;
diff --git a/src/php/ext/grpc/php_grpc.c b/src/php/ext/grpc/php_grpc.c
index c104229..e8b4643 100644
--- a/src/php/ext/grpc/php_grpc.c
+++ b/src/php/ext/grpc/php_grpc.c
@@ -33,7 +33,8 @@
#if ZEND_MODULE_API_NO >= 20010901
STANDARD_MODULE_HEADER,
#endif
- "grpc", grpc_functions, PHP_MINIT(grpc), PHP_MSHUTDOWN(grpc), NULL, NULL,
+ "grpc", grpc_functions, PHP_MINIT(grpc),
+ PHP_MSHUTDOWN(grpc), NULL, NULL,
PHP_MINFO(grpc),
#if ZEND_MODULE_API_NO >= 20010901
PHP_GRPC_VERSION,
diff --git a/src/php/ext/grpc/server.c b/src/php/ext/grpc/server.c
index f484375..38777f3 100644
--- a/src/php/ext/grpc/server.c
+++ b/src/php/ext/grpc/server.c
@@ -176,10 +176,10 @@
static zend_function_entry server_methods[] = {
PHP_ME(Server, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(Server, request_call, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Server, add_http2_port, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Server, add_secure_http2_port, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Server, start, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
+ PHP_ME(Server, request_call, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Server, add_http2_port, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Server, add_secure_http2_port, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Server, start, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
void grpc_init_server(TSRMLS_D) {
zend_class_entry ce;
diff --git a/src/php/ext/grpc/server_credentials.c b/src/php/ext/grpc/server_credentials.c
index 5b9ab33..3d43d6a 100644
--- a/src/php/ext/grpc/server_credentials.c
+++ b/src/php/ext/grpc/server_credentials.c
@@ -66,24 +66,22 @@
*/
PHP_METHOD(ServerCredentials, createSsl) {
char *pem_root_certs = 0;
- char *pem_private_key;
- char *pem_cert_chain;
+ grpc_ssl_pem_key_cert_pair pem_key_cert_pair;
int root_certs_length = 0, private_key_length, cert_chain_length;
/* "s!ss" == 1 nullable string, 2 strings */
+ /* TODO: support multiple key cert pairs. */
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!ss", &pem_root_certs,
- &root_certs_length, &pem_private_key,
- &private_key_length, &pem_cert_chain,
+ &root_certs_length, &pem_key_cert_pair.private_key,
+ &private_key_length, &pem_key_cert_pair.cert_chain,
&cert_chain_length) == FAILURE) {
zend_throw_exception(spl_ce_InvalidArgumentException,
"createSsl expects 3 strings", 1 TSRMLS_CC);
return;
}
- grpc_server_credentials *creds = grpc_ssl_server_credentials_create(
- (unsigned char *)pem_root_certs, (size_t)root_certs_length,
- (unsigned char *)pem_private_key, (size_t)private_key_length,
- (unsigned char *)pem_cert_chain, (size_t)cert_chain_length);
+ grpc_server_credentials *creds =
+ grpc_ssl_server_credentials_create(pem_root_certs, &pem_key_cert_pair, 1);
zval *creds_object = grpc_php_wrap_server_credentials(creds);
RETURN_DESTROY_ZVAL(creds_object);
}
@@ -102,8 +100,8 @@
static zend_function_entry server_credentials_methods[] = {
PHP_ME(ServerCredentials, createSsl, NULL,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(ServerCredentials, createFake, NULL,
- ZEND_ACC_PUBLIC | ZEND_ACC_STATIC) PHP_FE_END};
+ PHP_ME(ServerCredentials, createFake, NULL,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC) PHP_FE_END};
void grpc_init_server_credentials(TSRMLS_D) {
zend_class_entry ce;
diff --git a/src/php/ext/grpc/timeval.c b/src/php/ext/grpc/timeval.c
index a550811..cbbbf37 100644
--- a/src/php/ext/grpc/timeval.c
+++ b/src/php/ext/grpc/timeval.c
@@ -217,20 +217,16 @@
}
static zend_function_entry timeval_methods[] = {
- PHP_ME(Timeval, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) PHP_ME(
- Timeval, add, NULL,
- ZEND_ACC_PUBLIC) PHP_ME(Timeval, compare, NULL,
- ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, inf_future, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, inf_past, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, now, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, similar, NULL,
- ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, sleep_until, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Timeval, subtract, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Timeval, zero, NULL,
- ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_FE_END};
+ PHP_ME(Timeval, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ PHP_ME(Timeval, add, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Timeval, compare, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, inf_future, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, inf_past, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, now, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, similar, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, sleep_until, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Timeval, subtract, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Timeval, zero, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC) PHP_FE_END};
void grpc_init_timeval(TSRMLS_D) {
zend_class_entry ce;
diff --git a/src/ruby/bin/interop/interop_client.rb b/src/ruby/bin/interop/interop_client.rb
index 0ce10d9..0ea7f37 100755
--- a/src/ruby/bin/interop/interop_client.rb
+++ b/src/ruby/bin/interop/interop_client.rb
@@ -107,11 +107,11 @@
@msg_sizes.each do |m|
req_size, resp_size = m
req = req_cls.new(payload: Payload.new(body: nulls(req_size)),
- response_type: COMPRESSABLE,
+ response_type: :COMPRESSABLE,
response_parameters: [p_cls.new(size: resp_size)])
yield req
resp = @queue.pop
- assert_equal(PayloadType.lookup(COMPRESSABLE), resp.payload.type,
+ assert_equal(:COMPRESSABLE, resp.payload.type,
'payload type is wrong')
assert_equal(resp_size, resp.payload.body.length,
'payload body #{i} has the wrong length')
@@ -149,11 +149,13 @@
# FAILED
def large_unary
req_size, wanted_response_size = 271_828, 314_159
- payload = Payload.new(type: COMPRESSABLE, body: nulls(req_size))
- req = SimpleRequest.new(response_type: COMPRESSABLE,
+ payload = Payload.new(type: :COMPRESSABLE, body: nulls(req_size))
+ req = SimpleRequest.new(response_type: :COMPRESSABLE,
response_size: wanted_response_size,
payload: payload)
resp = @stub.unary_call(req)
+ assert_equal(:COMPRESSABLE, resp.payload.type,
+ 'large_unary: payload had the wrong type')
assert_equal(wanted_response_size, resp.payload.body.length,
'large_unary: payload had the wrong length')
assert_equal(nulls(wanted_response_size), resp.payload.body,
@@ -185,12 +187,12 @@
def server_streaming
msg_sizes = [31_415, 9, 2653, 58_979]
response_spec = msg_sizes.map { |s| ResponseParameters.new(size: s) }
- req = StreamingOutputCallRequest.new(response_type: COMPRESSABLE,
+ req = StreamingOutputCallRequest.new(response_type: :COMPRESSABLE,
response_parameters: response_spec)
resps = @stub.streaming_output_call(req)
resps.each_with_index do |r, i|
assert i < msg_sizes.length, 'too many responses'
- assert_equal(PayloadType.lookup(COMPRESSABLE), r.payload.type,
+ assert_equal(:COMPRESSABLE, r.payload.type,
'payload type is wrong')
assert_equal(msg_sizes[i], r.payload.body.length,
'payload body #{i} has the wrong length')
@@ -235,7 +237,7 @@
end
end.parse!
- %w(server_host, server_port, test_case).each do |arg|
+ %w(server_host server_port test_case).each do |arg|
if options[arg].nil?
fail(OptionParser::MissingArgument, "please specify --#{arg}")
end
diff --git a/src/ruby/bin/interop/interop_server.rb b/src/ruby/bin/interop/interop_server.rb
index 9273dcd..1a08eb9 100755
--- a/src/ruby/bin/interop/interop_server.rb
+++ b/src/ruby/bin/interop/interop_server.rb
@@ -104,7 +104,7 @@
def unary_call(simple_req, _call)
req_size = simple_req.response_size
- SimpleResponse.new(payload: Payload.new(type: COMPRESSABLE,
+ SimpleResponse.new(payload: Payload.new(type: :COMPRESSABLE,
body: nulls(req_size)))
end
diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index e948504..a6dbbf3 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -68,7 +68,7 @@
$CFLAGS << ' -Wall '
$CFLAGS << ' -pedantic '
-$LDFLAGS << ' -lgrpc -lgpr -levent -levent_pthreads -levent_core'
+$LDFLAGS << ' -lgrpc -lgpr'
# crash('need grpc lib') unless have_library('grpc', 'grpc_channel_destroy')
#
diff --git a/src/ruby/ext/grpc/rb_credentials.c b/src/ruby/ext/grpc/rb_credentials.c
index 5dec518..31f47f3 100644
--- a/src/ruby/ext/grpc/rb_credentials.c
+++ b/src/ruby/ext/grpc/rb_credentials.c
@@ -214,6 +214,7 @@
VALUE pem_cert_chain = Qnil;
grpc_rb_credentials *wrapper = NULL;
grpc_credentials *creds = NULL;
+ /* TODO: Remove mandatory arg when we support default roots. */
/* "12" == 1 mandatory arg, 2 (credentials) is optional */
rb_scan_args(argc, argv, "12", &pem_root_certs, &pem_private_key,
&pem_cert_chain);
@@ -225,22 +226,12 @@
return Qnil;
}
if (pem_private_key == Qnil && pem_cert_chain == Qnil) {
- creds = grpc_ssl_credentials_create(RSTRING_PTR(pem_root_certs),
- RSTRING_LEN(pem_root_certs), NULL, 0,
- NULL, 0);
- } else if (pem_cert_chain == Qnil) {
- creds = grpc_ssl_credentials_create(
- RSTRING_PTR(pem_root_certs), RSTRING_LEN(pem_root_certs),
- RSTRING_PTR(pem_private_key), RSTRING_LEN(pem_private_key),
- RSTRING_PTR(pem_cert_chain), RSTRING_LEN(pem_cert_chain));
- } else if (pem_private_key == Qnil) {
- creds = grpc_ssl_credentials_create(
- RSTRING_PTR(pem_root_certs), RSTRING_LEN(pem_root_certs), NULL, 0,
- RSTRING_PTR(pem_cert_chain), RSTRING_LEN(pem_cert_chain));
+ creds = grpc_ssl_credentials_create(RSTRING_PTR(pem_root_certs), NULL);
} else {
+ grpc_ssl_pem_key_cert_pair key_cert_pair = {RSTRING_PTR(pem_private_key),
+ RSTRING_PTR(pem_cert_chain)};
creds = grpc_ssl_credentials_create(
- RSTRING_PTR(pem_root_certs), RSTRING_LEN(pem_root_certs),
- RSTRING_PTR(pem_private_key), RSTRING_LEN(pem_private_key), NULL, 0);
+ RSTRING_PTR(pem_root_certs), &key_cert_pair);
}
if (creds == NULL) {
rb_raise(rb_eRuntimeError, "could not create a credentials, not sure why");
diff --git a/src/ruby/ext/grpc/rb_server_credentials.c b/src/ruby/ext/grpc/rb_server_credentials.c
index e534c11..4f6c67e 100644
--- a/src/ruby/ext/grpc/rb_server_credentials.c
+++ b/src/ruby/ext/grpc/rb_server_credentials.c
@@ -145,8 +145,10 @@
static VALUE grpc_rb_server_credentials_init(VALUE self, VALUE pem_root_certs,
VALUE pem_private_key,
VALUE pem_cert_chain) {
+ /* TODO support multiple key cert pairs in the ruby API. */
grpc_rb_server_credentials *wrapper = NULL;
grpc_server_credentials *creds = NULL;
+ grpc_ssl_pem_key_cert_pair key_cert_pair = {NULL, NULL};
Data_Get_Struct(self, grpc_rb_server_credentials, wrapper);
if (pem_cert_chain == Qnil) {
rb_raise(rb_eRuntimeError,
@@ -157,15 +159,13 @@
"could not create a server credential: nil pem_private_key");
return Qnil;
}
+ key_cert_pair.private_key = RSTRING_PTR(pem_private_key);
+ key_cert_pair.cert_chain = RSTRING_PTR(pem_cert_chain);
if (pem_root_certs == Qnil) {
- creds = grpc_ssl_server_credentials_create(
- NULL, 0, RSTRING_PTR(pem_private_key), RSTRING_LEN(pem_private_key),
- RSTRING_PTR(pem_cert_chain), RSTRING_LEN(pem_cert_chain));
+ creds = grpc_ssl_server_credentials_create(NULL, &key_cert_pair, 1);
} else {
- creds = grpc_ssl_server_credentials_create(
- RSTRING_PTR(pem_root_certs), RSTRING_LEN(pem_root_certs),
- RSTRING_PTR(pem_private_key), RSTRING_LEN(pem_private_key),
- RSTRING_PTR(pem_cert_chain), RSTRING_LEN(pem_cert_chain));
+ creds = grpc_ssl_server_credentials_create(RSTRING_PTR(pem_root_certs),
+ &key_cert_pair, 1);
}
if (creds == NULL) {
rb_raise(rb_eRuntimeError, "could not create a credentials, not sure why");
diff --git a/templates/Makefile.template b/templates/Makefile.template
index 0b94aa1..11b9438 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -196,6 +196,13 @@
OPENSSL_ALPN_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/openssl-alpn.c -lssl -lcrypto -ldl $(LDFLAGS)
ZLIB_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/zlib.c -lz $(LDFLAGS)
+PERFTOOLS_CHECK_CMD = $(CC) $(CFLAGS) $(CPPFLAGS) -o /dev/null test/build/perftools.c -lprofiler $(LDFLAGS)
+
+HAS_SYSTEM_PERFTOOLS = $(shell $(PERFTOOLS_CHECK_CMD) 2> /dev/null && echo true || echo false)
+ifeq ($(HAS_SYSTEM_PERFTOOLS),true)
+DEFINES += GRPC_HAVE_PERFTOOLS
+LIBS += profiler
+endif
ifndef REQUIRE_CUSTOM_LIBRARIES_$(CONFIG)
HAS_SYSTEM_OPENSSL_ALPN = $(shell $(OPENSSL_ALPN_CHECK_CMD) 2> /dev/null && echo true || echo false)
@@ -344,7 +351,7 @@
static_c: \
% for lib in libs:
-% if lib.build == 'all' and not lib.get('c++', False):
+% if lib.build == 'all' and lib.language == 'c':
libs/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@@ -352,7 +359,7 @@
static_cxx: \
% for lib in libs:
-% if lib.build == 'all' and lib.get('c++', False):
+% if lib.build == 'all' and lib.language == 'c++':
libs/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@@ -362,7 +369,7 @@
shared_c: \
% for lib in libs:
-% if lib.build == 'all' and not lib.get('c++', False):
+% if lib.build == 'all' and lib.language == 'c':
libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
% endif
% endfor
@@ -370,7 +377,7 @@
shared_cxx: \
% for lib in libs:
-% if lib.build == 'all' and lib.get('c++', False):
+% if lib.build == 'all' and lib.language == 'c++':
libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)\
% endif
% endfor
@@ -380,7 +387,7 @@
privatelibs_c: \
% for lib in libs:
-% if lib.build == 'private' and not lib.get('c++', False):
+% if lib.build == 'private' and lib.language == 'c':
libs/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@@ -388,7 +395,7 @@
privatelibs_cxx: \
% for lib in libs:
-% if lib.build == 'private' and lib.get('c++', False):
+% if lib.build == 'private' and lib.language == 'c++':
libs/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@@ -398,7 +405,7 @@
buildtests_c: privatelibs_c\
% for tgt in targets:
-% if tgt.build == 'test' and not tgt.get('c++', False):
+% if tgt.build == 'test' and not tgt.language == 'c++':
bins/$(CONFIG)/${tgt.name}\
% endif
% endfor
@@ -406,7 +413,7 @@
buildtests_cxx: privatelibs_cxx\
% for tgt in targets:
-% if tgt.build == 'test' and tgt.get('c++', False):
+% if tgt.build == 'test' and tgt.language == 'c++':
bins/$(CONFIG)/${tgt.name}\
% endif
% endfor
@@ -416,7 +423,7 @@
test_c: buildtests_c
% for tgt in targets:
-% if tgt.build == 'test' and tgt.get('run', True) and not tgt.get('c++', False):
+% if tgt.build == 'test' and tgt.get('run', True) and not tgt.language == 'c++':
$(E) "[RUN] Testing ${tgt.name}"
$(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
% endif
@@ -425,7 +432,7 @@
test_cxx: buildtests_cxx
% for tgt in targets:
-% if tgt.build == 'test' and tgt.get('run', True) and tgt.get('c++', False):
+% if tgt.build == 'test' and tgt.get('run', True) and tgt.language == 'c++':
$(E) "[RUN] Testing ${tgt.name}"
$(Q) ./bins/$(CONFIG)/${tgt.name} || ( echo test ${tgt.name} failed ; exit 1 )
% endif
@@ -463,7 +470,7 @@
strip-static_c: static_c
% for lib in libs:
-% if not lib.get("c++", False):
+% if lib.language == "c":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.a"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a
@@ -473,7 +480,7 @@
strip-static_cxx: static_cxx
% for lib in libs:
-% if lib.get("c++", False):
+% if lib.language == "c++":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.a"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.a
@@ -483,7 +490,7 @@
strip-shared_c: shared_c
% for lib in libs:
-% if not lib.get("c++", False):
+% if lib.language == "c":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.so"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
@@ -493,7 +500,7 @@
strip-shared_cxx: shared_cxx
% for lib in libs:
-% if lib.get("c++", False):
+% if lib.language == "c++":
% if lib.build == "all":
$(E) "[STRIP] Stripping lib${lib.name}.so"
$(Q) $(STRIP) libs/$(CONFIG)/lib${lib.name}.$(SHARED_EXT)
@@ -550,7 +557,7 @@
install-static_c: static_c strip-static_c
% for lib in libs:
-% if not lib.get("c++", False):
+% if lib.language == "c":
% if lib.build == "all":
$(E) "[INSTALL] Installing lib${lib.name}.a"
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
@@ -560,7 +567,7 @@
install-static_cxx: static_cxx strip-static_cxx
% for lib in libs:
-% if lib.get("c++", False):
+% if lib.language == "c++":
% if lib.build == "all":
$(E) "[INSTALL] Installing lib${lib.name}.a"
$(Q) $(INSTALL) libs/$(CONFIG)/lib${lib.name}.a $(prefix)/lib/lib${lib.name}.a
@@ -570,7 +577,7 @@
install-shared_c: shared_c strip-shared_c
% for lib in libs:
-% if not lib.get("c++", False):
+% if lib.language == "c":
% if lib.build == "all":
ifeq ($(SYSTEM),MINGW32)
$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
@@ -594,7 +601,7 @@
install-shared_cxx: shared_cxx strip-shared_cxx
% for lib in libs:
-% if lib.get("c++", False):
+% if lib.language == "c++":
% if lib.build == "all":
ifeq ($(SYSTEM),MINGW32)
$(E) "[INSTALL] Installing ${lib.name}.$(SHARED_EXT)"
@@ -642,7 +649,7 @@
% endfor
% if "public_headers" in lib:
-% if lib.get("c++", False):
+% if lib.language == "c++":
PUBLIC_HEADERS_CXX += \\
% else:
@@ -702,7 +709,7 @@
% endif
<%
- if lib.get('c++', False):
+ if lib.language == 'c++':
ld = '$(LDXX)'
else:
ld = '$(LD)'
@@ -811,7 +818,7 @@
libs/$(CONFIG)/lib${dep}.a\
% endfor
-% if tgt.get("c++", False):
+% if tgt.language == "c++":
## C++ targets specificies.
% if tgt.build == 'protoc':
$(E) "[HOSTLD] Linking $@"
@@ -834,7 +841,7 @@
% for dep in tgt.deps:
libs/$(CONFIG)/lib${dep}.a\
% endfor
-% if tgt.get("c++", False):
+% if tgt.language == "c++":
% if tgt.build == 'protoc':
$(HOST_LDLIBSXX)\
% else:
diff --git a/templates/tools/run_tests/tests.json.template b/templates/tools/run_tests/tests.json.template
new file mode 100644
index 0000000..04a5137
--- /dev/null
+++ b/templates/tools/run_tests/tests.json.template
@@ -0,0 +1,9 @@
+<%!
+import json
+%>
+
+${json.dumps([{"name": tgt.name, "language": tgt.language}
+ for tgt in targets
+ if tgt.build == "test" and tgt.name[-5:] == "_test"],
+ sort_keys=True, indent=2)}
+
diff --git a/templates/vsprojects/vs2013/grpc.sln.template b/templates/vsprojects/vs2013/grpc.sln.template
index fa32f1c..fe85d03 100644
--- a/templates/vsprojects/vs2013/grpc.sln.template
+++ b/templates/vsprojects/vs2013/grpc.sln.template
@@ -23,7 +23,7 @@
projects = [project for project in projects if project.get('vs_project_guid', None)]
## Exclude C++ projects for now
-projects = [project for project in projects if not project.get('c++', False)]
+projects = [project for project in projects if not project.language == 'c++']
for p in projects:
p.deps = p.get('deps',[])
diff --git a/test/build/perftools.c b/test/build/perftools.c
new file mode 100644
index 0000000..03548b4
--- /dev/null
+++ b/test/build/perftools.c
@@ -0,0 +1,7 @@
+#include <gperftools/profiler.h>
+
+int main() {
+ ProfilerStart("/dev/null");
+ ProfilerStop();
+ return 0;
+}
diff --git a/test/core/channel/channel_stack_test.c b/test/core/channel/channel_stack_test.c
index fb52fe3..d0ea79c 100644
--- a/test/core/channel/channel_stack_test.c
+++ b/test/core/channel/channel_stack_test.c
@@ -78,9 +78,9 @@
static void test_create_channel_stack(void) {
const grpc_channel_filter filter = {
- call_func, channel_func,
+ call_func, channel_func,
- sizeof(int), call_init_func, call_destroy_func,
+ sizeof(int), call_init_func, call_destroy_func,
sizeof(int), channel_init_func, channel_destroy_func,
};
diff --git a/test/core/channel/metadata_buffer_test.c b/test/core/channel/metadata_buffer_test.c
index 5604e25..aa23992 100644
--- a/test/core/channel/metadata_buffer_test.c
+++ b/test/core/channel/metadata_buffer_test.c
@@ -78,7 +78,7 @@
GPR_ASSERT(op->dir == GRPC_CALL_DOWN);
GPR_ASSERT(op->flags == *n);
GPR_ASSERT(op->done_cb == do_nothing);
- GPR_ASSERT(op->user_data == (void *)(gpr_uintptr)*n);
+ GPR_ASSERT(op->user_data == (void *)(gpr_uintptr) * n);
GPR_ASSERT(0 == gpr_slice_cmp(op->data.metadata->key->slice, key));
GPR_ASSERT(0 == gpr_slice_cmp(op->data.metadata->value->slice, value));
@@ -148,7 +148,7 @@
op.flags = i;
op.data.metadata = grpc_mdelem_from_slices(mdctx, key, value);
op.done_cb = do_nothing;
- op.user_data = (void *)(gpr_uintptr)i;
+ op.user_data = (void *)(gpr_uintptr) i;
grpc_metadata_buffer_queue(&buffer, &op);
}
diff --git a/test/core/end2end/cq_verifier.c b/test/core/end2end/cq_verifier.c
index 60b0bf3..9fa5131 100644
--- a/test/core/end2end/cq_verifier.c
+++ b/test/core/end2end/cq_verifier.c
@@ -495,4 +495,3 @@
void cq_expect_server_shutdown(cq_verifier *v, void *tag) {
add(v, GRPC_SERVER_SHUTDOWN, tag);
}
-
diff --git a/test/core/end2end/data/prod_roots_certs.c b/test/core/end2end/data/prod_roots_certs.c
index 21a199c..3b66d23 100644
--- a/test/core/end2end/data/prod_roots_certs.c
+++ b/test/core/end2end/data/prod_roots_certs.c
@@ -31,7 +31,7 @@
*
*/
-unsigned char prod_roots_certs[] = {
+const char prod_roots_certs[] = {
0x23, 0x20, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x3a, 0x20, 0x43, 0x4e,
0x3d, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72,
0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52,
@@ -11270,5 +11270,4 @@
0x33, 0x50, 0x59, 0x74, 0x6c, 0x4e, 0x58, 0x4c, 0x66, 0x62, 0x51, 0x34,
0x64, 0x64, 0x49, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44,
0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45,
- 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a};
-unsigned int prod_roots_certs_size = 134862;
+ 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x00};
diff --git a/test/core/end2end/data/server1_cert.c b/test/core/end2end/data/server1_cert.c
index da1d366..134b9cb 100644
--- a/test/core/end2end/data/server1_cert.c
+++ b/test/core/end2end/data/server1_cert.c
@@ -31,7 +31,7 @@
*
*/
-unsigned char test_server1_cert[] = {
+const char test_server1_cert[] = {
0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x6d, 0x7a, 0x43, 0x43,
@@ -112,5 +112,4 @@
0x32, 0x77, 0x65, 0x2f, 0x4b, 0x44, 0x34, 0x6f, 0x6a, 0x66, 0x39, 0x73,
0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43,
0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
- 0x2d, 0x2d, 0x2d, 0x0a};
-unsigned int test_server1_cert_size = 964;
+ 0x2d, 0x2d, 0x2d, 0x0a, 0x00};
diff --git a/test/core/end2end/data/server1_key.c b/test/core/end2end/data/server1_key.c
index 3540505..992d3c0 100644
--- a/test/core/end2end/data/server1_key.c
+++ b/test/core/end2end/data/server1_key.c
@@ -31,7 +31,7 @@
*
*/
-unsigned char test_server1_key[] = {
+const char test_server1_key[] = {
0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x52,
0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x20, 0x4b,
0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43,
@@ -105,5 +105,4 @@
0x6e, 0x68, 0x66, 0x66, 0x46, 0x79, 0x65, 0x37, 0x53, 0x42, 0x58, 0x79,
0x61, 0x67, 0x3d, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x45, 0x4e,
0x44, 0x20, 0x52, 0x53, 0x41, 0x20, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54,
- 0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a};
-unsigned int test_server1_key_size = 887;
+ 0x45, 0x20, 0x4b, 0x45, 0x59, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x00};
diff --git a/test/core/end2end/data/ssl_test_data.h b/test/core/end2end/data/ssl_test_data.h
index 6ac1994..3456ebe 100644
--- a/test/core/end2end/data/ssl_test_data.h
+++ b/test/core/end2end/data/ssl_test_data.h
@@ -34,14 +34,10 @@
#ifndef __GRPC_TEST_END2END_DATA_SSL_TEST_DATA_H__
#define __GRPC_TEST_END2END_DATA_SSL_TEST_DATA_H__
-extern unsigned char test_root_cert[];
-extern unsigned int test_root_cert_size;
-extern unsigned char test_server1_cert[];
-extern unsigned int test_server1_cert_size;
-extern unsigned char test_server1_key[];
-extern unsigned int test_server1_key_size;
+extern const char test_root_cert[];
+extern const char test_server1_cert[];
+extern const char test_server1_key[];
-extern unsigned char prod_roots_certs[];
-extern unsigned int prod_roots_certs_size;
+extern const char prod_roots_certs[];
#endif /* __GRPC_TEST_END2END_DATA_SSL_TEST_DATA_H__ */
diff --git a/test/core/end2end/data/test_root_cert.c b/test/core/end2end/data/test_root_cert.c
index fd01953..f358b0b 100644
--- a/test/core/end2end/data/test_root_cert.c
+++ b/test/core/end2end/data/test_root_cert.c
@@ -31,7 +31,7 @@
*
*/
-unsigned char test_root_cert[] = {
+const char test_root_cert[] = {
0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x20, 0x43,
0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d,
0x2d, 0x2d, 0x2d, 0x0a, 0x4d, 0x49, 0x49, 0x43, 0x49, 0x7a, 0x43, 0x43,
@@ -98,5 +98,4 @@
0x31, 0x59, 0x75, 0x58, 0x32, 0x72, 0x6e, 0x65, 0x78, 0x30, 0x4a, 0x68,
0x75, 0x54, 0x51, 0x66, 0x63, 0x49, 0x3d, 0x0a, 0x2d, 0x2d, 0x2d, 0x2d,
0x2d, 0x45, 0x4e, 0x44, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49,
- 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a};
-unsigned int test_root_cert_size = 802;
+ 0x43, 0x41, 0x54, 0x45, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x0a, 0x00};
diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c
index 7718d30..e5cdec8 100644
--- a/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c
+++ b/test/core/end2end/fixtures/chttp2_simple_ssl_fullstack.c
@@ -98,8 +98,8 @@
static void chttp2_init_client_simple_ssl_secure_fullstack(
grpc_end2end_test_fixture *f, grpc_channel_args *client_args) {
- grpc_credentials *ssl_creds = grpc_ssl_credentials_create(
- test_root_cert, test_root_cert_size, NULL, 0, NULL, 0);
+ grpc_credentials *ssl_creds =
+ grpc_ssl_credentials_create(test_root_cert, NULL);
grpc_arg ssl_name_override = {GRPC_ARG_STRING,
GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
{"foo.test.google.com"}};
@@ -111,9 +111,10 @@
static void chttp2_init_server_simple_ssl_secure_fullstack(
grpc_end2end_test_fixture *f, grpc_channel_args *server_args) {
- grpc_server_credentials *ssl_creds = grpc_ssl_server_credentials_create(
- NULL, 0, test_server1_key, test_server1_key_size, test_server1_cert,
- test_server1_cert_size);
+ grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key,
+ test_server1_cert};
+ grpc_server_credentials *ssl_creds =
+ grpc_ssl_server_credentials_create(NULL, &pem_cert_key_pair, 1);
chttp2_init_server_secure_fullstack(f, server_args, ssl_creds);
}
diff --git a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c
index bb8af88..8bfa465 100644
--- a/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c
+++ b/test/core/end2end/fixtures/chttp2_simple_ssl_with_oauth2_fullstack.c
@@ -99,8 +99,7 @@
static void chttp2_init_client_simple_ssl_with_oauth2_secure_fullstack(
grpc_end2end_test_fixture *f, grpc_channel_args *client_args) {
- grpc_credentials *ssl_creds = grpc_ssl_credentials_create(
- test_root_cert, test_root_cert_size, NULL, 0, NULL, 0);
+ grpc_credentials *ssl_creds = grpc_ssl_credentials_create(test_root_cert, NULL);
grpc_credentials *oauth2_creds =
grpc_fake_oauth2_credentials_create("Bearer aaslkfjs424535asdf", 1);
grpc_credentials *ssl_oauth2_creds =
@@ -118,9 +117,10 @@
static void chttp2_init_server_simple_ssl_secure_fullstack(
grpc_end2end_test_fixture *f, grpc_channel_args *server_args) {
- grpc_server_credentials *ssl_creds = grpc_ssl_server_credentials_create(
- NULL, 0, test_server1_key, test_server1_key_size, test_server1_cert,
- test_server1_cert_size);
+ grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {test_server1_key,
+ test_server1_cert};
+ grpc_server_credentials *ssl_creds =
+ grpc_ssl_server_credentials_create(NULL, &pem_key_cert_pair, 1);
chttp2_init_server_secure_fullstack(f, server_args, ssl_creds);
}
diff --git a/test/core/end2end/gen_build_json.py b/test/core/end2end/gen_build_json.py
index 8a851dd..2c4368f 100755
--- a/test/core/end2end/gen_build_json.py
+++ b/test/core/end2end/gen_build_json.py
@@ -48,6 +48,7 @@
{
'name': 'end2end_fixture_%s' % f,
'build': 'private',
+ 'language': 'c',
'secure': True,
'src': ['test/core/end2end/fixtures/%s.c' % f]
}
@@ -55,6 +56,7 @@
{
'name': 'end2end_test_%s' % t,
'build': 'private',
+ 'language': 'c',
'secure': False,
'src': ['test/core/end2end/tests/%s.c' % t],
'headers': ['test/core/end2end/tests/cancel_test_helpers.h']
@@ -63,6 +65,7 @@
{
'name': 'end2end_certs',
'build': 'private',
+ 'language': 'c',
'src': [
"test/core/end2end/data/test_root_cert.c",
"test/core/end2end/data/prod_roots_certs.c",
@@ -75,6 +78,7 @@
{
'name': '%s_%s_test' % (f, t),
'build': 'test',
+ 'language': 'c',
'src': [],
'deps': [
'end2end_fixture_%s' % f,
diff --git a/test/core/end2end/tests/max_concurrent_streams.c b/test/core/end2end/tests/max_concurrent_streams.c
index e88f418..1db32b1 100644
--- a/test/core/end2end/tests/max_concurrent_streams.c
+++ b/test/core/end2end/tests/max_concurrent_streams.c
@@ -203,7 +203,7 @@
GPR_ASSERT(ev->data.invoke_accepted == GRPC_OP_OK);
/* The /alpha or /beta calls started above could be invoked (but NOT both);
* check this here */
- live_call = (int)(gpr_intptr)ev->tag;
+ live_call = (int)(gpr_intptr) ev->tag;
live_call_obj = live_call == 300 ? c1 : c2;
grpc_event_finish(ev);
diff --git a/test/core/end2end/tests/thread_stress.c b/test/core/end2end/tests/thread_stress.c
index 5410258..2de0497 100644
--- a/test/core/end2end/tests/thread_stress.c
+++ b/test/core/end2end/tests/thread_stress.c
@@ -282,11 +282,11 @@
/* kick off threads */
for (i = 0; i < CLIENT_THREADS; i++) {
gpr_event_init(&g_client_done[i]);
- gpr_thd_new(&thd_id, client_thread, (void *)(gpr_intptr)i, NULL);
+ gpr_thd_new(&thd_id, client_thread, (void *)(gpr_intptr) i, NULL);
}
for (i = 0; i < SERVER_THREADS; i++) {
gpr_event_init(&g_server_done[i]);
- gpr_thd_new(&thd_id, server_thread, (void *)(gpr_intptr)i, NULL);
+ gpr_thd_new(&thd_id, server_thread, (void *)(gpr_intptr) i, NULL);
}
/* start requests */
diff --git a/test/core/fling/server.c b/test/core/fling/server.c
index 705ab3a..f811aac 100644
--- a/test/core/fling/server.c
+++ b/test/core/fling/server.c
@@ -32,6 +32,7 @@
*/
#include <grpc/grpc.h>
+#include <grpc/grpc_security.h>
#include <signal.h>
#include <stdio.h>
@@ -47,6 +48,7 @@
#include <grpc/support/log.h>
#include <grpc/support/time.h>
#include "test/core/util/port.h"
+#include "test/core/end2end/data/ssl_test_data.h"
static grpc_completion_queue *cq;
static grpc_server *server;
@@ -98,8 +100,18 @@
gpr_log(GPR_INFO, "creating server on: %s", addr);
cq = grpc_completion_queue_create();
- server = grpc_server_create(cq, NULL);
- GPR_ASSERT(grpc_server_add_http2_port(server, addr));
+ if (secure) {
+ grpc_ssl_pem_key_cert_pair pem_key_cert_pair = {test_server1_key,
+ test_server1_cert};
+ grpc_server_credentials *ssl_creds =
+ grpc_ssl_server_credentials_create(NULL, &pem_key_cert_pair, 1);
+ server = grpc_secure_server_create(ssl_creds, cq, NULL);
+ GPR_ASSERT(grpc_server_add_secure_http2_port(server, addr));
+ grpc_server_credentials_release(ssl_creds);
+ } else {
+ server = grpc_server_create(cq, NULL);
+ GPR_ASSERT(grpc_server_add_http2_port(server, addr));
+ }
grpc_server_start(server);
gpr_free(addr_buf);
diff --git a/test/core/iomgr/alarm_list_test.c b/test/core/iomgr/alarm_list_test.c
index a250951..ce9b7f4 100644
--- a/test/core/iomgr/alarm_list_test.c
+++ b/test/core/iomgr/alarm_list_test.c
@@ -61,13 +61,13 @@
/* 10 ms alarms. will expire in the current epoch */
for (i = 0; i < 10; i++) {
grpc_alarm_init(&alarms[i], gpr_time_add(start, gpr_time_from_millis(10)),
- cb, (void *)(gpr_intptr)i, start);
+ cb, (void *)(gpr_intptr) i, start);
}
/* 1010 ms alarms. will expire in the next epoch */
for (i = 10; i < 20; i++) {
grpc_alarm_init(&alarms[i], gpr_time_add(start, gpr_time_from_millis(1010)),
- cb, (void *)(gpr_intptr)i, start);
+ cb, (void *)(gpr_intptr) i, start);
}
/* collect alarms. Only the first batch should be ready. */
@@ -115,15 +115,15 @@
memset(cb_called, 0, sizeof(cb_called));
grpc_alarm_init(&alarms[0], gpr_time_from_millis(100), cb,
- (void *)(gpr_intptr)0, gpr_time_0);
+ (void *)(gpr_intptr) 0, gpr_time_0);
grpc_alarm_init(&alarms[1], gpr_time_from_millis(3), cb,
- (void *)(gpr_intptr)1, gpr_time_0);
+ (void *)(gpr_intptr) 1, gpr_time_0);
grpc_alarm_init(&alarms[2], gpr_time_from_millis(100), cb,
- (void *)(gpr_intptr)2, gpr_time_0);
+ (void *)(gpr_intptr) 2, gpr_time_0);
grpc_alarm_init(&alarms[3], gpr_time_from_millis(3), cb,
- (void *)(gpr_intptr)3, gpr_time_0);
+ (void *)(gpr_intptr) 3, gpr_time_0);
grpc_alarm_init(&alarms[4], gpr_time_from_millis(1), cb,
- (void *)(gpr_intptr)4, gpr_time_0);
+ (void *)(gpr_intptr) 4, gpr_time_0);
GPR_ASSERT(1 == grpc_alarm_check(NULL, gpr_time_from_millis(2), NULL));
GPR_ASSERT(1 == cb_called[4][1]);
grpc_alarm_cancel(&alarms[0]);
diff --git a/test/core/iomgr/endpoint_tests.c b/test/core/iomgr/endpoint_tests.c
index 125cde4..dc5747b 100644
--- a/test/core/iomgr/endpoint_tests.c
+++ b/test/core/iomgr/endpoint_tests.c
@@ -290,7 +290,7 @@
if (error != GRPC_ENDPOINT_CB_OK) {
grpc_endpoint_destroy(st->ep);
- gpr_event_set(&st->ev, (void *)(gpr_intptr)error);
+ gpr_event_set(&st->ev, (void *)(gpr_intptr) error);
} else {
grpc_endpoint_notify_on_read(
st->ep, shutdown_during_write_test_read_handler, user_data);
@@ -309,7 +309,7 @@
gpr_log(GPR_ERROR,
"shutdown_during_write_test_write_handler completed unexpectedly");
}
- gpr_event_set(&st->ev, (void *)(gpr_intptr)1);
+ gpr_event_set(&st->ev, (void *)(gpr_intptr) 1);
}
static void shutdown_during_write_test(grpc_endpoint_test_config config,
diff --git a/test/core/iomgr/poll_kick_test.c b/test/core/iomgr/poll_kick_test.c
new file mode 100644
index 0000000..c30a7b9
--- /dev/null
+++ b/test/core/iomgr/poll_kick_test.c
@@ -0,0 +1,123 @@
+/*
+ *
+ * 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/iomgr/pollset_kick.h"
+
+#include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
+#include "test/core/util/test_config.h"
+
+static void test_allocation(void) {
+ grpc_pollset_kick_state state;
+ grpc_pollset_kick_init(&state);
+ grpc_pollset_kick_destroy(&state);
+}
+
+static void test_non_kick(void) {
+ grpc_pollset_kick_state state;
+ int fd;
+
+ grpc_pollset_kick_init(&state);
+ fd = grpc_pollset_kick_pre_poll(&state);
+ GPR_ASSERT(fd >= 0);
+
+ grpc_pollset_kick_post_poll(&state);
+ grpc_pollset_kick_destroy(&state);
+}
+
+static void test_basic_kick(void) {
+ /* Kicked during poll */
+ grpc_pollset_kick_state state;
+ int fd;
+ grpc_pollset_kick_init(&state);
+
+ fd = grpc_pollset_kick_pre_poll(&state);
+ GPR_ASSERT(fd >= 0);
+
+ grpc_pollset_kick_kick(&state);
+
+ /* Now hypothetically we polled and found that we were kicked */
+ grpc_pollset_kick_consume(&state);
+
+ grpc_pollset_kick_post_poll(&state);
+
+ grpc_pollset_kick_destroy(&state);
+}
+
+static void test_non_poll_kick(void) {
+ /* Kick before entering poll */
+ grpc_pollset_kick_state state;
+ int fd;
+
+ grpc_pollset_kick_init(&state);
+
+ grpc_pollset_kick_kick(&state);
+ fd = grpc_pollset_kick_pre_poll(&state);
+ GPR_ASSERT(fd < 0);
+ grpc_pollset_kick_destroy(&state);
+}
+
+#define GRPC_MAX_CACHED_PIPES 50
+
+static void test_over_free(void) {
+ /* Check high watermark pipe free logic */
+ int i;
+ struct grpc_pollset_kick_state *kick_state =
+ gpr_malloc(sizeof(grpc_pollset_kick_state) * GRPC_MAX_CACHED_PIPES);
+ for (i = 0; i < GRPC_MAX_CACHED_PIPES; ++i) {
+ int fd;
+ grpc_pollset_kick_init(&kick_state[i]);
+ fd = grpc_pollset_kick_pre_poll(&kick_state[i]);
+ GPR_ASSERT(fd >= 0);
+ }
+
+ for (i = 0; i < GRPC_MAX_CACHED_PIPES; ++i) {
+ grpc_pollset_kick_post_poll(&kick_state[i]);
+ grpc_pollset_kick_destroy(&kick_state[i]);
+ }
+}
+
+int main(int argc, char **argv) {
+ grpc_test_init(argc, argv);
+
+ grpc_pollset_kick_global_init();
+
+ test_allocation();
+ test_basic_kick();
+ test_non_poll_kick();
+ test_non_kick();
+ test_over_free();
+
+ grpc_pollset_kick_global_destroy();
+ return 0;
+}
diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c
index 619f093..9c60f4c 100644
--- a/test/core/security/credentials_test.c
+++ b/test/core/security/credentials_test.c
@@ -48,7 +48,7 @@
static const char test_iam_authority_selector[] = "respectmyauthoritah";
static const char test_oauth2_bearer_token[] =
"Bearer blaaslkdjfaslkdfasdsfasf";
-static const unsigned char test_root_cert[] = {0xDE, 0xAD, 0xBE, 0xEF};
+static const char test_root_cert[] = "I am the root!";
/* This JSON key was generated with the GCE console and revoked immediately.
The identifiers have been changed as well.
@@ -275,8 +275,8 @@
}
static void test_ssl_oauth2_composite_creds(void) {
- grpc_credentials *ssl_creds = grpc_ssl_credentials_create(
- test_root_cert, sizeof(test_root_cert), NULL, 0, NULL, 0);
+ grpc_credentials *ssl_creds =
+ grpc_ssl_credentials_create(test_root_cert, NULL);
const grpc_credentials_array *creds_array;
grpc_credentials *oauth2_creds =
grpc_fake_oauth2_credentials_create(test_oauth2_bearer_token, 0);
@@ -312,8 +312,8 @@
}
static void test_ssl_oauth2_iam_composite_creds(void) {
- grpc_credentials *ssl_creds = grpc_ssl_credentials_create(
- test_root_cert, sizeof(test_root_cert), NULL, 0, NULL, 0);
+ grpc_credentials *ssl_creds =
+ grpc_ssl_credentials_create(test_root_cert, NULL);
const grpc_credentials_array *creds_array;
grpc_credentials *oauth2_creds =
grpc_fake_oauth2_credentials_create(test_oauth2_bearer_token, 0);
diff --git a/test/core/statistics/hash_table_test.c b/test/core/statistics/hash_table_test.c
index 5d05ab5..ebfc2a2 100644
--- a/test/core/statistics/hash_table_test.c
+++ b/test/core/statistics/hash_table_test.c
@@ -64,8 +64,8 @@
static void test_create_table(void) {
/* Create table with uint64 key type */
census_ht* ht = NULL;
- census_ht_option ht_options = {CENSUS_HT_UINT64, 1999, NULL, NULL, NULL,
- NULL};
+ census_ht_option ht_options = {CENSUS_HT_UINT64, 1999, NULL,
+ NULL, NULL, NULL};
ht = census_ht_create(&ht_options);
GPR_ASSERT(ht != NULL);
GPR_ASSERT(census_ht_get_size(ht) == 0);
@@ -119,8 +119,8 @@
/* Test that there is no memory leak when keys and values are owned by table. */
static void test_value_and_key_deleter(void) {
- census_ht_option opt = {CENSUS_HT_POINTER, 7, &hash64, &cmp_str_keys,
- &free_data, &free_data};
+ census_ht_option opt = {CENSUS_HT_POINTER, 7, &hash64,
+ &cmp_str_keys, &free_data, &free_data};
census_ht* ht = census_ht_create(&opt);
census_ht_key key;
char* val = NULL;
@@ -184,8 +184,8 @@
}
static void test_insertion_and_deletion_with_high_collision_rate(void) {
- census_ht_option opt = {CENSUS_HT_POINTER, 13, &force_collision,
- &cmp_str_keys, NULL, NULL};
+ census_ht_option opt = {CENSUS_HT_POINTER, 13, &force_collision,
+ &cmp_str_keys, NULL, NULL};
census_ht* ht = census_ht_create(&opt);
char key_str[1000][10];
gpr_uint64 val = 0;
@@ -208,12 +208,12 @@
}
static void test_table_with_string_key(void) {
- census_ht_option opt = {CENSUS_HT_POINTER, 7, &hash64, &cmp_str_keys, NULL,
- NULL};
+ census_ht_option opt = {CENSUS_HT_POINTER, 7, &hash64,
+ &cmp_str_keys, NULL, NULL};
census_ht* ht = census_ht_create(&opt);
- const char* keys[] = {"k1", "a", "000", "apple",
- "banana_a_long_long_long_banana", "%$", "111", "foo",
- "b"};
+ const char* keys[] = {"k1", "a", "000",
+ "apple", "banana_a_long_long_long_banana", "%$",
+ "111", "foo", "b"};
const int vals[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
int i = 0;
GPR_ASSERT(ht != NULL);
diff --git a/test/core/surface/completion_queue_benchmark.c b/test/core/surface/completion_queue_benchmark.c
index e1b9d0d..5360d7c 100644
--- a/test/core/surface/completion_queue_benchmark.c
+++ b/test/core/surface/completion_queue_benchmark.c
@@ -53,23 +53,23 @@
test_thread_options *opt = arg;
int i;
- gpr_event_set(&opt->on_started, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_started, (void *)(gpr_intptr) 1);
GPR_ASSERT(gpr_event_wait(opt->start, gpr_inf_future));
for (i = 0; i < opt->iterations; i++) {
grpc_cq_begin_op(opt->cc, NULL, GRPC_WRITE_ACCEPTED);
- grpc_cq_end_write_accepted(opt->cc, (void *)(gpr_intptr)1, NULL, NULL, NULL,
- GRPC_OP_OK);
+ grpc_cq_end_write_accepted(opt->cc, (void *)(gpr_intptr) 1, NULL, NULL,
+ NULL, GRPC_OP_OK);
}
- gpr_event_set(&opt->on_finished, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_finished, (void *)(gpr_intptr) 1);
}
static void consumer_thread(void *arg) {
test_thread_options *opt = arg;
grpc_event *ev;
- gpr_event_set(&opt->on_started, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_started, (void *)(gpr_intptr) 1);
GPR_ASSERT(gpr_event_wait(opt->start, gpr_inf_future));
for (;;) {
@@ -78,7 +78,7 @@
case GRPC_WRITE_ACCEPTED:
break;
case GRPC_QUEUE_SHUTDOWN:
- gpr_event_set(&opt->on_finished, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_finished, (void *)(gpr_intptr) 1);
return;
default:
gpr_log(GPR_ERROR, "Invalid event received: %d", ev->type);
@@ -112,7 +112,7 @@
/* start the benchmark */
t_start = gpr_now();
- gpr_event_set(&start, (void *)(gpr_intptr)1);
+ gpr_event_set(&start, (void *)(gpr_intptr) 1);
/* wait for producers to finish */
for (i = 0; i < producers; i++) {
diff --git a/test/core/surface/completion_queue_test.c b/test/core/surface/completion_queue_test.c
index 71f9cc2..4bbe9cc 100644
--- a/test/core/surface/completion_queue_test.c
+++ b/test/core/surface/completion_queue_test.c
@@ -282,7 +282,7 @@
int i;
gpr_log(GPR_INFO, "producer %d started", opt->id);
- gpr_event_set(&opt->on_started, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_started, (void *)(gpr_intptr) 1);
GPR_ASSERT(gpr_event_wait(opt->phase1, ten_seconds_time()));
gpr_log(GPR_INFO, "producer %d phase 1", opt->id);
@@ -291,18 +291,18 @@
}
gpr_log(GPR_INFO, "producer %d phase 1 done", opt->id);
- gpr_event_set(&opt->on_phase1_done, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_phase1_done, (void *)(gpr_intptr) 1);
GPR_ASSERT(gpr_event_wait(opt->phase2, ten_seconds_time()));
gpr_log(GPR_INFO, "producer %d phase 2", opt->id);
for (i = 0; i < TEST_THREAD_EVENTS; i++) {
- grpc_cq_end_write_accepted(opt->cc, (void *)(gpr_intptr)1, NULL, NULL, NULL,
- GRPC_OP_OK);
+ grpc_cq_end_write_accepted(opt->cc, (void *)(gpr_intptr) 1, NULL, NULL,
+ NULL, GRPC_OP_OK);
opt->events_triggered++;
}
gpr_log(GPR_INFO, "producer %d phase 2 done", opt->id);
- gpr_event_set(&opt->on_finished, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_finished, (void *)(gpr_intptr) 1);
}
static void consumer_thread(void *arg) {
@@ -310,13 +310,13 @@
grpc_event *ev;
gpr_log(GPR_INFO, "consumer %d started", opt->id);
- gpr_event_set(&opt->on_started, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_started, (void *)(gpr_intptr) 1);
GPR_ASSERT(gpr_event_wait(opt->phase1, ten_seconds_time()));
gpr_log(GPR_INFO, "consumer %d phase 1", opt->id);
gpr_log(GPR_INFO, "consumer %d phase 1 done", opt->id);
- gpr_event_set(&opt->on_phase1_done, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_phase1_done, (void *)(gpr_intptr) 1);
GPR_ASSERT(gpr_event_wait(opt->phase2, ten_seconds_time()));
gpr_log(GPR_INFO, "consumer %d phase 2", opt->id);
@@ -331,7 +331,7 @@
break;
case GRPC_QUEUE_SHUTDOWN:
gpr_log(GPR_INFO, "consumer %d phase 2 done", opt->id);
- gpr_event_set(&opt->on_finished, (void *)(gpr_intptr)1);
+ gpr_event_set(&opt->on_finished, (void *)(gpr_intptr) 1);
grpc_event_finish(ev);
return;
default:
@@ -376,7 +376,7 @@
/* start phase1: producers will pre-declare all operations they will
complete */
gpr_log(GPR_INFO, "start phase 1");
- gpr_event_set(&phase1, (void *)(gpr_intptr)1);
+ gpr_event_set(&phase1, (void *)(gpr_intptr) 1);
gpr_log(GPR_INFO, "wait phase 1");
for (i = 0; i < producers + consumers; i++) {
@@ -386,7 +386,7 @@
/* start phase2: operations will complete, and consumers will consume them */
gpr_log(GPR_INFO, "start phase 2");
- gpr_event_set(&phase2, (void *)(gpr_intptr)1);
+ gpr_event_set(&phase2, (void *)(gpr_intptr) 1);
/* in parallel, we shutdown the completion channel - all events should still
be consumed */
diff --git a/test/core/transport/chttp2/stream_map_test.c b/test/core/transport/chttp2/stream_map_test.c
index 9b4446f..30cd63c 100644
--- a/test/core/transport/chttp2/stream_map_test.c
+++ b/test/core/transport/chttp2/stream_map_test.c
@@ -93,7 +93,7 @@
grpc_chttp2_stream_map_init(&map, 8);
GPR_ASSERT(0 == grpc_chttp2_stream_map_size(&map));
for (i = 1; i <= n; i++) {
- grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr)i);
+ grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr) i);
}
GPR_ASSERT(n == grpc_chttp2_stream_map_size(&map));
GPR_ASSERT(NULL == grpc_chttp2_stream_map_find(&map, 0));
@@ -148,7 +148,7 @@
grpc_chttp2_stream_map_init(&map, 8);
for (i = 1; i <= n; i++) {
- grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr)i);
+ grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr) i);
}
for (i = 1; i <= n; i++) {
if ((i & 1) == 0) {
@@ -170,7 +170,7 @@
grpc_chttp2_stream_map_init(&map, 8);
for (i = 1; i <= n; i++) {
- grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr)i);
+ grpc_chttp2_stream_map_add(&map, i, (void *)(gpr_uintptr) i);
if ((i & 1) == 0) {
grpc_chttp2_stream_map_delete(&map, i);
}
diff --git a/test/core/util/grpc_profiler.c b/test/core/util/grpc_profiler.c
index 340b2d5..46bfc1f 100644
--- a/test/core/util/grpc_profiler.c
+++ b/test/core/util/grpc_profiler.c
@@ -33,6 +33,22 @@
#include "test/core/util/grpc_profiler.h"
-void grpc_profiler_start(const char *filename) {}
+#if GRPC_HAVE_PERFTOOLS
+#include <gperftools/profiler.h>
+
+void grpc_profiler_start(const char *filename) { ProfilerStart(filename); }
+
+void grpc_profiler_stop() { ProfilerStop(); }
+#else
+#include <grpc/support/log.h>
+
+void grpc_profiler_start(const char *filename) {
+ gpr_log(GPR_DEBUG,
+ "You do not have google-perftools installed, profiling is disabled");
+ gpr_log(GPR_DEBUG,
+ "To install on ubuntu: sudo apt-get install google-perftools "
+ "libgoogle-perftools-dev");
+}
void grpc_profiler_stop(void) {}
+#endif
diff --git a/test/cpp/client/credentials_test.cc b/test/cpp/client/credentials_test.cc
index ea088b8..174d218 100644
--- a/test/cpp/client/credentials_test.cc
+++ b/test/cpp/client/credentials_test.cc
@@ -45,15 +45,6 @@
protected:
};
-TEST_F(CredentialsTest, InvalidSslCreds) {
- std::unique_ptr<Credentials> bad1 =
- CredentialsFactory::SslCredentials({"", "", ""});
- EXPECT_EQ(nullptr, bad1.get());
- std::unique_ptr<Credentials> bad2 =
- CredentialsFactory::SslCredentials({"", "bla", "bla"});
- EXPECT_EQ(nullptr, bad2.get());
-}
-
TEST_F(CredentialsTest, InvalidServiceAccountCreds) {
std::unique_ptr<Credentials> bad1 =
CredentialsFactory::ServiceAccountCredentials("", "",
diff --git a/test/cpp/interop/server.cc b/test/cpp/interop/server.cc
index 561b134..5b5c354 100644
--- a/test/cpp/interop/server.cc
+++ b/test/cpp/interop/server.cc
@@ -203,11 +203,7 @@
builder.RegisterService(service.service());
if (FLAGS_enable_ssl) {
SslServerCredentialsOptions ssl_opts = {
- "",
- {reinterpret_cast<const char*>(test_server1_key),
- test_server1_key_size},
- {reinterpret_cast<const char*>(test_server1_cert),
- test_server1_cert_size}};
+ "", {{test_server1_key, test_server1_cert}}};
std::shared_ptr<ServerCredentials> creds =
ServerCredentialsFactory::SslCredentials(ssl_opts);
builder.SetCredentials(creds);
diff --git a/test/cpp/util/create_test_channel.cc b/test/cpp/util/create_test_channel.cc
index f0d35d9..68f6244 100644
--- a/test/cpp/util/create_test_channel.cc
+++ b/test/cpp/util/create_test_channel.cc
@@ -56,11 +56,8 @@
ChannelArguments channel_args;
if (enable_ssl) {
const char* roots_certs =
- use_prod_roots ? reinterpret_cast<const char*>(prod_roots_certs)
- : reinterpret_cast<const char*>(test_root_cert);
- unsigned int roots_certs_size =
- use_prod_roots ? prod_roots_certs_size : test_root_cert_size;
- SslCredentialsOptions ssl_opts = {{roots_certs, roots_certs_size}, "", ""};
+ use_prod_roots ? prod_roots_certs : test_root_cert;
+ SslCredentialsOptions ssl_opts = {roots_certs, "", ""};
std::unique_ptr<Credentials> creds =
CredentialsFactory::SslCredentials(ssl_opts);
diff --git a/tools/buildgen/build-cleaner.py b/tools/buildgen/build-cleaner.py
new file mode 100755
index 0000000..f930736
--- /dev/null
+++ b/tools/buildgen/build-cleaner.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python
+# produces cleaner build.json files
+
+import collections
+import json
+import os
+import sys
+
+TEST = (os.environ.get('TEST', 'false') == 'true')
+
+_TOP_LEVEL_KEYS = ['settings', 'filegroups', 'libs', 'targets']
+_VERSION_KEYS = ['major', 'minor', 'micro', 'build']
+_ELEM_KEYS = [
+ 'name',
+ 'build',
+ 'language',
+ 'public_headers',
+ 'headers',
+ 'src',
+ 'deps']
+
+def rebuild_as_ordered_dict(indict, special_keys):
+ outdict = collections.OrderedDict()
+ for key in special_keys:
+ if key in indict:
+ outdict[key] = indict[key]
+ for key in sorted(indict.keys()):
+ if key in special_keys: continue
+ outdict[key] = indict[key]
+ return outdict
+
+def clean_elem(indict):
+ for name in ['public_headers', 'headers', 'src']:
+ if name not in indict: continue
+ inlist = indict[name]
+ protos = set(x for x in inlist if os.path.splitext(x)[1] == '.proto')
+ others = set(x for x in inlist if x not in protos)
+ indict[name] = sorted(protos) + sorted(others)
+ return rebuild_as_ordered_dict(indict, _ELEM_KEYS)
+
+for filename in sys.argv[1:]:
+ with open(filename) as f:
+ js = json.load(f)
+ js = rebuild_as_ordered_dict(js, _TOP_LEVEL_KEYS)
+ js['settings']['version'] = rebuild_as_ordered_dict(
+ js['settings']['version'], _VERSION_KEYS)
+ for grp in ['filegroups', 'libs', 'targets']:
+ if grp not in js: continue
+ js[grp] = sorted([clean_elem(x) for x in js[grp]],
+ key=lambda x: (x.get('language', '_'), x['name']))
+ output = json.dumps(js, indent = 2)
+ # massage out trailing whitespace
+ lines = []
+ for line in output.splitlines():
+ lines.append(line.rstrip() + '\n')
+ output = ''.join(lines)
+ if TEST:
+ with open(filename) as f:
+ assert f.read() == output
+ else:
+ with open(filename, 'w') as f:
+ f.write(output)
+
diff --git a/tools/buildgen/generate_projects.sh b/tools/buildgen/generate_projects.sh
index 42b1613..2e0636f 100755
--- a/tools/buildgen/generate_projects.sh
+++ b/tools/buildgen/generate_projects.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-set -x
+set -e
if [ "x$TEST" == "x" ] ; then
TEST=false
@@ -32,7 +32,7 @@
data=`for i in $json_files; do echo -n "-d $i "; done`
if [ $TEST == true ] ; then
actual_out=$out
- out=`mktemp`
+ out=`mktemp /tmp/gentXXXXXX`
fi
$mako_renderer $plugins $data -o $out $file
if [ $TEST == true ] ; then
diff --git a/tools/clang-format/clang-format-all.sh b/tools/clang-format/clang-format-all.sh
index c9caea0..62228b0 100755
--- a/tools/clang-format/clang-format-all.sh
+++ b/tools/clang-format/clang-format-all.sh
@@ -1,8 +1,9 @@
#!/bin/bash
-set -ex
+set -e
+source $(dirname $0)/config.sh
cd $(dirname $0)/../..
for dir in src test include
do
- find $dir -name '*.c' -or -name '*.cc' -or -name '*.h' | xargs clang-format -i
+ find $dir -name '*.c' -or -name '*.cc' -or -name '*.h' | xargs $CLANG_FORMAT -i
done
diff --git a/tools/clang-format/config.sh b/tools/clang-format/config.sh
new file mode 100644
index 0000000..3adf267
--- /dev/null
+++ b/tools/clang-format/config.sh
@@ -0,0 +1,11 @@
+CLANG_FORMAT=clang-format-3.5
+
+set -ex
+
+if not hash $CLANG_FORMAT 2>/dev/null; then
+ echo "$CLANG_FORMAT is needed but not installed"
+ echo "perhaps try:"
+ echo " sudo apt-get install $CLANG_FORMAT"
+ exit 1
+fi
+
diff --git a/tools/dockerfile/grpc_base/Dockerfile b/tools/dockerfile/grpc_base/Dockerfile
index 45be172..be1b69b 100644
--- a/tools/dockerfile/grpc_base/Dockerfile
+++ b/tools/dockerfile/grpc_base/Dockerfile
@@ -13,6 +13,7 @@
libc6 \
libc6-dbg \
libc6-dev \
+ libgtest-dev \
libtool \
make \
strace \
@@ -34,23 +35,13 @@
RUN $CLOUD_SDK/install.sh --usage-reporting=true --path-update=true --bash-completion=true --rc-path=/.bashrc --disable-installation-options
ENV PATH $CLOUD_SDK/bin:$PATH
-# Install gcompute-tools to allow access to private git-on-borg repos
-RUN git clone https://gerrit.googlesource.com/gcompute-tools /var/local/git/gcompute-tools
-
-# Start the daemon that allows access to private git-on-borg repos
-RUN /var/local/git/gcompute-tools/git-cookie-authdaemon
-
-# Install the grpc-tools scripts dir from git
-RUN git clone https://team.googlesource.com/one-platform-grpc-team/grpc-tools /var/local/git/grpc-tools
-
-# Install the grpc-protobuf dir that has the protoc patch
-RUN git clone https://team.googlesource.com/one-platform-grpc-team/protobuf /var/local/git/protobuf
-
-# Install the patched version of protoc
-RUN cd /var/local/git/protobuf && \
- ./autogen.sh && \
- ./configure --prefix=/usr && \
- make && make check && make install && make clean
+# Install a GitHub SSH service credential that gives access to the GitHub repo while it's private
+# TODO: remove this once the repo is public
+ADD .ssh .ssh
+RUN chmod 600 .ssh/github.rsa
+RUN mkdir -p $HOME/.ssh && echo 'Host github.com' > $HOME/.ssh/config
+RUN echo " IdentityFile /.ssh/github.rsa" >> $HOME/.ssh/config
+RUN echo 'StrictHostKeyChecking no' >> $HOME/.ssh/config
# Define the default command.
CMD ["bash"]
diff --git a/tools/dockerfile/grpc_cxx/Dockerfile b/tools/dockerfile/grpc_cxx/Dockerfile
index cf38e97..ea3a1db 100644
--- a/tools/dockerfile/grpc_cxx/Dockerfile
+++ b/tools/dockerfile/grpc_cxx/Dockerfile
@@ -1,15 +1,18 @@
# Dockerfile for gRPC C++
FROM grpc/base
-# Start the daemon that allows access to the protected git-on-borg repos
-RUN /var/local/git/gcompute-tools/git-cookie-authdaemon
+# Get the source from GitHub
+RUN git clone git@github.com:google/grpc.git /var/local/git/grpc
+RUN cd /var/local/git/grpc && \
+ git pull --recurse-submodules && \
+ git submodule update --init --recursive
-RUN git clone https://team.googlesource.com/one-platform-grpc-team/grpc /var/local/git/grpc
-RUN cd /var/local/git/grpc \
- && git pull --recurse-submodules \
- && git submodule update --init --recursive
-
+# Build the protobuf library; then the C core.
+RUN cd /var/local/git/grpc/third_party/protobuf && \
+ ./autogen.sh && \
+ ./configure --prefix=/usr && \
+ make -j12 && make check && make install && make clean
RUN make install -C /var/local/git/grpc
# Define the default command.
-CMD ["bash"]
\ No newline at end of file
+CMD ["bash"]
diff --git a/tools/dockerfile/grpc_php/Dockerfile b/tools/dockerfile/grpc_php/Dockerfile
index 0e50af7..1775876 100644
--- a/tools/dockerfile/grpc_php/Dockerfile
+++ b/tools/dockerfile/grpc_php/Dockerfile
@@ -1,9 +1,6 @@
# Dockerfile for gRPC PHP
FROM grpc/php_base
-# Start the daemon that allows access to the protected git-on-borg repos
-RUN /var/local/git/gcompute-tools/git-cookie-authdaemon
-
RUN cd /var/local/git/grpc \
&& git pull --recurse-submodules \
&& git submodule update --init --recursive
@@ -15,4 +12,4 @@
# Build the grpc PHP extension
RUN cd /var/local/git/grpc/src/php/ext/grpc \
&& ./configure \
- && make
\ No newline at end of file
+ && make
diff --git a/tools/dockerfile/grpc_php_base/Dockerfile b/tools/dockerfile/grpc_php_base/Dockerfile
index 8ec90f4..47266a3 100644
--- a/tools/dockerfile/grpc_php_base/Dockerfile
+++ b/tools/dockerfile/grpc_php_base/Dockerfile
@@ -43,9 +43,10 @@
&& tar -xf php-5.5.17.tar.gz \
&& cd php-5.5.17 \
&& ./configure --with-zlib=/usr --with-libxml-dir=ext/libxml \
- && make && make install
+ && make -j12 && make install
# Start the daemon that allows access to the protected git-on-borg repos
+RUN git clone https://gerrit.googlesource.com/gcompute-tools /var/local/git/gcompute-tools
RUN /var/local/git/gcompute-tools/git-cookie-authdaemon
# Download the patched PHP protobuf so that PHP gRPC clients can be generated
@@ -64,6 +65,18 @@
# rake: a ruby version of make used to build the PHP Protobuf extension
RUN rvm all do gem install ronn rake
+# Get the source from GitHub, this gets the protobuf library as well
+RUN git clone git@github.com:google/grpc.git /var/local/git/grpc
+RUN cd /var/local/git/grpc && \
+ git pull --recurse-submodules && \
+ git submodule update --init --recursive
+
+# Build and install the protobuf library
+RUN cd /var/local/git/grpc/third_party/protobuf && \
+ ./autogen.sh && \
+ ./configure --prefix=/usr && \
+ make -j12 && make check && make install && make clean
+
# Install the patched PHP protobuf so that PHP gRPC clients can be generated
# from proto3 schemas.
RUN cd /var/local/git/protobuf-php \
@@ -75,10 +88,7 @@
&& chmod +x phpunit.phar \
&& mv phpunit.phar /usr/local/bin/phpunit
-RUN git clone https://team.googlesource.com/one-platform-grpc-team/grpc /var/local/git/grpc
-RUN cd /var/local/git/grpc \
- && git submodule update --init --recursive
-
+# Build the C core
RUN make static_c shared_c -j12 -C /var/local/git/grpc
# Define the default command.
diff --git a/tools/dockerfile/grpc_ruby/Dockerfile b/tools/dockerfile/grpc_ruby/Dockerfile
index 9aa34bf..43ec018 100644
--- a/tools/dockerfile/grpc_ruby/Dockerfile
+++ b/tools/dockerfile/grpc_ruby/Dockerfile
@@ -1,19 +1,14 @@
# Dockerfile for gRPC Ruby
FROM grpc/ruby_base
-# Start the daemon that allows access to the protected git-on-borg repos
-RUN /var/local/git/gcompute-tools/git-cookie-authdaemon
-
+# Build the C libary
RUN cd /var/local/git/grpc \
&& git pull --recurse-submodules \
&& git submodule update --init --recursive
+# Build the C core.
RUN make install_c -C /var/local/git/grpc
-# Install the grpc gem locally with its dependencies and build the extension.
-RUN /bin/bash -l -c 'cd /var/local/git/beefcake && bundle && gem build beefcake.gemspec && gem install beefcake'
-RUN /bin/bash -l -c 'cd /var/local/git/grpc/src/ruby && bundle && rake compile:grpc && gem build grpc.gemspec && gem install grpc'
-
# TODO add a command to run the unittest tests when the bug below is fixed
# - the tests fail due to an error in the C threading library:
# they fail with 'ruby: __pthread_mutex_cond_lock_adjust for unknown reasons' at the end of a testcase
diff --git a/tools/dockerfile/grpc_ruby_base/Dockerfile b/tools/dockerfile/grpc_ruby_base/Dockerfile
index ad14e43..b2af9d7 100644
--- a/tools/dockerfile/grpc_ruby_base/Dockerfile
+++ b/tools/dockerfile/grpc_ruby_base/Dockerfile
@@ -31,15 +31,6 @@
sqlite3 \
zlib1g-dev
-
-# Start the daemon that allows access to the protected git-on-borg repos
-RUN /var/local/git/gcompute-tools/git-cookie-authdaemon
-
-# Download the patched Ruby protobuf (beefcake) so that Ruby gRPC clients can
-# be generated from proto3 schemas.
-RUN git clone https://team.googlesource.com/one-platform-grpc-team/grpc-ruby-beefcake \
- /var/local/git/beefcake
-
# Install RVM, use this to install ruby
RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 # Needed for RVM
RUN /bin/bash -l -c "curl -L get.rvm.io | bash -s stable"
@@ -52,8 +43,17 @@
RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
-RUN git clone https://team.googlesource.com/one-platform-grpc-team/grpc /var/local/git/grpc
-RUN cd /var/local/git/grpc \
- && git submodule update --init --recursive
+# Get the source from GitHub
+RUN git clone git@github.com:google/grpc.git /var/local/git/grpc
+RUN cd /var/local/git/grpc && \
+ git pull --recurse-submodules && \
+ git submodule update --init --recursive
-RUN make static_c shared_c -C /var/local/git/grpc
\ No newline at end of file
+# Build and install the protobuf library
+RUN cd /var/local/git/grpc/third_party/protobuf && \
+ ./autogen.sh && \
+ ./configure --prefix=/usr && \
+ make -j12 && make check && make install && make clean
+
+# Build the C core
+RUN make static_c shared_c -j12 -C /var/local/git/grpc
diff --git a/tools/gce_setup/shared_startup_funcs.sh b/tools/gce_setup/shared_startup_funcs.sh
index 9ea6eca..9c74746 100755
--- a/tools/gce_setup/shared_startup_funcs.sh
+++ b/tools/gce_setup/shared_startup_funcs.sh
@@ -388,7 +388,7 @@
# grpc_dockerfile_install "grpc/image" /var/local/dockerfile/grpc_image
grpc_dockerfile_install() {
local image_label=$1
- [[ -n $image_label ]] || { echo "missing arg: image_label" >&2; return 1; }
+ [[ -n $image_label ]] || { echo "$FUNCNAME: missing arg: image_label" >&2; return 1; }
local docker_img_url=0.0.0.0:5000/$image_label
local dockerfile_dir=$2
@@ -400,19 +400,25 @@
[[ $cache == "cache=1" ]] && { cache_opt=''; }
[[ $cache == "cache=true" ]] && { cache_opt=''; }
- [[ -d $dockerfile_dir ]] || { echo "not a valid dir: $dockerfile_dir"; return 1; }
+ [[ -d $dockerfile_dir ]] || { echo "$FUNCNAME: not a valid dir: $dockerfile_dir"; return 1; }
+
+ # For grpc/base, sync the ssh key into the .ssh dir in the dockerfile context
+
+ [[ $image_label == "grpc/base" ]] && {
+ grpc_docker_sync_github_key $dockerfile_dir/.ssh || return 1;
+ }
# TODO(temiola): maybe make cache/no-cache a func option?
sudo docker build $cache_opt -t $image_label $dockerfile_dir || {
- echo "docker op error: build of $image_label <- $dockerfile_dir"
+ echo "$FUNCNAME:: build of $image_label <- $dockerfile_dir"
return 1
}
sudo docker tag $image_label $docker_img_url || {
- echo "docker op error: tag of $docker_img_url"
+ echo "$FUNCNAME: failed to tag $docker_img_url as $image_label"
return 1
}
sudo docker push $docker_img_url || {
- echo "docker op error: push of $docker_img_url"
+ echo "$FUNCNAME: failed to push $docker_img_url"
return 1
}
}
@@ -428,3 +434,31 @@
grpc_dockerfile_refresh() {
grpc_dockerfile_install "$@"
}
+
+# grpc_docker_sync_github_key.
+#
+# Copies the docker github key from GCS to the target dir
+#
+# call-seq:
+# grpc_docker_sync_github_key <target_dir>
+grpc_docker_sync_github_key() {
+ local target_dir=$1
+ [[ -n $target_dir ]] || { echo "$FUNCNAME: missing arg: target_dir" >&2; return 1; }
+
+ # determine the admin root; the parent of the dockerfile root,
+ local gs_dockerfile_root=$(load_metadata "attributes/gs_dockerfile_root")
+ [[ -n $gs_dockerfile_root ]] || {
+ echo "$FUNCNAME: missing metadata: gs_dockerfile_root" >&2
+ return 1
+ }
+ local gcs_admin_root=$(dirname $gs_dockerfile_root)
+
+ # cp the file from gsutil to a known local area
+ local gcs_key_path=$gcs_admin_root/github/ssh_key
+ local local_key_path=$target_dir/github.rsa
+ mkdir -p $target_dir || {
+ echo "$FUNCNAME: could not create dir: $target_dir" 1>&2
+ return 1
+ }
+ gsutil cp $src $gcs_key_path $local_key_path
+}
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index d291abf..15c5237 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -4,13 +4,13 @@
import argparse
import glob
import itertools
+import json
import multiprocessing
import os
import sys
import time
import jobset
-import simplejson
import watch_dirs
@@ -41,12 +41,17 @@
class CLanguage(object):
- def __init__(self, make_target):
+ def __init__(self, make_target, test_lang):
self.allow_hashing = True
self.make_target = make_target
+ with open('tools/run_tests/tests.json') as f:
+ js = json.load(f)
+ self.binaries = [tgt['name']
+ for tgt in js
+ if tgt['language'] == test_lang]
def test_binaries(self, config):
- return glob.glob('bins/%s/*_test' % config)
+ return ['bins/%s/%s' % (config, binary) for binary in self.binaries]
def make_targets(self):
return ['buildtests_%s' % self.make_target]
@@ -85,8 +90,8 @@
_DEFAULT = ['dbg', 'opt']
_LANGUAGES = {
- 'c++': CLanguage('cxx'),
- 'c': CLanguage('c'),
+ 'c++': CLanguage('cxx', 'c++'),
+ 'c': CLanguage('c', 'c'),
'php': PhpLanguage()
}
@@ -159,12 +164,12 @@
def save(self):
with open('.run_tests_cache', 'w') as f:
- f.write(simplejson.dumps(self.dump()))
+ f.write(json.dumps(self.dump()))
def maybe_load(self):
if os.path.exists('.run_tests_cache'):
with open('.run_tests_cache') as f:
- self.parse(simplejson.loads(f.read()))
+ self.parse(json.loads(f.read()))
def _build_and_run(check_cancelled, newline_on_success, cache):
diff --git a/tools/run_tests/tests.json b/tools/run_tests/tests.json
new file mode 100644
index 0000000..90571ea
--- /dev/null
+++ b/tools/run_tests/tests.json
@@ -0,0 +1,809 @@
+
+
+[
+ {
+ "language": "c",
+ "name": "alarm_heap_test"
+ },
+ {
+ "language": "c",
+ "name": "alarm_list_test"
+ },
+ {
+ "language": "c",
+ "name": "alarm_test"
+ },
+ {
+ "language": "c",
+ "name": "alpn_test"
+ },
+ {
+ "language": "c",
+ "name": "bin_encoder_test"
+ },
+ {
+ "language": "c",
+ "name": "census_hash_table_test"
+ },
+ {
+ "language": "c",
+ "name": "census_statistics_multiple_writers_circular_buffer_test"
+ },
+ {
+ "language": "c",
+ "name": "census_statistics_multiple_writers_test"
+ },
+ {
+ "language": "c",
+ "name": "census_statistics_performance_test"
+ },
+ {
+ "language": "c",
+ "name": "census_statistics_quick_test"
+ },
+ {
+ "language": "c",
+ "name": "census_statistics_small_log_test"
+ },
+ {
+ "language": "c",
+ "name": "census_stub_test"
+ },
+ {
+ "language": "c",
+ "name": "census_window_stats_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_status_conversion_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_stream_encoder_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_stream_map_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_transport_end2end_test"
+ },
+ {
+ "language": "c",
+ "name": "dualstack_socket_test"
+ },
+ {
+ "language": "c",
+ "name": "echo_test"
+ },
+ {
+ "language": "c",
+ "name": "fd_posix_test"
+ },
+ {
+ "language": "c",
+ "name": "fling_stream_test"
+ },
+ {
+ "language": "c",
+ "name": "fling_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_cancellable_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_cmdline_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_histogram_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_host_port_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_log_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_slice_buffer_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_slice_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_string_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_sync_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_thd_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_time_test"
+ },
+ {
+ "language": "c",
+ "name": "gpr_useful_test"
+ },
+ {
+ "language": "c",
+ "name": "grpc_base64_test"
+ },
+ {
+ "language": "c",
+ "name": "grpc_byte_buffer_reader_test"
+ },
+ {
+ "language": "c",
+ "name": "grpc_channel_stack_test"
+ },
+ {
+ "language": "c",
+ "name": "grpc_completion_queue_test"
+ },
+ {
+ "language": "c",
+ "name": "grpc_credentials_test"
+ },
+ {
+ "language": "c",
+ "name": "grpc_json_token_test"
+ },
+ {
+ "language": "c",
+ "name": "grpc_stream_op_test"
+ },
+ {
+ "language": "c",
+ "name": "hpack_parser_test"
+ },
+ {
+ "language": "c",
+ "name": "hpack_table_test"
+ },
+ {
+ "language": "c",
+ "name": "httpcli_format_request_test"
+ },
+ {
+ "language": "c",
+ "name": "httpcli_parser_test"
+ },
+ {
+ "language": "c",
+ "name": "httpcli_test"
+ },
+ {
+ "language": "c",
+ "name": "lame_client_test"
+ },
+ {
+ "language": "c",
+ "name": "message_compress_test"
+ },
+ {
+ "language": "c",
+ "name": "metadata_buffer_test"
+ },
+ {
+ "language": "c",
+ "name": "murmur_hash_test"
+ },
+ {
+ "language": "c",
+ "name": "no_server_test"
+ },
+ {
+ "language": "c",
+ "name": "poll_kick_test"
+ },
+ {
+ "language": "c",
+ "name": "resolve_address_test"
+ },
+ {
+ "language": "c",
+ "name": "secure_endpoint_test"
+ },
+ {
+ "language": "c",
+ "name": "sockaddr_utils_test"
+ },
+ {
+ "language": "c",
+ "name": "tcp_client_posix_test"
+ },
+ {
+ "language": "c",
+ "name": "tcp_posix_test"
+ },
+ {
+ "language": "c",
+ "name": "tcp_server_posix_test"
+ },
+ {
+ "language": "c",
+ "name": "time_averaged_stats_test"
+ },
+ {
+ "language": "c",
+ "name": "time_test"
+ },
+ {
+ "language": "c",
+ "name": "timeout_encoding_test"
+ },
+ {
+ "language": "c",
+ "name": "transport_metadata_test"
+ },
+ {
+ "language": "c++",
+ "name": "channel_arguments_test"
+ },
+ {
+ "language": "c++",
+ "name": "credentials_test"
+ },
+ {
+ "language": "c++",
+ "name": "end2end_test"
+ },
+ {
+ "language": "c++",
+ "name": "tips_client_test"
+ },
+ {
+ "language": "c++",
+ "name": "status_test"
+ },
+ {
+ "language": "c++",
+ "name": "sync_client_async_server_test"
+ },
+ {
+ "language": "c++",
+ "name": "thread_pool_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_cancel_after_accept_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_cancel_after_accept_and_writes_closed_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_cancel_after_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_cancel_before_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_cancel_in_a_vacuum_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_census_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_disappearing_server_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_early_server_shutdown_finishes_inflight_calls_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_early_server_shutdown_finishes_tags_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_graceful_server_shutdown_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_invoke_large_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_max_concurrent_streams_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_no_op_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_ping_pong_streaming_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_request_response_with_binary_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_request_response_with_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_request_response_with_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_request_response_with_trailing_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_simple_delayed_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_thread_stress_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fake_security_writes_done_hangs_with_pending_read_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_cancel_after_accept_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_cancel_after_accept_and_writes_closed_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_cancel_after_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_cancel_before_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_cancel_in_a_vacuum_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_census_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_disappearing_server_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_early_server_shutdown_finishes_inflight_calls_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_early_server_shutdown_finishes_tags_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_graceful_server_shutdown_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_invoke_large_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_max_concurrent_streams_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_no_op_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_ping_pong_streaming_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_request_response_with_binary_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_request_response_with_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_request_response_with_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_request_response_with_trailing_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_simple_delayed_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_thread_stress_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_fullstack_writes_done_hangs_with_pending_read_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_cancel_after_accept_and_writes_closed_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_cancel_after_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_cancel_before_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_cancel_in_a_vacuum_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_census_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_disappearing_server_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_inflight_calls_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_early_server_shutdown_finishes_tags_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_graceful_server_shutdown_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_invoke_large_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_max_concurrent_streams_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_no_op_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_ping_pong_streaming_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_request_response_with_binary_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_request_response_with_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_request_response_with_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_request_response_with_trailing_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_simple_delayed_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_thread_stress_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_fullstack_writes_done_hangs_with_pending_read_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_accept_and_writes_closed_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_after_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_before_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_cancel_in_a_vacuum_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_census_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_disappearing_server_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_inflight_calls_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_early_server_shutdown_finishes_tags_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_graceful_server_shutdown_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_invoke_large_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_max_concurrent_streams_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_no_op_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_ping_pong_streaming_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_binary_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_request_response_with_trailing_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_delayed_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_thread_stress_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_simple_ssl_with_oauth2_fullstack_writes_done_hangs_with_pending_read_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_cancel_after_accept_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_cancel_after_accept_and_writes_closed_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_cancel_after_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_cancel_before_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_cancel_in_a_vacuum_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_census_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_disappearing_server_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_early_server_shutdown_finishes_inflight_calls_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_early_server_shutdown_finishes_tags_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_graceful_server_shutdown_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_invoke_large_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_max_concurrent_streams_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_no_op_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_ping_pong_streaming_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_request_response_with_binary_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_request_response_with_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_request_response_with_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_request_response_with_trailing_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_simple_delayed_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_thread_stress_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_writes_done_hangs_with_pending_read_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_accept_and_writes_closed_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_after_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_before_invoke_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_cancel_in_a_vacuum_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_census_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_disappearing_server_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_inflight_calls_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_early_server_shutdown_finishes_tags_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_graceful_server_shutdown_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_invoke_large_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_max_concurrent_streams_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_no_op_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_ping_pong_streaming_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_binary_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_request_response_with_trailing_metadata_and_payload_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_simple_delayed_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_simple_request_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_thread_stress_test"
+ },
+ {
+ "language": "c",
+ "name": "chttp2_socket_pair_one_byte_at_a_time_writes_done_hangs_with_pending_read_test"
+ }
+]
+
diff --git a/vsprojects/vs2013/.gitignore b/vsprojects/vs2013/.gitignore
new file mode 100644
index 0000000..75fb4ed
--- /dev/null
+++ b/vsprojects/vs2013/.gitignore
@@ -0,0 +1,5 @@
+Debug
+Release
+*.suo
+grpc.opensdf
+grpc.sdf
diff --git a/vsprojects/vs2013/build_and_run_tests.bat b/vsprojects/vs2013/build_and_run_tests.bat
index 3e36dcf..7700073 100644
--- a/vsprojects/vs2013/build_and_run_tests.bat
+++ b/vsprojects/vs2013/build_and_run_tests.bat
@@ -17,22 +17,6 @@
test_bin\gpr_cancellable_test.exe || echo TEST FAILED: gpr_cancellable_test && exit /b
echo(
-echo Building test gpr_log_test
-cl.exe /c /I..\.. /I..\..\include /nologo /ZI /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\log_test.c
-link.exe /OUT:"test_bin\gpr_log_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\log_test.obj
-echo(
-echo Running test gpr_log_test
-test_bin\gpr_log_test.exe || echo TEST FAILED: gpr_log_test && exit /b
-echo(
-
-echo Building test gpr_useful_test
-cl.exe /c /I..\.. /I..\..\include /nologo /ZI /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\useful_test.c
-link.exe /OUT:"test_bin\gpr_useful_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\useful_test.obj
-echo(
-echo Running test gpr_useful_test
-test_bin\gpr_useful_test.exe || echo TEST FAILED: gpr_useful_test && exit /b
-echo(
-
echo Building test gpr_cmdline_test
cl.exe /c /I..\.. /I..\..\include /nologo /ZI /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\cmdline_test.c
link.exe /OUT:"test_bin\gpr_cmdline_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\cmdline_test.obj
@@ -57,6 +41,14 @@
test_bin\gpr_host_port_test.exe || echo TEST FAILED: gpr_host_port_test && exit /b
echo(
+echo Building test gpr_log_test
+cl.exe /c /I..\.. /I..\..\include /nologo /ZI /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\log_test.c
+link.exe /OUT:"test_bin\gpr_log_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\log_test.obj
+echo(
+echo Running test gpr_log_test
+test_bin\gpr_log_test.exe || echo TEST FAILED: gpr_log_test && exit /b
+echo(
+
echo Building test gpr_slice_buffer_test
cl.exe /c /I..\.. /I..\..\include /nologo /ZI /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\slice_buffer_test.c
link.exe /OUT:"test_bin\gpr_slice_buffer_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\slice_buffer_test.obj
@@ -105,3 +97,11 @@
test_bin\gpr_time_test.exe || echo TEST FAILED: gpr_time_test && exit /b
echo(
+echo Building test gpr_useful_test
+cl.exe /c /I..\.. /I..\..\include /nologo /ZI /W3 /WX- /sdl /D WIN32 /D _LIB /D _USE_32BIT_TIME_T /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Gd /TC /analyze- /Fo:test_bin\ ..\..\test\core\support\useful_test.c
+link.exe /OUT:"test_bin\gpr_useful_test.exe" /INCREMENTAL /NOLOGO /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 Debug\gpr_test_util.lib Debug\gpr.lib test_bin\useful_test.obj
+echo(
+echo Running test gpr_useful_test
+test_bin\gpr_useful_test.exe || echo TEST FAILED: gpr_useful_test && exit /b
+echo(
+
diff --git a/vsprojects/vs2013/gpr.vcxproj b/vsprojects/vs2013/gpr.vcxproj
index 3e95d71..6075e25 100644
--- a/vsprojects/vs2013/gpr.vcxproj
+++ b/vsprojects/vs2013/gpr.vcxproj
@@ -74,9 +74,9 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\include\grpc\support\alloc.h" />
+ <ClInclude Include="..\..\include\grpc\support\atm.h" />
<ClInclude Include="..\..\include\grpc\support\atm_gcc_atomic.h" />
<ClInclude Include="..\..\include\grpc\support\atm_gcc_sync.h" />
- <ClInclude Include="..\..\include\grpc\support\atm.h" />
<ClInclude Include="..\..\include\grpc\support\atm_win32.h" />
<ClInclude Include="..\..\include\grpc\support\cancellable_platform.h" />
<ClInclude Include="..\..\include\grpc\support\cmdline.h" />
@@ -84,11 +84,11 @@
<ClInclude Include="..\..\include\grpc\support\host_port.h" />
<ClInclude Include="..\..\include\grpc\support\log.h" />
<ClInclude Include="..\..\include\grpc\support\port_platform.h" />
- <ClInclude Include="..\..\include\grpc\support\slice_buffer.h" />
<ClInclude Include="..\..\include\grpc\support\slice.h" />
+ <ClInclude Include="..\..\include\grpc\support\slice_buffer.h" />
<ClInclude Include="..\..\include\grpc\support\string.h" />
- <ClInclude Include="..\..\include\grpc\support\sync_generic.h" />
<ClInclude Include="..\..\include\grpc\support\sync.h" />
+ <ClInclude Include="..\..\include\grpc\support\sync_generic.h" />
<ClInclude Include="..\..\include\grpc\support\sync_posix.h" />
<ClInclude Include="..\..\include\grpc\support\sync_win32.h" />
<ClInclude Include="..\..\include\grpc\support\thd.h" />
@@ -119,10 +119,10 @@
</ClCompile>
<ClCompile Include="..\..\src\core\support\host_port.c">
</ClCompile>
- <ClCompile Include="..\..\src\core\support\log_android.c">
- </ClCompile>
<ClCompile Include="..\..\src\core\support\log.c">
</ClCompile>
+ <ClCompile Include="..\..\src\core\support\log_android.c">
+ </ClCompile>
<ClCompile Include="..\..\src\core\support\log_linux.c">
</ClCompile>
<ClCompile Include="..\..\src\core\support\log_posix.c">
@@ -131,10 +131,10 @@
</ClCompile>
<ClCompile Include="..\..\src\core\support\murmur_hash.c">
</ClCompile>
- <ClCompile Include="..\..\src\core\support\slice_buffer.c">
- </ClCompile>
<ClCompile Include="..\..\src\core\support\slice.c">
</ClCompile>
+ <ClCompile Include="..\..\src\core\support\slice_buffer.c">
+ </ClCompile>
<ClCompile Include="..\..\src\core\support\string.c">
</ClCompile>
<ClCompile Include="..\..\src\core\support\string_posix.c">
diff --git a/vsprojects/vs2013/grpc.sln b/vsprojects/vs2013/grpc.sln
index 41d4d02..9b3ebaf 100644
--- a/vsprojects/vs2013/grpc.sln
+++ b/vsprojects/vs2013/grpc.sln
@@ -5,20 +5,20 @@
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr", "gpr.vcxproj", "{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_test_util", "gpr_test_util.vcxproj", "{EAB0A629-17A9-44DB-B5FF-E91A721FE037}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc", "grpc.vcxproj", "{29D16885-7228-4C31-81ED-5F9187C7F2A9}"
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_test_util", "grpc_test_util.vcxproj", "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
+EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_unsecure", "grpc_unsecure.vcxproj", "{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}"
ProjectSection(ProjectDependencies) = postProject
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_test_util", "gpr_test_util.vcxproj", "{EAB0A629-17A9-44DB-B5FF-E91A721FE037}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_test_util", "grpc_test_util.vcxproj", "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "third_party\zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "third_party", "third_party", "{DD51818F-0BCA-4035-9E5B-F28A9F87DED4}"
@@ -33,22 +33,22 @@
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Debug|Win32.Build.0 = Debug|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.ActiveCfg = Release|Win32
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}.Release|Win32.Build.0 = Release|Win32
- {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.ActiveCfg = Debug|Win32
- {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.Build.0 = Debug|Win32
- {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.ActiveCfg = Release|Win32
- {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.Build.0 = Release|Win32
- {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|Win32.ActiveCfg = Debug|Win32
- {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|Win32.Build.0 = Debug|Win32
- {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|Win32.ActiveCfg = Release|Win32
- {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|Win32.Build.0 = Release|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug|Win32.ActiveCfg = Debug|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Debug|Win32.Build.0 = Debug|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release|Win32.ActiveCfg = Release|Win32
{EAB0A629-17A9-44DB-B5FF-E91A721FE037}.Release|Win32.Build.0 = Release|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Debug|Win32.Build.0 = Debug|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.ActiveCfg = Release|Win32
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}.Release|Win32.Build.0 = Release|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|Win32.ActiveCfg = Debug|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Debug|Win32.Build.0 = Debug|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|Win32.ActiveCfg = Release|Win32
{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}.Release|Win32.Build.0 = Release|Win32
+ {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|Win32.ActiveCfg = Debug|Win32
+ {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Debug|Win32.Build.0 = Debug|Win32
+ {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|Win32.ActiveCfg = Release|Win32
+ {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}.Release|Win32.Build.0 = Release|Win32
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.ActiveCfg = Debug|Win32
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Debug|Win32.Build.0 = Debug|Win32
{8FD826F8-3739-44E6-8CC8-997122E53B8D}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vs2013/grpc.vcxproj b/vsprojects/vs2013/grpc.vcxproj
index 9f3ec8c..05a9966 100644
--- a/vsprojects/vs2013/grpc.vcxproj
+++ b/vsprojects/vs2013/grpc.vcxproj
@@ -119,6 +119,8 @@
<ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset.h" />
+ <ClInclude Include="..\..\src\core\iomgr\pollset_kick.h" />
+ <ClInclude Include="..\..\src\core\iomgr\pollset_kick_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\resolve_address.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr.h" />
@@ -246,6 +248,8 @@
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
</ClCompile>
+ <ClCompile Include="..\..\src\core\iomgr\pollset_kick_posix.c">
+ </ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
diff --git a/vsprojects/vs2013/grpc_test_util.vcxproj b/vsprojects/vs2013/grpc_test_util.vcxproj
index dc95034..e0e33c0 100644
--- a/vsprojects/vs2013/grpc_test_util.vcxproj
+++ b/vsprojects/vs2013/grpc_test_util.vcxproj
@@ -75,14 +75,14 @@
<ItemGroup>
<ClCompile Include="..\..\test\core\end2end\cq_verifier.c">
</ClCompile>
- <ClCompile Include="..\..\test\core\end2end\data\test_root_cert.c">
- </ClCompile>
<ClCompile Include="..\..\test\core\end2end\data\prod_roots_certs.c">
</ClCompile>
<ClCompile Include="..\..\test\core\end2end\data\server1_cert.c">
</ClCompile>
<ClCompile Include="..\..\test\core\end2end\data\server1_key.c">
</ClCompile>
+ <ClCompile Include="..\..\test\core\end2end\data\test_root_cert.c">
+ </ClCompile>
<ClCompile Include="..\..\test\core\iomgr\endpoint_tests.c">
</ClCompile>
<ClCompile Include="..\..\test\core\statistics\census_log_tests.c">
@@ -91,10 +91,10 @@
</ClCompile>
<ClCompile Include="..\..\test\core\util\grpc_profiler.c">
</ClCompile>
- <ClCompile Include="..\..\test\core\util\port_posix.c">
- </ClCompile>
<ClCompile Include="..\..\test\core\util\parse_hexstring.c">
</ClCompile>
+ <ClCompile Include="..\..\test\core\util\port_posix.c">
+ </ClCompile>
<ClCompile Include="..\..\test\core\util\slice_splitter.c">
</ClCompile>
</ItemGroup>
diff --git a/vsprojects/vs2013/grpc_unsecure.vcxproj b/vsprojects/vs2013/grpc_unsecure.vcxproj
index 9f3ec8c..05a9966 100644
--- a/vsprojects/vs2013/grpc_unsecure.vcxproj
+++ b/vsprojects/vs2013/grpc_unsecure.vcxproj
@@ -119,6 +119,8 @@
<ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h" />
<ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset.h" />
+ <ClInclude Include="..\..\src\core\iomgr\pollset_kick.h" />
+ <ClInclude Include="..\..\src\core\iomgr\pollset_kick_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\pollset_posix.h" />
<ClInclude Include="..\..\src\core\iomgr\resolve_address.h" />
<ClInclude Include="..\..\src\core\iomgr\sockaddr.h" />
@@ -246,6 +248,8 @@
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
</ClCompile>
+ <ClCompile Include="..\..\src\core\iomgr\pollset_kick_posix.c">
+ </ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
</ClCompile>
<ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">