Merge branch 'master' of https://github.com/grpc/grpc into no-more-extern-c

pull/13432/head
ncteisen 7 years ago
commit e7af52580d
  1. 2
      Makefile
  2. 4
      README.md
  3. 4
      WORKSPACE
  4. 6
      build.yaml
  5. 3
      examples/python/route_guide/route_guide_client.py
  6. 2
      requirements.txt
  7. 2
      setup.py
  8. 2
      src/compiler/cpp_generator.cc
  9. 2
      src/compiler/csharp_generator.cc
  10. 2
      src/compiler/node_generator.cc
  11. 2
      src/compiler/objective_c_generator.cc
  12. 20
      src/compiler/objective_c_plugin.cc
  13. 2
      src/compiler/php_generator.cc
  14. 1
      src/compiler/protobuf_plugin.h
  15. 2
      src/compiler/python_generator.cc
  16. 2
      src/compiler/ruby_generator.cc
  17. 1
      src/compiler/schema_interface.h
  18. 2
      src/core/lib/iomgr/sockaddr_utils.cc
  19. 96
      src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.mm
  20. 8
      src/objective-c/tests/Tests.xcodeproj/project.pbxproj
  21. 65
      src/python/grpcio/grpc/__init__.py
  22. 15
      src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
  23. 14
      src/python/grpcio/grpc/_cython/_cygrpc/server.pyx.pxi
  24. 2
      src/python/grpcio_health_checking/setup.py
  25. 2
      src/python/grpcio_reflection/setup.py
  26. 2
      src/python/grpcio_testing/setup.py
  27. 4
      src/python/grpcio_tests/setup.py
  28. 9
      src/python/grpcio_tests/tests/unit/_api_test.py
  29. 45
      src/python/grpcio_tests/tests/unit/_server_ssl_cert_config_test.py
  30. 8
      templates/test/core/surface/public_headers_must_be_c89.c.template
  31. 2
      templates/tools/dockerfile/python_deps.include
  32. 564
      test/core/surface/public_headers_must_be_c89.c
  33. 3
      test/core/util/grpc_fuzzer.bzl
  34. 2
      third_party/protobuf
  35. 2
      tools/codegen/core/gen_nano_proto.sh
  36. 4
      tools/distrib/python/grpcio_tools/protoc_lib_deps.py
  37. 2
      tools/distrib/python/grpcio_tools/setup.py
  38. 2
      tools/dockerfile/interoptest/grpc_interop_csharp/Dockerfile
  39. 2
      tools/dockerfile/interoptest/grpc_interop_csharpcoreclr/Dockerfile
  40. 2
      tools/dockerfile/interoptest/grpc_interop_cxx/Dockerfile
  41. 2
      tools/dockerfile/interoptest/grpc_interop_go/Dockerfile
  42. 2
      tools/dockerfile/interoptest/grpc_interop_go1.7/Dockerfile
  43. 2
      tools/dockerfile/interoptest/grpc_interop_go1.8/Dockerfile
  44. 2
      tools/dockerfile/interoptest/grpc_interop_http2/Dockerfile
  45. 2
      tools/dockerfile/interoptest/grpc_interop_java/Dockerfile
  46. 2
      tools/dockerfile/interoptest/grpc_interop_java_oracle8/Dockerfile
  47. 2
      tools/dockerfile/interoptest/grpc_interop_node/Dockerfile
  48. 2
      tools/dockerfile/interoptest/grpc_interop_python/Dockerfile
  49. 2
      tools/dockerfile/interoptest/grpc_interop_ruby/Dockerfile
  50. 2
      tools/dockerfile/test/csharp_jessie_x64/Dockerfile
  51. 2
      tools/dockerfile/test/cxx_alpine_x64/Dockerfile
  52. 2
      tools/dockerfile/test/cxx_jessie_x64/Dockerfile
  53. 2
      tools/dockerfile/test/cxx_jessie_x86/Dockerfile
  54. 2
      tools/dockerfile/test/cxx_ubuntu1404_x64/Dockerfile
  55. 2
      tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile
  56. 2
      tools/dockerfile/test/fuzzer/Dockerfile
  57. 2
      tools/dockerfile/test/multilang_jessie_x64/Dockerfile
  58. 2
      tools/dockerfile/test/node_jessie_x64/Dockerfile
  59. 2
      tools/dockerfile/test/php7_jessie_x64/Dockerfile
  60. 2
      tools/dockerfile/test/php_jessie_x64/Dockerfile
  61. 2
      tools/dockerfile/test/python_alpine_x64/Dockerfile
  62. 2
      tools/dockerfile/test/python_jessie_x64/Dockerfile
  63. 2
      tools/dockerfile/test/python_pyenv_x64/Dockerfile
  64. 2
      tools/dockerfile/test/ruby_jessie_x64/Dockerfile
  65. 2
      tools/dockerfile/test/sanity/Dockerfile
  66. 4
      tools/interop_matrix/README.md
  67. 29
      tools/interop_matrix/client_matrix.py
  68. 16
      tools/interop_matrix/create_matrix_images.py
  69. 36
      tools/interop_matrix/testcases/node__v1.0.1
  70. 5
      tools/run_tests/generated/configs.json
  71. 2
      tools/run_tests/sanity/check_submodules.sh

@ -114,7 +114,7 @@ CC_msan = clang
CXX_msan = clang++
LD_msan = clang++
LDXX_msan = clang++
CPPFLAGS_msan = -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
CPPFLAGS_msan = -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins -fsanitize-memory-use-after-dtor -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
DEFINES_msan = NDEBUG

