Merge remote-tracking branch 'upstream/master' into http_connect

pull/7611/head
Mark D. Roth 8 years ago
commit 3f6ab54f28
  1. 36
      BUILD
  2. 36
      CMakeLists.txt
  3. 110
      Makefile
  4. 6
      Rakefile
  5. 22
      build.yaml
  6. 2
      examples/csharp/helloworld/Greeter/Greeter.csproj
  7. 2
      examples/csharp/helloworld/GreeterClient/GreeterClient.csproj
  8. 2
      examples/csharp/helloworld/GreeterServer/GreeterServer.csproj
  9. 2
      examples/csharp/route_guide/RouteGuide/RouteGuide.csproj
  10. 2
      examples/csharp/route_guide/RouteGuideClient/RouteGuideClient.csproj
  11. 2
      examples/csharp/route_guide/RouteGuideServer/RouteGuideServer.csproj
  12. 2
      examples/node/README.md
  13. 7
      include/grpc++/impl/codegen/client_context.h
  14. 5
      include/grpc/impl/codegen/grpc_types.h
  15. 11
      include/grpc/impl/codegen/port_platform.h
  16. 4
      setup.py
  17. 13
      src/core/ext/transport/chttp2/transport/chttp2_transport.c
  18. 2
      src/core/ext/transport/chttp2/transport/frame.h
  19. 10
      src/core/ext/transport/chttp2/transport/hpack_encoder.c
  20. 1
      src/core/ext/transport/chttp2/transport/hpack_encoder.h
  21. 2
      src/core/ext/transport/chttp2/transport/internal.h
  22. 12
      src/core/ext/transport/chttp2/transport/writing.c
  23. 1
      src/core/lib/channel/http_client_filter.c
  24. 0
      src/cpp/client/channel_cc.cc
  25. 1
      src/cpp/client/client_context.cc
  26. 0
      src/cpp/client/credentials_cc.cc
  27. 0
      src/cpp/common/completion_queue_cc.cc
  28. 0
      src/cpp/server/server_cc.cc
  29. 0
      src/cpp/util/byte_buffer_cc.cc
  30. 0
      src/cpp/util/slice_cc.cc
  31. 0
      src/cpp/util/time_cc.cc
  32. 18
      src/csharp/Grpc.Auth/Grpc.Auth.csproj
  33. 7
      src/csharp/Grpc.Auth/packages.config
  34. 9
      src/csharp/Grpc.Auth/project.json
  35. 11
      src/csharp/Grpc.Core.Tests/project.json
  36. 14
      src/csharp/Grpc.Core/GrpcEnvironment.cs
  37. 18
      src/csharp/Grpc.Core/Internal/NativeExtension.cs
  38. 4
      src/csharp/Grpc.Core/project.json
  39. 14
      src/csharp/Grpc.Examples.MathClient/project.json
  40. 14
      src/csharp/Grpc.Examples.MathServer/project.json
  41. 6
      src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj
  42. 4
      src/csharp/Grpc.Examples.Tests/packages.config
  43. 11
      src/csharp/Grpc.Examples.Tests/project.json
  44. 7
      src/csharp/Grpc.Examples/Grpc.Examples.csproj
  45. 4
      src/csharp/Grpc.Examples/packages.config
  46. 16
      src/csharp/Grpc.Examples/project.json
  47. 6
      src/csharp/Grpc.HealthCheck.Tests/Grpc.HealthCheck.Tests.csproj
  48. 2
      src/csharp/Grpc.HealthCheck.Tests/packages.config
  49. 11
      src/csharp/Grpc.HealthCheck.Tests/project.json
  50. 7
      src/csharp/Grpc.HealthCheck/Grpc.HealthCheck.csproj
  51. 2
      src/csharp/Grpc.HealthCheck/packages.config
  52. 5
      src/csharp/Grpc.HealthCheck/project.json
  53. 18
      src/csharp/Grpc.IntegrationTesting.Client/Grpc.IntegrationTesting.Client.csproj
  54. 7
      src/csharp/Grpc.IntegrationTesting.Client/packages.config
  55. 22
      src/csharp/Grpc.IntegrationTesting.Client/project.json
  56. 22
      src/csharp/Grpc.IntegrationTesting.QpsWorker/project.json
  57. 18
      src/csharp/Grpc.IntegrationTesting.Server/Grpc.IntegrationTesting.Server.csproj
  58. 7
      src/csharp/Grpc.IntegrationTesting.Server/packages.config
  59. 22
      src/csharp/Grpc.IntegrationTesting.Server/project.json
  60. 22
      src/csharp/Grpc.IntegrationTesting.StressClient/project.json
  61. 3
      src/csharp/Grpc.IntegrationTesting/GeneratedClientTest.cs
  62. 37
      src/csharp/Grpc.IntegrationTesting/Grpc.IntegrationTesting.csproj
  63. 14
      src/csharp/Grpc.IntegrationTesting/packages.config
  64. 28
      src/csharp/Grpc.IntegrationTesting/project.json
  65. 24
      src/csharp/build_packages_dotnetcli.sh
  66. 6
      src/csharp/ext/grpc_csharp_ext.c
  67. 4
      src/node/README.md
  68. 5
      src/objective-c/GRPCClient/GRPCCall.m
  69. 5
      src/objective-c/GRPCClient/private/GRPCWrappedCall.m
  70. 22
      src/php/ext/grpc/call.c
  71. 6
      src/php/ext/grpc/call_credentials.c
  72. 9
      src/php/ext/grpc/channel.c
  73. 16
      src/php/ext/grpc/channel_credentials.c
  74. 18
      src/php/ext/grpc/server.c
  75. 4
      src/php/ext/grpc/server_credentials.c
  76. 22
      src/php/ext/grpc/timeval.c
  77. 2
      src/proto/grpc/testing/echo.proto
  78. 4
      src/python/grpcio/grpc/__init__.py
  79. 4
      src/ruby/ext/grpc/extconf.rb
  80. 9
      templates/src/csharp/Grpc.Auth/project.json.template
  81. 6
      templates/src/csharp/Grpc.Core.Tests/project.json.template
  82. 4
      templates/src/csharp/Grpc.Core/project.json.template
  83. 9
      templates/src/csharp/Grpc.Examples.MathClient/project.json.template
  84. 9
      templates/src/csharp/Grpc.Examples.MathServer/project.json.template
  85. 6
      templates/src/csharp/Grpc.Examples.Tests/project.json.template
  86. 11
      templates/src/csharp/Grpc.Examples/project.json.template
  87. 6
      templates/src/csharp/Grpc.HealthCheck.Tests/project.json.template
  88. 5
      templates/src/csharp/Grpc.HealthCheck/project.json.template
  89. 9
      templates/src/csharp/Grpc.IntegrationTesting.Client/project.json.template
  90. 9
      templates/src/csharp/Grpc.IntegrationTesting.QpsWorker/project.json.template
  91. 9
      templates/src/csharp/Grpc.IntegrationTesting.Server/project.json.template
  92. 9
      templates/src/csharp/Grpc.IntegrationTesting.StressClient/project.json.template
  93. 15
      templates/src/csharp/Grpc.IntegrationTesting/project.json.template
  94. 21
      templates/src/csharp/build_options.include
  95. 75
      templates/src/csharp/build_packages_dotnetcli.sh.template
  96. 13
      templates/tools/dockerfile/csharp_dotnetcli_deps.include
  97. 41
      templates/tools/dockerfile/interoptest/grpc_interop_csharpcoreclr/Dockerfile.template
  98. 16
      templates/tools/dockerfile/test/csharp_coreclr_x64/Dockerfile.template
  99. 3
      test/core/bad_ssl/gen_build_yaml.py
  100. BIN
      test/core/end2end/fuzzers/api_fuzzer_corpus/22967e8ed837f03b76a980cc1d25054fb84b40e9
  101. Some files were not shown because too many files have changed in this diff Show More

36
BUILD

