Merge pull request #4502 from ctiller/yawn

BoringSSL integration
pull/4564/head
Michael Lumish 9 years ago
commit 7593cff337
  1. 7
      .gitmodules
  2. 2
      BUILD
  3. 23875
      Makefile
  4. 1
      build.yaml
  5. 2
      gRPC.podspec
  6. 1252
      src/boringssl/err_data.c
  7. 156
      src/boringssl/gen_build_yaml.py
  8. 3
      src/core/security/jwt_verifier.c
  9. 6
      src/core/tsi/ssl_transport_security.c
  10. 55
      src/core/tsi/ssl_types.h
  11. 191
      templates/Makefile.template
  12. 69
      templates/test/core/end2end/end2end_defs.include
  13. 5
      templates/test/core/end2end/end2end_nosec_tests.c.template
  14. 5
      templates/test/core/end2end/end2end_tests.c.template
  15. 3
      templates/tools/run_tests/sources_and_headers.json.template
  16. 6
      templates/tools/run_tests/tests.json.template
  17. 2
      templates/vsprojects/buildtests_c.sln.template
  18. 4
      templates/vsprojects/vcxproj.filters_defs.include
  19. 204
      templates/vsprojects/vcxproj_defs.include
  20. 2
      test/core/bad_client/gen_build_yaml.py
  21. 2
      test/core/bad_ssl/gen_build_yaml.py
  22. 267
      test/core/end2end/end2end_nosec_tests.c
  23. 273
      test/core/end2end/end2end_tests.c
  24. 2
      test/core/end2end/end2end_tests.h
  25. 2
      test/core/end2end/fixtures/h2_census.c
  26. 2
      test/core/end2end/fixtures/h2_compress.c
  27. 2
      test/core/end2end/fixtures/h2_fakesec.c
  28. 2
      test/core/end2end/fixtures/h2_full+pipe.c
  29. 2
      test/core/end2end/fixtures/h2_full+poll+pipe.c
  30. 2
      test/core/end2end/fixtures/h2_full+poll.c
  31. 2
      test/core/end2end/fixtures/h2_full.c
  32. 2
      test/core/end2end/fixtures/h2_oauth2.c
  33. 2
      test/core/end2end/fixtures/h2_proxy.c
  34. 2
      test/core/end2end/fixtures/h2_sockpair+trace.c
  35. 2
      test/core/end2end/fixtures/h2_sockpair.c
  36. 2
      test/core/end2end/fixtures/h2_sockpair_1byte.c
  37. 2
      test/core/end2end/fixtures/h2_ssl+poll.c
  38. 2
      test/core/end2end/fixtures/h2_ssl.c
  39. 2
      test/core/end2end/fixtures/h2_ssl_proxy.c
  40. 2
      test/core/end2end/fixtures/h2_uchannel.c
  41. 2
      test/core/end2end/fixtures/h2_uds+poll.c
  42. 2
      test/core/end2end/fixtures/h2_uds.c
  43. 86
      test/core/end2end/gen_build_yaml.py
  44. 2
      test/core/end2end/tests/bad_hostname.c
  45. 2
      test/core/end2end/tests/binary_metadata.c
  46. 2
      test/core/end2end/tests/call_creds.c
  47. 2
      test/core/end2end/tests/cancel_after_accept.c
  48. 2
      test/core/end2end/tests/cancel_after_client_done.c
  49. 2
      test/core/end2end/tests/cancel_after_invoke.c
  50. 2
      test/core/end2end/tests/cancel_before_invoke.c
  51. 2
      test/core/end2end/tests/cancel_in_a_vacuum.c
  52. 2
      test/core/end2end/tests/cancel_with_status.c
  53. 2
      test/core/end2end/tests/channel_connectivity.c
  54. 2
      test/core/end2end/tests/channel_ping.c
  55. 2
      test/core/end2end/tests/compressed_payload.c
  56. 2
      test/core/end2end/tests/default_host.c
  57. 2
      test/core/end2end/tests/disappearing_server.c
  58. 2
      test/core/end2end/tests/empty_batch.c
  59. 2
      test/core/end2end/tests/graceful_server_shutdown.c
  60. 2
      test/core/end2end/tests/high_initial_seqno.c
  61. 2
      test/core/end2end/tests/hpack_size.c
  62. 2
      test/core/end2end/tests/invoke_large_request.c
  63. 2
      test/core/end2end/tests/large_metadata.c
  64. 2
      test/core/end2end/tests/max_concurrent_streams.c
  65. 2
      test/core/end2end/tests/max_message_length.c
  66. 2
      test/core/end2end/tests/metadata.c
  67. 2
      test/core/end2end/tests/negative_deadline.c
  68. 2
      test/core/end2end/tests/no_op.c
  69. 2
      test/core/end2end/tests/payload.c
  70. 2
      test/core/end2end/tests/ping_pong_streaming.c
  71. 2
      test/core/end2end/tests/registered_call.c
  72. 2
      test/core/end2end/tests/request_with_flags.c
  73. 2
      test/core/end2end/tests/request_with_payload.c
  74. 2
      test/core/end2end/tests/server_finishes_request.c
  75. 2
      test/core/end2end/tests/shutdown_finishes_calls.c
  76. 2
      test/core/end2end/tests/shutdown_finishes_tags.c
  77. 2
      test/core/end2end/tests/simple_delayed_request.c
  78. 2
      test/core/end2end/tests/simple_request.c
  79. 2
      test/core/end2end/tests/trailing_metadata.c
  80. 2
      test/cpp/end2end/zookeeper_test.cc
  81. 6
      test/cpp/util/string_ref_test.cc
  82. 1
      third_party/boringssl
  83. 1
      third_party/openssl
  84. 3
      tools/asan_suppressions.txt
  85. 2
      tools/buildgen/generate_build_additions.sh
  86. 63
      tools/buildgen/generate_projects.py
  87. 2
      tools/buildgen/generate_projects.sh
  88. 5
      tools/buildgen/plugins/expand_bin_attrs.py
  89. 1
      tools/doxygen/Doxyfile.core.internal
  90. 2
      tools/jenkins/grpc_jenkins_slave/Dockerfile
  91. 2
      tools/jenkins/grpc_jenkins_slave_32bits/Dockerfile
  92. 2
      tools/run_tests/run_sanity.sh
  93. 10
      tools/run_tests/run_tests.py
  94. 19658
      tools/run_tests/sources_and_headers.json
  95. 12076
      tools/run_tests/tests.json
  96. 21953
      vsprojects/buildtests_c.sln
  97. 383
      vsprojects/grpc++_unsecure/grpc++_unsecure.vcxproj
  98. 21
      vsprojects/grpc.sln
  99. 167
      vsprojects/grpc_csharp_plugin/grpc_csharp_plugin.vcxproj
  100. 167
      vsprojects/grpc_objective_c_plugin/grpc_objective_c_plugin.vcxproj
  101. Some files were not shown because too many files have changed in this diff Show More

7
.gitmodules vendored

@ -1,10 +1,6 @@
[submodule "third_party/zlib"]
path = third_party/zlib
url = https://github.com/madler/zlib
[submodule "third_party/openssl"]
path = third_party/openssl
url = https://github.com/openssl/openssl.git
branch = OpenSSL_1_0_2-stable
[submodule "third_party/protobuf"]
path = third_party/protobuf
url = https://github.com/google/protobuf.git
@ -15,3 +11,6 @@
[submodule "third_party/googletest"]
path = third_party/googletest
url = https://github.com/google/googletest.git
[submodule "third_party/boringssl"]
path = third_party/boringssl
url = https://boringssl.googlesource.com/boringssl

