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

pull/8980/head
Mark D. Roth 8 years ago
commit 3c1cd53187
  1. 4
      .gitmodules
  2. 60
      Makefile
  3. 8
      build.yaml
  4. 10
      src/benchmark/gen_build_yaml.py
  5. 3
      src/core/ext/transport/chttp2/transport/chttp2_transport.c
  6. 2
      src/core/ext/transport/chttp2/transport/internal.h
  7. 5
      src/core/ext/transport/chttp2/transport/stream_lists.c
  8. 130
      src/core/ext/transport/cronet/transport/cronet_transport.c
  9. 21
      src/core/lib/iomgr/tcp_posix.c
  10. 2
      src/core/lib/surface/completion_queue.c
  11. 5
      src/node/performance/worker_service_impl.js
  12. 6
      src/objective-c/tests/CoreCronetEnd2EndTests/CoreCronetEnd2EndTests.m
  13. 16
      src/objective-c/tests/GRPCClientTests.m
  14. 26
      src/objective-c/tests/InteropTests.m
  15. 2
      test/cpp/microbenchmarks/bm_fullstack.cc
  16. 4
      test/cpp/microbenchmarks/noop-benchmark.cc
  17. 2
      test/cpp/qps/driver.cc
  18. 1
      third_party/benchmark
  19. 1
      third_party/google_benchmark
  20. 2
      tools/buildgen/generate_build_additions.sh
  21. 3
      tools/run_tests/build_python.sh
  22. 7
      tools/run_tests/run_performance_tests.py
  23. 2
      tools/run_tests/sanity/check_submodules.sh
  24. 52
      tools/run_tests/sources_and_headers.json
  25. 72
      vsprojects/vcxproj/benchmark/benchmark.vcxproj
  26. 125
      vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters
  27. 125
      vsprojects/vcxproj/google_benchmark/google_benchmark.vcxproj.filters
  28. 4
      vsprojects/vcxproj/test/bm_fullstack/bm_fullstack.vcxproj
  29. 4
      vsprojects/vcxproj/test/noop-benchmark/noop-benchmark.vcxproj

4
.gitmodules vendored

@ -17,6 +17,6 @@
[submodule "third_party/thrift"]
path = third_party/thrift
url = https://github.com/apache/thrift.git
[submodule "third_party/google_benchmark"]
path = third_party/google_benchmark
[submodule "third_party/benchmark"]
path = third_party/benchmark
url = https://github.com/google/benchmark