@ -1343,39 +1343,39 @@ cc_library(
"src/core/lib/transport/timeout_encoding.h", "src/core/lib/transport/timeout_encoding.h",
"src/core/lib/transport/transport.h", "src/core/lib/transport/transport.h",
"src/core/lib/transport/transport_impl.h", "src/core/lib/transport/transport_impl.h",
"src/cpp/client/insecure_credentials.cc",
"src/cpp/client/secure_credentials.cc", "src/cpp/client/secure_credentials.cc",
"src/cpp/common/auth_property_iterator.cc", "src/cpp/common/auth_property_iterator.cc",
"src/cpp/common/secure_auth_context.cc", "src/cpp/common/secure_auth_context.cc",
"src/cpp/common/secure_channel_arguments.cc", "src/cpp/common/secure_channel_arguments.cc",
"src/cpp/common/secure_create_auth_context.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/server/secure_server_credentials.cc",
"src/cpp/client/channel.cc", "src/cpp/client/channel_cc.cc",
"src/cpp/client/client_context.cc", "src/cpp/client/client_context.cc",
"src/cpp/client/create_channel.cc", "src/cpp/client/create_channel.cc",
"src/cpp/client/create_channel_internal.cc", "src/cpp/client/create_channel_internal.cc",
"src/cpp/client/create_channel_posix.cc", "src/cpp/client/create_channel_posix.cc",
"src/cpp/client/credentials.cc", "src/cpp/client/credentials_cc.cc",
"src/cpp/client/generic_stub.cc", "src/cpp/client/generic_stub.cc",
"src/cpp/client/insecure_credentials.cc",
"src/cpp/common/channel_arguments.cc", "src/cpp/common/channel_arguments.cc",
"src/cpp/common/channel_filter.cc", "src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue.cc", "src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc", "src/cpp/common/core_codegen.cc",
"src/cpp/common/rpc_method.cc", "src/cpp/common/rpc_method.cc",
"src/cpp/server/async_generic_service.cc", "src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc", "src/cpp/server/create_default_thread_pool.cc",
"src/cpp/server/dynamic_thread_pool.cc", "src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/insecure_server_credentials.cc",
"src/cpp/server/server.cc",
"src/cpp/server/server_builder.cc", "src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc", "src/cpp/server/server_context.cc",
"src/cpp/server/server_credentials.cc", "src/cpp/server/server_credentials.cc",
"src/cpp/server/server_posix.cc", "src/cpp/server/server_posix.cc",
"src/cpp/util/byte_buffer.cc", "src/cpp/util/byte_buffer_cc.cc",
"src/cpp/util/slice.cc", "src/cpp/util/slice_cc.cc",
"src/cpp/util/status.cc", "src/cpp/util/status.cc",
"src/cpp/util/string_ref.cc", "src/cpp/util/string_ref.cc",
"src/cpp/util/time.cc", "src/cpp/util/time_cc.cc",
"src/core/lib/channel/channel_args.c", "src/core/lib/channel/channel_args.c",
"src/core/lib/channel/channel_stack.c", "src/core/lib/channel/channel_stack.c",
"src/core/lib/channel/channel_stack_builder.c", "src/core/lib/channel/channel_stack_builder.c",
@ -1753,34 +1753,34 @@ cc_library(
"src/core/lib/transport/timeout_encoding.h", "src/core/lib/transport/timeout_encoding.h",
"src/core/lib/transport/transport.h", "src/core/lib/transport/transport.h",
"src/core/lib/transport/transport_impl.h", "src/core/lib/transport/transport_impl.h",
"src/cpp/client/insecure_credentials.cc",
"src/cpp/common/insecure_create_auth_context.cc", "src/cpp/common/insecure_create_auth_context.cc",
"src/cpp/client/channel.cc", "src/cpp/server/insecure_server_credentials.cc",
"src/cpp/client/channel_cc.cc",
"src/cpp/client/client_context.cc", "src/cpp/client/client_context.cc",
"src/cpp/client/create_channel.cc", "src/cpp/client/create_channel.cc",
"src/cpp/client/create_channel_internal.cc", "src/cpp/client/create_channel_internal.cc",
"src/cpp/client/create_channel_posix.cc", "src/cpp/client/create_channel_posix.cc",
"src/cpp/client/credentials.cc", "src/cpp/client/credentials_cc.cc",
"src/cpp/client/generic_stub.cc", "src/cpp/client/generic_stub.cc",
"src/cpp/client/insecure_credentials.cc",
"src/cpp/common/channel_arguments.cc", "src/cpp/common/channel_arguments.cc",
"src/cpp/common/channel_filter.cc", "src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue.cc", "src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc", "src/cpp/common/core_codegen.cc",
"src/cpp/common/rpc_method.cc", "src/cpp/common/rpc_method.cc",
"src/cpp/server/async_generic_service.cc", "src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc", "src/cpp/server/create_default_thread_pool.cc",
"src/cpp/server/dynamic_thread_pool.cc", "src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/insecure_server_credentials.cc",
"src/cpp/server/server.cc",
"src/cpp/server/server_builder.cc", "src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc", "src/cpp/server/server_context.cc",
"src/cpp/server/server_credentials.cc", "src/cpp/server/server_credentials.cc",
"src/cpp/server/server_posix.cc", "src/cpp/server/server_posix.cc",
"src/cpp/util/byte_buffer.cc", "src/cpp/util/byte_buffer_cc.cc",
"src/cpp/util/slice.cc", "src/cpp/util/slice_cc.cc",
"src/cpp/util/status.cc", "src/cpp/util/status.cc",
"src/cpp/util/string_ref.cc", "src/cpp/util/string_ref.cc",
"src/cpp/util/time.cc", "src/cpp/util/time_cc.cc",
"src/core/lib/channel/channel_args.c", "src/core/lib/channel/channel_args.c",
"src/core/lib/channel/channel_stack.c", "src/core/lib/channel/channel_stack.c",
"src/core/lib/channel/channel_stack_builder.c", "src/core/lib/channel/channel_stack_builder.c",

@ -1008,39 +1008,39 @@ endif()
add_library(grpc++ add_library(grpc++
src/cpp/client/insecure_credentials.cc
src/cpp/client/secure_credentials.cc src/cpp/client/secure_credentials.cc
src/cpp/common/auth_property_iterator.cc src/cpp/common/auth_property_iterator.cc
src/cpp/common/secure_auth_context.cc src/cpp/common/secure_auth_context.cc
src/cpp/common/secure_channel_arguments.cc src/cpp/common/secure_channel_arguments.cc
src/cpp/common/secure_create_auth_context.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/server/secure_server_credentials.cc
src/cpp/client/channel.cc src/cpp/client/channel_cc.cc
src/cpp/client/client_context.cc src/cpp/client/client_context.cc
src/cpp/client/create_channel.cc src/cpp/client/create_channel.cc
src/cpp/client/create_channel_internal.cc src/cpp/client/create_channel_internal.cc
src/cpp/client/create_channel_posix.cc src/cpp/client/create_channel_posix.cc
src/cpp/client/credentials.cc src/cpp/client/credentials_cc.cc
src/cpp/client/generic_stub.cc src/cpp/client/generic_stub.cc
src/cpp/client/insecure_credentials.cc
src/cpp/common/channel_arguments.cc src/cpp/common/channel_arguments.cc
src/cpp/common/channel_filter.cc src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue.cc src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc src/cpp/common/core_codegen.cc
src/cpp/common/rpc_method.cc src/cpp/common/rpc_method.cc
src/cpp/server/async_generic_service.cc src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc src/cpp/server/create_default_thread_pool.cc
src/cpp/server/dynamic_thread_pool.cc src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/insecure_server_credentials.cc
src/cpp/server/server.cc
src/cpp/server/server_builder.cc src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc src/cpp/server/server_context.cc
src/cpp/server/server_credentials.cc src/cpp/server/server_credentials.cc
src/cpp/server/server_posix.cc src/cpp/server/server_posix.cc
src/cpp/util/byte_buffer.cc src/cpp/util/byte_buffer_cc.cc
src/cpp/util/slice.cc src/cpp/util/slice_cc.cc
src/cpp/util/status.cc src/cpp/util/status.cc
src/cpp/util/string_ref.cc src/cpp/util/string_ref.cc
src/cpp/util/time.cc src/cpp/util/time_cc.cc
src/core/lib/channel/channel_args.c src/core/lib/channel/channel_args.c
src/core/lib/channel/channel_stack.c src/core/lib/channel/channel_stack.c
src/core/lib/channel/channel_stack_builder.c src/core/lib/channel/channel_stack_builder.c
@ -1370,34 +1370,34 @@ endif()
add_library(grpc++_unsecure add_library(grpc++_unsecure
src/cpp/client/insecure_credentials.cc
src/cpp/common/insecure_create_auth_context.cc src/cpp/common/insecure_create_auth_context.cc
src/cpp/client/channel.cc src/cpp/server/insecure_server_credentials.cc
src/cpp/client/channel_cc.cc
src/cpp/client/client_context.cc src/cpp/client/client_context.cc
src/cpp/client/create_channel.cc src/cpp/client/create_channel.cc
src/cpp/client/create_channel_internal.cc src/cpp/client/create_channel_internal.cc
src/cpp/client/create_channel_posix.cc src/cpp/client/create_channel_posix.cc
src/cpp/client/credentials.cc src/cpp/client/credentials_cc.cc
src/cpp/client/generic_stub.cc src/cpp/client/generic_stub.cc
src/cpp/client/insecure_credentials.cc
src/cpp/common/channel_arguments.cc src/cpp/common/channel_arguments.cc
src/cpp/common/channel_filter.cc src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue.cc src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc src/cpp/common/core_codegen.cc
src/cpp/common/rpc_method.cc src/cpp/common/rpc_method.cc
src/cpp/server/async_generic_service.cc src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc src/cpp/server/create_default_thread_pool.cc
src/cpp/server/dynamic_thread_pool.cc src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/insecure_server_credentials.cc
src/cpp/server/server.cc
src/cpp/server/server_builder.cc src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc src/cpp/server/server_context.cc
src/cpp/server/server_credentials.cc src/cpp/server/server_credentials.cc
src/cpp/server/server_posix.cc src/cpp/server/server_posix.cc
src/cpp/util/byte_buffer.cc src/cpp/util/byte_buffer_cc.cc
src/cpp/util/slice.cc src/cpp/util/slice_cc.cc
src/cpp/util/status.cc src/cpp/util/status.cc
src/cpp/util/string_ref.cc src/cpp/util/string_ref.cc
src/cpp/util/time.cc src/cpp/util/time_cc.cc
src/core/lib/channel/channel_args.c src/core/lib/channel/channel_args.c
src/core/lib/channel/channel_stack.c src/core/lib/channel/channel_stack.c
src/core/lib/channel/channel_stack_builder.c src/core/lib/channel/channel_stack_builder.c

@ -1122,9 +1122,7 @@ server_registered_method_bad_client_test: $(BINDIR)/$(CONFIG)/server_registered_
simple_request_bad_client_test: $(BINDIR)/$(CONFIG)/simple_request_bad_client_test simple_request_bad_client_test: $(BINDIR)/$(CONFIG)/simple_request_bad_client_test
unknown_frame_bad_client_test: $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test unknown_frame_bad_client_test: $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test
window_overflow_bad_client_test: $(BINDIR)/$(CONFIG)/window_overflow_bad_client_test window_overflow_bad_client_test: $(BINDIR)/$(CONFIG)/window_overflow_bad_client_test
bad_ssl_alpn_server: $(BINDIR)/$(CONFIG)/bad_ssl_alpn_server
bad_ssl_cert_server: $(BINDIR)/$(CONFIG)/bad_ssl_cert_server bad_ssl_cert_server: $(BINDIR)/$(CONFIG)/bad_ssl_cert_server
bad_ssl_alpn_test: $(BINDIR)/$(CONFIG)/bad_ssl_alpn_test
bad_ssl_cert_test: $(BINDIR)/$(CONFIG)/bad_ssl_cert_test bad_ssl_cert_test: $(BINDIR)/$(CONFIG)/bad_ssl_cert_test
h2_census_test: $(BINDIR)/$(CONFIG)/h2_census_test h2_census_test: $(BINDIR)/$(CONFIG)/h2_census_test
h2_compress_test: $(BINDIR)/$(CONFIG)/h2_compress_test h2_compress_test: $(BINDIR)/$(CONFIG)/h2_compress_test
@ -1344,9 +1342,7 @@ buildtests_c: privatelibs_c \
$(BINDIR)/$(CONFIG)/simple_request_bad_client_test \ $(BINDIR)/$(CONFIG)/simple_request_bad_client_test \
$(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test \ $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test \
$(BINDIR)/$(CONFIG)/window_overflow_bad_client_test \ $(BINDIR)/$(CONFIG)/window_overflow_bad_client_test \
$(BINDIR)/$(CONFIG)/bad_ssl_alpn_server \
$(BINDIR)/$(CONFIG)/bad_ssl_cert_server \ $(BINDIR)/$(CONFIG)/bad_ssl_cert_server \
$(BINDIR)/$(CONFIG)/bad_ssl_alpn_test \
$(BINDIR)/$(CONFIG)/bad_ssl_cert_test \ $(BINDIR)/$(CONFIG)/bad_ssl_cert_test \
$(BINDIR)/$(CONFIG)/h2_census_test \ $(BINDIR)/$(CONFIG)/h2_census_test \
$(BINDIR)/$(CONFIG)/h2_compress_test \ $(BINDIR)/$(CONFIG)/h2_compress_test \
@ -1747,8 +1743,6 @@ test_c: buildtests_c
$(Q) $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test || ( echo test unknown_frame_bad_client_test failed ; exit 1 ) $(Q) $(BINDIR)/$(CONFIG)/unknown_frame_bad_client_test || ( echo test unknown_frame_bad_client_test failed ; exit 1 )
$(E) "[RUN] Testing window_overflow_bad_client_test" $(E) "[RUN] Testing window_overflow_bad_client_test"
$(Q) $(BINDIR)/$(CONFIG)/window_overflow_bad_client_test || ( echo test window_overflow_bad_client_test failed ; exit 1 ) $(Q) $(BINDIR)/$(CONFIG)/window_overflow_bad_client_test || ( echo test window_overflow_bad_client_test failed ; exit 1 )
$(E) "[RUN] Testing bad_ssl_alpn_test"
$(Q) $(BINDIR)/$(CONFIG)/bad_ssl_alpn_test || ( echo test bad_ssl_alpn_test failed ; exit 1 )
$(E) "[RUN] Testing bad_ssl_cert_test" $(E) "[RUN] Testing bad_ssl_cert_test"
$(Q) $(BINDIR)/$(CONFIG)/bad_ssl_cert_test || ( echo test bad_ssl_cert_test failed ; exit 1 ) $(Q) $(BINDIR)/$(CONFIG)/bad_ssl_cert_test || ( echo test bad_ssl_cert_test failed ; exit 1 )
@ -3569,39 +3563,39 @@ endif
LIBGRPC++_SRC = \ LIBGRPC++_SRC = \
src/cpp/client/insecure_credentials.cc \
src/cpp/client/secure_credentials.cc \ src/cpp/client/secure_credentials.cc \
src/cpp/common/auth_property_iterator.cc \ src/cpp/common/auth_property_iterator.cc \
src/cpp/common/secure_auth_context.cc \ src/cpp/common/secure_auth_context.cc \
src/cpp/common/secure_channel_arguments.cc \ src/cpp/common/secure_channel_arguments.cc \
src/cpp/common/secure_create_auth_context.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/server/secure_server_credentials.cc \
src/cpp/client/channel.cc \ src/cpp/client/channel_cc.cc \
src/cpp/client/client_context.cc \ src/cpp/client/client_context.cc \
src/cpp/client/create_channel.cc \ src/cpp/client/create_channel.cc \
src/cpp/client/create_channel_internal.cc \ src/cpp/client/create_channel_internal.cc \
src/cpp/client/create_channel_posix.cc \ src/cpp/client/create_channel_posix.cc \
src/cpp/client/credentials.cc \ src/cpp/client/credentials_cc.cc \
src/cpp/client/generic_stub.cc \ src/cpp/client/generic_stub.cc \
src/cpp/client/insecure_credentials.cc \
src/cpp/common/channel_arguments.cc \ src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \ src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue.cc \ src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \ src/cpp/common/core_codegen.cc \
src/cpp/common/rpc_method.cc \ src/cpp/common/rpc_method.cc \
src/cpp/server/async_generic_service.cc \ src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \ src/cpp/server/create_default_thread_pool.cc \
src/cpp/server/dynamic_thread_pool.cc \ src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/insecure_server_credentials.cc \
src/cpp/server/server.cc \
src/cpp/server/server_builder.cc \ src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \ src/cpp/server/server_context.cc \
src/cpp/server/server_credentials.cc \ src/cpp/server/server_credentials.cc \
src/cpp/server/server_posix.cc \ src/cpp/server/server_posix.cc \
src/cpp/util/byte_buffer.cc \ src/cpp/util/byte_buffer_cc.cc \
src/cpp/util/slice.cc \ src/cpp/util/slice_cc.cc \
src/cpp/util/status.cc \ src/cpp/util/status.cc \
src/cpp/util/string_ref.cc \ src/cpp/util/string_ref.cc \
src/cpp/util/time.cc \ src/cpp/util/time_cc.cc \
src/core/lib/channel/channel_args.c \ src/core/lib/channel/channel_args.c \
src/core/lib/channel/channel_stack.c \ src/core/lib/channel/channel_stack.c \
src/core/lib/channel/channel_stack_builder.c \ src/core/lib/channel/channel_stack_builder.c \
@ -4040,7 +4034,7 @@ endif
LIBGRPC++_TEST_CONFIG_SRC = \ LIBGRPC++_TEST_CONFIG_SRC = \
test/cpp/util/test_config.cc \ test/cpp/util/test_config_cc.cc \
PUBLIC_HEADERS_CXX += \ PUBLIC_HEADERS_CXX += \
@ -4209,34 +4203,34 @@ $(OBJDIR)/$(CONFIG)/src/cpp/codegen/codegen_init.o: $(GENDIR)/src/proto/grpc/tes
LIBGRPC++_UNSECURE_SRC = \ LIBGRPC++_UNSECURE_SRC = \
src/cpp/client/insecure_credentials.cc \
src/cpp/common/insecure_create_auth_context.cc \ src/cpp/common/insecure_create_auth_context.cc \
src/cpp/client/channel.cc \ src/cpp/server/insecure_server_credentials.cc \
src/cpp/client/channel_cc.cc \
src/cpp/client/client_context.cc \ src/cpp/client/client_context.cc \
src/cpp/client/create_channel.cc \ src/cpp/client/create_channel.cc \
src/cpp/client/create_channel_internal.cc \ src/cpp/client/create_channel_internal.cc \
src/cpp/client/create_channel_posix.cc \ src/cpp/client/create_channel_posix.cc \
src/cpp/client/credentials.cc \ src/cpp/client/credentials_cc.cc \
src/cpp/client/generic_stub.cc \ src/cpp/client/generic_stub.cc \
src/cpp/client/insecure_credentials.cc \
src/cpp/common/channel_arguments.cc \ src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \ src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue.cc \ src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \ src/cpp/common/core_codegen.cc \
src/cpp/common/rpc_method.cc \ src/cpp/common/rpc_method.cc \
src/cpp/server/async_generic_service.cc \ src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \ src/cpp/server/create_default_thread_pool.cc \
src/cpp/server/dynamic_thread_pool.cc \ src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/insecure_server_credentials.cc \
src/cpp/server/server.cc \
src/cpp/server/server_builder.cc \ src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \ src/cpp/server/server_context.cc \
src/cpp/server/server_credentials.cc \ src/cpp/server/server_credentials.cc \
src/cpp/server/server_posix.cc \ src/cpp/server/server_posix.cc \
src/cpp/util/byte_buffer.cc \ src/cpp/util/byte_buffer_cc.cc \
src/cpp/util/slice.cc \ src/cpp/util/slice_cc.cc \
src/cpp/util/status.cc \ src/cpp/util/status.cc \
src/cpp/util/string_ref.cc \ src/cpp/util/string_ref.cc \
src/cpp/util/time.cc \ src/cpp/util/time_cc.cc \
src/core/lib/channel/channel_args.c \ src/core/lib/channel/channel_args.c \
src/core/lib/channel/channel_stack.c \ src/core/lib/channel/channel_stack.c \
src/core/lib/channel/channel_stack_builder.c \ src/core/lib/channel/channel_stack_builder.c \
@ -14333,38 +14327,6 @@ ifneq ($(NO_DEPS),true)
endif endif
BAD_SSL_ALPN_SERVER_SRC = \
test/core/bad_ssl/servers/alpn.c \
BAD_SSL_ALPN_SERVER_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BAD_SSL_ALPN_SERVER_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL.
$(BINDIR)/$(CONFIG)/bad_ssl_alpn_server: openssl_dep_error
else
$(BINDIR)/$(CONFIG)/bad_ssl_alpn_server: $(BAD_SSL_ALPN_SERVER_OBJS) $(LIBDIR)/$(CONFIG)/libbad_ssl_test_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(LD) $(LDFLAGS) $(BAD_SSL_ALPN_SERVER_OBJS) $(LIBDIR)/$(CONFIG)/libbad_ssl_test_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/bad_ssl_alpn_server
endif
$(OBJDIR)/$(CONFIG)/test/core/bad_ssl/servers/alpn.o: $(LIBDIR)/$(CONFIG)/libbad_ssl_test_server.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
deps_bad_ssl_alpn_server: $(BAD_SSL_ALPN_SERVER_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
-include $(BAD_SSL_ALPN_SERVER_OBJS:.o=.dep)
endif
endif
BAD_SSL_CERT_SERVER_SRC = \ BAD_SSL_CERT_SERVER_SRC = \
test/core/bad_ssl/servers/cert.c \ test/core/bad_ssl/servers/cert.c \
@ -14397,38 +14359,6 @@ endif
endif endif
BAD_SSL_ALPN_TEST_SRC = \
test/core/bad_ssl/bad_ssl_test.c \
BAD_SSL_ALPN_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BAD_SSL_ALPN_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL.
$(BINDIR)/$(CONFIG)/bad_ssl_alpn_test: openssl_dep_error
else
$(BINDIR)/$(CONFIG)/bad_ssl_alpn_test: $(BAD_SSL_ALPN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(LD) $(LDFLAGS) $(BAD_SSL_ALPN_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/bad_ssl_alpn_test
endif
$(OBJDIR)/$(CONFIG)/test/core/bad_ssl/bad_ssl_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
deps_bad_ssl_alpn_test: $(BAD_SSL_ALPN_TEST_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
-include $(BAD_SSL_ALPN_TEST_OBJS:.o=.dep)
endif
endif
BAD_SSL_CERT_TEST_SRC = \ BAD_SSL_CERT_TEST_SRC = \
test/core/bad_ssl/bad_ssl_test.c \ test/core/bad_ssl/bad_ssl_test.c \
@ -15809,7 +15739,7 @@ test/cpp/util/proto_file_parser.cc: $(OPENSSL_DEP)
test/cpp/util/proto_reflection_descriptor_database.cc: $(OPENSSL_DEP) test/cpp/util/proto_reflection_descriptor_database.cc: $(OPENSSL_DEP)
test/cpp/util/string_ref_helper.cc: $(OPENSSL_DEP) test/cpp/util/string_ref_helper.cc: $(OPENSSL_DEP)
test/cpp/util/subprocess.cc: $(OPENSSL_DEP) test/cpp/util/subprocess.cc: $(OPENSSL_DEP)
test/cpp/util/test_config.cc: $(OPENSSL_DEP) test/cpp/util/test_config_cc.cc: $(OPENSSL_DEP)
test/cpp/util/test_credentials_provider.cc: $(OPENSSL_DEP) test/cpp/util/test_credentials_provider.cc: $(OPENSSL_DEP)
endif endif

@ -100,13 +100,15 @@ desc 'Build the native gem file under rake_compiler_dock'
task 'gem:native' do task 'gem:native' do
verbose = ENV['V'] || '0' verbose = ENV['V'] || '0'
grpc_config = ENV['GRPC_CONFIG'] || 'opt'
if RUBY_PLATFORM =~ /darwin/ if RUBY_PLATFORM =~ /darwin/
FileUtils.touch 'grpc_c.32.ruby' FileUtils.touch 'grpc_c.32.ruby'
FileUtils.touch 'grpc_c.64.ruby' FileUtils.touch 'grpc_c.64.ruby'
system "rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.5:2.0.0 V=#{verbose}" system "rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.5:2.0.0 V=#{verbose} GRPC_CONFIG=#{grpc_config}"
else else
Rake::Task['dlls'].execute Rake::Task['dlls'].execute
docker_for_windows "bundle && rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.5:2.0.0 V=#{verbose}" docker_for_windows "bundle && rake cross native gem RUBY_CC_VERSION=2.3.0:2.2.2:2.1.5:2.0.0 V=#{verbose} GRPC_CONFIG=#{grpc_config}"
end end
end end

@ -708,33 +708,31 @@ filegroups:
- src/cpp/server/dynamic_thread_pool.h - src/cpp/server/dynamic_thread_pool.h
- src/cpp/server/thread_pool_interface.h - src/cpp/server/thread_pool_interface.h
src: src:
- src/cpp/client/channel.cc - src/cpp/client/channel_cc.cc
- src/cpp/client/client_context.cc - src/cpp/client/client_context.cc
- src/cpp/client/create_channel.cc - src/cpp/client/create_channel.cc
- src/cpp/client/create_channel_internal.cc - src/cpp/client/create_channel_internal.cc
- src/cpp/client/create_channel_posix.cc - src/cpp/client/create_channel_posix.cc
- src/cpp/client/credentials.cc - src/cpp/client/credentials_cc.cc
- src/cpp/client/generic_stub.cc - src/cpp/client/generic_stub.cc
- src/cpp/client/insecure_credentials.cc
- src/cpp/common/channel_arguments.cc - src/cpp/common/channel_arguments.cc
- src/cpp/common/channel_filter.cc - src/cpp/common/channel_filter.cc
- src/cpp/common/completion_queue.cc - src/cpp/common/completion_queue_cc.cc
- src/cpp/common/core_codegen.cc - src/cpp/common/core_codegen.cc
- src/cpp/common/rpc_method.cc - src/cpp/common/rpc_method.cc
- src/cpp/server/async_generic_service.cc - src/cpp/server/async_generic_service.cc
- src/cpp/server/create_default_thread_pool.cc - src/cpp/server/create_default_thread_pool.cc
- src/cpp/server/dynamic_thread_pool.cc - src/cpp/server/dynamic_thread_pool.cc
- src/cpp/server/insecure_server_credentials.cc
- src/cpp/server/server.cc
- src/cpp/server/server_builder.cc - src/cpp/server/server_builder.cc
- src/cpp/server/server_cc.cc
- src/cpp/server/server_context.cc - src/cpp/server/server_context.cc
- src/cpp/server/server_credentials.cc - src/cpp/server/server_credentials.cc
- src/cpp/server/server_posix.cc - src/cpp/server/server_posix.cc
- src/cpp/util/byte_buffer.cc - src/cpp/util/byte_buffer_cc.cc
- src/cpp/util/slice.cc - src/cpp/util/slice_cc.cc
- src/cpp/util/status.cc - src/cpp/util/status.cc
- src/cpp/util/string_ref.cc - src/cpp/util/string_ref.cc
- src/cpp/util/time.cc - src/cpp/util/time_cc.cc
uses: uses:
- grpc_base - grpc_base
- grpc++_codegen_base - grpc++_codegen_base
@ -979,11 +977,13 @@ libs:
- src/cpp/common/secure_auth_context.h - src/cpp/common/secure_auth_context.h
- src/cpp/server/secure_server_credentials.h - src/cpp/server/secure_server_credentials.h
src: src:
- src/cpp/client/insecure_credentials.cc
- src/cpp/client/secure_credentials.cc - src/cpp/client/secure_credentials.cc
- src/cpp/common/auth_property_iterator.cc - src/cpp/common/auth_property_iterator.cc
- src/cpp/common/secure_auth_context.cc - src/cpp/common/secure_auth_context.cc
- src/cpp/common/secure_channel_arguments.cc - src/cpp/common/secure_channel_arguments.cc
- src/cpp/common/secure_create_auth_context.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/server/secure_server_credentials.cc
deps: deps:
- grpc - grpc
@ -1020,7 +1020,7 @@ libs:
headers: headers:
- test/cpp/util/test_config.h - test/cpp/util/test_config.h
src: src:
- test/cpp/util/test_config.cc - test/cpp/util/test_config_cc.cc
- name: grpc++_test_util - name: grpc++_test_util
build: private build: private
language: c++ language: c++
@ -1054,7 +1054,9 @@ libs:
build: all build: all
language: c++ language: c++
src: src:
- src/cpp/client/insecure_credentials.cc
- src/cpp/common/insecure_create_auth_context.cc - src/cpp/common/insecure_create_auth_context.cc
- src/cpp/server/insecure_server_credentials.cc
deps: deps:
- gpr - gpr
- grpc_unsecure - grpc_unsecure

@ -33,7 +33,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL"> <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

@ -33,7 +33,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL"> <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

@ -33,7 +33,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL"> <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

@ -33,7 +33,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL"> <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

@ -35,7 +35,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL"> <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

@ -35,7 +35,7 @@
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL"> <Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference> </Reference>
<Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL"> <Reference Include="Grpc.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d754f35622e28bad, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>

@ -39,7 +39,7 @@ There are two ways to generate the code needed to work with protocol buffers in
$ # from this directory $ # from this directory
$ node ./dynamic_codegen/greeter_client.js $ node ./dynamic_codegen/greeter_client.js
$ # OR $ # OR
$ node ./dynamic_codegen/greeter_client.js $ node ./static_codegen/greeter_client.js
``` ```
TUTORIAL TUTORIAL

@ -225,6 +225,9 @@ class ClientContext {
/// EXPERIMENTAL: Set this request to be idempotent /// EXPERIMENTAL: Set this request to be idempotent
void set_idempotent(bool idempotent) { idempotent_ = idempotent; } void set_idempotent(bool idempotent) { idempotent_ = idempotent; }
/// EXPERIMENTAL: Set this request to be cacheable
void set_cacheable(bool cacheable) { cacheable_ = cacheable; }
/// EXPERIMENTAL: Trigger fail-fast or not on this request /// EXPERIMENTAL: Trigger fail-fast or not on this request
void set_fail_fast(bool fail_fast) { fail_fast_ = fail_fast; } void set_fail_fast(bool fail_fast) { fail_fast_ = fail_fast; }
@ -346,7 +349,8 @@ class ClientContext {
uint32_t initial_metadata_flags() const { uint32_t initial_metadata_flags() const {
return (idempotent_ ? GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST : 0) | return (idempotent_ ? GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST : 0) |
(fail_fast_ ? 0 : GRPC_INITIAL_METADATA_IGNORE_CONNECTIVITY); (fail_fast_ ? 0 : GRPC_INITIAL_METADATA_IGNORE_CONNECTIVITY) |
(cacheable_ ? GRPC_INITIAL_METADATA_CACHEABLE_REQUEST : 0);
} }
grpc::string authority() { return authority_; } grpc::string authority() { return authority_; }
@ -354,6 +358,7 @@ class ClientContext {
bool initial_metadata_received_; bool initial_metadata_received_;
bool fail_fast_; bool fail_fast_;
bool idempotent_; bool idempotent_;
bool cacheable_;
std::shared_ptr<Channel> channel_; std::shared_ptr<Channel> channel_;
grpc::mutex mu_; grpc::mutex mu_;
grpc_call* call_; grpc_call* call_;

@ -142,6 +142,11 @@ typedef struct {
/** How much memory to use for hpack encoding. Int valued, bytes. */ /** How much memory to use for hpack encoding. Int valued, bytes. */
#define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER \ #define GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_ENCODER \
"grpc.http2.hpack_table_size.encoder" "grpc.http2.hpack_table_size.encoder"
/** How big a frame are we willing to receive via HTTP2.
Min 16384, max 16777215.
Larger values give lower CPU usage for large messages, but more head of line
blocking for small messages. */
#define GRPC_ARG_HTTP2_MAX_FRAME_SIZE "grpc.http2.max_frame_size"
/** Default authority to pass if none specified on call construction. A string. /** Default authority to pass if none specified on call construction. A string.
* */ * */
#define GRPC_ARG_DEFAULT_AUTHORITY "grpc.default_authority" #define GRPC_ARG_DEFAULT_AUTHORITY "grpc.default_authority"

@ -234,6 +234,7 @@
#define GPR_ARCH_32 1 #define GPR_ARCH_32 1
#endif /* _LP64 */ #endif /* _LP64 */
#elif defined(__APPLE__) #elif defined(__APPLE__)
#include <Availability.h>
#include <TargetConditionals.h> #include <TargetConditionals.h>
#ifndef _BSD_SOURCE #ifndef _BSD_SOURCE
#define _BSD_SOURCE #define _BSD_SOURCE
@ -246,8 +247,18 @@
#define GPR_PTHREAD_TLS 1 #define GPR_PTHREAD_TLS 1
#else /* TARGET_OS_IPHONE */ #else /* TARGET_OS_IPHONE */
#define GPR_PLATFORM_STRING "osx" #define GPR_PLATFORM_STRING "osx"
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7
#define GPR_CPU_IPHONE 1
#define GPR_PTHREAD_TLS 1
#else /* __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 */
#define GPR_CPU_POSIX 1
#define GPR_GCC_TLS 1
#endif
#else /* __MAC_OS_X_VERSION_MIN_REQUIRED */
#define GPR_CPU_POSIX 1 #define GPR_CPU_POSIX 1
#define GPR_GCC_TLS 1 #define GPR_GCC_TLS 1
#endif
#define GPR_POSIX_CRASH_HANDLER 1 #define GPR_POSIX_CRASH_HANDLER 1
#endif #endif
#define GPR_GCC_ATOMIC 1 #define GPR_GCC_ATOMIC 1

@ -198,12 +198,14 @@ PACKAGE_DIRECTORIES = {
INSTALL_REQUIRES = ( INSTALL_REQUIRES = (
'six>=1.5.2', 'six>=1.5.2',
'enum34>=1.0.4', 'enum34>=1.0.4',
'futures>=2.2.0',
# TODO(atash): eventually split the grpcio package into a metapackage # TODO(atash): eventually split the grpcio package into a metapackage
# depending on protobuf and the runtime component (independent of protobuf) # depending on protobuf and the runtime component (independent of protobuf)
'protobuf>=3.0.0', 'protobuf>=3.0.0',
) )
if not PY3:
INSTALL_REQUIRES += ('futures>=2.2.0',)
SETUP_REQUIRES = INSTALL_REQUIRES + ( SETUP_REQUIRES = INSTALL_REQUIRES + (
'sphinx>=1.3', 'sphinx>=1.3',
'sphinx_rtd_theme>=0.1.8', 'sphinx_rtd_theme>=0.1.8',

@ -408,6 +408,19 @@ static void init_transport(grpc_exec_ctx *exec_ctx, grpc_chttp2_transport *t,
push_setting(exec_ctx, t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE, push_setting(exec_ctx, t, GRPC_CHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE,
(uint32_t)channel_args->args[i].value.integer); (uint32_t)channel_args->args[i].value.integer);
} }
} else if (0 == strcmp(channel_args->args[i].key,
GRPC_ARG_HTTP2_MAX_FRAME_SIZE)) {
if (channel_args->args[i].type != GRPC_ARG_INTEGER) {
gpr_log(GPR_ERROR, "%s: must be an integer",
GRPC_ARG_HTTP2_MAX_FRAME_SIZE);
} else if (channel_args->args[i].value.integer < 16384 ||
channel_args->args[i].value.integer > 16777215) {
gpr_log(GPR_ERROR, "%s: must be between 16384 and 16777215",
GRPC_ARG_HTTP2_MAX_FRAME_SIZE);
} else {
push_setting(exec_ctx, t, GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE,
(uint32_t)channel_args->args[i].value.integer);
}
} }
} }
} }

@ -52,8 +52,6 @@ typedef struct grpc_chttp2_transport_parsing grpc_chttp2_transport_parsing;
#define GRPC_CHTTP2_FRAME_GOAWAY 7 #define GRPC_CHTTP2_FRAME_GOAWAY 7
#define GRPC_CHTTP2_FRAME_WINDOW_UPDATE 8 #define GRPC_CHTTP2_FRAME_WINDOW_UPDATE 8
#define GRPC_CHTTP2_MAX_PAYLOAD_LENGTH ((1 << 14) - 1)
#define GRPC_CHTTP2_DATA_FLAG_END_STREAM 1 #define GRPC_CHTTP2_DATA_FLAG_END_STREAM 1
#define GRPC_CHTTP2_FLAG_ACK 1 #define GRPC_CHTTP2_FLAG_ACK 1
#define GRPC_CHTTP2_DATA_FLAG_END_HEADERS 4 #define GRPC_CHTTP2_DATA_FLAG_END_HEADERS 4

@ -78,6 +78,8 @@ typedef struct {
uint32_t stream_id; uint32_t stream_id;
gpr_slice_buffer *output; gpr_slice_buffer *output;
grpc_transport_one_way_stats *stats; grpc_transport_one_way_stats *stats;
/* maximum size of a frame */
size_t max_frame_size;
} framer_state; } framer_state;
/* fills p (which is expected to be 9 bytes long) with a data frame header */ /* fills p (which is expected to be 9 bytes long) with a data frame header */
@ -123,7 +125,7 @@ static void begin_frame(framer_state *st) {
needed */ needed */
static void ensure_space(framer_state *st, size_t need_bytes) { static void ensure_space(framer_state *st, size_t need_bytes) {
if (st->output->length - st->output_length_at_start_of_frame + need_bytes <= if (st->output->length - st->output_length_at_start_of_frame + need_bytes <=
GRPC_CHTTP2_MAX_PAYLOAD_LENGTH) { st->max_frame_size) {
return; return;
} }
finish_frame(st, 0, 0); finish_frame(st, 0, 0);
@ -149,8 +151,8 @@ static void add_header_data(framer_state *st, gpr_slice slice) {
size_t len = GPR_SLICE_LENGTH(slice); size_t len = GPR_SLICE_LENGTH(slice);
size_t remaining; size_t remaining;
if (len == 0) return; if (len == 0) return;
remaining = GRPC_CHTTP2_MAX_PAYLOAD_LENGTH + remaining = st->max_frame_size + st->output_length_at_start_of_frame -
st->output_length_at_start_of_frame - st->output->length; st->output->length;
if (len <= remaining) { if (len <= remaining) {
st->stats->header_bytes += len; st->stats->header_bytes += len;
gpr_slice_buffer_add(st->output, slice); gpr_slice_buffer_add(st->output, slice);
@ -542,6 +544,7 @@ void grpc_chttp2_hpack_compressor_set_max_table_size(
void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c, void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c,
uint32_t stream_id, uint32_t stream_id,
grpc_metadata_batch *metadata, int is_eof, grpc_metadata_batch *metadata, int is_eof,
size_t max_frame_size,
grpc_transport_one_way_stats *stats, grpc_transport_one_way_stats *stats,
gpr_slice_buffer *outbuf) { gpr_slice_buffer *outbuf) {
framer_state st; framer_state st;
@ -555,6 +558,7 @@ void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c,
st.output = outbuf; st.output = outbuf;
st.is_first_frame = 1; st.is_first_frame = 1;
st.stats = stats; st.stats = stats;
st.max_frame_size = max_frame_size;
/* Encode a metadata batch; store the returned values, representing /* Encode a metadata batch; store the returned values, representing
a metadata element that needs to be unreffed back into the metadata a metadata element that needs to be unreffed back into the metadata

@ -91,6 +91,7 @@ void grpc_chttp2_hpack_compressor_set_max_usable_size(
void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c, uint32_t id, void grpc_chttp2_encode_header(grpc_chttp2_hpack_compressor *c, uint32_t id,
grpc_metadata_batch *metadata, int is_eof, grpc_metadata_batch *metadata, int is_eof,
size_t max_frame_size,
grpc_transport_one_way_stats *stats, grpc_transport_one_way_stats *stats,
gpr_slice_buffer *outbuf); gpr_slice_buffer *outbuf);

@ -223,6 +223,8 @@ typedef struct {
uint8_t is_client; uint8_t is_client;
/** callback for when writing is done */ /** callback for when writing is done */
grpc_closure done_cb; grpc_closure done_cb;
/** maximum frame size */
uint32_t max_frame_size;
} grpc_chttp2_transport_writing; } grpc_chttp2_transport_writing;
struct grpc_chttp2_transport_parsing { struct grpc_chttp2_transport_parsing {

@ -51,6 +51,10 @@ int grpc_chttp2_unlocking_check_writes(
GPR_TIMER_BEGIN("grpc_chttp2_unlocking_check_writes", 0); GPR_TIMER_BEGIN("grpc_chttp2_unlocking_check_writes", 0);
transport_writing->max_frame_size =
transport_global->settings[GRPC_ACKED_SETTINGS]
[GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE];
/* simple writes are queued to qbuf, and flushed here */ /* simple writes are queued to qbuf, and flushed here */
gpr_slice_buffer_swap(&transport_global->qbuf, &transport_writing->outbuf); gpr_slice_buffer_swap(&transport_global->qbuf, &transport_writing->outbuf);
GPR_ASSERT(transport_global->qbuf.count == 0); GPR_ASSERT(transport_global->qbuf.count == 0);
@ -206,14 +210,15 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
while ( while (
grpc_chttp2_list_pop_writing_stream(transport_writing, &stream_writing)) { grpc_chttp2_list_pop_writing_stream(transport_writing, &stream_writing)) {
uint32_t max_outgoing = uint32_t max_outgoing =
(uint32_t)GPR_MIN(GRPC_CHTTP2_MAX_PAYLOAD_LENGTH, (uint32_t)GPR_MIN(transport_writing->max_frame_size,
GPR_MIN(stream_writing->outgoing_window, GPR_MIN(stream_writing->outgoing_window,
transport_writing->outgoing_window)); transport_writing->outgoing_window));
/* send initial metadata if it's available */ /* send initial metadata if it's available */
if (stream_writing->send_initial_metadata != NULL) { if (stream_writing->send_initial_metadata != NULL) {
grpc_chttp2_encode_header( grpc_chttp2_encode_header(
&transport_writing->hpack_compressor, stream_writing->id, &transport_writing->hpack_compressor, stream_writing->id,
stream_writing->send_initial_metadata, 0, &stream_writing->stats, stream_writing->send_initial_metadata, 0,
transport_writing->max_frame_size, &stream_writing->stats,
&transport_writing->outbuf); &transport_writing->outbuf);
stream_writing->send_initial_metadata = NULL; stream_writing->send_initial_metadata = NULL;
stream_writing->sent_initial_metadata = 1; stream_writing->sent_initial_metadata = 1;
@ -303,7 +308,8 @@ static void finalize_outbuf(grpc_exec_ctx *exec_ctx,
} else { } else {
grpc_chttp2_encode_header( grpc_chttp2_encode_header(
&transport_writing->hpack_compressor, stream_writing->id, &transport_writing->hpack_compressor, stream_writing->id,
stream_writing->send_trailing_metadata, 1, &stream_writing->stats, stream_writing->send_trailing_metadata, 1,
transport_writing->max_frame_size, &stream_writing->stats,
&transport_writing->outbuf); &transport_writing->outbuf);
} }
if (!transport_writing->is_client && !stream_writing->read_closed) { if (!transport_writing->is_client && !stream_writing->read_closed) {

@ -233,7 +233,6 @@ static void hc_mutate_op(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
if (method == GRPC_MDELEM_METHOD_GET) { if (method == GRPC_MDELEM_METHOD_GET) {
/* allocate memory to hold the entire payload */ /* allocate memory to hold the entire payload */
calld->payload_bytes = gpr_malloc(op->send_message->length); calld->payload_bytes = gpr_malloc(op->send_message->length);
GPR_ASSERT(calld->payload_bytes);
/* read slices of send_message and copy into payload_bytes */ /* read slices of send_message and copy into payload_bytes */
calld->send_op = *op; calld->send_op = *op;

@ -60,6 +60,7 @@ ClientContext::ClientContext()
: initial_metadata_received_(false), : initial_metadata_received_(false),
fail_fast_(true), fail_fast_(true),
idempotent_(false), idempotent_(false),
cacheable_(false),
call_(nullptr), call_(nullptr),
call_canceled_(false), call_canceled_(false),
deadline_(gpr_inf_future(GPR_CLOCK_REALTIME)), deadline_(gpr_inf_future(GPR_CLOCK_REALTIME)),

@ -49,14 +49,26 @@
<Reference Include="Newtonsoft.Json"> <Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.Core"> <Reference Include="Google.Apis.Core">
<HintPath>..\packages\Google.Apis.Core.1.15.0\lib\net45\Google.Apis.Core.dll</HintPath> <HintPath>..\packages\Google.Apis.Core.1.16.0\lib\net45\Google.Apis.Core.dll</HintPath>
</Reference>
<Reference Include="Zlib.Portable">
<HintPath>..\packages\Zlib.Portable.Signed.1.11.0\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid\Zlib.Portable.dll</HintPath>
</Reference>
<Reference Include="Google.Apis">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.PlatformServices">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth"> <Reference Include="Google.Apis.Auth">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth.PlatformServices"> <Reference Include="Google.Apis.Auth.PlatformServices">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="BouncyCastle" version="1.7.0" targetFramework="net45" /> <package id="BouncyCastle" version="1.7.0" targetFramework="net45" />
<package id="Google.Apis.Auth" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis" version="1.16.0" targetFramework="net45" />
<package id="Google.Apis.Core" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis.Auth" version="1.16.0" targetFramework="net45" />
<package id="Google.Apis.Core" version="1.16.0" targetFramework="net45" />
<package id="log4net" version="2.0.3" targetFramework="net45" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
<package id="Zlib.Portable.Signed" version="1.11.0" targetFramework="net45" />
</packages> </packages>

@ -23,18 +23,13 @@
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "1.1.0-dev", "Grpc.Core": "1.1.0-dev",
"Google.Apis.Auth": "1.15.0" "Google.Apis.Auth": "1.16.0"
}, },
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netstandard1.5": { "netstandard1.5": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1", "NETStandard.Library": "1.6.0"
"NETStandard.Library": "1.6.0",
"System.Threading.Tasks": "4.0.11"
} }
} }
} }

@ -42,11 +42,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.Core": { "Grpc.Core": {
@ -66,8 +61,10 @@
"portable-net45" "portable-net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
}, },

@ -351,11 +351,11 @@ namespace Grpc.Core
{ {
if (!hooksRegistered) if (!hooksRegistered)
{ {
// TODO(jtattermusch): register shutdownhooks for CoreCLR as well #if NETSTANDARD1_5
#if !NETSTANDARD1_5 System.Runtime.Loader.AssemblyLoadContext.Default.Unloading += (assemblyLoadContext) => { HandleShutdown(); };
#else
AppDomain.CurrentDomain.ProcessExit += ShutdownHookHandler; AppDomain.CurrentDomain.ProcessExit += (sender, eventArgs) => { HandleShutdown(); };
AppDomain.CurrentDomain.DomainUnload += ShutdownHookHandler; AppDomain.CurrentDomain.DomainUnload += (sender, eventArgs) => { HandleShutdown(); };
#endif #endif
} }
hooksRegistered = true; hooksRegistered = true;
@ -363,9 +363,9 @@ namespace Grpc.Core
} }
/// <summary> /// <summary>
/// Handler for AppDomain.DomainUnload and AppDomain.ProcessExit hooks. /// Handler for AppDomain.DomainUnload, AppDomain.ProcessExit and AssemblyLoadContext.Unloading hooks.
/// </summary> /// </summary>
private static void ShutdownHookHandler(object sender, EventArgs e) private static void HandleShutdown()
{ {
Task.WaitAll(GrpcEnvironment.ShutdownChannelsAsync(), GrpcEnvironment.KillServersAsync()); Task.WaitAll(GrpcEnvironment.ShutdownChannelsAsync(), GrpcEnvironment.KillServersAsync());
} }

@ -100,19 +100,19 @@ namespace Grpc.Core.Internal
// With old-style VS projects, the native libraries get copied using a .targets rule to the build output folder // With old-style VS projects, the native libraries get copied using a .targets rule to the build output folder
// alongside the compiled assembly. // alongside the compiled assembly.
// With dotnet cli projects, the native libraries (just the required ones) are similarly copied to the built output folder, // With dotnet cli projects targeting net45 framework, the native libraries (just the required ones)
// through the magic of Microsoft.NETCore.Platforms. // are similarly copied to the built output folder, through the magic of Microsoft.NETCore.Platforms.
var classicPath = Path.Combine(assemblyDirectory, GetNativeLibraryFilename()); var classicPath = Path.Combine(assemblyDirectory, GetNativeLibraryFilename());
// DNX-style project.json projects will use Grpc.Core assembly directly in the location where it got restored // With dotnet cli project targeting netcoreapp1.0, projects will use Grpc.Core assembly directly in the location where it got restored
// by nuget. We locate the native libraries based on known structure of Grpc.Core nuget package. // by nuget. We locate the native libraries based on known structure of Grpc.Core nuget package.
// When "dotnet publish" is used, the runtimes directory is copied next to the published assemblies.
string runtimesDirectory = string.Format("runtimes/{0}/native", GetPlatformString());
var netCorePublishedAppStylePath = Path.Combine(assemblyDirectory, runtimesDirectory, GetNativeLibraryFilename());
var netCoreAppStylePath = Path.Combine(assemblyDirectory, "../..", runtimesDirectory, GetNativeLibraryFilename());
// TODO: Support .NET Core applications, which act slightly differently. We may be okay if "dotnet publish" // Look for all native library in all possible locations in given order.
// is used, but "dotnet run" leaves the native libraries in-package, while copying assemblies. string[] paths = new[] { classicPath, netCorePublishedAppStylePath, netCoreAppStylePath};
string platform = GetPlatformString();
string relativeDirectory = string.Format("../../runtimes/{0}/native", platform);
var dnxStylePath = Path.Combine(assemblyDirectory, relativeDirectory, GetNativeLibraryFilename());
string[] paths = new[] { classicPath, dnxStylePath };
return new UnmanagedLibrary(paths); return new UnmanagedLibrary(paths);
} }

@ -36,11 +36,9 @@
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netstandard1.5": { "netstandard1.5": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"NETStandard.Library": "1.6.0", "NETStandard.Library": "1.6.0",
"System.Runtime.Loader": "4.0.0",
"System.Threading.Thread": "4.0.0" "System.Threading.Thread": "4.0.0"
} }
} }

@ -42,11 +42,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.Examples": { "Grpc.Examples": {
@ -56,12 +51,11 @@
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -42,11 +42,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.Examples": { "Grpc.Examples": {
@ -56,12 +51,11 @@
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -36,9 +36,6 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.0.0-beta3\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="nunit.framework"> <Reference Include="nunit.framework">
<HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath> <HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath>
</Reference> </Reference>
@ -48,6 +45,9 @@
<Reference Include="nunitlite"> <Reference Include="nunitlite">
<HintPath>..\packages\NUnitLite.3.2.0\lib\net45\nunitlite.dll</HintPath> <HintPath>..\packages\NUnitLite.3.2.0\lib\net45\nunitlite.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Grpc.Core\Version.cs"> <Compile Include="..\Grpc.Core\Version.cs">

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Google.Protobuf" version="3.0.0-beta3" targetFramework="net45" /> <package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
<package id="NUnit" version="3.2.0" targetFramework="net45" /> <package id="NUnit" version="3.2.0" targetFramework="net45" />
<package id="NUnitLite" version="3.2.0" targetFramework="net45" /> <package id="NUnitLite" version="3.2.0" targetFramework="net45" />
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
</packages> </packages>

@ -42,11 +42,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.Examples": { "Grpc.Examples": {
@ -62,8 +57,10 @@
"portable-net45" "portable-net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -37,10 +37,6 @@
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0-beta3\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="nunit.framework"> <Reference Include="nunit.framework">
<HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath> <HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath>
</Reference> </Reference>
@ -50,6 +46,9 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath> <HintPath>..\packages\System.Interactive.Async.3.0.0\lib\net45\System.Interactive.Async.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Grpc.Core\Version.cs"> <Compile Include="..\Grpc.Core\Version.cs">

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Google.Protobuf" version="3.0.0-beta3" targetFramework="net45" /> <package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
<package id="NUnit" version="3.2.0" targetFramework="net45" /> <package id="NUnit" version="3.2.0" targetFramework="net45" />
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
</packages> </packages>

@ -1,17 +1,12 @@
{ {
"buildOptions": { "buildOptions": {
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.Core": { "Grpc.Core": {
"target": "project" "target": "project"
}, },
"Google.Protobuf": "3.0.0-beta3" "Google.Protobuf": "3.0.0"
}, },
"frameworks": { "frameworks": {
"net45": { "net45": {
@ -21,12 +16,11 @@
} }
}, },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -44,15 +44,15 @@
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.0.0-beta3\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="nunit.framework"> <Reference Include="nunit.framework">
<HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath> <HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath>
</Reference> </Reference>
<Reference Include="nunitlite"> <Reference Include="nunitlite">
<HintPath>..\packages\NUnitLite.3.2.0\lib\net45\nunitlite.dll</HintPath> <HintPath>..\packages\NUnitLite.3.2.0\lib\net45\nunitlite.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Grpc.Core\Version.cs"> <Compile Include="..\Grpc.Core\Version.cs">

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Google.Protobuf" version="3.0.0-beta3" targetFramework="net45" /> <package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
<package id="NUnit" version="3.2.0" targetFramework="net45" /> <package id="NUnit" version="3.2.0" targetFramework="net45" />
<package id="NUnitLite" version="3.2.0" targetFramework="net45" /> <package id="NUnitLite" version="3.2.0" targetFramework="net45" />
</packages> </packages>

@ -42,11 +42,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.HealthCheck": { "Grpc.HealthCheck": {
@ -62,8 +57,10 @@
"portable-net45" "portable-net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -38,10 +38,6 @@
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Google.Protobuf, Version=3.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Google.Protobuf.3.0.0-beta3\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="System.Interactive.Async, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@ -53,6 +49,9 @@
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="..\Grpc.Core\Version.cs"> <Compile Include="..\Grpc.Core\Version.cs">

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Google.Protobuf" version="3.0.0-beta3" targetFramework="net45" /> <package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" /> <package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
</packages> </packages>

@ -23,7 +23,7 @@
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "1.1.0-dev", "Grpc.Core": "1.1.0-dev",
"Google.Protobuf": "3.0.0-beta3" "Google.Protobuf": "3.0.0"
}, },
"frameworks": { "frameworks": {
"net45": { "net45": {
@ -33,9 +33,6 @@
} }
}, },
"netstandard1.5": { "netstandard1.5": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"NETStandard.Library": "1.6.0" "NETStandard.Library": "1.6.0"
} }

@ -49,14 +49,26 @@
<Reference Include="Newtonsoft.Json"> <Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.Core"> <Reference Include="Google.Apis.Core">
<HintPath>..\packages\Google.Apis.Core.1.15.0\lib\net45\Google.Apis.Core.dll</HintPath> <HintPath>..\packages\Google.Apis.Core.1.16.0\lib\net45\Google.Apis.Core.dll</HintPath>
</Reference>
<Reference Include="Zlib.Portable">
<HintPath>..\packages\Zlib.Portable.Signed.1.11.0\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid\Zlib.Portable.dll</HintPath>
</Reference>
<Reference Include="Google.Apis">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.PlatformServices">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth"> <Reference Include="Google.Apis.Auth">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth.PlatformServices"> <Reference Include="Google.Apis.Auth.PlatformServices">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="BouncyCastle" version="1.7.0" targetFramework="net45" /> <package id="BouncyCastle" version="1.7.0" targetFramework="net45" />
<package id="Google.Apis.Auth" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis" version="1.16.0" targetFramework="net45" />
<package id="Google.Apis.Core" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis.Auth" version="1.16.0" targetFramework="net45" />
<package id="Google.Apis.Core" version="1.16.0" targetFramework="net45" />
<package id="log4net" version="2.0.3" targetFramework="net45" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
<package id="Zlib.Portable.Signed" version="1.11.0" targetFramework="net45" />
</packages> </packages>

@ -13,8 +13,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so",
@ -33,8 +35,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so",
@ -44,11 +48,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.IntegrationTesting": { "Grpc.IntegrationTesting": {
@ -59,12 +58,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -13,8 +13,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so",
@ -33,8 +35,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so",
@ -44,11 +48,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.IntegrationTesting": { "Grpc.IntegrationTesting": {
@ -59,12 +58,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -49,14 +49,26 @@
<Reference Include="Newtonsoft.Json"> <Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.Core"> <Reference Include="Google.Apis.Core">
<HintPath>..\packages\Google.Apis.Core.1.15.0\lib\net45\Google.Apis.Core.dll</HintPath> <HintPath>..\packages\Google.Apis.Core.1.16.0\lib\net45\Google.Apis.Core.dll</HintPath>
</Reference>
<Reference Include="Zlib.Portable">
<HintPath>..\packages\Zlib.Portable.Signed.1.11.0\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid\Zlib.Portable.dll</HintPath>
</Reference>
<Reference Include="Google.Apis">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.PlatformServices">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth"> <Reference Include="Google.Apis.Auth">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth.PlatformServices"> <Reference Include="Google.Apis.Auth.PlatformServices">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="BouncyCastle" version="1.7.0" targetFramework="net45" /> <package id="BouncyCastle" version="1.7.0" targetFramework="net45" />
<package id="Google.Apis.Auth" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis" version="1.16.0" targetFramework="net45" />
<package id="Google.Apis.Core" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis.Auth" version="1.16.0" targetFramework="net45" />
<package id="Google.Apis.Core" version="1.16.0" targetFramework="net45" />
<package id="log4net" version="2.0.3" targetFramework="net45" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
<package id="Zlib.Portable.Signed" version="1.11.0" targetFramework="net45" />
</packages> </packages>

@ -13,8 +13,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so",
@ -33,8 +35,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so",
@ -44,11 +48,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.IntegrationTesting": { "Grpc.IntegrationTesting": {
@ -59,12 +58,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -13,8 +13,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so",
@ -33,8 +35,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so",
@ -44,11 +48,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.IntegrationTesting": { "Grpc.IntegrationTesting": {
@ -59,12 +58,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -48,8 +48,6 @@ namespace Grpc.IntegrationTesting
{ {
TestService.TestServiceClient unimplementedClient = new UnimplementedTestServiceClient(); TestService.TestServiceClient unimplementedClient = new UnimplementedTestServiceClient();
// TODO: replace Moq by some mocking library with CoreCLR support.
#if !NETCOREAPP1_0
[Test] [Test]
public void ExpandedParamOverloadCanBeMocked() public void ExpandedParamOverloadCanBeMocked()
{ {
@ -72,7 +70,6 @@ namespace Grpc.IntegrationTesting
Assert.AreSame(expected, mockClient.Object.UnaryCall(new SimpleRequest(), new CallOptions())); Assert.AreSame(expected, mockClient.Object.UnaryCall(new SimpleRequest(), new CallOptions()));
} }
#endif
[Test] [Test]
public void DefaultMethodStubThrows_UnaryCall() public void DefaultMethodStubThrows_UnaryCall()

@ -38,9 +38,6 @@
<AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile> <AssemblyOriginatorKeyFile>..\keys\Grpc.snk</AssemblyOriginatorKeyFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Moq">
<HintPath>..\packages\Moq.4.2.1510.2205\lib\net40\Moq.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Net" /> <Reference Include="System.Net" />
<Reference Include="System.Net.Http" /> <Reference Include="System.Net.Http" />
@ -48,9 +45,6 @@
<Reference Include="BouncyCastle.Crypto"> <Reference Include="BouncyCastle.Crypto">
<HintPath>..\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll</HintPath> <HintPath>..\packages\BouncyCastle.1.7.0\lib\Net40-Client\BouncyCastle.Crypto.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Protobuf">
<HintPath>..\packages\Google.Protobuf.3.0.0-beta3\lib\portable-net45+netcore45+wpa81+wp8\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json"> <Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> <HintPath>..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference> </Reference>
@ -63,17 +57,38 @@
<Reference Include="nunitlite"> <Reference Include="nunitlite">
<HintPath>..\packages\NUnitLite.3.2.0\lib\net45\nunitlite.dll</HintPath> <HintPath>..\packages\NUnitLite.3.2.0\lib\net45\nunitlite.dll</HintPath>
</Reference> </Reference>
<Reference Include="CommandLineParser.Unofficial">
<HintPath>..\packages\CommandLineParser.Unofficial.2.0.275\lib\net45\CommandLineParser.Unofficial.dll</HintPath>
</Reference>
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.3\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.Core"> <Reference Include="Google.Apis.Core">
<HintPath>..\packages\Google.Apis.Core.1.15.0\lib\net45\Google.Apis.Core.dll</HintPath> <HintPath>..\packages\Google.Apis.Core.1.16.0\lib\net45\Google.Apis.Core.dll</HintPath>
</Reference>
<Reference Include="Zlib.Portable">
<HintPath>..\packages\Zlib.Portable.Signed.1.11.0\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid\Zlib.Portable.dll</HintPath>
</Reference>
<Reference Include="Google.Apis">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.dll</HintPath>
</Reference>
<Reference Include="Google.Apis.PlatformServices">
<HintPath>..\packages\Google.Apis.1.16.0\lib\net45\Google.Apis.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth"> <Reference Include="Google.Apis.Auth">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.dll</HintPath>
</Reference> </Reference>
<Reference Include="Google.Apis.Auth.PlatformServices"> <Reference Include="Google.Apis.Auth.PlatformServices">
<HintPath>..\packages\Google.Apis.Auth.1.15.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath> <HintPath>..\packages\Google.Apis.Auth.1.16.0\lib\net45\Google.Apis.Auth.PlatformServices.dll</HintPath>
</Reference> </Reference>
<Reference Include="CommandLineParser.Unofficial"> <Reference Include="Google.Protobuf">
<HintPath>..\packages\CommandLineParser.Unofficial.2.0.275\lib\net45\CommandLineParser.Unofficial.dll</HintPath> <HintPath>..\packages\Google.Protobuf.3.0.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="Castle.Core">
<HintPath>..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Moq">
<HintPath>..\packages\Moq.4.6.38-alpha\lib\net45\Moq.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -1,13 +1,17 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="BouncyCastle" version="1.7.0" targetFramework="net45" /> <package id="BouncyCastle" version="1.7.0" targetFramework="net45" />
<package id="Castle.Core" version="3.3.3" targetFramework="net45" />
<package id="CommandLineParser.Unofficial" version="2.0.275" targetFramework="net45" /> <package id="CommandLineParser.Unofficial" version="2.0.275" targetFramework="net45" />
<package id="Google.Apis.Auth" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis" version="1.16.0" targetFramework="net45" />
<package id="Google.Apis.Core" version="1.15.0" targetFramework="net45" /> <package id="Google.Apis.Auth" version="1.16.0" targetFramework="net45" />
<package id="Google.Protobuf" version="3.0.0-beta3" targetFramework="net45" /> <package id="Google.Apis.Core" version="1.16.0" targetFramework="net45" />
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" /> <package id="Google.Protobuf" version="3.0.0" targetFramework="net45" />
<package id="Moq" version="4.2.1510.2205" targetFramework="net45" /> <package id="log4net" version="2.0.3" targetFramework="net45" />
<package id="Moq" version="4.6.38-alpha" targetFramework="net45" />
<package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" /> <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net45" />
<package id="NUnit" version="3.2.0" targetFramework="net45" /> <package id="NUnit" version="3.2.0" targetFramework="net45" />
<package id="NUnitLite" version="3.2.0" targetFramework="net45" /> <package id="NUnitLite" version="3.2.0" targetFramework="net45" />
<package id="System.Interactive.Async" version="3.0.0" targetFramework="net45" />
<package id="Zlib.Portable.Signed" version="1.11.0" targetFramework="net45" />
</packages> </packages>

@ -13,8 +13,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so",
@ -33,8 +35,10 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
"include": "data/*",
"mappings": { "mappings": {
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so",
@ -44,11 +48,6 @@
} }
} }
}, },
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},
"dependencies": { "dependencies": {
"Grpc.Auth": { "Grpc.Auth": {
@ -57,16 +56,14 @@
"Grpc.Core": { "Grpc.Core": {
"target": "project" "target": "project"
}, },
"Google.Protobuf": "3.0.0-beta3", "Google.Protobuf": "3.0.0",
"CommandLineParser.Unofficial": "2.0.275", "CommandLineParser.Unofficial": "2.0.275",
"Moq": "4.6.38-alpha",
"NUnit": "3.2.0", "NUnit": "3.2.0",
"NUnitLite": "3.2.0-*" "NUnitLite": "3.2.0-*"
}, },
"frameworks": { "frameworks": {
"net45": { "net45": {
"dependencies": {
"Moq": "4.2.1510.2205"
},
"frameworkAssemblies": { "frameworkAssemblies": {
"System.Runtime": "", "System.Runtime": "",
"System.IO": "" "System.IO": ""
@ -74,12 +71,13 @@
}, },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0", "type": "platform",
"version": "1.0.0"
},
"System.Linq.Expressions": "4.1.0" "System.Linq.Expressions": "4.1.0"
} }
} }

@ -30,11 +30,9 @@
set -ex set -ex
cd $(dirname $0)/../.. cd $(dirname $0)
mkdir -p artifacts/ mkdir -p ../../artifacts/
cd src/csharp
# IMPORTANT: NuGet packages generated by dotnet CLI are considered experimental. # IMPORTANT: NuGet packages generated by dotnet CLI are considered experimental.
# The official nugets are generated by src/csharp/build_packages.bat # The official nugets are generated by src/csharp/build_packages.bat
@ -43,6 +41,11 @@ mkdir -p nativelibs/windows_x86 nativelibs/windows_x64 \
nativelibs/linux_x86 nativelibs/linux_x64 \ nativelibs/linux_x86 nativelibs/linux_x64 \
nativelibs/macosx_x86 nativelibs/macosx_x64 nativelibs/macosx_x86 nativelibs/macosx_x64
mkdir -p protoc_plugins/windows_x86 protoc_plugins/windows_x64 \
protoc_plugins/linux_x86 protoc_plugins/linux_x64 \
protoc_plugins/macosx_x86 protoc_plugins/macosx_x64
# Collect the artifacts built by the previous build step if running on Jenkins
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=windows/artifacts/* nativelibs/windows_x86 || true cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=windows/artifacts/* nativelibs/windows_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=windows/artifacts/* nativelibs/windows_x64 || true cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=windows/artifacts/* nativelibs/windows_x64 || true
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=linux/artifacts/* nativelibs/linux_x86 || true cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=linux/artifacts/* nativelibs/linux_x86 || true
@ -50,10 +53,21 @@ cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=linux/artifacts/
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=macos/artifacts/* nativelibs/macosx_x86 || true cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=macos/artifacts/* nativelibs/macosx_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=macos/artifacts/* nativelibs/macosx_x64 || true cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=macos/artifacts/* nativelibs/macosx_x64 || true
# Collect protoc artifacts built by the previous build step
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=protoc,platform=windows/artifacts/* protoc_plugins/windows_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=protoc,platform=windows/artifacts/* protoc_plugins/windows_x64 || true
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=protoc,platform=linux/artifacts/* protoc_plugins/linux_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=protoc,platform=linux/artifacts/* protoc_plugins/linux_x64 || true
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=protoc,platform=macos/artifacts/* protoc_plugins/macosx_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=protoc,platform=macos/artifacts/* protoc_plugins/macosx_x64 || true
dotnet restore . dotnet restore .
dotnet pack --configuration Release Grpc.Core/project.json --output ../../artifacts dotnet pack --configuration Release Grpc.Core/project.json --output ../../artifacts
dotnet pack --configuration Release Grpc.Auth/project.json --output ../../artifacts dotnet pack --configuration Release Grpc.Auth/project.json --output ../../artifacts
dotnet pack --configuration Release Grpc.HealthCheck/project.json --output ../../artifacts dotnet pack --configuration Release Grpc.HealthCheck/project.json --output ../../artifacts
tar -czf ../../artifacts/csharp_nugets_experimental.tar.gz ../../artifacts/*.nupkg nuget pack Grpc.nuspec -Version "1.1.0-dev" -OutputDirectory ../../artifacts
nuget pack Grpc.Tools.nuspec -Version "1.1.0-dev" -OutputDirectory ../../artifacts
(cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg)

@ -255,8 +255,10 @@ GPR_EXPORT intptr_t GPR_CALLTYPE grpcsharp_batch_context_recv_message_length(
} }
GPR_ASSERT(grpc_byte_buffer_reader_init(&reader, ctx->recv_message)); GPR_ASSERT(grpc_byte_buffer_reader_init(&reader, ctx->recv_message));
intptr_t result = (intptr_t)grpc_byte_buffer_length(reader.buffer_out);
grpc_byte_buffer_reader_destroy(&reader);
return (intptr_t)grpc_byte_buffer_length(reader.buffer_out); return result;
} }
/* /*
@ -279,6 +281,8 @@ GPR_EXPORT void GPR_CALLTYPE grpcsharp_batch_context_recv_message_to_buffer(
offset += len; offset += len;
gpr_slice_unref(slice); gpr_slice_unref(slice);
} }
grpc_byte_buffer_reader_destroy(&reader);
} }
GPR_EXPORT grpc_status_code GPR_CALLTYPE GPR_EXPORT grpc_status_code GPR_CALLTYPE

@ -39,7 +39,7 @@ npm install grpc
To run the test suite, simply run `npm test` in the install location. To run the test suite, simply run `npm test` in the install location.
## API ## API
This library internally uses [ProtoBuf.js](https://github.com/dcodeIO/ProtoBuf.js), and some structures it exports match those exported by that library This library internally uses [ProtoBuf.js](https://github.com/dcodeIO/ProtoBuf.js), and some structures it exports match those exported by that library.
If you require this module, you will get an object with the following members If you require this module, you will get an object with the following members
@ -63,7 +63,7 @@ function loadObject(reflectionObject)
Returns the same structure that `load` returns, but takes a reflection object from `ProtoBuf.js` instead of a file name. Returns the same structure that `load` returns, but takes a reflection object from `ProtoBuf.js` instead of a file name.
```javascript ```javascript
function Server([serverOpions]) function Server([serverOptions])
``` ```
Constructs a server to which service/implementation pairs can be added. Constructs a server to which service/implementation pairs can be added.

@ -103,6 +103,11 @@ NSString * const kGRPCTrailersKey = @"io.grpc.TrailersKey";
@synthesize state = _state; @synthesize state = _state;
// TODO(jcanizales): If grpc_init is idempotent, this should be changed from load to initialize.
+ (void)load {
grpc_init();
}
- (instancetype)init { - (instancetype)init {
return [self initWithHost:nil path:nil requestsWriter:nil]; return [self initWithHost:nil path:nil requestsWriter:nil];
} }

@ -245,11 +245,6 @@
} }
if (self = [super init]) { if (self = [super init]) {
static dispatch_once_t initialization;
dispatch_once(&initialization, ^{
grpc_init();
});
// Each completion queue consumes one thread. There's a trade to be made between creating and // Each completion queue consumes one thread. There's a trade to be made between creating and
// consuming too many threads and having contention of multiple calls in a single completion // consuming too many threads and having contention of multiple calls in a single completion
// queue. Currently we use a singleton queue. // queue. Currently we use a singleton queue.

@ -69,8 +69,8 @@ PHP_GRPC_FREE_WRAPPED_FUNC_START(wrapped_grpc_call)
} }
PHP_GRPC_FREE_WRAPPED_FUNC_END() PHP_GRPC_FREE_WRAPPED_FUNC_END()
/* Initializes an instance of wrapped_grpc_call to be associated with an object /* Initializes an instance of wrapped_grpc_call to be associated with an
* of a class specified by class_type */ * object of a class specified by class_type */
php_grpc_zend_object create_wrapped_grpc_call(zend_class_entry *class_type php_grpc_zend_object create_wrapped_grpc_call(zend_class_entry *class_type
TSRMLS_DC) { TSRMLS_DC) {
PHP_GRPC_ALLOC_CLASS_OBJECT(wrapped_grpc_call); PHP_GRPC_ALLOC_CLASS_OBJECT(wrapped_grpc_call);
@ -195,10 +195,11 @@ zval *grpc_php_wrap_call(grpc_call *wrapped, bool owned TSRMLS_DC) {
/** /**
* Constructs a new instance of the Call class. * Constructs a new instance of the Call class.
* @param Channel $channel The channel to associate the call with. Must not be * @param Channel $channel_obj The channel to associate the call with.
* closed. * Must not be closed.
* @param string $method The method to call * @param string $method The method to call
* @param Timeval $absolute_deadline The deadline for completing the call * @param Timeval $deadline_obj The deadline for completing the call
* @param string $host_override The host is set by user (optional)
*/ */
PHP_METHOD(Call, __construct) { PHP_METHOD(Call, __construct) {
zval *channel_obj; zval *channel_obj;
@ -237,7 +238,7 @@ PHP_METHOD(Call, __construct) {
/** /**
* Start a batch of RPC actions. * Start a batch of RPC actions.
* @param array batch Array of actions to take * @param array $array Array of actions to take
* @return object Object with results of all actions * @return object Object with results of all actions
*/ */
PHP_METHOD(Call, startBatch) { PHP_METHOD(Call, startBatch) {
@ -515,8 +516,9 @@ PHP_METHOD(Call, getPeer) {
} }
/** /**
* Cancel the call. This will cause the call to end with STATUS_CANCELLED if it * Cancel the call. This will cause the call to end with STATUS_CANCELLED
* has not already ended with another status. * if it has not already ended with another status.
* @return void
*/ */
PHP_METHOD(Call, cancel) { PHP_METHOD(Call, cancel) {
wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis()); wrapped_grpc_call *call = Z_WRAPPED_GRPC_CALL_P(getThis());
@ -525,8 +527,8 @@ PHP_METHOD(Call, cancel) {
/** /**
* Set the CallCredentials for this call. * Set the CallCredentials for this call.
* @param CallCredentials creds_obj The CallCredentials object * @param CallCredentials $creds_obj The CallCredentials object
* @param int The error code * @return int The error code
*/ */
PHP_METHOD(Call, setCredentials) { PHP_METHOD(Call, setCredentials) {
zval *creds_obj; zval *creds_obj;

@ -87,8 +87,8 @@ zval *grpc_php_wrap_call_credentials(grpc_call_credentials
/** /**
* Create composite credentials from two existing credentials. * Create composite credentials from two existing credentials.
* @param CallCredentials cred1 The first credential * @param CallCredentials $cred1_obj The first credential
* @param CallCredentials cred2 The second credential * @param CallCredentials $cred2_obj The second credential
* @return CallCredentials The new composite credentials object * @return CallCredentials The new composite credentials object
*/ */
PHP_METHOD(CallCredentials, createComposite) { PHP_METHOD(CallCredentials, createComposite) {
@ -119,7 +119,7 @@ PHP_METHOD(CallCredentials, createComposite) {
/** /**
* Create a call credentials object from the plugin API * Create a call credentials object from the plugin API
* @param function callback The callback function * @param function $fci The callback function
* @return CallCredentials The new call credentials object * @return CallCredentials The new call credentials object
*/ */
PHP_METHOD(CallCredentials, createFromPlugin) { PHP_METHOD(CallCredentials, createFromPlugin) {

@ -125,7 +125,7 @@ void php_grpc_read_args_array(zval *args_array,
* "credentials" key mapping to a ChannelCredentials object, a secure channel * "credentials" key mapping to a ChannelCredentials object, a secure channel
* will be created with those credentials. * will be created with those credentials.
* @param string $target The hostname to associate with this channel * @param string $target The hostname to associate with this channel
* @param array $args The arguments to pass to the Channel (optional) * @param array $args_array The arguments to pass to the Channel
*/ */
PHP_METHOD(Channel, __construct) { PHP_METHOD(Channel, __construct) {
wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis()); wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis());
@ -182,7 +182,7 @@ PHP_METHOD(Channel, getTarget) {
/** /**
* Get the connectivity state of the channel * Get the connectivity state of the channel
* @param bool (optional) try to connect on the channel * @param bool $try_to_connect Try to connect on the channel (optional)
* @return long The grpc connectivity state * @return long The grpc connectivity state
*/ */
PHP_METHOD(Channel, getConnectivityState) { PHP_METHOD(Channel, getConnectivityState) {
@ -202,8 +202,8 @@ PHP_METHOD(Channel, getConnectivityState) {
/** /**
* Watch the connectivity state of the channel until it changed * Watch the connectivity state of the channel until it changed
* @param long The previous connectivity state of the channel * @param long $last_state The previous connectivity state of the channel
* @param Timeval The deadline this function should wait until * @param Timeval $deadline_obj The deadline this function should wait until
* @return bool If the connectivity state changes from last_state * @return bool If the connectivity state changes from last_state
* before deadline * before deadline
*/ */
@ -233,6 +233,7 @@ PHP_METHOD(Channel, watchConnectivityState) {
/** /**
* Close the channel * Close the channel
* @return void
*/ */
PHP_METHOD(Channel, close) { PHP_METHOD(Channel, close) {
wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis()); wrapped_grpc_channel *channel = Z_WRAPPED_GRPC_CHANNEL_P(getThis());

@ -97,7 +97,7 @@ zval *grpc_php_wrap_channel_credentials(grpc_channel_credentials
/** /**
* Set default roots pem. * Set default roots pem.
* @param string pem_roots PEM encoding of the server root certificates * @param string $pem_roots PEM encoding of the server root certificates
* @return void * @return void
*/ */
PHP_METHOD(ChannelCredentials, setDefaultRootsPem) { PHP_METHOD(ChannelCredentials, setDefaultRootsPem) {
@ -129,11 +129,11 @@ PHP_METHOD(ChannelCredentials, createDefault) {
/** /**
* Create SSL credentials. * Create SSL credentials.
* @param string pem_root_certs PEM encoding of the server root certificates * @param string $pem_root_certs PEM encoding of the server root certificates
* @param string pem_private_key PEM encoding of the client's private key * @param string $pem_key_cert_pair.private_key PEM encoding of the client's
* (optional) * private key (optional)
* @param string pem_cert_chain PEM encoding of the client's certificate chain * @param string $pem_key_cert_pair.cert_chain PEM encoding of the client's
* (optional) * certificate chain (optional)
* @return ChannelCredentials The new SSL credentials object * @return ChannelCredentials The new SSL credentials object
*/ */
PHP_METHOD(ChannelCredentials, createSsl) { PHP_METHOD(ChannelCredentials, createSsl) {
@ -168,8 +168,8 @@ PHP_METHOD(ChannelCredentials, createSsl) {
/** /**
* Create composite credentials from two existing credentials. * Create composite credentials from two existing credentials.
* @param ChannelCredentials cred1 The first credential * @param ChannelCredentials $cred1_obj The first credential
* @param CallCredentials cred2 The second credential * @param CallCredentials $cred2_obj The second credential
* @return ChannelCredentials The new composite credentials object * @return ChannelCredentials The new composite credentials object
*/ */
PHP_METHOD(ChannelCredentials, createComposite) { PHP_METHOD(ChannelCredentials, createComposite) {

@ -72,8 +72,8 @@ PHP_GRPC_FREE_WRAPPED_FUNC_START(wrapped_grpc_server)
} }
PHP_GRPC_FREE_WRAPPED_FUNC_END() PHP_GRPC_FREE_WRAPPED_FUNC_END()
/* Initializes an instance of wrapped_grpc_call to be associated with an object /* Initializes an instance of wrapped_grpc_call to be associated with an
* of a class specified by class_type */ * object of a class specified by class_type */
php_grpc_zend_object create_wrapped_grpc_server(zend_class_entry *class_type php_grpc_zend_object create_wrapped_grpc_server(zend_class_entry *class_type
TSRMLS_DC) { TSRMLS_DC) {
PHP_GRPC_ALLOC_CLASS_OBJECT(wrapped_grpc_server); PHP_GRPC_ALLOC_CLASS_OBJECT(wrapped_grpc_server);
@ -84,7 +84,7 @@ php_grpc_zend_object create_wrapped_grpc_server(zend_class_entry *class_type
/** /**
* Constructs a new instance of the Server class * Constructs a new instance of the Server class
* @param array $args The arguments to pass to the server (optional) * @param array $args_array The arguments to pass to the server (optional)
*/ */
PHP_METHOD(Server, __construct) { PHP_METHOD(Server, __construct) {
wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis()); wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());
@ -116,7 +116,7 @@ PHP_METHOD(Server, __construct) {
* Request a call on a server. Creates a single GRPC_SERVER_RPC_NEW event. * Request a call on a server. Creates a single GRPC_SERVER_RPC_NEW event.
* @param long $tag_new The tag to associate with the new request * @param long $tag_new The tag to associate with the new request
* @param long $tag_cancel The tag to use if the call is cancelled * @param long $tag_cancel The tag to use if the call is cancelled
* @return Void * @return void
*/ */
PHP_METHOD(Server, requestCall) { PHP_METHOD(Server, requestCall) {
grpc_call_error error_code; grpc_call_error error_code;
@ -180,7 +180,7 @@ PHP_METHOD(Server, requestCall) {
/** /**
* Add a http2 over tcp listener. * Add a http2 over tcp listener.
* @param string $addr The address to add * @param string $addr The address to add
* @return true on success, false on failure * @return bool True on success, false on failure
*/ */
PHP_METHOD(Server, addHttp2Port) { PHP_METHOD(Server, addHttp2Port) {
const char *addr; const char *addr;
@ -197,6 +197,12 @@ PHP_METHOD(Server, addHttp2Port) {
RETURN_LONG(grpc_server_add_insecure_http2_port(server->wrapped, addr)); RETURN_LONG(grpc_server_add_insecure_http2_port(server->wrapped, addr));
} }
/**
* Add a secure http2 over tcp listener.
* @param string $addr The address to add
* @param ServerCredentials The ServerCredentials object
* @return bool True on success, false on failure
*/
PHP_METHOD(Server, addSecureHttp2Port) { PHP_METHOD(Server, addSecureHttp2Port) {
const char *addr; const char *addr;
php_grpc_int addr_len; php_grpc_int addr_len;
@ -220,7 +226,7 @@ PHP_METHOD(Server, addSecureHttp2Port) {
/** /**
* Start a server - tells all listeners to start listening * Start a server - tells all listeners to start listening
* @return Void * @return void
*/ */
PHP_METHOD(Server, start) { PHP_METHOD(Server, start) {
wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis()); wrapped_grpc_server *server = Z_WRAPPED_GRPC_SERVER_P(getThis());

@ -61,8 +61,8 @@ PHP_GRPC_FREE_WRAPPED_FUNC_START(wrapped_grpc_server_credentials)
} }
PHP_GRPC_FREE_WRAPPED_FUNC_END() PHP_GRPC_FREE_WRAPPED_FUNC_END()
/* Initializes an instace of wrapped_grpc_server_credentials to be associated /* Initializes an instace of wrapped_grpc_server_credentials to be
* with an object of a class specified by class_type */ * associated with an object of a class specified by class_type */
php_grpc_zend_object create_wrapped_grpc_server_credentials( php_grpc_zend_object create_wrapped_grpc_server_credentials(
zend_class_entry *class_type TSRMLS_DC) { zend_class_entry *class_type TSRMLS_DC) {
PHP_GRPC_ALLOC_CLASS_OBJECT(wrapped_grpc_server_credentials); PHP_GRPC_ALLOC_CLASS_OBJECT(wrapped_grpc_server_credentials);

@ -80,7 +80,7 @@ zval *grpc_php_wrap_timeval(gpr_timespec wrapped TSRMLS_DC) {
/** /**
* Constructs a new instance of the Timeval class * Constructs a new instance of the Timeval class
* @param long $usec The number of microseconds in the interval * @param long $microseconds The number of microseconds in the interval
*/ */
PHP_METHOD(Timeval, __construct) { PHP_METHOD(Timeval, __construct) {
wrapped_grpc_timeval *timeval = Z_WRAPPED_GRPC_TIMEVAL_P(getThis()); wrapped_grpc_timeval *timeval = Z_WRAPPED_GRPC_TIMEVAL_P(getThis());
@ -100,7 +100,7 @@ PHP_METHOD(Timeval, __construct) {
/** /**
* Adds another Timeval to this one and returns the sum. Calculations saturate * Adds another Timeval to this one and returns the sum. Calculations saturate
* at infinities. * at infinities.
* @param Timeval $other The other Timeval object to add * @param Timeval $other_obj The other Timeval object to add
* @return Timeval A new Timeval object containing the sum * @return Timeval A new Timeval object containing the sum
*/ */
PHP_METHOD(Timeval, add) { PHP_METHOD(Timeval, add) {
@ -126,8 +126,8 @@ PHP_METHOD(Timeval, add) {
/** /**
* Subtracts another Timeval from this one and returns the difference. * Subtracts another Timeval from this one and returns the difference.
* Calculations saturate at infinities. * Calculations saturate at infinities.
* @param Timeval $other The other Timeval object to subtract * @param Timeval $other_obj The other Timeval object to subtract
* @param Timeval A new Timeval object containing the sum * @return Timeval A new Timeval object containing the diff
*/ */
PHP_METHOD(Timeval, subtract) { PHP_METHOD(Timeval, subtract) {
zval *other_obj; zval *other_obj;
@ -150,10 +150,10 @@ PHP_METHOD(Timeval, subtract) {
} }
/** /**
* Return negative, 0, or positive according to whether a < b, a == b, or a > b * Return negative, 0, or positive according to whether a < b, a == b,
* respectively. * or a > b respectively.
* @param Timeval $a The first time to compare * @param Timeval $a_obj The first time to compare
* @param Timeval $b The second time to compare * @param Timeval $b_obj The second time to compare
* @return long * @return long
*/ */
PHP_METHOD(Timeval, compare) { PHP_METHOD(Timeval, compare) {
@ -176,9 +176,9 @@ PHP_METHOD(Timeval, compare) {
/** /**
* Checks whether the two times are within $threshold of each other * Checks whether the two times are within $threshold of each other
* @param Timeval $a The first time to compare * @param Timeval $a_obj The first time to compare
* @param Timeval $b The second time to compare * @param Timeval $b_obj The second time to compare
* @param Timeval $threshold The threshold to check against * @param Timeval $thresh_obj The threshold to check against
* @return bool True if $a and $b are within $threshold, False otherwise * @return bool True if $a and $b are within $threshold, False otherwise
*/ */
PHP_METHOD(Timeval, similar) { PHP_METHOD(Timeval, similar) {

@ -42,7 +42,7 @@ service EchoTestService {
rpc Unimplemented(EchoRequest) returns (EchoResponse); rpc Unimplemented(EchoRequest) returns (EchoResponse);
} }
service UnimplementedService { service UnimplementedEchoService {
rpc Unimplemented(EchoRequest) returns (EchoResponse); rpc Unimplemented(EchoRequest) returns (EchoResponse);
} }

@ -1078,7 +1078,7 @@ def access_token_call_credentials(access_token):
Args: Args:
access_token: A string to place directly in the http request access_token: A string to place directly in the http request
authorization header, ie "Authorization: Bearer <access_token>". authorization header, ie "authorization: Bearer <access_token>".
Returns: Returns:
A CallCredentials. A CallCredentials.
@ -1193,7 +1193,7 @@ def insecure_channel(target, options=None):
def secure_channel(target, credentials, options=None): def secure_channel(target, credentials, options=None):
"""Creates an insecure Channel to a server. """Creates a secure Channel to a server.
Args: Args:
target: The target to which to connect. target: The target to which to connect.

@ -91,6 +91,10 @@ if grpc_config == 'gcov'
$LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic' $LDFLAGS << ' -fprofile-arcs -ftest-coverage -rdynamic'
end end
if grpc_config == 'dbg'
$CFLAGS << ' -O0'
end
$LDFLAGS << ' -Wl,-wrap,memcpy' if RUBY_PLATFORM =~ /linux/ $LDFLAGS << ' -Wl,-wrap,memcpy' if RUBY_PLATFORM =~ /linux/
$LDFLAGS << ' -static' if windows $LDFLAGS << ' -static' if windows

@ -25,18 +25,13 @@
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "${settings.csharp_version}", "Grpc.Core": "${settings.csharp_version}",
"Google.Apis.Auth": "1.15.0" "Google.Apis.Auth": "1.16.0"
}, },
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netstandard1.5": { "netstandard1.5": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.Portable.Compatibility": "1.0.1", "NETStandard.Library": "1.6.0"
"NETStandard.Library": "1.6.0",
"System.Threading.Tasks": "4.0.11"
} }
} }
} }

@ -20,8 +20,10 @@
"portable-net45" "portable-net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
}, },

@ -38,11 +38,9 @@
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netstandard1.5": { "netstandard1.5": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"NETStandard.Library": "1.6.0", "NETStandard.Library": "1.6.0",
"System.Runtime.Loader": "4.0.0",
"System.Threading.Thread": "4.0.0" "System.Threading.Thread": "4.0.0"
} }
} }

@ -10,12 +10,11 @@
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -10,12 +10,11 @@
"frameworks": { "frameworks": {
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -16,8 +16,10 @@
"portable-net45" "portable-net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -6,7 +6,7 @@
"Grpc.Core": { "Grpc.Core": {
"target": "project" "target": "project"
}, },
"Google.Protobuf": "3.0.0-beta3" "Google.Protobuf": "3.0.0"
}, },
"frameworks": { "frameworks": {
"net45": { "net45": {
@ -16,12 +16,11 @@
} }
}, },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -16,8 +16,10 @@
"portable-net45" "portable-net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -25,7 +25,7 @@
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "${settings.csharp_version}", "Grpc.Core": "${settings.csharp_version}",
"Google.Protobuf": "3.0.0-beta3" "Google.Protobuf": "3.0.0"
}, },
"frameworks": { "frameworks": {
"net45": { "net45": {
@ -35,9 +35,6 @@
} }
}, },
"netstandard1.5": { "netstandard1.5": {
"imports": [
"portable-net45"
],
"dependencies": { "dependencies": {
"NETStandard.Library": "1.6.0" "NETStandard.Library": "1.6.0"
} }

@ -11,12 +11,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -11,12 +11,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -11,12 +11,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -11,12 +11,13 @@
"net45": { }, "net45": { },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0" "type": "platform",
"version": "1.0.0"
}
} }
} }
} }

@ -9,16 +9,14 @@
"Grpc.Core": { "Grpc.Core": {
"target": "project" "target": "project"
}, },
"Google.Protobuf": "3.0.0-beta3", "Google.Protobuf": "3.0.0",
"CommandLineParser.Unofficial": "2.0.275", "CommandLineParser.Unofficial": "2.0.275",
"Moq": "4.6.38-alpha",
"NUnit": "3.2.0", "NUnit": "3.2.0",
"NUnitLite": "3.2.0-*" "NUnitLite": "3.2.0-*"
}, },
"frameworks": { "frameworks": {
"net45": { "net45": {
"dependencies": {
"Moq": "4.2.1510.2205"
},
"frameworkAssemblies": { "frameworkAssemblies": {
"System.Runtime": "", "System.Runtime": "",
"System.IO": "" "System.IO": ""
@ -26,12 +24,13 @@
}, },
"netcoreapp1.0": { "netcoreapp1.0": {
"imports": [ "imports": [
"portable-net45", "portable-net45"
"net45"
], ],
"dependencies": { "dependencies": {
"Microsoft.NETCore.App": "1.0.0", "Microsoft.NETCore.App": {
"NETStandard.Library": "1.6.0", "type": "platform",
"version": "1.0.0"
},
"System.Linq.Expressions": "4.1.0" "System.Linq.Expressions": "4.1.0"
} }
} }

@ -16,10 +16,12 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
% if includeData:
"include": "data/*",
% endif
"mappings": { "mappings": {
% if includeData:
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
% endif
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Debug/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Debug/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/dbg/libgrpc_csharp_ext.so",
@ -38,10 +40,12 @@
"includeFiles": [ "../Grpc.Core/Version.cs" ] "includeFiles": [ "../Grpc.Core/Version.cs" ]
}, },
"copyToOutput": { "copyToOutput": {
% if includeData:
"include": "data/*",
% endif
"mappings": { "mappings": {
% if includeData:
"data/ca.pem": "../Grpc.IntegrationTesting/data/ca.pem",
"data/server1.key": "../Grpc.IntegrationTesting/data/server1.key",
"data/server1.pem": "../Grpc.IntegrationTesting/data/server1.pem",
% endif
"grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x64.dll": "../../../vsprojects/x64/Release/grpc_csharp_ext.dll",
"grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll", "grpc_csharp_ext.x86.dll": "../../../vsprojects/Release/grpc_csharp_ext.dll",
"libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so", "libgrpc_csharp_ext.x64.so": "../../../libs/opt/libgrpc_csharp_ext.so",
@ -52,8 +56,3 @@
} }
}, },
%endif %endif
"runtimes": {
"win7-x64": { },
"debian.8-x64": { },
"osx.10.11-x64": { }
},

@ -0,0 +1,75 @@
%YAML 1.2
--- |
#!/bin/bash
# Copyright 2016, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
set -ex
cd $(dirname $0)
mkdir -p ../../artifacts/
# IMPORTANT: NuGet packages generated by dotnet CLI are considered experimental.
# The official nugets are generated by src/csharp/build_packages.bat
mkdir -p nativelibs/windows_x86 nativelibs/windows_x64 ${"\\"}
nativelibs/linux_x86 nativelibs/linux_x64 ${"\\"}
nativelibs/macosx_x86 nativelibs/macosx_x64
mkdir -p protoc_plugins/windows_x86 protoc_plugins/windows_x64 ${"\\"}
protoc_plugins/linux_x86 protoc_plugins/linux_x64 ${"\\"}
protoc_plugins/macosx_x86 protoc_plugins/macosx_x64
# Collect the artifacts built by the previous build step if running on Jenkins
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=windows/artifacts/* nativelibs/windows_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=windows/artifacts/* nativelibs/windows_x64 || true
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=linux/artifacts/* nativelibs/linux_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=linux/artifacts/* nativelibs/linux_x64 || true
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=csharp,platform=macos/artifacts/* nativelibs/macosx_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=csharp,platform=macos/artifacts/* nativelibs/macosx_x64 || true
# Collect protoc artifacts built by the previous build step
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=protoc,platform=windows/artifacts/* protoc_plugins/windows_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=protoc,platform=windows/artifacts/* protoc_plugins/windows_x64 || true
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=protoc,platform=linux/artifacts/* protoc_plugins/linux_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=protoc,platform=linux/artifacts/* protoc_plugins/linux_x64 || true
cp $EXTERNAL_GIT_ROOT/architecture=x86,language=protoc,platform=macos/artifacts/* protoc_plugins/macosx_x86 || true
cp $EXTERNAL_GIT_ROOT/architecture=x64,language=protoc,platform=macos/artifacts/* protoc_plugins/macosx_x64 || true
dotnet restore .
dotnet pack --configuration Release Grpc.Core/project.json --output ../../artifacts
dotnet pack --configuration Release Grpc.Auth/project.json --output ../../artifacts
dotnet pack --configuration Release Grpc.HealthCheck/project.json --output ../../artifacts
nuget pack Grpc.nuspec -Version "${settings.csharp_version}" -OutputDirectory ../../artifacts
nuget pack Grpc.Tools.nuspec -Version "${settings.csharp_version}" -OutputDirectory ../../artifacts
(cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg)

@ -0,0 +1,13 @@
# Install dotnet SDK based on https://www.microsoft.com/net/core#debian
RUN apt-get update && apt-get install -y curl libunwind8 gettext
RUN curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809130
RUN mkdir -p /opt/dotnet && tar zxf dotnet.tar.gz -C /opt/dotnet
RUN ln -s /opt/dotnet/dotnet /usr/local/bin
# Trigger the population of the local package cache
ENV NUGET_XMLDOC_MODE skip
RUN mkdir warmup ${'\\'}
&& cd warmup ${'\\'}
&& dotnet new ${'\\'}
&& cd .. ${'\\'}
&& rm -rf warmup

@ -0,0 +1,41 @@
%YAML 1.2
--- |
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
FROM debian:jessie
<%include file="../../apt_get_basic.include"/>
<%include file="../../python_deps.include"/>
<%include file="../../csharp_deps.include"/>
<%include file="../../csharp_dotnetcli_deps.include"/>
<%include file="../../run_tests_addons.include"/>
# Define the default command.
CMD ["bash"]

@ -34,21 +34,7 @@
<%include file="../../apt_get_basic.include"/> <%include file="../../apt_get_basic.include"/>
<%include file="../../python_deps.include"/> <%include file="../../python_deps.include"/>
<%include file="../../csharp_deps.include"/> <%include file="../../csharp_deps.include"/>
<%include file="../../csharp_dotnetcli_deps.include"/>
# Install dotnet SDK based on https://www.microsoft.com/net/core#debian
RUN apt-get update && apt-get install -y curl libunwind8 gettext
RUN curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=809130
RUN mkdir -p /opt/dotnet && tar zxf dotnet.tar.gz -C /opt/dotnet
RUN ln -s /opt/dotnet/dotnet /usr/local/bin
# Trigger the population of the local package cache
ENV NUGET_XMLDOC_MODE skip
RUN mkdir warmup ${'\\'}
&& cd warmup ${'\\'}
&& dotnet new ${'\\'}
&& cd .. ${'\\'}
&& rm -rf warmup
<%include file="../../run_tests_addons.include"/> <%include file="../../run_tests_addons.include"/>
# Define the default command. # Define the default command.
CMD ["bash"] CMD ["bash"]

@ -41,7 +41,8 @@ default_test_options = TestOptions(False, 1.0)
# maps test names to options # maps test names to options
BAD_CLIENT_TESTS = { BAD_CLIENT_TESTS = {
'cert': default_test_options._replace(cpu_cost=0.1), 'cert': default_test_options._replace(cpu_cost=0.1),
'alpn': default_test_options._replace(cpu_cost=0.1), # Disabling this test because it does not link correctly as written
# 'alpn': default_test_options._replace(cpu_cost=0.1),
} }
def main(): def main():

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save