@ -149,6 +149,7 @@ cc_library(
"src/core/security/security_context.h",
"src/core/tsi/fake_transport_security.h",
"src/core/tsi/ssl_transport_security.h",
"src/core/tsi/ssl_types.h",
"src/core/tsi/transport_security.h",
"src/core/tsi/transport_security_interface.h",
"src/core/census/grpc_filter.h",
@ -1242,6 +1243,7 @@ objc_library(
"src/core/security/security_context.h",
"src/core/tsi/fake_transport_security.h",
"src/core/tsi/ssl_transport_security.h",
"src/core/tsi/ssl_types.h",
"src/core/tsi/transport_security.h",
"src/core/tsi/transport_security_interface.h",
"src/core/census/grpc_filter.h",

23875
Makefile

File diff suppressed because one or more lines are too long

@ -479,6 +479,7 @@ libs:
- src/core/security/security_context.h
- src/core/tsi/fake_transport_security.h
- src/core/tsi/ssl_transport_security.h
- src/core/tsi/ssl_types.h
- src/core/tsi/transport_security.h
- src/core/tsi/transport_security_interface.h
src:

@ -153,6 +153,7 @@ Pod::Spec.new do |s|
'src/core/security/security_context.h',
'src/core/tsi/fake_transport_security.h',
'src/core/tsi/ssl_transport_security.h',
'src/core/tsi/ssl_types.h',
'src/core/tsi/transport_security.h',
'src/core/tsi/transport_security_interface.h',
'src/core/census/grpc_filter.h',
@ -450,6 +451,7 @@ Pod::Spec.new do |s|
'src/core/security/security_context.h',
'src/core/tsi/fake_transport_security.h',
'src/core/tsi/ssl_transport_security.h',
'src/core/tsi/ssl_types.h',
'src/core/tsi/transport_security.h',
'src/core/tsi/transport_security_interface.h',
'src/core/census/grpc_filter.h',

File diff suppressed because it is too large Load Diff

@ -0,0 +1,156 @@
#!/usr/bin/env python2.7
# Copyright 2015, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import shutil
import sys
import os
import yaml
boring_ssl_root = os.path.abspath(os.path.join(
os.path.dirname(sys.argv[0]),
'../../third_party/boringssl'))
sys.path.append(os.path.join(boring_ssl_root, 'util'))
import generate_build_files
def map_dir(filename):
if filename[0:4] == 'src/':
return 'third_party/boringssl/' + filename[4:]
else:
return 'src/boringssl/' + filename
def map_testarg(arg):
if '/' in arg:
return 'third_party/boringssl/' + arg
else:
return arg
class Grpc(object):
yaml = None
def WriteFiles(self, files, asm_outputs):
self.yaml = {
'#': 'generated with tools/buildgen/gen_boring_ssl_build_yaml.py',
'raw_boringssl_build_output_for_debugging': {
'files': files,
'asm_outputs': asm_outputs,
},
'libs': [
{
'name': 'boringssl',
'build': 'private',
'language': 'c',
'secure': 'no',
'src': sorted(
map_dir(f)
for f in files['ssl'] + files['crypto']
),
'headers': sorted(
map_dir(f)
for f in files['ssl_headers'] + files['ssl_internal_headers'] + files['crypto_headers'] + files['crypto_internal_headers']
),
'boringssl': True,
},
{
'name': 'boringssl_test_util',
'build': 'private',
'language': 'c++',
'secure': 'no',
'boringssl': True,
'src': [
map_dir(f)
for f in sorted(files['test_support'])
],
}
] + [
{
'name': 'boringssl_%s_lib' % os.path.splitext(os.path.basename(test))[0],
'build': 'private',
'secure': 'no',
'language': 'c' if os.path.splitext(test)[1] == '.c' else 'c++',
'src': [map_dir(test)],
'vs_proj_dir': 'test/boringssl',
'boringssl': True,
'deps': [
'boringssl_test_util',
'boringssl',
]
}
for test in sorted(files['test'])
],
'targets': [
{
'name': 'boringssl_%s' % os.path.splitext(os.path.basename(test))[0],
'build': 'test',
'run': False,
'secure': 'no',
'language': 'c++',
'src': [],
'vs_proj_dir': 'test/boringssl',
'boringssl': True,
'deps': [
'boringssl_%s_lib' % os.path.splitext(os.path.basename(test))[0],
'boringssl_test_util',
'boringssl',
]
}
for test in sorted(files['test'])
],
'tests': [
{
'name': 'boringssl_%s' % os.path.basename(test[0]),
'args': [map_testarg(arg) for arg in test[1:]],
'exclude_configs': ['asan'],
'ci_platforms': ['linux', 'mac', 'posix', 'windows'],
'platforms': ['linux', 'mac', 'posix', 'windows'],
'flaky': False,
'language': 'c++',
'boringssl': True
}
for test in files['tests']
]
}
os.chdir(os.path.dirname(sys.argv[0]))
os.mkdir('src')
try:
for f in os.listdir(boring_ssl_root):
os.symlink(os.path.join(boring_ssl_root, f),
os.path.join('src', f))
g = Grpc()
generate_build_files.main([g])
print yaml.dump(g.yaml)
finally:
shutil.rmtree('src')

@ -38,6 +38,7 @@
#include "src/core/httpcli/httpcli.h"
#include "src/core/security/base64.h"
#include "src/core/tsi/ssl_types.h"
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
@ -443,7 +444,7 @@ static BIGNUM *bignum_from_base64(const char *b64) {
return NULL;
}
result =
BN_bin2bn(GPR_SLICE_START_PTR(bin), (int)GPR_SLICE_LENGTH(bin), NULL);
BN_bin2bn(GPR_SLICE_START_PTR(bin), TSI_SIZE_AS_SIZE(GPR_SLICE_LENGTH(bin)), NULL);
gpr_slice_unref(bin);
return result;
}

@ -40,7 +40,6 @@
#include <grpc/support/sync.h>
#include <grpc/support/thd.h>
#include <grpc/support/useful.h>
#include "src/core/tsi/transport_security.h"
#include <openssl/bio.h>
#include <openssl/crypto.h> /* For OPENSSL_free */
@ -49,6 +48,9 @@
#include <openssl/x509.h>
#include <openssl/x509v3.h>
#include "src/core/tsi/ssl_types.h"
#include "src/core/tsi/transport_security.h"
/* --- Constants. ---*/
#define TSI_SSL_MAX_PROTECTED_FRAME_SIZE_UPPER_BOUND 16384
@ -291,7 +293,7 @@ static tsi_result add_subject_alt_names_properties_to_peer(
for (i = 0; i < subject_alt_name_count; i++) {
GENERAL_NAME *subject_alt_name =
sk_GENERAL_NAME_value(subject_alt_names, (int)i);
sk_GENERAL_NAME_value(subject_alt_names, TSI_SIZE_AS_SIZE(i));
/* Filter out the non-dns entries names. */
if (subject_alt_name->type == GEN_DNS) {
unsigned char *dns_name = NULL;

@ -0,0 +1,55 @@
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef GRPC_INTERNAL_CORE_TSI_SSL_TYPES_H
#define GRPC_INTERNAL_CORE_TSI_SSL_TYPES_H
/* A collection of macros to cast between various integer types that are
* used differently between BoringSSL and OpenSSL:
* TSI_INT_AS_SIZE(x): convert 'int x' to a length parameter for an OpenSSL
* function
* TSI_SIZE_AS_SIZE(x): convert 'size_t x' to a length parameter for an OpenSSL
* function
*/
#include <openssl/ssl.h>
#ifdef OPENSSL_IS_BORINGSSL
#define TSI_INT_AS_SIZE(x) ((size_t)(x))
#define TSI_SIZE_AS_SIZE(x) (x)
#else
#define TSI_INT_AS_SIZE(x) (x)
#define TSI_SIZE_AS_SIZE(x) ((int)(x))
#endif
#endif

@ -154,7 +154,6 @@
LD_valgrind = $(DEFAULT_CC)
LDXX_valgrind = $(DEFAULT_CXX)
CPPFLAGS_valgrind = -O0
OPENSSL_CFLAGS_valgrind = -DPURIFY
LDFLAGS_valgrind = -rdynamic
DEFINES_valgrind = _DEBUG DEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=20
@ -164,7 +163,8 @@
CXX_tsan = clang++
LD_tsan = clang
LDXX_tsan = clang++
CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument
CFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument
CXXFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument
LDFLAGS_tsan = -fsanitize=thread
DEFINES_tsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=10
@ -174,7 +174,8 @@
CXX_asan = clang++
LD_asan = clang
LDXX_asan = clang++
CPPFLAGS_asan = -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument
CFLAGS_asan = -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument
CXXFLAGS_asan = -O0 -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument
LDFLAGS_asan = -fsanitize=address
DEFINES_asan = GRPC_TEST_SLOWDOWN_BUILD_FACTOR=3
@ -184,8 +185,8 @@
CXX_msan = clang++-libc++
LD_msan = clang
LDXX_msan = clang++-libc++
CPPFLAGS_msan = -O0 -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
OPENSSL_CFLAGS_msan = -DPURIFY
CFLAGS_msan = -O0 -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
CXXFLAGS_msan = -O0 -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
LDFLAGS_msan = -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1
DEFINES_msan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=4
@ -195,8 +196,8 @@
CXX_ubsan = clang++
LD_ubsan = clang
LDXX_ubsan = clang++
CPPFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument
OPENSSL_CFLAGS_ubsan = -DPURIFY
CFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument
CXXFLAGS_ubsan = -O1 -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument
LDFLAGS_ubsan = -fsanitize=undefined
DEFINES_ubsan = NDEBUG GRPC_TEST_SLOWDOWN_BUILD_FACTOR=3
@ -205,7 +206,8 @@
CXX_gcov = g++
LD_gcov = gcc
LDXX_gcov = g++
CPPFLAGS_gcov = -O0 -fprofile-arcs -ftest-coverage -Wno-return-type
CFLAGS_gcov = -O0 -fprofile-arcs -ftest-coverage -Wno-return-type
CXXFLAGS_gcov = -O0 -fprofile-arcs -ftest-coverage -Wno-return-type
LDFLAGS_gcov = -fprofile-arcs -ftest-coverage -rdynamic
DEFINES_gcov = _DEBUG DEBUG GPR_GCOV
@ -264,16 +266,19 @@
DEFINES += $(EXTRA_DEFINES)
endif
CFLAGS += -std=c89 -pedantic -Wsign-conversion -Wconversion -Wshadow
CFLAGS += -std=c99 -Wsign-conversion -Wconversion -Wshadow
ifeq ($(HAS_CXX11),true)
CXXFLAGS += -std=c++11
else
CXXFLAGS += -std=c++0x
endif
CPPFLAGS += -g -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
CFLAGS += -g -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
CXXFLAGS += -g -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
LDFLAGS += -g
CPPFLAGS += $(CPPFLAGS_$(CONFIG))
CFLAGS += $(CFLAGS_$(CONFIG))
CXXFLAGS += $(CXXFLAGS_$(CONFIG))
DEFINES += $(DEFINES_$(CONFIG)) INSTALL_PREFIX=\"$(prefix)\"
LDFLAGS += $(LDFLAGS_$(CONFIG))
@ -309,12 +314,12 @@
endif
ifeq ($(SYSTEM),Linux)
LIBS = rt m z pthread
LIBS = rt m pthread
LDFLAGS += -pthread
endif
ifeq ($(SYSTEM),MINGW32)
LIBS = m z pthread
LIBS = m pthread
LDFLAGS += -pthread
endif
@ -343,7 +348,6 @@
HOST_LDFLAGS = $(LDFLAGS)
HOST_LDLIBS = $(LDLIBS)
# These are automatically computed variables.
# There shouldn't be any need to change anything from now on.
@ -510,7 +514,7 @@
# Note that for testing purposes, one can do:
# make HAS_EMBEDDED_OPENSSL_ALPN=false
# to emulate the fact we do not have OpenSSL in the third_party folder.
ifeq ($(wildcard third_party/openssl/ssl/ssl.h),)
ifeq ($(wildcard third_party/boringssl/include/openssl/ssl.h),)
HAS_EMBEDDED_OPENSSL_ALPN = false
else
HAS_EMBEDDED_OPENSSL_ALPN = true
@ -537,6 +541,7 @@
ifeq ($(HAS_SYSTEM_ZLIB),false)
ifeq ($(HAS_EMBEDDED_ZLIB),true)
ZLIB_DEP = $(LIBDIR)/$(CONFIG)/zlib/libz.a
ZLIB_MERGE_LIBS = $(LIBDIR)/$(CONFIG)/zlib/libz.a
CPPFLAGS += -Ithird_party/zlib
LDFLAGS += -L$(LIBDIR)/$(CONFIG)/zlib
else
@ -546,9 +551,11 @@
ifeq ($(HAS_PKG_CONFIG),true)
CPPFLAGS += $(shell $(PKG_CONFIG) --cflags zlib)
LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L zlib)
LIBS += $(patsubst -l%,%,$(shell $(PKG_CONFIG) --libs-only-l zlib))
PC_REQUIRES_GRPC += zlib
else
PC_LIBS_GRPC += -lz
LIBS += z
endif
endif
@ -558,6 +565,34 @@
PC_LIBS_SECURE =
ifeq ($(HAS_SYSTEM_OPENSSL_ALPN),true)
EMBED_OPENSSL ?= false
NO_SECURE ?= false
else # HAS_SYSTEM_OPENSSL_ALPN=false
ifeq ($(HAS_EMBEDDED_OPENSSL_ALPN),true)
EMBED_OPENSSL ?= true
NO_SECURE ?= false
else # HAS_EMBEDDED_OPENSSL_ALPN=false
ifeq ($(HAS_SYSTEM_OPENSSL_NPN),true)
EMBED_OPENSSL ?= false
NO_SECURE ?= false
else
NO_SECURE ?= true
endif # HAS_SYSTEM_OPENSSL_NPN=true
endif # HAS_EMBEDDED_OPENSSL_ALPN
endif # HAS_SYSTEM_OPENSSL_ALPN
OPENSSL_DEP :=
OPENSSL_MERGE_LIBS :=
ifeq ($(NO_SECURE),false)
ifeq ($(EMBED_OPENSSL),true)
OPENSSL_DEP += $(LIBDIR)/$(CONFIG)/libboringssl.a
OPENSSL_MERGE_LIBS += $(LIBDIR)/$(CONFIG)/libboringssl.a
# need to prefix these to ensure overriding system libraries
CPPFLAGS := -Ithird_party/boringssl/include $(CPPFLAGS)
ifeq ($(OPENSSL_REQUIRES_DL),true)
LIBS_SECURE = dl
endif # OPENSSL_REQUIRES_DL
else # EMBED_OPENSSL=false
ifeq ($(HAS_PKG_CONFIG),true)
OPENSSL_PKG_CONFIG = true
PC_REQUIRES_SECURE = openssl
@ -566,40 +601,22 @@
ifeq ($(SYSTEM),Linux)
ifneq ($(LDFLAGS_OPENSSL_PKG_CONFIG),)
LDFLAGS_OPENSSL_PKG_CONFIG += $(shell $(PKG_CONFIG) --libs-only-L openssl | sed s/L/Wl,-rpath,/)
endif
endif
endif # LDFLAGS_OPENSSL_PKG_CONFIG=''
endif # System=Linux
LDFLAGS := $(LDFLAGS_OPENSSL_PKG_CONFIG) $(LDFLAGS)
else
else # HAS_PKG_CONFIG=false
LIBS_SECURE = $(OPENSSL_LIBS)
ifeq ($(OPENSSL_REQUIRES_DL),true)
LIBS_SECURE += dl
PC_LIBS_SECURE = $(addprefix -l, $(LIBS_SECURE))
endif
endif
else
ifeq ($(HAS_EMBEDDED_OPENSSL_ALPN),true)
USE_SYSTEM_OPENSSL = false
OPENSSL_DEP = $(LIBDIR)/$(CONFIG)/openssl/libssl.a
OPENSSL_MERGE_LIBS += $(LIBDIR)/$(CONFIG)/openssl/libssl.a $(LIBDIR)/$(CONFIG)/openssl/libcrypto.a
# need to prefix these to ensure overriding system libraries
CPPFLAGS := -Ithird_party/openssl/include $(CPPFLAGS)
LDFLAGS := -L$(LIBDIR)/$(CONFIG)/openssl $(LDFLAGS)
ifeq ($(OPENSSL_REQUIRES_DL),true)
LIBS_SECURE = dl
endif
else
endif # HAS_PKG_CONFIG
ifeq ($(HAS_SYSTEM_OPENSSL_NPN),true)
USE_SYSTEM_OPENSSL = true
CPPFLAGS += -DTSI_OPENSSL_ALPN_SUPPORT=0
LIBS_SECURE = $(OPENSSL_LIBS)
endif # HAS_SYSTEM_OPENSSL_NPN
ifeq ($(OPENSSL_REQUIRES_DL),true)
LIBS_SECURE += dl
endif
else
NO_SECURE = true
endif
endif
endif
PC_LIBS_SECURE = $(addprefix -l, $(LIBS_SECURE))
endif # OPENSSL_REQUIRES_DL=true
endif # EMBED_OPENSSL
endif # NO_SECURE
ifeq ($(OPENSSL_PKG_CONFIG),true)
LDLIBS_SECURE += $(shell $(PKG_CONFIG) --libs-only-l openssl)
@ -831,44 +848,12 @@
$(LIBDIR)/$(CONFIG)/zlib/libz.a:
$(E) "[MAKE] Building zlib"
$(Q)(cd third_party/zlib ; CC="$(CC)" CFLAGS="$(PIC_CPPFLAGS) -fvisibility=hidden $(CPPFLAGS_$(CONFIG)) $(ZLIB_CFLAGS_EXTRA)" ./configure --static)
$(Q)(cd third_party/zlib ; CC="$(CC)" CFLAGS="$(CFLAGS_$(CONFIG)) $(PIC_CPPFLAGS) -fvisibility=hidden $(CPPFLAGS_$(CONFIG)) $(ZLIB_CFLAGS_EXTRA)" ./configure --static)
$(Q)$(MAKE) -C third_party/zlib clean
$(Q)$(MAKE) -C third_party/zlib
$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/zlib
$(Q)cp third_party/zlib/libz.a $(LIBDIR)/$(CONFIG)/zlib
$(LIBDIR)/$(CONFIG)/openssl/libssl.a:
$(E) "[MAKE] Building openssl for $(SYSTEM)"
ifeq ($(SYSTEM),Darwin)
$(Q)(cd third_party/openssl ; CC="$(CC) $(PIC_CPPFLAGS) -fvisibility=hidden $(CPPFLAGS_$(CONFIG)) $(OPENSSL_CFLAGS_$(CONFIG)) $(OPENSSL_CFLAGS_EXTRA)" ./Configure darwin64-x86_64-cc)
else
ifeq ($(SYSTEM),MINGW32)
@echo "We currently don't have a good way to compile OpenSSL in-place under msys."
@echo "Please provide a OpenSSL in your mingw32 system."
@echo
@echo "Note that you can find a compatible version of the libraries here:"
@echo
@echo "http://slproweb.com/products/Win32OpenSSL.html"
@echo
@echo "If you decide to install that one, take the full version. The light"
@echo "version only contains compiled DLLs, without the development files."
@echo
@echo "When installing, chose to copy the OpenSSL dlls to the OpenSSL binaries"
@echo "directory. This way we'll link to them directly."
@echo
@echo "You can then re-start the build the following way:"
@echo
@echo " CPPFLAGS=-I/c/OpenSSL-Win64/include LDFLAGS=-L/c/OpenSSL-Win64 make"
@false
else
$(Q)(cd third_party/openssl ; CC="$(CC) $(PIC_CPPFLAGS) -fvisibility=hidden $(CPPFLAGS_$(CONFIG)) $(OPENSSL_CFLAGS_$(CONFIG)) $(OPENSSL_CFLAGS_EXTRA)" ./config no-asm $(OPENSSL_CONFIG_$(CONFIG)))
endif
endif
$(Q)$(MAKE) -j 1 -C third_party/openssl clean
$(Q)(unset CPPFLAGS; $(MAKE) -j 1 -C third_party/openssl build_crypto build_ssl)
$(Q)mkdir -p $(LIBDIR)/$(CONFIG)/openssl
$(Q)cp third_party/openssl/libssl.a third_party/openssl/libcrypto.a $(LIBDIR)/$(CONFIG)/openssl
third_party/protobuf/configure:
$(E) "[AUTOGEN] Preparing protobuf"
$(Q)(cd third_party/protobuf ; autoreconf -f -i -Wall,no-obsolete)
@ -959,7 +944,7 @@
privatelibs_c: \
% for lib in libs:
% if lib.build == 'private' and lib.language == 'c' and not lib.get('external_deps', None):
% if lib.build == 'private' and lib.language == 'c' and not lib.get('external_deps', None) and not lib.boringssl:
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
% endif
% endfor
@ -1533,6 +1518,16 @@
LIB${lib.name.upper()}_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIB${lib.name.upper()}_SRC))))
% if lib.boringssl:
# boringssl needs an override to ensure that it does not include
# system openssl headers regardless of other configuration
# we do so here with a target specific variable assignment
$(LIB${lib.name.upper()}_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value -fvisibility=hidden
$(LIB${lib.name.upper()}_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS) -fvisibility=hidden
$(LIB${lib.name.upper()}_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
% else:
% endif
## If the library requires OpenSSL, let's add some restrictions.
% if lib.get('secure', 'check') == True or lib.get('secure', 'check') == 'check':
ifeq ($(NO_SECURE),true)
@ -1590,7 +1585,7 @@
else
% endif
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP)\
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a: $(ZLIB_DEP) $(OPENSSL_DEP) \
% endif
% if lib.language == 'c++':
$(PROTOBUF_DEP)\
@ -1601,16 +1596,32 @@
$(Q) rm -f $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
$(Q) $(AR) rcs $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(LIB${lib.name.upper()}_OBJS)
% if lib.get('baselib', False):
% if lib.get('secure', 'check') == True:
$(Q) rm -rf $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}
$(Q) mkdir $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}
$(Q) ( cd $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name} ; $(AR) x $(LIBDIR)/$(CONFIG)/lib${lib.name}.a )
$(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( cd $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name} ; <%text>ar x $${l}</%text> ) ; done
$(Q) rm -f $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/__.SYMDEF*
$(Q) ar rcs $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/*
$(Q) ( mkdir -p $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/grpc ; <%text>\</%text>
cd $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/grpc ; <%text>\</%text>
$(AR) x $(LIBDIR)/$(CONFIG)/lib${lib.name}.a )
$(Q) for l in $(ZLIB_MERGE_LIBS) ; do ( <%text>\</%text>
mkdir -p $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/zlib ; <%text>\</%text>
cd $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/zlib ; <%text>\</%text>
<%text>$(AR) x $${l}</%text> ) ; done
$(Q) for l in $(ZLIB_MERGE_LIBS) ; do ( <%text>\</%text>
mkdir -p $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/zlib ; <%text>\</%text>
cd $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/zlib ; <%text>\</%text>
<%text>$(AR) x $${l}</%text> ) ; done
% if lib.get('secure', 'check') == True:
$(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( <%text>\</%text>
mkdir -p $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/ssl ; <%text>\</%text>
cd $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/ssl ; <%text>\</%text>
<%text>$(AR) x $${l}</%text> ) ; done
$(Q) for l in $(OPENSSL_MERGE_LIBS) ; do ( <%text>\</%text>
mkdir -p $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/ssl ; <%text>\</%text>
cd $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/ssl ; <%text>\</%text>
<%text>$(AR) x $${l}</%text> ) ; done
% endif
$(Q) rm -f $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/*/__.SYMDEF*
$(Q) ar rcs $(LIBDIR)/$(CONFIG)/lib${lib.name}.a $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}/*/*
$(Q) rm -rf $(BUILDDIR_ABSOLUTE)/tmp-merge-${lib.name}
% endif
% endif
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib $(LIBDIR)/$(CONFIG)/lib${lib.name}.a
endif
@ -1643,6 +1654,7 @@
security = lib.get('secure', 'check')
if security == True:
common = common + ' $(OPENSSL_MERGE_LIBS) $(LDLIBS_SECURE)'
common = common + ' $(ZLIB_MERGE_LIBS)'
if security in [True, 'check']:
for src in lib.src:
@ -1732,6 +1744,17 @@
else
% endif
% if tgt.boringssl:
# boringssl needs an override to ensure that it does not include
# system openssl headers regardless of other configuration
# we do so here with a target specific variable assignment
$(${tgt.name.upper()}_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value
$(${tgt.name.upper()}_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
$(${tgt.name.upper()}_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
% else:
% endif
##
## We're not trying to add a dependency on building zlib and openssl here,
## as it's already done in the libraries. We're assuming that the build
@ -1765,7 +1788,7 @@
$(LIBDIR)/$(CONFIG)/lib${dep}.a\
% endfor
% if tgt.language == "c++":
% if tgt.language == "c++" or tgt.boringssl:
## C++ targets specificies.
% if tgt.build == 'protoc':
$(E) "[HOSTLD] Linking $@"

@ -0,0 +1,69 @@
<%def name="end2end_selector(tests)">
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
<% tests = sorted(tests) %>
/* This file is auto-generated */
#include "test/core/end2end/end2end_tests.h"
#include <string.h>
#include <grpc/support/log.h>
% for test in tests:
extern void ${test}(grpc_end2end_test_config config);
% endfor
void grpc_end2end_tests(int argc, char **argv, grpc_end2end_test_config config) {
int i;
if (argc <= 1) {
% for test in tests:
${test}(config);
% endfor
return;
}
for (i = 1; i < argc; i++) {
% for test in tests:
if (0 == strcmp("${test}", argv[i])) {
${test}(config);
continue;
}
% endfor
gpr_log(GPR_DEBUG, "not a test: '%%s'", argv[i]);
abort();
}
}
</%def>

