aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Muxi Yan <mxyan@google.com>2017-08-21 15:19:50 -0700
committerGravatar Muxi Yan <mxyan@google.com>2017-08-21 15:19:50 -0700
commit7c62a35c6fcf9f1e3d66a012c7c4a14b30367052 (patch)
treef9ef540ee26eee93b620486b85b9d3e57993cbed
parent219d9f52de57d701c1113f58bd2745a1d3107771 (diff)
parentd6cf6dea3677c753e27999d0f2f9695da78932f2 (diff)
Merge remote-tracking branch 'upstream/master' into stream_compression_config
-rw-r--r--BUILD6
-rw-r--r--CMakeLists.txt2
-rw-r--r--Makefile4
-rw-r--r--build.yaml4
-rw-r--r--doc/g_stands_for.md2
-rw-r--r--examples/csharp/helloworld-from-cli/global.json5
-rw-r--r--gRPC-Core.podspec7
-rw-r--r--gRPC-ProtoRPC.podspec2
-rw-r--r--gRPC-RxLibrary.podspec2
-rw-r--r--gRPC.podspec2
-rw-r--r--grpc.gyp2473
-rw-r--r--include/grpc++/impl/codegen/async_unary_call.h92
-rw-r--r--include/grpc++/impl/codegen/call.h28
-rw-r--r--package.json2
-rw-r--r--package.xml4
-rw-r--r--src/compiler/csharp_generator.cc1
-rw-r--r--src/core/ext/transport/chttp2/transport/chttp2_transport.c122
-rw-r--r--src/core/ext/transport/chttp2/transport/flow_control.c177
-rw-r--r--src/core/ext/transport/chttp2/transport/internal.h32
-rw-r--r--src/core/lib/iomgr/ev_epoll1_linux.c9
-rw-r--r--src/core/lib/security/credentials/jwt/jwt_verifier.c17
-rw-r--r--src/core/lib/security/credentials/oauth2/oauth2_credentials.c8
-rw-r--r--src/core/lib/surface/version.c2
-rw-r--r--src/core/lib/transport/bdp_estimator.c10
-rw-r--r--src/core/lib/transport/bdp_estimator.h10
-rw-r--r--src/cpp/common/version_cc.cc2
-rwxr-xr-xsrc/csharp/Grpc.Auth/Grpc.Auth.csproj1
-rwxr-xr-xsrc/csharp/Grpc.Core.Testing/Grpc.Core.Testing.csproj1
-rw-r--r--src/csharp/Grpc.Core.Tests/ClientServerTest.cs52
-rw-r--r--src/csharp/Grpc.Core.Tests/CompressionTest.cs4
-rw-r--r--src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs8
-rwxr-xr-xsrc/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj1
-rw-r--r--src/csharp/Grpc.Core.Tests/HalfcloseTest.cs4
-rw-r--r--src/csharp/Grpc.Core.Tests/Internal/CompletionQueueEventTest.cs5
-rw-r--r--src/csharp/Grpc.Core.Tests/Internal/TimespecTest.cs3
-rw-r--r--src/csharp/Grpc.Core.Tests/MockServiceHelper.cs14
-rw-r--r--src/csharp/Grpc.Core.Tests/PerformanceTest.cs4
-rw-r--r--src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs8
-rw-r--r--src/csharp/Grpc.Core.Tests/ThreadingModelTest.cs17
-rw-r--r--src/csharp/Grpc.Core.Tests/TimeoutsTest.cs8
-rwxr-xr-xsrc/csharp/Grpc.Core/Grpc.Core.csproj1
-rw-r--r--src/csharp/Grpc.Core/Internal/AtomicCounter.cs2
-rw-r--r--src/csharp/Grpc.Core/Internal/AuthContextSafeHandle.cs3
-rw-r--r--src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs37
-rwxr-xr-xsrc/csharp/Grpc.Core/Version.csproj.include2
-rw-r--r--src/csharp/Grpc.Core/VersionInfo.cs4
-rwxr-xr-xsrc/csharp/Grpc.Examples.MathClient/Grpc.Examples.MathClient.csproj1
-rwxr-xr-xsrc/csharp/Grpc.Examples.MathServer/Grpc.Examples.MathServer.csproj1
-rwxr-xr-xsrc/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj1
-rw-r--r--src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs6
-rwxr-xr-xsrc/csharp/Grpc.Examples/Grpc.Examples.csproj1
-rw-r--r--src/csharp/Grpc.Examples/MathGrpc.cs1
-rw-r--r--src/csharp/Grpc.Examples/MathServiceImpl.cs3
-rwxr-xr-xsrc/csharp/Grpc.HealthCheck.Tests/Grpc.HealthCheck.Tests.csproj1
-rw-r--r--src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs4
-rwxr-xr-xsrc/csharp/Grpc.HealthCheck/Grpc.HealthCheck.csproj1
-rw-r--r--src/csharp/Grpc.HealthCheck/HealthGrpc.cs1
-rwxr-xr-xsrc/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj1
-rwxr-xr-xsrc/csharp/Grpc.IntegrationTesting.QpsWorker/Grpc.IntegrationTesting.QpsWorker.csproj1
-rwxr-xr-xsrc/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj1
-rwxr-xr-xsrc/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj1
-rw-r--r--src/csharp/Grpc.IntegrationTesting/Control.cs248
-rw-r--r--src/csharp/Grpc.IntegrationTesting/CustomErrorDetailsTest.cs6
-rw-r--r--src/csharp/Grpc.IntegrationTesting/GeneratedServiceBaseTest.cs6
-rwxr-xr-xsrc/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj1
-rw-r--r--src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs4
-rw-r--r--src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs1
-rw-r--r--src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs4
-rw-r--r--src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs1
-rw-r--r--src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs10
-rw-r--r--src/csharp/Grpc.IntegrationTesting/TestGrpc.cs1
-rw-r--r--src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs5
-rw-r--r--src/csharp/Grpc.Microbenchmarks/Grpc.Microbenchmarks.csproj1
-rwxr-xr-xsrc/csharp/Grpc.Reflection.Tests/Grpc.Reflection.Tests.csproj1
-rw-r--r--src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs4
-rwxr-xr-xsrc/csharp/Grpc.Reflection/Grpc.Reflection.csproj1
-rw-r--r--src/csharp/Grpc.Reflection/ReflectionGrpc.cs1
-rw-r--r--src/csharp/Grpc.Reflection/ReflectionServiceImpl.cs3
-rwxr-xr-xsrc/csharp/build_packages_dotnetcli.bat2
-rwxr-xr-xsrc/csharp/build_packages_dotnetcli.sh4
-rw-r--r--src/csharp/global.json5
-rw-r--r--src/node/health_check/package.json4
-rw-r--r--src/node/tools/package.json2
-rw-r--r--src/objective-c/!ProtoCompiler-gRPCPlugin.podspec2
-rw-r--r--src/objective-c/GRPCClient/private/version.h2
-rwxr-xr-xsrc/objective-c/tests/build_one_example.sh6
-rwxr-xr-xsrc/objective-c/tests/run_tests.sh22
-rw-r--r--src/php/composer.json2
-rw-r--r--src/php/ext/grpc/version.h2
-rw-r--r--src/php/lib/Grpc/ServerStreamingCall.php28
-rw-r--r--src/php/lib/Grpc/UnaryCall.php28
-rw-r--r--src/python/grpcio/grpc/_grpcio_metadata.py2
-rw-r--r--src/python/grpcio/grpc_version.py2
-rw-r--r--src/python/grpcio_health_checking/grpc_version.py2
-rw-r--r--src/python/grpcio_reflection/grpc_version.py2
-rw-r--r--src/python/grpcio_tests/grpc_version.py2
-rw-r--r--src/ruby/lib/grpc/generic/rpc_desc.rb6
-rw-r--r--src/ruby/lib/grpc/version.rb2
-rw-r--r--src/ruby/spec/generic/rpc_desc_spec.rb38
-rw-r--r--src/ruby/tools/version.rb2
-rw-r--r--templates/gRPC-Core.podspec.template5
-rw-r--r--templates/grpc.gyp.template157
-rw-r--r--test/core/end2end/tests/streaming_error_response.c25
-rw-r--r--test/core/transport/bdp_estimator_test.c7
m---------third_party/protobuf0
-rw-r--r--tools/distrib/python/grpcio_tools/grpc_version.py2
-rw-r--r--tools/doxygen/Doxyfile.c++2
-rw-r--r--tools/doxygen/Doxyfile.c++.internal2
-rw-r--r--tools/flakes/detect_flakes.py13
-rw-r--r--tools/internal_ci/helper_scripts/prepare_build_macos_rc1
-rwxr-xr-xtools/run_tests/run_performance_tests.py2
-rwxr-xr-xtools/run_tests/run_tests.py17
-rwxr-xr-xtools/run_tests/run_tests_matrix.py1
-rwxr-xr-xtools/run_tests/sanity/check_submodules.sh2
114 files changed, 3435 insertions, 495 deletions
diff --git a/BUILD b/BUILD
index 49c340d070..5c400d43b7 100644
--- a/BUILD
+++ b/BUILD
@@ -34,11 +34,11 @@ load(
)
# This should be updated along with build.yaml
-g_stands_for = "gregarious"
+g_stands_for = "gambit"
core_version = "4.0.0-dev"
-version = "1.5.0-dev"
+version = "1.7.0-dev"
GPR_PUBLIC_HDRS = [
"include/grpc/support/alloc.h",
@@ -593,9 +593,9 @@ grpc_cc_library(
"src/core/lib/iomgr/ev_windows.c",
"src/core/lib/iomgr/exec_ctx.c",
"src/core/lib/iomgr/executor.c",
+ "src/core/lib/iomgr/gethostname_fallback.c",
"src/core/lib/iomgr/gethostname_host_name_max.c",
"src/core/lib/iomgr/gethostname_sysconf.c",
- "src/core/lib/iomgr/gethostname_fallback.c",
"src/core/lib/iomgr/iocp_windows.c",
"src/core/lib/iomgr/iomgr.c",
"src/core/lib/iomgr/iomgr_posix.c",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7a6d130184..a8a2d311ac 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,7 @@
cmake_minimum_required(VERSION 2.8)
set(PACKAGE_NAME "grpc")
-set(PACKAGE_VERSION "1.5.0-dev")
+set(PACKAGE_VERSION "1.7.0-dev")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")
diff --git a/Makefile b/Makefile
index 3839d8ebbf..2208d8b4fc 100644
--- a/Makefile
+++ b/Makefile
@@ -411,8 +411,8 @@ Q = @
endif
CORE_VERSION = 4.0.0-dev
-CPP_VERSION = 1.5.0-dev
-CSHARP_VERSION = 1.5.0-dev
+CPP_VERSION = 1.7.0-dev
+CSHARP_VERSION = 1.7.0-dev
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
diff --git a/build.yaml b/build.yaml
index a459b9d688..d70bbe39ca 100644
--- a/build.yaml
+++ b/build.yaml
@@ -13,8 +13,8 @@ settings:
'#09': Per-language overrides are possible with (eg) ruby_version tag here
'#10': See the expand_version.py for all the quirks here
core_version: 4.0.0-dev
- g_stands_for: gregarious
- version: 1.5.0-dev
+ g_stands_for: gambit
+ version: 1.7.0-dev
filegroups:
- name: census
public_headers:
diff --git a/doc/g_stands_for.md b/doc/g_stands_for.md
index 2078bb37ea..9a161d67a3 100644
--- a/doc/g_stands_for.md
+++ b/doc/g_stands_for.md
@@ -9,3 +9,5 @@ future), and the corresponding version numbers that used them:
- 1.2 'g' stands for 'green'
- 1.3 'g' stands for 'gentle'
- 1.4 'g' stands for 'gregarious'
+- 1.6 'g' stands for 'garcia'
+- 1.7 'g' stands for 'gambit'
diff --git a/examples/csharp/helloworld-from-cli/global.json b/examples/csharp/helloworld-from-cli/global.json
new file mode 100644
index 0000000000..e4b797ee8e
--- /dev/null
+++ b/examples/csharp/helloworld-from-cli/global.json
@@ -0,0 +1,5 @@
+{
+ "sdk": {
+ "version": "1.0.0"
+ }
+}
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 4b1a8f38a3..82cb4bc416 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -22,7 +22,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-Core'
- version = '1.5.0-dev'
+ version = '1.7.0-dev'
s.version = version
s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'https://grpc.io'
@@ -994,4 +994,9 @@ Pod::Spec.new do |s|
'test/core/util/port.c',
'test/core/util/port_server_client.{c,h}'
end
+
+ # TODO (mxyan): Instead of this hack, add include path "third_party" to C core's include path?
+ s.prepare_command = <<-END_OF_COMMAND
+ find src/core/ -type f -exec sed -E -i '.back' 's;#include "third_party/nanopb/(.*)";#include <nanopb/\\1>;g' {} \\\;
+ END_OF_COMMAND
end
diff --git a/gRPC-ProtoRPC.podspec b/gRPC-ProtoRPC.podspec
index 2317aacb49..cb40330dab 100644
--- a/gRPC-ProtoRPC.podspec
+++ b/gRPC-ProtoRPC.podspec
@@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-ProtoRPC'
- version = '1.5.0-dev'
+ version = '1.7.0-dev'
s.version = version
s.summary = 'RPC library for Protocol Buffers, based on gRPC'
s.homepage = 'https://grpc.io'
diff --git a/gRPC-RxLibrary.podspec b/gRPC-RxLibrary.podspec
index 4a03c3fa2f..52bd8ed0ae 100644
--- a/gRPC-RxLibrary.podspec
+++ b/gRPC-RxLibrary.podspec
@@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-RxLibrary'
- version = '1.5.0-dev'
+ version = '1.7.0-dev'
s.version = version
s.summary = 'Reactive Extensions library for iOS/OSX.'
s.homepage = 'https://grpc.io'
diff --git a/gRPC.podspec b/gRPC.podspec
index 4c83ccc7a0..ba90149dd6 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -20,7 +20,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC'
- version = '1.5.0-dev'
+ version = '1.7.0-dev'
s.version = version
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'https://grpc.io'
diff --git a/grpc.gyp b/grpc.gyp
new file mode 100644
index 0000000000..78b03645ca
--- /dev/null
+++ b/grpc.gyp
@@ -0,0 +1,2473 @@
+# GRPC GYP build file
+
+# This file has been automatically generated from a template file.
+# Please look at the templates directory instead.
+# This file can be regenerated from the template by running
+# tools/buildgen/generate_projects.sh
+
+# Copyright 2015 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+ 'variables': {
+ # The openssl and zlib dependencies must be passed in as variables
+ # defined in an included gypi file, usually common.gypi.
+ 'openssl_gyp_target%': 'Please Define openssl_gyp_target variable',
+ 'zlib_gyp_target%': 'Please Define zlib_gyp_target variable',
+
+ 'grpc_gcov%': 'false',
+ 'grpc_alpine%': 'false',
+ },
+ 'target_defaults': {
+ 'configurations': {
+ 'Release': {
+ 'cflags': [
+ '-O2',
+ ],
+ 'defines': [
+ 'NDEBUG',
+ ],
+ },
+ 'Debug': {
+ 'cflags': [
+ '-O0',
+ ],
+ 'defines': [
+ '_DEBUG',
+ 'DEBUG',
+ ],
+ },
+ },
+ 'cflags': [
+ '-g',
+ '-Wall',
+ '-Wextra',
+ '-Werror',
+ '-Wno-long-long',
+ '-Wno-unused-parameter',
+ '-DOSATOMIC_USE_INLINED=1',
+ ],
+ 'ldflags': [
+ '-g',
+ ],
+ 'cflags_c': [
+ '-Werror',
+ '-std=c99'
+ ],
+ 'cflags_cc': [
+ '-Werror',
+ '-std=c++11'
+ ],
+ 'include_dirs': [
+ '.',
+ '../..',
+ 'include',
+ ],
+ 'defines': [
+ 'GRPC_ARES=0',
+ ],
+ 'dependencies': [
+ '<(openssl_gyp_target)',
+ '<(zlib_gyp_target)',
+ ],
+ 'conditions': [
+ ['grpc_gcov=="true"', {
+ 'cflags': [
+ '-O0',
+ '-fprofile-arcs',
+ '-ftest-coverage',
+ '-Wno-return-type',
+ ],
+ 'defines': [
+ '_DEBUG',
+ 'DEBUG',
+ 'GPR_GCOV',
+ ],
+ 'ldflags': [
+ '-fprofile-arcs',
+ '-ftest-coverage',
+ '-rdynamic',
+ ],
+ }],
+ ['grpc_alpine=="true"', {
+ 'defines': [
+ 'GPR_MUSL_LIBC_COMPAT'
+ ]
+ }],
+ ['OS == "win"', {
+ 'defines': [
+ '_WIN32_WINNT=0x0600',
+ 'WIN32_LEAN_AND_MEAN',
+ '_HAS_EXCEPTIONS=0',
+ 'UNICODE',
+ '_UNICODE',
+ 'NOMINMAX',
+ ],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'RuntimeLibrary': 1, # static debug
+ }
+ },
+ "libraries": [
+ "ws2_32"
+ ]
+ }],
+ ['OS == "mac"', {
+ 'xcode_settings': {
+ 'OTHER_CFLAGS': [
+ '-g',
+ '-Wall',
+ '-Wextra',
+ '-Werror',
+ '-Wno-long-long',
+ '-Wno-unused-parameter',
+ '-DOSATOMIC_USE_INLINED=1',
+ ],
+ 'OTHER_CPLUSPLUSFLAGS': [
+ '-g',
+ '-Wall',
+ '-Wextra',
+ '-Werror',
+ '-Wno-long-long',
+ '-Wno-unused-parameter',
+ '-DOSATOMIC_USE_INLINED=1',
+ '-stdlib=libc++',
+ '-std=c++11',
+ '-Wno-error=deprecated-declarations'
+ ],
+ },
+ }]
+ ]
+ },
+ 'targets': [
+ {
+ 'target_name': 'gpr',
+ 'type': 'static_library',
+ 'dependencies': [
+ ],
+ 'sources': [
+ 'src/core/lib/profiling/basic_timers.c',
+ 'src/core/lib/profiling/stap_timers.c',
+ 'src/core/lib/support/alloc.c',
+ 'src/core/lib/support/arena.c',
+ 'src/core/lib/support/atm.c',
+ 'src/core/lib/support/avl.c',
+ 'src/core/lib/support/backoff.c',
+ 'src/core/lib/support/cmdline.c',
+ 'src/core/lib/support/cpu_iphone.c',
+ 'src/core/lib/support/cpu_linux.c',
+ 'src/core/lib/support/cpu_posix.c',
+ 'src/core/lib/support/cpu_windows.c',
+ 'src/core/lib/support/env_linux.c',
+ 'src/core/lib/support/env_posix.c',
+ 'src/core/lib/support/env_windows.c',
+ 'src/core/lib/support/histogram.c',
+ 'src/core/lib/support/host_port.c',
+ 'src/core/lib/support/log.c',
+ 'src/core/lib/support/log_android.c',
+ 'src/core/lib/support/log_linux.c',
+ 'src/core/lib/support/log_posix.c',
+ 'src/core/lib/support/log_windows.c',
+ 'src/core/lib/support/mpscq.c',
+ 'src/core/lib/support/murmur_hash.c',
+ 'src/core/lib/support/stack_lockfree.c',
+ 'src/core/lib/support/string.c',
+ 'src/core/lib/support/string_posix.c',
+ 'src/core/lib/support/string_util_windows.c',
+ 'src/core/lib/support/string_windows.c',
+ 'src/core/lib/support/subprocess_posix.c',
+ 'src/core/lib/support/subprocess_windows.c',
+ 'src/core/lib/support/sync.c',
+ 'src/core/lib/support/sync_posix.c',
+ 'src/core/lib/support/sync_windows.c',
+ 'src/core/lib/support/thd.c',
+ 'src/core/lib/support/thd_posix.c',
+ 'src/core/lib/support/thd_windows.c',
+ 'src/core/lib/support/time.c',
+ 'src/core/lib/support/time_posix.c',
+ 'src/core/lib/support/time_precise.c',
+ 'src/core/lib/support/time_windows.c',
+ 'src/core/lib/support/tls_pthread.c',
+ 'src/core/lib/support/tmpfile_msys.c',
+ 'src/core/lib/support/tmpfile_posix.c',
+ 'src/core/lib/support/tmpfile_windows.c',
+ 'src/core/lib/support/wrap_memcpy.c',
+ ],
+ },
+ {
+ 'target_name': 'gpr_test_util',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'gpr',
+ ],
+ 'sources': [
+ 'test/core/util/test_config.c',
+ ],
+ },
+ {
+ 'target_name': 'grpc',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'gpr',
+ ],
+ 'sources': [
+ 'src/core/lib/surface/init.c',
+ 'src/core/lib/channel/channel_args.c',
+ 'src/core/lib/channel/channel_stack.c',
+ 'src/core/lib/channel/channel_stack_builder.c',
+ 'src/core/lib/channel/connected_channel.c',
+ 'src/core/lib/channel/handshaker.c',
+ 'src/core/lib/channel/handshaker_factory.c',
+ 'src/core/lib/channel/handshaker_registry.c',
+ 'src/core/lib/compression/compression.c',
+ 'src/core/lib/compression/message_compress.c',
+ 'src/core/lib/compression/stream_compression.c',
+ 'src/core/lib/http/format_request.c',
+ 'src/core/lib/http/httpcli.c',
+ 'src/core/lib/http/parser.c',
+ 'src/core/lib/iomgr/closure.c',
+ 'src/core/lib/iomgr/combiner.c',
+ 'src/core/lib/iomgr/endpoint.c',
+ 'src/core/lib/iomgr/endpoint_pair_posix.c',
+ 'src/core/lib/iomgr/endpoint_pair_uv.c',
+ 'src/core/lib/iomgr/endpoint_pair_windows.c',
+ 'src/core/lib/iomgr/error.c',
+ 'src/core/lib/iomgr/ev_epoll1_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_thread_pool_linux.c',
+ 'src/core/lib/iomgr/ev_epollex_linux.c',
+ 'src/core/lib/iomgr/ev_epollsig_linux.c',
+ 'src/core/lib/iomgr/ev_poll_posix.c',
+ 'src/core/lib/iomgr/ev_posix.c',
+ 'src/core/lib/iomgr/ev_windows.c',
+ 'src/core/lib/iomgr/exec_ctx.c',
+ 'src/core/lib/iomgr/executor.c',
+ 'src/core/lib/iomgr/gethostname_fallback.c',
+ 'src/core/lib/iomgr/gethostname_host_name_max.c',
+ 'src/core/lib/iomgr/gethostname_sysconf.c',
+ 'src/core/lib/iomgr/iocp_windows.c',
+ 'src/core/lib/iomgr/iomgr.c',
+ 'src/core/lib/iomgr/iomgr_posix.c',
+ 'src/core/lib/iomgr/iomgr_uv.c',
+ 'src/core/lib/iomgr/iomgr_windows.c',
+ 'src/core/lib/iomgr/is_epollexclusive_available.c',
+ 'src/core/lib/iomgr/load_file.c',
+ 'src/core/lib/iomgr/lockfree_event.c',
+ 'src/core/lib/iomgr/network_status_tracker.c',
+ 'src/core/lib/iomgr/polling_entity.c',
+ 'src/core/lib/iomgr/pollset_set_uv.c',
+ 'src/core/lib/iomgr/pollset_set_windows.c',
+ 'src/core/lib/iomgr/pollset_uv.c',
+ 'src/core/lib/iomgr/pollset_windows.c',
+ 'src/core/lib/iomgr/resolve_address_posix.c',
+ 'src/core/lib/iomgr/resolve_address_uv.c',
+ 'src/core/lib/iomgr/resolve_address_windows.c',
+ 'src/core/lib/iomgr/resource_quota.c',
+ 'src/core/lib/iomgr/sockaddr_utils.c',
+ 'src/core/lib/iomgr/socket_factory_posix.c',
+ 'src/core/lib/iomgr/socket_mutator.c',
+ 'src/core/lib/iomgr/socket_utils_common_posix.c',
+ 'src/core/lib/iomgr/socket_utils_linux.c',
+ 'src/core/lib/iomgr/socket_utils_posix.c',
+ 'src/core/lib/iomgr/socket_utils_uv.c',
+ 'src/core/lib/iomgr/socket_utils_windows.c',
+ 'src/core/lib/iomgr/socket_windows.c',
+ 'src/core/lib/iomgr/tcp_client_posix.c',
+ 'src/core/lib/iomgr/tcp_client_uv.c',
+ 'src/core/lib/iomgr/tcp_client_windows.c',
+ 'src/core/lib/iomgr/tcp_posix.c',
+ 'src/core/lib/iomgr/tcp_server_posix.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_uv.c',
+ 'src/core/lib/iomgr/tcp_server_windows.c',
+ 'src/core/lib/iomgr/tcp_uv.c',
+ 'src/core/lib/iomgr/tcp_windows.c',
+ 'src/core/lib/iomgr/time_averaged_stats.c',
+ 'src/core/lib/iomgr/timer_generic.c',
+ 'src/core/lib/iomgr/timer_heap.c',
+ 'src/core/lib/iomgr/timer_manager.c',
+ 'src/core/lib/iomgr/timer_uv.c',
+ 'src/core/lib/iomgr/udp_server.c',
+ 'src/core/lib/iomgr/unix_sockets_posix.c',
+ 'src/core/lib/iomgr/unix_sockets_posix_noop.c',
+ 'src/core/lib/iomgr/wakeup_fd_cv.c',
+ 'src/core/lib/iomgr/wakeup_fd_eventfd.c',
+ 'src/core/lib/iomgr/wakeup_fd_nospecial.c',
+ 'src/core/lib/iomgr/wakeup_fd_pipe.c',
+ 'src/core/lib/iomgr/wakeup_fd_posix.c',
+ 'src/core/lib/json/json.c',
+ 'src/core/lib/json/json_reader.c',
+ 'src/core/lib/json/json_string.c',
+ 'src/core/lib/json/json_writer.c',
+ 'src/core/lib/slice/b64.c',
+ 'src/core/lib/slice/percent_encoding.c',
+ 'src/core/lib/slice/slice.c',
+ 'src/core/lib/slice/slice_buffer.c',
+ 'src/core/lib/slice/slice_hash_table.c',
+ 'src/core/lib/slice/slice_intern.c',
+ 'src/core/lib/slice/slice_string_helpers.c',
+ 'src/core/lib/surface/alarm.c',
+ 'src/core/lib/surface/api_trace.c',
+ 'src/core/lib/surface/byte_buffer.c',
+ 'src/core/lib/surface/byte_buffer_reader.c',
+ 'src/core/lib/surface/call.c',
+ 'src/core/lib/surface/call_details.c',
+ 'src/core/lib/surface/call_log_batch.c',
+ 'src/core/lib/surface/channel.c',
+ 'src/core/lib/surface/channel_init.c',
+ 'src/core/lib/surface/channel_ping.c',
+ 'src/core/lib/surface/channel_stack_type.c',
+ 'src/core/lib/surface/completion_queue.c',
+ 'src/core/lib/surface/completion_queue_factory.c',
+ 'src/core/lib/surface/event_string.c',
+ 'src/core/lib/surface/lame_client.cc',
+ 'src/core/lib/surface/metadata_array.c',
+ 'src/core/lib/surface/server.c',
+ 'src/core/lib/surface/validate_metadata.c',
+ 'src/core/lib/surface/version.c',
+ 'src/core/lib/transport/bdp_estimator.c',
+ 'src/core/lib/transport/byte_stream.c',
+ 'src/core/lib/transport/connectivity_state.c',
+ 'src/core/lib/transport/error_utils.c',
+ 'src/core/lib/transport/metadata.c',
+ 'src/core/lib/transport/metadata_batch.c',
+ 'src/core/lib/transport/pid_controller.c',
+ 'src/core/lib/transport/service_config.c',
+ 'src/core/lib/transport/static_metadata.c',
+ 'src/core/lib/transport/status_conversion.c',
+ 'src/core/lib/transport/timeout_encoding.c',
+ 'src/core/lib/transport/transport.c',
+ 'src/core/lib/transport/transport_op_string.c',
+ 'src/core/lib/debug/trace.c',
+ 'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
+ 'src/core/ext/transport/chttp2/transport/bin_decoder.c',
+ 'src/core/ext/transport/chttp2/transport/bin_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
+ 'src/core/ext/transport/chttp2/transport/flow_control.c',
+ 'src/core/ext/transport/chttp2/transport/frame_data.c',
+ 'src/core/ext/transport/chttp2/transport/frame_goaway.c',
+ 'src/core/ext/transport/chttp2/transport/frame_ping.c',
+ 'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
+ 'src/core/ext/transport/chttp2/transport/frame_settings.c',
+ 'src/core/ext/transport/chttp2/transport/frame_window_update.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_parser.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_table.c',
+ 'src/core/ext/transport/chttp2/transport/http2_settings.c',
+ 'src/core/ext/transport/chttp2/transport/huffsyms.c',
+ 'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
+ 'src/core/ext/transport/chttp2/transport/parsing.c',
+ 'src/core/ext/transport/chttp2/transport/stream_lists.c',
+ 'src/core/ext/transport/chttp2/transport/stream_map.c',
+ 'src/core/ext/transport/chttp2/transport/varint.c',
+ 'src/core/ext/transport/chttp2/transport/writing.c',
+ 'src/core/ext/transport/chttp2/alpn/alpn.c',
+ 'src/core/ext/filters/http/client/http_client_filter.c',
+ 'src/core/ext/filters/http/http_filters_plugin.c',
+ 'src/core/ext/filters/http/message_compress/message_compress_filter.c',
+ 'src/core/ext/filters/http/server/http_server_filter.c',
+ 'src/core/lib/http/httpcli_security_connector.c',
+ 'src/core/lib/security/context/security_context.c',
+ 'src/core/lib/security/credentials/composite/composite_credentials.c',
+ 'src/core/lib/security/credentials/credentials.c',
+ 'src/core/lib/security/credentials/credentials_metadata.c',
+ 'src/core/lib/security/credentials/fake/fake_credentials.c',
+ 'src/core/lib/security/credentials/google_default/credentials_generic.c',
+ 'src/core/lib/security/credentials/google_default/google_default_credentials.c',
+ 'src/core/lib/security/credentials/iam/iam_credentials.c',
+ 'src/core/lib/security/credentials/jwt/json_token.c',
+ 'src/core/lib/security/credentials/jwt/jwt_credentials.c',
+ 'src/core/lib/security/credentials/jwt/jwt_verifier.c',
+ 'src/core/lib/security/credentials/oauth2/oauth2_credentials.c',
+ 'src/core/lib/security/credentials/plugin/plugin_credentials.c',
+ 'src/core/lib/security/credentials/ssl/ssl_credentials.c',
+ 'src/core/lib/security/transport/client_auth_filter.c',
+ 'src/core/lib/security/transport/lb_targets_info.c',
+ 'src/core/lib/security/transport/secure_endpoint.c',
+ 'src/core/lib/security/transport/security_connector.c',
+ 'src/core/lib/security/transport/security_handshaker.c',
+ 'src/core/lib/security/transport/server_auth_filter.c',
+ 'src/core/lib/security/transport/tsi_error.c',
+ 'src/core/lib/security/util/json_util.c',
+ 'src/core/lib/surface/init_secure.c',
+ 'src/core/tsi/fake_transport_security.c',
+ 'src/core/tsi/gts_transport_security.c',
+ 'src/core/tsi/ssl_transport_security.c',
+ 'src/core/tsi/transport_security_grpc.c',
+ 'src/core/tsi/transport_security.c',
+ 'src/core/tsi/transport_security_adapter.c',
+ 'src/core/ext/transport/chttp2/server/chttp2_server.c',
+ 'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
+ 'src/core/ext/filters/client_channel/channel_connectivity.c',
+ 'src/core/ext/filters/client_channel/client_channel.c',
+ 'src/core/ext/filters/client_channel/client_channel_factory.c',
+ 'src/core/ext/filters/client_channel/client_channel_plugin.c',
+ 'src/core/ext/filters/client_channel/connector.c',
+ 'src/core/ext/filters/client_channel/http_connect_handshaker.c',
+ 'src/core/ext/filters/client_channel/http_proxy.c',
+ 'src/core/ext/filters/client_channel/lb_policy.c',
+ 'src/core/ext/filters/client_channel/lb_policy_factory.c',
+ 'src/core/ext/filters/client_channel/lb_policy_registry.c',
+ 'src/core/ext/filters/client_channel/parse_address.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
+ 'src/core/ext/filters/client_channel/resolver.c',
+ 'src/core/ext/filters/client_channel/resolver_factory.c',
+ 'src/core/ext/filters/client_channel/resolver_registry.c',
+ 'src/core/ext/filters/client_channel/retry_throttle.c',
+ 'src/core/ext/filters/client_channel/subchannel.c',
+ 'src/core/ext/filters/client_channel/subchannel_index.c',
+ 'src/core/ext/filters/client_channel/uri_parser.c',
+ 'src/core/ext/filters/deadline/deadline_filter.c',
+ 'src/core/ext/transport/chttp2/client/chttp2_connector.c',
+ 'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
+ 'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c',
+ 'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+ 'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
+ 'src/core/ext/transport/inproc/inproc_plugin.c',
+ 'src/core/ext/transport/inproc/inproc_transport.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
+ 'third_party/nanopb/pb_common.c',
+ 'third_party/nanopb/pb_decode.c',
+ 'third_party/nanopb/pb_encode.c',
+ 'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
+ 'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c',
+ 'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
+ 'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
+ 'src/core/ext/filters/load_reporting/load_reporting.c',
+ 'src/core/ext/filters/load_reporting/load_reporting_filter.c',
+ 'src/core/ext/census/base_resources.c',
+ 'src/core/ext/census/context.c',
+ 'src/core/ext/census/gen/census.pb.c',
+ 'src/core/ext/census/gen/trace_context.pb.c',
+ 'src/core/ext/census/grpc_context.c',
+ 'src/core/ext/census/grpc_filter.c',
+ 'src/core/ext/census/grpc_plugin.c',
+ 'src/core/ext/census/initialize.c',
+ 'src/core/ext/census/intrusive_hash_map.c',
+ 'src/core/ext/census/mlog.c',
+ 'src/core/ext/census/operation.c',
+ 'src/core/ext/census/placeholders.c',
+ 'src/core/ext/census/resource.c',
+ 'src/core/ext/census/trace_context.c',
+ 'src/core/ext/census/tracing.c',
+ 'src/core/ext/filters/max_age/max_age_filter.c',
+ 'src/core/ext/filters/message_size/message_size_filter.c',
+ 'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c',
+ 'src/core/ext/filters/workarounds/workaround_utils.c',
+ 'src/core/plugin_registry/grpc_plugin_registry.c',
+ ],
+ },
+ {
+ 'target_name': 'grpc_dll',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'gpr',
+ 'grpc',
+ ],
+ 'sources': [
+ ],
+ },
+ {
+ 'target_name': 'grpc_test_util',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'gpr_test_util',
+ 'gpr',
+ 'grpc',
+ ],
+ 'sources': [
+ 'test/core/end2end/data/client_certs.c',
+ 'test/core/end2end/data/server1_cert.c',
+ 'test/core/end2end/data/server1_key.c',
+ 'test/core/end2end/data/test_root_cert.c',
+ 'test/core/security/oauth2_utils.c',
+ 'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
+ 'test/core/end2end/cq_verifier.c',
+ 'test/core/end2end/fixtures/http_proxy_fixture.c',
+ 'test/core/end2end/fixtures/proxy.c',
+ 'test/core/iomgr/endpoint_tests.c',
+ 'test/core/util/debugger_macros.c',
+ 'test/core/util/grpc_profiler.c',
+ 'test/core/util/memory_counters.c',
+ 'test/core/util/mock_endpoint.c',
+ 'test/core/util/parse_hexstring.c',
+ 'test/core/util/passthru_endpoint.c',
+ 'test/core/util/port.c',
+ 'test/core/util/port_server_client.c',
+ 'test/core/util/slice_splitter.c',
+ 'test/core/util/trickle_endpoint.c',
+ 'src/core/lib/channel/channel_args.c',
+ 'src/core/lib/channel/channel_stack.c',
+ 'src/core/lib/channel/channel_stack_builder.c',
+ 'src/core/lib/channel/connected_channel.c',
+ 'src/core/lib/channel/handshaker.c',
+ 'src/core/lib/channel/handshaker_factory.c',
+ 'src/core/lib/channel/handshaker_registry.c',
+ 'src/core/lib/compression/compression.c',
+ 'src/core/lib/compression/message_compress.c',
+ 'src/core/lib/compression/stream_compression.c',
+ 'src/core/lib/http/format_request.c',
+ 'src/core/lib/http/httpcli.c',
+ 'src/core/lib/http/parser.c',
+ 'src/core/lib/iomgr/closure.c',
+ 'src/core/lib/iomgr/combiner.c',
+ 'src/core/lib/iomgr/endpoint.c',
+ 'src/core/lib/iomgr/endpoint_pair_posix.c',
+ 'src/core/lib/iomgr/endpoint_pair_uv.c',
+ 'src/core/lib/iomgr/endpoint_pair_windows.c',
+ 'src/core/lib/iomgr/error.c',
+ 'src/core/lib/iomgr/ev_epoll1_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_thread_pool_linux.c',
+ 'src/core/lib/iomgr/ev_epollex_linux.c',
+ 'src/core/lib/iomgr/ev_epollsig_linux.c',
+ 'src/core/lib/iomgr/ev_poll_posix.c',
+ 'src/core/lib/iomgr/ev_posix.c',
+ 'src/core/lib/iomgr/ev_windows.c',
+ 'src/core/lib/iomgr/exec_ctx.c',
+ 'src/core/lib/iomgr/executor.c',
+ 'src/core/lib/iomgr/gethostname_fallback.c',
+ 'src/core/lib/iomgr/gethostname_host_name_max.c',
+ 'src/core/lib/iomgr/gethostname_sysconf.c',
+ 'src/core/lib/iomgr/iocp_windows.c',
+ 'src/core/lib/iomgr/iomgr.c',
+ 'src/core/lib/iomgr/iomgr_posix.c',
+ 'src/core/lib/iomgr/iomgr_uv.c',
+ 'src/core/lib/iomgr/iomgr_windows.c',
+ 'src/core/lib/iomgr/is_epollexclusive_available.c',
+ 'src/core/lib/iomgr/load_file.c',
+ 'src/core/lib/iomgr/lockfree_event.c',
+ 'src/core/lib/iomgr/network_status_tracker.c',
+ 'src/core/lib/iomgr/polling_entity.c',
+ 'src/core/lib/iomgr/pollset_set_uv.c',
+ 'src/core/lib/iomgr/pollset_set_windows.c',
+ 'src/core/lib/iomgr/pollset_uv.c',
+ 'src/core/lib/iomgr/pollset_windows.c',
+ 'src/core/lib/iomgr/resolve_address_posix.c',
+ 'src/core/lib/iomgr/resolve_address_uv.c',
+ 'src/core/lib/iomgr/resolve_address_windows.c',
+ 'src/core/lib/iomgr/resource_quota.c',
+ 'src/core/lib/iomgr/sockaddr_utils.c',
+ 'src/core/lib/iomgr/socket_factory_posix.c',
+ 'src/core/lib/iomgr/socket_mutator.c',
+ 'src/core/lib/iomgr/socket_utils_common_posix.c',
+ 'src/core/lib/iomgr/socket_utils_linux.c',
+ 'src/core/lib/iomgr/socket_utils_posix.c',
+ 'src/core/lib/iomgr/socket_utils_uv.c',
+ 'src/core/lib/iomgr/socket_utils_windows.c',
+ 'src/core/lib/iomgr/socket_windows.c',
+ 'src/core/lib/iomgr/tcp_client_posix.c',
+ 'src/core/lib/iomgr/tcp_client_uv.c',
+ 'src/core/lib/iomgr/tcp_client_windows.c',
+ 'src/core/lib/iomgr/tcp_posix.c',
+ 'src/core/lib/iomgr/tcp_server_posix.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_uv.c',
+ 'src/core/lib/iomgr/tcp_server_windows.c',
+ 'src/core/lib/iomgr/tcp_uv.c',
+ 'src/core/lib/iomgr/tcp_windows.c',
+ 'src/core/lib/iomgr/time_averaged_stats.c',
+ 'src/core/lib/iomgr/timer_generic.c',
+ 'src/core/lib/iomgr/timer_heap.c',
+ 'src/core/lib/iomgr/timer_manager.c',
+ 'src/core/lib/iomgr/timer_uv.c',
+ 'src/core/lib/iomgr/udp_server.c',
+ 'src/core/lib/iomgr/unix_sockets_posix.c',
+ 'src/core/lib/iomgr/unix_sockets_posix_noop.c',
+ 'src/core/lib/iomgr/wakeup_fd_cv.c',
+ 'src/core/lib/iomgr/wakeup_fd_eventfd.c',
+ 'src/core/lib/iomgr/wakeup_fd_nospecial.c',
+ 'src/core/lib/iomgr/wakeup_fd_pipe.c',
+ 'src/core/lib/iomgr/wakeup_fd_posix.c',
+ 'src/core/lib/json/json.c',
+ 'src/core/lib/json/json_reader.c',
+ 'src/core/lib/json/json_string.c',
+ 'src/core/lib/json/json_writer.c',
+ 'src/core/lib/slice/b64.c',
+ 'src/core/lib/slice/percent_encoding.c',
+ 'src/core/lib/slice/slice.c',
+ 'src/core/lib/slice/slice_buffer.c',
+ 'src/core/lib/slice/slice_hash_table.c',
+ 'src/core/lib/slice/slice_intern.c',
+ 'src/core/lib/slice/slice_string_helpers.c',
+ 'src/core/lib/surface/alarm.c',
+ 'src/core/lib/surface/api_trace.c',
+ 'src/core/lib/surface/byte_buffer.c',
+ 'src/core/lib/surface/byte_buffer_reader.c',
+ 'src/core/lib/surface/call.c',
+ 'src/core/lib/surface/call_details.c',
+ 'src/core/lib/surface/call_log_batch.c',
+ 'src/core/lib/surface/channel.c',
+ 'src/core/lib/surface/channel_init.c',
+ 'src/core/lib/surface/channel_ping.c',
+ 'src/core/lib/surface/channel_stack_type.c',
+ 'src/core/lib/surface/completion_queue.c',
+ 'src/core/lib/surface/completion_queue_factory.c',
+ 'src/core/lib/surface/event_string.c',
+ 'src/core/lib/surface/lame_client.cc',
+ 'src/core/lib/surface/metadata_array.c',
+ 'src/core/lib/surface/server.c',
+ 'src/core/lib/surface/validate_metadata.c',
+ 'src/core/lib/surface/version.c',
+ 'src/core/lib/transport/bdp_estimator.c',
+ 'src/core/lib/transport/byte_stream.c',
+ 'src/core/lib/transport/connectivity_state.c',
+ 'src/core/lib/transport/error_utils.c',
+ 'src/core/lib/transport/metadata.c',
+ 'src/core/lib/transport/metadata_batch.c',
+ 'src/core/lib/transport/pid_controller.c',
+ 'src/core/lib/transport/service_config.c',
+ 'src/core/lib/transport/static_metadata.c',
+ 'src/core/lib/transport/status_conversion.c',
+ 'src/core/lib/transport/timeout_encoding.c',
+ 'src/core/lib/transport/transport.c',
+ 'src/core/lib/transport/transport_op_string.c',
+ 'src/core/lib/debug/trace.c',
+ 'src/core/ext/filters/client_channel/channel_connectivity.c',
+ 'src/core/ext/filters/client_channel/client_channel.c',
+ 'src/core/ext/filters/client_channel/client_channel_factory.c',
+ 'src/core/ext/filters/client_channel/client_channel_plugin.c',
+ 'src/core/ext/filters/client_channel/connector.c',
+ 'src/core/ext/filters/client_channel/http_connect_handshaker.c',
+ 'src/core/ext/filters/client_channel/http_proxy.c',
+ 'src/core/ext/filters/client_channel/lb_policy.c',
+ 'src/core/ext/filters/client_channel/lb_policy_factory.c',
+ 'src/core/ext/filters/client_channel/lb_policy_registry.c',
+ 'src/core/ext/filters/client_channel/parse_address.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
+ 'src/core/ext/filters/client_channel/resolver.c',
+ 'src/core/ext/filters/client_channel/resolver_factory.c',
+ 'src/core/ext/filters/client_channel/resolver_registry.c',
+ 'src/core/ext/filters/client_channel/retry_throttle.c',
+ 'src/core/ext/filters/client_channel/subchannel.c',
+ 'src/core/ext/filters/client_channel/subchannel_index.c',
+ 'src/core/ext/filters/client_channel/uri_parser.c',
+ 'src/core/ext/filters/deadline/deadline_filter.c',
+ 'src/core/ext/transport/chttp2/transport/bin_decoder.c',
+ 'src/core/ext/transport/chttp2/transport/bin_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
+ 'src/core/ext/transport/chttp2/transport/flow_control.c',
+ 'src/core/ext/transport/chttp2/transport/frame_data.c',
+ 'src/core/ext/transport/chttp2/transport/frame_goaway.c',
+ 'src/core/ext/transport/chttp2/transport/frame_ping.c',
+ 'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
+ 'src/core/ext/transport/chttp2/transport/frame_settings.c',
+ 'src/core/ext/transport/chttp2/transport/frame_window_update.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_parser.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_table.c',
+ 'src/core/ext/transport/chttp2/transport/http2_settings.c',
+ 'src/core/ext/transport/chttp2/transport/huffsyms.c',
+ 'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
+ 'src/core/ext/transport/chttp2/transport/parsing.c',
+ 'src/core/ext/transport/chttp2/transport/stream_lists.c',
+ 'src/core/ext/transport/chttp2/transport/stream_map.c',
+ 'src/core/ext/transport/chttp2/transport/varint.c',
+ 'src/core/ext/transport/chttp2/transport/writing.c',
+ 'src/core/ext/transport/chttp2/alpn/alpn.c',
+ 'src/core/ext/filters/http/client/http_client_filter.c',
+ 'src/core/ext/filters/http/http_filters_plugin.c',
+ 'src/core/ext/filters/http/message_compress/message_compress_filter.c',
+ 'src/core/ext/filters/http/server/http_server_filter.c',
+ ],
+ },
+ {
+ 'target_name': 'grpc_test_util_unsecure',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'gpr',
+ 'gpr_test_util',
+ 'grpc_unsecure',
+ ],
+ 'sources': [
+ 'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
+ 'test/core/end2end/cq_verifier.c',
+ 'test/core/end2end/fixtures/http_proxy_fixture.c',
+ 'test/core/end2end/fixtures/proxy.c',
+ 'test/core/iomgr/endpoint_tests.c',
+ 'test/core/util/debugger_macros.c',
+ 'test/core/util/grpc_profiler.c',
+ 'test/core/util/memory_counters.c',
+ 'test/core/util/mock_endpoint.c',
+ 'test/core/util/parse_hexstring.c',
+ 'test/core/util/passthru_endpoint.c',
+ 'test/core/util/port.c',
+ 'test/core/util/port_server_client.c',
+ 'test/core/util/slice_splitter.c',
+ 'test/core/util/trickle_endpoint.c',
+ 'src/core/lib/channel/channel_args.c',
+ 'src/core/lib/channel/channel_stack.c',
+ 'src/core/lib/channel/channel_stack_builder.c',
+ 'src/core/lib/channel/connected_channel.c',
+ 'src/core/lib/channel/handshaker.c',
+ 'src/core/lib/channel/handshaker_factory.c',
+ 'src/core/lib/channel/handshaker_registry.c',
+ 'src/core/lib/compression/compression.c',
+ 'src/core/lib/compression/message_compress.c',
+ 'src/core/lib/compression/stream_compression.c',
+ 'src/core/lib/http/format_request.c',
+ 'src/core/lib/http/httpcli.c',
+ 'src/core/lib/http/parser.c',
+ 'src/core/lib/iomgr/closure.c',
+ 'src/core/lib/iomgr/combiner.c',
+ 'src/core/lib/iomgr/endpoint.c',
+ 'src/core/lib/iomgr/endpoint_pair_posix.c',
+ 'src/core/lib/iomgr/endpoint_pair_uv.c',
+ 'src/core/lib/iomgr/endpoint_pair_windows.c',
+ 'src/core/lib/iomgr/error.c',
+ 'src/core/lib/iomgr/ev_epoll1_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_thread_pool_linux.c',
+ 'src/core/lib/iomgr/ev_epollex_linux.c',
+ 'src/core/lib/iomgr/ev_epollsig_linux.c',
+ 'src/core/lib/iomgr/ev_poll_posix.c',
+ 'src/core/lib/iomgr/ev_posix.c',
+ 'src/core/lib/iomgr/ev_windows.c',
+ 'src/core/lib/iomgr/exec_ctx.c',
+ 'src/core/lib/iomgr/executor.c',
+ 'src/core/lib/iomgr/gethostname_fallback.c',
+ 'src/core/lib/iomgr/gethostname_host_name_max.c',
+ 'src/core/lib/iomgr/gethostname_sysconf.c',
+ 'src/core/lib/iomgr/iocp_windows.c',
+ 'src/core/lib/iomgr/iomgr.c',
+ 'src/core/lib/iomgr/iomgr_posix.c',
+ 'src/core/lib/iomgr/iomgr_uv.c',
+ 'src/core/lib/iomgr/iomgr_windows.c',
+ 'src/core/lib/iomgr/is_epollexclusive_available.c',
+ 'src/core/lib/iomgr/load_file.c',
+ 'src/core/lib/iomgr/lockfree_event.c',
+ 'src/core/lib/iomgr/network_status_tracker.c',
+ 'src/core/lib/iomgr/polling_entity.c',
+ 'src/core/lib/iomgr/pollset_set_uv.c',
+ 'src/core/lib/iomgr/pollset_set_windows.c',
+ 'src/core/lib/iomgr/pollset_uv.c',
+ 'src/core/lib/iomgr/pollset_windows.c',
+ 'src/core/lib/iomgr/resolve_address_posix.c',
+ 'src/core/lib/iomgr/resolve_address_uv.c',
+ 'src/core/lib/iomgr/resolve_address_windows.c',
+ 'src/core/lib/iomgr/resource_quota.c',
+ 'src/core/lib/iomgr/sockaddr_utils.c',
+ 'src/core/lib/iomgr/socket_factory_posix.c',
+ 'src/core/lib/iomgr/socket_mutator.c',
+ 'src/core/lib/iomgr/socket_utils_common_posix.c',
+ 'src/core/lib/iomgr/socket_utils_linux.c',
+ 'src/core/lib/iomgr/socket_utils_posix.c',
+ 'src/core/lib/iomgr/socket_utils_uv.c',
+ 'src/core/lib/iomgr/socket_utils_windows.c',
+ 'src/core/lib/iomgr/socket_windows.c',
+ 'src/core/lib/iomgr/tcp_client_posix.c',
+ 'src/core/lib/iomgr/tcp_client_uv.c',
+ 'src/core/lib/iomgr/tcp_client_windows.c',
+ 'src/core/lib/iomgr/tcp_posix.c',
+ 'src/core/lib/iomgr/tcp_server_posix.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_uv.c',
+ 'src/core/lib/iomgr/tcp_server_windows.c',
+ 'src/core/lib/iomgr/tcp_uv.c',
+ 'src/core/lib/iomgr/tcp_windows.c',
+ 'src/core/lib/iomgr/time_averaged_stats.c',
+ 'src/core/lib/iomgr/timer_generic.c',
+ 'src/core/lib/iomgr/timer_heap.c',
+ 'src/core/lib/iomgr/timer_manager.c',
+ 'src/core/lib/iomgr/timer_uv.c',
+ 'src/core/lib/iomgr/udp_server.c',
+ 'src/core/lib/iomgr/unix_sockets_posix.c',
+ 'src/core/lib/iomgr/unix_sockets_posix_noop.c',
+ 'src/core/lib/iomgr/wakeup_fd_cv.c',
+ 'src/core/lib/iomgr/wakeup_fd_eventfd.c',
+ 'src/core/lib/iomgr/wakeup_fd_nospecial.c',
+ 'src/core/lib/iomgr/wakeup_fd_pipe.c',
+ 'src/core/lib/iomgr/wakeup_fd_posix.c',
+ 'src/core/lib/json/json.c',
+ 'src/core/lib/json/json_reader.c',
+ 'src/core/lib/json/json_string.c',
+ 'src/core/lib/json/json_writer.c',
+ 'src/core/lib/slice/b64.c',
+ 'src/core/lib/slice/percent_encoding.c',
+ 'src/core/lib/slice/slice.c',
+ 'src/core/lib/slice/slice_buffer.c',
+ 'src/core/lib/slice/slice_hash_table.c',
+ 'src/core/lib/slice/slice_intern.c',
+ 'src/core/lib/slice/slice_string_helpers.c',
+ 'src/core/lib/surface/alarm.c',
+ 'src/core/lib/surface/api_trace.c',
+ 'src/core/lib/surface/byte_buffer.c',
+ 'src/core/lib/surface/byte_buffer_reader.c',
+ 'src/core/lib/surface/call.c',
+ 'src/core/lib/surface/call_details.c',
+ 'src/core/lib/surface/call_log_batch.c',
+ 'src/core/lib/surface/channel.c',
+ 'src/core/lib/surface/channel_init.c',
+ 'src/core/lib/surface/channel_ping.c',
+ 'src/core/lib/surface/channel_stack_type.c',
+ 'src/core/lib/surface/completion_queue.c',
+ 'src/core/lib/surface/completion_queue_factory.c',
+ 'src/core/lib/surface/event_string.c',
+ 'src/core/lib/surface/lame_client.cc',
+ 'src/core/lib/surface/metadata_array.c',
+ 'src/core/lib/surface/server.c',
+ 'src/core/lib/surface/validate_metadata.c',
+ 'src/core/lib/surface/version.c',
+ 'src/core/lib/transport/bdp_estimator.c',
+ 'src/core/lib/transport/byte_stream.c',
+ 'src/core/lib/transport/connectivity_state.c',
+ 'src/core/lib/transport/error_utils.c',
+ 'src/core/lib/transport/metadata.c',
+ 'src/core/lib/transport/metadata_batch.c',
+ 'src/core/lib/transport/pid_controller.c',
+ 'src/core/lib/transport/service_config.c',
+ 'src/core/lib/transport/static_metadata.c',
+ 'src/core/lib/transport/status_conversion.c',
+ 'src/core/lib/transport/timeout_encoding.c',
+ 'src/core/lib/transport/transport.c',
+ 'src/core/lib/transport/transport_op_string.c',
+ 'src/core/lib/debug/trace.c',
+ 'src/core/ext/filters/client_channel/channel_connectivity.c',
+ 'src/core/ext/filters/client_channel/client_channel.c',
+ 'src/core/ext/filters/client_channel/client_channel_factory.c',
+ 'src/core/ext/filters/client_channel/client_channel_plugin.c',
+ 'src/core/ext/filters/client_channel/connector.c',
+ 'src/core/ext/filters/client_channel/http_connect_handshaker.c',
+ 'src/core/ext/filters/client_channel/http_proxy.c',
+ 'src/core/ext/filters/client_channel/lb_policy.c',
+ 'src/core/ext/filters/client_channel/lb_policy_factory.c',
+ 'src/core/ext/filters/client_channel/lb_policy_registry.c',
+ 'src/core/ext/filters/client_channel/parse_address.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
+ 'src/core/ext/filters/client_channel/resolver.c',
+ 'src/core/ext/filters/client_channel/resolver_factory.c',
+ 'src/core/ext/filters/client_channel/resolver_registry.c',
+ 'src/core/ext/filters/client_channel/retry_throttle.c',
+ 'src/core/ext/filters/client_channel/subchannel.c',
+ 'src/core/ext/filters/client_channel/subchannel_index.c',
+ 'src/core/ext/filters/client_channel/uri_parser.c',
+ 'src/core/ext/filters/deadline/deadline_filter.c',
+ 'src/core/ext/transport/chttp2/transport/bin_decoder.c',
+ 'src/core/ext/transport/chttp2/transport/bin_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
+ 'src/core/ext/transport/chttp2/transport/flow_control.c',
+ 'src/core/ext/transport/chttp2/transport/frame_data.c',
+ 'src/core/ext/transport/chttp2/transport/frame_goaway.c',
+ 'src/core/ext/transport/chttp2/transport/frame_ping.c',
+ 'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
+ 'src/core/ext/transport/chttp2/transport/frame_settings.c',
+ 'src/core/ext/transport/chttp2/transport/frame_window_update.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_parser.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_table.c',
+ 'src/core/ext/transport/chttp2/transport/http2_settings.c',
+ 'src/core/ext/transport/chttp2/transport/huffsyms.c',
+ 'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
+ 'src/core/ext/transport/chttp2/transport/parsing.c',
+ 'src/core/ext/transport/chttp2/transport/stream_lists.c',
+ 'src/core/ext/transport/chttp2/transport/stream_map.c',
+ 'src/core/ext/transport/chttp2/transport/varint.c',
+ 'src/core/ext/transport/chttp2/transport/writing.c',
+ 'src/core/ext/transport/chttp2/alpn/alpn.c',
+ 'src/core/ext/filters/http/client/http_client_filter.c',
+ 'src/core/ext/filters/http/http_filters_plugin.c',
+ 'src/core/ext/filters/http/message_compress/message_compress_filter.c',
+ 'src/core/ext/filters/http/server/http_server_filter.c',
+ ],
+ },
+ {
+ 'target_name': 'grpc_unsecure',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'gpr',
+ ],
+ 'sources': [
+ 'src/core/lib/surface/init.c',
+ 'src/core/lib/surface/init_unsecure.c',
+ 'src/core/lib/channel/channel_args.c',
+ 'src/core/lib/channel/channel_stack.c',
+ 'src/core/lib/channel/channel_stack_builder.c',
+ 'src/core/lib/channel/connected_channel.c',
+ 'src/core/lib/channel/handshaker.c',
+ 'src/core/lib/channel/handshaker_factory.c',
+ 'src/core/lib/channel/handshaker_registry.c',
+ 'src/core/lib/compression/compression.c',
+ 'src/core/lib/compression/message_compress.c',
+ 'src/core/lib/compression/stream_compression.c',
+ 'src/core/lib/http/format_request.c',
+ 'src/core/lib/http/httpcli.c',
+ 'src/core/lib/http/parser.c',
+ 'src/core/lib/iomgr/closure.c',
+ 'src/core/lib/iomgr/combiner.c',
+ 'src/core/lib/iomgr/endpoint.c',
+ 'src/core/lib/iomgr/endpoint_pair_posix.c',
+ 'src/core/lib/iomgr/endpoint_pair_uv.c',
+ 'src/core/lib/iomgr/endpoint_pair_windows.c',
+ 'src/core/lib/iomgr/error.c',
+ 'src/core/lib/iomgr/ev_epoll1_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_limited_pollers_linux.c',
+ 'src/core/lib/iomgr/ev_epoll_thread_pool_linux.c',
+ 'src/core/lib/iomgr/ev_epollex_linux.c',
+ 'src/core/lib/iomgr/ev_epollsig_linux.c',
+ 'src/core/lib/iomgr/ev_poll_posix.c',
+ 'src/core/lib/iomgr/ev_posix.c',
+ 'src/core/lib/iomgr/ev_windows.c',
+ 'src/core/lib/iomgr/exec_ctx.c',
+ 'src/core/lib/iomgr/executor.c',
+ 'src/core/lib/iomgr/gethostname_fallback.c',
+ 'src/core/lib/iomgr/gethostname_host_name_max.c',
+ 'src/core/lib/iomgr/gethostname_sysconf.c',
+ 'src/core/lib/iomgr/iocp_windows.c',
+ 'src/core/lib/iomgr/iomgr.c',
+ 'src/core/lib/iomgr/iomgr_posix.c',
+ 'src/core/lib/iomgr/iomgr_uv.c',
+ 'src/core/lib/iomgr/iomgr_windows.c',
+ 'src/core/lib/iomgr/is_epollexclusive_available.c',
+ 'src/core/lib/iomgr/load_file.c',
+ 'src/core/lib/iomgr/lockfree_event.c',
+ 'src/core/lib/iomgr/network_status_tracker.c',
+ 'src/core/lib/iomgr/polling_entity.c',
+ 'src/core/lib/iomgr/pollset_set_uv.c',
+ 'src/core/lib/iomgr/pollset_set_windows.c',
+ 'src/core/lib/iomgr/pollset_uv.c',
+ 'src/core/lib/iomgr/pollset_windows.c',
+ 'src/core/lib/iomgr/resolve_address_posix.c',
+ 'src/core/lib/iomgr/resolve_address_uv.c',
+ 'src/core/lib/iomgr/resolve_address_windows.c',
+ 'src/core/lib/iomgr/resource_quota.c',
+ 'src/core/lib/iomgr/sockaddr_utils.c',
+ 'src/core/lib/iomgr/socket_factory_posix.c',
+ 'src/core/lib/iomgr/socket_mutator.c',
+ 'src/core/lib/iomgr/socket_utils_common_posix.c',
+ 'src/core/lib/iomgr/socket_utils_linux.c',
+ 'src/core/lib/iomgr/socket_utils_posix.c',
+ 'src/core/lib/iomgr/socket_utils_uv.c',
+ 'src/core/lib/iomgr/socket_utils_windows.c',
+ 'src/core/lib/iomgr/socket_windows.c',
+ 'src/core/lib/iomgr/tcp_client_posix.c',
+ 'src/core/lib/iomgr/tcp_client_uv.c',
+ 'src/core/lib/iomgr/tcp_client_windows.c',
+ 'src/core/lib/iomgr/tcp_posix.c',
+ 'src/core/lib/iomgr/tcp_server_posix.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.c',
+ 'src/core/lib/iomgr/tcp_server_uv.c',
+ 'src/core/lib/iomgr/tcp_server_windows.c',
+ 'src/core/lib/iomgr/tcp_uv.c',
+ 'src/core/lib/iomgr/tcp_windows.c',
+ 'src/core/lib/iomgr/time_averaged_stats.c',
+ 'src/core/lib/iomgr/timer_generic.c',
+ 'src/core/lib/iomgr/timer_heap.c',
+ 'src/core/lib/iomgr/timer_manager.c',
+ 'src/core/lib/iomgr/timer_uv.c',
+ 'src/core/lib/iomgr/udp_server.c',
+ 'src/core/lib/iomgr/unix_sockets_posix.c',
+ 'src/core/lib/iomgr/unix_sockets_posix_noop.c',
+ 'src/core/lib/iomgr/wakeup_fd_cv.c',
+ 'src/core/lib/iomgr/wakeup_fd_eventfd.c',
+ 'src/core/lib/iomgr/wakeup_fd_nospecial.c',
+ 'src/core/lib/iomgr/wakeup_fd_pipe.c',
+ 'src/core/lib/iomgr/wakeup_fd_posix.c',
+ 'src/core/lib/json/json.c',
+ 'src/core/lib/json/json_reader.c',
+ 'src/core/lib/json/json_string.c',
+ 'src/core/lib/json/json_writer.c',
+ 'src/core/lib/slice/b64.c',
+ 'src/core/lib/slice/percent_encoding.c',
+ 'src/core/lib/slice/slice.c',
+ 'src/core/lib/slice/slice_buffer.c',
+ 'src/core/lib/slice/slice_hash_table.c',
+ 'src/core/lib/slice/slice_intern.c',
+ 'src/core/lib/slice/slice_string_helpers.c',
+ 'src/core/lib/surface/alarm.c',
+ 'src/core/lib/surface/api_trace.c',
+ 'src/core/lib/surface/byte_buffer.c',
+ 'src/core/lib/surface/byte_buffer_reader.c',
+ 'src/core/lib/surface/call.c',
+ 'src/core/lib/surface/call_details.c',
+ 'src/core/lib/surface/call_log_batch.c',
+ 'src/core/lib/surface/channel.c',
+ 'src/core/lib/surface/channel_init.c',
+ 'src/core/lib/surface/channel_ping.c',
+ 'src/core/lib/surface/channel_stack_type.c',
+ 'src/core/lib/surface/completion_queue.c',
+ 'src/core/lib/surface/completion_queue_factory.c',
+ 'src/core/lib/surface/event_string.c',
+ 'src/core/lib/surface/lame_client.cc',
+ 'src/core/lib/surface/metadata_array.c',
+ 'src/core/lib/surface/server.c',
+ 'src/core/lib/surface/validate_metadata.c',
+ 'src/core/lib/surface/version.c',
+ 'src/core/lib/transport/bdp_estimator.c',
+ 'src/core/lib/transport/byte_stream.c',
+ 'src/core/lib/transport/connectivity_state.c',
+ 'src/core/lib/transport/error_utils.c',
+ 'src/core/lib/transport/metadata.c',
+ 'src/core/lib/transport/metadata_batch.c',
+ 'src/core/lib/transport/pid_controller.c',
+ 'src/core/lib/transport/service_config.c',
+ 'src/core/lib/transport/static_metadata.c',
+ 'src/core/lib/transport/status_conversion.c',
+ 'src/core/lib/transport/timeout_encoding.c',
+ 'src/core/lib/transport/transport.c',
+ 'src/core/lib/transport/transport_op_string.c',
+ 'src/core/lib/debug/trace.c',
+ 'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
+ 'src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c',
+ 'src/core/ext/transport/chttp2/transport/bin_decoder.c',
+ 'src/core/ext/transport/chttp2/transport/bin_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
+ 'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
+ 'src/core/ext/transport/chttp2/transport/flow_control.c',
+ 'src/core/ext/transport/chttp2/transport/frame_data.c',
+ 'src/core/ext/transport/chttp2/transport/frame_goaway.c',
+ 'src/core/ext/transport/chttp2/transport/frame_ping.c',
+ 'src/core/ext/transport/chttp2/transport/frame_rst_stream.c',
+ 'src/core/ext/transport/chttp2/transport/frame_settings.c',
+ 'src/core/ext/transport/chttp2/transport/frame_window_update.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_encoder.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_parser.c',
+ 'src/core/ext/transport/chttp2/transport/hpack_table.c',
+ 'src/core/ext/transport/chttp2/transport/http2_settings.c',
+ 'src/core/ext/transport/chttp2/transport/huffsyms.c',
+ 'src/core/ext/transport/chttp2/transport/incoming_metadata.c',
+ 'src/core/ext/transport/chttp2/transport/parsing.c',
+ 'src/core/ext/transport/chttp2/transport/stream_lists.c',
+ 'src/core/ext/transport/chttp2/transport/stream_map.c',
+ 'src/core/ext/transport/chttp2/transport/varint.c',
+ 'src/core/ext/transport/chttp2/transport/writing.c',
+ 'src/core/ext/transport/chttp2/alpn/alpn.c',
+ 'src/core/ext/filters/http/client/http_client_filter.c',
+ 'src/core/ext/filters/http/http_filters_plugin.c',
+ 'src/core/ext/filters/http/message_compress/message_compress_filter.c',
+ 'src/core/ext/filters/http/server/http_server_filter.c',
+ 'src/core/ext/transport/chttp2/server/chttp2_server.c',
+ 'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
+ 'src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c',
+ 'src/core/ext/transport/chttp2/client/chttp2_connector.c',
+ 'src/core/ext/filters/client_channel/channel_connectivity.c',
+ 'src/core/ext/filters/client_channel/client_channel.c',
+ 'src/core/ext/filters/client_channel/client_channel_factory.c',
+ 'src/core/ext/filters/client_channel/client_channel_plugin.c',
+ 'src/core/ext/filters/client_channel/connector.c',
+ 'src/core/ext/filters/client_channel/http_connect_handshaker.c',
+ 'src/core/ext/filters/client_channel/http_proxy.c',
+ 'src/core/ext/filters/client_channel/lb_policy.c',
+ 'src/core/ext/filters/client_channel/lb_policy_factory.c',
+ 'src/core/ext/filters/client_channel/lb_policy_registry.c',
+ 'src/core/ext/filters/client_channel/parse_address.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper.c',
+ 'src/core/ext/filters/client_channel/proxy_mapper_registry.c',
+ 'src/core/ext/filters/client_channel/resolver.c',
+ 'src/core/ext/filters/client_channel/resolver_factory.c',
+ 'src/core/ext/filters/client_channel/resolver_registry.c',
+ 'src/core/ext/filters/client_channel/retry_throttle.c',
+ 'src/core/ext/filters/client_channel/subchannel.c',
+ 'src/core/ext/filters/client_channel/subchannel_index.c',
+ 'src/core/ext/filters/client_channel/uri_parser.c',
+ 'src/core/ext/filters/deadline/deadline_filter.c',
+ 'src/core/ext/transport/inproc/inproc_plugin.c',
+ 'src/core/ext/transport/inproc/inproc_transport.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c',
+ 'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c',
+ 'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c',
+ 'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c',
+ 'src/core/ext/filters/load_reporting/load_reporting.c',
+ 'src/core/ext/filters/load_reporting/load_reporting_filter.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.c',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
+ 'third_party/nanopb/pb_common.c',
+ 'third_party/nanopb/pb_decode.c',
+ 'third_party/nanopb/pb_encode.c',
+ 'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c',
+ 'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c',
+ 'src/core/ext/census/base_resources.c',
+ 'src/core/ext/census/context.c',
+ 'src/core/ext/census/gen/census.pb.c',
+ 'src/core/ext/census/gen/trace_context.pb.c',
+ 'src/core/ext/census/grpc_context.c',
+ 'src/core/ext/census/grpc_filter.c',
+ 'src/core/ext/census/grpc_plugin.c',
+ 'src/core/ext/census/initialize.c',
+ 'src/core/ext/census/intrusive_hash_map.c',
+ 'src/core/ext/census/mlog.c',
+ 'src/core/ext/census/operation.c',
+ 'src/core/ext/census/placeholders.c',
+ 'src/core/ext/census/resource.c',
+ 'src/core/ext/census/trace_context.c',
+ 'src/core/ext/census/tracing.c',
+ 'src/core/ext/filters/max_age/max_age_filter.c',
+ 'src/core/ext/filters/message_size/message_size_filter.c',
+ 'src/core/ext/filters/workarounds/workaround_cronet_compression_filter.c',
+ 'src/core/ext/filters/workarounds/workaround_utils.c',
+ 'src/core/plugin_registry/grpc_unsecure_plugin_registry.c',
+ ],
+ },
+ {
+ 'target_name': 'reconnect_server',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'test_tcp_server',
+ 'grpc_test_util',
+ 'grpc',
+ 'gpr_test_util',
+ 'gpr',
+ ],
+ 'sources': [
+ 'test/core/util/reconnect_server.c',
+ ],
+ },
+ {
+ 'target_name': 'test_tcp_server',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc_test_util',
+ 'grpc',
+ 'gpr_test_util',
+ 'gpr',
+ ],
+ 'sources': [
+ 'test/core/util/test_tcp_server.c',
+ ],
+ },
+ {
+ 'target_name': 'grpc++',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc',
+ 'gpr',
+ ],
+ 'sources': [
+ 'src/cpp/client/insecure_credentials.cc',
+ 'src/cpp/client/secure_credentials.cc',
+ 'src/cpp/common/auth_property_iterator.cc',
+ 'src/cpp/common/secure_auth_context.cc',
+ 'src/cpp/common/secure_channel_arguments.cc',
+ 'src/cpp/common/secure_create_auth_context.cc',
+ 'src/cpp/server/insecure_server_credentials.cc',
+ 'src/cpp/server/secure_server_credentials.cc',
+ 'src/cpp/client/channel_cc.cc',
+ 'src/cpp/client/client_context.cc',
+ 'src/cpp/client/create_channel.cc',
+ 'src/cpp/client/create_channel_internal.cc',
+ 'src/cpp/client/create_channel_posix.cc',
+ 'src/cpp/client/credentials_cc.cc',
+ 'src/cpp/client/generic_stub.cc',
+ 'src/cpp/common/channel_arguments.cc',
+ 'src/cpp/common/channel_filter.cc',
+ 'src/cpp/common/completion_queue_cc.cc',
+ 'src/cpp/common/core_codegen.cc',
+ 'src/cpp/common/resource_quota_cc.cc',
+ 'src/cpp/common/rpc_method.cc',
+ 'src/cpp/common/version_cc.cc',
+ 'src/cpp/server/async_generic_service.cc',
+ 'src/cpp/server/channel_argument_option.cc',
+ 'src/cpp/server/create_default_thread_pool.cc',
+ 'src/cpp/server/dynamic_thread_pool.cc',
+ 'src/cpp/server/health/default_health_check_service.cc',
+ 'src/cpp/server/health/health.pb.c',
+ 'src/cpp/server/health/health_check_service.cc',
+ 'src/cpp/server/health/health_check_service_server_builder_option.cc',
+ 'src/cpp/server/server_builder.cc',
+ 'src/cpp/server/server_cc.cc',
+ 'src/cpp/server/server_context.cc',
+ 'src/cpp/server/server_credentials.cc',
+ 'src/cpp/server/server_posix.cc',
+ 'src/cpp/thread_manager/thread_manager.cc',
+ 'src/cpp/util/byte_buffer_cc.cc',
+ 'src/cpp/util/slice_cc.cc',
+ 'src/cpp/util/status.cc',
+ 'src/cpp/util/string_ref.cc',
+ 'src/cpp/util/time_cc.cc',
+ 'src/cpp/codegen/codegen_init.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc++_error_details',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++',
+ ],
+ 'sources': [
+ 'src/proto/grpc/status/status.proto',
+ 'src/cpp/util/error_details.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc++_proto_reflection_desc_db',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++',
+ 'grpc',
+ ],
+ 'sources': [
+ 'test/cpp/util/proto_reflection_descriptor_database.cc',
+ 'src/proto/grpc/reflection/v1alpha/reflection.proto',
+ ],
+ },
+ {
+ 'target_name': 'grpc++_reflection',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++',
+ 'grpc',
+ ],
+ 'sources': [
+ 'src/cpp/ext/proto_server_reflection.cc',
+ 'src/cpp/ext/proto_server_reflection_plugin.cc',
+ 'src/proto/grpc/reflection/v1alpha/reflection.proto',
+ ],
+ },
+ {
+ 'target_name': 'grpc++_test_config',
+ 'type': 'static_library',
+ 'dependencies': [
+ ],
+ 'sources': [
+ 'test/cpp/util/test_config_cc.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc++_test_util',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++',
+ 'grpc_test_util',
+ 'grpc',
+ ],
+ 'sources': [
+ 'src/proto/grpc/health/v1/health.proto',
+ 'src/proto/grpc/testing/echo_messages.proto',
+ 'src/proto/grpc/testing/echo.proto',
+ 'src/proto/grpc/testing/duplicate/echo_duplicate.proto',
+ 'test/cpp/end2end/test_service_impl.cc',
+ 'test/cpp/util/byte_buffer_proto_helper.cc',
+ 'test/cpp/util/create_test_channel.cc',
+ 'test/cpp/util/string_ref_helper.cc',
+ 'test/cpp/util/subprocess.cc',
+ 'test/cpp/util/test_credentials_provider.cc',
+ 'src/cpp/codegen/codegen_init.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc++_test_util_unsecure',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++_unsecure',
+ 'grpc_test_util_unsecure',
+ 'grpc_unsecure',
+ ],
+ 'sources': [
+ 'src/proto/grpc/health/v1/health.proto',
+ 'src/proto/grpc/testing/echo_messages.proto',
+ 'src/proto/grpc/testing/echo.proto',
+ 'src/proto/grpc/testing/duplicate/echo_duplicate.proto',
+ 'test/cpp/end2end/test_service_impl.cc',
+ 'test/cpp/util/byte_buffer_proto_helper.cc',
+ 'test/cpp/util/string_ref_helper.cc',
+ 'test/cpp/util/subprocess.cc',
+ 'src/cpp/codegen/codegen_init.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc++_unsecure',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'gpr',
+ 'grpc_unsecure',
+ ],
+ 'sources': [
+ 'src/cpp/client/insecure_credentials.cc',
+ 'src/cpp/common/insecure_create_auth_context.cc',
+ 'src/cpp/server/insecure_server_credentials.cc',
+ 'src/cpp/client/channel_cc.cc',
+ 'src/cpp/client/client_context.cc',
+ 'src/cpp/client/create_channel.cc',
+ 'src/cpp/client/create_channel_internal.cc',
+ 'src/cpp/client/create_channel_posix.cc',
+ 'src/cpp/client/credentials_cc.cc',
+ 'src/cpp/client/generic_stub.cc',
+ 'src/cpp/common/channel_arguments.cc',
+ 'src/cpp/common/channel_filter.cc',
+ 'src/cpp/common/completion_queue_cc.cc',
+ 'src/cpp/common/core_codegen.cc',
+ 'src/cpp/common/resource_quota_cc.cc',
+ 'src/cpp/common/rpc_method.cc',
+ 'src/cpp/common/version_cc.cc',
+ 'src/cpp/server/async_generic_service.cc',
+ 'src/cpp/server/channel_argument_option.cc',
+ 'src/cpp/server/create_default_thread_pool.cc',
+ 'src/cpp/server/dynamic_thread_pool.cc',
+ 'src/cpp/server/health/default_health_check_service.cc',
+ 'src/cpp/server/health/health.pb.c',
+ 'src/cpp/server/health/health_check_service.cc',
+ 'src/cpp/server/health/health_check_service_server_builder_option.cc',
+ 'src/cpp/server/server_builder.cc',
+ 'src/cpp/server/server_cc.cc',
+ 'src/cpp/server/server_context.cc',
+ 'src/cpp/server/server_credentials.cc',
+ 'src/cpp/server/server_posix.cc',
+ 'src/cpp/thread_manager/thread_manager.cc',
+ 'src/cpp/util/byte_buffer_cc.cc',
+ 'src/cpp/util/slice_cc.cc',
+ 'src/cpp/util/status.cc',
+ 'src/cpp/util/string_ref.cc',
+ 'src/cpp/util/time_cc.cc',
+ 'src/cpp/codegen/codegen_init.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc_benchmark',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'benchmark',
+ 'grpc++_unsecure',
+ 'grpc_test_util_unsecure',
+ 'grpc_unsecure',
+ ],
+ 'sources': [
+ 'test/cpp/microbenchmarks/helpers.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc_cli_libs',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++_proto_reflection_desc_db',
+ 'grpc++',
+ 'grpc',
+ ],
+ 'sources': [
+ 'test/cpp/util/cli_call.cc',
+ 'test/cpp/util/cli_credentials.cc',
+ 'test/cpp/util/grpc_tool.cc',
+ 'test/cpp/util/proto_file_parser.cc',
+ 'test/cpp/util/service_describer.cc',
+ 'src/proto/grpc/reflection/v1alpha/reflection.proto',
+ ],
+ },
+ {
+ 'target_name': 'grpc_plugin_support',
+ 'type': 'static_library',
+ 'dependencies': [
+ ],
+ 'sources': [
+ 'src/compiler/cpp_generator.cc',
+ 'src/compiler/csharp_generator.cc',
+ 'src/compiler/node_generator.cc',
+ 'src/compiler/objective_c_generator.cc',
+ 'src/compiler/php_generator.cc',
+ 'src/compiler/python_generator.cc',
+ 'src/compiler/ruby_generator.cc',
+ ],
+ },
+ {
+ 'target_name': 'http2_client_main',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++_test_util',
+ 'grpc_test_util',
+ 'grpc++',
+ 'grpc',
+ 'grpc++_test_config',
+ ],
+ 'sources': [
+ 'src/proto/grpc/testing/empty.proto',
+ 'src/proto/grpc/testing/messages.proto',
+ 'src/proto/grpc/testing/test.proto',
+ 'test/cpp/interop/http2_client.cc',
+ ],
+ },
+ {
+ 'target_name': 'interop_client_helper',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++_test_util',
+ 'grpc_test_util',
+ 'grpc++',
+ 'grpc',
+ 'gpr',
+ ],
+ 'sources': [
+ 'src/proto/grpc/testing/messages.proto',
+ 'test/cpp/interop/client_helper.cc',
+ ],
+ },
+ {
+ 'target_name': 'interop_client_main',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'interop_client_helper',
+ 'grpc++_test_util',
+ 'grpc_test_util',
+ 'grpc++',
+ 'grpc',
+ 'gpr_test_util',
+ 'gpr',
+ 'grpc++_test_config',
+ ],
+ 'sources': [
+ 'src/proto/grpc/testing/empty.proto',
+ 'src/proto/grpc/testing/messages.proto',
+ 'src/proto/grpc/testing/test.proto',
+ 'test/cpp/interop/client.cc',
+ 'test/cpp/interop/interop_client.cc',
+ ],
+ },
+ {
+ 'target_name': 'interop_server_helper',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc++_test_util',
+ 'grpc_test_util',
+ 'grpc++',
+ 'grpc',
+ 'gpr',
+ ],
+ 'sources': [
+ 'test/cpp/interop/server_helper.cc',
+ ],
+ },
+ {
+ 'target_name': 'interop_server_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'interop_server_helper',
+ 'grpc++_test_util',
+ 'grpc_test_util',
+ 'grpc++',
+ 'grpc',
+ 'gpr_test_util',
+ 'gpr',
+ 'grpc++_test_config',
+ ],
+ 'sources': [
+ 'src/proto/grpc/testing/empty.proto',
+ 'src/proto/grpc/testing/messages.proto',
+ 'src/proto/grpc/testing/test.proto',
+ 'test/cpp/interop/interop_server.cc',
+ ],
+ },
+ {
+ 'target_name': 'interop_server_main',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'interop_server_lib',
+ ],
+ 'sources': [
+ 'test/cpp/interop/interop_server_bootstrap.cc',
+ ],
+ },
+ {
+ 'target_name': 'qps',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc_test_util',
+ 'grpc++_test_util',
+ 'grpc++',
+ 'grpc',
+ ],
+ 'sources': [
+ 'src/proto/grpc/testing/messages.proto',
+ 'src/proto/grpc/testing/payloads.proto',
+ 'src/proto/grpc/testing/stats.proto',
+ 'src/proto/grpc/testing/control.proto',
+ 'src/proto/grpc/testing/services.proto',
+ 'test/cpp/qps/benchmark_config.cc',
+ 'test/cpp/qps/client_async.cc',
+ 'test/cpp/qps/client_sync.cc',
+ 'test/cpp/qps/driver.cc',
+ 'test/cpp/qps/parse_json.cc',
+ 'test/cpp/qps/qps_worker.cc',
+ 'test/cpp/qps/report.cc',
+ 'test/cpp/qps/server_async.cc',
+ 'test/cpp/qps/server_sync.cc',
+ 'test/cpp/qps/usage_timer.cc',
+ ],
+ },
+ {
+ 'target_name': 'grpc_csharp_ext',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc',
+ 'gpr',
+ ],
+ 'sources': [
+ 'src/csharp/ext/grpc_csharp_ext.c',
+ ],
+ },
+ {
+ 'target_name': 'boringssl',
+ 'type': 'static_library',
+ 'dependencies': [
+ ],
+ 'sources': [
+ 'src/boringssl/err_data.c',
+ 'third_party/boringssl/crypto/aes/aes.c',
+ 'third_party/boringssl/crypto/aes/key_wrap.c',
+ 'third_party/boringssl/crypto/aes/mode_wrappers.c',
+ 'third_party/boringssl/crypto/asn1/a_bitstr.c',
+ 'third_party/boringssl/crypto/asn1/a_bool.c',
+ 'third_party/boringssl/crypto/asn1/a_d2i_fp.c',
+ 'third_party/boringssl/crypto/asn1/a_dup.c',
+ 'third_party/boringssl/crypto/asn1/a_enum.c',
+ 'third_party/boringssl/crypto/asn1/a_gentm.c',
+ 'third_party/boringssl/crypto/asn1/a_i2d_fp.c',
+ 'third_party/boringssl/crypto/asn1/a_int.c',
+ 'third_party/boringssl/crypto/asn1/a_mbstr.c',
+ 'third_party/boringssl/crypto/asn1/a_object.c',
+ 'third_party/boringssl/crypto/asn1/a_octet.c',
+ 'third_party/boringssl/crypto/asn1/a_print.c',
+ 'third_party/boringssl/crypto/asn1/a_strnid.c',
+ 'third_party/boringssl/crypto/asn1/a_time.c',
+ 'third_party/boringssl/crypto/asn1/a_type.c',
+ 'third_party/boringssl/crypto/asn1/a_utctm.c',
+ 'third_party/boringssl/crypto/asn1/a_utf8.c',
+ 'third_party/boringssl/crypto/asn1/asn1_lib.c',
+ 'third_party/boringssl/crypto/asn1/asn1_par.c',
+ 'third_party/boringssl/crypto/asn1/asn_pack.c',
+ 'third_party/boringssl/crypto/asn1/f_enum.c',
+ 'third_party/boringssl/crypto/asn1/f_int.c',
+ 'third_party/boringssl/crypto/asn1/f_string.c',
+ 'third_party/boringssl/crypto/asn1/t_bitst.c',
+ 'third_party/boringssl/crypto/asn1/tasn_dec.c',
+ 'third_party/boringssl/crypto/asn1/tasn_enc.c',
+ 'third_party/boringssl/crypto/asn1/tasn_fre.c',
+ 'third_party/boringssl/crypto/asn1/tasn_new.c',
+ 'third_party/boringssl/crypto/asn1/tasn_typ.c',
+ 'third_party/boringssl/crypto/asn1/tasn_utl.c',
+ 'third_party/boringssl/crypto/asn1/time_support.c',
+ 'third_party/boringssl/crypto/asn1/x_bignum.c',
+ 'third_party/boringssl/crypto/asn1/x_long.c',
+ 'third_party/boringssl/crypto/base64/base64.c',
+ 'third_party/boringssl/crypto/bio/bio.c',
+ 'third_party/boringssl/crypto/bio/bio_mem.c',
+ 'third_party/boringssl/crypto/bio/connect.c',
+ 'third_party/boringssl/crypto/bio/fd.c',
+ 'third_party/boringssl/crypto/bio/file.c',
+ 'third_party/boringssl/crypto/bio/hexdump.c',
+ 'third_party/boringssl/crypto/bio/pair.c',
+ 'third_party/boringssl/crypto/bio/printf.c',
+ 'third_party/boringssl/crypto/bio/socket.c',
+ 'third_party/boringssl/crypto/bio/socket_helper.c',
+ 'third_party/boringssl/crypto/bn/add.c',
+ 'third_party/boringssl/crypto/bn/asm/x86_64-gcc.c',
+ 'third_party/boringssl/crypto/bn/bn.c',
+ 'third_party/boringssl/crypto/bn/bn_asn1.c',
+ 'third_party/boringssl/crypto/bn/cmp.c',
+ 'third_party/boringssl/crypto/bn/convert.c',
+ 'third_party/boringssl/crypto/bn/ctx.c',
+ 'third_party/boringssl/crypto/bn/div.c',
+ 'third_party/boringssl/crypto/bn/exponentiation.c',
+ 'third_party/boringssl/crypto/bn/gcd.c',
+ 'third_party/boringssl/crypto/bn/generic.c',
+ 'third_party/boringssl/crypto/bn/kronecker.c',
+ 'third_party/boringssl/crypto/bn/montgomery.c',
+ 'third_party/boringssl/crypto/bn/montgomery_inv.c',
+ 'third_party/boringssl/crypto/bn/mul.c',
+ 'third_party/boringssl/crypto/bn/prime.c',
+ 'third_party/boringssl/crypto/bn/random.c',
+ 'third_party/boringssl/crypto/bn/rsaz_exp.c',
+ 'third_party/boringssl/crypto/bn/shift.c',
+ 'third_party/boringssl/crypto/bn/sqrt.c',
+ 'third_party/boringssl/crypto/buf/buf.c',
+ 'third_party/boringssl/crypto/bytestring/asn1_compat.c',
+ 'third_party/boringssl/crypto/bytestring/ber.c',
+ 'third_party/boringssl/crypto/bytestring/cbb.c',
+ 'third_party/boringssl/crypto/bytestring/cbs.c',
+ 'third_party/boringssl/crypto/chacha/chacha.c',
+ 'third_party/boringssl/crypto/cipher/aead.c',
+ 'third_party/boringssl/crypto/cipher/cipher.c',
+ 'third_party/boringssl/crypto/cipher/derive_key.c',
+ 'third_party/boringssl/crypto/cipher/e_aes.c',
+ 'third_party/boringssl/crypto/cipher/e_chacha20poly1305.c',
+ 'third_party/boringssl/crypto/cipher/e_des.c',
+ 'third_party/boringssl/crypto/cipher/e_null.c',
+ 'third_party/boringssl/crypto/cipher/e_rc2.c',
+ 'third_party/boringssl/crypto/cipher/e_rc4.c',
+ 'third_party/boringssl/crypto/cipher/e_ssl3.c',
+ 'third_party/boringssl/crypto/cipher/e_tls.c',
+ 'third_party/boringssl/crypto/cipher/tls_cbc.c',
+ 'third_party/boringssl/crypto/cmac/cmac.c',
+ 'third_party/boringssl/crypto/conf/conf.c',
+ 'third_party/boringssl/crypto/cpu-aarch64-linux.c',
+ 'third_party/boringssl/crypto/cpu-arm-linux.c',
+ 'third_party/boringssl/crypto/cpu-arm.c',
+ 'third_party/boringssl/crypto/cpu-intel.c',
+ 'third_party/boringssl/crypto/cpu-ppc64le.c',
+ 'third_party/boringssl/crypto/crypto.c',
+ 'third_party/boringssl/crypto/curve25519/curve25519.c',
+ 'third_party/boringssl/crypto/curve25519/spake25519.c',
+ 'third_party/boringssl/crypto/curve25519/x25519-x86_64.c',
+ 'third_party/boringssl/crypto/des/des.c',
+ 'third_party/boringssl/crypto/dh/check.c',
+ 'third_party/boringssl/crypto/dh/dh.c',
+ 'third_party/boringssl/crypto/dh/dh_asn1.c',
+ 'third_party/boringssl/crypto/dh/params.c',
+ 'third_party/boringssl/crypto/digest/digest.c',
+ 'third_party/boringssl/crypto/digest/digests.c',
+ 'third_party/boringssl/crypto/dsa/dsa.c',
+ 'third_party/boringssl/crypto/dsa/dsa_asn1.c',
+ 'third_party/boringssl/crypto/ec/ec.c',
+ 'third_party/boringssl/crypto/ec/ec_asn1.c',
+ 'third_party/boringssl/crypto/ec/ec_key.c',
+ 'third_party/boringssl/crypto/ec/ec_montgomery.c',
+ 'third_party/boringssl/crypto/ec/oct.c',
+ 'third_party/boringssl/crypto/ec/p224-64.c',
+ 'third_party/boringssl/crypto/ec/p256-64.c',
+ 'third_party/boringssl/crypto/ec/p256-x86_64.c',
+ 'third_party/boringssl/crypto/ec/simple.c',
+ 'third_party/boringssl/crypto/ec/util-64.c',
+ 'third_party/boringssl/crypto/ec/wnaf.c',
+ 'third_party/boringssl/crypto/ecdh/ecdh.c',
+ 'third_party/boringssl/crypto/ecdsa/ecdsa.c',
+ 'third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c',
+ 'third_party/boringssl/crypto/engine/engine.c',
+ 'third_party/boringssl/crypto/err/err.c',
+ 'third_party/boringssl/crypto/evp/digestsign.c',
+ 'third_party/boringssl/crypto/evp/evp.c',
+ 'third_party/boringssl/crypto/evp/evp_asn1.c',
+ 'third_party/boringssl/crypto/evp/evp_ctx.c',
+ 'third_party/boringssl/crypto/evp/p_dsa_asn1.c',
+ 'third_party/boringssl/crypto/evp/p_ec.c',
+ 'third_party/boringssl/crypto/evp/p_ec_asn1.c',
+ 'third_party/boringssl/crypto/evp/p_rsa.c',
+ 'third_party/boringssl/crypto/evp/p_rsa_asn1.c',
+ 'third_party/boringssl/crypto/evp/pbkdf.c',
+ 'third_party/boringssl/crypto/evp/print.c',
+ 'third_party/boringssl/crypto/evp/sign.c',
+ 'third_party/boringssl/crypto/ex_data.c',
+ 'third_party/boringssl/crypto/hkdf/hkdf.c',
+ 'third_party/boringssl/crypto/hmac/hmac.c',
+ 'third_party/boringssl/crypto/lhash/lhash.c',
+ 'third_party/boringssl/crypto/md4/md4.c',
+ 'third_party/boringssl/crypto/md5/md5.c',
+ 'third_party/boringssl/crypto/mem.c',
+ 'third_party/boringssl/crypto/modes/cbc.c',
+ 'third_party/boringssl/crypto/modes/cfb.c',
+ 'third_party/boringssl/crypto/modes/ctr.c',
+ 'third_party/boringssl/crypto/modes/gcm.c',
+ 'third_party/boringssl/crypto/modes/ofb.c',
+ 'third_party/boringssl/crypto/modes/polyval.c',
+ 'third_party/boringssl/crypto/obj/obj.c',
+ 'third_party/boringssl/crypto/obj/obj_xref.c',
+ 'third_party/boringssl/crypto/pem/pem_all.c',
+ 'third_party/boringssl/crypto/pem/pem_info.c',
+ 'third_party/boringssl/crypto/pem/pem_lib.c',
+ 'third_party/boringssl/crypto/pem/pem_oth.c',
+ 'third_party/boringssl/crypto/pem/pem_pk8.c',
+ 'third_party/boringssl/crypto/pem/pem_pkey.c',
+ 'third_party/boringssl/crypto/pem/pem_x509.c',
+ 'third_party/boringssl/crypto/pem/pem_xaux.c',
+ 'third_party/boringssl/crypto/pkcs8/p5_pbev2.c',
+ 'third_party/boringssl/crypto/pkcs8/p8_pkey.c',
+ 'third_party/boringssl/crypto/pkcs8/pkcs8.c',
+ 'third_party/boringssl/crypto/poly1305/poly1305.c',
+ 'third_party/boringssl/crypto/poly1305/poly1305_arm.c',
+ 'third_party/boringssl/crypto/poly1305/poly1305_vec.c',
+ 'third_party/boringssl/crypto/pool/pool.c',
+ 'third_party/boringssl/crypto/rand/deterministic.c',
+ 'third_party/boringssl/crypto/rand/fuchsia.c',
+ 'third_party/boringssl/crypto/rand/rand.c',
+ 'third_party/boringssl/crypto/rand/urandom.c',
+ 'third_party/boringssl/crypto/rand/windows.c',
+ 'third_party/boringssl/crypto/rc4/rc4.c',
+ 'third_party/boringssl/crypto/refcount_c11.c',
+ 'third_party/boringssl/crypto/refcount_lock.c',
+ 'third_party/boringssl/crypto/rsa/blinding.c',
+ 'third_party/boringssl/crypto/rsa/padding.c',
+ 'third_party/boringssl/crypto/rsa/rsa.c',
+ 'third_party/boringssl/crypto/rsa/rsa_asn1.c',
+ 'third_party/boringssl/crypto/rsa/rsa_impl.c',
+ 'third_party/boringssl/crypto/sha/sha1-altivec.c',
+ 'third_party/boringssl/crypto/sha/sha1.c',
+ 'third_party/boringssl/crypto/sha/sha256.c',
+ 'third_party/boringssl/crypto/sha/sha512.c',
+ 'third_party/boringssl/crypto/stack/stack.c',
+ 'third_party/boringssl/crypto/thread.c',
+ 'third_party/boringssl/crypto/thread_none.c',
+ 'third_party/boringssl/crypto/thread_pthread.c',
+ 'third_party/boringssl/crypto/thread_win.c',
+ 'third_party/boringssl/crypto/x509/a_digest.c',
+ 'third_party/boringssl/crypto/x509/a_sign.c',
+ 'third_party/boringssl/crypto/x509/a_strex.c',
+ 'third_party/boringssl/crypto/x509/a_verify.c',
+ 'third_party/boringssl/crypto/x509/algorithm.c',
+ 'third_party/boringssl/crypto/x509/asn1_gen.c',
+ 'third_party/boringssl/crypto/x509/by_dir.c',
+ 'third_party/boringssl/crypto/x509/by_file.c',
+ 'third_party/boringssl/crypto/x509/i2d_pr.c',
+ 'third_party/boringssl/crypto/x509/pkcs7.c',
+ 'third_party/boringssl/crypto/x509/rsa_pss.c',
+ 'third_party/boringssl/crypto/x509/t_crl.c',
+ 'third_party/boringssl/crypto/x509/t_req.c',
+ 'third_party/boringssl/crypto/x509/t_x509.c',
+ 'third_party/boringssl/crypto/x509/t_x509a.c',
+ 'third_party/boringssl/crypto/x509/x509.c',
+ 'third_party/boringssl/crypto/x509/x509_att.c',
+ 'third_party/boringssl/crypto/x509/x509_cmp.c',
+ 'third_party/boringssl/crypto/x509/x509_d2.c',
+ 'third_party/boringssl/crypto/x509/x509_def.c',
+ 'third_party/boringssl/crypto/x509/x509_ext.c',
+ 'third_party/boringssl/crypto/x509/x509_lu.c',
+ 'third_party/boringssl/crypto/x509/x509_obj.c',
+ 'third_party/boringssl/crypto/x509/x509_r2x.c',
+ 'third_party/boringssl/crypto/x509/x509_req.c',
+ 'third_party/boringssl/crypto/x509/x509_set.c',
+ 'third_party/boringssl/crypto/x509/x509_trs.c',
+ 'third_party/boringssl/crypto/x509/x509_txt.c',
+ 'third_party/boringssl/crypto/x509/x509_v3.c',
+ 'third_party/boringssl/crypto/x509/x509_vfy.c',
+ 'third_party/boringssl/crypto/x509/x509_vpm.c',
+ 'third_party/boringssl/crypto/x509/x509cset.c',
+ 'third_party/boringssl/crypto/x509/x509name.c',
+ 'third_party/boringssl/crypto/x509/x509rset.c',
+ 'third_party/boringssl/crypto/x509/x509spki.c',
+ 'third_party/boringssl/crypto/x509/x509type.c',
+ 'third_party/boringssl/crypto/x509/x_algor.c',
+ 'third_party/boringssl/crypto/x509/x_all.c',
+ 'third_party/boringssl/crypto/x509/x_attrib.c',
+ 'third_party/boringssl/crypto/x509/x_crl.c',
+ 'third_party/boringssl/crypto/x509/x_exten.c',
+ 'third_party/boringssl/crypto/x509/x_info.c',
+ 'third_party/boringssl/crypto/x509/x_name.c',
+ 'third_party/boringssl/crypto/x509/x_pkey.c',
+ 'third_party/boringssl/crypto/x509/x_pubkey.c',
+ 'third_party/boringssl/crypto/x509/x_req.c',
+ 'third_party/boringssl/crypto/x509/x_sig.c',
+ 'third_party/boringssl/crypto/x509/x_spki.c',
+ 'third_party/boringssl/crypto/x509/x_val.c',
+ 'third_party/boringssl/crypto/x509/x_x509.c',
+ 'third_party/boringssl/crypto/x509/x_x509a.c',
+ 'third_party/boringssl/crypto/x509v3/pcy_cache.c',
+ 'third_party/boringssl/crypto/x509v3/pcy_data.c',
+ 'third_party/boringssl/crypto/x509v3/pcy_lib.c',
+ 'third_party/boringssl/crypto/x509v3/pcy_map.c',
+ 'third_party/boringssl/crypto/x509v3/pcy_node.c',
+ 'third_party/boringssl/crypto/x509v3/pcy_tree.c',
+ 'third_party/boringssl/crypto/x509v3/v3_akey.c',
+ 'third_party/boringssl/crypto/x509v3/v3_akeya.c',
+ 'third_party/boringssl/crypto/x509v3/v3_alt.c',
+ 'third_party/boringssl/crypto/x509v3/v3_bcons.c',
+ 'third_party/boringssl/crypto/x509v3/v3_bitst.c',
+ 'third_party/boringssl/crypto/x509v3/v3_conf.c',
+ 'third_party/boringssl/crypto/x509v3/v3_cpols.c',
+ 'third_party/boringssl/crypto/x509v3/v3_crld.c',
+ 'third_party/boringssl/crypto/x509v3/v3_enum.c',
+ 'third_party/boringssl/crypto/x509v3/v3_extku.c',
+ 'third_party/boringssl/crypto/x509v3/v3_genn.c',
+ 'third_party/boringssl/crypto/x509v3/v3_ia5.c',
+ 'third_party/boringssl/crypto/x509v3/v3_info.c',
+ 'third_party/boringssl/crypto/x509v3/v3_int.c',
+ 'third_party/boringssl/crypto/x509v3/v3_lib.c',
+ 'third_party/boringssl/crypto/x509v3/v3_ncons.c',
+ 'third_party/boringssl/crypto/x509v3/v3_pci.c',
+ 'third_party/boringssl/crypto/x509v3/v3_pcia.c',
+ 'third_party/boringssl/crypto/x509v3/v3_pcons.c',
+ 'third_party/boringssl/crypto/x509v3/v3_pku.c',
+ 'third_party/boringssl/crypto/x509v3/v3_pmaps.c',
+ 'third_party/boringssl/crypto/x509v3/v3_prn.c',
+ 'third_party/boringssl/crypto/x509v3/v3_purp.c',
+ 'third_party/boringssl/crypto/x509v3/v3_skey.c',
+ 'third_party/boringssl/crypto/x509v3/v3_sxnet.c',
+ 'third_party/boringssl/crypto/x509v3/v3_utl.c',
+ 'third_party/boringssl/ssl/bio_ssl.c',
+ 'third_party/boringssl/ssl/custom_extensions.c',
+ 'third_party/boringssl/ssl/d1_both.c',
+ 'third_party/boringssl/ssl/d1_lib.c',
+ 'third_party/boringssl/ssl/d1_pkt.c',
+ 'third_party/boringssl/ssl/d1_srtp.c',
+ 'third_party/boringssl/ssl/dtls_method.c',
+ 'third_party/boringssl/ssl/dtls_record.c',
+ 'third_party/boringssl/ssl/handshake_client.c',
+ 'third_party/boringssl/ssl/handshake_server.c',
+ 'third_party/boringssl/ssl/s3_both.c',
+ 'third_party/boringssl/ssl/s3_lib.c',
+ 'third_party/boringssl/ssl/s3_pkt.c',
+ 'third_party/boringssl/ssl/ssl_aead_ctx.c',
+ 'third_party/boringssl/ssl/ssl_asn1.c',
+ 'third_party/boringssl/ssl/ssl_buffer.c',
+ 'third_party/boringssl/ssl/ssl_cert.c',
+ 'third_party/boringssl/ssl/ssl_cipher.c',
+ 'third_party/boringssl/ssl/ssl_ecdh.c',
+ 'third_party/boringssl/ssl/ssl_file.c',
+ 'third_party/boringssl/ssl/ssl_lib.c',
+ 'third_party/boringssl/ssl/ssl_privkey.c',
+ 'third_party/boringssl/ssl/ssl_privkey_cc.cc',
+ 'third_party/boringssl/ssl/ssl_session.c',
+ 'third_party/boringssl/ssl/ssl_stat.c',
+ 'third_party/boringssl/ssl/ssl_transcript.c',
+ 'third_party/boringssl/ssl/ssl_x509.c',
+ 'third_party/boringssl/ssl/t1_enc.c',
+ 'third_party/boringssl/ssl/t1_lib.c',
+ 'third_party/boringssl/ssl/tls13_both.c',
+ 'third_party/boringssl/ssl/tls13_client.c',
+ 'third_party/boringssl/ssl/tls13_enc.c',
+ 'third_party/boringssl/ssl/tls13_server.c',
+ 'third_party/boringssl/ssl/tls_method.c',
+ 'third_party/boringssl/ssl/tls_record.c',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_test_util',
+ 'type': 'static_library',
+ 'dependencies': [
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/test/file_test.cc',
+ 'third_party/boringssl/crypto/test/malloc.cc',
+ 'third_party/boringssl/crypto/test/test_util.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_aes_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/aes/aes_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_asn1_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/asn1/asn1_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_base64_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/base64/base64_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_bio_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/bio/bio_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_bn_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/bn/bn_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_bytestring_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/bytestring/bytestring_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_aead_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/cipher/aead_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_cipher_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/cipher/cipher_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_cmac_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/cmac/cmac_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_constant_time_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/constant_time_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_ed25519_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/curve25519/ed25519_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_spake25519_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/curve25519/spake25519_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_x25519_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/curve25519/x25519_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_digest_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/digest/digest_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_example_mul_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/ec/example_mul.c',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_p256-x86_64_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/ec/p256-x86_64_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_ecdh_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/ecdh/ecdh_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_ecdsa_sign_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/ecdsa/ecdsa_sign_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_ecdsa_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/ecdsa/ecdsa_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_ecdsa_verify_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/ecdsa/ecdsa_verify_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_evp_extra_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/evp/evp_extra_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_evp_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/evp/evp_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_pbkdf_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/evp/pbkdf_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_hkdf_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/hkdf/hkdf_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_hmac_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/hmac/hmac_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_lhash_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/lhash/lhash_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_gcm_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/modes/gcm_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_obj_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/obj/obj_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_pkcs12_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/pkcs8/pkcs12_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_pkcs8_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/pkcs8/pkcs8_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_poly1305_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/poly1305/poly1305_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_pool_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/pool/pool_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_refcount_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/refcount_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_thread_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/thread_test.c',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_pkcs7_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/x509/pkcs7_test.c',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_x509_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/x509/x509_test.cc',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_tab_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/x509v3/tab_test.c',
+ ],
+ },
+ {
+ 'target_name': 'boringssl_v3name_test_lib',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'boringssl_test_util',
+ 'boringssl',
+ ],
+ 'sources': [
+ 'third_party/boringssl/crypto/x509v3/v3name_test.c',
+ ],
+ },
+ {
+ 'target_name': 'benchmark',
+ 'type': 'static_library',
+ 'dependencies': [
+ ],
+ 'sources': [
+ 'third_party/benchmark/src/benchmark.cc',
+ 'third_party/benchmark/src/benchmark_register.cc',
+ 'third_party/benchmark/src/colorprint.cc',
+ 'third_party/benchmark/src/commandlineflags.cc',
+ 'third_party/benchmark/src/complexity.cc',
+ 'third_party/benchmark/src/console_reporter.cc',
+ 'third_party/benchmark/src/csv_reporter.cc',
+ 'third_party/benchmark/src/json_reporter.cc',
+ 'third_party/benchmark/src/reporter.cc',
+ 'third_party/benchmark/src/sleep.cc',
+ 'third_party/benchmark/src/string_util.cc',
+ 'third_party/benchmark/src/sysinfo.cc',
+ 'third_party/benchmark/src/timers.cc',
+ ],
+ },
+ {
+ 'target_name': 'z',
+ 'type': 'static_library',
+ 'dependencies': [
+ ],
+ 'sources': [
+ 'third_party/zlib/adler32.c',
+ 'third_party/zlib/compress.c',
+ 'third_party/zlib/crc32.c',
+ 'third_party/zlib/deflate.c',
+ 'third_party/zlib/gzclose.c',
+ 'third_party/zlib/gzlib.c',
+ 'third_party/zlib/gzread.c',
+ 'third_party/zlib/gzwrite.c',
+ 'third_party/zlib/infback.c',
+ 'third_party/zlib/inffast.c',
+ 'third_party/zlib/inflate.c',
+ 'third_party/zlib/inftrees.c',
+ 'third_party/zlib/trees.c',
+ 'third_party/zlib/uncompr.c',
+ 'third_party/zlib/zutil.c',
+ ],
+ },
+ {
+ 'target_name': 'bad_client_test',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc_test_util_unsecure',
+ 'grpc_unsecure',
+ 'gpr_test_util',
+ 'gpr',
+ ],
+ 'sources': [
+ 'test/core/bad_client/bad_client.c',
+ ],
+ },
+ {
+ 'target_name': 'end2end_tests',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc_test_util',
+ 'grpc',
+ 'gpr_test_util',
+ 'gpr',
+ ],
+ 'sources': [
+ 'test/core/end2end/end2end_tests.c',
+ 'test/core/end2end/end2end_test_utils.c',
+ 'test/core/end2end/tests/authority_not_supported.c',
+ 'test/core/end2end/tests/bad_hostname.c',
+ 'test/core/end2end/tests/bad_ping.c',
+ 'test/core/end2end/tests/binary_metadata.c',
+ 'test/core/end2end/tests/call_creds.c',
+ 'test/core/end2end/tests/cancel_after_accept.c',
+ 'test/core/end2end/tests/cancel_after_client_done.c',
+ 'test/core/end2end/tests/cancel_after_invoke.c',
+ 'test/core/end2end/tests/cancel_after_round_trip.c',
+ 'test/core/end2end/tests/cancel_before_invoke.c',
+ 'test/core/end2end/tests/cancel_in_a_vacuum.c',
+ 'test/core/end2end/tests/cancel_with_status.c',
+ 'test/core/end2end/tests/compressed_payload.c',
+ 'test/core/end2end/tests/connectivity.c',
+ 'test/core/end2end/tests/default_host.c',
+ 'test/core/end2end/tests/disappearing_server.c',
+ 'test/core/end2end/tests/empty_batch.c',
+ 'test/core/end2end/tests/filter_call_init_fails.c',
+ 'test/core/end2end/tests/filter_causes_close.c',
+ 'test/core/end2end/tests/filter_latency.c',
+ 'test/core/end2end/tests/graceful_server_shutdown.c',
+ 'test/core/end2end/tests/high_initial_seqno.c',
+ 'test/core/end2end/tests/hpack_size.c',
+ 'test/core/end2end/tests/idempotent_request.c',
+ 'test/core/end2end/tests/invoke_large_request.c',
+ 'test/core/end2end/tests/keepalive_timeout.c',
+ 'test/core/end2end/tests/large_metadata.c',
+ 'test/core/end2end/tests/load_reporting_hook.c',
+ 'test/core/end2end/tests/max_concurrent_streams.c',
+ 'test/core/end2end/tests/max_connection_age.c',
+ 'test/core/end2end/tests/max_connection_idle.c',
+ 'test/core/end2end/tests/max_message_length.c',
+ 'test/core/end2end/tests/negative_deadline.c',
+ 'test/core/end2end/tests/network_status_change.c',
+ 'test/core/end2end/tests/no_logging.c',
+ 'test/core/end2end/tests/no_op.c',
+ 'test/core/end2end/tests/payload.c',
+ 'test/core/end2end/tests/ping.c',
+ 'test/core/end2end/tests/ping_pong_streaming.c',
+ 'test/core/end2end/tests/proxy_auth.c',
+ 'test/core/end2end/tests/registered_call.c',
+ 'test/core/end2end/tests/request_with_flags.c',
+ 'test/core/end2end/tests/request_with_payload.c',
+ 'test/core/end2end/tests/resource_quota_server.c',
+ 'test/core/end2end/tests/server_finishes_request.c',
+ 'test/core/end2end/tests/shutdown_finishes_calls.c',
+ 'test/core/end2end/tests/shutdown_finishes_tags.c',
+ 'test/core/end2end/tests/simple_cacheable_request.c',
+ 'test/core/end2end/tests/simple_delayed_request.c',
+ 'test/core/end2end/tests/simple_metadata.c',
+ 'test/core/end2end/tests/simple_request.c',
+ 'test/core/end2end/tests/streaming_error_response.c',
+ 'test/core/end2end/tests/trailing_metadata.c',
+ 'test/core/end2end/tests/workaround_cronet_compression.c',
+ 'test/core/end2end/tests/write_buffering.c',
+ 'test/core/end2end/tests/write_buffering_at_end.c',
+ ],
+ },
+ {
+ 'target_name': 'end2end_nosec_tests',
+ 'type': 'static_library',
+ 'dependencies': [
+ 'grpc_test_util_unsecure',
+ 'grpc_unsecure',
+ 'gpr_test_util',
+ 'gpr',
+ ],
+ 'sources': [
+ 'test/core/end2end/end2end_nosec_tests.c',
+ 'test/core/end2end/end2end_test_utils.c',
+ 'test/core/end2end/tests/authority_not_supported.c',
+ 'test/core/end2end/tests/bad_hostname.c',
+ 'test/core/end2end/tests/bad_ping.c',
+ 'test/core/end2end/tests/binary_metadata.c',
+ 'test/core/end2end/tests/cancel_after_accept.c',
+ 'test/core/end2end/tests/cancel_after_client_done.c',
+ 'test/core/end2end/tests/cancel_after_invoke.c',
+ 'test/core/end2end/tests/cancel_after_round_trip.c',
+ 'test/core/end2end/tests/cancel_before_invoke.c',
+ 'test/core/end2end/tests/cancel_in_a_vacuum.c',
+ 'test/core/end2end/tests/cancel_with_status.c',
+ 'test/core/end2end/tests/compressed_payload.c',
+ 'test/core/end2end/tests/connectivity.c',
+ 'test/core/end2end/tests/default_host.c',
+ 'test/core/end2end/tests/disappearing_server.c',
+ 'test/core/end2end/tests/empty_batch.c',
+ 'test/core/end2end/tests/filter_call_init_fails.c',
+ 'test/core/end2end/tests/filter_causes_close.c',
+ 'test/core/end2end/tests/filter_latency.c',
+ 'test/core/end2end/tests/graceful_server_shutdown.c',
+ 'test/core/end2end/tests/high_initial_seqno.c',
+ 'test/core/end2end/tests/hpack_size.c',
+ 'test/core/end2end/tests/idempotent_request.c',
+ 'test/core/end2end/tests/invoke_large_request.c',
+ 'test/core/end2end/tests/keepalive_timeout.c',
+ 'test/core/end2end/tests/large_metadata.c',
+ 'test/core/end2end/tests/load_reporting_hook.c',
+ 'test/core/end2end/tests/max_concurrent_streams.c',
+ 'test/core/end2end/tests/max_connection_age.c',
+ 'test/core/end2end/tests/max_connection_idle.c',
+ 'test/core/end2end/tests/max_message_length.c',
+ 'test/core/end2end/tests/negative_deadline.c',
+ 'test/core/end2end/tests/network_status_change.c',
+ 'test/core/end2end/tests/no_logging.c',
+ 'test/core/end2end/tests/no_op.c',
+ 'test/core/end2end/tests/payload.c',
+ 'test/core/end2end/tests/ping.c',
+ 'test/core/end2end/tests/ping_pong_streaming.c',
+ 'test/core/end2end/tests/proxy_auth.c',
+ 'test/core/end2end/tests/registered_call.c',
+ 'test/core/end2end/tests/request_with_flags.c',
+ 'test/core/end2end/tests/request_with_payload.c',
+ 'test/core/end2end/tests/resource_quota_server.c',
+ 'test/core/end2end/tests/server_finishes_request.c',
+ 'test/core/end2end/tests/shutdown_finishes_calls.c',
+ 'test/core/end2end/tests/shutdown_finishes_tags.c',
+ 'test/core/end2end/tests/simple_cacheable_request.c',
+ 'test/core/end2end/tests/simple_delayed_request.c',
+ 'test/core/end2end/tests/simple_metadata.c',
+ 'test/core/end2end/tests/simple_request.c',
+ 'test/core/end2end/tests/streaming_error_response.c',
+ 'test/core/end2end/tests/trailing_metadata.c',
+ 'test/core/end2end/tests/workaround_cronet_compression.c',
+ 'test/core/end2end/tests/write_buffering.c',
+ 'test/core/end2end/tests/write_buffering_at_end.c',
+ ],
+ },
+ ]
+}
diff --git a/include/grpc++/impl/codegen/async_unary_call.h b/include/grpc++/impl/codegen/async_unary_call.h
index 6da64f0da1..f0f909686b 100644
--- a/include/grpc++/impl/codegen/async_unary_call.h
+++ b/include/grpc++/impl/codegen/async_unary_call.h
@@ -87,28 +87,6 @@ class ClientAsyncResponseReader final
ClientAsyncResponseReader(call, context, request);
}
- /// TODO(vjpai): Delete the below constructor
- /// PLEASE DO NOT USE THIS CONSTRUCTOR IN NEW CODE
- /// This code is only present as a short-term workaround
- /// for users that bypassed the code-generator and directly
- /// created this struct rather than properly using a stub.
- /// This code will not remain a valid public constructor for long.
- template <class W>
- ClientAsyncResponseReader(ChannelInterface* channel, CompletionQueue* cq,
- const RpcMethod& method, ClientContext* context,
- const W& request)
- : context_(context),
- call_(channel->CreateCall(method, context, cq)),
- collection_(std::make_shared<Ops>()) {
- collection_->init_buf.SetCollection(collection_);
- collection_->init_buf.SendInitialMetadata(
- context->send_initial_metadata_, context->initial_metadata_flags());
- // TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(collection_->init_buf.SendMessage(request).ok());
- collection_->init_buf.ClientSendClose();
- call_.PerformOps(&collection_->init_buf);
- }
-
// always allocated against a call arena, no memory free required
static void operator delete(void* ptr, std::size_t size) {
assert(size == sizeof(ClientAsyncResponseReader));
@@ -119,22 +97,13 @@ class ClientAsyncResponseReader final
///
/// Side effect:
/// - the \a ClientContext associated with this call is updated with
- /// possible initial and trailing metadata sent from the serve.
+ /// possible initial and trailing metadata sent from the server.
void ReadInitialMetadata(void* tag) {
GPR_CODEGEN_ASSERT(!context_->initial_metadata_received_);
- Ops* o = &ops_;
-
- // TODO(vjpai): Remove the collection_ specialization as soon
- // as the public constructor is deleted
- if (collection_) {
- o = collection_.get();
- collection_->meta_buf.SetCollection(collection_);
- }
-
- o->meta_buf.set_output_tag(tag);
- o->meta_buf.RecvInitialMetadata(context_);
- call_.PerformOps(&o->meta_buf);
+ meta_buf.set_output_tag(tag);
+ meta_buf.RecvInitialMetadata(context_);
+ call_.PerformOps(&meta_buf);
}
/// See \a ClientAysncResponseReaderInterface::Finish for semantics.
@@ -143,23 +112,14 @@ class ClientAsyncResponseReader final
/// - the \a ClientContext associated with this call is updated with
/// possible initial and trailing metadata sent from the server.
void Finish(R* msg, Status* status, void* tag) {
- Ops* o = &ops_;
-
- // TODO(vjpai): Remove the collection_ specialization as soon
- // as the public constructor is deleted
- if (collection_) {
- o = collection_.get();
- collection_->finish_buf.SetCollection(collection_);
- }
-
- o->finish_buf.set_output_tag(tag);
+ finish_buf.set_output_tag(tag);
if (!context_->initial_metadata_received_) {
- o->finish_buf.RecvInitialMetadata(context_);
+ finish_buf.RecvInitialMetadata(context_);
}
- o->finish_buf.RecvMessage(msg);
- o->finish_buf.AllowNoMessage();
- o->finish_buf.ClientRecvStatus(context_, status);
- call_.PerformOps(&o->finish_buf);
+ finish_buf.RecvMessage(msg);
+ finish_buf.AllowNoMessage();
+ finish_buf.ClientRecvStatus(context_, status);
+ call_.PerformOps(&finish_buf);
}
private:
@@ -169,33 +129,25 @@ class ClientAsyncResponseReader final
template <class W>
ClientAsyncResponseReader(Call call, ClientContext* context, const W& request)
: context_(context), call_(call) {
- ops_.init_buf.SendInitialMetadata(context->send_initial_metadata_,
- context->initial_metadata_flags());
+ init_buf.SendInitialMetadata(context->send_initial_metadata_,
+ context->initial_metadata_flags());
// TODO(ctiller): don't assert
- GPR_CODEGEN_ASSERT(ops_.init_buf.SendMessage(request).ok());
- ops_.init_buf.ClientSendClose();
- call_.PerformOps(&ops_.init_buf);
+ GPR_CODEGEN_ASSERT(init_buf.SendMessage(request).ok());
+ init_buf.ClientSendClose();
+ call_.PerformOps(&init_buf);
}
// disable operator new
static void* operator new(std::size_t size);
static void* operator new(std::size_t size, void* p) { return p; }
- // TODO(vjpai): Remove the reference to CallOpSetCollectionInterface
- // as soon as the related workaround (public constructor) is deleted
- struct Ops : public CallOpSetCollectionInterface {
- SneakyCallOpSet<CallOpSendInitialMetadata, CallOpSendMessage,
- CallOpClientSendClose>
- init_buf;
- CallOpSet<CallOpRecvInitialMetadata> meta_buf;
- CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>,
- CallOpClientRecvStatus>
- finish_buf;
- } ops_;
-
- // TODO(vjpai): Remove the collection_ as soon as the related workaround
- // (public constructor) is deleted
- std::shared_ptr<Ops> collection_;
+ SneakyCallOpSet<CallOpSendInitialMetadata, CallOpSendMessage,
+ CallOpClientSendClose>
+ init_buf;
+ CallOpSet<CallOpRecvInitialMetadata> meta_buf;
+ CallOpSet<CallOpRecvInitialMetadata, CallOpRecvMessage<R>,
+ CallOpClientRecvStatus>
+ finish_buf;
};
/// Async server-side API for handling unary calls, where the single
diff --git a/include/grpc++/impl/codegen/call.h b/include/grpc++/impl/codegen/call.h
index f1f1f1f356..0cb11b4cca 100644
--- a/include/grpc++/impl/codegen/call.h
+++ b/include/grpc++/impl/codegen/call.h
@@ -584,14 +584,6 @@ class CallOpClientRecvStatus {
grpc_slice error_message_;
};
-/// TODO(vjpai): Remove the existence of CallOpSetCollectionInterface
-/// and references to it. This code is deprecated-on-arrival and is
-/// only added for users that bypassed the code-generator.
-class CallOpSetCollectionInterface {
- public:
- virtual ~CallOpSetCollectionInterface() {}
-};
-
/// An abstract collection of call ops, used to generate the
/// grpc_call_op structure to pass down to the lower layers,
/// and as it is-a CompletionQueueTag, also massages the final
@@ -602,18 +594,6 @@ class CallOpSetInterface : public CompletionQueueTag {
/// Fills in grpc_op, starting from ops[*nops] and moving
/// upwards.
virtual void FillOps(grpc_call* call, grpc_op* ops, size_t* nops) = 0;
-
- /// TODO(vjpai): Remove the SetCollection method and comment. This is only
- /// a short-term workaround for users that bypassed the code generator
- /// Mark this as belonging to a collection if needed
- void SetCollection(std::shared_ptr<CallOpSetCollectionInterface> collection) {
- collection_ = collection;
- }
-
- protected:
- /// TODO(vjpai): Remove the collection_ field once the idea of bypassing the
- /// code generator is forbidden. This is already deprecated
- std::shared_ptr<CallOpSetCollectionInterface> collection_;
};
/// Primary implementaiton of CallOpSetInterface.
@@ -654,13 +634,7 @@ class CallOpSet : public CallOpSetInterface,
this->Op6::FinishOp(status);
*tag = return_tag_;
- // TODO(vjpai): Remove the reference to collection_ once the idea of
- // bypassing the code generator is forbidden. It is already deprecated
- grpc_call* call = call_;
- collection_.reset();
-
- g_core_codegen_interface->grpc_call_unref(call);
-
+ g_core_codegen_interface->grpc_call_unref(call_);
return true;
}
diff --git a/package.json b/package.json
index b4b16635c6..2e31275bf0 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "grpc",
- "version": "1.5.0-dev",
+ "version": "1.7.0-dev",
"author": "Google Inc.",
"description": "gRPC Library for Node",
"homepage": "https://grpc.io/",
diff --git a/package.xml b/package.xml
index 4e288b3c68..6e50badfc2 100644
--- a/package.xml
+++ b/package.xml
@@ -13,8 +13,8 @@
<date>2017-05-22</date>
<time>16:06:07</time>
<version>
- <release>1.5.0dev</release>
- <api>1.5.0dev</api>
+ <release>1.7.0dev</release>
+ <api>1.7.0dev</api>
</version>
<stability>
<release>beta</release>
diff --git a/src/compiler/csharp_generator.cc b/src/compiler/csharp_generator.cc
index ab4a8a6aa3..bc3b0f24cd 100644
--- a/src/compiler/csharp_generator.cc
+++ b/src/compiler/csharp_generator.cc
@@ -670,6 +670,7 @@ grpc::string GetServices(const FileDescriptor *file, bool generate_client,
out.Print(leading_comments.c_str());
}
+ out.Print("#pragma warning disable 1591\n");
out.Print("#region Designer generated code\n");
out.Print("\n");
out.Print("using System;\n");
diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.c b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
index 2024e5a1a2..831301ddef 100644
--- a/src/core/ext/transport/chttp2/transport/chttp2_transport.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.c
@@ -304,10 +304,10 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
keepalive_watchdog_fired_locked, t,
grpc_combiner_scheduler(t->combiner));
- grpc_bdp_estimator_init(&t->bdp_estimator, t->peer_string);
- t->last_pid_update = gpr_now(GPR_CLOCK_MONOTONIC);
+ grpc_bdp_estimator_init(&t->flow_control.bdp_estimator, t->peer_string);
+ t->flow_control.last_pid_update = gpr_now(GPR_CLOCK_MONOTONIC);
grpc_pid_controller_init(
- &t->pid_controller,
+ &t->flow_control.pid_controller,
(grpc_pid_controller_args){.gain_p = 4,
.gain_i = 8,
.gain_d = 0,
@@ -340,7 +340,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
t->force_send_settings = 1 << GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE;
t->sent_local_settings = 0;
t->write_buffer_size = DEFAULT_WINDOW;
- t->enable_bdp_probe = true;
+ t->flow_control.enable_bdp_probe = true;
if (is_client) {
grpc_slice_buffer_add(&t->outbuf, grpc_slice_from_copied_string(
@@ -457,7 +457,7 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
(grpc_integer_options){0, 0, MAX_WRITE_BUFFER_SIZE});
} else if (0 ==
strcmp(channel_args->args[i].key, GRPC_ARG_HTTP2_BDP_PROBE)) {
- t->enable_bdp_probe = grpc_channel_arg_get_integer(
+ t->flow_control.enable_bdp_probe = grpc_channel_arg_get_integer(
&channel_args->args[i], (grpc_integer_options){1, 0, 1});
} else if (0 == strcmp(channel_args->args[i].key,
GRPC_ARG_KEEPALIVE_TIME_MS)) {
@@ -2262,46 +2262,27 @@ void grpc_chttp2_act_on_flowctl_action(grpc_exec_ctx *exec_ctx,
case GRPC_CHTTP2_FLOWCTL_QUEUE_UPDATE:
break;
}
-}
-
-static void update_bdp(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
- double bdp_dbl) {
- // initial window size bounded [1,2^31-1], but we set the min to 128.
- int32_t bdp = GPR_CLAMP((int32_t)bdp_dbl, 128, INT32_MAX);
- int64_t delta =
- (int64_t)bdp -
- (int64_t)t->settings[GRPC_LOCAL_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
- if (delta == 0 || (delta > -bdp / 10 && delta < bdp / 10)) {
- return;
- }
- if (GRPC_TRACER_ON(grpc_bdp_estimator_trace) ||
- GRPC_TRACER_ON(grpc_flowctl_trace)) {
- gpr_log(GPR_DEBUG, "%s | %p[%s] | update initial window size to %d",
- t->peer_string, t, t->is_client ? "cli" : "svr", (int)bdp);
- }
- queue_setting_update(exec_ctx, t, GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
- (uint32_t)bdp);
-}
-
-static void update_frame(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
- double bw_dbl, double bdp_dbl) {
- int32_t bdp = (int32_t)GPR_CLAMP(bdp_dbl, 128.0, INT32_MAX);
- int32_t target = (int32_t)GPR_MAX(bw_dbl / 1000, bdp);
- // frame size is bounded [2^14,2^24-1]
- int32_t frame_size = GPR_CLAMP(target, 16384, 16777215);
- int64_t delta = (int64_t)frame_size -
- (int64_t)t->settings[GRPC_LOCAL_SETTINGS]
- [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE];
- if (delta == 0 || (delta > -frame_size / 10 && delta < frame_size / 10)) {
- return;
+ if (action.send_setting_update != GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED) {
+ if (action.initial_window_size > 0) {
+ queue_setting_update(exec_ctx, t,
+ GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE,
+ (uint32_t)action.initial_window_size);
+ }
+ if (action.max_frame_size > 0) {
+ queue_setting_update(exec_ctx, t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
+ (uint32_t)action.max_frame_size);
+ }
+ if (action.send_setting_update == GRPC_CHTTP2_FLOWCTL_UPDATE_IMMEDIATELY) {
+ grpc_chttp2_initiate_write(exec_ctx, t, "immediate setting update");
+ }
}
- if (GRPC_TRACER_ON(grpc_bdp_estimator_trace)) {
- gpr_log(GPR_DEBUG, "%s: update max_frame size to %d", t->peer_string,
- (int)frame_size);
+ if (action.need_ping) {
+ GRPC_CHTTP2_REF_TRANSPORT(t, "bdp_ping");
+ grpc_bdp_estimator_schedule_ping(&t->flow_control.bdp_estimator);
+ send_ping_locked(exec_ctx, t,
+ GRPC_CHTTP2_PING_BEFORE_TRANSPORT_WINDOW_UPDATE,
+ &t->start_bdp_ping_locked, &t->finish_bdp_ping_locked);
}
- queue_setting_update(exec_ctx, t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
- (uint32_t)frame_size);
}
static grpc_error *try_http_parsing(grpc_exec_ctx *exec_ctx,
@@ -2339,7 +2320,6 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp,
GPR_TIMER_BEGIN("reading_action_locked", 0);
grpc_chttp2_transport *t = tp;
- bool need_bdp_ping = false;
GRPC_ERROR_REF(error);
@@ -2358,11 +2338,9 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp,
grpc_error *errors[3] = {GRPC_ERROR_REF(error), GRPC_ERROR_NONE,
GRPC_ERROR_NONE};
for (; i < t->read_buffer.count && errors[1] == GRPC_ERROR_NONE; i++) {
- if (grpc_bdp_estimator_add_incoming_bytes(
- &t->bdp_estimator,
- (int64_t)GRPC_SLICE_LENGTH(t->read_buffer.slices[i]))) {
- need_bdp_ping = true;
- }
+ grpc_bdp_estimator_add_incoming_bytes(
+ &t->flow_control.bdp_estimator,
+ (int64_t)GRPC_SLICE_LENGTH(t->read_buffer.slices[i]));
errors[1] =
grpc_chttp2_perform_read(exec_ctx, t, t->read_buffer.slices[i]);
}
@@ -2409,45 +2387,9 @@ static void read_action_locked(grpc_exec_ctx *exec_ctx, void *tp,
if (keep_reading) {
grpc_endpoint_read(exec_ctx, t->ep, &t->read_buffer,
&t->read_action_locked);
-
- if (t->enable_bdp_probe) {
- if (need_bdp_ping) {
- GRPC_CHTTP2_REF_TRANSPORT(t, "bdp_ping");
- grpc_bdp_estimator_schedule_ping(&t->bdp_estimator);
- send_ping_locked(exec_ctx, t,
- GRPC_CHTTP2_PING_BEFORE_TRANSPORT_WINDOW_UPDATE,
- &t->start_bdp_ping_locked, &t->finish_bdp_ping_locked);
- }
-
- int64_t estimate = -1;
- double bdp_guess = -1;
- if (grpc_bdp_estimator_get_estimate(&t->bdp_estimator, &estimate)) {
- double target = 1 + log2((double)estimate);
- double memory_pressure = grpc_resource_quota_get_memory_pressure(
- grpc_resource_user_quota(grpc_endpoint_get_resource_user(t->ep)));
- if (memory_pressure > 0.8) {
- target *= 1 - GPR_MIN(1, (memory_pressure - 0.8) / 0.1);
- }
- double bdp_error =
- target - grpc_pid_controller_last(&t->pid_controller);
- gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC);
- gpr_timespec dt_timespec = gpr_time_sub(now, t->last_pid_update);
- double dt = (double)dt_timespec.tv_sec + dt_timespec.tv_nsec * 1e-9;
- if (dt > 0.1) {
- dt = 0.1;
- }
- double log2_bdp_guess =
- grpc_pid_controller_update(&t->pid_controller, bdp_error, dt);
- bdp_guess = pow(2, log2_bdp_guess);
- update_bdp(exec_ctx, t, bdp_guess);
- t->last_pid_update = now;
- }
-
- double bw = -1;
- if (grpc_bdp_estimator_get_bw(&t->bdp_estimator, &bw)) {
- update_frame(exec_ctx, t, bw, bdp_guess);
- }
- }
+ grpc_chttp2_act_on_flowctl_action(
+ exec_ctx, grpc_chttp2_flowctl_get_bdp_action(&t->flow_control), t,
+ NULL);
GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "keep_reading");
} else {
GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "reading_action");
@@ -2470,7 +2412,7 @@ static void start_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp,
if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_WAITING) {
grpc_timer_cancel(exec_ctx, &t->keepalive_ping_timer);
}
- grpc_bdp_estimator_start_ping(&t->bdp_estimator);
+ grpc_bdp_estimator_start_ping(&t->flow_control.bdp_estimator);
}
static void finish_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp,
@@ -2479,7 +2421,7 @@ static void finish_bdp_ping_locked(grpc_exec_ctx *exec_ctx, void *tp,
if (GRPC_TRACER_ON(grpc_http_trace)) {
gpr_log(GPR_DEBUG, "%s: Complete BDP ping", t->peer_string);
}
- grpc_bdp_estimator_complete_ping(&t->bdp_estimator);
+ grpc_bdp_estimator_complete_ping(&t->flow_control.bdp_estimator);
GRPC_CHTTP2_UNREF_TRANSPORT(exec_ctx, t, "bdp_ping");
}
diff --git a/src/core/ext/transport/chttp2/transport/flow_control.c b/src/core/ext/transport/chttp2/transport/flow_control.c
index c9f7eabd43..8dbdd1290a 100644
--- a/src/core/ext/transport/chttp2/transport/flow_control.c
+++ b/src/core/ext/transport/chttp2/transport/flow_control.c
@@ -18,6 +18,7 @@
#include "src/core/ext/transport/chttp2/transport/internal.h"
+#include <math.h>
#include <string.h>
#include <grpc/support/alloc.h>
@@ -39,6 +40,8 @@ typedef struct {
int64_t remote_window_delta;
int64_t local_window_delta;
int64_t announced_window_delta;
+ uint32_t local_init_window;
+ uint32_t local_max_frame;
} shadow_flow_control;
static void pretrace(shadow_flow_control* shadow_fc,
@@ -54,14 +57,28 @@ static void pretrace(shadow_flow_control* shadow_fc,
}
}
-static char* fmt_str(int64_t old, int64_t new) {
+#define TRACE_PADDING 30
+
+static char* fmt_int64_diff_str(int64_t old, int64_t new) {
char* str;
if (old != new) {
gpr_asprintf(&str, "%" PRId64 " -> %" PRId64 "", old, new);
} else {
gpr_asprintf(&str, "%" PRId64 "", old);
}
- char* str_lp = gpr_leftpad(str, ' ', 30);
+ char* str_lp = gpr_leftpad(str, ' ', TRACE_PADDING);
+ gpr_free(str);
+ return str_lp;
+}
+
+static char* fmt_uint32_diff_str(uint32_t old, uint32_t new) {
+ char* str;
+ if (new > 0 && old != new) {
+ gpr_asprintf(&str, "%" PRIu32 " -> %" PRIu32 "", old, new);
+ } else {
+ gpr_asprintf(&str, "%" PRIu32 "", old);
+ }
+ char* str_lp = gpr_leftpad(str, ' ', TRACE_PADDING);
gpr_free(str);
return str_lp;
}
@@ -75,24 +92,28 @@ static void posttrace(shadow_flow_control* shadow_fc,
uint32_t remote_window =
tfc->t->settings[GRPC_PEER_SETTINGS]
[GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE];
- char* trw_str = fmt_str(shadow_fc->remote_window, tfc->remote_window);
- char* tlw_str = fmt_str(shadow_fc->target_window,
- grpc_chttp2_target_announced_window(tfc));
- char* taw_str = fmt_str(shadow_fc->announced_window, tfc->announced_window);
+ char* trw_str =
+ fmt_int64_diff_str(shadow_fc->remote_window, tfc->remote_window);
+ char* tlw_str = fmt_int64_diff_str(shadow_fc->target_window,
+ grpc_chttp2_target_announced_window(tfc));
+ char* taw_str =
+ fmt_int64_diff_str(shadow_fc->announced_window, tfc->announced_window);
char* srw_str;
char* slw_str;
char* saw_str;
if (sfc != NULL) {
- srw_str = fmt_str(shadow_fc->remote_window_delta + remote_window,
- sfc->remote_window_delta + remote_window);
- slw_str = fmt_str(shadow_fc->local_window_delta + acked_local_window,
- sfc->local_window_delta + acked_local_window);
- saw_str = fmt_str(shadow_fc->announced_window_delta + acked_local_window,
- sfc->announced_window_delta + acked_local_window);
+ srw_str = fmt_int64_diff_str(shadow_fc->remote_window_delta + remote_window,
+ sfc->remote_window_delta + remote_window);
+ slw_str =
+ fmt_int64_diff_str(shadow_fc->local_window_delta + acked_local_window,
+ sfc->local_window_delta + acked_local_window);
+ saw_str = fmt_int64_diff_str(
+ shadow_fc->announced_window_delta + acked_local_window,
+ sfc->announced_window_delta + acked_local_window);
} else {
- srw_str = gpr_leftpad("", ' ', 30);
- slw_str = gpr_leftpad("", ' ', 30);
- saw_str = gpr_leftpad("", ' ', 30);
+ srw_str = gpr_leftpad("", ' ', TRACE_PADDING);
+ slw_str = gpr_leftpad("", ' ', TRACE_PADDING);
+ saw_str = gpr_leftpad("", ' ', TRACE_PADDING);
}
gpr_log(GPR_DEBUG,
"%p[%u][%s] | %s | trw:%s, ttw:%s, taw:%s, srw:%s, slw:%s, saw:%s",
@@ -120,10 +141,21 @@ static char* urgency_to_string(grpc_chttp2_flowctl_urgency urgency) {
GPR_UNREACHABLE_CODE(return "unknown");
}
-static void trace_action(grpc_chttp2_flowctl_action action) {
- gpr_log(GPR_DEBUG, "transport: %s, stream: %s",
+static void trace_action(grpc_chttp2_transport_flowctl* tfc,
+ grpc_chttp2_flowctl_action action) {
+ char* iw_str = fmt_uint32_diff_str(
+ tfc->t->settings[GRPC_SENT_SETTINGS]
+ [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
+ action.initial_window_size);
+ char* mf_str = fmt_uint32_diff_str(
+ tfc->t->settings[GRPC_SENT_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
+ action.max_frame_size);
+ gpr_log(GPR_DEBUG, "t[%s], s[%s], settings[%s] iw:%s mf:%s",
urgency_to_string(action.send_transport_update),
- urgency_to_string(action.send_stream_update));
+ urgency_to_string(action.send_stream_update),
+ urgency_to_string(action.send_setting_update), iw_str, mf_str);
+ gpr_free(iw_str);
+ gpr_free(mf_str);
}
#define PRETRACE(tfc, sfc) \
@@ -131,11 +163,12 @@ static void trace_action(grpc_chttp2_flowctl_action action) {
GRPC_FLOW_CONTROL_IF_TRACING(pretrace(&shadow_fc, tfc, sfc))
#define POSTTRACE(tfc, sfc, reason) \
GRPC_FLOW_CONTROL_IF_TRACING(posttrace(&shadow_fc, tfc, sfc, reason))
-#define TRACEACTION(action) GRPC_FLOW_CONTROL_IF_TRACING(trace_action(action))
+#define TRACEACTION(tfc, action) \
+ GRPC_FLOW_CONTROL_IF_TRACING(trace_action(tfc, action))
#else
#define PRETRACE(tfc, sfc)
#define POSTTRACE(tfc, sfc, reason)
-#define TRACEACTION(action)
+#define TRACEACTION(tfc, action)
#endif
/* How many bytes of incoming flow control would we like to advertise */
@@ -342,15 +375,58 @@ void grpc_chttp2_flowctl_destroy_stream(grpc_chttp2_transport_flowctl* tfc,
announced_window_delta_preupdate(tfc, sfc);
}
+// Returns an urgency with which to make an update
+static grpc_chttp2_flowctl_urgency delta_is_significant(
+ const grpc_chttp2_transport_flowctl* tfc, int32_t value,
+ grpc_chttp2_setting_id setting_id) {
+ int64_t delta = (int64_t)value -
+ (int64_t)tfc->t->settings[GRPC_LOCAL_SETTINGS][setting_id];
+ // TODO(ncteisen): tune this
+ if (delta != 0 && (delta <= -value / 5 || delta >= value / 5)) {
+ return GRPC_CHTTP2_FLOWCTL_QUEUE_UPDATE;
+ } else {
+ return GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED;
+ }
+}
+
+// Takes in a target and uses the pid controller to return a stabilized
+// guess at the new bdp.
+static double get_pid_controller_guess(grpc_chttp2_transport_flowctl* tfc,
+ double target) {
+ double bdp_error = target - grpc_pid_controller_last(&tfc->pid_controller);
+ gpr_timespec now = gpr_now(GPR_CLOCK_MONOTONIC);
+ gpr_timespec dt_timespec = gpr_time_sub(now, tfc->last_pid_update);
+ double dt = (double)dt_timespec.tv_sec + dt_timespec.tv_nsec * 1e-9;
+ if (dt > 0.1) {
+ dt = 0.1;
+ }
+ double log2_bdp_guess =
+ grpc_pid_controller_update(&tfc->pid_controller, bdp_error, dt);
+ tfc->last_pid_update = now;
+ return pow(2, log2_bdp_guess);
+}
+
+// Take in a target and modifies it based on the memory pressure of the system
+static double get_target_under_memory_pressure(
+ grpc_chttp2_transport_flowctl* tfc, double target) {
+ // do not increase window under heavy memory pressure.
+ double memory_pressure = grpc_resource_quota_get_memory_pressure(
+ grpc_resource_user_quota(grpc_endpoint_get_resource_user(tfc->t->ep)));
+ if (memory_pressure > 0.8) {
+ target *= 1 - GPR_MIN(1, (memory_pressure - 0.8) / 0.1);
+ }
+ return target;
+}
+
grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_action(
- const grpc_chttp2_transport_flowctl* tfc,
- const grpc_chttp2_stream_flowctl* sfc) {
+ grpc_chttp2_transport_flowctl* tfc, grpc_chttp2_stream_flowctl* sfc) {
grpc_chttp2_flowctl_action action;
memset(&action, 0, sizeof(action));
uint32_t target_announced_window = grpc_chttp2_target_announced_window(tfc);
if (tfc->announced_window < target_announced_window / 2) {
action.send_transport_update = GRPC_CHTTP2_FLOWCTL_UPDATE_IMMEDIATELY;
}
+ // TODO(ncteisen): tune this
if (sfc != NULL && !sfc->s->read_closed) {
uint32_t sent_init_window =
tfc->t->settings[GRPC_SENT_SETTINGS]
@@ -364,6 +440,61 @@ grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_action(
action.send_stream_update = GRPC_CHTTP2_FLOWCTL_QUEUE_UPDATE;
}
}
- TRACEACTION(action);
+ TRACEACTION(tfc, action);
+ return action;
+}
+
+grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_bdp_action(
+ grpc_chttp2_transport_flowctl* tfc) {
+ grpc_chttp2_flowctl_action action;
+ memset(&action, 0, sizeof(action));
+ if (tfc->enable_bdp_probe) {
+ action.need_ping = grpc_bdp_estimator_need_ping(&tfc->bdp_estimator);
+
+ // get bdp estimate and update initial_window accordingly.
+ int64_t estimate = -1;
+ int32_t bdp = -1;
+ if (grpc_bdp_estimator_get_estimate(&tfc->bdp_estimator, &estimate)) {
+ double target = 1 + log2((double)estimate);
+
+ // target might change based on how much memory pressure we are under
+ // TODO(ncteisen): experiment with setting target to be huge under low
+ // memory pressure.
+ target = get_target_under_memory_pressure(tfc, target);
+
+ // run our target through the pid controller to stabilize change.
+ // TODO(ncteisen): experiment with other controllers here.
+ double bdp_guess = get_pid_controller_guess(tfc, target);
+
+ // Though initial window 'could' drop to 0, we keep the floor at 128
+ bdp = GPR_MAX((int32_t)bdp_guess, 128);
+
+ grpc_chttp2_flowctl_urgency init_window_update_urgency =
+ delta_is_significant(tfc, bdp,
+ GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE);
+ if (init_window_update_urgency != GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED) {
+ action.send_setting_update = init_window_update_urgency;
+ action.initial_window_size = (uint32_t)bdp;
+ }
+ }
+
+ // get bandwidth estimate and update max_frame accordingly.
+ double bw_dbl = -1;
+ if (grpc_bdp_estimator_get_bw(&tfc->bdp_estimator, &bw_dbl)) {
+ // we target the max of BDP or bandwidth in microseconds.
+ int32_t frame_size =
+ GPR_CLAMP(GPR_MAX((int32_t)bw_dbl / 1000, bdp), 16384, 16777215);
+ grpc_chttp2_flowctl_urgency frame_size_urgency = delta_is_significant(
+ tfc, frame_size, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE);
+ if (frame_size_urgency != GRPC_CHTTP2_FLOWCTL_NO_ACTION_NEEDED) {
+ if (frame_size_urgency > action.send_setting_update) {
+ action.send_setting_update = frame_size_urgency;
+ }
+ action.max_frame_size = (uint32_t)frame_size;
+ }
+ }
+ }
+
+ TRACEACTION(tfc, action);
return action;
}
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
index f26f14dbec..3c41a8958f 100644
--- a/src/core/ext/transport/chttp2/transport/internal.h
+++ b/src/core/ext/transport/chttp2/transport/internal.h
@@ -238,7 +238,17 @@ typedef struct {
* to send WINDOW_UPDATE frames. */
int64_t announced_window;
- // read only pointer back to transport for certain data
+ /** should we probe bdp? */
+ bool enable_bdp_probe;
+
+ /* bdp estimation */
+ grpc_bdp_estimator bdp_estimator;
+
+ /* pid controller */
+ grpc_pid_controller pid_controller;
+ gpr_timespec last_pid_update;
+
+ // pointer back to transport for tracing
const grpc_chttp2_transport *t;
} grpc_chttp2_transport_flowctl;
@@ -261,9 +271,6 @@ struct grpc_chttp2_transport {
/** is there a read request to the endpoint outstanding? */
uint8_t endpoint_reading;
- /** should we probe bdp? */
- bool enable_bdp_probe;
-
grpc_chttp2_optimization_target opt_target;
/** various lists of streams */
@@ -358,13 +365,6 @@ struct grpc_chttp2_transport {
grpc_chttp2_transport_flowctl flow_control;
- /* bdp estimation */
- grpc_bdp_estimator bdp_estimator;
-
- /* pid controller */
- grpc_pid_controller pid_controller;
- gpr_timespec last_pid_update;
-
/* deframing */
grpc_chttp2_deframe_transport_state deframe_state;
uint8_t incoming_frame_type;
@@ -704,13 +704,19 @@ typedef enum {
typedef struct {
grpc_chttp2_flowctl_urgency send_stream_update;
grpc_chttp2_flowctl_urgency send_transport_update;
+ grpc_chttp2_flowctl_urgency send_setting_update;
+ uint32_t initial_window_size;
+ uint32_t max_frame_size;
+ bool need_ping;
} grpc_chttp2_flowctl_action;
// Reads the flow control data and returns and actionable struct that will tell
// chttp2 exactly what it needs to do
grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_action(
- const grpc_chttp2_transport_flowctl *tfc,
- const grpc_chttp2_stream_flowctl *sfc);
+ grpc_chttp2_transport_flowctl *tfc, grpc_chttp2_stream_flowctl *sfc);
+
+grpc_chttp2_flowctl_action grpc_chttp2_flowctl_get_bdp_action(
+ grpc_chttp2_transport_flowctl *tfc);
// Takes in a flow control action and performs all the needed operations.
void grpc_chttp2_act_on_flowctl_action(grpc_exec_ctx *exec_ctx,
diff --git a/src/core/lib/iomgr/ev_epoll1_linux.c b/src/core/lib/iomgr/ev_epoll1_linux.c
index 90e0ce36cd..6b034ca960 100644
--- a/src/core/lib/iomgr/ev_epoll1_linux.c
+++ b/src/core/lib/iomgr/ev_epoll1_linux.c
@@ -406,7 +406,14 @@ static void pollset_init(grpc_pollset *pollset, gpr_mu **mu) {
gpr_mu_init(&pollset->mu);
*mu = &pollset->mu;
pollset->neighbourhood = &g_neighbourhoods[choose_neighbourhood()];
+ pollset->reassigning_neighbourhood = false;
+ pollset->root_worker = NULL;
+ pollset->kicked_without_poller = false;
pollset->seen_inactive = true;
+ pollset->shutting_down = false;
+ pollset->shutdown_closure = NULL;
+ pollset->begin_refs = 0;
+ pollset->next = pollset->prev = NULL;
}
static void pollset_destroy(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset) {
@@ -1043,8 +1050,6 @@ static const grpc_event_engine_vtable vtable = {
/* It is possible that GLIBC has epoll but the underlying kernel doesn't.
* Create a dummy epoll_fd to make sure epoll support is available */
const grpc_event_engine_vtable *grpc_init_epoll1_linux(bool explicit_request) {
- /* TODO(sreek): Temporarily disable this poller unless explicitly requested
- * via GRPC_POLL_STRATEGY */
if (!explicit_request) {
return NULL;
}
diff --git a/src/core/lib/security/credentials/jwt/jwt_verifier.c b/src/core/lib/security/credentials/jwt/jwt_verifier.c
index 6cd558d123..a27284bc50 100644
--- a/src/core/lib/security/credentials/jwt/jwt_verifier.c
+++ b/src/core/lib/security/credentials/jwt/jwt_verifier.c
@@ -442,7 +442,7 @@ static EVP_PKEY *extract_pkey_from_x509(const char *x509_str) {
end:
BIO_free(bio);
- if (x509 != NULL) X509_free(x509);
+ X509_free(x509);
return result;
}
@@ -496,6 +496,8 @@ static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json,
const grpc_json *key_prop;
RSA *rsa = NULL;
EVP_PKEY *result = NULL;
+ BIGNUM *tmp_n = NULL;
+ BIGNUM *tmp_e = NULL;
GPR_ASSERT(kty != NULL && json != NULL);
if (strcmp(kty, "RSA") != 0) {
@@ -507,8 +509,6 @@ static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json,
gpr_log(GPR_ERROR, "Could not create rsa key.");
goto end;
}
- BIGNUM *tmp_n = NULL;
- BIGNUM *tmp_e = NULL;
for (key_prop = json->child; key_prop != NULL; key_prop = key_prop->next) {
if (strcmp(key_prop->key, "n") == 0) {
tmp_n =
@@ -528,11 +528,16 @@ static EVP_PKEY *pkey_from_jwk(grpc_exec_ctx *exec_ctx, const grpc_json *json,
gpr_log(GPR_ERROR, "Cannot set RSA key from inputs.");
goto end;
}
+ /* RSA_set0_key takes ownership on success. */
+ tmp_n = NULL;
+ tmp_e = NULL;
result = EVP_PKEY_new();
EVP_PKEY_set1_RSA(result, rsa); /* uprefs rsa. */
end:
- if (rsa != NULL) RSA_free(rsa);
+ RSA_free(rsa);
+ BN_free(tmp_n);
+ BN_free(tmp_e);
return result;
}
@@ -618,7 +623,7 @@ static int verify_jwt_signature(EVP_PKEY *key, const char *alg,
result = 1;
end:
- if (md_ctx != NULL) EVP_MD_CTX_destroy(md_ctx);
+ EVP_MD_CTX_destroy(md_ctx);
return result;
}
@@ -658,7 +663,7 @@ static void on_keys_retrieved(grpc_exec_ctx *exec_ctx, void *user_data,
end:
if (json != NULL) grpc_json_destroy(json);
- if (verification_key != NULL) EVP_PKEY_free(verification_key);
+ EVP_PKEY_free(verification_key);
ctx->user_cb(exec_ctx, ctx->user_data, status, claims);
verifier_cb_ctx_destroy(exec_ctx, ctx);
}
diff --git a/src/core/lib/security/credentials/oauth2/oauth2_credentials.c b/src/core/lib/security/credentials/oauth2/oauth2_credentials.c
index c59e55136c..10b270c49c 100644
--- a/src/core/lib/security/credentials/oauth2/oauth2_credentials.c
+++ b/src/core/lib/security/credentials/oauth2/oauth2_credentials.c
@@ -296,10 +296,10 @@ static bool oauth2_token_fetcher_get_request_metadata(
gpr_mu_unlock(&c->mu);
if (start_fetch) {
grpc_call_credentials_ref(creds);
- c->fetch_func(exec_ctx, grpc_credentials_metadata_request_create(creds),
- &c->httpcli_context, &c->pollent,
- on_oauth2_token_fetcher_http_response,
- gpr_time_add(gpr_now(GPR_CLOCK_REALTIME), refresh_threshold));
+ c->fetch_func(
+ exec_ctx, grpc_credentials_metadata_request_create(creds),
+ &c->httpcli_context, &c->pollent, on_oauth2_token_fetcher_http_response,
+ gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC), refresh_threshold));
}
return false;
}
diff --git a/src/core/lib/surface/version.c b/src/core/lib/surface/version.c
index 8cef15da80..96c16105e7 100644
--- a/src/core/lib/surface/version.c
+++ b/src/core/lib/surface/version.c
@@ -23,4 +23,4 @@
const char *grpc_version_string(void) { return "4.0.0-dev"; }
-const char *grpc_g_stands_for(void) { return "gregarious"; }
+const char *grpc_g_stands_for(void) { return "gambit"; }
diff --git a/src/core/lib/transport/bdp_estimator.c b/src/core/lib/transport/bdp_estimator.c
index 311ae6390d..8b57693413 100644
--- a/src/core/lib/transport/bdp_estimator.c
+++ b/src/core/lib/transport/bdp_estimator.c
@@ -33,20 +33,24 @@ void grpc_bdp_estimator_init(grpc_bdp_estimator *estimator, const char *name) {
estimator->bw_est = 0;
}
-bool grpc_bdp_estimator_get_estimate(grpc_bdp_estimator *estimator,
+bool grpc_bdp_estimator_get_estimate(const grpc_bdp_estimator *estimator,
int64_t *estimate) {
*estimate = estimator->estimate;
return true;
}
-bool grpc_bdp_estimator_get_bw(grpc_bdp_estimator *estimator, double *bw) {
+bool grpc_bdp_estimator_get_bw(const grpc_bdp_estimator *estimator,
+ double *bw) {
*bw = estimator->bw_est;
return true;
}
-bool grpc_bdp_estimator_add_incoming_bytes(grpc_bdp_estimator *estimator,
+void grpc_bdp_estimator_add_incoming_bytes(grpc_bdp_estimator *estimator,
int64_t num_bytes) {
estimator->accumulator += num_bytes;
+}
+
+bool grpc_bdp_estimator_need_ping(const grpc_bdp_estimator *estimator) {
switch (estimator->ping_state) {
case GRPC_BDP_PING_UNSCHEDULED:
return true;
diff --git a/src/core/lib/transport/bdp_estimator.h b/src/core/lib/transport/bdp_estimator.h
index a232d1f87f..1ef0dc99dd 100644
--- a/src/core/lib/transport/bdp_estimator.h
+++ b/src/core/lib/transport/bdp_estimator.h
@@ -47,13 +47,15 @@ typedef struct grpc_bdp_estimator {
void grpc_bdp_estimator_init(grpc_bdp_estimator *estimator, const char *name);
// Returns true if a reasonable estimate could be obtained
-bool grpc_bdp_estimator_get_estimate(grpc_bdp_estimator *estimator,
+bool grpc_bdp_estimator_get_estimate(const grpc_bdp_estimator *estimator,
int64_t *estimate);
-// Returns true if a reasonable estimate could be obtained
-bool grpc_bdp_estimator_get_bw(grpc_bdp_estimator *estimator, double *bw);
+// Tracks new bytes read.
+bool grpc_bdp_estimator_get_bw(const grpc_bdp_estimator *estimator, double *bw);
// Returns true if the user should schedule a ping
-bool grpc_bdp_estimator_add_incoming_bytes(grpc_bdp_estimator *estimator,
+void grpc_bdp_estimator_add_incoming_bytes(grpc_bdp_estimator *estimator,
int64_t num_bytes);
+// Returns true if the user should schedule a ping
+bool grpc_bdp_estimator_need_ping(const grpc_bdp_estimator *estimator);
// Schedule a ping: call in response to receiving a true from
// grpc_bdp_estimator_add_incoming_bytes once a ping has been scheduled by a
// transport (but not necessarily started)
diff --git a/src/cpp/common/version_cc.cc b/src/cpp/common/version_cc.cc
index 34558ea216..2e9a51316d 100644
--- a/src/cpp/common/version_cc.cc
+++ b/src/cpp/common/version_cc.cc
@@ -22,5 +22,5 @@
#include <grpc++/grpc++.h>
namespace grpc {
-grpc::string Version() { return "1.5.0-dev"; }
+grpc::string Version() { return "1.7.0-dev"; }
}
diff --git a/src/csharp/Grpc.Auth/Grpc.Auth.csproj b/src/csharp/Grpc.Auth/Grpc.Auth.csproj
index 6030c70783..abf326459c 100755
--- a/src/csharp/Grpc.Auth/Grpc.Auth.csproj
+++ b/src/csharp/Grpc.Auth/Grpc.Auth.csproj
@@ -19,6 +19,7 @@
<IncludeSymbols>true</IncludeSymbols>
<IncludeSource>true</IncludeSource>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Core.Testing/Grpc.Core.Testing.csproj b/src/csharp/Grpc.Core.Testing/Grpc.Core.Testing.csproj
index 4e186d14dc..9ad6fd0c61 100755
--- a/src/csharp/Grpc.Core.Testing/Grpc.Core.Testing.csproj
+++ b/src/csharp/Grpc.Core.Testing/Grpc.Core.Testing.csproj
@@ -19,6 +19,7 @@
<IncludeSymbols>true</IncludeSymbols>
<IncludeSource>true</IncludeSource>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
index 0cb9288131..72d9035a6f 100644
--- a/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ClientServerTest.cs
@@ -57,9 +57,9 @@ namespace Grpc.Core.Tests
[Test]
public async Task UnaryCall()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
- return request;
+ return Task.FromResult(request);
});
Assert.AreEqual("ABC", Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "ABC"));
@@ -124,10 +124,10 @@ namespace Grpc.Core.Tests
[Test]
public void UnaryCall_ServerHandlerSetsStatus()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
context.Status = new Status(StatusCode.Unauthenticated, "");
- return "";
+ return Task.FromResult("");
});
var ex = Assert.Throws<RpcException>(() => Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "abc"));
@@ -142,11 +142,11 @@ namespace Grpc.Core.Tests
[Test]
public void UnaryCall_ServerHandlerSetsStatusAndTrailers()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
context.Status = new Status(StatusCode.Unauthenticated, "");
context.ResponseTrailers.Add("xyz", "xyz-value");
- return "";
+ return Task.FromResult("");
});
var ex = Assert.Throws<RpcException>(() => Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "abc"));
@@ -168,9 +168,10 @@ namespace Grpc.Core.Tests
helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
{
string result = "";
- await requestStream.ForEachAsync(async (request) =>
+ await requestStream.ForEachAsync((request) =>
{
result += request;
+ return TaskUtils.CompletedTask;
});
await Task.Delay(100);
return result;
@@ -203,9 +204,7 @@ namespace Grpc.Core.Tests
[Test]
public async Task ServerStreamingCall_EndOfStreamIsIdempotent()
{
- helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
- {
- });
+ helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>((request, responseStream, context) => TaskUtils.CompletedTask);
var call = Calls.AsyncServerStreamingCall(helper.CreateServerStreamingCall(), "");
@@ -214,11 +213,12 @@ namespace Grpc.Core.Tests
}
[Test]
- public async Task ServerStreamingCall_ErrorCanBeAwaitedTwice()
+ public void ServerStreamingCall_ErrorCanBeAwaitedTwice()
{
- helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
+ helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>((request, responseStream, context) =>
{
context.Status = new Status(StatusCode.InvalidArgument, "");
+ return TaskUtils.CompletedTask;
});
var call = Calls.AsyncServerStreamingCall(helper.CreateServerStreamingCall(), "");
@@ -232,9 +232,9 @@ namespace Grpc.Core.Tests
}
[Test]
- public async Task ServerStreamingCall_TrailersFromMultipleSourcesGetConcatenated()
+ public void ServerStreamingCall_TrailersFromMultipleSourcesGetConcatenated()
{
- helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
+ helper.ServerStreamingHandler = new ServerStreamingServerMethod<string, string>((request, responseStream, context) =>
{
context.ResponseTrailers.Add("xyz", "xyz-value");
throw new RpcException(new Status(StatusCode.InvalidArgument, ""), new Metadata { {"abc", "abc-value"} });
@@ -343,7 +343,7 @@ namespace Grpc.Core.Tests
[Test]
public async Task AsyncUnaryCall_EchoMetadata()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
foreach (Metadata.Entry metadataEntry in context.RequestHeaders)
{
@@ -352,7 +352,7 @@ namespace Grpc.Core.Tests
context.ResponseTrailers.Add(metadataEntry);
}
}
- return "";
+ return Task.FromResult("");
});
var headers = new Metadata
@@ -395,10 +395,10 @@ namespace Grpc.Core.Tests
{
// some japanese and chinese characters
var nonAsciiString = "\u30a1\u30a2\u30a3 \u62b5\u6297\u662f\u5f92\u52b3\u7684";
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
context.Status = new Status(StatusCode.Unknown, nonAsciiString);
- return "";
+ return Task.FromResult("");
});
var ex = Assert.Throws<RpcException>(() => Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "abc"));
@@ -409,9 +409,9 @@ namespace Grpc.Core.Tests
[Test]
public void ServerCallContext_PeerInfoPresent()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
- return context.Peer;
+ return Task.FromResult(context.Peer);
});
string peer = Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "abc");
@@ -421,11 +421,11 @@ namespace Grpc.Core.Tests
[Test]
public void ServerCallContext_HostAndMethodPresent()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
Assert.IsTrue(context.Host.Contains(Host));
Assert.AreEqual("/tests.Test/Unary", context.Method);
- return "PASS";
+ return Task.FromResult("PASS");
});
Assert.AreEqual("PASS", Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "abc"));
}
@@ -433,11 +433,11 @@ namespace Grpc.Core.Tests
[Test]
public void ServerCallContext_AuthContextNotPopulated()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
Assert.IsFalse(context.AuthContext.IsPeerAuthenticated);
Assert.AreEqual(0, context.AuthContext.Properties.Count());
- return "PASS";
+ return Task.FromResult("PASS");
});
Assert.AreEqual("PASS", Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "abc"));
}
@@ -445,9 +445,9 @@ namespace Grpc.Core.Tests
[Test]
public async Task Channel_WaitForStateChangedAsync()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
- return request;
+ return Task.FromResult(request);
});
Assert.ThrowsAsync(typeof(TaskCanceledException),
diff --git a/src/csharp/Grpc.Core.Tests/CompressionTest.cs b/src/csharp/Grpc.Core.Tests/CompressionTest.cs
index 0b28433b98..9254cb998d 100644
--- a/src/csharp/Grpc.Core.Tests/CompressionTest.cs
+++ b/src/csharp/Grpc.Core.Tests/CompressionTest.cs
@@ -55,10 +55,10 @@ namespace Grpc.Core.Tests
[Test]
public void WriteOptions_Unary()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
context.WriteOptions = new WriteOptions(WriteFlags.NoCompress);
- return request;
+ return Task.FromResult(request);
});
var callOptions = new CallOptions(writeOptions: new WriteOptions(WriteFlags.NoCompress));
diff --git a/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs b/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs
index 5a55ad1bbb..c8bc372202 100644
--- a/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ContextPropagationTest.cs
@@ -106,11 +106,11 @@ namespace Grpc.Core.Tests
public async Task PropagateDeadline()
{
var deadline = DateTime.UtcNow.AddDays(7);
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
Assert.IsTrue(context.Deadline < deadline.AddMinutes(1));
Assert.IsTrue(context.Deadline > deadline.AddMinutes(-1));
- return "PASS";
+ return Task.FromResult("PASS");
});
helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
@@ -135,10 +135,10 @@ namespace Grpc.Core.Tests
[Test]
public async Task SuppressDeadlinePropagation()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
Assert.AreEqual(DateTime.MaxValue, context.Deadline);
- return "PASS";
+ return Task.FromResult("PASS");
});
helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
diff --git a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
index 9be77c8875..6df68fda58 100755
--- a/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
+++ b/src/csharp/Grpc.Core.Tests/Grpc.Core.Tests.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.Core.Tests</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Core.Tests/HalfcloseTest.cs b/src/csharp/Grpc.Core.Tests/HalfcloseTest.cs
index 02554dcea5..5fc8fb694a 100644
--- a/src/csharp/Grpc.Core.Tests/HalfcloseTest.cs
+++ b/src/csharp/Grpc.Core.Tests/HalfcloseTest.cs
@@ -62,9 +62,9 @@ namespace Grpc.Core.Tests
[Test]
public async Task HalfcloseAfterFullclose_ClientStreamingCall()
{
- helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
+ helper.ClientStreamingHandler = new ClientStreamingServerMethod<string, string>((requestStream, context) =>
{
- return "PASS";
+ return Task.FromResult("PASS");
});
var call = Calls.AsyncClientStreamingCall(helper.CreateClientStreamingCall());
diff --git a/src/csharp/Grpc.Core.Tests/Internal/CompletionQueueEventTest.cs b/src/csharp/Grpc.Core.Tests/Internal/CompletionQueueEventTest.cs
index 6dac2de071..259520846f 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/CompletionQueueEventTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/CompletionQueueEventTest.cs
@@ -29,9 +29,12 @@ namespace Grpc.Core.Internal.Tests
public class CompletionQueueEventTest
{
[Test]
- public void CreateAndDestroy()
+ public void CompletionQueueEventSizeIsNativeSize()
{
+ #pragma warning disable 0618
+ // We need to use the obsolete non-generic version of Marshal.SizeOf because the generic version is not available in net45
Assert.AreEqual(CompletionQueueEvent.NativeSize, Marshal.SizeOf(typeof(CompletionQueueEvent)));
+ #pragma warning restore 0618
}
}
}
diff --git a/src/csharp/Grpc.Core.Tests/Internal/TimespecTest.cs b/src/csharp/Grpc.Core.Tests/Internal/TimespecTest.cs
index d368c795d9..be35f31c36 100644
--- a/src/csharp/Grpc.Core.Tests/Internal/TimespecTest.cs
+++ b/src/csharp/Grpc.Core.Tests/Internal/TimespecTest.cs
@@ -60,7 +60,10 @@ namespace Grpc.Core.Internal.Tests
[Test]
public void TimespecSizeIsNativeSize()
{
+ #pragma warning disable 0618
+ // We need to use the obsolete non-generic version of Marshal.SizeOf because the generic version is not available in net45
Assert.AreEqual(Timespec.NativeSize, Marshal.SizeOf(typeof(Timespec)));
+ #pragma warning restore 0618
}
[Test]
diff --git a/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs b/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs
index 925fb20833..7f4677d57f 100644
--- a/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs
+++ b/src/csharp/Grpc.Core.Tests/MockServiceHelper.cs
@@ -96,26 +96,28 @@ namespace Grpc.Core.Tests
var defaultStatus = new Status(StatusCode.Unknown, "Default mock implementation. Please provide your own.");
- unaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ unaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
context.Status = defaultStatus;
- return "";
+ return Task.FromResult("");
});
- clientStreamingHandler = new ClientStreamingServerMethod<string, string>(async (requestStream, context) =>
+ clientStreamingHandler = new ClientStreamingServerMethod<string, string>((requestStream, context) =>
{
context.Status = defaultStatus;
- return "";
+ return Task.FromResult("");
});
- serverStreamingHandler = new ServerStreamingServerMethod<string, string>(async (request, responseStream, context) =>
+ serverStreamingHandler = new ServerStreamingServerMethod<string, string>((request, responseStream, context) =>
{
context.Status = defaultStatus;
+ return TaskUtils.CompletedTask;
});
- duplexStreamingHandler = new DuplexStreamingServerMethod<string, string>(async (requestStream, responseStream, context) =>
+ duplexStreamingHandler = new DuplexStreamingServerMethod<string, string>((requestStream, responseStream, context) =>
{
context.Status = defaultStatus;
+ return TaskUtils.CompletedTask;
});
}
diff --git a/src/csharp/Grpc.Core.Tests/PerformanceTest.cs b/src/csharp/Grpc.Core.Tests/PerformanceTest.cs
index 2420b47a87..4b1d745284 100644
--- a/src/csharp/Grpc.Core.Tests/PerformanceTest.cs
+++ b/src/csharp/Grpc.Core.Tests/PerformanceTest.cs
@@ -61,9 +61,9 @@ namespace Grpc.Core.Tests
var profiler = new BasicProfiler();
Profilers.SetForCurrentThread(profiler);
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
- return request;
+ return Task.FromResult(request);
});
var callDetails = helper.CreateUnaryCall();
diff --git a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs
index 67dbcf8f09..e318ee44f4 100644
--- a/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ResponseHeadersTest.cs
@@ -138,10 +138,10 @@ namespace Grpc.Core.Tests
[Test]
public void WriteResponseHeaders_NullNotAllowed()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
Assert.ThrowsAsync(typeof(ArgumentNullException), async () => await context.WriteResponseHeadersAsync(null));
- return "PASS";
+ return Task.FromResult("PASS");
});
Assert.AreEqual("PASS", Calls.BlockingUnaryCall(helper.CreateUnaryCall(), ""));
@@ -158,7 +158,7 @@ namespace Grpc.Core.Tests
await context.WriteResponseHeadersAsync(headers);
Assert.Fail();
}
- catch (InvalidOperationException expected)
+ catch (InvalidOperationException)
{
}
return "PASS";
@@ -178,7 +178,7 @@ namespace Grpc.Core.Tests
await context.WriteResponseHeadersAsync(headers);
Assert.Fail();
}
- catch (InvalidOperationException expected)
+ catch (InvalidOperationException)
{
}
await responseStream.WriteAsync("B");
diff --git a/src/csharp/Grpc.Core.Tests/ThreadingModelTest.cs b/src/csharp/Grpc.Core.Tests/ThreadingModelTest.cs
index fb18198945..9a828f307e 100644
--- a/src/csharp/Grpc.Core.Tests/ThreadingModelTest.cs
+++ b/src/csharp/Grpc.Core.Tests/ThreadingModelTest.cs
@@ -50,13 +50,14 @@ namespace Grpc.Core.Tests
[Test]
public void BlockingCallInServerHandlerDoesNotDeadlock()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
int recursionDepth = int.Parse(request);
if (recursionDepth <= 0) {
- return "SUCCESS";
+ return Task.FromResult("SUCCESS");
}
- return Calls.BlockingUnaryCall(helper.CreateUnaryCall(), (recursionDepth - 1).ToString());
+ var response = Calls.BlockingUnaryCall(helper.CreateUnaryCall(), (recursionDepth - 1).ToString());
+ return Task.FromResult(response);
});
int maxRecursionDepth = Environment.ProcessorCount * 2; // make sure we have more pending blocking calls than threads in GrpcThreadPool
@@ -66,12 +67,12 @@ namespace Grpc.Core.Tests
[Test]
public void HandlerDoesNotRunOnGrpcThread()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
if (IsRunningOnGrpcThreadPool()) {
- return "Server handler should not run on gRPC threadpool thread.";
+ return Task.FromResult("Server handler should not run on gRPC threadpool thread.");
}
- return request;
+ return Task.FromResult(request);
});
Assert.AreEqual("ABC", Calls.BlockingUnaryCall(helper.CreateUnaryCall(), "ABC"));
@@ -80,9 +81,9 @@ namespace Grpc.Core.Tests
[Test]
public async Task ContinuationDoesNotRunOnGrpcThread()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
- return request;
+ return Task.FromResult(request);
});
await Calls.AsyncUnaryCall(helper.CreateUnaryCall(), "ABC");
diff --git a/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs b/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs
index 8f0d6b866d..b89c1afcc3 100644
--- a/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs
+++ b/src/csharp/Grpc.Core.Tests/TimeoutsTest.cs
@@ -57,10 +57,10 @@ namespace Grpc.Core.Tests
[Test]
public void InfiniteDeadline()
{
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
Assert.AreEqual(DateTime.MaxValue, context.Deadline);
- return "PASS";
+ return Task.FromResult("PASS");
});
// no deadline specified, check server sees infinite deadline
@@ -75,13 +75,13 @@ namespace Grpc.Core.Tests
{
var clientDeadline = DateTime.UtcNow + TimeSpan.FromDays(7);
- helper.UnaryHandler = new UnaryServerMethod<string, string>(async (request, context) =>
+ helper.UnaryHandler = new UnaryServerMethod<string, string>((request, context) =>
{
// A fairly relaxed check that the deadline set by client and deadline seen by server
// are in agreement. C core takes care of the work with transferring deadline over the wire,
// so we don't need an exact check here.
Assert.IsTrue(Math.Abs((clientDeadline - context.Deadline).TotalMilliseconds) < 5000);
- return "PASS";
+ return Task.FromResult("PASS");
});
Calls.BlockingUnaryCall(helper.CreateUnaryCall(new CallOptions(deadline: clientDeadline)), "abc");
}
diff --git a/src/csharp/Grpc.Core/Grpc.Core.csproj b/src/csharp/Grpc.Core/Grpc.Core.csproj
index e32711c520..dde800aadd 100755
--- a/src/csharp/Grpc.Core/Grpc.Core.csproj
+++ b/src/csharp/Grpc.Core/Grpc.Core.csproj
@@ -18,6 +18,7 @@
<IncludeSymbols>true</IncludeSymbols>
<IncludeSource>true</IncludeSource>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Core/Internal/AtomicCounter.cs b/src/csharp/Grpc.Core/Internal/AtomicCounter.cs
index 64e16e4c54..20e25f9d88 100644
--- a/src/csharp/Grpc.Core/Internal/AtomicCounter.cs
+++ b/src/csharp/Grpc.Core/Internal/AtomicCounter.cs
@@ -64,7 +64,7 @@ namespace Grpc.Core.Internal
{
get
{
- return counter;
+ return Interlocked.Read(ref counter);
}
}
}
diff --git a/src/csharp/Grpc.Core/Internal/AuthContextSafeHandle.cs b/src/csharp/Grpc.Core/Internal/AuthContextSafeHandle.cs
index 6c22bd59ba..e8e61ebf3c 100644
--- a/src/csharp/Grpc.Core/Internal/AuthContextSafeHandle.cs
+++ b/src/csharp/Grpc.Core/Internal/AuthContextSafeHandle.cs
@@ -74,7 +74,10 @@ namespace Grpc.Core.Internal
private AuthProperty PtrToAuthProperty(IntPtr authPropertyPtr)
{
+ #pragma warning disable 0618
+ // We need to use the obsolete non-generic version of Marshal.PtrToStructure, because the generic version is not available in net45
var nativeAuthProperty = (NativeAuthProperty) Marshal.PtrToStructure(authPropertyPtr, typeof(NativeAuthProperty));
+ #pragma warning restore 0618
var name = Marshal.PtrToStringAnsi(nativeAuthProperty.Name);
var valueBytes = new byte[(int) nativeAuthProperty.ValueLength];
Marshal.Copy(nativeAuthProperty.Value, valueBytes, 0, (int)nativeAuthProperty.ValueLength);
diff --git a/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs b/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs
index 19b44c2618..3c94b602c0 100644
--- a/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs
+++ b/src/csharp/Grpc.Core/Internal/GrpcThreadPool.cs
@@ -33,8 +33,8 @@ namespace Grpc.Core.Internal
internal class GrpcThreadPool
{
static readonly ILogger Logger = GrpcEnvironment.Logger.ForType<GrpcThreadPool>();
- static readonly WaitCallback RunCompletionQueueEventCallbackSuccess = new WaitCallback((callback) => RunCompletionQueueEventCallback((OpCompletionDelegate) callback, true));
- static readonly WaitCallback RunCompletionQueueEventCallbackFailure = new WaitCallback((callback) => RunCompletionQueueEventCallback((OpCompletionDelegate) callback, false));
+ const int FinishContinuationsSleepMillis = 10;
+ const int MaxFinishContinuationsSleepTotalMillis = 10000;
readonly GrpcEnvironment environment;
readonly object myLock = new object();
@@ -42,6 +42,9 @@ namespace Grpc.Core.Internal
readonly int poolSize;
readonly int completionQueueCount;
readonly bool inlineHandlers;
+ readonly WaitCallback runCompletionQueueEventCallbackSuccess;
+ readonly WaitCallback runCompletionQueueEventCallbackFailure;
+ readonly AtomicCounter queuedContinuationCounter = new AtomicCounter();
readonly List<BasicProfiler> threadProfilers = new List<BasicProfiler>(); // profilers assigned to threadpool threads
@@ -64,6 +67,9 @@ namespace Grpc.Core.Internal
this.inlineHandlers = inlineHandlers;
GrpcPreconditions.CheckArgument(poolSize >= completionQueueCount,
"Thread pool size cannot be smaller than the number of completion queues used.");
+
+ this.runCompletionQueueEventCallbackSuccess = new WaitCallback((callback) => RunCompletionQueueEventCallback((OpCompletionDelegate) callback, true));
+ this.runCompletionQueueEventCallbackFailure = new WaitCallback((callback) => RunCompletionQueueEventCallback((OpCompletionDelegate) callback, false));
}
public void Start()
@@ -173,7 +179,8 @@ namespace Grpc.Core.Internal
// Use cached delegates to avoid unnecessary allocations
if (!inlineHandlers)
{
- ThreadPool.QueueUserWorkItem(success ? RunCompletionQueueEventCallbackSuccess : RunCompletionQueueEventCallbackFailure, callback);
+ queuedContinuationCounter.Increment();
+ ThreadPool.QueueUserWorkItem(success ? runCompletionQueueEventCallbackSuccess : runCompletionQueueEventCallbackFailure, callback);
}
else
{
@@ -187,6 +194,24 @@ namespace Grpc.Core.Internal
}
}
while (ev.type != CompletionQueueEvent.CompletionType.Shutdown);
+
+ // Continuations are running on default threadpool that consists of background threads.
+ // GrpcThreadPool thread (a foreground thread) will not exit unless all queued work had
+ // been finished to prevent terminating the continuations queued prematurely.
+ int sleepIterations = 0;
+ while (queuedContinuationCounter.Count != 0)
+ {
+ // Only happens on shutdown and having pending continuations shouldn't very common,
+ // so sleeping here for a little bit is fine.
+ if (sleepIterations >= MaxFinishContinuationsSleepTotalMillis / FinishContinuationsSleepMillis)
+ {
+ Logger.Warning("Shutting down gRPC thread [{0}] with unfinished callbacks (Timed out waiting for callbacks to finish).",
+ Thread.CurrentThread.Name);
+ break;
+ }
+ Thread.Sleep(FinishContinuationsSleepMillis);
+ sleepIterations ++;
+ }
}
private static IReadOnlyCollection<CompletionQueueSafeHandle> CreateCompletionQueueList(GrpcEnvironment environment, int completionQueueCount)
@@ -200,7 +225,7 @@ namespace Grpc.Core.Internal
return list.AsReadOnly();
}
- private static void RunCompletionQueueEventCallback(OpCompletionDelegate callback, bool success)
+ private void RunCompletionQueueEventCallback(OpCompletionDelegate callback, bool success)
{
try
{
@@ -210,6 +235,10 @@ namespace Grpc.Core.Internal
{
Logger.Error(e, "Exception occured while invoking completion delegate");
}
+ finally
+ {
+ queuedContinuationCounter.Decrement();
+ }
}
}
}
diff --git a/src/csharp/Grpc.Core/Version.csproj.include b/src/csharp/Grpc.Core/Version.csproj.include
index 81156452f3..124ecab14c 100755
--- a/src/csharp/Grpc.Core/Version.csproj.include
+++ b/src/csharp/Grpc.Core/Version.csproj.include
@@ -1,7 +1,7 @@
<!-- This file is generated -->
<Project>
<PropertyGroup>
- <GrpcCsharpVersion>1.5.0-dev</GrpcCsharpVersion>
+ <GrpcCsharpVersion>1.7.0-dev</GrpcCsharpVersion>
<GoogleProtobufVersion>3.3.0</GoogleProtobufVersion>
</PropertyGroup>
</Project>
diff --git a/src/csharp/Grpc.Core/VersionInfo.cs b/src/csharp/Grpc.Core/VersionInfo.cs
index 92aa0e5aed..588cc84516 100644
--- a/src/csharp/Grpc.Core/VersionInfo.cs
+++ b/src/csharp/Grpc.Core/VersionInfo.cs
@@ -33,11 +33,11 @@ namespace Grpc.Core
/// <summary>
/// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
/// </summary>
- public const string CurrentAssemblyFileVersion = "1.5.0.0";
+ public const string CurrentAssemblyFileVersion = "1.7.0.0";
/// <summary>
/// Current version of gRPC C#
/// </summary>
- public const string CurrentVersion = "1.5.0-dev";
+ public const string CurrentVersion = "1.7.0-dev";
}
}
diff --git a/src/csharp/Grpc.Examples.MathClient/Grpc.Examples.MathClient.csproj b/src/csharp/Grpc.Examples.MathClient/Grpc.Examples.MathClient.csproj
index 08df026a53..74deed6584 100755
--- a/src/csharp/Grpc.Examples.MathClient/Grpc.Examples.MathClient.csproj
+++ b/src/csharp/Grpc.Examples.MathClient/Grpc.Examples.MathClient.csproj
@@ -9,6 +9,7 @@
<OutputType>Exe</OutputType>
<PackageId>Grpc.Examples.MathClient</PackageId>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Examples.MathServer/Grpc.Examples.MathServer.csproj b/src/csharp/Grpc.Examples.MathServer/Grpc.Examples.MathServer.csproj
index a02937474a..1abf261498 100755
--- a/src/csharp/Grpc.Examples.MathServer/Grpc.Examples.MathServer.csproj
+++ b/src/csharp/Grpc.Examples.MathServer/Grpc.Examples.MathServer.csproj
@@ -9,6 +9,7 @@
<OutputType>Exe</OutputType>
<PackageId>Grpc.Examples.MathServer</PackageId>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj b/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj
index 9a8e62cc8b..d2a13ed6e1 100755
--- a/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj
+++ b/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.Examples.Tests</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
index 8e6d685e0f..ded80ffba5 100644
--- a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
+++ b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
@@ -37,7 +37,7 @@ namespace Math.Tests
Channel channel;
Math.MathClient client;
- [TestFixtureSetUp]
+ [OneTimeSetUp]
public void Init()
{
// Disable SO_REUSEPORT to prevent https://github.com/grpc/grpc/issues/10755
@@ -51,7 +51,7 @@ namespace Math.Tests
client = new Math.MathClient(channel);
}
- [TestFixtureTearDown]
+ [OneTimeTearDown]
public void Cleanup()
{
channel.ShutdownAsync().Wait();
@@ -130,7 +130,7 @@ namespace Math.Tests
}
[Test]
- public async Task FibWithDeadline()
+ public void FibWithDeadline()
{
using (var call = client.Fib(new FibArgs { Limit = 0 },
deadline: DateTime.UtcNow.AddMilliseconds(500)))
diff --git a/src/csharp/Grpc.Examples/Grpc.Examples.csproj b/src/csharp/Grpc.Examples/Grpc.Examples.csproj
index 625c1723bc..491d313f17 100755
--- a/src/csharp/Grpc.Examples/Grpc.Examples.csproj
+++ b/src/csharp/Grpc.Examples/Grpc.Examples.csproj
@@ -8,6 +8,7 @@
<AssemblyName>Grpc.Examples</AssemblyName>
<PackageId>Grpc.Examples</PackageId>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Examples/MathGrpc.cs b/src/csharp/Grpc.Examples/MathGrpc.cs
index 317eeb52ef..4ed414400d 100644
--- a/src/csharp/Grpc.Examples/MathGrpc.cs
+++ b/src/csharp/Grpc.Examples/MathGrpc.cs
@@ -15,6 +15,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
+#pragma warning disable 1591
#region Designer generated code
using System;
diff --git a/src/csharp/Grpc.Examples/MathServiceImpl.cs b/src/csharp/Grpc.Examples/MathServiceImpl.cs
index 85b5e2dd96..0cc1b79137 100644
--- a/src/csharp/Grpc.Examples/MathServiceImpl.cs
+++ b/src/csharp/Grpc.Examples/MathServiceImpl.cs
@@ -52,9 +52,10 @@ namespace Math
public override async Task<Num> Sum(IAsyncStreamReader<Num> requestStream, ServerCallContext context)
{
long sum = 0;
- await requestStream.ForEachAsync(async num =>
+ await requestStream.ForEachAsync(num =>
{
sum += num.Num_;
+ return TaskUtils.CompletedTask;
});
return new Num { Num_ = sum };
}
diff --git a/src/csharp/Grpc.HealthCheck.Tests/Grpc.HealthCheck.Tests.csproj b/src/csharp/Grpc.HealthCheck.Tests/Grpc.HealthCheck.Tests.csproj
index b0e2716e7e..2ccf46b9b9 100755
--- a/src/csharp/Grpc.HealthCheck.Tests/Grpc.HealthCheck.Tests.csproj
+++ b/src/csharp/Grpc.HealthCheck.Tests/Grpc.HealthCheck.Tests.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.HealthCheck.Tests</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs b/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs
index 7dadba75ff..45e8ad9062 100644
--- a/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs
+++ b/src/csharp/Grpc.HealthCheck.Tests/HealthClientServerTest.cs
@@ -37,7 +37,7 @@ namespace Grpc.HealthCheck.Tests
Grpc.Health.V1.Health.HealthClient client;
Grpc.HealthCheck.HealthServiceImpl serviceImpl;
- [TestFixtureSetUp]
+ [OneTimeSetUp]
public void Init()
{
serviceImpl = new HealthServiceImpl();
@@ -54,7 +54,7 @@ namespace Grpc.HealthCheck.Tests
client = new Grpc.Health.V1.Health.HealthClient(channel);
}
- [TestFixtureTearDown]
+ [OneTimeTearDown]
public void Cleanup()
{
channel.ShutdownAsync().Wait();
diff --git a/src/csharp/Grpc.HealthCheck/Grpc.HealthCheck.csproj b/src/csharp/Grpc.HealthCheck/Grpc.HealthCheck.csproj
index b54311bbd5..3eb90434f3 100755
--- a/src/csharp/Grpc.HealthCheck/Grpc.HealthCheck.csproj
+++ b/src/csharp/Grpc.HealthCheck/Grpc.HealthCheck.csproj
@@ -18,6 +18,7 @@
<IncludeSymbols>true</IncludeSymbols>
<IncludeSource>true</IncludeSource>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
index 8c747aa306..3e8eb34689 100644
--- a/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
+++ b/src/csharp/Grpc.HealthCheck/HealthGrpc.cs
@@ -15,6 +15,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
+#pragma warning disable 1591
#region Designer generated code
using System;
diff --git a/src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj b/src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj
index dcb24c7216..c67beea7cd 100755
--- a/src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj
+++ b/src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.IntegrationTesting.Client</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.IntegrationTesting.QpsWorker/Grpc.IntegrationTesting.QpsWorker.csproj b/src/csharp/Grpc.IntegrationTesting.QpsWorker/Grpc.IntegrationTesting.QpsWorker.csproj
index 43772020d6..e452257b1b 100755
--- a/src/csharp/Grpc.IntegrationTesting.QpsWorker/Grpc.IntegrationTesting.QpsWorker.csproj
+++ b/src/csharp/Grpc.IntegrationTesting.QpsWorker/Grpc.IntegrationTesting.QpsWorker.csproj
@@ -11,6 +11,7 @@
<ServerGarbageCollection>true</ServerGarbageCollection>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj b/src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj
index db736baed0..a1fb316fdb 100755
--- a/src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj
+++ b/src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.IntegrationTesting.Server</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj b/src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj
index fe4e0da417..f64bea3d2b 100755
--- a/src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj
+++ b/src/csharp/Grpc.IntegrationTesting.StressClient/Grpc.IntegrationTesting.StressClient.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.IntegrationTesting.StressClient</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.IntegrationTesting/Control.cs b/src/csharp/Grpc.IntegrationTesting/Control.cs
index d62b5a1c5b..b15da8b8e5 100644
--- a/src/csharp/Grpc.IntegrationTesting/Control.cs
+++ b/src/csharp/Grpc.IntegrationTesting/Control.cs
@@ -28,86 +28,89 @@ namespace Grpc.Testing {
"c29uUGFyYW1zEhQKDG9mZmVyZWRfbG9hZBgBIAEoASISChBDbG9zZWRMb29w",
"UGFyYW1zInsKCkxvYWRQYXJhbXMSNQoLY2xvc2VkX2xvb3AYASABKAsyHi5n",
"cnBjLnRlc3RpbmcuQ2xvc2VkTG9vcFBhcmFtc0gAEi4KB3BvaXNzb24YAiAB",
- "KAsyGy5ncnBjLnRlc3RpbmcuUG9pc3NvblBhcmFtc0gAQgYKBGxvYWQiQwoO",
+ "KAsyGy5ncnBjLnRlc3RpbmcuUG9pc3NvblBhcmFtc0gAQgYKBGxvYWQiVgoO",
"U2VjdXJpdHlQYXJhbXMSEwoLdXNlX3Rlc3RfY2EYASABKAgSHAoUc2VydmVy",
- "X2hvc3Rfb3ZlcnJpZGUYAiABKAkiTQoKQ2hhbm5lbEFyZxIMCgRuYW1lGAEg",
- "ASgJEhMKCXN0cl92YWx1ZRgCIAEoCUgAEhMKCWludF92YWx1ZRgDIAEoBUgA",
- "QgcKBXZhbHVlItUECgxDbGllbnRDb25maWcSFgoOc2VydmVyX3RhcmdldHMY",
- "ASADKAkSLQoLY2xpZW50X3R5cGUYAiABKA4yGC5ncnBjLnRlc3RpbmcuQ2xp",
- "ZW50VHlwZRI1Cg9zZWN1cml0eV9wYXJhbXMYAyABKAsyHC5ncnBjLnRlc3Rp",
- "bmcuU2VjdXJpdHlQYXJhbXMSJAocb3V0c3RhbmRpbmdfcnBjc19wZXJfY2hh",
- "bm5lbBgEIAEoBRIXCg9jbGllbnRfY2hhbm5lbHMYBSABKAUSHAoUYXN5bmNf",
- "Y2xpZW50X3RocmVhZHMYByABKAUSJwoIcnBjX3R5cGUYCCABKA4yFS5ncnBj",
- "LnRlc3RpbmcuUnBjVHlwZRItCgtsb2FkX3BhcmFtcxgKIAEoCzIYLmdycGMu",
- "dGVzdGluZy5Mb2FkUGFyYW1zEjMKDnBheWxvYWRfY29uZmlnGAsgASgLMhsu",
- "Z3JwYy50ZXN0aW5nLlBheWxvYWRDb25maWcSNwoQaGlzdG9ncmFtX3BhcmFt",
- "cxgMIAEoCzIdLmdycGMudGVzdGluZy5IaXN0b2dyYW1QYXJhbXMSEQoJY29y",
- "ZV9saXN0GA0gAygFEhIKCmNvcmVfbGltaXQYDiABKAUSGAoQb3RoZXJfY2xp",
- "ZW50X2FwaRgPIAEoCRIuCgxjaGFubmVsX2FyZ3MYECADKAsyGC5ncnBjLnRl",
- "c3RpbmcuQ2hhbm5lbEFyZxIWCg50aHJlYWRzX3Blcl9jcRgRIAEoBRIbChNt",
- "ZXNzYWdlc19wZXJfc3RyZWFtGBIgASgFIjgKDENsaWVudFN0YXR1cxIoCgVz",
- "dGF0cxgBIAEoCzIZLmdycGMudGVzdGluZy5DbGllbnRTdGF0cyIVCgRNYXJr",
- "Eg0KBXJlc2V0GAEgASgIImgKCkNsaWVudEFyZ3MSKwoFc2V0dXAYASABKAsy",
- "Gi5ncnBjLnRlc3RpbmcuQ2xpZW50Q29uZmlnSAASIgoEbWFyaxgCIAEoCzIS",
- "LmdycGMudGVzdGluZy5NYXJrSABCCQoHYXJndHlwZSLMAgoMU2VydmVyQ29u",
- "ZmlnEi0KC3NlcnZlcl90eXBlGAEgASgOMhguZ3JwYy50ZXN0aW5nLlNlcnZl",
- "clR5cGUSNQoPc2VjdXJpdHlfcGFyYW1zGAIgASgLMhwuZ3JwYy50ZXN0aW5n",
- "LlNlY3VyaXR5UGFyYW1zEgwKBHBvcnQYBCABKAUSHAoUYXN5bmNfc2VydmVy",
- "X3RocmVhZHMYByABKAUSEgoKY29yZV9saW1pdBgIIAEoBRIzCg5wYXlsb2Fk",
- "X2NvbmZpZxgJIAEoCzIbLmdycGMudGVzdGluZy5QYXlsb2FkQ29uZmlnEhEK",
- "CWNvcmVfbGlzdBgKIAMoBRIYChBvdGhlcl9zZXJ2ZXJfYXBpGAsgASgJEhYK",
- "DnRocmVhZHNfcGVyX2NxGAwgASgFEhwKE3Jlc291cmNlX3F1b3RhX3NpemUY",
- "6QcgASgFImgKClNlcnZlckFyZ3MSKwoFc2V0dXAYASABKAsyGi5ncnBjLnRl",
- "c3RpbmcuU2VydmVyQ29uZmlnSAASIgoEbWFyaxgCIAEoCzISLmdycGMudGVz",
- "dGluZy5NYXJrSABCCQoHYXJndHlwZSJVCgxTZXJ2ZXJTdGF0dXMSKAoFc3Rh",
- "dHMYASABKAsyGS5ncnBjLnRlc3RpbmcuU2VydmVyU3RhdHMSDAoEcG9ydBgC",
- "IAEoBRINCgVjb3JlcxgDIAEoBSINCgtDb3JlUmVxdWVzdCIdCgxDb3JlUmVz",
- "cG9uc2USDQoFY29yZXMYASABKAUiBgoEVm9pZCL9AQoIU2NlbmFyaW8SDAoE",
- "bmFtZRgBIAEoCRIxCg1jbGllbnRfY29uZmlnGAIgASgLMhouZ3JwYy50ZXN0",
- "aW5nLkNsaWVudENvbmZpZxITCgtudW1fY2xpZW50cxgDIAEoBRIxCg1zZXJ2",
- "ZXJfY29uZmlnGAQgASgLMhouZ3JwYy50ZXN0aW5nLlNlcnZlckNvbmZpZxIT",
- "CgtudW1fc2VydmVycxgFIAEoBRIWCg53YXJtdXBfc2Vjb25kcxgGIAEoBRIZ",
- "ChFiZW5jaG1hcmtfc2Vjb25kcxgHIAEoBRIgChhzcGF3bl9sb2NhbF93b3Jr",
- "ZXJfY291bnQYCCABKAUiNgoJU2NlbmFyaW9zEikKCXNjZW5hcmlvcxgBIAMo",
- "CzIWLmdycGMudGVzdGluZy5TY2VuYXJpbyK8AwoVU2NlbmFyaW9SZXN1bHRT",
- "dW1tYXJ5EgsKA3FwcxgBIAEoARIbChNxcHNfcGVyX3NlcnZlcl9jb3JlGAIg",
- "ASgBEhoKEnNlcnZlcl9zeXN0ZW1fdGltZRgDIAEoARIYChBzZXJ2ZXJfdXNl",
- "cl90aW1lGAQgASgBEhoKEmNsaWVudF9zeXN0ZW1fdGltZRgFIAEoARIYChBj",
- "bGllbnRfdXNlcl90aW1lGAYgASgBEhIKCmxhdGVuY3lfNTAYByABKAESEgoK",
- "bGF0ZW5jeV85MBgIIAEoARISCgpsYXRlbmN5Xzk1GAkgASgBEhIKCmxhdGVu",
- "Y3lfOTkYCiABKAESEwoLbGF0ZW5jeV85OTkYCyABKAESGAoQc2VydmVyX2Nw",
- "dV91c2FnZRgMIAEoARImCh5zdWNjZXNzZnVsX3JlcXVlc3RzX3Blcl9zZWNv",
- "bmQYDSABKAESIgoaZmFpbGVkX3JlcXVlc3RzX3Blcl9zZWNvbmQYDiABKAES",
- "IAoYY2xpZW50X3BvbGxzX3Blcl9yZXF1ZXN0GA8gASgBEiAKGHNlcnZlcl9w",
- "b2xsc19wZXJfcmVxdWVzdBgQIAEoASKDAwoOU2NlbmFyaW9SZXN1bHQSKAoI",
- "c2NlbmFyaW8YASABKAsyFi5ncnBjLnRlc3RpbmcuU2NlbmFyaW8SLgoJbGF0",
- "ZW5jaWVzGAIgASgLMhsuZ3JwYy50ZXN0aW5nLkhpc3RvZ3JhbURhdGESLwoM",
- "Y2xpZW50X3N0YXRzGAMgAygLMhkuZ3JwYy50ZXN0aW5nLkNsaWVudFN0YXRz",
- "Ei8KDHNlcnZlcl9zdGF0cxgEIAMoCzIZLmdycGMudGVzdGluZy5TZXJ2ZXJT",
- "dGF0cxIUCgxzZXJ2ZXJfY29yZXMYBSADKAUSNAoHc3VtbWFyeRgGIAEoCzIj",
- "LmdycGMudGVzdGluZy5TY2VuYXJpb1Jlc3VsdFN1bW1hcnkSFgoOY2xpZW50",
- "X3N1Y2Nlc3MYByADKAgSFgoOc2VydmVyX3N1Y2Nlc3MYCCADKAgSOQoPcmVx",
- "dWVzdF9yZXN1bHRzGAkgAygLMiAuZ3JwYy50ZXN0aW5nLlJlcXVlc3RSZXN1",
- "bHRDb3VudCpBCgpDbGllbnRUeXBlEg8KC1NZTkNfQ0xJRU5UEAASEAoMQVNZ",
- "TkNfQ0xJRU5UEAESEAoMT1RIRVJfQ0xJRU5UEAIqWwoKU2VydmVyVHlwZRIP",
- "CgtTWU5DX1NFUlZFUhAAEhAKDEFTWU5DX1NFUlZFUhABEhgKFEFTWU5DX0dF",
- "TkVSSUNfU0VSVkVSEAISEAoMT1RIRVJfU0VSVkVSEAMqcgoHUnBjVHlwZRIJ",
- "CgVVTkFSWRAAEg0KCVNUUkVBTUlORxABEhkKFVNUUkVBTUlOR19GUk9NX0NM",
- "SUVOVBACEhkKFVNUUkVBTUlOR19GUk9NX1NFUlZFUhADEhcKE1NUUkVBTUlO",
- "R19CT1RIX1dBWVMQBGIGcHJvdG8z"));
+ "X2hvc3Rfb3ZlcnJpZGUYAiABKAkSEQoJY3JlZF90eXBlGAMgASgJIk0KCkNo",
+ "YW5uZWxBcmcSDAoEbmFtZRgBIAEoCRITCglzdHJfdmFsdWUYAiABKAlIABIT",
+ "CglpbnRfdmFsdWUYAyABKAVIAEIHCgV2YWx1ZSLVBAoMQ2xpZW50Q29uZmln",
+ "EhYKDnNlcnZlcl90YXJnZXRzGAEgAygJEi0KC2NsaWVudF90eXBlGAIgASgO",
+ "MhguZ3JwYy50ZXN0aW5nLkNsaWVudFR5cGUSNQoPc2VjdXJpdHlfcGFyYW1z",
+ "GAMgASgLMhwuZ3JwYy50ZXN0aW5nLlNlY3VyaXR5UGFyYW1zEiQKHG91dHN0",
+ "YW5kaW5nX3JwY3NfcGVyX2NoYW5uZWwYBCABKAUSFwoPY2xpZW50X2NoYW5u",
+ "ZWxzGAUgASgFEhwKFGFzeW5jX2NsaWVudF90aHJlYWRzGAcgASgFEicKCHJw",
+ "Y190eXBlGAggASgOMhUuZ3JwYy50ZXN0aW5nLlJwY1R5cGUSLQoLbG9hZF9w",
+ "YXJhbXMYCiABKAsyGC5ncnBjLnRlc3RpbmcuTG9hZFBhcmFtcxIzCg5wYXls",
+ "b2FkX2NvbmZpZxgLIAEoCzIbLmdycGMudGVzdGluZy5QYXlsb2FkQ29uZmln",
+ "EjcKEGhpc3RvZ3JhbV9wYXJhbXMYDCABKAsyHS5ncnBjLnRlc3RpbmcuSGlz",
+ "dG9ncmFtUGFyYW1zEhEKCWNvcmVfbGlzdBgNIAMoBRISCgpjb3JlX2xpbWl0",
+ "GA4gASgFEhgKEG90aGVyX2NsaWVudF9hcGkYDyABKAkSLgoMY2hhbm5lbF9h",
+ "cmdzGBAgAygLMhguZ3JwYy50ZXN0aW5nLkNoYW5uZWxBcmcSFgoOdGhyZWFk",
+ "c19wZXJfY3EYESABKAUSGwoTbWVzc2FnZXNfcGVyX3N0cmVhbRgSIAEoBSI4",
+ "CgxDbGllbnRTdGF0dXMSKAoFc3RhdHMYASABKAsyGS5ncnBjLnRlc3Rpbmcu",
+ "Q2xpZW50U3RhdHMiFQoETWFyaxINCgVyZXNldBgBIAEoCCJoCgpDbGllbnRB",
+ "cmdzEisKBXNldHVwGAEgASgLMhouZ3JwYy50ZXN0aW5nLkNsaWVudENvbmZp",
+ "Z0gAEiIKBG1hcmsYAiABKAsyEi5ncnBjLnRlc3RpbmcuTWFya0gAQgkKB2Fy",
+ "Z3R5cGUi/QIKDFNlcnZlckNvbmZpZxItCgtzZXJ2ZXJfdHlwZRgBIAEoDjIY",
+ "LmdycGMudGVzdGluZy5TZXJ2ZXJUeXBlEjUKD3NlY3VyaXR5X3BhcmFtcxgC",
+ "IAEoCzIcLmdycGMudGVzdGluZy5TZWN1cml0eVBhcmFtcxIMCgRwb3J0GAQg",
+ "ASgFEhwKFGFzeW5jX3NlcnZlcl90aHJlYWRzGAcgASgFEhIKCmNvcmVfbGlt",
+ "aXQYCCABKAUSMwoOcGF5bG9hZF9jb25maWcYCSABKAsyGy5ncnBjLnRlc3Rp",
+ "bmcuUGF5bG9hZENvbmZpZxIRCgljb3JlX2xpc3QYCiADKAUSGAoQb3RoZXJf",
+ "c2VydmVyX2FwaRgLIAEoCRIWCg50aHJlYWRzX3Blcl9jcRgMIAEoBRIcChNy",
+ "ZXNvdXJjZV9xdW90YV9zaXplGOkHIAEoBRIvCgxjaGFubmVsX2FyZ3MY6gcg",
+ "AygLMhguZ3JwYy50ZXN0aW5nLkNoYW5uZWxBcmciaAoKU2VydmVyQXJncxIr",
+ "CgVzZXR1cBgBIAEoCzIaLmdycGMudGVzdGluZy5TZXJ2ZXJDb25maWdIABIi",
+ "CgRtYXJrGAIgASgLMhIuZ3JwYy50ZXN0aW5nLk1hcmtIAEIJCgdhcmd0eXBl",
+ "IlUKDFNlcnZlclN0YXR1cxIoCgVzdGF0cxgBIAEoCzIZLmdycGMudGVzdGlu",
+ "Zy5TZXJ2ZXJTdGF0cxIMCgRwb3J0GAIgASgFEg0KBWNvcmVzGAMgASgFIg0K",
+ "C0NvcmVSZXF1ZXN0Ih0KDENvcmVSZXNwb25zZRINCgVjb3JlcxgBIAEoBSIG",
+ "CgRWb2lkIv0BCghTY2VuYXJpbxIMCgRuYW1lGAEgASgJEjEKDWNsaWVudF9j",
+ "b25maWcYAiABKAsyGi5ncnBjLnRlc3RpbmcuQ2xpZW50Q29uZmlnEhMKC251",
+ "bV9jbGllbnRzGAMgASgFEjEKDXNlcnZlcl9jb25maWcYBCABKAsyGi5ncnBj",
+ "LnRlc3RpbmcuU2VydmVyQ29uZmlnEhMKC251bV9zZXJ2ZXJzGAUgASgFEhYK",
+ "Dndhcm11cF9zZWNvbmRzGAYgASgFEhkKEWJlbmNobWFya19zZWNvbmRzGAcg",
+ "ASgFEiAKGHNwYXduX2xvY2FsX3dvcmtlcl9jb3VudBgIIAEoBSI2CglTY2Vu",
+ "YXJpb3MSKQoJc2NlbmFyaW9zGAEgAygLMhYuZ3JwYy50ZXN0aW5nLlNjZW5h",
+ "cmlvIoQEChVTY2VuYXJpb1Jlc3VsdFN1bW1hcnkSCwoDcXBzGAEgASgBEhsK",
+ "E3Fwc19wZXJfc2VydmVyX2NvcmUYAiABKAESGgoSc2VydmVyX3N5c3RlbV90",
+ "aW1lGAMgASgBEhgKEHNlcnZlcl91c2VyX3RpbWUYBCABKAESGgoSY2xpZW50",
+ "X3N5c3RlbV90aW1lGAUgASgBEhgKEGNsaWVudF91c2VyX3RpbWUYBiABKAES",
+ "EgoKbGF0ZW5jeV81MBgHIAEoARISCgpsYXRlbmN5XzkwGAggASgBEhIKCmxh",
+ "dGVuY3lfOTUYCSABKAESEgoKbGF0ZW5jeV85ORgKIAEoARITCgtsYXRlbmN5",
+ "Xzk5ORgLIAEoARIYChBzZXJ2ZXJfY3B1X3VzYWdlGAwgASgBEiYKHnN1Y2Nl",
+ "c3NmdWxfcmVxdWVzdHNfcGVyX3NlY29uZBgNIAEoARIiChpmYWlsZWRfcmVx",
+ "dWVzdHNfcGVyX3NlY29uZBgOIAEoARIgChhjbGllbnRfcG9sbHNfcGVyX3Jl",
+ "cXVlc3QYDyABKAESIAoYc2VydmVyX3BvbGxzX3Blcl9yZXF1ZXN0GBAgASgB",
+ "EiIKGnNlcnZlcl9xdWVyaWVzX3Blcl9jcHVfc2VjGBEgASgBEiIKGmNsaWVu",
+ "dF9xdWVyaWVzX3Blcl9jcHVfc2VjGBIgASgBIoMDCg5TY2VuYXJpb1Jlc3Vs",
+ "dBIoCghzY2VuYXJpbxgBIAEoCzIWLmdycGMudGVzdGluZy5TY2VuYXJpbxIu",
+ "CglsYXRlbmNpZXMYAiABKAsyGy5ncnBjLnRlc3RpbmcuSGlzdG9ncmFtRGF0",
+ "YRIvCgxjbGllbnRfc3RhdHMYAyADKAsyGS5ncnBjLnRlc3RpbmcuQ2xpZW50",
+ "U3RhdHMSLwoMc2VydmVyX3N0YXRzGAQgAygLMhkuZ3JwYy50ZXN0aW5nLlNl",
+ "cnZlclN0YXRzEhQKDHNlcnZlcl9jb3JlcxgFIAMoBRI0CgdzdW1tYXJ5GAYg",
+ "ASgLMiMuZ3JwYy50ZXN0aW5nLlNjZW5hcmlvUmVzdWx0U3VtbWFyeRIWCg5j",
+ "bGllbnRfc3VjY2VzcxgHIAMoCBIWCg5zZXJ2ZXJfc3VjY2VzcxgIIAMoCBI5",
+ "Cg9yZXF1ZXN0X3Jlc3VsdHMYCSADKAsyIC5ncnBjLnRlc3RpbmcuUmVxdWVz",
+ "dFJlc3VsdENvdW50KkEKCkNsaWVudFR5cGUSDwoLU1lOQ19DTElFTlQQABIQ",
+ "CgxBU1lOQ19DTElFTlQQARIQCgxPVEhFUl9DTElFTlQQAipbCgpTZXJ2ZXJU",
+ "eXBlEg8KC1NZTkNfU0VSVkVSEAASEAoMQVNZTkNfU0VSVkVSEAESGAoUQVNZ",
+ "TkNfR0VORVJJQ19TRVJWRVIQAhIQCgxPVEhFUl9TRVJWRVIQAypyCgdScGNU",
+ "eXBlEgkKBVVOQVJZEAASDQoJU1RSRUFNSU5HEAESGQoVU1RSRUFNSU5HX0ZS",
+ "T01fQ0xJRU5UEAISGQoVU1RSRUFNSU5HX0ZST01fU0VSVkVSEAMSFwoTU1RS",
+ "RUFNSU5HX0JPVEhfV0FZUxAEYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Grpc.Testing.PayloadsReflection.Descriptor, global::Grpc.Testing.StatsReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Grpc.Testing.ClientType), typeof(global::Grpc.Testing.ServerType), typeof(global::Grpc.Testing.RpcType), }, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.PoissonParams), global::Grpc.Testing.PoissonParams.Parser, new[]{ "OfferedLoad" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ClosedLoopParams), global::Grpc.Testing.ClosedLoopParams.Parser, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.LoadParams), global::Grpc.Testing.LoadParams.Parser, new[]{ "ClosedLoop", "Poisson" }, new[]{ "Load" }, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.SecurityParams), global::Grpc.Testing.SecurityParams.Parser, new[]{ "UseTestCa", "ServerHostOverride" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.SecurityParams), global::Grpc.Testing.SecurityParams.Parser, new[]{ "UseTestCa", "ServerHostOverride", "CredType" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ChannelArg), global::Grpc.Testing.ChannelArg.Parser, new[]{ "Name", "StrValue", "IntValue" }, new[]{ "Value" }, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ClientConfig), global::Grpc.Testing.ClientConfig.Parser, new[]{ "ServerTargets", "ClientType", "SecurityParams", "OutstandingRpcsPerChannel", "ClientChannels", "AsyncClientThreads", "RpcType", "LoadParams", "PayloadConfig", "HistogramParams", "CoreList", "CoreLimit", "OtherClientApi", "ChannelArgs", "ThreadsPerCq", "MessagesPerStream" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ClientStatus), global::Grpc.Testing.ClientStatus.Parser, new[]{ "Stats" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.Mark), global::Grpc.Testing.Mark.Parser, new[]{ "Reset" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ClientArgs), global::Grpc.Testing.ClientArgs.Parser, new[]{ "Setup", "Mark" }, new[]{ "Argtype" }, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ServerConfig), global::Grpc.Testing.ServerConfig.Parser, new[]{ "ServerType", "SecurityParams", "Port", "AsyncServerThreads", "CoreLimit", "PayloadConfig", "CoreList", "OtherServerApi", "ThreadsPerCq", "ResourceQuotaSize" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ServerConfig), global::Grpc.Testing.ServerConfig.Parser, new[]{ "ServerType", "SecurityParams", "Port", "AsyncServerThreads", "CoreLimit", "PayloadConfig", "CoreList", "OtherServerApi", "ThreadsPerCq", "ResourceQuotaSize", "ChannelArgs" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ServerArgs), global::Grpc.Testing.ServerArgs.Parser, new[]{ "Setup", "Mark" }, new[]{ "Argtype" }, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ServerStatus), global::Grpc.Testing.ServerStatus.Parser, new[]{ "Stats", "Port", "Cores" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.CoreRequest), global::Grpc.Testing.CoreRequest.Parser, null, null, null, null),
@@ -115,7 +118,7 @@ namespace Grpc.Testing {
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.Void), global::Grpc.Testing.Void.Parser, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.Scenario), global::Grpc.Testing.Scenario.Parser, new[]{ "Name", "ClientConfig", "NumClients", "ServerConfig", "NumServers", "WarmupSeconds", "BenchmarkSeconds", "SpawnLocalWorkerCount" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.Scenarios), global::Grpc.Testing.Scenarios.Parser, new[]{ "Scenarios_" }, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ScenarioResultSummary), global::Grpc.Testing.ScenarioResultSummary.Parser, new[]{ "Qps", "QpsPerServerCore", "ServerSystemTime", "ServerUserTime", "ClientSystemTime", "ClientUserTime", "Latency50", "Latency90", "Latency95", "Latency99", "Latency999", "ServerCpuUsage", "SuccessfulRequestsPerSecond", "FailedRequestsPerSecond", "ClientPollsPerRequest", "ServerPollsPerRequest" }, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ScenarioResultSummary), global::Grpc.Testing.ScenarioResultSummary.Parser, new[]{ "Qps", "QpsPerServerCore", "ServerSystemTime", "ServerUserTime", "ClientSystemTime", "ClientUserTime", "Latency50", "Latency90", "Latency95", "Latency99", "Latency999", "ServerCpuUsage", "SuccessfulRequestsPerSecond", "FailedRequestsPerSecond", "ClientPollsPerRequest", "ServerPollsPerRequest", "ServerQueriesPerCpuSec", "ClientQueriesPerCpuSec" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Grpc.Testing.ScenarioResult), global::Grpc.Testing.ScenarioResult.Parser, new[]{ "Scenario", "Latencies", "ClientStats", "ServerStats", "ServerCores", "Summary", "ClientSuccess", "ServerSuccess", "RequestResults" }, null, null, null)
}));
}
@@ -589,6 +592,7 @@ namespace Grpc.Testing {
public SecurityParams(SecurityParams other) : this() {
useTestCa_ = other.useTestCa_;
serverHostOverride_ = other.serverHostOverride_;
+ credType_ = other.credType_;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -618,6 +622,17 @@ namespace Grpc.Testing {
}
}
+ /// <summary>Field number for the "cred_type" field.</summary>
+ public const int CredTypeFieldNumber = 3;
+ private string credType_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public string CredType {
+ get { return credType_; }
+ set {
+ credType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as SecurityParams);
@@ -633,6 +648,7 @@ namespace Grpc.Testing {
}
if (UseTestCa != other.UseTestCa) return false;
if (ServerHostOverride != other.ServerHostOverride) return false;
+ if (CredType != other.CredType) return false;
return true;
}
@@ -641,6 +657,7 @@ namespace Grpc.Testing {
int hash = 1;
if (UseTestCa != false) hash ^= UseTestCa.GetHashCode();
if (ServerHostOverride.Length != 0) hash ^= ServerHostOverride.GetHashCode();
+ if (CredType.Length != 0) hash ^= CredType.GetHashCode();
return hash;
}
@@ -659,6 +676,10 @@ namespace Grpc.Testing {
output.WriteRawTag(18);
output.WriteString(ServerHostOverride);
}
+ if (CredType.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(CredType);
+ }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -670,6 +691,9 @@ namespace Grpc.Testing {
if (ServerHostOverride.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(ServerHostOverride);
}
+ if (CredType.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(CredType);
+ }
return size;
}
@@ -684,6 +708,9 @@ namespace Grpc.Testing {
if (other.ServerHostOverride.Length != 0) {
ServerHostOverride = other.ServerHostOverride;
}
+ if (other.CredType.Length != 0) {
+ CredType = other.CredType;
+ }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -702,6 +729,10 @@ namespace Grpc.Testing {
ServerHostOverride = input.ReadString();
break;
}
+ case 26: {
+ CredType = input.ReadString();
+ break;
+ }
}
}
}
@@ -1945,6 +1976,7 @@ namespace Grpc.Testing {
otherServerApi_ = other.otherServerApi_;
threadsPerCq_ = other.threadsPerCq_;
resourceQuotaSize_ = other.resourceQuotaSize_;
+ channelArgs_ = other.channelArgs_.Clone();
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2088,6 +2120,16 @@ namespace Grpc.Testing {
}
}
+ /// <summary>Field number for the "channel_args" field.</summary>
+ public const int ChannelArgsFieldNumber = 1002;
+ private static readonly pb::FieldCodec<global::Grpc.Testing.ChannelArg> _repeated_channelArgs_codec
+ = pb::FieldCodec.ForMessage(8018, global::Grpc.Testing.ChannelArg.Parser);
+ private readonly pbc::RepeatedField<global::Grpc.Testing.ChannelArg> channelArgs_ = new pbc::RepeatedField<global::Grpc.Testing.ChannelArg>();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField<global::Grpc.Testing.ChannelArg> ChannelArgs {
+ get { return channelArgs_; }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as ServerConfig);
@@ -2111,6 +2153,7 @@ namespace Grpc.Testing {
if (OtherServerApi != other.OtherServerApi) return false;
if (ThreadsPerCq != other.ThreadsPerCq) return false;
if (ResourceQuotaSize != other.ResourceQuotaSize) return false;
+ if(!channelArgs_.Equals(other.channelArgs_)) return false;
return true;
}
@@ -2127,6 +2170,7 @@ namespace Grpc.Testing {
if (OtherServerApi.Length != 0) hash ^= OtherServerApi.GetHashCode();
if (ThreadsPerCq != 0) hash ^= ThreadsPerCq.GetHashCode();
if (ResourceQuotaSize != 0) hash ^= ResourceQuotaSize.GetHashCode();
+ hash ^= channelArgs_.GetHashCode();
return hash;
}
@@ -2174,6 +2218,7 @@ namespace Grpc.Testing {
output.WriteRawTag(200, 62);
output.WriteInt32(ResourceQuotaSize);
}
+ channelArgs_.WriteTo(output, _repeated_channelArgs_codec);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2207,6 +2252,7 @@ namespace Grpc.Testing {
if (ResourceQuotaSize != 0) {
size += 2 + pb::CodedOutputStream.ComputeInt32Size(ResourceQuotaSize);
}
+ size += channelArgs_.CalculateSize(_repeated_channelArgs_codec);
return size;
}
@@ -2249,6 +2295,7 @@ namespace Grpc.Testing {
if (other.ResourceQuotaSize != 0) {
ResourceQuotaSize = other.ResourceQuotaSize;
}
+ channelArgs_.Add(other.channelArgs_);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -2306,6 +2353,10 @@ namespace Grpc.Testing {
ResourceQuotaSize = input.ReadInt32();
break;
}
+ case 8018: {
+ channelArgs_.AddEntriesFrom(input, _repeated_channelArgs_codec);
+ break;
+ }
}
}
}
@@ -3489,6 +3540,8 @@ namespace Grpc.Testing {
failedRequestsPerSecond_ = other.failedRequestsPerSecond_;
clientPollsPerRequest_ = other.clientPollsPerRequest_;
serverPollsPerRequest_ = other.serverPollsPerRequest_;
+ serverQueriesPerCpuSec_ = other.serverQueriesPerCpuSec_;
+ clientQueriesPerCpuSec_ = other.clientQueriesPerCpuSec_;
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -3702,6 +3755,31 @@ namespace Grpc.Testing {
}
}
+ /// <summary>Field number for the "server_queries_per_cpu_sec" field.</summary>
+ public const int ServerQueriesPerCpuSecFieldNumber = 17;
+ private double serverQueriesPerCpuSec_;
+ /// <summary>
+ /// Queries per CPU-sec over all servers or clients
+ /// </summary>
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double ServerQueriesPerCpuSec {
+ get { return serverQueriesPerCpuSec_; }
+ set {
+ serverQueriesPerCpuSec_ = value;
+ }
+ }
+
+ /// <summary>Field number for the "client_queries_per_cpu_sec" field.</summary>
+ public const int ClientQueriesPerCpuSecFieldNumber = 18;
+ private double clientQueriesPerCpuSec_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public double ClientQueriesPerCpuSec {
+ get { return clientQueriesPerCpuSec_; }
+ set {
+ clientQueriesPerCpuSec_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
public override bool Equals(object other) {
return Equals(other as ScenarioResultSummary);
@@ -3731,6 +3809,8 @@ namespace Grpc.Testing {
if (FailedRequestsPerSecond != other.FailedRequestsPerSecond) return false;
if (ClientPollsPerRequest != other.ClientPollsPerRequest) return false;
if (ServerPollsPerRequest != other.ServerPollsPerRequest) return false;
+ if (ServerQueriesPerCpuSec != other.ServerQueriesPerCpuSec) return false;
+ if (ClientQueriesPerCpuSec != other.ClientQueriesPerCpuSec) return false;
return true;
}
@@ -3753,6 +3833,8 @@ namespace Grpc.Testing {
if (FailedRequestsPerSecond != 0D) hash ^= FailedRequestsPerSecond.GetHashCode();
if (ClientPollsPerRequest != 0D) hash ^= ClientPollsPerRequest.GetHashCode();
if (ServerPollsPerRequest != 0D) hash ^= ServerPollsPerRequest.GetHashCode();
+ if (ServerQueriesPerCpuSec != 0D) hash ^= ServerQueriesPerCpuSec.GetHashCode();
+ if (ClientQueriesPerCpuSec != 0D) hash ^= ClientQueriesPerCpuSec.GetHashCode();
return hash;
}
@@ -3827,6 +3909,14 @@ namespace Grpc.Testing {
output.WriteRawTag(129, 1);
output.WriteDouble(ServerPollsPerRequest);
}
+ if (ServerQueriesPerCpuSec != 0D) {
+ output.WriteRawTag(137, 1);
+ output.WriteDouble(ServerQueriesPerCpuSec);
+ }
+ if (ClientQueriesPerCpuSec != 0D) {
+ output.WriteRawTag(145, 1);
+ output.WriteDouble(ClientQueriesPerCpuSec);
+ }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -3880,6 +3970,12 @@ namespace Grpc.Testing {
if (ServerPollsPerRequest != 0D) {
size += 2 + 8;
}
+ if (ServerQueriesPerCpuSec != 0D) {
+ size += 2 + 8;
+ }
+ if (ClientQueriesPerCpuSec != 0D) {
+ size += 2 + 8;
+ }
return size;
}
@@ -3936,6 +4032,12 @@ namespace Grpc.Testing {
if (other.ServerPollsPerRequest != 0D) {
ServerPollsPerRequest = other.ServerPollsPerRequest;
}
+ if (other.ServerQueriesPerCpuSec != 0D) {
+ ServerQueriesPerCpuSec = other.ServerQueriesPerCpuSec;
+ }
+ if (other.ClientQueriesPerCpuSec != 0D) {
+ ClientQueriesPerCpuSec = other.ClientQueriesPerCpuSec;
+ }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -4010,6 +4112,14 @@ namespace Grpc.Testing {
ServerPollsPerRequest = input.ReadDouble();
break;
}
+ case 137: {
+ ServerQueriesPerCpuSec = input.ReadDouble();
+ break;
+ }
+ case 145: {
+ ClientQueriesPerCpuSec = input.ReadDouble();
+ break;
+ }
}
}
}
diff --git a/src/csharp/Grpc.IntegrationTesting/CustomErrorDetailsTest.cs b/src/csharp/Grpc.IntegrationTesting/CustomErrorDetailsTest.cs
index 374c6fc23f..5d22d77ada 100644
--- a/src/csharp/Grpc.IntegrationTesting/CustomErrorDetailsTest.cs
+++ b/src/csharp/Grpc.IntegrationTesting/CustomErrorDetailsTest.cs
@@ -42,7 +42,7 @@ namespace Grpc.IntegrationTesting
Channel channel;
TestService.TestServiceClient client;
- [TestFixtureSetUp]
+ [OneTimeSetUp]
public void Init()
{
// Disable SO_REUSEPORT to prevent https://github.com/grpc/grpc/issues/10755
@@ -57,7 +57,7 @@ namespace Grpc.IntegrationTesting
client = new TestService.TestServiceClient(channel);
}
- [TestFixtureTearDown]
+ [OneTimeTearDown]
public void Cleanup()
{
channel.ShutdownAsync().Wait();
@@ -108,7 +108,7 @@ namespace Grpc.IntegrationTesting
private class CustomErrorDetailsTestServiceImpl : TestService.TestServiceBase
{
- public override async Task<SimpleResponse> UnaryCall(SimpleRequest request, ServerCallContext context)
+ public override Task<SimpleResponse> UnaryCall(SimpleRequest request, ServerCallContext context)
{
try
{
diff --git a/src/csharp/Grpc.IntegrationTesting/GeneratedServiceBaseTest.cs b/src/csharp/Grpc.IntegrationTesting/GeneratedServiceBaseTest.cs
index a97818a164..adeec05699 100644
--- a/src/csharp/Grpc.IntegrationTesting/GeneratedServiceBaseTest.cs
+++ b/src/csharp/Grpc.IntegrationTesting/GeneratedServiceBaseTest.cs
@@ -65,7 +65,7 @@ namespace Grpc.IntegrationTesting
}
[Test]
- public async Task UnimplementedByDefault_ClientStreaming()
+ public void UnimplementedByDefault_ClientStreaming()
{
var call = client.StreamingInputCall();
@@ -74,7 +74,7 @@ namespace Grpc.IntegrationTesting
}
[Test]
- public async Task UnimplementedByDefault_ServerStreamingCall()
+ public void UnimplementedByDefault_ServerStreamingCall()
{
var call = client.StreamingOutputCall(new StreamingOutputCallRequest());
@@ -83,7 +83,7 @@ namespace Grpc.IntegrationTesting
}
[Test]
- public async Task UnimplementedByDefault_DuplexStreamingCall()
+ public void UnimplementedByDefault_DuplexStreamingCall()
{
var call = client.FullDuplexCall();
diff --git a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
index 6f2f06a652..f5077fe0f7 100755
--- a/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
+++ b/src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.IntegrationTesting</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
index 4a28f24124..e0fc259f08 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs
@@ -38,7 +38,7 @@ namespace Grpc.IntegrationTesting
Channel channel;
TestService.TestServiceClient client;
- [TestFixtureSetUp]
+ [OneTimeSetUp]
public void Init()
{
// Disable SO_REUSEPORT to prevent https://github.com/grpc/grpc/issues/10755
@@ -58,7 +58,7 @@ namespace Grpc.IntegrationTesting
client = new TestService.TestServiceClient(channel);
}
- [TestFixtureTearDown]
+ [OneTimeTearDown]
public void Cleanup()
{
channel.ShutdownAsync().Wait();
diff --git a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
index bc32c56927..9a664f3539 100644
--- a/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/MetricsGrpc.cs
@@ -21,6 +21,7 @@
// Currently, 'Gauge' (i.e a metric that represents the measured value of
// something at an instant of time) is the only metric type supported by the
// service.
+#pragma warning disable 1591
#region Designer generated code
using System;
diff --git a/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs b/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs
index a766a5bba8..c5c92aa94a 100644
--- a/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs
+++ b/src/csharp/Grpc.IntegrationTesting/RunnerClientServerTest.cs
@@ -35,7 +35,7 @@ namespace Grpc.IntegrationTesting
{
IServerRunner serverRunner;
- [TestFixtureSetUp]
+ [OneTimeSetUp]
public void Init()
{
var serverConfig = new ServerConfig
@@ -45,7 +45,7 @@ namespace Grpc.IntegrationTesting
serverRunner = ServerRunners.CreateStarted(serverConfig);
}
- [TestFixtureTearDown]
+ [OneTimeTearDown]
public void Cleanup()
{
serverRunner.StopAsync().Wait();
diff --git a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
index bd5971e296..bfae4ee6ac 100644
--- a/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/ServicesGrpc.cs
@@ -17,6 +17,7 @@
//
// An integration test service that covers all the method signature permutations
// of unary/streaming requests/responses.
+#pragma warning disable 1591
#region Designer generated code
using System;
diff --git a/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs b/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs
index 974ed966e4..152d8feab9 100644
--- a/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs
+++ b/src/csharp/Grpc.IntegrationTesting/SslCredentialsTest.cs
@@ -41,7 +41,7 @@ namespace Grpc.IntegrationTesting
Channel channel;
TestService.TestServiceClient client;
- [TestFixtureSetUp]
+ [OneTimeSetUp]
public void Init()
{
var rootCert = File.ReadAllText(TestCredentials.ClientCertAuthorityPath);
@@ -69,7 +69,7 @@ namespace Grpc.IntegrationTesting
client = new TestService.TestServiceClient(channel);
}
- [TestFixtureTearDown]
+ [OneTimeTearDown]
public void Cleanup()
{
channel.ShutdownAsync().Wait();
@@ -94,15 +94,15 @@ namespace Grpc.IntegrationTesting
private class SslCredentialsTestServiceImpl : TestService.TestServiceBase
{
- public override async Task<SimpleResponse> UnaryCall(SimpleRequest request, ServerCallContext context)
+ public override Task<SimpleResponse> UnaryCall(SimpleRequest request, ServerCallContext context)
{
- return new SimpleResponse { Payload = CreateZerosPayload(request.ResponseSize) };
+ return Task.FromResult(new SimpleResponse { Payload = CreateZerosPayload(request.ResponseSize) });
}
public override async Task<StreamingInputCallResponse> StreamingInputCall(IAsyncStreamReader<StreamingInputCallRequest> requestStream, ServerCallContext context)
{
var authContext = context.AuthContext;
- await requestStream.ForEachAsync(async request => {});
+ await requestStream.ForEachAsync(request => TaskUtils.CompletedTask);
Assert.IsTrue(authContext.IsPeerAuthenticated);
Assert.AreEqual("x509_subject_alternative_name", authContext.PeerIdentityPropertyName);
diff --git a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
index b180d097bd..b419dd1702 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestGrpc.cs
@@ -18,6 +18,7 @@
// An integration test service that covers all the method signature permutations
// of unary/streaming requests/responses.
//
+#pragma warning disable 1591
#region Designer generated code
using System;
diff --git a/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs b/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs
index ad03351572..09725123d9 100644
--- a/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs
+++ b/src/csharp/Grpc.IntegrationTesting/TestServiceImpl.cs
@@ -63,9 +63,10 @@ namespace Grpc.Testing
await EnsureEchoMetadataAsync(context);
int sum = 0;
- await requestStream.ForEachAsync(async request =>
+ await requestStream.ForEachAsync(request =>
{
sum += request.Payload.Body.Length;
+ return TaskUtils.CompletedTask;
});
return new StreamingInputCallResponse { AggregatedPayloadSize = sum };
}
@@ -85,7 +86,7 @@ namespace Grpc.Testing
});
}
- public override async Task HalfDuplexCall(IAsyncStreamReader<StreamingOutputCallRequest> requestStream, IServerStreamWriter<StreamingOutputCallResponse> responseStream, ServerCallContext context)
+ public override Task HalfDuplexCall(IAsyncStreamReader<StreamingOutputCallRequest> requestStream, IServerStreamWriter<StreamingOutputCallResponse> responseStream, ServerCallContext context)
{
throw new NotImplementedException();
}
diff --git a/src/csharp/Grpc.Microbenchmarks/Grpc.Microbenchmarks.csproj b/src/csharp/Grpc.Microbenchmarks/Grpc.Microbenchmarks.csproj
index 26a940e488..17797e1e1e 100644
--- a/src/csharp/Grpc.Microbenchmarks/Grpc.Microbenchmarks.csproj
+++ b/src/csharp/Grpc.Microbenchmarks/Grpc.Microbenchmarks.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.Microbenchmarks</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Reflection.Tests/Grpc.Reflection.Tests.csproj b/src/csharp/Grpc.Reflection.Tests/Grpc.Reflection.Tests.csproj
index af6ade852b..cf756c68ad 100755
--- a/src/csharp/Grpc.Reflection.Tests/Grpc.Reflection.Tests.csproj
+++ b/src/csharp/Grpc.Reflection.Tests/Grpc.Reflection.Tests.csproj
@@ -10,6 +10,7 @@
<PackageId>Grpc.Reflection.Tests</PackageId>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45</PackageTargetFallback>
<RuntimeFrameworkVersion Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">1.0.4</RuntimeFrameworkVersion>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs b/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs
index 7e894edd31..76f8cfadcf 100644
--- a/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs
+++ b/src/csharp/Grpc.Reflection.Tests/ReflectionClientServerTest.cs
@@ -38,7 +38,7 @@ namespace Grpc.Reflection.Tests
ServerReflection.ServerReflectionClient client;
ReflectionServiceImpl serviceImpl;
- [TestFixtureSetUp]
+ [OneTimeSetUp]
public void Init()
{
serviceImpl = new ReflectionServiceImpl(ServerReflection.Descriptor);
@@ -55,7 +55,7 @@ namespace Grpc.Reflection.Tests
client = new ServerReflection.ServerReflectionClient(channel);
}
- [TestFixtureTearDown]
+ [OneTimeTearDown]
public void Cleanup()
{
channel.ShutdownAsync().Wait();
diff --git a/src/csharp/Grpc.Reflection/Grpc.Reflection.csproj b/src/csharp/Grpc.Reflection/Grpc.Reflection.csproj
index 929a78edcb..b77fd69aee 100755
--- a/src/csharp/Grpc.Reflection/Grpc.Reflection.csproj
+++ b/src/csharp/Grpc.Reflection/Grpc.Reflection.csproj
@@ -18,6 +18,7 @@
<IncludeSymbols>true</IncludeSymbols>
<IncludeSource>true</IncludeSource>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
+ <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
diff --git a/src/csharp/Grpc.Reflection/ReflectionGrpc.cs b/src/csharp/Grpc.Reflection/ReflectionGrpc.cs
index 0af76eefed..58439577e3 100644
--- a/src/csharp/Grpc.Reflection/ReflectionGrpc.cs
+++ b/src/csharp/Grpc.Reflection/ReflectionGrpc.cs
@@ -17,6 +17,7 @@
//
// Service exported by server reflection
//
+#pragma warning disable 1591
#region Designer generated code
using System;
diff --git a/src/csharp/Grpc.Reflection/ReflectionServiceImpl.cs b/src/csharp/Grpc.Reflection/ReflectionServiceImpl.cs
index 9f27a9491d..1eaf10bfb8 100644
--- a/src/csharp/Grpc.Reflection/ReflectionServiceImpl.cs
+++ b/src/csharp/Grpc.Reflection/ReflectionServiceImpl.cs
@@ -60,6 +60,9 @@ namespace Grpc.Reflection
{
}
+ /// <summary>
+ /// Processes a stream of server reflection requests.
+ /// </summary>
public override async Task ServerReflectionInfo(IAsyncStreamReader<ServerReflectionRequest> requestStream, IServerStreamWriter<ServerReflectionResponse> responseStream, ServerCallContext context)
{
while (await requestStream.MoveNext())
diff --git a/src/csharp/build_packages_dotnetcli.bat b/src/csharp/build_packages_dotnetcli.bat
index 4e3870d71d..c419d87049 100755
--- a/src/csharp/build_packages_dotnetcli.bat
+++ b/src/csharp/build_packages_dotnetcli.bat
@@ -13,7 +13,7 @@
@rem limitations under the License.
@rem Current package versions
-set VERSION=1.5.0-dev
+set VERSION=1.7.0-dev
@rem Adjust the location of nuget.exe
set NUGET=C:\nuget\nuget.exe
diff --git a/src/csharp/build_packages_dotnetcli.sh b/src/csharp/build_packages_dotnetcli.sh
index f259cdb1d5..124dfbb257 100755
--- a/src/csharp/build_packages_dotnetcli.sh
+++ b/src/csharp/build_packages_dotnetcli.sh
@@ -39,7 +39,7 @@ dotnet pack --configuration Release Grpc.Auth --output ../../../artifacts
dotnet pack --configuration Release Grpc.HealthCheck --output ../../../artifacts
dotnet pack --configuration Release Grpc.Reflection --output ../../../artifacts
-nuget pack Grpc.nuspec -Version "1.5.0-dev" -OutputDirectory ../../artifacts
-nuget pack Grpc.Tools.nuspec -Version "1.5.0-dev" -OutputDirectory ../../artifacts
+nuget pack Grpc.nuspec -Version "1.7.0-dev" -OutputDirectory ../../artifacts
+nuget pack Grpc.Tools.nuspec -Version "1.7.0-dev" -OutputDirectory ../../artifacts
(cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg)
diff --git a/src/csharp/global.json b/src/csharp/global.json
new file mode 100644
index 0000000000..e4b797ee8e
--- /dev/null
+++ b/src/csharp/global.json
@@ -0,0 +1,5 @@
+{
+ "sdk": {
+ "version": "1.0.0"
+ }
+}
diff --git a/src/node/health_check/package.json b/src/node/health_check/package.json
index 6aa41522cd..3c7d3707ee 100644
--- a/src/node/health_check/package.json
+++ b/src/node/health_check/package.json
@@ -1,6 +1,6 @@
{
"name": "grpc-health-check",
- "version": "1.5.0-dev",
+ "version": "1.7.0-dev",
"author": "Google Inc.",
"description": "Health check service for use with gRPC",
"repository": {
@@ -15,7 +15,7 @@
}
],
"dependencies": {
- "grpc": "^1.5.0-dev",
+ "grpc": "^1.7.0-dev",
"lodash": "^3.9.3",
"google-protobuf": "^3.0.0"
},
diff --git a/src/node/tools/package.json b/src/node/tools/package.json
index 0a3c32734c..d9b1fb86c9 100644
--- a/src/node/tools/package.json
+++ b/src/node/tools/package.json
@@ -1,6 +1,6 @@
{
"name": "grpc-tools",
- "version": "1.5.0-dev",
+ "version": "1.7.0-dev",
"author": "Google Inc.",
"description": "Tools for developing with gRPC on Node.js",
"homepage": "https://grpc.io/",
diff --git a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
index 345eecc279..3a282b0526 100644
--- a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
+++ b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
@@ -42,7 +42,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler-gRPCPlugin'
- v = '1.5.0-dev'
+ v = '1.7.0-dev'
s.version = v
s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
s.description = <<-DESC
diff --git a/src/objective-c/GRPCClient/private/version.h b/src/objective-c/GRPCClient/private/version.h
index d9cb3881e1..843954e84a 100644
--- a/src/objective-c/GRPCClient/private/version.h
+++ b/src/objective-c/GRPCClient/private/version.h
@@ -23,4 +23,4 @@
// `tools/buildgen/generate_projects.sh`.
-#define GRPC_OBJC_VERSION_STRING @"1.5.0-dev"
+#define GRPC_OBJC_VERSION_STRING @"1.7.0-dev"
diff --git a/src/objective-c/tests/build_one_example.sh b/src/objective-c/tests/build_one_example.sh
index 298d8e7043..985d55f3cc 100755
--- a/src/objective-c/tests/build_one_example.sh
+++ b/src/objective-c/tests/build_one_example.sh
@@ -37,11 +37,11 @@ rm -f Podfile.lock
pod install
set -o pipefail
-XCODEBUILD_FILTER='(^===|^\*\*|\bfatal\b|\berror\b|\bwarning\b|\bfail|\bpassed\b)'
+XCODEBUILD_FILTER='(^CompileC |^Ld |^.*clang |^ *cd |^ *export |^Libtool |^.*libtool |^CpHeader |^ *builtin-copy )'
xcodebuild \
build \
-workspace *.xcworkspace \
-scheme $SCHEME \
-destination name="iPhone 6" \
- | egrep "$XCODEBUILD_FILTER" \
- | egrep -v "(GPBDictionary|GPBArray)" -
+ | egrep -v "$XCODEBUILD_FILTER" \
+ | egrep -v "^$" -
diff --git a/src/objective-c/tests/run_tests.sh b/src/objective-c/tests/run_tests.sh
index 8843edaede..5b7a2d104a 100755
--- a/src/objective-c/tests/run_tests.sh
+++ b/src/objective-c/tests/run_tests.sh
@@ -38,7 +38,7 @@ trap 'kill -9 `jobs -p` ; echo "EXIT TIME: $(date)"' EXIT
# element of the pipe fails.
# TODO(jcanizales): Use xctool instead? Issue #2540.
set -o pipefail
-XCODEBUILD_FILTER='(^===|^\*\*|\bfatal\b|\berror\b|\bwarning\b|\bfail|\bpassed\b)'
+XCODEBUILD_FILTER='(^CompileC |^Ld |^.*clang |^ *cd |^ *export |^Libtool |^.*libtool |^CpHeader |^ *builtin-copy )'
echo "TIME: $(date)"
xcodebuild \
-workspace Tests.xcworkspace \
@@ -48,8 +48,8 @@ xcodebuild \
HOST_PORT_LOCAL=localhost:5050 \
HOST_PORT_REMOTE=grpc-test.sandbox.googleapis.com \
test \
- | egrep "$XCODEBUILD_FILTER" \
- | egrep -v "(GPBDictionary|GPBArray)" -
+ | egrep -v "$XCODEBUILD_FILTER" \
+ | egrep -v '^$' -
echo "TIME: $(date)"
xcodebuild \
@@ -60,16 +60,12 @@ xcodebuild \
| egrep "$XCODEBUILD_FILTER" \
| egrep -v "(GPBDictionary|GPBArray)" -
-# Temporarily disabled for (possible) flakiness on Jenkins.
-# Fix or reenable after confirmation/disconfirmation that it is the source of
-# Jenkins problem.
-
-# echo "TIME: $(date)"
-# xcodebuild \
-# -workspace Tests.xcworkspace \
-# -scheme CronetUnitTests \
-# -destination name="iPhone 6" \
-# test | xcpretty
+echo "TIME: $(date)"
+xcodebuild \
+ -workspace Tests.xcworkspace \
+ -scheme CronetUnitTests \
+ -destination name="iPhone 6" \
+ test | xcpretty
echo "TIME: $(date)"
xcodebuild \
diff --git a/src/php/composer.json b/src/php/composer.json
index c6a74c5c84..3606a18f34 100644
--- a/src/php/composer.json
+++ b/src/php/composer.json
@@ -2,7 +2,7 @@
"name": "grpc/grpc-dev",
"description": "gRPC library for PHP - for Developement use only",
"license": "Apache-2.0",
- "version": "1.5.0",
+ "version": "1.7.0",
"require": {
"php": ">=5.5.0",
"google/protobuf": "^v3.3.0"
diff --git a/src/php/ext/grpc/version.h b/src/php/ext/grpc/version.h
index 744028b2ca..07d8eee7fe 100644
--- a/src/php/ext/grpc/version.h
+++ b/src/php/ext/grpc/version.h
@@ -20,6 +20,6 @@
#ifndef VERSION_H
#define VERSION_H
-#define PHP_GRPC_VERSION "1.5.0dev"
+#define PHP_GRPC_VERSION "1.7.0dev"
#endif /* VERSION_H */
diff --git a/src/php/lib/Grpc/ServerStreamingCall.php b/src/php/lib/Grpc/ServerStreamingCall.php
index 269a99ab59..f8fddfea01 100644
--- a/src/php/lib/Grpc/ServerStreamingCall.php
+++ b/src/php/lib/Grpc/ServerStreamingCall.php
@@ -40,13 +40,11 @@ class ServerStreamingCall extends AbstractCall
if (array_key_exists('flags', $options)) {
$message_array['flags'] = $options['flags'];
}
- $event = $this->call->startBatch([
+ $this->call->startBatch([
OP_SEND_INITIAL_METADATA => $metadata,
- OP_RECV_INITIAL_METADATA => true,
OP_SEND_MESSAGE => $message_array,
OP_SEND_CLOSE_FROM_CLIENT => true,
]);
- $this->metadata = $event->metadata;
}
/**
@@ -54,9 +52,15 @@ class ServerStreamingCall extends AbstractCall
*/
public function responses()
{
- $response = $this->call->startBatch([
- OP_RECV_MESSAGE => true,
- ])->message;
+ $batch = [OP_RECV_MESSAGE => true];
+ if ($this->metadata === null) {
+ $batch[OP_RECV_INITIAL_METADATA] = true;
+ }
+ $read_event = $this->call->startBatch($batch);
+ if ($this->metadata === null) {
+ $this->metadata = $read_event->metadata;
+ }
+ $response = $read_event->message;
while ($response !== null) {
yield $this->_deserializeResponse($response);
$response = $this->call->startBatch([
@@ -81,4 +85,16 @@ class ServerStreamingCall extends AbstractCall
return $status_event->status;
}
+
+ /**
+ * @return mixed The metadata sent by the server
+ */
+ public function getMetadata()
+ {
+ if ($this->metadata === null) {
+ $event = $this->call->startBatch([OP_RECV_INITIAL_METADATA => true]);
+ $this->metadata = $event->metadata;
+ }
+ return $this->metadata;
+ }
}
diff --git a/src/php/lib/Grpc/UnaryCall.php b/src/php/lib/Grpc/UnaryCall.php
index dd55d02165..e8496492b8 100644
--- a/src/php/lib/Grpc/UnaryCall.php
+++ b/src/php/lib/Grpc/UnaryCall.php
@@ -40,13 +40,11 @@ class UnaryCall extends AbstractCall
if (isset($options['flags'])) {
$message_array['flags'] = $options['flags'];
}
- $event = $this->call->startBatch([
+ $this->call->startBatch([
OP_SEND_INITIAL_METADATA => $metadata,
- OP_RECV_INITIAL_METADATA => true,
OP_SEND_MESSAGE => $message_array,
OP_SEND_CLOSE_FROM_CLIENT => true,
]);
- $this->metadata = $event->metadata;
}
/**
@@ -56,14 +54,32 @@ class UnaryCall extends AbstractCall
*/
public function wait()
{
- $event = $this->call->startBatch([
+ $batch = [
OP_RECV_MESSAGE => true,
OP_RECV_STATUS_ON_CLIENT => true,
- ]);
-
+ ];
+ if ($this->metadata === null) {
+ $batch[OP_RECV_INITIAL_METADATA] = true;
+ }
+ $event = $this->call->startBatch($batch);
+ if ($this->metadata === null) {
+ $this->metadata = $event->metadata;
+ }
$status = $event->status;
$this->trailing_metadata = $status->metadata;
return [$this->_deserializeResponse($event->message), $status];
}
+
+ /**
+ * @return mixed The metadata sent by the server
+ */
+ public function getMetadata()
+ {
+ if ($this->metadata === null) {
+ $event = $this->call->startBatch([OP_RECV_INITIAL_METADATA => true]);
+ $this->metadata = $event->metadata;
+ }
+ return $this->metadata;
+ }
}
diff --git a/src/python/grpcio/grpc/_grpcio_metadata.py b/src/python/grpcio/grpc/_grpcio_metadata.py
index dcb46459a2..a4eb358c4e 100644
--- a/src/python/grpcio/grpc/_grpcio_metadata.py
+++ b/src/python/grpcio/grpc/_grpcio_metadata.py
@@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
-__version__ = """1.5.0.dev0"""
+__version__ = """1.7.0.dev0"""
diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py
index 1bbd1e149e..3194a893d7 100644
--- a/src/python/grpcio/grpc_version.py
+++ b/src/python/grpcio/grpc_version.py
@@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
-VERSION='1.5.0.dev0'
+VERSION='1.7.0.dev0'
diff --git a/src/python/grpcio_health_checking/grpc_version.py b/src/python/grpcio_health_checking/grpc_version.py
index 8aa5118f39..ef68bad17a 100644
--- a/src/python/grpcio_health_checking/grpc_version.py
+++ b/src/python/grpcio_health_checking/grpc_version.py
@@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
-VERSION='1.5.0.dev0'
+VERSION='1.7.0.dev0'
diff --git a/src/python/grpcio_reflection/grpc_version.py b/src/python/grpcio_reflection/grpc_version.py
index a23b9b5edb..55ab959cc5 100644
--- a/src/python/grpcio_reflection/grpc_version.py
+++ b/src/python/grpcio_reflection/grpc_version.py
@@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
-VERSION='1.5.0.dev0'
+VERSION='1.7.0.dev0'
diff --git a/src/python/grpcio_tests/grpc_version.py b/src/python/grpcio_tests/grpc_version.py
index fd47b426ac..9e54dc9f75 100644
--- a/src/python/grpcio_tests/grpc_version.py
+++ b/src/python/grpcio_tests/grpc_version.py
@@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
-VERSION='1.5.0.dev0'
+VERSION='1.7.0.dev0'
diff --git a/src/ruby/lib/grpc/generic/rpc_desc.rb b/src/ruby/lib/grpc/generic/rpc_desc.rb
index 89cf8ff6a0..6fb6c412fb 100644
--- a/src/ruby/lib/grpc/generic/rpc_desc.rb
+++ b/src/ruby/lib/grpc/generic/rpc_desc.rb
@@ -99,9 +99,13 @@ module GRPC
# event. Send a status of deadline exceeded
GRPC.logger.warn("late call: #{active_call}")
send_status(active_call, DEADLINE_EXCEEDED, 'late')
- rescue StandardError => e
+ rescue StandardError, NotImplementedError => e
# This will usuaally be an unhandled error in the handling code.
# Send back a UNKNOWN status to the client
+ #
+ # Note: this intentionally does not map NotImplementedError to
+ # UNIMPLEMENTED because NotImplementedError is intended for low-level
+ # OS interaction (e.g. syscalls) not supported by the current OS.
GRPC.logger.warn("failed handler: #{active_call}; sending status:UNKNOWN")
GRPC.logger.warn(e)
send_status(active_call, UNKNOWN, "#{e.class}: #{e.message}")
diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb
index 0aaf44947a..228c01a92c 100644
--- a/src/ruby/lib/grpc/version.rb
+++ b/src/ruby/lib/grpc/version.rb
@@ -14,5 +14,5 @@
# GRPC contains the General RPC module.
module GRPC
- VERSION = '1.5.0.dev'
+ VERSION = '1.7.0.dev'
end
diff --git a/src/ruby/spec/generic/rpc_desc_spec.rb b/src/ruby/spec/generic/rpc_desc_spec.rb
index be578c40d3..6852b9804f 100644
--- a/src/ruby/spec/generic/rpc_desc_spec.rb
+++ b/src/ruby/spec/generic/rpc_desc_spec.rb
@@ -52,6 +52,13 @@ describe GRPC::RpcDesc do
this_desc.run_server_method(@call, method(:other_error))
end
+ it 'sends status UNKNOWN if NotImplementedErrors are raised' do
+ expect(@call).to receive(:read_unary_request).once.and_return(Object.new)
+ expect(@call).to receive(:send_status).once.with(
+ UNKNOWN, not_implemented_error_msg, false, metadata: {})
+ this_desc.run_server_method(@call, method(:not_implemented))
+ end
+
it 'absorbs CallError with no further action' do
expect(@call).to receive(:read_unary_request).once.and_raise(CallError)
blk = proc do
@@ -102,6 +109,12 @@ describe GRPC::RpcDesc do
@client_streamer.run_server_method(@call, method(:other_error_alt))
end
+ it 'sends status UNKNOWN if NotImplementedErrors are raised' do
+ expect(@call).to receive(:send_status).once.with(
+ UNKNOWN, not_implemented_error_msg, false, metadata: {})
+ @client_streamer.run_server_method(@call, method(:not_implemented_alt))
+ end
+
it 'absorbs CallError with no further action' do
expect(@call).to receive(:server_unary_response).once.and_raise(
CallError)
@@ -166,6 +179,14 @@ describe GRPC::RpcDesc do
@bidi_streamer.run_server_method(@call, method(:other_error_alt))
end
+ it 'sends status UNKNOWN if NotImplementedErrors are raised' do
+ expect(@call).to receive(:run_server_bidi).and_raise(
+ not_implemented_error)
+ expect(@call).to receive(:send_status).once.with(
+ UNKNOWN, not_implemented_error_msg, false, metadata: {})
+ @bidi_streamer.run_server_method(@call, method(:not_implemented_alt))
+ end
+
it 'closes the stream if there no errors' do
expect(@call).to receive(:run_server_bidi)
expect(@call).to receive(:output_metadata).and_return(fake_md)
@@ -329,8 +350,25 @@ describe GRPC::RpcDesc do
fail(ArgumentError, 'other error')
end
+ def not_implemented(_req, _call)
+ fail not_implemented_error
+ end
+
+ def not_implemented_alt(_call)
+ fail not_implemented_error
+ end
+
def arg_error_msg(error = nil)
error ||= ArgumentError.new('other error')
"#{error.class}: #{error.message}"
end
+
+ def not_implemented_error
+ NotImplementedError.new('some OS feature not implemented')
+ end
+
+ def not_implemented_error_msg(error = nil)
+ error ||= not_implemented_error
+ "#{error.class}: #{error.message}"
+ end
end
diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb
index 4c5293241d..ea0c4ae56c 100644
--- a/src/ruby/tools/version.rb
+++ b/src/ruby/tools/version.rb
@@ -14,6 +14,6 @@
module GRPC
module Tools
- VERSION = '1.5.0.dev'
+ VERSION = '1.7.0.dev'
end
end
diff --git a/templates/gRPC-Core.podspec.template b/templates/gRPC-Core.podspec.template
index cfc13cf4dd..616f2cbbff 100644
--- a/templates/gRPC-Core.podspec.template
+++ b/templates/gRPC-Core.podspec.template
@@ -178,4 +178,9 @@
'test/core/util/port.c',
'test/core/util/port_server_client.{c,h}'
end
+
+ # TODO (mxyan): Instead of this hack, add include path "third_party" to C core's include path?
+ s.prepare_command = <<-END_OF_COMMAND
+ find src/core/ -type f -exec sed -E -i '.back' 's;#include "third_party/nanopb/(.*)";#include <nanopb/\\1>;g' {} \\\;
+ END_OF_COMMAND
end
diff --git a/templates/grpc.gyp.template b/templates/grpc.gyp.template
new file mode 100644
index 0000000000..3363082a83
--- /dev/null
+++ b/templates/grpc.gyp.template
@@ -0,0 +1,157 @@
+%YAML 1.2
+--- |
+ # GRPC GYP build file
+
+ # This file has been automatically generated from a template file.
+ # Please look at the templates directory instead.
+ # This file can be regenerated from the template by running
+ # tools/buildgen/generate_projects.sh
+
+ # Copyright 2015 gRPC authors.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License");
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ # http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+
+ {
+ 'variables': {
+ # The openssl and zlib dependencies must be passed in as variables
+ # defined in an included gypi file, usually common.gypi.
+ 'openssl_gyp_target%': 'Please Define openssl_gyp_target variable',
+ 'zlib_gyp_target%': 'Please Define zlib_gyp_target variable',
+
+ 'grpc_gcov%': 'false',
+ 'grpc_alpine%': 'false',
+ },
+ 'target_defaults': {
+ 'configurations': {
+ % for name, args in configs.iteritems():
+ % if name in ['dbg', 'opt']:
+ '${{'dbg':'Debug', 'opt': 'Release'}[name]}': {
+ % for arg, prop in [('CPPFLAGS', 'cflags'), ('DEFINES', 'defines')]:
+ % if args.get(arg, None) is not None:
+ '${prop}': [
+ % for item in args.get(arg).split():
+ '${item}',
+ % endfor
+ ],
+ % endif
+ % endfor
+ },
+ % endif
+ % endfor
+ },
+ % for arg, prop in [('CPPFLAGS', 'cflags'), ('LDFLAGS', 'ldflags')]:
+ % if defaults['global'].get(arg, None) is not None:
+ '${prop}': [
+ % for item in defaults['global'].get(arg).split():
+ '${item}',
+ % endfor
+ ],
+ % endif
+ % endfor
+ 'cflags_c': [
+ '-Werror',
+ '-std=c99'
+ ],
+ 'cflags_cc': [
+ '-Werror',
+ '-std=c++11'
+ ],
+ 'include_dirs': [
+ '.',
+ '../..',
+ 'include',
+ ],
+ 'defines': [
+ 'GRPC_ARES=0',
+ ],
+ 'dependencies': [
+ '<(openssl_gyp_target)',
+ '<(zlib_gyp_target)',
+ ],
+ 'conditions': [
+ ['grpc_gcov=="true"', {
+ % for arg, prop in [('CPPFLAGS', 'cflags'), ('DEFINES', 'defines'), ('LDFLAGS', 'ldflags')]:
+ % if configs['gcov'].get(arg, None) is not None:
+ '${prop}': [
+ % for item in configs['gcov'].get(arg).split():
+ '${item}',
+ % endfor
+ ],
+ % endif
+ % endfor
+ }],
+ ['grpc_alpine=="true"', {
+ 'defines': [
+ 'GPR_MUSL_LIBC_COMPAT'
+ ]
+ }],
+ ['OS == "win"', {
+ 'defines': [
+ '_WIN32_WINNT=0x0600',
+ 'WIN32_LEAN_AND_MEAN',
+ '_HAS_EXCEPTIONS=0',
+ 'UNICODE',
+ '_UNICODE',
+ 'NOMINMAX',
+ ],
+ 'msvs_settings': {
+ 'VCCLCompilerTool': {
+ 'RuntimeLibrary': 1, # static debug
+ }
+ },
+ "libraries": [
+ "ws2_32"
+ ]
+ }],
+ ['OS == "mac"', {
+ 'xcode_settings': {
+ % if defaults['global'].get('CPPFLAGS', None) is not None:
+ 'OTHER_CFLAGS': [
+ % for item in defaults['global'].get('CPPFLAGS').split():
+ '${item}',
+ % endfor
+ ],
+ 'OTHER_CPLUSPLUSFLAGS': [
+ % for item in defaults['global'].get('CPPFLAGS').split():
+ '${item}',
+ % endfor
+ '-stdlib=libc++',
+ '-std=c++11',
+ '-Wno-error=deprecated-declarations'
+ ],
+ % endif
+ },
+ }]
+ ]
+ },
+ 'targets': [
+ % for lib in libs:
+ % if getattr(lib, 'platforms', None) is None and lib.name != 'ares':
+ {
+ 'target_name': '${lib.name}',
+ 'type': 'static_library',
+ 'dependencies': [
+ % for dep in getattr(lib, 'deps', []):
+ '${dep}',
+ % endfor
+ ],
+ 'sources': [
+ % for source in lib.src:
+ '${source}',
+ % endfor
+ ],
+ },
+ % endif
+ % endfor
+ ]
+ }
diff --git a/test/core/end2end/tests/streaming_error_response.c b/test/core/end2end/tests/streaming_error_response.c
index fd8fa7ff6c..9d562b9090 100644
--- a/test/core/end2end/tests/streaming_error_response.c
+++ b/test/core/end2end/tests/streaming_error_response.c
@@ -185,6 +185,19 @@ static void test(grpc_end2end_test_config config, bool request_status_early) {
CQ_EXPECT_COMPLETION(cqv, tag(103), 1);
cq_verify(cqv);
+ if (!request_status_early) {
+ memset(ops, 0, sizeof(ops));
+ op = ops;
+ op->op = GRPC_OP_RECV_MESSAGE;
+ op->data.recv_message.recv_message = &response_payload2_recv;
+ op++;
+ error = grpc_call_start_batch(c, ops, (size_t)(op - ops), tag(2), NULL);
+ GPR_ASSERT(GRPC_CALL_OK == error);
+
+ CQ_EXPECT_COMPLETION(cqv, tag(2), 1);
+ cq_verify(cqv);
+ }
+
memset(ops, 0, sizeof(ops));
op = ops;
op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
@@ -199,21 +212,9 @@ static void test(grpc_end2end_test_config config, bool request_status_early) {
error = grpc_call_start_batch(s, ops, (size_t)(op - ops), tag(104), NULL);
GPR_ASSERT(GRPC_CALL_OK == error);
- if (!request_status_early) {
- memset(ops, 0, sizeof(ops));
- op = ops;
- op->op = GRPC_OP_RECV_MESSAGE;
- op->data.recv_message.recv_message = &response_payload2_recv;
- op++;
- error = grpc_call_start_batch(c, ops, (size_t)(op - ops), tag(2), NULL);
- GPR_ASSERT(GRPC_CALL_OK == error);
- }
-
CQ_EXPECT_COMPLETION(cqv, tag(104), 1);
if (request_status_early) {
CQ_EXPECT_COMPLETION(cqv, tag(1), 1);
- } else {
- CQ_EXPECT_COMPLETION(cqv, tag(2), 1);
}
cq_verify(cqv);
diff --git a/test/core/transport/bdp_estimator_test.c b/test/core/transport/bdp_estimator_test.c
index e2612c7718..dda48f45b1 100644
--- a/test/core/transport/bdp_estimator_test.c
+++ b/test/core/transport/bdp_estimator_test.c
@@ -43,12 +43,13 @@ static void test_get_estimate_no_samples(void) {
static void add_samples(grpc_bdp_estimator *estimator, int64_t *samples,
size_t n) {
- GPR_ASSERT(grpc_bdp_estimator_add_incoming_bytes(estimator, 1234567) == true);
+ grpc_bdp_estimator_add_incoming_bytes(estimator, 1234567);
+ GPR_ASSERT(grpc_bdp_estimator_need_ping(estimator) == true);
grpc_bdp_estimator_schedule_ping(estimator);
grpc_bdp_estimator_start_ping(estimator);
for (size_t i = 0; i < n; i++) {
- GPR_ASSERT(grpc_bdp_estimator_add_incoming_bytes(estimator, samples[i]) ==
- false);
+ grpc_bdp_estimator_add_incoming_bytes(estimator, samples[i]);
+ GPR_ASSERT(grpc_bdp_estimator_need_ping(estimator) == false);
}
gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
gpr_time_from_millis(1, GPR_TIMESPAN)));
diff --git a/third_party/protobuf b/third_party/protobuf
-Subproject 97d50e306e576dadf2184e643b7c934da45730c
+Subproject 80a37e0782d2d702d52234b62dd4b9ec74fd2c9
diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py
index 3bad859f7d..a4178a58c1 100644
--- a/tools/distrib/python/grpcio_tools/grpc_version.py
+++ b/tools/distrib/python/grpcio_tools/grpc_version.py
@@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
-VERSION='1.5.0.dev0'
+VERSION='1.7.0.dev0'
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 589ef1c328..b83e581e06 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.5.0-dev
+PROJECT_NUMBER = 1.7.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 7290f20c86..67dfb067aa 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 1.5.0-dev
+PROJECT_NUMBER = 1.7.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/tools/flakes/detect_flakes.py b/tools/flakes/detect_flakes.py
index 32899074da..2aff4c0872 100644
--- a/tools/flakes/detect_flakes.py
+++ b/tools/flakes/detect_flakes.py
@@ -68,10 +68,13 @@ ORDER BY timestamp desc
query_job = big_query_utils.sync_query_job(bq, 'grpc-testing', query)
page = bq.jobs().getQueryResults(
pageToken=None, **query_job['jobReference']).execute(num_retries=3)
- testname_to_cols = {row['f'][0]['v']:
- (row['f'][1]['v'], row['f'][2]['v'], row['f'][3]['v'])
- for row in page['rows']}
- return testname_to_cols
+ rows = page.get('rows')
+ if rows:
+ return {row['f'][0]['v']:
+ (row['f'][1]['v'], row['f'][2]['v'], row['f'][3]['v'])
+ for row in rows}
+ else:
+ return {}
def get_new_flakes():
@@ -91,6 +94,8 @@ def main():
if new_flakes:
print("Found {} new flakes:".format(len(new_flakes)))
print_table(new_flakes)
+ else:
+ print("No new flakes found!")
if __name__ == '__main__':
diff --git a/tools/internal_ci/helper_scripts/prepare_build_macos_rc b/tools/internal_ci/helper_scripts/prepare_build_macos_rc
index b48040f5e2..bd250957f4 100644
--- a/tools/internal_ci/helper_scripts/prepare_build_macos_rc
+++ b/tools/internal_ci/helper_scripts/prepare_build_macos_rc
@@ -55,6 +55,7 @@ pod repo update # needed by python
brew install coreutils # we need grealpath
sudo pip install virtualenv
sudo pip install -U six tox setuptools
+export PYTHONPATH=/Library/Python/3.4/site-packages
# python 3.4
wget -q https://www.python.org/ftp/python/3.4.4/python-3.4.4-macosx10.6.pkg
diff --git a/tools/run_tests/run_performance_tests.py b/tools/run_tests/run_performance_tests.py
index 78d1079c15..0db5e4ef83 100755
--- a/tools/run_tests/run_performance_tests.py
+++ b/tools/run_tests/run_performance_tests.py
@@ -87,7 +87,7 @@ def create_qpsworker_job(language, shortname=None, port=10000, remote_host=None,
user_at_host = '%s@%s' % (_REMOTE_HOST_USERNAME, remote_host)
ssh_cmd = ['ssh']
cmdline = ['timeout', '%s' % (worker_timeout + 30)] + cmdline
- ssh_cmd.extend([str(user_at_host), 'cd ~/performance_workspace/grpc/ && tools/run_tests/start_port_server.py && %s' % ' '.join(cmdline)])
+ ssh_cmd.extend([str(user_at_host), 'cd ~/performance_workspace/grpc/ && python tools/run_tests/start_port_server.py && %s' % ' '.join(cmdline)])
cmdline = ssh_cmd
jobspec = jobset.JobSpec(
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index a695a62827..e8a4be3343 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -63,8 +63,8 @@ _FORCE_ENVIRON_FOR_WRAPPERS = {
}
_POLLING_STRATEGIES = {
- 'linux': ['epollsig', 'poll', 'poll-cv'],
-# TODO(ctiller, sreecha): enable epoll1, epollex, epoll-thread-pool
+ 'linux': ['epollsig', 'epoll1', 'poll', 'poll-cv'],
+# TODO(ctiller, sreecha): enable epollex, epoll-thread-pool
'mac': ['poll'],
}
@@ -84,6 +84,7 @@ SELECT
[grpc-testing:jenkins_test_results.aggregate_results]
WHERE
timestamp >= DATE_ADD(CURRENT_DATE(), -1, "WEEK")
+ AND platform = '"""+platform_string()+"""'
AND NOT REGEXP_MATCH(job_name, '.*portability.*') )
GROUP BY
filtered_test_name
@@ -1267,18 +1268,22 @@ argp.add_argument('--quiet_success',
'Useful when running many iterations of each test (argument -n).')
argp.add_argument('--force_default_poller', default=False, action='store_const', const=True,
help='Don\'t try to iterate over many polling strategies when they exist')
+argp.add_argument('--force_use_pollers', default=None, type=str,
+ help='Only use the specified comma-delimited list of polling engines. '
+ 'Example: --force_use_pollers epollsig,poll '
+ ' (This flag has no effect if --force_default_poller flag is also used)')
argp.add_argument('--max_time', default=-1, type=int, help='Maximum test runtime in seconds')
argp.add_argument('--bq_result_table',
default='',
type=str,
nargs='?',
help='Upload test results to a specified BQ table.')
-argp.add_argument('--auto_set_flakes', default=True, type=bool,
- help='Set flakiness data from historic data')
+argp.add_argument('--disable_auto_set_flakes', default=False, const=True, action='store_const',
+ help='Disable rerunning historically flaky tests')
args = argp.parse_args()
flaky_tests = set()
-if args.auto_set_flakes:
+if not args.disable_auto_set_flakes:
try:
flaky_tests = set(get_flaky_tests())
except:
@@ -1286,6 +1291,8 @@ if args.auto_set_flakes:
if args.force_default_poller:
_POLLING_STRATEGIES = {}
+elif args.force_use_pollers:
+ _POLLING_STRATEGIES[platform_string()] = args.force_use_pollers.split(',')
jobset.measure_cpu_costs = args.measure_cpu_costs
diff --git a/tools/run_tests/run_tests_matrix.py b/tools/run_tests/run_tests_matrix.py
index 6fe1609f1c..04e2a70d28 100755
--- a/tools/run_tests/run_tests_matrix.py
+++ b/tools/run_tests/run_tests_matrix.py
@@ -411,6 +411,7 @@ if __name__ == "__main__":
extra_args.append('--bq_result_table')
extra_args.append('%s' % args.bq_result_table)
extra_args.append('--measure_cpu_costs')
+ extra_args.append('--disable_auto_set_flakes')
all_jobs = _create_test_jobs(extra_args=extra_args, inner_jobs=args.inner_jobs) + \
_create_portability_test_jobs(extra_args=extra_args, inner_jobs=args.inner_jobs)
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index 569aaded03..b0a0c3a8eb 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -31,7 +31,7 @@ cat << EOF | awk '{ print $1 }' | sort > $want_submodules
886e7d75368e3f4fab3f4d0d3584e4abfc557755 third_party/boringssl-with-bazel (version_for_cocoapods_7.0-857-g886e7d7)
30dbc81fb5ffdc98ea9b14b1918bfe4e8779b26e third_party/gflags (v2.2.0)
ec44c6c1675c25b9827aacd08c02433cccde7780 third_party/googletest (release-1.8.0)
- 97d50e306e576dadf2184e643b7c934da45730c8 third_party/protobuf (v3.4.0rc2)
+ 80a37e0782d2d702d52234b62dd4b9ec74fd2c95 third_party/protobuf (v3.4.0)
cacf7f1d4e3d44d871b605da3b647f07d718623f third_party/zlib (v1.2.11)
7691f773af79bf75a62d1863fd0f13ebf9dc51b1 third_party/cares/cares (1.12.0)
EOF