@ -30,7 +30,6 @@ Libraries in different languages may be in different states of development. We a
| Shared C [core library] | [src/core](src/core) | 1.6 |
| C++ | [src/cpp](src/cpp) | 1.6 |
| Ruby | [src/ruby](src/ruby) | 1.6 |
| NodeJS | [src/node](src/node) | 1.6 |
| Python | [src/python](src/python) | 1.6 |
| PHP | [src/php](src/php) | 1.6 |
| C# | [src/csharp](src/csharp) | 1.6 |
@ -38,7 +37,8 @@ Libraries in different languages may be in different states of development. We a
Java source code is in the [grpc-java](http://github.com/grpc/grpc-java)
repository. Go source code is in the
[grpc-go](http://github.com/grpc/grpc-go) repository.
[grpc-go](http://github.com/grpc/grpc-go) repository. NodeJS source code is in the
[grpc-node](https://github.com/grpc/grpc-node) repository.
See [MANIFEST.md](MANIFEST.md) for a listing of top-level items in the
repository.

@ -73,8 +73,8 @@ new_http_archive(
http_archive(
name = "com_google_protobuf",
strip_prefix = "protobuf-80a37e0782d2d702d52234b62dd4b9ec74fd2c95",
url = "https://github.com/google/protobuf/archive/80a37e0782d2d702d52234b62dd4b9ec74fd2c95.tar.gz",
strip_prefix = "protobuf-2761122b810fe8861004ae785cc3ab39f384d342",
url = "https://github.com/google/protobuf/archive/2761122b810fe8861004ae785cc3ab39f384d342.tar.gz",
)
new_http_archive(

@ -4915,8 +4915,8 @@ configs:
msan:
CC: clang
CPPFLAGS: -O0 -fsanitize-coverage=edge -fsanitize=memory -fsanitize-memory-track-origins
-fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
-Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
-fsanitize-memory-use-after-dtor -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0
-DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
CXX: clang++
DEFINES: NDEBUG
LD: clang++
@ -4924,6 +4924,8 @@ configs:
-fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
LDXX: clang++
compile_the_world: true
test_environ:
MSAN_OPTIONS: poison_in_dtor=1
mutrace:
CPPFLAGS: -O3 -fno-omit-frame-pointer
DEFINES: NDEBUG

@ -17,7 +17,6 @@
from __future__ import print_function
import random
import time
import grpc
@ -66,7 +65,6 @@ def generate_route(feature_list):
random_feature = feature_list[random.randint(0, len(feature_list) - 1)]
print("Visiting point %s" % random_feature.location)
yield random_feature.location
time.sleep(random.uniform(0.5, 1.5))
def guide_record_route(stub):
@ -91,7 +89,6 @@ def generate_messages():
for msg in messages:
print("Sending %s at %s" % (msg.message, msg.location))
yield msg
time.sleep(random.uniform(0.5, 1.0))
def guide_route_chat(stub):

@ -3,6 +3,6 @@ coverage>=4.0
cython>=0.23
enum34>=1.0.4
futures>=2.2.0
protobuf>=3.2.0
protobuf>=3.5.0.post1
six>=1.10
wheel>=0.29

@ -237,7 +237,7 @@ INSTALL_REQUIRES = (
'six>=1.5.2',
# TODO(atash): eventually split the grpcio package into a metapackage
# depending on protobuf and the runtime component (independent of protobuf)
'protobuf>=3.3.0',
'protobuf>=3.5.0.post1',
)
if not PY3:

@ -104,7 +104,7 @@ grpc::string GetHeaderPrologue(grpc_generator::File* file,
grpc::string leading_comments = file->GetLeadingComments("//");
if (!leading_comments.empty()) {
printer->Print(vars, "// Original file comments:\n");
printer->Print(leading_comments.c_str());
printer->PrintRaw(leading_comments.c_str());
}
printer->Print(vars, "#ifndef GRPC_$filename_identifier$__INCLUDED\n");
printer->Print(vars, "#define GRPC_$filename_identifier$__INCLUDED\n");

@ -666,7 +666,7 @@ grpc::string GetServices(const FileDescriptor* file, bool generate_client,
grpc::string leading_comments = GetCsharpComments(file, true);
if (!leading_comments.empty()) {
out.Print("// Original file comments:\n");
out.Print(leading_comments.c_str());
out.PrintRaw(leading_comments.c_str());
}
out.Print("#pragma warning disable 1591\n");

@ -250,7 +250,7 @@ grpc::string GenerateFile(const FileDescriptor* file) {
grpc::string leading_comments = GetNodeComments(file, true);
if (!leading_comments.empty()) {
out.Print("// Original file comments:\n");
out.Print(leading_comments.c_str());
out.PrintRaw(leading_comments.c_str());
}
out.Print("'use strict';\n");

@ -65,7 +65,7 @@ static void PrintAllComments(const DescriptorType* desc, Printer* printer) {
printer->Print(" * ");
size_t start_pos = it->find_first_not_of(' ');
if (start_pos != grpc::string::npos) {
printer->Print(it->c_str() + start_pos);
printer->PrintRaw(it->c_str() + start_pos);
}
printer->Print("\n");
}

@ -51,12 +51,15 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
{
// Generate .pbrpc.h
::grpc::string imports = ::grpc::string("#import \"") + file_name +
".pbobjc.h\"\n\n"
"#import <ProtoRPC/ProtoService.h>\n"
"#import <ProtoRPC/ProtoRPC.h>\n"
"#import <RxLibrary/GRXWriteable.h>\n"
"#import <RxLibrary/GRXWriter.h>\n";
::grpc::string imports =
::grpc::string("#if !GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO\n") +
"#import \"" + file_name +
".pbobjc.h\"\n"
"#endif\n\n"
"#import <ProtoRPC/ProtoService.h>\n"
"#import <ProtoRPC/ProtoRPC.h>\n"
"#import <RxLibrary/GRXWriteable.h>\n"
"#import <RxLibrary/GRXWriter.h>\n";
::grpc::string proto_imports;
proto_imports += "#if GPB_GRPC_FORWARD_DECLARE_MESSAGE_PROTO\n" +
@ -105,7 +108,10 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
// Generate .pbrpc.m
::grpc::string imports = ::grpc::string("#import \"") + file_name +
".pbrpc.h\"\n\n"
".pbrpc.h\"\n"
"#import \"" +
file_name +
".pbobjc.h\"\n\n"
"#import <ProtoRPC/ProtoRPC.h>\n"
"#import <RxLibrary/GRXWriter+Immediate.h>\n";
for (int i = 0; i < file->dependency_count(); i++) {

@ -164,7 +164,7 @@ grpc::string GenerateFile(const FileDescriptor* file,
grpc::string leading_comments = GetPHPComments(file, "//");
if (!leading_comments.empty()) {
out.Print("// Original file comments:\n");
out.Print(leading_comments.c_str());
out.PrintRaw(leading_comments.c_str());
}
map<grpc::string, grpc::string> vars;

@ -141,6 +141,7 @@ class ProtoBufPrinter : public grpc_generator::Printer {
}
void Print(const char* string) { printer_.Print(string); }
void PrintRaw(const char* string) { printer_.PrintRaw(string); }
void Indent() { printer_.Indent(); }
void Outdent() { printer_.Outdent(); }

@ -101,7 +101,7 @@ void PrivateGenerator::PrintAllComments(StringVector comments,
++it) {
size_t start_pos = it->find_first_not_of(' ');
if (start_pos != grpc::string::npos) {
out->Print(it->c_str() + start_pos);
out->PrintRaw(it->c_str() + start_pos);
}
out->Print("\n");
}

@ -174,7 +174,7 @@ grpc::string GetServices(const FileDescriptor* file) {
grpc::string leading_comments = GetRubyComments(file, true);
if (!leading_comments.empty()) {
out.Print("# Original file comments:\n");
out.Print(leading_comments.c_str());
out.PrintRaw(leading_comments.c_str());
}
out.Print("\n");

@ -86,6 +86,7 @@ struct Printer {
virtual void Print(const std::map<grpc::string, grpc::string>& vars,
const char* template_string) = 0;
virtual void Print(const char* string) = 0;
virtual void PrintRaw(const char* string) = 0;
virtual void Indent() = 0;
virtual void Outdent() = 0;
};

@ -148,7 +148,7 @@ int grpc_sockaddr_to_string(char** out,
grpc_resolved_address addr_normalized;
char ntop_buf[INET6_ADDRSTRLEN];
const void* ip = nullptr;
int port;
int port = 0;
uint32_t sin6_scope_id = 0;
int ret;

@ -58,7 +58,7 @@ static grpc_end2end_test_fixture chttp2_create_fixture_secure_fullstack(
grpc_end2end_test_fixture f;
int port = grpc_pick_unused_port_or_die();
fullstack_secure_fixture_data *ffd =
gpr_malloc(sizeof(fullstack_secure_fixture_data));
(fullstack_secure_fixture_data*)gpr_malloc(sizeof(fullstack_secure_fixture_data));
memset(&f, 0, sizeof(f));
gpr_join_host_port(&ffd->localaddr, "127.0.0.1", port);
@ -81,7 +81,7 @@ static void process_auth_failure(void *state, grpc_auth_context *ctx,
static void cronet_init_client_secure_fullstack(grpc_end2end_test_fixture *f,
grpc_channel_args *client_args,
stream_engine *cronetEngine) {
fullstack_secure_fixture_data *ffd = f->fixture_data;
fullstack_secure_fixture_data *ffd = (fullstack_secure_fixture_data *)f->fixture_data;
f->client = grpc_cronet_secure_channel_create(cronetEngine, ffd->localaddr,
client_args, NULL);
GPR_ASSERT(f->client != NULL);
@ -90,7 +90,7 @@ static void cronet_init_client_secure_fullstack(grpc_end2end_test_fixture *f,
static void chttp2_init_server_secure_fullstack(
grpc_end2end_test_fixture *f, grpc_channel_args *server_args,
grpc_server_credentials *server_creds) {
fullstack_secure_fixture_data *ffd = f->fixture_data;
fullstack_secure_fixture_data *ffd = (fullstack_secure_fixture_data *)f->fixture_data;
if (f->server) {
grpc_server_destroy(f->server);
}
@ -103,7 +103,7 @@ static void chttp2_init_server_secure_fullstack(
}
static void chttp2_tear_down_secure_fullstack(grpc_end2end_test_fixture *f) {
fullstack_secure_fixture_data *ffd = f->fixture_data;
fullstack_secure_fixture_data *ffd = (fullstack_secure_fixture_data *)f->fixture_data;
gpr_free(ffd->localaddr);
gpr_free(ffd);
}
@ -171,7 +171,7 @@ static char *roots_filename;
FILE *roots_file;
size_t roots_size = strlen(test_root_cert);
char *argv[] = {"CoreCronetEnd2EndTests"};
char *argv[] = {(char *)"CoreCronetEnd2EndTests"};
grpc_test_init(1, argv);
grpc_end2end_tests_pre_init();
@ -207,7 +207,7 @@ static char *roots_filename;
}
- (void)testIndividualCase:(char *)test_case {
char *argv[] = {"h2_ssl", test_case};
char *argv[] = {(char *)"h2_ssl", test_case};
for (int i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(sizeof(argv) / sizeof(argv[0]), argv, configs[i]);
@ -217,182 +217,182 @@ static char *roots_filename;
// TODO(mxyan): Use NSStringFromSelector(_cmd) to acquire test name from the
// test case method name, so that bodies of test cases can stay identical
- (void)testAuthorityNotSupported {
[self testIndividualCase:"authority_not_supported"];
[self testIndividualCase:(char *)"authority_not_supported"];
}
- (void)testBadHostname {
[self testIndividualCase:"bad_hostname"];
[self testIndividualCase:(char *)"bad_hostname"];
}
- (void)testBinaryMetadata {
// NOT SUPPORTED
//[self testIndividualCase:"binary_metadata"];
//[self testIndividualCase:(char *)"binary_metadata"];
}
- (void)testCallCreds {
// NOT SUPPORTED
// [self testIndividualCase:"call_creds"];
// [self testIndividualCase:(char *)"call_creds"];
}
- (void)testCancelAfterAccept {
[self testIndividualCase:"cancel_after_accept"];
[self testIndividualCase:(char *)"cancel_after_accept"];
}
- (void)testCancelAfterClientDone {
[self testIndividualCase:"cancel_after_client_done"];
[self testIndividualCase:(char *)"cancel_after_client_done"];
}
- (void)testCancelAfterInvoke {
[self testIndividualCase:"cancel_after_invoke"];
[self testIndividualCase:(char *)"cancel_after_invoke"];
}
- (void)testCancelAfterRoundTrip {
[self testIndividualCase:"cancel_after_round_trip"];
[self testIndividualCase:(char *)"cancel_after_round_trip"];
}
- (void)testCancelBeforeInvoke {
[self testIndividualCase:"cancel_before_invoke"];
[self testIndividualCase:(char *)"cancel_before_invoke"];
}
- (void)testCancelInAVacuum {
[self testIndividualCase:"cancel_in_a_vacuum"];
[self testIndividualCase:(char *)"cancel_in_a_vacuum"];
}
- (void)testCancelWithStatus {
[self testIndividualCase:"cancel_with_status"];
[self testIndividualCase:(char *)"cancel_with_status"];
}
- (void)testCompressedPayload {
[self testIndividualCase:"compressed_payload"];
[self testIndividualCase:(char *)"compressed_payload"];
}
- (void)testConnectivity {
// NOT SUPPORTED
// [self testIndividualCase:"connectivity"];
// [self testIndividualCase:(char *)"connectivity"];
}
- (void)testDefaultHost {
[self testIndividualCase:"default_host"];
[self testIndividualCase:(char *)"default_host"];
}
- (void)testDisappearingServer {
[self testIndividualCase:"disappearing_server"];
[self testIndividualCase:(char *)"disappearing_server"];
}
- (void)testEmptyBatch {
[self testIndividualCase:"empty_batch"];
[self testIndividualCase:(char *)"empty_batch"];
}
- (void)testFilterCausesClose {
// NOT SUPPORTED
// [self testIndividualCase:"filter_causes_close"];
// [self testIndividualCase:(char *)"filter_causes_close"];
}
- (void)testGracefulServerShutdown {
[self testIndividualCase:"graceful_server_shutdown"];
[self testIndividualCase:(char *)"graceful_server_shutdown"];
}
- (void)testHighInitialSeqno {
[self testIndividualCase:"high_initial_seqno"];
[self testIndividualCase:(char *)"high_initial_seqno"];
}
- (void)testHpackSize {
// NOT SUPPORTED
// [self testIndividualCase:"hpack_size"];
// [self testIndividualCase:(char *)"hpack_size"];
}
- (void)testIdempotentRequest {
// NOT SUPPORTED
// [self testIndividualCase:"idempotent_request"];
// [self testIndividualCase:(char *)"idempotent_request"];
}
- (void)testInvokeLargeRequest {
// NOT SUPPORTED (frame size)
// [self testIndividualCase:"invoke_large_request"];
// [self testIndividualCase:(char *)"invoke_large_request"];
}
- (void)testLargeMetadata {
// NOT SUPPORTED
// [self testIndividualCase:"large_metadata"];
// [self testIndividualCase:(char *)"large_metadata"];
}
- (void)testMaxConcurrentStreams {
[self testIndividualCase:"max_concurrent_streams"];
[self testIndividualCase:(char *)"max_concurrent_streams"];
}
- (void)testMaxMessageLength {
// NOT SUPPORTED (close_error)
// [self testIndividualCase:"max_message_length"];
// [self testIndividualCase:(char *)"max_message_length"];
}
- (void)testNegativeDeadline {
[self testIndividualCase:"negative_deadline"];
[self testIndividualCase:(char *)"negative_deadline"];
}
- (void)testNetworkStatusChange {
[self testIndividualCase:"network_status_change"];
[self testIndividualCase:(char *)"network_status_change"];
}
- (void)testNoOp {
[self testIndividualCase:"no_op"];
[self testIndividualCase:(char *)"no_op"];
}
- (void)testPayload {
[self testIndividualCase:"payload"];
[self testIndividualCase:(char *)"payload"];
}
- (void)testPing {
// NOT SUPPORTED
// [self testIndividualCase:"ping"];
// [self testIndividualCase:(char *)"ping"];
}
- (void)testPingPongStreaming {
[self testIndividualCase:"ping_pong_streaming"];
[self testIndividualCase:(char *)"ping_pong_streaming"];
}
- (void)testRegisteredCall {
[self testIndividualCase:"registered_call"];
[self testIndividualCase:(char *)"registered_call"];
}
- (void)testRequestWithFlags {
// NOT SUPPORTED
// [self testIndividualCase:"request_with_flags"];
// [self testIndividualCase:(char *)"request_with_flags"];
}
- (void)testRequestWithPayload {
[self testIndividualCase:"request_with_payload"];
[self testIndividualCase:(char *)"request_with_payload"];
}
- (void)testServerFinishesRequest {
[self testIndividualCase:"server_finishes_request"];
[self testIndividualCase:(char *)"server_finishes_request"];
}
- (void)testShutdownFinishesCalls {
[self testIndividualCase:"shutdown_finishes_calls"];
[self testIndividualCase:(char *)"shutdown_finishes_calls"];
}
- (void)testShutdownFinishesTags {
[self testIndividualCase:"shutdown_finishes_tags"];
[self testIndividualCase:(char *)"shutdown_finishes_tags"];
}
- (void)testSimpleDelayedRequest {
[self testIndividualCase:"simple_delayed_request"];
[self testIndividualCase:(char *)"simple_delayed_request"];
}
- (void)testSimpleMetadata {
[self testIndividualCase:"simple_metadata"];
[self testIndividualCase:(char *)"simple_metadata"];
}
- (void)testSimpleRequest {
[self testIndividualCase:"simple_request"];
[self testIndividualCase:(char *)"simple_request"];
}
- (void)testStreamingErrorResponse {
[self testIndividualCase:"streaming_error_response"];
[self testIndividualCase:(char *)"streaming_error_response"];
}
- (void)testTrailingMetadata {
[self testIndividualCase:"trailing_metadata"];
[self testIndividualCase:(char *)"trailing_metadata"];
}
@end

@ -14,7 +14,7 @@
20DFDF829DD993A4A00D5662 /* libPods-RxLibraryUnitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A58BE6DF1C62D1739EBB2C78 /* libPods-RxLibraryUnitTests.a */; };
333E8FC01C8285B7C547D799 /* libPods-InteropTestsLocalCleartext.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FD346DB2C23F676C4842F3FF /* libPods-InteropTestsLocalCleartext.a */; };
3D7C85F6AA68C4A205E3BA16 /* libPods-Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20DFF2F3C97EF098FE5A3171 /* libPods-Tests.a */; };
5E8A5DA71D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m */; };
5E8A5DA71D3840B4000F8BC4 /* CoreCronetEnd2EndTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.mm */; };
5E8A5DA91D3840B4000F8BC4 /* libTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 635697C71B14FC11007A7283 /* libTests.a */; };
5EAD6D271E27047400002378 /* CronetUnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EAD6D261E27047400002378 /* CronetUnitTests.m */; };
5EAD6D291E27047400002378 /* libTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 635697C71B14FC11007A7283 /* libTests.a */; };
@ -140,7 +140,7 @@
573450F334B331D0BED8B961 /* Pods-CoreCronetEnd2EndTests.cronet.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CoreCronetEnd2EndTests.cronet.xcconfig"; path = "Pods/Target Support Files/Pods-CoreCronetEnd2EndTests/Pods-CoreCronetEnd2EndTests.cronet.xcconfig"; sourceTree = "<group>"; };
5761E98978DDDF136A58CB7E /* Pods-AllTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AllTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-AllTests/Pods-AllTests.release.xcconfig"; sourceTree = "<group>"; };
5E8A5DA41D3840B4000F8BC4 /* CoreCronetEnd2EndTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CoreCronetEnd2EndTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CoreCronetEnd2EndTests.m; sourceTree = "<group>"; };
5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CoreCronetEnd2EndTests.mm; sourceTree = "<group>"; };
5EAD6D241E27047400002378 /* CronetUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = CronetUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
5EAD6D261E27047400002378 /* CronetUnitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CronetUnitTests.m; sourceTree = "<group>"; };
5EAD6D281E27047400002378 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@ -343,7 +343,7 @@
5E8A5DA51D3840B4000F8BC4 /* CoreCronetEnd2EndTests */ = {
isa = PBXGroup;
children = (
5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m */,
5E8A5DA61D3840B4000F8BC4 /* CoreCronetEnd2EndTests.mm */,
);
path = CoreCronetEnd2EndTests;
sourceTree = "<group>";
@ -1196,7 +1196,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5E8A5DA71D3840B4000F8BC4 /* CoreCronetEnd2EndTests.m in Sources */,
5E8A5DA71D3840B4000F8BC4 /* CoreCronetEnd2EndTests.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

@ -424,17 +424,19 @@ class ServerCredentials(object):
self._credentials = credentials
class ServerCertificateConfig(object):
"""A certificate config for use with an SSL-enabled Server, e.g., can
be returned in the certificate config fetching callback.
class ServerCertificateConfiguration(object):
"""A certificate configuration for use with an SSL-enabled Server.
Instances of this class can be returned in the certificate configuration
fetching callback.
This class has no supported interface -- it exists to define the
type of its instances and its instances exist to be passed to
other functions.
"""
def __init__(self, cert_config):
self._cert_config = cert_config
def __init__(self, certificate_configuration):
self._certificate_configuration = certificate_configuration
######################## Multi-Callable Interfaces ###########################
@ -1265,9 +1267,9 @@ def ssl_server_credentials(private_key_certificate_chain_pairs,
], require_client_auth))
def ssl_server_certificate_config(private_key_certificate_chain_pairs,
root_certificates=None):
"""Creates a ServerCertificateConfig for use with an SSL-enabled Server.
def ssl_server_certificate_configuration(private_key_certificate_chain_pairs,
root_certificates=None):
"""Creates a ServerCertificateConfiguration for use with a Server.
Args:
private_key_certificate_chain_pairs: A collection of pairs of
@ -1277,38 +1279,38 @@ def ssl_server_certificate_config(private_key_certificate_chain_pairs,
certificates that the server will use to verify client authentication.
Returns:
A ServerCertificateConfig that can be returned in the certificate config
fetching callback.
A ServerCertificateConfiguration that can be returned in the certificate
configuration fetching callback.
"""
if len(private_key_certificate_chain_pairs) == 0:
raise ValueError(
'At least one private key-certificate chain pair is required!')
else:
return ServerCertificateConfig(
return ServerCertificateConfiguration(
_cygrpc.server_certificate_config_ssl(root_certificates, [
_cygrpc.SslPemKeyCertPair(key, pem)
for key, pem in private_key_certificate_chain_pairs
]))
def ssl_server_credentials_dynamic_cert_config(initial_cert_config,
cert_config_fetcher,
require_client_auth=False):
def dynamic_ssl_server_credentials(initial_certificate_configuration,
certificate_configuration_fetcher,
require_client_authentication=False):
"""Creates a ServerCredentials for use with an SSL-enabled Server.
Args:
initial_cert_config (ServerCertificateConfig): the certificate
config with which the server will be initialized.
cert_config_fetcher (callable): a callable that takes no
arguments and should return a ServerCertificateConfig to
replace the server's current cert, or None for no change
initial_certificate_configuration (ServerCertificateConfiguration): The
certificate configuration with which the server will be initialized.
certificate_configuration_fetcher (callable): A callable that takes no
arguments and should return a ServerCertificateConfiguration to
replace the server's current certificate, or None for no change
(i.e., the server will continue its current certificate
config). The library will call this callback on *every* new
client connection before starting the TLS handshake with the
client, thus allowing the user application to optionally
return a new ServerCertificateConfig that the server will then
return a new ServerCertificateConfiguration that the server will then
use for the handshake.
require_client_auth: A boolean indicating whether or not to
require_client_authentication: A boolean indicating whether or not to
require clients to be authenticated.
Returns:
@ -1316,7 +1318,8 @@ def ssl_server_credentials_dynamic_cert_config(initial_cert_config,
"""
return ServerCredentials(
_cygrpc.server_credentials_ssl_dynamic_cert_config(
initial_cert_config, cert_config_fetcher, require_client_auth))
initial_certificate_configuration,
certificate_configuration_fetcher, require_client_authentication))
def channel_ready_future(channel):
@ -1401,19 +1404,19 @@ __all__ = ('FutureTimeoutError', 'FutureCancelledError', 'Future',
'ChannelConnectivity', 'StatusCode', 'RpcError', 'RpcContext',
'Call', 'ChannelCredentials', 'CallCredentials',
'AuthMetadataContext', 'AuthMetadataPluginCallback',
'AuthMetadataPlugin', 'ServerCertificateConfig', 'ServerCredentials',
'UnaryUnaryMultiCallable', 'UnaryStreamMultiCallable',
'StreamUnaryMultiCallable', 'StreamStreamMultiCallable', 'Channel',
'ServicerContext', 'RpcMethodHandler', 'HandlerCallDetails',
'GenericRpcHandler', 'ServiceRpcHandler', 'Server',
'unary_unary_rpc_method_handler', 'unary_stream_rpc_method_handler',
'stream_unary_rpc_method_handler',
'AuthMetadataPlugin', 'ServerCertificateConfiguration',
'ServerCredentials', 'UnaryUnaryMultiCallable',
'UnaryStreamMultiCallable', 'StreamUnaryMultiCallable',
'StreamStreamMultiCallable', 'Channel', 'ServicerContext',
'RpcMethodHandler', 'HandlerCallDetails', 'GenericRpcHandler',
'ServiceRpcHandler', 'Server', 'unary_unary_rpc_method_handler',
'unary_stream_rpc_method_handler', 'stream_unary_rpc_method_handler',
'stream_stream_rpc_method_handler',
'method_handlers_generic_handler', 'ssl_channel_credentials',
'metadata_call_credentials', 'access_token_call_credentials',
'composite_call_credentials', 'composite_channel_credentials',
'ssl_server_credentials', 'ssl_server_certificate_config',
'ssl_server_credentials_dynamic_cert_config', 'channel_ready_future',
'ssl_server_credentials', 'ssl_server_certificate_configuration',
'dynamic_ssl_server_credentials', 'channel_ready_future',
'insecure_channel', 'secure_channel', 'server',)
############################### Extension Shims ################################

@ -274,10 +274,10 @@ def call_credentials_metadata_plugin(CredentialsMetadataPlugin plugin):
return credentials
cdef const char* _get_c_pem_root_certs(pem_root_certs):
cdef char *c_pem_root_certs = NULL
if pem_root_certs is not None:
c_pem_root_certs = pem_root_certs
return c_pem_root_certs
if pem_root_certs is None:
return NULL
else:
return pem_root_certs
cdef grpc_ssl_pem_key_cert_pair* _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs):
# return a malloc'ed grpc_ssl_pem_key_cert_pair from a _list_ of SslPemKeyCertPair
@ -303,7 +303,7 @@ def server_credentials_ssl(pem_root_certs, pem_key_cert_pairs,
cdef ServerCredentials credentials = ServerCredentials()
credentials.references.append(pem_root_certs)
credentials.references.append(pem_key_cert_pairs)
cdef char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
cdef const char * c_pem_root_certs = _get_c_pem_root_certs(pem_root_certs)
credentials.c_ssl_pem_key_cert_pairs_count = len(pem_key_cert_pairs)
credentials.c_ssl_pem_key_cert_pairs = _create_c_ssl_pem_key_cert_pairs(pem_key_cert_pairs)
cdef grpc_ssl_server_certificate_config *c_cert_config = NULL
@ -338,8 +338,9 @@ def server_certificate_config_ssl(pem_root_certs, pem_key_cert_pairs):
def server_credentials_ssl_dynamic_cert_config(initial_cert_config,
cert_config_fetcher,
bint force_client_auth):
if not isinstance(initial_cert_config, grpc.ServerCertificateConfig):
raise TypeError('initial_cert_config must be a grpc.ServerCertificateConfig')
if not isinstance(initial_cert_config, grpc.ServerCertificateConfiguration):
raise TypeError(
'initial_cert_config must be a grpc.ServerCertificateConfiguration')
if not callable(cert_config_fetcher):
raise TypeError('cert_config_fetcher must be callable')
cdef ServerCredentials credentials = ServerCredentials()

@ -28,7 +28,7 @@ cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapp
if not credentials.initial_cert_config_fetched:
# C-core is asking for the initial cert config
credentials.initial_cert_config_fetched = True
cert_config = credentials.initial_cert_config._cert_config
cert_config = credentials.initial_cert_config._certificate_configuration
else:
user_cb = credentials.cert_config_fetcher
try:
@ -38,13 +38,15 @@ cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapp
return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
if cert_config_wrapper is None:
return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_UNCHANGED
elif not isinstance(cert_config_wrapper, grpc.ServerCertificateConfig):
logging.error('Error fetching certificate config: certificate '
'config must be of type grpc.ServerCertificateConfig, '
'not %s' % type(cert_config_wrapper).__name__)
elif not isinstance(
cert_config_wrapper, grpc.ServerCertificateConfiguration):
logging.error(
'Error fetching certificate configuration: certificate '
'configuration must be of type grpc.ServerCertificateConfiguration, '
'not %s' % type(cert_config_wrapper).__name__)
return GRPC_SSL_CERTIFICATE_CONFIG_RELOAD_FAIL
else:
cert_config = cert_config_wrapper._cert_config
cert_config = cert_config_wrapper._certificate_configuration
config[0] = <grpc_ssl_server_certificate_config*>cert_config.c_cert_config
# our caller will assume ownership of memory, so we have to recreate
# a copy of c_cert_config here

@ -56,7 +56,7 @@ PACKAGE_DIRECTORIES = {
'': '.',
}
INSTALL_REQUIRES = ('protobuf>=3.3.0',
INSTALL_REQUIRES = ('protobuf>=3.5.0.post1',
'grpcio>={version}'.format(version=grpc_version.VERSION),)
try:

@ -57,7 +57,7 @@ PACKAGE_DIRECTORIES = {
'': '.',
}
INSTALL_REQUIRES = ('protobuf>=3.3.0',
INSTALL_REQUIRES = ('protobuf>=3.5.0.post1',
'grpcio>={version}'.format(version=grpc_version.VERSION),)
try:

@ -28,7 +28,7 @@ PACKAGE_DIRECTORIES = {
'': '.',
}
INSTALL_REQUIRES = ('protobuf>=3.3.0',
INSTALL_REQUIRES = ('protobuf>=3.5.0.post1',
'grpcio>={version}'.format(version=grpc_version.VERSION),)
setuptools.setup(

@ -41,8 +41,8 @@ INSTALL_REQUIRES = (
'grpcio>={version}'.format(version=grpc_version.VERSION),
'grpcio-tools>={version}'.format(version=grpc_version.VERSION),
'grpcio-health-checking>={version}'.format(version=grpc_version.VERSION),
'oauth2client>=1.4.7', 'protobuf>=3.3.0', 'six>=1.10', 'google-auth>=1.0.0',
'requests>=2.14.2')
'oauth2client>=1.4.7', 'protobuf>=3.5.0.post1', 'six>=1.10',
'google-auth>=1.0.0', 'requests>=2.14.2')
COMMAND_CLASS = {
# Run `preprocess` *before* doing any packaging!

@ -30,7 +30,7 @@ class AllTest(unittest.TestCase):
'ChannelConnectivity', 'StatusCode', 'RpcError', 'RpcContext',
'Call', 'ChannelCredentials', 'CallCredentials',
'AuthMetadataContext', 'AuthMetadataPluginCallback',
'AuthMetadataPlugin', 'ServerCertificateConfig',
'AuthMetadataPlugin', 'ServerCertificateConfiguration',
'ServerCredentials', 'UnaryUnaryMultiCallable',
'UnaryStreamMultiCallable', 'StreamUnaryMultiCallable',
'StreamStreamMultiCallable', 'Channel', 'ServicerContext',
@ -42,10 +42,9 @@ class AllTest(unittest.TestCase):
'method_handlers_generic_handler', 'ssl_channel_credentials',
'metadata_call_credentials', 'access_token_call_credentials',
'composite_call_credentials', 'composite_channel_credentials',
'ssl_server_credentials', 'ssl_server_certificate_config',
'ssl_server_credentials_dynamic_cert_config',
'channel_ready_future', 'insecure_channel', 'secure_channel',
'server',)
'ssl_server_credentials', 'ssl_server_certificate_configuration',
'dynamic_ssl_server_credentials', 'channel_ready_future',
'insecure_channel', 'secure_channel', 'server',)
six.assertCountEqual(self, expected_grpc_code_elements,
_from_grpc_import_star.GRPC_ELEMENTS)

@ -11,11 +11,10 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""
This tests server certificate rotation support.
"""Tests server certificate rotation.
Here we test various aspects of gRPC Python, and in some cases C-core
by extension, support for server certificate rotation.
Here we test various aspects of gRPC Python, and in some cases gRPC
Core by extension, support for server certificate rotation.
* ServerSSLCertReloadTestWithClientAuth: test ability to rotate
server's SSL cert for use in future channels with clients while not
@ -27,7 +26,7 @@ by extension, support for server certificate rotation.
not authenticate the client.
* ServerSSLCertReloadTestCertConfigReuse: tests gRPC Python's ability
to deal with user's reuse of ServerCertificateConfig instances.
to deal with user's reuse of ServerCertificateConfiguration instances.
"""
import abc
@ -140,14 +139,14 @@ class _ServerSSLCertReloadTest(
services_pb2_grpc.add_FirstServiceServicer_to_server(
_server_application.FirstServiceServicer(), self.server)
switch_cert_on_client_num = 10
initial_cert_config = grpc.ssl_server_certificate_config(
initial_cert_config = grpc.ssl_server_certificate_configuration(
[(SERVER_KEY_1_PEM, SERVER_CERT_CHAIN_1_PEM)],
root_certificates=CA_2_PEM)
self.cert_config_fetcher = CertConfigFetcher()
server_credentials = grpc.ssl_server_credentials_dynamic_cert_config(
server_credentials = grpc.dynamic_ssl_server_credentials(
initial_cert_config,
self.cert_config_fetcher,
require_client_auth=self.require_client_auth())
require_client_authentication=self.require_client_auth())
self.port = self.server.add_secure_port('[::]:0', server_credentials)
self.server.start()
@ -285,7 +284,7 @@ class _ServerSSLCertReloadTest(
# moment of truth!! client should reject server because the
# server switch cert...
cert_config = grpc.ssl_server_certificate_config(
cert_config = grpc.ssl_server_certificate_configuration(
[(SERVER_KEY_2_PEM, SERVER_CERT_CHAIN_2_PEM)],
root_certificates=CA_1_PEM)
self.cert_config_fetcher.reset()
@ -362,18 +361,18 @@ class ServerSSLCertConfigFetcherParamsChecks(unittest.TestCase):
def test_check_on_initial_config(self):
with self.assertRaises(TypeError):
grpc.ssl_server_credentials_dynamic_cert_config(None, str)
grpc.dynamic_ssl_server_credentials(None, str)
with self.assertRaises(TypeError):
grpc.ssl_server_credentials_dynamic_cert_config(1, str)
grpc.dynamic_ssl_server_credentials(1, str)
def test_check_on_config_fetcher(self):
cert_config = grpc.ssl_server_certificate_config(
cert_config = grpc.ssl_server_certificate_configuration(
[(SERVER_KEY_2_PEM, SERVER_CERT_CHAIN_2_PEM)],
root_certificates=CA_1_PEM)
with self.assertRaises(TypeError):
grpc.ssl_server_credentials_dynamic_cert_config(cert_config, None)
grpc.dynamic_ssl_server_credentials(cert_config, None)
with self.assertRaises(TypeError):
grpc.ssl_server_credentials_dynamic_cert_config(cert_config, 1)
grpc.dynamic_ssl_server_credentials(cert_config, 1)
class ServerSSLCertReloadTestWithClientAuth(_ServerSSLCertReloadTest):
@ -393,14 +392,14 @@ class ServerSSLCertReloadTestWithoutClientAuth(_ServerSSLCertReloadTest):
class ServerSSLCertReloadTestCertConfigReuse(_ServerSSLCertReloadTest):
"""Ensures that `ServerCertificateConfig` instances can be reused.
"""Ensures that `ServerCertificateConfiguration` instances can be reused.
Because C-core takes ownership of the
Because gRPC Core takes ownership of the
`grpc_ssl_server_certificate_config` encapsulated by
`ServerCertificateConfig`, this test reuses the same
`ServerCertificateConfig` instances multiple times to make sure
`ServerCertificateConfiguration`, this test reuses the same
`ServerCertificateConfiguration` instances multiple times to make sure
gRPC Python takes care of maintaining the validity of
`ServerCertificateConfig` instances, so that such instances can be
`ServerCertificateConfiguration` instances, so that such instances can be
re-used by user application.
"""
@ -411,17 +410,17 @@ class ServerSSLCertReloadTestCertConfigReuse(_ServerSSLCertReloadTest):
self.server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
services_pb2_grpc.add_FirstServiceServicer_to_server(
_server_application.FirstServiceServicer(), self.server)
self.cert_config_A = grpc.ssl_server_certificate_config(
self.cert_config_A = grpc.ssl_server_certificate_configuration(
[(SERVER_KEY_1_PEM, SERVER_CERT_CHAIN_1_PEM)],
root_certificates=CA_2_PEM)
self.cert_config_B = grpc.ssl_server_certificate_config(
self.cert_config_B = grpc.ssl_server_certificate_configuration(
[(SERVER_KEY_2_PEM, SERVER_CERT_CHAIN_2_PEM)],
root_certificates=CA_1_PEM)
self.cert_config_fetcher = CertConfigFetcher()
server_credentials = grpc.ssl_server_credentials_dynamic_cert_config(
server_credentials = grpc.dynamic_ssl_server_credentials(
self.cert_config_A,
self.cert_config_fetcher,
require_client_auth=True)
require_client_authentication=True)
self.port = self.server.add_secure_port('[::]:0', server_credentials)
self.server.start()

@ -48,10 +48,8 @@
#include <stdio.h>
int main(int argc, char **argv) {
if(argc == 12345678) {
% for fn in fns:
printf("%lx", (unsigned long) ${fn});
% endfor
}
% for fn in fns:
printf("%lx", (unsigned long) ${fn});
% endfor
return 0;
}

@ -11,4 +11,4 @@ RUN apt-get update && apt-get install -y ${'\\'}
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0

@ -66,288 +66,286 @@
#include <stdio.h>
int main(int argc, char **argv) {
if(argc == 12345678) {
printf("%lx", (unsigned long) grpc_compression_algorithm_parse);
printf("%lx", (unsigned long) grpc_compression_algorithm_name);
printf("%lx", (unsigned long) grpc_stream_compression_algorithm_name);
printf("%lx", (unsigned long) grpc_compression_algorithm_for_level);
printf("%lx", (unsigned long) grpc_stream_compression_algorithm_for_level);
printf("%lx", (unsigned long) grpc_compression_options_init);
printf("%lx", (unsigned long) grpc_compression_options_enable_algorithm);
printf("%lx", (unsigned long) grpc_compression_options_disable_algorithm);
printf("%lx", (unsigned long) grpc_compression_options_is_algorithm_enabled);
printf("%lx", (unsigned long) grpc_compression_options_is_stream_compression_algorithm_enabled);
printf("%lx", (unsigned long) grpc_metadata_array_init);
printf("%lx", (unsigned long) grpc_metadata_array_destroy);
printf("%lx", (unsigned long) grpc_call_details_init);
printf("%lx", (unsigned long) grpc_call_details_destroy);
printf("%lx", (unsigned long) grpc_register_plugin);
printf("%lx", (unsigned long) grpc_init);
printf("%lx", (unsigned long) grpc_shutdown);
printf("%lx", (unsigned long) grpc_version_string);
printf("%lx", (unsigned long) grpc_g_stands_for);
printf("%lx", (unsigned long) grpc_completion_queue_factory_lookup);
printf("%lx", (unsigned long) grpc_completion_queue_create_for_next);
printf("%lx", (unsigned long) grpc_completion_queue_create_for_pluck);
printf("%lx", (unsigned long) grpc_completion_queue_create);
printf("%lx", (unsigned long) grpc_completion_queue_next);
printf("%lx", (unsigned long) grpc_completion_queue_pluck);
printf("%lx", (unsigned long) grpc_completion_queue_shutdown);
printf("%lx", (unsigned long) grpc_completion_queue_destroy);
printf("%lx", (unsigned long) grpc_completion_queue_thread_local_cache_init);
printf("%lx", (unsigned long) grpc_completion_queue_thread_local_cache_flush);
printf("%lx", (unsigned long) grpc_alarm_create);
printf("%lx", (unsigned long) grpc_alarm_set);
printf("%lx", (unsigned long) grpc_alarm_cancel);
printf("%lx", (unsigned long) grpc_alarm_destroy);
printf("%lx", (unsigned long) grpc_channel_check_connectivity_state);
printf("%lx", (unsigned long) grpc_channel_num_external_connectivity_watchers);
printf("%lx", (unsigned long) grpc_channel_watch_connectivity_state);
printf("%lx", (unsigned long) grpc_channel_support_connectivity_watcher);
printf("%lx", (unsigned long) grpc_channel_create_call);
printf("%lx", (unsigned long) grpc_channel_ping);
printf("%lx", (unsigned long) grpc_channel_register_call);
printf("%lx", (unsigned long) grpc_channel_create_registered_call);
printf("%lx", (unsigned long) grpc_call_arena_alloc);
printf("%lx", (unsigned long) grpc_call_start_batch);
printf("%lx", (unsigned long) grpc_call_get_peer);
printf("%lx", (unsigned long) grpc_census_call_set_context);
printf("%lx", (unsigned long) grpc_census_call_get_context);
printf("%lx", (unsigned long) grpc_channel_get_target);
printf("%lx", (unsigned long) grpc_channel_get_info);
printf("%lx", (unsigned long) grpc_insecure_channel_create);
printf("%lx", (unsigned long) grpc_lame_client_channel_create);
printf("%lx", (unsigned long) grpc_channel_destroy);
printf("%lx", (unsigned long) grpc_call_cancel);
printf("%lx", (unsigned long) grpc_call_cancel_with_status);
printf("%lx", (unsigned long) grpc_call_ref);
printf("%lx", (unsigned long) grpc_call_unref);
printf("%lx", (unsigned long) grpc_server_request_call);
printf("%lx", (unsigned long) grpc_server_register_method);
printf("%lx", (unsigned long) grpc_server_request_registered_call);
printf("%lx", (unsigned long) grpc_server_create);
printf("%lx", (unsigned long) grpc_server_register_completion_queue);
printf("%lx", (unsigned long) grpc_server_add_insecure_http2_port);
printf("%lx", (unsigned long) grpc_server_start);
printf("%lx", (unsigned long) grpc_server_shutdown_and_notify);
printf("%lx", (unsigned long) grpc_server_cancel_all_calls);
printf("%lx", (unsigned long) grpc_server_destroy);
printf("%lx", (unsigned long) grpc_tracer_set_enabled);
printf("%lx", (unsigned long) grpc_header_key_is_legal);
printf("%lx", (unsigned long) grpc_header_nonbin_value_is_legal);
printf("%lx", (unsigned long) grpc_is_binary_header);
printf("%lx", (unsigned long) grpc_call_error_to_string);
printf("%lx", (unsigned long) grpc_resource_quota_create);
printf("%lx", (unsigned long) grpc_resource_quota_ref);
printf("%lx", (unsigned long) grpc_resource_quota_unref);
printf("%lx", (unsigned long) grpc_resource_quota_resize);
printf("%lx", (unsigned long) grpc_resource_quota_arg_vtable);
printf("%lx", (unsigned long) grpc_auth_property_iterator_next);
printf("%lx", (unsigned long) grpc_auth_context_property_iterator);
printf("%lx", (unsigned long) grpc_auth_context_peer_identity);
printf("%lx", (unsigned long) grpc_auth_context_find_properties_by_name);
printf("%lx", (unsigned long) grpc_auth_context_peer_identity_property_name);
printf("%lx", (unsigned long) grpc_auth_context_peer_is_authenticated);
printf("%lx", (unsigned long) grpc_call_auth_context);
printf("%lx", (unsigned long) grpc_auth_context_release);
printf("%lx", (unsigned long) grpc_auth_context_add_property);
printf("%lx", (unsigned long) grpc_auth_context_add_cstring_property);
printf("%lx", (unsigned long) grpc_auth_context_set_peer_identity_property_name);
printf("%lx", (unsigned long) grpc_channel_credentials_release);
printf("%lx", (unsigned long) grpc_google_default_credentials_create);
printf("%lx", (unsigned long) grpc_set_ssl_roots_override_callback);
printf("%lx", (unsigned long) grpc_ssl_credentials_create);
printf("%lx", (unsigned long) grpc_call_credentials_release);
printf("%lx", (unsigned long) grpc_composite_channel_credentials_create);
printf("%lx", (unsigned long) grpc_composite_call_credentials_create);
printf("%lx", (unsigned long) grpc_google_compute_engine_credentials_create);
printf("%lx", (unsigned long) grpc_max_auth_token_lifetime);
printf("%lx", (unsigned long) grpc_service_account_jwt_access_credentials_create);
printf("%lx", (unsigned long) grpc_google_refresh_token_credentials_create);
printf("%lx", (unsigned long) grpc_access_token_credentials_create);
printf("%lx", (unsigned long) grpc_google_iam_credentials_create);
printf("%lx", (unsigned long) grpc_metadata_credentials_create_from_plugin);
printf("%lx", (unsigned long) grpc_secure_channel_create);
printf("%lx", (unsigned long) grpc_server_credentials_release);
printf("%lx", (unsigned long) grpc_ssl_server_certificate_config_create);
printf("%lx", (unsigned long) grpc_ssl_server_certificate_config_destroy);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_ex);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_options_using_config);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_options_using_config_fetcher);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_options_destroy);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_with_options);
printf("%lx", (unsigned long) grpc_server_add_secure_http2_port);
printf("%lx", (unsigned long) grpc_call_set_credentials);
printf("%lx", (unsigned long) grpc_server_credentials_set_auth_metadata_processor);
printf("%lx", (unsigned long) grpc_raw_byte_buffer_create);
printf("%lx", (unsigned long) grpc_raw_compressed_byte_buffer_create);
printf("%lx", (unsigned long) grpc_byte_buffer_copy);
printf("%lx", (unsigned long) grpc_byte_buffer_length);
printf("%lx", (unsigned long) grpc_byte_buffer_destroy);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_init);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_destroy);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_next);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_readall);
printf("%lx", (unsigned long) grpc_raw_byte_buffer_from_reader);
printf("%lx", (unsigned long) grpc_slice_ref);
printf("%lx", (unsigned long) grpc_slice_unref);
printf("%lx", (unsigned long) grpc_slice_copy);
printf("%lx", (unsigned long) grpc_slice_new);
printf("%lx", (unsigned long) grpc_slice_new_with_user_data);
printf("%lx", (unsigned long) grpc_slice_new_with_len);
printf("%lx", (unsigned long) grpc_slice_malloc);
printf("%lx", (unsigned long) grpc_slice_malloc_large);
printf("%lx", (unsigned long) grpc_slice_intern);
printf("%lx", (unsigned long) grpc_slice_from_copied_string);
printf("%lx", (unsigned long) grpc_slice_from_copied_buffer);
printf("%lx", (unsigned long) grpc_slice_from_static_string);
printf("%lx", (unsigned long) grpc_slice_from_static_buffer);
printf("%lx", (unsigned long) grpc_slice_sub);
printf("%lx", (unsigned long) grpc_slice_sub_no_ref);
printf("%lx", (unsigned long) grpc_slice_split_tail);
printf("%lx", (unsigned long) grpc_slice_split_tail_maybe_ref);
printf("%lx", (unsigned long) grpc_slice_split_head);
printf("%lx", (unsigned long) grpc_empty_slice);
printf("%lx", (unsigned long) grpc_slice_default_hash_impl);
printf("%lx", (unsigned long) grpc_slice_default_eq_impl);
printf("%lx", (unsigned long) grpc_slice_eq);
printf("%lx", (unsigned long) grpc_slice_cmp);
printf("%lx", (unsigned long) grpc_slice_str_cmp);
printf("%lx", (unsigned long) grpc_slice_buf_start_eq);
printf("%lx", (unsigned long) grpc_slice_rchr);
printf("%lx", (unsigned long) grpc_slice_chr);
printf("%lx", (unsigned long) grpc_slice_slice);
printf("%lx", (unsigned long) grpc_slice_hash);
printf("%lx", (unsigned long) grpc_slice_is_equivalent);
printf("%lx", (unsigned long) grpc_slice_dup);
printf("%lx", (unsigned long) grpc_slice_to_c_string);
printf("%lx", (unsigned long) grpc_slice_buffer_init);
printf("%lx", (unsigned long) grpc_slice_buffer_destroy);
printf("%lx", (unsigned long) grpc_slice_buffer_add);
printf("%lx", (unsigned long) grpc_slice_buffer_add_indexed);
printf("%lx", (unsigned long) grpc_slice_buffer_addn);
printf("%lx", (unsigned long) grpc_slice_buffer_tiny_add);
printf("%lx", (unsigned long) grpc_slice_buffer_pop);
printf("%lx", (unsigned long) grpc_slice_buffer_reset_and_unref);
printf("%lx", (unsigned long) grpc_slice_buffer_swap);
printf("%lx", (unsigned long) grpc_slice_buffer_move_into);
printf("%lx", (unsigned long) grpc_slice_buffer_trim_end);
printf("%lx", (unsigned long) grpc_slice_buffer_move_first);
printf("%lx", (unsigned long) grpc_slice_buffer_move_first_no_ref);
printf("%lx", (unsigned long) grpc_slice_buffer_move_first_into_buffer);
printf("%lx", (unsigned long) grpc_slice_buffer_take_first);
printf("%lx", (unsigned long) grpc_slice_buffer_undo_take_first);
printf("%lx", (unsigned long) gpr_malloc);
printf("%lx", (unsigned long) gpr_zalloc);
printf("%lx", (unsigned long) gpr_free);
printf("%lx", (unsigned long) gpr_realloc);
printf("%lx", (unsigned long) gpr_malloc_aligned);
printf("%lx", (unsigned long) gpr_free_aligned);
printf("%lx", (unsigned long) gpr_set_allocation_functions);
printf("%lx", (unsigned long) gpr_get_allocation_functions);
printf("%lx", (unsigned long) gpr_avl_create);
printf("%lx", (unsigned long) gpr_avl_ref);
printf("%lx", (unsigned long) gpr_avl_unref);
printf("%lx", (unsigned long) gpr_avl_add);
printf("%lx", (unsigned long) gpr_avl_remove);
printf("%lx", (unsigned long) gpr_avl_get);
printf("%lx", (unsigned long) gpr_avl_maybe_get);
printf("%lx", (unsigned long) gpr_avl_is_empty);
printf("%lx", (unsigned long) gpr_cmdline_create);
printf("%lx", (unsigned long) gpr_cmdline_add_int);
printf("%lx", (unsigned long) gpr_cmdline_add_flag);
printf("%lx", (unsigned long) gpr_cmdline_add_string);
printf("%lx", (unsigned long) gpr_cmdline_on_extra_arg);
printf("%lx", (unsigned long) gpr_cmdline_set_survive_failure);
printf("%lx", (unsigned long) gpr_cmdline_parse);
printf("%lx", (unsigned long) gpr_cmdline_destroy);
printf("%lx", (unsigned long) gpr_cmdline_usage_string);
printf("%lx", (unsigned long) gpr_cpu_num_cores);
printf("%lx", (unsigned long) gpr_cpu_current_cpu);
printf("%lx", (unsigned long) gpr_histogram_create);
printf("%lx", (unsigned long) gpr_histogram_destroy);
printf("%lx", (unsigned long) gpr_histogram_add);
printf("%lx", (unsigned long) gpr_histogram_merge);
printf("%lx", (unsigned long) gpr_histogram_percentile);
printf("%lx", (unsigned long) gpr_histogram_mean);
printf("%lx", (unsigned long) gpr_histogram_stddev);
printf("%lx", (unsigned long) gpr_histogram_variance);
printf("%lx", (unsigned long) gpr_histogram_maximum);
printf("%lx", (unsigned long) gpr_histogram_minimum);
printf("%lx", (unsigned long) gpr_histogram_count);
printf("%lx", (unsigned long) gpr_histogram_sum);
printf("%lx", (unsigned long) gpr_histogram_sum_of_squares);
printf("%lx", (unsigned long) gpr_histogram_get_contents);
printf("%lx", (unsigned long) gpr_histogram_merge_contents);
printf("%lx", (unsigned long) gpr_join_host_port);
printf("%lx", (unsigned long) gpr_split_host_port);
printf("%lx", (unsigned long) gpr_log_severity_string);
printf("%lx", (unsigned long) gpr_log);
printf("%lx", (unsigned long) gpr_log_message);
printf("%lx", (unsigned long) gpr_set_log_verbosity);
printf("%lx", (unsigned long) gpr_log_verbosity_init);
printf("%lx", (unsigned long) gpr_set_log_function);
printf("%lx", (unsigned long) gpr_strdup);
printf("%lx", (unsigned long) gpr_asprintf);
printf("%lx", (unsigned long) gpr_subprocess_binary_extension);
printf("%lx", (unsigned long) gpr_subprocess_create);
printf("%lx", (unsigned long) gpr_subprocess_destroy);
printf("%lx", (unsigned long) gpr_subprocess_join);
printf("%lx", (unsigned long) gpr_subprocess_interrupt);
printf("%lx", (unsigned long) gpr_mu_init);
printf("%lx", (unsigned long) gpr_mu_destroy);
printf("%lx", (unsigned long) gpr_mu_lock);
printf("%lx", (unsigned long) gpr_mu_unlock);
printf("%lx", (unsigned long) gpr_mu_trylock);
printf("%lx", (unsigned long) gpr_cv_init);
printf("%lx", (unsigned long) gpr_cv_destroy);
printf("%lx", (unsigned long) gpr_cv_wait);
printf("%lx", (unsigned long) gpr_cv_signal);
printf("%lx", (unsigned long) gpr_cv_broadcast);
printf("%lx", (unsigned long) gpr_once_init);
printf("%lx", (unsigned long) gpr_event_init);
printf("%lx", (unsigned long) gpr_event_set);
printf("%lx", (unsigned long) gpr_event_get);
printf("%lx", (unsigned long) gpr_event_wait);
printf("%lx", (unsigned long) gpr_ref_init);
printf("%lx", (unsigned long) gpr_ref);
printf("%lx", (unsigned long) gpr_ref_non_zero);
printf("%lx", (unsigned long) gpr_refn);
printf("%lx", (unsigned long) gpr_unref);
printf("%lx", (unsigned long) gpr_ref_is_unique);
printf("%lx", (unsigned long) gpr_stats_init);
printf("%lx", (unsigned long) gpr_stats_inc);
printf("%lx", (unsigned long) gpr_stats_read);
printf("%lx", (unsigned long) gpr_thd_new);
printf("%lx", (unsigned long) gpr_thd_options_default);
printf("%lx", (unsigned long) gpr_thd_options_set_detached);
printf("%lx", (unsigned long) gpr_thd_options_set_joinable);
printf("%lx", (unsigned long) gpr_thd_options_is_detached);
printf("%lx", (unsigned long) gpr_thd_options_is_joinable);
printf("%lx", (unsigned long) gpr_thd_currentid);
printf("%lx", (unsigned long) gpr_thd_join);
printf("%lx", (unsigned long) gpr_time_0);
printf("%lx", (unsigned long) gpr_inf_future);
printf("%lx", (unsigned long) gpr_inf_past);
printf("%lx", (unsigned long) gpr_time_init);
printf("%lx", (unsigned long) gpr_now);
printf("%lx", (unsigned long) gpr_convert_clock_type);
printf("%lx", (unsigned long) gpr_time_cmp);
printf("%lx", (unsigned long) gpr_time_max);
printf("%lx", (unsigned long) gpr_time_min);
printf("%lx", (unsigned long) gpr_time_add);
printf("%lx", (unsigned long) gpr_time_sub);
printf("%lx", (unsigned long) gpr_time_from_micros);
printf("%lx", (unsigned long) gpr_time_from_nanos);
printf("%lx", (unsigned long) gpr_time_from_millis);
printf("%lx", (unsigned long) gpr_time_from_seconds);
printf("%lx", (unsigned long) gpr_time_from_minutes);
printf("%lx", (unsigned long) gpr_time_from_hours);
printf("%lx", (unsigned long) gpr_time_to_millis);
printf("%lx", (unsigned long) gpr_time_similar);
printf("%lx", (unsigned long) gpr_sleep_until);
printf("%lx", (unsigned long) gpr_timespec_to_micros);
}
printf("%lx", (unsigned long) grpc_compression_algorithm_parse);
printf("%lx", (unsigned long) grpc_compression_algorithm_name);
printf("%lx", (unsigned long) grpc_stream_compression_algorithm_name);
printf("%lx", (unsigned long) grpc_compression_algorithm_for_level);
printf("%lx", (unsigned long) grpc_stream_compression_algorithm_for_level);
printf("%lx", (unsigned long) grpc_compression_options_init);
printf("%lx", (unsigned long) grpc_compression_options_enable_algorithm);
printf("%lx", (unsigned long) grpc_compression_options_disable_algorithm);
printf("%lx", (unsigned long) grpc_compression_options_is_algorithm_enabled);
printf("%lx", (unsigned long) grpc_compression_options_is_stream_compression_algorithm_enabled);
printf("%lx", (unsigned long) grpc_metadata_array_init);
printf("%lx", (unsigned long) grpc_metadata_array_destroy);
printf("%lx", (unsigned long) grpc_call_details_init);
printf("%lx", (unsigned long) grpc_call_details_destroy);
printf("%lx", (unsigned long) grpc_register_plugin);
printf("%lx", (unsigned long) grpc_init);
printf("%lx", (unsigned long) grpc_shutdown);
printf("%lx", (unsigned long) grpc_version_string);
printf("%lx", (unsigned long) grpc_g_stands_for);
printf("%lx", (unsigned long) grpc_completion_queue_factory_lookup);
printf("%lx", (unsigned long) grpc_completion_queue_create_for_next);
printf("%lx", (unsigned long) grpc_completion_queue_create_for_pluck);
printf("%lx", (unsigned long) grpc_completion_queue_create);
printf("%lx", (unsigned long) grpc_completion_queue_next);
printf("%lx", (unsigned long) grpc_completion_queue_pluck);
printf("%lx", (unsigned long) grpc_completion_queue_shutdown);
printf("%lx", (unsigned long) grpc_completion_queue_destroy);
printf("%lx", (unsigned long) grpc_completion_queue_thread_local_cache_init);
printf("%lx", (unsigned long) grpc_completion_queue_thread_local_cache_flush);
printf("%lx", (unsigned long) grpc_alarm_create);
printf("%lx", (unsigned long) grpc_alarm_set);
printf("%lx", (unsigned long) grpc_alarm_cancel);
printf("%lx", (unsigned long) grpc_alarm_destroy);
printf("%lx", (unsigned long) grpc_channel_check_connectivity_state);
printf("%lx", (unsigned long) grpc_channel_num_external_connectivity_watchers);
printf("%lx", (unsigned long) grpc_channel_watch_connectivity_state);
printf("%lx", (unsigned long) grpc_channel_support_connectivity_watcher);
printf("%lx", (unsigned long) grpc_channel_create_call);
printf("%lx", (unsigned long) grpc_channel_ping);
printf("%lx", (unsigned long) grpc_channel_register_call);
printf("%lx", (unsigned long) grpc_channel_create_registered_call);
printf("%lx", (unsigned long) grpc_call_arena_alloc);
printf("%lx", (unsigned long) grpc_call_start_batch);
printf("%lx", (unsigned long) grpc_call_get_peer);
printf("%lx", (unsigned long) grpc_census_call_set_context);
printf("%lx", (unsigned long) grpc_census_call_get_context);
printf("%lx", (unsigned long) grpc_channel_get_target);
printf("%lx", (unsigned long) grpc_channel_get_info);
printf("%lx", (unsigned long) grpc_insecure_channel_create);
printf("%lx", (unsigned long) grpc_lame_client_channel_create);
printf("%lx", (unsigned long) grpc_channel_destroy);
printf("%lx", (unsigned long) grpc_call_cancel);
printf("%lx", (unsigned long) grpc_call_cancel_with_status);
printf("%lx", (unsigned long) grpc_call_ref);
printf("%lx", (unsigned long) grpc_call_unref);
printf("%lx", (unsigned long) grpc_server_request_call);
printf("%lx", (unsigned long) grpc_server_register_method);
printf("%lx", (unsigned long) grpc_server_request_registered_call);
printf("%lx", (unsigned long) grpc_server_create);
printf("%lx", (unsigned long) grpc_server_register_completion_queue);
printf("%lx", (unsigned long) grpc_server_add_insecure_http2_port);
printf("%lx", (unsigned long) grpc_server_start);
printf("%lx", (unsigned long) grpc_server_shutdown_and_notify);
printf("%lx", (unsigned long) grpc_server_cancel_all_calls);
printf("%lx", (unsigned long) grpc_server_destroy);
printf("%lx", (unsigned long) grpc_tracer_set_enabled);
printf("%lx", (unsigned long) grpc_header_key_is_legal);
printf("%lx", (unsigned long) grpc_header_nonbin_value_is_legal);
printf("%lx", (unsigned long) grpc_is_binary_header);
printf("%lx", (unsigned long) grpc_call_error_to_string);
printf("%lx", (unsigned long) grpc_resource_quota_create);
printf("%lx", (unsigned long) grpc_resource_quota_ref);
printf("%lx", (unsigned long) grpc_resource_quota_unref);
printf("%lx", (unsigned long) grpc_resource_quota_resize);
printf("%lx", (unsigned long) grpc_resource_quota_arg_vtable);
printf("%lx", (unsigned long) grpc_auth_property_iterator_next);
printf("%lx", (unsigned long) grpc_auth_context_property_iterator);
printf("%lx", (unsigned long) grpc_auth_context_peer_identity);
printf("%lx", (unsigned long) grpc_auth_context_find_properties_by_name);
printf("%lx", (unsigned long) grpc_auth_context_peer_identity_property_name);
printf("%lx", (unsigned long) grpc_auth_context_peer_is_authenticated);
printf("%lx", (unsigned long) grpc_call_auth_context);
printf("%lx", (unsigned long) grpc_auth_context_release);
printf("%lx", (unsigned long) grpc_auth_context_add_property);
printf("%lx", (unsigned long) grpc_auth_context_add_cstring_property);
printf("%lx", (unsigned long) grpc_auth_context_set_peer_identity_property_name);
printf("%lx", (unsigned long) grpc_channel_credentials_release);
printf("%lx", (unsigned long) grpc_google_default_credentials_create);
printf("%lx", (unsigned long) grpc_set_ssl_roots_override_callback);
printf("%lx", (unsigned long) grpc_ssl_credentials_create);
printf("%lx", (unsigned long) grpc_call_credentials_release);
printf("%lx", (unsigned long) grpc_composite_channel_credentials_create);
printf("%lx", (unsigned long) grpc_composite_call_credentials_create);
printf("%lx", (unsigned long) grpc_google_compute_engine_credentials_create);
printf("%lx", (unsigned long) grpc_max_auth_token_lifetime);
printf("%lx", (unsigned long) grpc_service_account_jwt_access_credentials_create);
printf("%lx", (unsigned long) grpc_google_refresh_token_credentials_create);
printf("%lx", (unsigned long) grpc_access_token_credentials_create);
printf("%lx", (unsigned long) grpc_google_iam_credentials_create);
printf("%lx", (unsigned long) grpc_metadata_credentials_create_from_plugin);
printf("%lx", (unsigned long) grpc_secure_channel_create);
printf("%lx", (unsigned long) grpc_server_credentials_release);
printf("%lx", (unsigned long) grpc_ssl_server_certificate_config_create);
printf("%lx", (unsigned long) grpc_ssl_server_certificate_config_destroy);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_ex);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_options_using_config);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_options_using_config_fetcher);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_options_destroy);
printf("%lx", (unsigned long) grpc_ssl_server_credentials_create_with_options);
printf("%lx", (unsigned long) grpc_server_add_secure_http2_port);
printf("%lx", (unsigned long) grpc_call_set_credentials);
printf("%lx", (unsigned long) grpc_server_credentials_set_auth_metadata_processor);
printf("%lx", (unsigned long) grpc_raw_byte_buffer_create);
printf("%lx", (unsigned long) grpc_raw_compressed_byte_buffer_create);
printf("%lx", (unsigned long) grpc_byte_buffer_copy);
printf("%lx", (unsigned long) grpc_byte_buffer_length);
printf("%lx", (unsigned long) grpc_byte_buffer_destroy);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_init);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_destroy);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_next);
printf("%lx", (unsigned long) grpc_byte_buffer_reader_readall);
printf("%lx", (unsigned long) grpc_raw_byte_buffer_from_reader);
printf("%lx", (unsigned long) grpc_slice_ref);
printf("%lx", (unsigned long) grpc_slice_unref);
printf("%lx", (unsigned long) grpc_slice_copy);
printf("%lx", (unsigned long) grpc_slice_new);
printf("%lx", (unsigned long) grpc_slice_new_with_user_data);
printf("%lx", (unsigned long) grpc_slice_new_with_len);
printf("%lx", (unsigned long) grpc_slice_malloc);
printf("%lx", (unsigned long) grpc_slice_malloc_large);
printf("%lx", (unsigned long) grpc_slice_intern);
printf("%lx", (unsigned long) grpc_slice_from_copied_string);
printf("%lx", (unsigned long) grpc_slice_from_copied_buffer);
printf("%lx", (unsigned long) grpc_slice_from_static_string);
printf("%lx", (unsigned long) grpc_slice_from_static_buffer);
printf("%lx", (unsigned long) grpc_slice_sub);
printf("%lx", (unsigned long) grpc_slice_sub_no_ref);
printf("%lx", (unsigned long) grpc_slice_split_tail);
printf("%lx", (unsigned long) grpc_slice_split_tail_maybe_ref);
printf("%lx", (unsigned long) grpc_slice_split_head);
printf("%lx", (unsigned long) grpc_empty_slice);
printf("%lx", (unsigned long) grpc_slice_default_hash_impl);
printf("%lx", (unsigned long) grpc_slice_default_eq_impl);
printf("%lx", (unsigned long) grpc_slice_eq);
printf("%lx", (unsigned long) grpc_slice_cmp);
printf("%lx", (unsigned long) grpc_slice_str_cmp);
printf("%lx", (unsigned long) grpc_slice_buf_start_eq);
printf("%lx", (unsigned long) grpc_slice_rchr);
printf("%lx", (unsigned long) grpc_slice_chr);
printf("%lx", (unsigned long) grpc_slice_slice);
printf("%lx", (unsigned long) grpc_slice_hash);
printf("%lx", (unsigned long) grpc_slice_is_equivalent);
printf("%lx", (unsigned long) grpc_slice_dup);
printf("%lx", (unsigned long) grpc_slice_to_c_string);
printf("%lx", (unsigned long) grpc_slice_buffer_init);
printf("%lx", (unsigned long) grpc_slice_buffer_destroy);
printf("%lx", (unsigned long) grpc_slice_buffer_add);
printf("%lx", (unsigned long) grpc_slice_buffer_add_indexed);
printf("%lx", (unsigned long) grpc_slice_buffer_addn);
printf("%lx", (unsigned long) grpc_slice_buffer_tiny_add);
printf("%lx", (unsigned long) grpc_slice_buffer_pop);
printf("%lx", (unsigned long) grpc_slice_buffer_reset_and_unref);
printf("%lx", (unsigned long) grpc_slice_buffer_swap);
printf("%lx", (unsigned long) grpc_slice_buffer_move_into);
printf("%lx", (unsigned long) grpc_slice_buffer_trim_end);
printf("%lx", (unsigned long) grpc_slice_buffer_move_first);
printf("%lx", (unsigned long) grpc_slice_buffer_move_first_no_ref);
printf("%lx", (unsigned long) grpc_slice_buffer_move_first_into_buffer);
printf("%lx", (unsigned long) grpc_slice_buffer_take_first);
printf("%lx", (unsigned long) grpc_slice_buffer_undo_take_first);
printf("%lx", (unsigned long) gpr_malloc);
printf("%lx", (unsigned long) gpr_zalloc);
printf("%lx", (unsigned long) gpr_free);
printf("%lx", (unsigned long) gpr_realloc);
printf("%lx", (unsigned long) gpr_malloc_aligned);
printf("%lx", (unsigned long) gpr_free_aligned);
printf("%lx", (unsigned long) gpr_set_allocation_functions);
printf("%lx", (unsigned long) gpr_get_allocation_functions);
printf("%lx", (unsigned long) gpr_avl_create);
printf("%lx", (unsigned long) gpr_avl_ref);
printf("%lx", (unsigned long) gpr_avl_unref);
printf("%lx", (unsigned long) gpr_avl_add);
printf("%lx", (unsigned long) gpr_avl_remove);
printf("%lx", (unsigned long) gpr_avl_get);
printf("%lx", (unsigned long) gpr_avl_maybe_get);
printf("%lx", (unsigned long) gpr_avl_is_empty);
printf("%lx", (unsigned long) gpr_cmdline_create);
printf("%lx", (unsigned long) gpr_cmdline_add_int);
printf("%lx", (unsigned long) gpr_cmdline_add_flag);
printf("%lx", (unsigned long) gpr_cmdline_add_string);
printf("%lx", (unsigned long) gpr_cmdline_on_extra_arg);
printf("%lx", (unsigned long) gpr_cmdline_set_survive_failure);
printf("%lx", (unsigned long) gpr_cmdline_parse);
printf("%lx", (unsigned long) gpr_cmdline_destroy);
printf("%lx", (unsigned long) gpr_cmdline_usage_string);
printf("%lx", (unsigned long) gpr_cpu_num_cores);
printf("%lx", (unsigned long) gpr_cpu_current_cpu);
printf("%lx", (unsigned long) gpr_histogram_create);
printf("%lx", (unsigned long) gpr_histogram_destroy);
printf("%lx", (unsigned long) gpr_histogram_add);
printf("%lx", (unsigned long) gpr_histogram_merge);
printf("%lx", (unsigned long) gpr_histogram_percentile);
printf("%lx", (unsigned long) gpr_histogram_mean);
printf("%lx", (unsigned long) gpr_histogram_stddev);
printf("%lx", (unsigned long) gpr_histogram_variance);
printf("%lx", (unsigned long) gpr_histogram_maximum);
printf("%lx", (unsigned long) gpr_histogram_minimum);
printf("%lx", (unsigned long) gpr_histogram_count);
printf("%lx", (unsigned long) gpr_histogram_sum);
printf("%lx", (unsigned long) gpr_histogram_sum_of_squares);
printf("%lx", (unsigned long) gpr_histogram_get_contents);
printf("%lx", (unsigned long) gpr_histogram_merge_contents);
printf("%lx", (unsigned long) gpr_join_host_port);
printf("%lx", (unsigned long) gpr_split_host_port);
printf("%lx", (unsigned long) gpr_log_severity_string);
printf("%lx", (unsigned long) gpr_log);
printf("%lx", (unsigned long) gpr_log_message);
printf("%lx", (unsigned long) gpr_set_log_verbosity);
printf("%lx", (unsigned long) gpr_log_verbosity_init);
printf("%lx", (unsigned long) gpr_set_log_function);
printf("%lx", (unsigned long) gpr_strdup);
printf("%lx", (unsigned long) gpr_asprintf);
printf("%lx", (unsigned long) gpr_subprocess_binary_extension);
printf("%lx", (unsigned long) gpr_subprocess_create);
printf("%lx", (unsigned long) gpr_subprocess_destroy);
printf("%lx", (unsigned long) gpr_subprocess_join);
printf("%lx", (unsigned long) gpr_subprocess_interrupt);
printf("%lx", (unsigned long) gpr_mu_init);
printf("%lx", (unsigned long) gpr_mu_destroy);
printf("%lx", (unsigned long) gpr_mu_lock);
printf("%lx", (unsigned long) gpr_mu_unlock);
printf("%lx", (unsigned long) gpr_mu_trylock);
printf("%lx", (unsigned long) gpr_cv_init);
printf("%lx", (unsigned long) gpr_cv_destroy);
printf("%lx", (unsigned long) gpr_cv_wait);
printf("%lx", (unsigned long) gpr_cv_signal);
printf("%lx", (unsigned long) gpr_cv_broadcast);
printf("%lx", (unsigned long) gpr_once_init);
printf("%lx", (unsigned long) gpr_event_init);
printf("%lx", (unsigned long) gpr_event_set);
printf("%lx", (unsigned long) gpr_event_get);
printf("%lx", (unsigned long) gpr_event_wait);
printf("%lx", (unsigned long) gpr_ref_init);
printf("%lx", (unsigned long) gpr_ref);
printf("%lx", (unsigned long) gpr_ref_non_zero);
printf("%lx", (unsigned long) gpr_refn);
printf("%lx", (unsigned long) gpr_unref);
printf("%lx", (unsigned long) gpr_ref_is_unique);
printf("%lx", (unsigned long) gpr_stats_init);
printf("%lx", (unsigned long) gpr_stats_inc);
printf("%lx", (unsigned long) gpr_stats_read);
printf("%lx", (unsigned long) gpr_thd_new);
printf("%lx", (unsigned long) gpr_thd_options_default);
printf("%lx", (unsigned long) gpr_thd_options_set_detached);
printf("%lx", (unsigned long) gpr_thd_options_set_joinable);
printf("%lx", (unsigned long) gpr_thd_options_is_detached);
printf("%lx", (unsigned long) gpr_thd_options_is_joinable);
printf("%lx", (unsigned long) gpr_thd_currentid);
printf("%lx", (unsigned long) gpr_thd_join);
printf("%lx", (unsigned long) gpr_time_0);
printf("%lx", (unsigned long) gpr_inf_future);
printf("%lx", (unsigned long) gpr_inf_past);
printf("%lx", (unsigned long) gpr_time_init);
printf("%lx", (unsigned long) gpr_now);
printf("%lx", (unsigned long) gpr_convert_clock_type);
printf("%lx", (unsigned long) gpr_time_cmp);
printf("%lx", (unsigned long) gpr_time_max);
printf("%lx", (unsigned long) gpr_time_min);
printf("%lx", (unsigned long) gpr_time_add);
printf("%lx", (unsigned long) gpr_time_sub);
printf("%lx", (unsigned long) gpr_time_from_micros);
printf("%lx", (unsigned long) gpr_time_from_nanos);
printf("%lx", (unsigned long) gpr_time_from_millis);
printf("%lx", (unsigned long) gpr_time_from_seconds);
printf("%lx", (unsigned long) gpr_time_from_minutes);
printf("%lx", (unsigned long) gpr_time_from_hours);
printf("%lx", (unsigned long) gpr_time_to_millis);
printf("%lx", (unsigned long) gpr_time_similar);
printf("%lx", (unsigned long) gpr_sleep_until);
printf("%lx", (unsigned long) gpr_timespec_to_micros);
return 0;
}

@ -19,8 +19,7 @@ def grpc_fuzzer(name, corpus, srcs = [], deps = [], **kwargs):
name = name,
srcs = srcs,
deps = deps + ["//test/core/util:fuzzer_corpus_test"],
data = [corpus],
args = ['--directory', '$(location %s)' % corpus],
data = native.glob([corpus + "/**"]),
external_deps = [
'gtest',
],

@ -1 +1 @@
Subproject commit 80a37e0782d2d702d52234b62dd4b9ec74fd2c95
Subproject commit 2761122b810fe8861004ae785cc3ab39f384d342

@ -68,7 +68,7 @@ popd
# this should be the same version as the submodule we compile against
# ideally we'd update this as a template to ensure that
pip install protobuf==3.2.0
pip install protobuf==3.5.0.post1
pushd "$(dirname $INPUT_PROTO)" > /dev/null

File diff suppressed because one or more lines are too long

@ -209,7 +209,7 @@ setuptools.setup(
ext_modules=extension_modules(),
packages=setuptools.find_packages('.'),
install_requires=[
'protobuf>=3.3.0',
'protobuf>=3.5.0.post1',
'grpcio>={version}'.format(version=grpc_version.VERSION),
],
package_data=package_data(),

@ -62,7 +62,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#================
# C# dependencies

@ -62,7 +62,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#================
# C# dependencies

@ -62,7 +62,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# C++ dependencies

@ -30,7 +30,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Define the default command.
CMD ["bash"]

@ -30,7 +30,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Define the default command.
CMD ["bash"]

@ -30,7 +30,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Define the default command.
CMD ["bash"]

@ -30,7 +30,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
RUN pip install twisted h2==2.6.1 hyper

@ -45,7 +45,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Trigger download of as many Gradle artifacts as possible.

@ -45,7 +45,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Trigger download of as many Gradle artifacts as possible.

@ -62,7 +62,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#==================
# Node dependencies

@ -62,7 +62,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc

@ -62,7 +62,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#==================
# Ruby dependencies

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#================
# C# dependencies

@ -38,7 +38,7 @@ RUN apk update && apk add \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# C++ dependencies

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# C++ dependencies

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# C++ dependencies

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# C++ dependencies

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# C++ dependencies

@ -141,7 +141,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Install coverage for Python test coverage reporting
RUN pip install coverage

@ -77,7 +77,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#==================
# Node dependencies

@ -77,7 +77,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# PHP dependencies

@ -38,7 +38,7 @@ RUN apk update && apk add \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0
# Google Cloud platform API libraries
RUN pip install --upgrade google-api-python-client

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
# Install dependencies for pyenv
RUN apt-get update && apt-get install -y \

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#==================
# Ruby dependencies

@ -66,7 +66,7 @@ RUN apt-get update && apt-get install -y \
# Install Python packages from PyPI
RUN pip install --upgrade pip==9.0.1
RUN pip install virtualenv
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.2.0 six==1.10.0 twisted==17.5.0
RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
#=================
# C++ dependencies

@ -8,8 +8,8 @@ from specific releases/tag, are used to test version compatiblity between gRPC r
## Step-by-step instructions for adding a GCR image for a new release for compatibility test
We have continuous nightly test setup to test gRPC backward compatibility between old clients and latest server. When a gRPC developer creates a new gRPC release, s/he is also responsible to add the just-released gRPC client to the nightly test. The steps are:
- Add (or update) an entry in `./client_matrix.py` file to reference the github tag for the release.
- Build new client docker image(s). For example, for java release `v1.9.9`, do
- `tools/interop_matrix/create_matrix_images.py --git_checkout --release=v1.9.9 --language=java`
- Build new client docker image(s). For example, for C and wrapper languages release `v1.9.9`, do
- `tools/interop_matrix/create_matrix_images.py --git_checkout --release=v1.9.9 --language cxx csharp python ruby php`
- Verify that the new docker image was built successfully and uploaded to GCR. For example,
- `gcloud beta container images list --repository gcr.io/grpc-testing` shows image repos.
- `gcloud beta container images list-tags gcr.io/grpc-testing/grpc_interop_java_oracle8` should show an image entry with tag `v1.9.9`.

@ -19,6 +19,7 @@ def get_github_repo(lang):
return {
'go': 'git@github.com:grpc/grpc-go.git',
'java': 'git@github.com:grpc/grpc-java.git',
'node': 'git@github.com:grpc/grpc-node.git',
# all other languages use the grpc.git repo.
}.get(lang, 'git@github.com:grpc/grpc.git')
@ -44,6 +45,7 @@ LANG_RELEASE_MATRIX = {
'v1.3.9',
'v1.4.2',
'v1.6.6',
'v1.7.2',
],
'go': [
'v1.0.5',
@ -53,6 +55,10 @@ LANG_RELEASE_MATRIX = {
'v1.5.2',
'v1.6.0',
'v1.7.0',
'v1.7.1',
'v1.7.2',
'v1.7.3',
'v1.8.0',
],
'java': [
'v1.0.3',
@ -63,6 +69,7 @@ LANG_RELEASE_MATRIX = {
'v1.5.0',
'v1.6.1',
'v1.7.0',
'v1.8.0',
],
'python': [
'v1.0.x',
@ -72,6 +79,24 @@ LANG_RELEASE_MATRIX = {
'v1.4.2',
'v1.6.6',
],
'python': [
'v1.0.x',
'v1.1.4',
'v1.2.5',
'v1.3.9',
'v1.4.2',
'v1.6.6',
'v1.7.2',
],
'python': [
'v1.0.x',
'v1.1.4',
'v1.2.5',
'v1.3.9',
'v1.4.2',
'v1.6.6',
'v1.7.2',
],
'node': [
'v1.0.1',
'v1.1.4',
@ -79,6 +104,7 @@ LANG_RELEASE_MATRIX = {
'v1.3.9',
'v1.4.2',
'v1.6.6',
#'v1.7.1', Failing tests.
],
'ruby': [
# Ruby v1.0.x doesn't have the fix #8914, therefore not supported.
@ -87,6 +113,7 @@ LANG_RELEASE_MATRIX = {
'v1.3.9',
'v1.4.2',
'v1.6.6',
'v1.7.2',
],
'php': [
'v1.0.1',
@ -95,6 +122,7 @@ LANG_RELEASE_MATRIX = {
'v1.3.9',
'v1.4.2',
'v1.6.6',
'v1.7.2',
],
'csharp': [
#'v1.0.1',
@ -103,5 +131,6 @@ LANG_RELEASE_MATRIX = {
'v1.3.9',
'v1.4.2',
'v1.6.6',
'v1.7.2',
],
}

@ -77,6 +77,15 @@ argp.add_argument('--keep',
action='store_true',
help='keep the created local images after uploading to GCR')
argp.add_argument('--reuse_git_root',
default=False,
action='store_const',
const=True,
help='reuse the repo dir. If False, the existing git root '
'directory will removed before a clean checkout, because '
'reusing the repo can cause git checkout error if you switch '
'between releases.')
args = argp.parse_args()
@ -133,7 +142,7 @@ def build_image_jobspec(runtime, env, gcr_tag, stack_base):
}
build_env.update(env)
build_job = jobset.JobSpec(
cmdline=[os.path.join(stack_base, _IMAGE_BUILDER)],
cmdline=[_IMAGE_BUILDER],
environ=build_env,
shortname='build_docker_%s' % runtime,
timeout_seconds=30*60)
@ -227,6 +236,11 @@ def checkout_grpc_stack(lang, release):
repo_dir = os.path.splitext(os.path.basename(repo))[0]
stack_base = os.path.join(args.git_checkout_root, repo_dir)
# Clean up leftover repo dir if necessary.
if not args.reuse_git_root and os.path.exists(stack_base):
jobset.message('START', 'Removing git checkout root.', do_newline=True)
shutil.rmtree(stack_base)
if not os.path.exists(stack_base):
subprocess.check_call(['git', 'clone', '--recursive', repo],
cwd=os.path.dirname(stack_base))

@ -1,21 +1,21 @@
#!/bin/bash
echo "Testing ${docker_image:=grpc_interop_node:a53aa5e3-b548-4566-b5a8-6d15c1315b32}"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_00c688f2-57da-4023-89f3-46b1f7b5869f $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_d86705d8-14ea-4024-90b6-de74d6e8d19c $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_ebaafacd-1d82-4a75-bea1-a5c64e01fcaf $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_5125241a-fbf6-4c1c-895b-026a5a41f02f $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_stream"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_3d5e5b82-7205-4eba-b775-8122f05a4760 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=client_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_16fa0b49-2083-4932-8f26-79cfdffec940 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=server_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_23cee670-2d8d-4f5c-8893-c3c43da8b03a $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_7b6a9454-e3b6-4993-b542-468e268930aa $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_5a7109ed-c065-4b62-98f4-b3ed8f385762 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test.sandbox.googleapis.com --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_1e0ba8dd-4dc1-431b-b202-529e7ace5d1d $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_649de56a-e722-4a59-b265-e9c0e871f068 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_8be512a2-5e1c-4858-8cfc-82f99b678b76 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_d19b6333-e528-48b5-8421-2ae3f7ce9dab $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_stream"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_4749c80a-21c5-4d81-9df5-3c46ba6480cd $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=client_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_b7bee545-4857-4269-a1f2-9553dfc7e4b8 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=server_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_4e96db87-6f48-426d-a7f0-97f3a5b6b3f4 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_31a1d58c-f8bf-460a-af60-28969ecaaf80 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_ce64b147-bcfa-44b2-a2f7-4a485380ce30 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=grpc-test4.sandbox.googleapis.com --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_00c688f2-57da-4023-89f3-46b1f7b5869f $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_d86705d8-14ea-4024-90b6-de74d6e8d19c $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_ebaafacd-1d82-4a75-bea1-a5c64e01fcaf $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_5125241a-fbf6-4c1c-895b-026a5a41f02f $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_stream"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_3d5e5b82-7205-4eba-b775-8122f05a4760 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=client_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_16fa0b49-2083-4932-8f26-79cfdffec940 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=server_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_23cee670-2d8d-4f5c-8893-c3c43da8b03a $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_7b6a9454-e3b6-4993-b542-468e268930aa $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_5a7109ed-c065-4b62-98f4-b3ed8f385762 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_1e0ba8dd-4dc1-431b-b202-529e7ace5d1d $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=large_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_649de56a-e722-4a59-b265-e9c0e871f068 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_unary"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_8be512a2-5e1c-4858-8cfc-82f99b678b76 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=ping_pong"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_d19b6333-e528-48b5-8421-2ae3f7ce9dab $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=empty_stream"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_4749c80a-21c5-4d81-9df5-3c46ba6480cd $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=client_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_b7bee545-4857-4269-a1f2-9553dfc7e4b8 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=server_streaming"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_4e96db87-6f48-426d-a7f0-97f3a5b6b3f4 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_begin"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_31a1d58c-f8bf-460a-af60-28969ecaaf80 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=cancel_after_first_response"
docker run -i --rm=true -w /var/local/git/grpc --net=host --name interop_client_node_ce64b147-bcfa-44b2-a2f7-4a485380ce30 $docker_image bash -l -c "node src/node/interop/interop_client.js --server_host=216.239.32.254 --server_host_override=grpc-test4.sandbox.googleapis.com --server_port=443 --use_tls=true --test_case=timeout_on_sleeping_server"

@ -20,7 +20,10 @@
}
},
{
"config": "msan"
"config": "msan",
"environ": {
"MSAN_OPTIONS": "poison_in_dtor=1"
}
},
{
"config": "basicprof"

@ -31,7 +31,7 @@ cat << EOF | awk '{ print $1 }' | sort > $want_submodules
886e7d75368e3f4fab3f4d0d3584e4abfc557755 third_party/boringssl-with-bazel (version_for_cocoapods_7.0-857-g886e7d7)
30dbc81fb5ffdc98ea9b14b1918bfe4e8779b26e third_party/gflags (v2.2.0)
ec44c6c1675c25b9827aacd08c02433cccde7780 third_party/googletest (release-1.8.0)
80a37e0782d2d702d52234b62dd4b9ec74fd2c95 third_party/protobuf (v3.4.0)
2761122b810fe8861004ae785cc3ab39f384d342 third_party/protobuf (v3.5.0)
cacf7f1d4e3d44d871b605da3b647f07d718623f third_party/zlib (v1.2.11)
3be1924221e1326df520f8498d704a5c4c8d0cce third_party/cares/cares (cares-1_13_0)
73594cde8c9a52a102c4341c244c833aa61b9c06 third_party/bloaty

Loading…
Cancel
Save