@ -0,0 +1,5 @@
%YAML 1.2
--- |
<%namespace file="end2end_defs.include" import="*"/>
${end2end_selector(k for k, v in core_end2end_tests.iteritems() if not v)}

@ -0,0 +1,5 @@
%YAML 1.2
--- |
<%namespace file="end2end_defs.include" import="*"/>
${end2end_selector(core_end2end_tests.keys())}

@ -31,5 +31,6 @@
tgt.get('headers', []) +
proto_headers(tgt.src)),
"deps": sorted(tgt.get('deps', []))}
for tgt in (targets + libs)],
for tgt in (targets + libs)
if not tgt.boringssl],
sort_keys=True, indent=2)}

@ -8,8 +8,10 @@
"language": tgt.language,
"platforms": tgt.platforms,
"ci_platforms": tgt.ci_platforms,
"exclude_configs": tgt.get("exclude_configs", []),
"exclude_configs": tgt.get("exclude_configs", []),
"args": [],
"flaky": tgt.flaky}
for tgt in targets
if tgt.get('run', True) and tgt.build == 'test'],
if tgt.get('run', True) and tgt.build == 'test'] +
tests,
sort_keys=True, indent=2)}

@ -2,6 +2,6 @@
--- |
<%namespace file="sln_defs.include" import="gen_solution"/>\
<%
solution_projects = [p for p in vsprojects if p.build != 'protoc' and p.language == 'c']
solution_projects = [p for p in vsprojects if p.build != 'protoc' and p.language == 'c' and not p.boringssl]
%>\
${gen_solution(solution_projects, use_dlls='yes')}