@ -1260,9 +1260,9 @@ pc_cxx: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++.pc
pc_cxx_unsecure: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc
ifeq ($(EMBED_OPENSSL),true)
privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a
privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a $(LIBDIR)/$(CONFIG)/libbenchmark.a
else
privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a
privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libbenchmark.a
endif
@ -6998,43 +6998,43 @@ ifneq ($(NO_DEPS),true)
endif
LIBGOOGLE_BENCHMARK_SRC = \
third_party/google_benchmark/src/benchmark.cc \
third_party/google_benchmark/src/benchmark_register.cc \
third_party/google_benchmark/src/colorprint.cc \
third_party/google_benchmark/src/commandlineflags.cc \
third_party/google_benchmark/src/complexity.cc \
third_party/google_benchmark/src/console_reporter.cc \
third_party/google_benchmark/src/csv_reporter.cc \
third_party/google_benchmark/src/json_reporter.cc \
third_party/google_benchmark/src/reporter.cc \
third_party/google_benchmark/src/sleep.cc \
third_party/google_benchmark/src/string_util.cc \
third_party/google_benchmark/src/sysinfo.cc \
third_party/google_benchmark/src/timers.cc \
LIBBENCHMARK_SRC = \
third_party/benchmark/src/benchmark.cc \
third_party/benchmark/src/benchmark_register.cc \
third_party/benchmark/src/colorprint.cc \
third_party/benchmark/src/commandlineflags.cc \
third_party/benchmark/src/complexity.cc \
third_party/benchmark/src/console_reporter.cc \
third_party/benchmark/src/csv_reporter.cc \
third_party/benchmark/src/json_reporter.cc \
third_party/benchmark/src/reporter.cc \
third_party/benchmark/src/sleep.cc \
third_party/benchmark/src/string_util.cc \
third_party/benchmark/src/sysinfo.cc \
third_party/benchmark/src/timers.cc \
PUBLIC_HEADERS_CXX += \
LIBGOOGLE_BENCHMARK_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGOOGLE_BENCHMARK_SRC))))
LIBBENCHMARK_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBENCHMARK_SRC))))
$(LIBGOOGLE_BENCHMARK_OBJS): CPPFLAGS += -Ithird_party/google_benchmark/include -DHAVE_POSIX_REGEX
$(LIBBENCHMARK_OBJS): CPPFLAGS += -Ithird_party/benchmark/include -DHAVE_POSIX_REGEX
ifeq ($(NO_PROTOBUF),true)
# You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay.
$(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a: protobuf_dep_error
$(LIBDIR)/$(CONFIG)/libbenchmark.a: protobuf_dep_error
else
$(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBGOOGLE_BENCHMARK_OBJS)
$(LIBDIR)/$(CONFIG)/libbenchmark.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBENCHMARK_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a
$(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a $(LIBGOOGLE_BENCHMARK_OBJS)
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libbenchmark.a
$(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LIBBENCHMARK_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libbenchmark.a
endif
@ -7043,7 +7043,7 @@ endif
endif
ifneq ($(NO_DEPS),true)
-include $(LIBGOOGLE_BENCHMARK_OBJS:.o=.dep)
-include $(LIBBENCHMARK_OBJS:.o=.dep)
endif
@ -11736,16 +11736,16 @@ $(BINDIR)/$(CONFIG)/bm_fullstack: protobuf_dep_error
else
$(BINDIR)/$(CONFIG)/bm_fullstack: $(PROTOBUF_DEP) $(BM_FULLSTACK_OBJS) $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
$(BINDIR)/$(CONFIG)/bm_fullstack: $(PROTOBUF_DEP) $(BM_FULLSTACK_OBJS) $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(LDXX) $(LDFLAGS) $(BM_FULLSTACK_OBJS) $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/bm_fullstack
$(Q) $(LDXX) $(LDFLAGS) $(BM_FULLSTACK_OBJS) $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/bm_fullstack
endif
endif
$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/bm_fullstack.o: $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/bm_fullstack.o: $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
deps_bm_fullstack: $(BM_FULLSTACK_OBJS:.o=.dep)
@ -13192,16 +13192,16 @@ $(BINDIR)/$(CONFIG)/noop-benchmark: protobuf_dep_error
else
$(BINDIR)/$(CONFIG)/noop-benchmark: $(PROTOBUF_DEP) $(NOOP-BENCHMARK_OBJS) $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a
$(BINDIR)/$(CONFIG)/noop-benchmark: $(PROTOBUF_DEP) $(NOOP-BENCHMARK_OBJS) $(LIBDIR)/$(CONFIG)/libbenchmark.a
$(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@`
$(Q) $(LDXX) $(LDFLAGS) $(NOOP-BENCHMARK_OBJS) $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/noop-benchmark
$(Q) $(LDXX) $(LDFLAGS) $(NOOP-BENCHMARK_OBJS) $(LIBDIR)/$(CONFIG)/libbenchmark.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/noop-benchmark
endif
endif
$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/noop-benchmark.o: $(LIBDIR)/$(CONFIG)/libgoogle_benchmark.a
$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/noop-benchmark.o: $(LIBDIR)/$(CONFIG)/libbenchmark.a
deps_noop-benchmark: $(NOOP-BENCHMARK_OBJS:.o=.dep)

@ -2850,7 +2850,7 @@ targets:
src:
- test/cpp/microbenchmarks/bm_fullstack.cc
deps:
- google_benchmark
- benchmark
- grpc++_test_util
- grpc_test_util
- grpc++
@ -3300,7 +3300,7 @@ targets:
src:
- test/cpp/microbenchmarks/noop-benchmark.cc
deps:
- google_benchmark
- benchmark
- name: proto_server_reflection_test
gtest: true
build: test
@ -3786,6 +3786,8 @@ configs:
UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1
timeout_multiplier: 1.5
defaults:
benchmark:
CPPFLAGS: -Ithird_party/benchmark/include -DHAVE_POSIX_REGEX
boringssl:
CFLAGS: -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-unknown-pragmas
-Wno-implicit-function-declaration -Wno-unused-variable -Wno-sign-compare $(NO_W_EXTRA_SEMI)
@ -3794,8 +3796,6 @@ defaults:
global:
CPPFLAGS: -g -Wall -Wextra -Werror -Wno-long-long -Wno-unused-parameter
LDFLAGS: -g
google_benchmark:
CPPFLAGS: -Ithird_party/google_benchmark/include -DHAVE_POSIX_REGEX
zlib:
CFLAGS: -Wno-sign-conversion -Wno-conversion -Wno-unused-value -Wno-implicit-function-declaration
$(W_NO_SHIFT_NEGATIVE_VALUE) -fvisibility=hidden

@ -39,15 +39,15 @@ os.chdir(os.path.dirname(sys.argv[0])+'/../..')
out = {}
out['libs'] = [{
'name': 'google_benchmark',
'name': 'benchmark',
'build': 'private',
'language': 'c++',
'secure': 'no',
'defaults': 'google_benchmark',
'src': sorted(glob.glob('third_party/google_benchmark/src/*.cc')),
'defaults': 'benchmark',
'src': sorted(glob.glob('third_party/benchmark/src/*.cc')),
'headers': sorted(
glob.glob('third_party/google_benchmark/src/*.h') +
glob.glob('third_party/google_benchmark/include/benchmark/*.h')),
glob.glob('third_party/benchmark/src/*.h') +
glob.glob('third_party/benchmark/include/benchmark/*.h')),
}]
print yaml.dump(out)

@ -1622,6 +1622,9 @@ void grpc_chttp2_mark_stream_closed(grpc_exec_ctx *exec_ctx,
if (s->id != 0) {
remove_stream(exec_ctx, t, s->id,
removal_error(GRPC_ERROR_REF(error), s, "Stream removed"));
} else {
/* Purge streams waiting on concurrency still waiting for id assignment */
grpc_chttp2_list_remove_waiting_for_concurrency(t, s);
}
GRPC_CHTTP2_STREAM_UNREF(exec_ctx, s, "chttp2");
}

@ -496,6 +496,8 @@ void grpc_chttp2_list_add_waiting_for_concurrency(grpc_chttp2_transport *t,
grpc_chttp2_stream *s);
int grpc_chttp2_list_pop_waiting_for_concurrency(grpc_chttp2_transport *t,
grpc_chttp2_stream **s);
void grpc_chttp2_list_remove_waiting_for_concurrency(grpc_chttp2_transport *t,
grpc_chttp2_stream *s);
void grpc_chttp2_list_add_stalled_by_transport(grpc_chttp2_transport *t,
grpc_chttp2_stream *s);

@ -158,6 +158,11 @@ int grpc_chttp2_list_pop_waiting_for_concurrency(grpc_chttp2_transport *t,
return stream_list_pop(t, s, GRPC_CHTTP2_LIST_WAITING_FOR_CONCURRENCY);
}
void grpc_chttp2_list_remove_waiting_for_concurrency(grpc_chttp2_transport *t,
grpc_chttp2_stream *s) {
stream_list_maybe_remove(t, s, GRPC_CHTTP2_LIST_WAITING_FOR_CONCURRENCY);
}
void grpc_chttp2_list_add_stalled_by_transport(grpc_chttp2_transport *t,
grpc_chttp2_stream *s) {
stream_list_add(t, s, GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT);

@ -149,6 +149,9 @@ struct write_state {
struct op_state {
bool state_op_done[OP_NUM_OPS];
bool state_callback_received[OP_NUM_OPS];
bool fail_state;
bool flush_read;
grpc_error *cancel_error;
/* data structure for storing data coming from server */
struct read_state rs;
/* data structure for storing data going to the server */
@ -248,6 +251,12 @@ static void free_read_buffer(stream_obj *s) {
}
}
static grpc_error *make_error_with_desc(int error_code, const char *desc) {
grpc_error *error = GRPC_ERROR_CREATE(desc);
error = grpc_error_set_int(error, GRPC_ERROR_INT_GRPC_STATUS, error_code);
return error;
}
/*
Add a new stream op to op storage.
*/
@ -433,6 +442,18 @@ static void on_response_headers_received(
grpc_mdstr_from_string(headers->headers[i].value)));
}
s->state.state_callback_received[OP_RECV_INITIAL_METADATA] = true;
if (!(s->state.state_op_done[OP_CANCEL_ERROR] ||
s->state.state_callback_received[OP_FAILED])) {
/* Do an extra read to trigger on_succeeded() callback in case connection
is closed */
GPR_ASSERT(s->state.rs.length_field_received == false);
s->state.rs.read_buffer = s->state.rs.grpc_header_bytes;
s->state.rs.received_bytes = 0;
s->state.rs.remaining_bytes = GRPC_HEADER_SIZE_IN_BYTES;
CRONET_LOG(GPR_DEBUG, "cronet_bidirectional_stream_read(%p)", s->cbs);
cronet_bidirectional_stream_read(s->cbs, s->state.rs.read_buffer,
s->state.rs.remaining_bytes);
}
gpr_mu_unlock(&s->mu);
execute_from_storage(s);
}
@ -464,7 +485,11 @@ static void on_read_completed(cronet_bidirectional_stream *stream, char *data,
count);
gpr_mu_lock(&s->mu);
s->state.state_callback_received[OP_RECV_MESSAGE] = true;
if (count > 0) {
if (count > 0 && s->state.flush_read) {
CRONET_LOG(GPR_DEBUG, "cronet_bidirectional_stream_read(%p)", s->cbs);
cronet_bidirectional_stream_read(s->cbs, s->state.rs.read_buffer, 4096);
gpr_mu_unlock(&s->mu);
} else if (count > 0) {
s->state.rs.received_bytes += count;
s->state.rs.remaining_bytes -= count;
if (s->state.rs.remaining_bytes > 0) {
@ -479,6 +504,10 @@ static void on_read_completed(cronet_bidirectional_stream *stream, char *data,
execute_from_storage(s);
}
} else {
if (s->state.flush_read) {
gpr_free(s->state.rs.read_buffer);
s->state.rs.read_buffer = NULL;
}
s->state.rs.read_stream_closed = true;
gpr_mu_unlock(&s->mu);
execute_from_storage(s);
@ -508,10 +537,27 @@ static void on_response_trailers_received(
grpc_mdstr_from_string(trailers->headers[i].key),
grpc_mdstr_from_string(trailers->headers[i].value)));
s->state.rs.trailing_metadata_valid = true;
if (0 == strcmp(trailers->headers[i].key, "grpc-status") &&
0 != strcmp(trailers->headers[i].value, "0")) {
s->state.fail_state = true;
}
}
s->state.state_callback_received[OP_RECV_TRAILING_METADATA] = true;
gpr_mu_unlock(&s->mu);
execute_from_storage(s);
/* Send a EOS when server terminates the stream (testServerFinishesRequest) to
* trigger on_succeeded */
if (!s->state.state_op_done[OP_SEND_TRAILING_METADATA] &&
!(s->state.state_op_done[OP_CANCEL_ERROR] ||
s->state.state_callback_received[OP_FAILED])) {
CRONET_LOG(GPR_DEBUG, "cronet_bidirectional_stream_write (%p, 0)", s->cbs);
s->state.state_callback_received[OP_SEND_MESSAGE] = false;
cronet_bidirectional_stream_write(s->cbs, "", 0, true);
s->state.state_op_done[OP_SEND_TRAILING_METADATA] = true;
gpr_mu_unlock(&s->mu);
} else {
gpr_mu_unlock(&s->mu);
execute_from_storage(s);
}
}
/*
@ -632,9 +678,9 @@ static bool op_can_be_run(grpc_transport_stream_op *curr_op,
/* When call is canceled, every op can be run, except under following
conditions
*/
bool is_canceled_of_failed = stream_state->state_op_done[OP_CANCEL_ERROR] ||
bool is_canceled_or_failed = stream_state->state_op_done[OP_CANCEL_ERROR] ||
stream_state->state_callback_received[OP_FAILED];
if (is_canceled_of_failed) {
if (is_canceled_or_failed) {
if (op_id == OP_SEND_INITIAL_METADATA) result = false;
if (op_id == OP_SEND_MESSAGE) result = false;
if (op_id == OP_SEND_TRAILING_METADATA) result = false;
@ -778,16 +824,10 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
op_can_be_run(stream_op, stream_state, &oas->state,
OP_SEND_INITIAL_METADATA)) {
CRONET_LOG(GPR_DEBUG, "running: %p OP_SEND_INITIAL_METADATA", oas);
/* This OP is the beginning. Reset various states */
memset(&s->header_array, 0, sizeof(s->header_array));
memset(&stream_state->rs, 0, sizeof(stream_state->rs));
memset(&stream_state->ws, 0, sizeof(stream_state->ws));
memset(stream_state->state_op_done, 0, sizeof(stream_state->state_op_done));
memset(stream_state->state_callback_received, 0,
sizeof(stream_state->state_callback_received));
/* Start new cronet stream. It is destroyed in on_succeeded, on_canceled,
* on_failed */
GPR_ASSERT(s->cbs == NULL);
GPR_ASSERT(!stream_state->state_op_done[OP_SEND_INITIAL_METADATA]);
s->cbs = cronet_bidirectional_stream_create(s->curr_ct.engine, s->curr_gs,
&cronet_callbacks);
CRONET_LOG(GPR_DEBUG, "%p = cronet_bidirectional_stream_create()", s->cbs);
@ -808,10 +848,13 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
op_can_be_run(stream_op, stream_state, &oas->state,
OP_RECV_INITIAL_METADATA)) {
CRONET_LOG(GPR_DEBUG, "running: %p OP_RECV_INITIAL_METADATA", oas);
if (stream_state->state_op_done[OP_CANCEL_ERROR] ||
stream_state->state_callback_received[OP_FAILED]) {
if (stream_state->state_op_done[OP_CANCEL_ERROR]) {
grpc_exec_ctx_sched(exec_ctx, stream_op->recv_initial_metadata_ready,
GRPC_ERROR_CANCELLED, NULL);
} else if (stream_state->state_callback_received[OP_FAILED]) {
grpc_exec_ctx_sched(
exec_ctx, stream_op->recv_initial_metadata_ready,
make_error_with_desc(GRPC_STATUS_UNAVAILABLE, "Unavailable."), NULL);
} else {
grpc_chttp2_incoming_metadata_buffer_publish(
&oas->s->state.rs.initial_metadata, stream_op->recv_initial_metadata);
@ -865,12 +908,19 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
op_can_be_run(stream_op, stream_state, &oas->state,
OP_RECV_MESSAGE)) {
CRONET_LOG(GPR_DEBUG, "running: %p OP_RECV_MESSAGE", oas);
if (stream_state->state_op_done[OP_CANCEL_ERROR] ||
stream_state->state_callback_received[OP_FAILED]) {
CRONET_LOG(GPR_DEBUG, "Stream is either cancelled or failed.");
if (stream_state->state_op_done[OP_CANCEL_ERROR]) {
CRONET_LOG(GPR_DEBUG, "Stream is cancelled.");
grpc_exec_ctx_sched(exec_ctx, stream_op->recv_message_ready,
GRPC_ERROR_CANCELLED, NULL);
stream_state->state_op_done[OP_RECV_MESSAGE] = true;
result = ACTION_TAKEN_NO_CALLBACK;
} else if (stream_state->state_callback_received[OP_FAILED]) {
CRONET_LOG(GPR_DEBUG, "Stream failed.");
grpc_exec_ctx_sched(
exec_ctx, stream_op->recv_message_ready,
make_error_with_desc(GRPC_STATUS_UNAVAILABLE, "Unavailable."), NULL);
stream_state->state_op_done[OP_RECV_MESSAGE] = true;
result = ACTION_TAKEN_NO_CALLBACK;
} else if (stream_state->rs.read_stream_closed == true) {
/* No more data will be received */
CRONET_LOG(GPR_DEBUG, "read stream closed");
@ -878,6 +928,7 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
GRPC_ERROR_NONE, NULL);
stream_state->state_op_done[OP_RECV_MESSAGE] = true;
oas->state.state_op_done[OP_RECV_MESSAGE] = true;
result = ACTION_TAKEN_NO_CALLBACK;
} else if (stream_state->rs.length_field_received == false) {
if (stream_state->rs.received_bytes == GRPC_HEADER_SIZE_IN_BYTES &&
stream_state->rs.remaining_bytes == 0) {
@ -946,10 +997,15 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
GRPC_ERROR_NONE, NULL);
stream_state->state_op_done[OP_RECV_MESSAGE] = true;
oas->state.state_op_done[OP_RECV_MESSAGE] = true;
/* Clear read state of the stream, so next read op (if it were to come)
* will work */
stream_state->rs.received_bytes = stream_state->rs.remaining_bytes =
stream_state->rs.length_field_received = 0;
/* Do an extra read to trigger on_succeeded() callback in case connection
is closed */
stream_state->rs.read_buffer = stream_state->rs.grpc_header_bytes;
stream_state->rs.received_bytes = 0;
stream_state->rs.remaining_bytes = GRPC_HEADER_SIZE_IN_BYTES;
stream_state->rs.length_field_received = false;
CRONET_LOG(GPR_DEBUG, "cronet_bidirectional_stream_read(%p)", s->cbs);
cronet_bidirectional_stream_read(s->cbs, stream_state->rs.read_buffer,
stream_state->rs.remaining_bytes);
result = ACTION_TAKEN_NO_CALLBACK;
}
} else if (stream_op->recv_trailing_metadata &&
@ -986,17 +1042,25 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
CRONET_LOG(GPR_DEBUG, "W: cronet_bidirectional_stream_cancel(%p)", s->cbs);
if (s->cbs) {
cronet_bidirectional_stream_cancel(s->cbs);
result = ACTION_TAKEN_WITH_CALLBACK;
} else {
result = ACTION_TAKEN_NO_CALLBACK;
}
stream_state->state_op_done[OP_CANCEL_ERROR] = true;
result = ACTION_TAKEN_WITH_CALLBACK;
if (!stream_state->cancel_error) {
stream_state->cancel_error = GRPC_ERROR_REF(stream_op->cancel_error);
}
} else if (stream_op->on_complete &&
op_can_be_run(stream_op, stream_state, &oas->state,
OP_ON_COMPLETE)) {
CRONET_LOG(GPR_DEBUG, "running: %p OP_ON_COMPLETE", oas);
if (stream_state->state_op_done[OP_CANCEL_ERROR] ||
stream_state->state_callback_received[OP_FAILED]) {
if (stream_state->state_op_done[OP_CANCEL_ERROR]) {
grpc_exec_ctx_sched(exec_ctx, stream_op->on_complete,
GRPC_ERROR_CANCELLED, NULL);
GRPC_ERROR_REF(stream_state->cancel_error), NULL);
} else if (stream_state->state_callback_received[OP_FAILED]) {
grpc_exec_ctx_sched(
exec_ctx, stream_op->on_complete,
make_error_with_desc(GRPC_STATUS_UNAVAILABLE, "Unavailable."), NULL);
} else {
/* All actions in this stream_op are complete. Call the on_complete
* callback
@ -1017,6 +1081,15 @@ static enum e_op_result execute_stream_op(grpc_exec_ctx *exec_ctx,
make a note */
if (stream_op->recv_message)
stream_state->state_op_done[OP_RECV_MESSAGE_AND_ON_COMPLETE] = true;
} else if (stream_state->fail_state && !stream_state->flush_read) {
CRONET_LOG(GPR_DEBUG, "running: %p flush read", oas);
if (stream_state->rs.read_buffer &&
stream_state->rs.read_buffer != stream_state->rs.grpc_header_bytes) {
gpr_free(stream_state->rs.read_buffer);
stream_state->rs.read_buffer = NULL;
}
stream_state->rs.read_buffer = gpr_malloc(4096);
stream_state->flush_read = true;
} else {
result = NO_ACTION_POSSIBLE;
}
@ -1042,6 +1115,8 @@ static int init_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
memset(s->state.state_op_done, 0, sizeof(s->state.state_op_done));
memset(s->state.state_callback_received, 0,
sizeof(s->state.state_callback_received));
s->state.fail_state = s->state.flush_read = false;
s->state.cancel_error = NULL;
gpr_mu_init(&s->mu);
return 0;
}
@ -1088,7 +1163,10 @@ static void perform_stream_op(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
}
static void destroy_stream(grpc_exec_ctx *exec_ctx, grpc_transport *gt,
grpc_stream *gs, void *and_free_memory) {}
grpc_stream *gs, void *and_free_memory) {
stream_obj *s = (stream_obj *)gs;
GRPC_ERROR_UNREF(s->state.cancel_error);
}
static void destroy_transport(grpc_exec_ctx *exec_ctx, grpc_transport *gt) {}

@ -107,6 +107,12 @@ typedef struct {
grpc_resource_user_slice_allocator slice_allocator;
} grpc_tcp;
static grpc_error *tcp_annotate_error(grpc_error *src_error, grpc_tcp *tcp) {
return grpc_error_set_str(
grpc_error_set_int(src_error, GRPC_ERROR_INT_FD, tcp->fd),
GRPC_ERROR_STR_TARGET_ADDRESS, tcp->peer_string);
}
static void tcp_handle_read(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
grpc_error *error);
static void tcp_handle_write(grpc_exec_ctx *exec_ctx, void *arg /* grpc_tcp */,
@ -230,13 +236,15 @@ static void tcp_do_read(grpc_exec_ctx *exec_ctx, grpc_tcp *tcp) {
grpc_fd_notify_on_read(exec_ctx, tcp->em_fd, &tcp->read_closure);
} else {
grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
call_read_cb(exec_ctx, tcp, GRPC_OS_ERROR(errno, "recvmsg"));
call_read_cb(exec_ctx, tcp,
tcp_annotate_error(GRPC_OS_ERROR(errno, "recvmsg"), tcp));
TCP_UNREF(exec_ctx, tcp, "read");
}
} else if (read_bytes == 0) {
/* 0 read size ==> end of stream */
grpc_slice_buffer_reset_and_unref(tcp->incoming_buffer);
call_read_cb(exec_ctx, tcp, GRPC_ERROR_CREATE("Socket closed"));
call_read_cb(exec_ctx, tcp,
tcp_annotate_error(GRPC_ERROR_CREATE("Socket closed"), tcp));
TCP_UNREF(exec_ctx, tcp, "read");
} else {
GPR_ASSERT((size_t)read_bytes <= tcp->incoming_buffer->length);
@ -366,7 +374,7 @@ static bool tcp_flush(grpc_tcp *tcp, grpc_error **error) {
tcp->outgoing_byte_idx = unwind_byte_idx;
return false;
} else {
*error = GRPC_OS_ERROR(errno, "sendmsg");
*error = tcp_annotate_error(GRPC_OS_ERROR(errno, "sendmsg"), tcp);
return true;
}
}
@ -447,9 +455,10 @@ static void tcp_write(grpc_exec_ctx *exec_ctx, grpc_endpoint *ep,
if (buf->length == 0) {
GPR_TIMER_END("tcp_write", 0);
grpc_exec_ctx_sched(exec_ctx, cb, grpc_fd_is_shutdown(tcp->em_fd)
? GRPC_ERROR_CREATE("EOF")
: GRPC_ERROR_NONE,
grpc_exec_ctx_sched(exec_ctx, cb,
grpc_fd_is_shutdown(tcp->em_fd)
? tcp_annotate_error(GRPC_ERROR_CREATE("EOF"), tcp)
: GRPC_ERROR_NONE,
NULL);
return;
}

@ -354,11 +354,13 @@ static void dump_pending_tags(grpc_completion_queue *cc) {
gpr_strvec v;
gpr_strvec_init(&v);
gpr_strvec_add(&v, gpr_strdup("PENDING TAGS:"));
gpr_mu_lock(cc->mu);
for (size_t i = 0; i < cc->outstanding_tag_count; i++) {
char *s;
gpr_asprintf(&s, " %p", cc->outstanding_tags[i]);
gpr_strvec_add(&v, s);
}
gpr_mu_unlock(cc->mu);
char *out = gpr_strvec_flatten(&v, NULL);
gpr_strvec_destroy(&v);
gpr_log(GPR_DEBUG, "%s", out);

@ -55,9 +55,8 @@ module.exports = function WorkerServiceImpl(benchmark_impl, server) {
}
this.quitWorker = function quitWorker(call, callback) {
server.tryShutdown(function() {
callback(null, {});
});
callback(null, {});
server.tryShutdown(function() {});
};
this.runClient = function runClient(call) {

@ -316,7 +316,8 @@ static char *roots_filename;
}
- (void)testInvokeLargeRequest {
[self testIndividualCase:"invoke_large_request"];
// NOT SUPPORTED (frame size)
// [self testIndividualCase:"invoke_large_request"];
}
- (void)testLargeMetadata {
@ -329,7 +330,8 @@ static char *roots_filename;
}
- (void)testMaxMessageLength {
[self testIndividualCase:"max_message_length"];
// NOT SUPPORTED (close_error)
// [self testIndividualCase:"max_message_length"];
}
- (void)testNegativeDeadline {

@ -43,6 +43,8 @@
#import <RxLibrary/GRXWriteable.h>
#import <RxLibrary/GRXWriter+Immediate.h>
#define TEST_TIMEOUT 16
static NSString * const kHostAddress = @"localhost:5050";
static NSString * const kPackage = @"grpc.testing";
static NSString * const kService = @"TestService";
@ -137,7 +139,7 @@ static GRPCProtoMethod *kUnaryCallMethod;
[call startWithWriteable:responsesWriteable];
[self waitForExpectationsWithTimeout:4 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testEmptyRPC {
@ -159,7 +161,7 @@ static GRPCProtoMethod *kUnaryCallMethod;
[call startWithWriteable:responsesWriteable];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testSimpleProtoRPC {
@ -191,7 +193,7 @@ static GRPCProtoMethod *kUnaryCallMethod;
[call startWithWriteable:responsesWriteable];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testMetadata {
@ -225,7 +227,7 @@ static GRPCProtoMethod *kUnaryCallMethod;
[call startWithWriteable:responsesWriteable];
[self waitForExpectationsWithTimeout:4 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testResponseMetadataKVO {
@ -256,7 +258,7 @@ static GRPCProtoMethod *kUnaryCallMethod;
[call startWithWriteable:responsesWriteable];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testUserAgentPrefix {
@ -287,7 +289,7 @@ static GRPCProtoMethod *kUnaryCallMethod;
[call startWithWriteable:responsesWriteable];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
// TODO(makarandd): Move to a different file that contains only unit tests
@ -347,7 +349,7 @@ static GRPCProtoMethod *kUnaryCallMethod;
[call startWithWriteable:responsesWriteable];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
@end

@ -46,6 +46,8 @@
#import <RxLibrary/GRXBufferedPipe.h>
#import <RxLibrary/GRXWriter+Immediate.h>
#define TEST_TIMEOUT 32
// Convenience constructors for the generated proto messages:
@interface RMTStreamingOutputCallRequest (Constructors)
@ -124,7 +126,7 @@
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:4 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testLargeUnaryRPC {
@ -147,7 +149,7 @@
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:16 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)test4MBResponsesAreAccepted {
@ -164,7 +166,7 @@
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:16 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testResponsesOverMaxSizeFailWithActionableMessage {
@ -185,7 +187,7 @@
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:16 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testResponsesOver4MBAreAcceptedIfOptedIn {
@ -205,7 +207,7 @@
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:16 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testClientStreamingRPC {
@ -238,7 +240,7 @@
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testServerStreamingRPC {
@ -275,7 +277,7 @@
}
}];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testPingPongRPC {
@ -319,7 +321,7 @@
[expectation fulfill];
}
}];
[self waitForExpectationsWithTimeout:4 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
#ifndef GRPC_COMPILE_WITH_CRONET
@ -335,7 +337,7 @@
XCTAssert(done, @"Unexpected response: %@", response);
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:2 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
#endif
@ -361,7 +363,7 @@
[call cancel];
XCTAssertEqual(call.state, GRXWriterStateFinished);
[self waitForExpectationsWithTimeout:1 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testCancelAfterFirstResponseRPC {
@ -396,7 +398,7 @@
}
}];
[call start];
[self waitForExpectationsWithTimeout:8 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
- (void)testRPCAfterClosingOpenConnections {
@ -420,7 +422,7 @@
}];
}];
[self waitForExpectationsWithTimeout:4 handler:nil];
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil];
}
@end

@ -59,7 +59,7 @@ extern "C" {
}
#include "src/cpp/client/create_channel_internal.h"
#include "src/proto/grpc/testing/echo.grpc.pb.h"
#include "third_party/google_benchmark/include/benchmark/benchmark.h"
#include "third_party/benchmark/include/benchmark/benchmark.h"
namespace grpc {
namespace testing {

@ -31,10 +31,10 @@
*
*/
/* This benchmark exists to ensure that the google_benchmark integration is
/* This benchmark exists to ensure that the benchmark integration is
* working */
#include "third_party/google_benchmark/include/benchmark/benchmark.h"
#include "third_party/benchmark/include/benchmark/benchmark.h"
static void BM_NoOp(benchmark::State& state) {
while (state.KeepRunning()) {

@ -101,7 +101,7 @@ static std::unordered_map<string, std::deque<int>> get_hosts_and_cores(
static deque<string> get_workers(const string& name) {
char* env = gpr_getenv(name.c_str());
if (!env) return deque<string>();
if (!env || strlen(env) == 0) return deque<string>();
deque<string> out;
char* p = env;

@ -0,0 +1 @@
Subproject commit 56336e70f151f9eb828176e795f7c5dfe6d6bb59

@ -1 +0,0 @@
Subproject commit 44c25c892a6229b20db7cd9dc05584ea865896de

@ -30,7 +30,7 @@
gen_build_yaml_dirs=" \
src/boringssl \
src/google_benchmark \
src/benchmark \
src/proto \
src/zlib \
test/core/bad_client \

@ -171,8 +171,7 @@ pip_install_dir() {
}
$VENV_PYTHON -m pip install --upgrade pip
# TODO(https://github.com/pypa/setuptools/issues/709) get the latest setuptools
$VENV_PYTHON -m pip install setuptools==25.1.1
$VENV_PYTHON -m pip install setuptools
$VENV_PYTHON -m pip install cython
pip_install_dir $ROOT
$VENV_PYTHON $ROOT/tools/distrib/python/make_grpcio_tools.py

@ -464,9 +464,10 @@ for scenario in scenarios:
try:
for worker in scenario.workers:
worker.start()
scenario_failures, resultset = jobset.run([scenario.jobspec,
create_quit_jobspec(scenario.workers, remote_host=args.remote_driver_host)],
newline_on_success=True, maxjobs=1)
jobs = [scenario.jobspec]
if scenario.workers:
jobs.append(create_quit_jobspec(scenario.workers, remote_host=args.remote_driver_host))
scenario_failures, resultset = jobset.run(jobs, newline_on_success=True, maxjobs=1)
total_scenario_failures += scenario_failures
merged_resultset = dict(itertools.chain(merged_resultset.iteritems(),
resultset.iteritems()))

@ -43,7 +43,7 @@ git submodule | awk '{ print $1 }' | sort > $submodules
cat << EOF | awk '{ print $1 }' | sort > $want_submodules
c880e42ba1c8032d4cdde2aba0541d8a9d9fa2e9 third_party/boringssl (version_for_cocoapods_2.0-100-gc880e42)
05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f)
44c25c892a6229b20db7cd9dc05584ea865896de third_party/google_benchmark (v0.1.0-343-g44c25c8)
44c25c892a6229b20db7cd9dc05584ea865896de third_party/benchmark (v0.1.0-343-g44c25c8)
c99458533a9b4c743ed51537e25989ea55944908 third_party/googletest (release-1.7.0)
a428e42072765993ff674fda72863c9f1aa2d268 third_party/protobuf (v3.1.0)
50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8)

@ -2263,7 +2263,7 @@
},
{
"deps": [
"google_benchmark",
"benchmark",
"gpr",
"gpr_test_util",
"grpc",
@ -2913,7 +2913,7 @@
},
{
"deps": [
"google_benchmark"
"benchmark"
],
"headers": [],
"is_filegroup": false,
@ -6207,30 +6207,30 @@
{
"deps": [],
"headers": [
"third_party/google_benchmark/include/benchmark/benchmark.h",
"third_party/google_benchmark/include/benchmark/benchmark_api.h",
"third_party/google_benchmark/include/benchmark/macros.h",
"third_party/google_benchmark/include/benchmark/reporter.h",
"third_party/google_benchmark/src/arraysize.h",
"third_party/google_benchmark/src/benchmark_api_internal.h",
"third_party/google_benchmark/src/check.h",
"third_party/google_benchmark/src/colorprint.h",
"third_party/google_benchmark/src/commandlineflags.h",
"third_party/google_benchmark/src/complexity.h",
"third_party/google_benchmark/src/cycleclock.h",
"third_party/google_benchmark/src/internal_macros.h",
"third_party/google_benchmark/src/log.h",
"third_party/google_benchmark/src/mutex.h",
"third_party/google_benchmark/src/re.h",
"third_party/google_benchmark/src/sleep.h",
"third_party/google_benchmark/src/stat.h",
"third_party/google_benchmark/src/string_util.h",
"third_party/google_benchmark/src/sysinfo.h",
"third_party/google_benchmark/src/timers.h"
],
"is_filegroup": false,
"language": "c++",
"name": "google_benchmark",
"third_party/benchmark/include/benchmark/benchmark.h",
"third_party/benchmark/include/benchmark/benchmark_api.h",
"third_party/benchmark/include/benchmark/macros.h",
"third_party/benchmark/include/benchmark/reporter.h",
"third_party/benchmark/src/arraysize.h",
"third_party/benchmark/src/benchmark_api_internal.h",
"third_party/benchmark/src/check.h",
"third_party/benchmark/src/colorprint.h",
"third_party/benchmark/src/commandlineflags.h",
"third_party/benchmark/src/complexity.h",
"third_party/benchmark/src/cycleclock.h",
"third_party/benchmark/src/internal_macros.h",
"third_party/benchmark/src/log.h",
"third_party/benchmark/src/mutex.h",
"third_party/benchmark/src/re.h",
"third_party/benchmark/src/sleep.h",
"third_party/benchmark/src/stat.h",
"third_party/benchmark/src/string_util.h",
"third_party/benchmark/src/sysinfo.h",
"third_party/benchmark/src/timers.h"
],
"is_filegroup": false,
"language": "c++",
"name": "benchmark",
"src": [],
"third_party": false,
"type": "lib"

@ -19,7 +19,7 @@
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{AAD4AEF3-DF1E-7A6D-EC35-233BD1031BF4}</ProjectGuid>
<ProjectGuid>{07978586-E47C-8709-A63E-895FBF3C3C7D}</ProjectGuid>
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
<IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
</PropertyGroup>
@ -57,10 +57,10 @@
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>google_benchmark</TargetName>
<TargetName>benchmark</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>google_benchmark</TargetName>
<TargetName>benchmark</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
@ -147,53 +147,53 @@
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\benchmark.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\benchmark_api.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\macros.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\reporter.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\arraysize.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\benchmark_api_internal.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\check.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\colorprint.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\commandlineflags.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\complexity.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\cycleclock.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\internal_macros.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\log.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\mutex.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\re.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\sleep.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\stat.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\string_util.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\sysinfo.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\timers.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\benchmark.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\benchmark_api.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\macros.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\reporter.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\arraysize.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\benchmark_api_internal.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\check.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\colorprint.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\commandlineflags.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\complexity.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\cycleclock.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\internal_macros.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\log.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\mutex.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\re.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\sleep.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\stat.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\string_util.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\sysinfo.h" />
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\timers.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\benchmark.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\benchmark.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\benchmark_register.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\benchmark_register.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\colorprint.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\colorprint.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\commandlineflags.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\commandlineflags.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\complexity.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\complexity.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\console_reporter.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\console_reporter.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\csv_reporter.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\csv_reporter.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\json_reporter.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\json_reporter.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\reporter.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\reporter.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\sleep.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\sleep.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\string_util.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\string_util.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\sysinfo.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\sysinfo.cc">
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\timers.cc">
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\timers.cc">
</ClCompile>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\benchmark.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\benchmark_register.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\colorprint.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\commandlineflags.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\complexity.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\console_reporter.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\csv_reporter.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\json_reporter.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\reporter.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\sleep.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\string_util.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\sysinfo.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\benchmark\src\timers.cc">
<Filter>third_party\benchmark\src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\benchmark.h">
<Filter>third_party\benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\benchmark_api.h">
<Filter>third_party\benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\macros.h">
<Filter>third_party\benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\include\benchmark\reporter.h">
<Filter>third_party\benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\arraysize.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\benchmark_api_internal.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\check.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\colorprint.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\commandlineflags.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\complexity.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\cycleclock.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\internal_macros.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\log.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\mutex.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\re.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\sleep.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\stat.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\string_util.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\sysinfo.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\benchmark\src\timers.h">
<Filter>third_party\benchmark\src</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="third_party">
<UniqueIdentifier>{7b593518-9fee-107e-6b64-24bdce73f939}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\benchmark">
<UniqueIdentifier>{f0d35de1-6b41-778d-0ba0-faad514fb0f4}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\benchmark\include">
<UniqueIdentifier>{cbc02dfa-face-8cc6-0efb-efacc0c3369c}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\benchmark\include\benchmark">
<UniqueIdentifier>{4f2f03fc-b82d-df33-63ee-bedebeb2c0ee}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\benchmark\src">
<UniqueIdentifier>{f42a8e0a-5a76-0e6f-d708-f0306858f673}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

@ -1,125 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\benchmark.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\benchmark_register.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\colorprint.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\commandlineflags.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\complexity.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\console_reporter.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\csv_reporter.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\json_reporter.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\reporter.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\sleep.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\string_util.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\sysinfo.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
<ClCompile Include="$(SolutionDir)\..\third_party\google_benchmark\src\timers.cc">
<Filter>third_party\google_benchmark\src</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\benchmark.h">
<Filter>third_party\google_benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\benchmark_api.h">
<Filter>third_party\google_benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\macros.h">
<Filter>third_party\google_benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\include\benchmark\reporter.h">
<Filter>third_party\google_benchmark\include\benchmark</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\arraysize.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\benchmark_api_internal.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\check.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\colorprint.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\commandlineflags.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\complexity.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\cycleclock.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\internal_macros.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\log.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\mutex.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\re.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\sleep.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\stat.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\string_util.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\sysinfo.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\third_party\google_benchmark\src\timers.h">
<Filter>third_party\google_benchmark\src</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="third_party">
<UniqueIdentifier>{7458b63d-7ba4-103d-2bed-3e3ad30d8237}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\google_benchmark">
<UniqueIdentifier>{54a154e8-669b-a7c1-9b6e-bd1aab2f86e3}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\google_benchmark\include">
<UniqueIdentifier>{f54c3cb1-ec20-a651-6956-78379b51e1a5}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\google_benchmark\include\benchmark">
<UniqueIdentifier>{0483a457-8050-4565-bc15-09695bf7b822}</UniqueIdentifier>
</Filter>
<Filter Include="third_party\google_benchmark\src">
<UniqueIdentifier>{c39ff2d1-691e-4614-4d75-4bc20db05e09}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

@ -164,8 +164,8 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\google_benchmark\google_benchmark.vcxproj">
<Project>{AAD4AEF3-DF1E-7A6D-EC35-233BD1031BF4}</Project>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\benchmark\benchmark.vcxproj">
<Project>{07978586-E47C-8709-A63E-895FBF3C3C7D}</Project>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_util\grpc++_test_util.vcxproj">
<Project>{0BE77741-552A-929B-A497-4EF7ECE17A64}</Project>

@ -164,8 +164,8 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\google_benchmark\google_benchmark.vcxproj">
<Project>{AAD4AEF3-DF1E-7A6D-EC35-233BD1031BF4}</Project>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\benchmark\benchmark.vcxproj">
<Project>{07978586-E47C-8709-A63E-895FBF3C3C7D}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>

Loading…
Cancel
Save