@ -5,7 +5,7 @@
def calc_to_filter(path):
return '\\'.join(path.split('/')[:-1])
%>\
<%def name="get_repo_root(proj)">${'..\..\..' + ('\..' if proj.vs_proj_dir != '.' else '')}</%def>\
<%def name="get_repo_root(proj)">${'$(SolutionDir)\..'}</%def>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%def name="to_filter(path)">${calc_to_filter(path)}</%def>\
<%def name="filter_to_guid(proj, filter)">${re.sub('(........)(....)(....)(....)', r'\1-\2-\3-\4-', hashlib.md5(''.join([filter, proj])).hexdigest())}</%def>\
@ -62,4 +62,4 @@
</Project>
% endif
% endfor
</%def>\
</%def>\

@ -1,6 +1,35 @@
<%namespace file="packages.include" import="gen_package_props,gen_package_targets,gen_package_ensure"/>\
<%def name="to_windows_path(path)">${path.replace('/','\\')}</%def>\
<%def name="get_subsystem(is_library)">${'Windows' if is_library else 'Console'}</%def>\
<%def name="item_definition_group(project, target, debug, dll, _64bit)">\
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='${'%s%s|%s' % ('Debug' if debug else 'Release', '-DLL' if dll else '', 'x64' if _64bit else 'Win32')}'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>${'Disabled' if debug else 'MaxSpeed'}</Optimization>
<PreprocessorDefinitions>WIN32;${'_DEBUG' if debug else 'NDEBUG'};_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
% if not debug:
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
% endif
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>${'MultiThreadedDebug' if debug else 'MultiThreaded'}</RuntimeLibrary>
<TreatWarningAsError>${'false' if target.boringssl else 'true'}</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
## Silence D9007 warning. See #4508
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
% if not debug:
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
% endif
</Link>
</ItemDefinitionGroup>
</%def>\
<%def name="gen_project(name, collection)">\
<%
target = None
@ -33,7 +62,7 @@
props = sorted(list(set(props)))
packages = sorted(list(set(packages)))
dll = project.get('dll', False)
repo_root = '..\..\..' + ('\..' if project.vs_proj_dir != '.' else '')
repo_root = '$(SolutionDir)\..'
%>\
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
@ -141,169 +170,16 @@ ${gen_package_props(packages, repo_root)}\
% endfor
</PropertyGroup>
% endfor
% if dll and dll != 'only':
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
## Silence D9007 warning. See #4508
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
% endif
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>${get_subsystem(project.is_library)}</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
% if dll and dll != 'only':
${item_definition_group(project, target, True, True, False)}
${item_definition_group(project, target, True, True, True)}
${item_definition_group(project, target, False, True, False)}
${item_definition_group(project, target, False, True, True)}
% endif
${item_definition_group(project, target, True, False, False)}
${item_definition_group(project, target, True, False, True)}
${item_definition_group(project, target, False, False, False)}
${item_definition_group(project, target, False, False, True)}
% if project.get('public_headers',[]):
<ItemGroup>
% for public_header in project.public_headers:

@ -64,7 +64,7 @@ def main():
'headers': [
'test/core/bad_client/bad_client.h'
],
'vs_proj_dir': 'test',
'vs_proj_dir': 'test/bad_client',
'deps': [
'grpc_test_util_unsecure',
'grpc_unsecure',

@ -71,7 +71,7 @@ def main():
'language': 'c',
'run': False,
'src': ['test/core/bad_ssl/servers/%s.c' % t],
'vs_proj_dir': 'test',
'vs_proj_dir': 'test/bad_ssl',
'platforms': ['linux', 'posix', 'mac'],
'deps': [
'bad_ssl_test_server',

@ -0,0 +1,267 @@
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/* This file is auto-generated */
#include "test/core/end2end/end2end_tests.h"
#include <string.h>
#include <grpc/support/log.h>
extern void bad_hostname(grpc_end2end_test_config config);
extern void binary_metadata(grpc_end2end_test_config config);
extern void cancel_after_accept(grpc_end2end_test_config config);
extern void cancel_after_client_done(grpc_end2end_test_config config);
extern void cancel_after_invoke(grpc_end2end_test_config config);
extern void cancel_before_invoke(grpc_end2end_test_config config);
extern void cancel_in_a_vacuum(grpc_end2end_test_config config);
extern void cancel_with_status(grpc_end2end_test_config config);
extern void channel_connectivity(grpc_end2end_test_config config);
extern void channel_ping(grpc_end2end_test_config config);
extern void compressed_payload(grpc_end2end_test_config config);
extern void default_host(grpc_end2end_test_config config);
extern void disappearing_server(grpc_end2end_test_config config);
extern void empty_batch(grpc_end2end_test_config config);
extern void graceful_server_shutdown(grpc_end2end_test_config config);
extern void high_initial_seqno(grpc_end2end_test_config config);
extern void hpack_size(grpc_end2end_test_config config);
extern void invoke_large_request(grpc_end2end_test_config config);
extern void large_metadata(grpc_end2end_test_config config);
extern void max_concurrent_streams(grpc_end2end_test_config config);
extern void max_message_length(grpc_end2end_test_config config);
extern void metadata(grpc_end2end_test_config config);
extern void negative_deadline(grpc_end2end_test_config config);
extern void no_op(grpc_end2end_test_config config);
extern void payload(grpc_end2end_test_config config);
extern void ping_pong_streaming(grpc_end2end_test_config config);
extern void registered_call(grpc_end2end_test_config config);
extern void request_with_flags(grpc_end2end_test_config config);
extern void request_with_payload(grpc_end2end_test_config config);
extern void server_finishes_request(grpc_end2end_test_config config);
extern void shutdown_finishes_calls(grpc_end2end_test_config config);
extern void shutdown_finishes_tags(grpc_end2end_test_config config);
extern void simple_delayed_request(grpc_end2end_test_config config);
extern void simple_request(grpc_end2end_test_config config);
extern void trailing_metadata(grpc_end2end_test_config config);
void grpc_end2end_tests(int argc, char **argv, grpc_end2end_test_config config) {
int i;
if (argc <= 1) {
bad_hostname(config);
binary_metadata(config);
cancel_after_accept(config);
cancel_after_client_done(config);
cancel_after_invoke(config);
cancel_before_invoke(config);
cancel_in_a_vacuum(config);
cancel_with_status(config);
channel_connectivity(config);
channel_ping(config);
compressed_payload(config);
default_host(config);
disappearing_server(config);
empty_batch(config);
graceful_server_shutdown(config);
high_initial_seqno(config);
hpack_size(config);
invoke_large_request(config);
large_metadata(config);
max_concurrent_streams(config);
max_message_length(config);
metadata(config);
negative_deadline(config);
no_op(config);
payload(config);
ping_pong_streaming(config);
registered_call(config);
request_with_flags(config);
request_with_payload(config);
server_finishes_request(config);
shutdown_finishes_calls(config);
shutdown_finishes_tags(config);
simple_delayed_request(config);
simple_request(config);
trailing_metadata(config);
return;
}
for (i = 1; i < argc; i++) {
if (0 == strcmp("bad_hostname", argv[i])) {
bad_hostname(config);
continue;
}
if (0 == strcmp("binary_metadata", argv[i])) {
binary_metadata(config);
continue;
}
if (0 == strcmp("cancel_after_accept", argv[i])) {
cancel_after_accept(config);
continue;
}
if (0 == strcmp("cancel_after_client_done", argv[i])) {
cancel_after_client_done(config);
continue;
}
if (0 == strcmp("cancel_after_invoke", argv[i])) {
cancel_after_invoke(config);
continue;
}
if (0 == strcmp("cancel_before_invoke", argv[i])) {
cancel_before_invoke(config);
continue;
}
if (0 == strcmp("cancel_in_a_vacuum", argv[i])) {
cancel_in_a_vacuum(config);
continue;
}
if (0 == strcmp("cancel_with_status", argv[i])) {
cancel_with_status(config);
continue;
}
if (0 == strcmp("channel_connectivity", argv[i])) {
channel_connectivity(config);
continue;
}
if (0 == strcmp("channel_ping", argv[i])) {
channel_ping(config);
continue;
}
if (0 == strcmp("compressed_payload", argv[i])) {
compressed_payload(config);
continue;
}
if (0 == strcmp("default_host", argv[i])) {
default_host(config);
continue;
}
if (0 == strcmp("disappearing_server", argv[i])) {
disappearing_server(config);
continue;
}
if (0 == strcmp("empty_batch", argv[i])) {
empty_batch(config);
continue;
}
if (0 == strcmp("graceful_server_shutdown", argv[i])) {
graceful_server_shutdown(config);
continue;
}
if (0 == strcmp("high_initial_seqno", argv[i])) {
high_initial_seqno(config);
continue;
}
if (0 == strcmp("hpack_size", argv[i])) {
hpack_size(config);
continue;
}
if (0 == strcmp("invoke_large_request", argv[i])) {
invoke_large_request(config);
continue;
}
if (0 == strcmp("large_metadata", argv[i])) {
large_metadata(config);
continue;
}
if (0 == strcmp("max_concurrent_streams", argv[i])) {
max_concurrent_streams(config);
continue;
}
if (0 == strcmp("max_message_length", argv[i])) {
max_message_length(config);
continue;
}
if (0 == strcmp("metadata", argv[i])) {
metadata(config);
continue;
}
if (0 == strcmp("negative_deadline", argv[i])) {
negative_deadline(config);
continue;
}
if (0 == strcmp("no_op", argv[i])) {
no_op(config);
continue;
}
if (0 == strcmp("payload", argv[i])) {
payload(config);
continue;
}
if (0 == strcmp("ping_pong_streaming", argv[i])) {
ping_pong_streaming(config);
continue;
}
if (0 == strcmp("registered_call", argv[i])) {
registered_call(config);
continue;
}
if (0 == strcmp("request_with_flags", argv[i])) {
request_with_flags(config);
continue;
}
if (0 == strcmp("request_with_payload", argv[i])) {
request_with_payload(config);
continue;
}
if (0 == strcmp("server_finishes_request", argv[i])) {
server_finishes_request(config);
continue;
}
if (0 == strcmp("shutdown_finishes_calls", argv[i])) {
shutdown_finishes_calls(config);
continue;
}
if (0 == strcmp("shutdown_finishes_tags", argv[i])) {
shutdown_finishes_tags(config);
continue;
}
if (0 == strcmp("simple_delayed_request", argv[i])) {
simple_delayed_request(config);
continue;
}
if (0 == strcmp("simple_request", argv[i])) {
simple_request(config);
continue;
}
if (0 == strcmp("trailing_metadata", argv[i])) {
trailing_metadata(config);
continue;
}
gpr_log(GPR_DEBUG, "not a test: '%%s'", argv[i]);
abort();
}
}

@ -0,0 +1,273 @@
/*
*
* Copyright 2015, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/* This file is auto-generated */
#include "test/core/end2end/end2end_tests.h"
#include <string.h>
#include <grpc/support/log.h>
extern void bad_hostname(grpc_end2end_test_config config);
extern void binary_metadata(grpc_end2end_test_config config);
extern void call_creds(grpc_end2end_test_config config);
extern void cancel_after_accept(grpc_end2end_test_config config);
extern void cancel_after_client_done(grpc_end2end_test_config config);
extern void cancel_after_invoke(grpc_end2end_test_config config);
extern void cancel_before_invoke(grpc_end2end_test_config config);
extern void cancel_in_a_vacuum(grpc_end2end_test_config config);
extern void cancel_with_status(grpc_end2end_test_config config);
extern void channel_connectivity(grpc_end2end_test_config config);
extern void channel_ping(grpc_end2end_test_config config);
extern void compressed_payload(grpc_end2end_test_config config);
extern void default_host(grpc_end2end_test_config config);
extern void disappearing_server(grpc_end2end_test_config config);
extern void empty_batch(grpc_end2end_test_config config);
extern void graceful_server_shutdown(grpc_end2end_test_config config);
extern void high_initial_seqno(grpc_end2end_test_config config);
extern void hpack_size(grpc_end2end_test_config config);
extern void invoke_large_request(grpc_end2end_test_config config);
extern void large_metadata(grpc_end2end_test_config config);
extern void max_concurrent_streams(grpc_end2end_test_config config);
extern void max_message_length(grpc_end2end_test_config config);
extern void metadata(grpc_end2end_test_config config);
extern void negative_deadline(grpc_end2end_test_config config);
extern void no_op(grpc_end2end_test_config config);
extern void payload(grpc_end2end_test_config config);
extern void ping_pong_streaming(grpc_end2end_test_config config);
extern void registered_call(grpc_end2end_test_config config);
extern void request_with_flags(grpc_end2end_test_config config);
extern void request_with_payload(grpc_end2end_test_config config);
extern void server_finishes_request(grpc_end2end_test_config config);
extern void shutdown_finishes_calls(grpc_end2end_test_config config);
extern void shutdown_finishes_tags(grpc_end2end_test_config config);
extern void simple_delayed_request(grpc_end2end_test_config config);
extern void simple_request(grpc_end2end_test_config config);
extern void trailing_metadata(grpc_end2end_test_config config);
void grpc_end2end_tests(int argc, char **argv, grpc_end2end_test_config config) {
int i;
if (argc <= 1) {
bad_hostname(config);
binary_metadata(config);
call_creds(config);
cancel_after_accept(config);
cancel_after_client_done(config);
cancel_after_invoke(config);
cancel_before_invoke(config);
cancel_in_a_vacuum(config);
cancel_with_status(config);
channel_connectivity(config);
channel_ping(config);
compressed_payload(config);
default_host(config);
disappearing_server(config);
empty_batch(config);
graceful_server_shutdown(config);
high_initial_seqno(config);
hpack_size(config);
invoke_large_request(config);
large_metadata(config);
max_concurrent_streams(config);
max_message_length(config);
metadata(config);
negative_deadline(config);
no_op(config);
payload(config);
ping_pong_streaming(config);
registered_call(config);
request_with_flags(config);
request_with_payload(config);
server_finishes_request(config);
shutdown_finishes_calls(config);
shutdown_finishes_tags(config);
simple_delayed_request(config);
simple_request(config);
trailing_metadata(config);
return;
}
for (i = 1; i < argc; i++) {
if (0 == strcmp("bad_hostname", argv[i])) {
bad_hostname(config);
continue;
}
if (0 == strcmp("binary_metadata", argv[i])) {
binary_metadata(config);
continue;
}
if (0 == strcmp("call_creds", argv[i])) {
call_creds(config);
continue;
}
if (0 == strcmp("cancel_after_accept", argv[i])) {
cancel_after_accept(config);
continue;
}
if (0 == strcmp("cancel_after_client_done", argv[i])) {
cancel_after_client_done(config);
continue;
}
if (0 == strcmp("cancel_after_invoke", argv[i])) {
cancel_after_invoke(config);
continue;
}
if (0 == strcmp("cancel_before_invoke", argv[i])) {
cancel_before_invoke(config);
continue;
}
if (0 == strcmp("cancel_in_a_vacuum", argv[i])) {
cancel_in_a_vacuum(config);
continue;
}
if (0 == strcmp("cancel_with_status", argv[i])) {
cancel_with_status(config);
continue;
}
if (0 == strcmp("channel_connectivity", argv[i])) {
channel_connectivity(config);
continue;
}
if (0 == strcmp("channel_ping", argv[i])) {
channel_ping(config);
continue;
}
if (0 == strcmp("compressed_payload", argv[i])) {
compressed_payload(config);
continue;
}
if (0 == strcmp("default_host", argv[i])) {
default_host(config);
continue;
}
if (0 == strcmp("disappearing_server", argv[i])) {
disappearing_server(config);
continue;
}
if (0 == strcmp("empty_batch", argv[i])) {
empty_batch(config);
continue;
}
if (0 == strcmp("graceful_server_shutdown", argv[i])) {
graceful_server_shutdown(config);
continue;
}
if (0 == strcmp("high_initial_seqno", argv[i])) {
high_initial_seqno(config);
continue;
}
if (0 == strcmp("hpack_size", argv[i])) {
hpack_size(config);
continue;
}
if (0 == strcmp("invoke_large_request", argv[i])) {
invoke_large_request(config);
continue;
}
if (0 == strcmp("large_metadata", argv[i])) {
large_metadata(config);
continue;
}
if (0 == strcmp("max_concurrent_streams", argv[i])) {
max_concurrent_streams(config);
continue;
}
if (0 == strcmp("max_message_length", argv[i])) {
max_message_length(config);
continue;
}
if (0 == strcmp("metadata", argv[i])) {
metadata(config);
continue;
}
if (0 == strcmp("negative_deadline", argv[i])) {
negative_deadline(config);
continue;
}
if (0 == strcmp("no_op", argv[i])) {
no_op(config);
continue;
}
if (0 == strcmp("payload", argv[i])) {
payload(config);
continue;
}
if (0 == strcmp("ping_pong_streaming", argv[i])) {
ping_pong_streaming(config);
continue;
}
if (0 == strcmp("registered_call", argv[i])) {
registered_call(config);
continue;
}
if (0 == strcmp("request_with_flags", argv[i])) {
request_with_flags(config);
continue;
}
if (0 == strcmp("request_with_payload", argv[i])) {
request_with_payload(config);
continue;
}
if (0 == strcmp("server_finishes_request", argv[i])) {
server_finishes_request(config);
continue;
}
if (0 == strcmp("shutdown_finishes_calls", argv[i])) {
shutdown_finishes_calls(config);
continue;
}
if (0 == strcmp("shutdown_finishes_tags", argv[i])) {
shutdown_finishes_tags(config);
continue;
}
if (0 == strcmp("simple_delayed_request", argv[i])) {
simple_delayed_request(config);
continue;
}
if (0 == strcmp("simple_request", argv[i])) {
simple_request(config);
continue;
}
if (0 == strcmp("trailing_metadata", argv[i])) {
trailing_metadata(config);
continue;
}
gpr_log(GPR_DEBUG, "not a test: '%%s'", argv[i]);
abort();
}
}

@ -64,6 +64,6 @@ struct grpc_end2end_test_config {
void (*tear_down_data)(grpc_end2end_test_fixture *f);
};
void grpc_end2end_tests(grpc_end2end_test_config config);
void grpc_end2end_tests(int argc, char **argv, grpc_end2end_test_config config);
#endif /* GRPC_TEST_CORE_END2END_END2END_TESTS_H */

@ -123,7 +123,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -127,7 +127,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -154,7 +154,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -111,7 +111,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -111,7 +111,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -109,7 +109,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -108,7 +108,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -230,7 +230,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -123,7 +123,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -169,7 +169,7 @@ int main(int argc, char **argv) {
GPR_ASSERT(1 == grpc_tracer_set_enabled("all", 1));
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -153,7 +153,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -153,7 +153,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -179,7 +179,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -176,7 +176,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -206,7 +206,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -348,7 +348,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -115,7 +115,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -113,7 +113,7 @@ int main(int argc, char **argv) {
grpc_init();
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) {
grpc_end2end_tests(configs[i]);
grpc_end2end_tests(argc, argv, configs[i]);
}
grpc_shutdown();

@ -77,8 +77,8 @@ END2END_FIXTURES = {
}
TestOptions = collections.namedtuple(
'TestOptions', 'needs_fullstack needs_dns proxyable flaky secure traceable')
default_test_options = TestOptions(False, False, True, False, False, True)
'TestOptions', 'needs_fullstack needs_dns proxyable secure traceable')
default_test_options = TestOptions(False, False, True, False, True)
connectivity_test_options = default_test_options._replace(needs_fullstack=True)
# maps test names to options
@ -173,7 +173,7 @@ def main():
else END2END_FIXTURES[f].platforms,
'deps': sec_deps,
'headers': ['test/core/end2end/end2end_tests.h'],
'vs_proj_dir': 'test',
'vs_proj_dir': 'test/end2end/fixtures/%s' % f,
} for f in sorted(END2END_FIXTURES.keys())
] + [
{
@ -186,34 +186,38 @@ def main():
else END2END_FIXTURES[f].platforms,
'deps': unsec_deps,
'headers': ['test/core/end2end/end2end_tests.h'],
'vs_proj_dir': 'test',
'vs_proj_dir': 'test/end2end/fixtures/%s' % f,
} for f in sorted(END2END_FIXTURES.keys())
if not END2END_FIXTURES[f].secure
] + [
{
'name': 'end2end_test_%s' % t,
'name': 'end2end_tests',
'build': 'private',
'language': 'c',
'secure': 'check' if END2END_TESTS[t].secure else False,
'src': ['test/core/end2end/tests/%s.c' % t],
'secure': True,
'src': ['test/core/end2end/end2end_tests.c'] + [
'test/core/end2end/tests/%s.c' % t
for t in sorted(END2END_TESTS.keys())],
'headers': ['test/core/end2end/tests/cancel_test_helpers.h',
'test/core/end2end/end2end_tests.h'],
'deps': sec_deps,
'vs_proj_dir': 'test',
} for t in sorted(END2END_TESTS.keys())
'vs_proj_dir': 'test/end2end/tests',
}
] + [
{
'name': 'end2end_nosec_test_%s' % t,
'name': 'end2end_nosec_tests',
'build': 'private',
'language': 'c',
'secure': False,
'src': ['test/core/end2end/tests/%s.c' % t],
'src': ['test/core/end2end/end2end_nosec_tests.c'] + [
'test/core/end2end/tests/%s.c' % t
for t in sorted(END2END_TESTS.keys())
if not END2END_TESTS[t].secure],
'headers': ['test/core/end2end/tests/cancel_test_helpers.h',
'test/core/end2end/end2end_tests.h'],
'deps': unsec_deps,
'vs_proj_dir': 'test',
} for t in sorted(END2END_TESTS.keys())
if not END2END_TESTS[t].secure
'vs_proj_dir': 'test/end2end/tests',
}
] + [
{
'name': 'end2end_certs',
@ -224,49 +228,81 @@ def main():
"test/core/end2end/data/server1_cert.c",
"test/core/end2end/data/server1_key.c"
],
'vs_proj_dir': 'test',
'vs_proj_dir': 'test/end2end',
}
],
'targets': [
{
'name': '%s_%s_test' % (f, t),
'name': '%s_test' % f,
'build': 'test',
'language': 'c',
'run': False,
'src': [],
'flaky': END2END_TESTS[t].flaky,
'platforms': END2END_FIXTURES[f].platforms,
'ci_platforms': (END2END_FIXTURES[f].platforms
if END2END_FIXTURES[f].ci_mac else without(
END2END_FIXTURES[f].platforms, 'mac')),
'deps': [
'end2end_fixture_%s' % f, 'end2end_test_%s' % t
'end2end_fixture_%s' % f, 'end2end_tests'
] + sec_deps,
'vs_proj_dir': 'test',
'vs_proj_dir': 'test/end2end/tests',
}
for f in sorted(END2END_FIXTURES.keys())
for t in sorted(END2END_TESTS.keys()) if compatible(f, t)
] + [
{
'name': '%s_%s_nosec_test' % (f, t),
'name': '%s_nosec_test' % f,
'build': 'test',
'language': 'c',
'secure': 'no',
'src': [],
'flaky': END2END_TESTS[t].flaky,
'run': False,
'platforms': END2END_FIXTURES[f].platforms,
'ci_platforms': (END2END_FIXTURES[f].platforms
if END2END_FIXTURES[f].ci_mac else without(
END2END_FIXTURES[f].platforms, 'mac')),
'deps': [
'end2end_nosec_fixture_%s' % f, 'end2end_nosec_test_%s' % t
'end2end_nosec_fixture_%s' % f, 'end2end_nosec_tests'
] + unsec_deps,
'vs_proj_dir': 'test',
'vs_proj_dir': 'test/end2end/tests',
}
for f in sorted(END2END_FIXTURES.keys())
if not END2END_FIXTURES[f].secure
],
'tests': [
{
'name': '%s_test' % f,
'args': [t],
'exclude_configs': [],
'platforms': END2END_FIXTURES[f].platforms,
'ci_platforms': (END2END_FIXTURES[f].platforms
if END2END_FIXTURES[f].ci_mac else without(
END2END_FIXTURES[f].platforms, 'mac')),
'flaky': False,
'language': 'c',
}
for f in sorted(END2END_FIXTURES.keys())
for t in sorted(END2END_TESTS.keys()) if compatible(f, t)
] + [
{
'name': '%s_test' % f,
'args': [t],
'exclude_configs': [],
'platforms': END2END_FIXTURES[f].platforms,
'ci_platforms': (END2END_FIXTURES[f].platforms
if END2END_FIXTURES[f].ci_mac else without(
END2END_FIXTURES[f].platforms, 'mac')),
'flaky': False,
'language': 'c',
}
for f in sorted(END2END_FIXTURES.keys())
if not END2END_FIXTURES[f].secure
for t in sorted(END2END_TESTS.keys())
if compatible(f, t) and not END2END_TESTS[t].secure
]
],
'core_end2end_tests': dict(
(t, END2END_TESTS[t].secure)
for t in END2END_TESTS.keys()
)
}
print yaml.dump(json)

@ -174,7 +174,7 @@ static void test_invoke_simple_request(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void bad_hostname(grpc_end2end_test_config config) {
if (config.feature_mask & FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION) {
test_invoke_simple_request(config);
}

@ -284,6 +284,6 @@ static void test_request_response_with_metadata_and_payload(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void binary_metadata(grpc_end2end_test_config config) {
test_request_response_with_metadata_and_payload(config);
}

@ -467,7 +467,7 @@ static void test_request_with_server_rejecting_client_creds(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void call_creds(grpc_end2end_test_config config) {
if (config.feature_mask & FEATURE_MASK_SUPPORTS_PER_CALL_CREDENTIALS) {
test_request_response_with_payload_and_call_creds(config);
test_request_response_with_payload_and_overridden_call_creds(config);

@ -226,7 +226,7 @@ static void test_cancel_after_accept(grpc_end2end_test_config config,
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void cancel_after_accept(grpc_end2end_test_config config) {
unsigned i;
for (i = 0; i < GPR_ARRAY_SIZE(cancellation_modes); i++) {

@ -230,7 +230,7 @@ static void test_cancel_after_accept_and_writes_closed(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void cancel_after_client_done(grpc_end2end_test_config config) {
unsigned i;
for (i = 0; i < GPR_ARRAY_SIZE(cancellation_modes); i++) {

@ -190,7 +190,7 @@ static void test_cancel_after_invoke(grpc_end2end_test_config config,
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void cancel_after_invoke(grpc_end2end_test_config config) {
unsigned i, j;
for (j = 2; j < 6; j++) {

@ -188,7 +188,7 @@ static void test_cancel_before_invoke(grpc_end2end_test_config config,
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void cancel_before_invoke(grpc_end2end_test_config config) {
size_t i;
for (i = 1; i <= 6; i++) {
test_cancel_before_invoke(config, i);

@ -120,7 +120,7 @@ static void test_cancel_in_a_vacuum(grpc_end2end_test_config config,
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void cancel_in_a_vacuum(grpc_end2end_test_config config) {
unsigned i;
for (i = 0; i < GPR_ARRAY_SIZE(cancellation_modes); i++) {

@ -176,7 +176,7 @@ static void test_invoke_simple_request(grpc_end2end_test_config config,
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void cancel_with_status(grpc_end2end_test_config config) {
size_t i;
for (i = 1; i <= 4; i++) {
test_invoke_simple_request(config, i);

@ -168,7 +168,7 @@ static void test_connectivity(grpc_end2end_test_config config) {
cq_verifier_destroy(cqv);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void channel_connectivity(grpc_end2end_test_config config) {
GPR_ASSERT(config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION);
test_connectivity(config);
}

@ -91,7 +91,7 @@ static void test_ping(grpc_end2end_test_config config) {
cq_verifier_destroy(cqv);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void channel_ping(grpc_end2end_test_config config) {
GPR_ASSERT(config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION);
test_ping(config);
}

@ -330,7 +330,7 @@ static void test_invoke_request_with_compressed_payload_md_override(
GRPC_COMPRESS_DEFLATE, GRPC_COMPRESS_NONE, &none_compression_override);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void compressed_payload(grpc_end2end_test_config config) {
test_invoke_request_with_exceptionally_uncompressed_payload(config);
test_invoke_request_with_uncompressed_payload(config);
test_invoke_request_with_compressed_payload(config);

@ -225,7 +225,7 @@ static void test_invoke_simple_request(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void default_host(grpc_end2end_test_config config) {
if ((config.feature_mask & FEATURE_MASK_SUPPORTS_HOSTNAME_VERIFICATION) == 0)
return;
if ((config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION) == 0)

@ -209,7 +209,7 @@ static void disappearing_server_test(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void disappearing_server(grpc_end2end_test_config config) {
GPR_ASSERT(config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION);
disappearing_server_test(config);
}

@ -129,6 +129,6 @@ static void test_invoke_empty_body(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void empty_batch(grpc_end2end_test_config config) {
test_invoke_empty_body(config);
}

@ -207,6 +207,6 @@ static void test_early_server_shutdown_finishes_inflight_calls(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void graceful_server_shutdown(grpc_end2end_test_config config) {
test_early_server_shutdown_finishes_inflight_calls(config);
}

@ -231,7 +231,7 @@ static void test_invoke_10_simple_requests(grpc_end2end_test_config config,
gpr_free(name);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void high_initial_seqno(grpc_end2end_test_config config) {
test_invoke_10_simple_requests(config, 16777213);
if (config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION) {
test_invoke_10_simple_requests(config, 2147483645);

@ -433,7 +433,7 @@ static void test_size(grpc_end2end_test_config config, int encode_size,
gpr_free(name);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void hpack_size(grpc_end2end_test_config config) {
static const int interesting_sizes[] = {4096, 0, 100,
1000, 32768, 4 * 1024 * 1024};
size_t i, j;

@ -251,6 +251,6 @@ static void test_invoke_large_request(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void invoke_large_request(grpc_end2end_test_config config) {
test_invoke_large_request(config);
}

@ -242,6 +242,6 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void large_metadata(grpc_end2end_test_config config) {
test_request_with_large_metadata(config);
}

@ -433,6 +433,6 @@ static void test_max_concurrent_streams(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void max_concurrent_streams(grpc_end2end_test_config config) {
test_max_concurrent_streams(config);
}

@ -218,6 +218,6 @@ static void test_max_message_length(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void max_message_length(grpc_end2end_test_config config) {
test_max_message_length(config);
}

@ -260,6 +260,6 @@ static void test_request_response_with_metadata_and_payload(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void metadata(grpc_end2end_test_config config) {
test_request_response_with_metadata_and_payload(config);
}

@ -173,7 +173,7 @@ static void test_invoke_simple_request(grpc_end2end_test_config config,
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void negative_deadline(grpc_end2end_test_config config) {
size_t i;
for (i = 1; i <= 4; i++) {
test_invoke_simple_request(config, i);

@ -103,4 +103,4 @@ static void test_no_op(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) { test_no_op(config); }
void no_op(grpc_end2end_test_config config) { test_no_op(config); }

@ -264,7 +264,7 @@ static void test_invoke_10_request_response_with_payload(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void payload(grpc_end2end_test_config config) {
test_invoke_request_response_with_payload(config);
test_invoke_10_request_response_with_payload(config);
}

@ -268,7 +268,7 @@ static void test_pingpong_streaming(grpc_end2end_test_config config,
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void ping_pong_streaming(grpc_end2end_test_config config) {
int i;
for (i = 1; i < 10; i++) {

@ -227,7 +227,7 @@ static void test_invoke_10_simple_requests(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void registered_call(grpc_end2end_test_config config) {
test_invoke_simple_request(config);
test_invoke_10_simple_requests(config);
}

@ -185,7 +185,7 @@ static void test_invoke_request_with_flags(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void request_with_flags(grpc_end2end_test_config config) {
size_t i;
gpr_uint32 flags_for_op[GRPC_OP_RECV_CLOSE_ON_SERVER + 1];

@ -229,6 +229,6 @@ static void test_invoke_request_with_payload(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void request_with_payload(grpc_end2end_test_config config) {
test_invoke_request_with_payload(config);
}

@ -207,6 +207,6 @@ static void test_invoke_simple_request(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void server_finishes_request(grpc_end2end_test_config config) {
test_invoke_simple_request(config);
}

@ -189,6 +189,6 @@ static void test_early_server_shutdown_finishes_inflight_calls(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void shutdown_finishes_calls(grpc_end2end_test_config config) {
test_early_server_shutdown_finishes_inflight_calls(config);
}

@ -116,6 +116,6 @@ static void test_early_server_shutdown_finishes_tags(
cq_verifier_destroy(cqv);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void shutdown_finishes_tags(grpc_end2end_test_config config) {
test_early_server_shutdown_finishes_tags(config);
}

@ -216,7 +216,7 @@ static void test_simple_delayed_request_long(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void simple_delayed_request(grpc_end2end_test_config config) {
GPR_ASSERT(config.feature_mask & FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION);
test_simple_delayed_request_short(config);
test_simple_delayed_request_long(config);

@ -238,7 +238,7 @@ static void test_invoke_10_simple_requests(grpc_end2end_test_config config) {
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void simple_request(grpc_end2end_test_config config) {
int i;
for (i = 0; i < 10; i++) {
test_invoke_simple_request(config);

@ -265,6 +265,6 @@ static void test_request_response_with_metadata_and_payload(
config.tear_down_data(&f);
}
void grpc_end2end_tests(grpc_end2end_test_config config) {
void trailing_metadata(grpc_end2end_test_config config) {
test_request_response_with_metadata_and_payload(config);
}

@ -158,7 +158,7 @@ class ZookeeperTest : public ::testing::Test {
void ResetStub() {
string target = "zookeeper://" + zookeeper_address_ + "/test";
channel_ = CreateChannel(target, InsecureChannelCredentials());
stub_ = std::move(grpc::cpp::test::util::TestService::NewStub(channel_));
stub_ = grpc::cpp::test::util::TestService::NewStub(channel_);
}
string to_string(const int number) {

@ -102,7 +102,8 @@ TEST_F(StringRefTest, Iterator) {
string_ref s(kTestString);
size_t i = 0;
for (auto it = s.cbegin(); it != s.cend(); ++it) {
EXPECT_EQ(kTestString[i++], *it);
auto val = kTestString[i++];
EXPECT_EQ(val, *it);
}
EXPECT_EQ(strlen(kTestString), i);
}
@ -111,7 +112,8 @@ TEST_F(StringRefTest, ReverseIterator) {
string_ref s(kTestString);
size_t i = strlen(kTestString);
for (auto rit = s.crbegin(); rit != s.crend(); ++rit) {
EXPECT_EQ(kTestString[--i], *rit);
auto val = kTestString[--i];
EXPECT_EQ(val, *rit);
}
EXPECT_EQ(0U, i);
}

@ -0,0 +1 @@
Subproject commit 9f897b25800d2f54f5c442ef01a60721aeca6d87

@ -1 +0,0 @@
Subproject commit 33dd08320648ac71d7d9d732be774ed3818dccc5

@ -0,0 +1,3 @@
# this is busted in BoringSSL
leak:CRYPTO_set_thread_local
leak:err_get_state

@ -28,7 +28,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
gen_build_yaml_dirs="test/core/end2end test/core/bad_client test/core/bad_ssl"
gen_build_yaml_dirs="src/boringssl test/core/end2end test/core/bad_client test/core/bad_ssl"
gen_build_files=""
for gen_build_yaml in $gen_build_yaml_dirs
do

@ -29,6 +29,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import argparse
import glob
import os
import shutil
@ -42,37 +43,49 @@ assert sys.argv[1:], 'run generate_projects.sh instead of this directly'
import jobset
os.chdir(os.path.join(os.path.dirname(sys.argv[0]), '..', '..'))
json = sys.argv[1:]
argp = argparse.ArgumentParser()
argp.add_argument('json', nargs='+')
argp.add_argument('--templates', nargs='+', default=[])
args = argp.parse_args()
json = args.json
test = {} if 'TEST' in os.environ else None
plugins = sorted(glob.glob('tools/buildgen/plugins/*.py'))
templates = args.templates
if not templates:
for root, dirs, files in os.walk('templates'):
for f in files:
templates.append(os.path.join(root, f))
jobs = []
for root, dirs, files in os.walk('templates'):
for f in files:
if os.path.splitext(f)[1] == '.template':
out_dir = '.' + root[len('templates'):]
out = out_dir + '/' + os.path.splitext(f)[0]
if not os.path.exists(out_dir):
os.makedirs(out_dir)
cmd = ['python2.7', 'tools/buildgen/mako_renderer.py']
for plugin in plugins:
cmd.append('-p')
cmd.append(plugin)
for js in json:
cmd.append('-d')
cmd.append(js)
cmd.append('-o')
if test is None:
cmd.append(out)
else:
tf = tempfile.mkstemp()
test[out] = tf[1]
os.close(tf[0])
cmd.append(test[out])
cmd.append(root + '/' + f)
jobs.append(jobset.JobSpec(cmd, shortname=out))
for template in templates:
root, f = os.path.split(template)
if os.path.splitext(f)[1] == '.template':
out_dir = '.' + root[len('templates'):]
out = out_dir + '/' + os.path.splitext(f)[0]
if not os.path.exists(out_dir):
os.makedirs(out_dir)
cmd = ['python2.7', 'tools/buildgen/mako_renderer.py']
for plugin in plugins:
cmd.append('-p')
cmd.append(plugin)
for js in json:
cmd.append('-d')
cmd.append(js)
cmd.append('-o')
if test is None:
cmd.append(out)
else:
tf = tempfile.mkstemp()
test[out] = tf[1]
os.close(tf[0])
cmd.append(test[out])
cmd.append(root + '/' + f)
jobs.append(jobset.JobSpec(cmd, shortname=out))
jobset.run(jobs, maxjobs=multiprocessing.cpu_count())

@ -45,6 +45,6 @@ fi
. tools/buildgen/generate_build_additions.sh
tools/buildgen/generate_projects.py build.yaml $gen_build_files
tools/buildgen/generate_projects.py build.yaml $gen_build_files $*
rm $gen_build_files

@ -50,3 +50,8 @@ def mako_plugin(dictionary):
tgt['flaky'] = tgt.get('flaky', False)
tgt['platforms'] = sorted(tgt.get('platforms', default_platforms))
tgt['ci_platforms'] = sorted(tgt.get('ci_platforms', tgt['platforms']))
tgt['boringssl'] = tgt.get('boringssl', False)
libs = dictionary.get('libs')
for lib in libs:
lib['boringssl'] = lib.get('boringssl', False)

@ -778,6 +778,7 @@ src/core/security/security_connector.h \
src/core/security/security_context.h \
src/core/tsi/fake_transport_security.h \
src/core/tsi/ssl_transport_security.h \
src/core/tsi/ssl_types.h \
src/core/tsi/transport_security.h \
src/core/tsi/transport_security_interface.h \
src/core/census/grpc_filter.h \

@ -43,6 +43,7 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
golang \
gyp \
lcov \
libc6 \
@ -51,6 +52,7 @@ RUN apt-get update && apt-get install -y \
libgtest-dev \
libtool \
make \
perl \
strace \
python-dev \
python-setuptools \

@ -43,6 +43,7 @@ RUN apt-get update && apt-get install -y \
gcc \
gcc-multilib \
git \
golang \
gyp \
lcov \
libc6 \
@ -51,6 +52,7 @@ RUN apt-get update && apt-get install -y \
libgtest-dev \
libtool \
make \
perl \
strace \
python-dev \
python-setuptools \

@ -41,9 +41,9 @@ want_submodules=`mktemp /tmp/submXXXXXX`
git submodule | awk '{ print $1 }' | sort > $submodules
cat << EOF | awk '{ print $1 }' | sort > $want_submodules
9f897b25800d2f54f5c442ef01a60721aeca6d87 third_party/boringssl (version_for_cocoapods_1.0-67-g9f897b2)
05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f)
c99458533a9b4c743ed51537e25989ea55944908 third_party/googletest (release-1.7.0)
33dd08320648ac71d7d9d732be774ed3818dccc5 third_party/openssl (OpenSSL_1_0_2d)
8fce8933649ce09c1661ff2b5b7f6eb79badd251 third_party/protobuf (v3.0.0-alpha-4-1-g8fce893)
50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8)
EOF

@ -153,7 +153,9 @@ class CLanguage(object):
else:
binary = 'bins/%s/%s' % (config.build_config, target['name'])
if os.path.isfile(binary):
out.append(config.job_spec([binary], [binary],
cmdline = [binary] + target['args']
out.append(config.job_spec(cmdline, [binary],
shortname=' '.join(cmdline),
environ={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
os.path.abspath(os.path.dirname(
sys.argv[0]) + '/../../src/core/tsi/test_creds/ca.pem')}))
@ -438,7 +440,7 @@ class ObjCLanguage(object):
class Sanity(object):
def test_specs(self, config, args):
return [config.job_spec(['tools/run_tests/run_sanity.sh'], None),
return [config.job_spec(['tools/run_tests/run_sanity.sh'], None, timeout_seconds=15*60),
config.job_spec(['tools/run_tests/check_sources_and_headers.py'], None)]
def pre_build_steps(self):
@ -499,8 +501,8 @@ _CONFIGS = {
'msan': SimpleConfig('msan', timeout_multiplier=1.5),
'ubsan': SimpleConfig('ubsan'),
'asan': SimpleConfig('asan', timeout_multiplier=1.5, environ={
'ASAN_OPTIONS': 'detect_leaks=1:color=always',
'LSAN_OPTIONS': 'report_objects=1'}),
'ASAN_OPTIONS': 'suppressions=tools/asan_suppressions.txt:detect_leaks=1:color=always',
'LSAN_OPTIONS': 'suppressions=tools/asan_suppressions.txt:report_objects=1'}),
'asan-noleaks': SimpleConfig('asan', environ={
'ASAN_OPTIONS': 'detect_leaks=0:color=always'}),
'gcov': SimpleConfig('gcov'),

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,383 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug-DLL|Win32">
<Configuration>Debug-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug-DLL|x64">
<Configuration>Debug-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|Win32">
<Configuration>Release-DLL</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release-DLL|x64">
<Configuration>Release-DLL</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}</ProjectGuid>
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release-DLL'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\vsprojects\global.props" />
<Import Project="..\..\..\vsprojects\winsock.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>grpc++_unsecure</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>grpc++_unsecure</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="..\..\..\include\grpc++\channel.h" />
<ClInclude Include="..\..\..\include\grpc++\client_context.h" />
<ClInclude Include="..\..\..\include\grpc++\completion_queue.h" />
<ClInclude Include="..\..\..\include\grpc++\create_channel.h" />
<ClInclude Include="..\..\..\include\grpc++\generic\async_generic_service.h" />
<ClInclude Include="..\..\..\include\grpc++\generic\generic_stub.h" />
<ClInclude Include="..\..\..\include\grpc++\grpc++.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\call.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\client_unary_call.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\grpc_library.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\proto_utils.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\rpc_method.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\rpc_service_method.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\serialization_traits.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\server_builder_option.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\service_type.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\sync.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\sync_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\sync_no_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\thd.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\thd_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\impl\thd_no_cxx11.h" />
<ClInclude Include="..\..\..\include\grpc++\security\auth_context.h" />
<ClInclude Include="..\..\..\include\grpc++\security\auth_metadata_processor.h" />
<ClInclude Include="..\..\..\include\grpc++\security\credentials.h" />
<ClInclude Include="..\..\..\include\grpc++\security\server_credentials.h" />
<ClInclude Include="..\..\..\include\grpc++\server.h" />
<ClInclude Include="..\..\..\include\grpc++\server_builder.h" />
<ClInclude Include="..\..\..\include\grpc++\server_context.h" />
<ClInclude Include="..\..\..\include\grpc++\support\async_stream.h" />
<ClInclude Include="..\..\..\include\grpc++\support\async_unary_call.h" />
<ClInclude Include="..\..\..\include\grpc++\support\byte_buffer.h" />
<ClInclude Include="..\..\..\include\grpc++\support\channel_arguments.h" />
<ClInclude Include="..\..\..\include\grpc++\support\config.h" />
<ClInclude Include="..\..\..\include\grpc++\support\config_protobuf.h" />
<ClInclude Include="..\..\..\include\grpc++\support\slice.h" />
<ClInclude Include="..\..\..\include\grpc++\support\status.h" />
<ClInclude Include="..\..\..\include\grpc++\support\status_code_enum.h" />
<ClInclude Include="..\..\..\include\grpc++\support\string_ref.h" />
<ClInclude Include="..\..\..\include\grpc++\support\stub_options.h" />
<ClInclude Include="..\..\..\include\grpc++\support\sync_stream.h" />
<ClInclude Include="..\..\..\include\grpc++\support\time.h" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\src\cpp\client\create_channel_internal.h" />
<ClInclude Include="..\..\..\src\cpp\common\create_auth_context.h" />
<ClInclude Include="..\..\..\src\cpp\server\dynamic_thread_pool.h" />
<ClInclude Include="..\..\..\src\cpp\server\fixed_size_thread_pool.h" />
<ClInclude Include="..\..\..\src\cpp\server\thread_pool_interface.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\cpp\common\insecure_create_auth_context.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\channel.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\client_context.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\create_channel.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\create_channel_internal.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\generic_stub.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\client\insecure_credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\call.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\channel_arguments.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\completion_queue.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\common\rpc_method.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\proto\proto_utils.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\async_generic_service.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\create_default_thread_pool.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\dynamic_thread_pool.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\fixed_size_thread_pool.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\insecure_server_credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server_builder.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server_context.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\server\server_credentials.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\byte_buffer.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\slice.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\status.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\string_ref.cc">
</ClCompile>
<ClCompile Include="..\..\..\src\cpp\util\time.cc">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
<Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
</ProjectReference>
<ProjectReference Include="..\..\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
<Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
</Target>
</Project>

@ -93,6 +93,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc++_unsecure", "vcxproj\
{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "boringssl", "vcxproj\.\boringssl\boringssl.vcxproj", "{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}"
ProjectSection(myProperties) = preProject
lib = "True"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gen_hpack_tables", "vcxproj\.\gen_hpack_tables\gen_hpack_tables.vcxproj", "{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}"
ProjectSection(myProperties) = preProject
lib = "False"
@ -323,6 +328,22 @@ Global
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release-DLL|Win32.Build.0 = Release-DLL|Win32
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release-DLL|x64.ActiveCfg = Release-DLL|x64
{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}.Release-DLL|x64.Build.0 = Release-DLL|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug|Win32.ActiveCfg = Debug|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug|x64.ActiveCfg = Debug|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release|Win32.ActiveCfg = Release|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release|x64.ActiveCfg = Release|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug|Win32.Build.0 = Debug|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug|x64.Build.0 = Debug|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release|Win32.Build.0 = Release|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release|x64.Build.0 = Release|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug-DLL|Win32.Build.0 = Debug|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug-DLL|x64.ActiveCfg = Debug|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Debug-DLL|x64.Build.0 = Debug|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release-DLL|Win32.ActiveCfg = Release|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release-DLL|Win32.Build.0 = Release|Win32
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release-DLL|x64.ActiveCfg = Release|x64
{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}.Release-DLL|x64.Build.0 = Release|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|Win32.ActiveCfg = Debug|Win32
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Debug|x64.ActiveCfg = Debug|x64
{FCDEA4C7-7F26-05DB-D08F-A08F499026E6}.Release|Win32.ActiveCfg = Release|Win32

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3C813052-A49A-4662-B90A-1ADBEC7EE453}</ProjectGuid>
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\vsprojects\global.props" />
<Import Project="..\..\..\vsprojects\protobuf.props" />
<Import Project="..\..\..\vsprojects\protoc.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>grpc_csharp_plugin</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>grpc_csharp_plugin</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\compiler\csharp_plugin.cc">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\vsprojects\vcxproj\.\grpc_plugin_support\grpc_plugin_support.vcxproj">
<Project>{B6E81D84-2ACB-41B8-8781-493A944C7817}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
</Target>
</Project>

@ -0,0 +1,167 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{19564640-CEE6-4921-ABA5-676ED79A36F6}</ProjectGuid>
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="..\..\..\vsprojects\global.props" />
<Import Project="..\..\..\vsprojects\protobuf.props" />
<Import Project="..\..\..\vsprojects\protoc.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>grpc_objective_c_plugin</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>grpc_objective_c_plugin</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\..\src\compiler\objective_c_plugin.cc">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\vsprojects\vcxproj\.\grpc_plugin_support\grpc_plugin_support.vcxproj">
<Project>{B6E81D84-2ACB-41B8-8781-493A944C7817}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
</Target>
</Project>

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

Loading…
Cancel
Save