From 0498124f8ebead73d71fefdfc63e9b29d0da7a8f Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 1 Dec 2016 11:53:08 -0800
Subject: [PATCH 01/95] Add files
---
BUILD | 6 ++
CMakeLists.txt | 6 ++
Makefile | 6 ++
build.yaml | 2 +
.../ext/health_check_service_interface.h | 52 +++++++++++++++++
...alth_check_service_server_builder_option.h | 56 +++++++++++++++++++
tools/doxygen/Doxyfile.c++ | 2 +
tools/doxygen/Doxyfile.c++.internal | 2 +
.../generated/sources_and_headers.json | 4 ++
vsprojects/vcxproj/grpc++/grpc++.vcxproj | 2 +
.../vcxproj/grpc++/grpc++.vcxproj.filters | 9 +++
.../grpc++_unsecure/grpc++_unsecure.vcxproj | 2 +
.../grpc++_unsecure.vcxproj.filters | 9 +++
13 files changed, 158 insertions(+)
create mode 100644 include/grpc++/ext/health_check_service_interface.h
create mode 100644 include/grpc++/ext/health_check_service_server_builder_option.h
diff --git a/BUILD b/BUILD
index ab0fc237b78..54eda959fc2 100644
--- a/BUILD
+++ b/BUILD
@@ -1422,6 +1422,8 @@ cc_library(
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
+ "include/grpc++/ext/health_check_service_interface.h",
+ "include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
@@ -1884,6 +1886,8 @@ cc_library(
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
+ "include/grpc++/ext/health_check_service_interface.h",
+ "include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
@@ -2060,6 +2064,8 @@ cc_library(
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
+ "include/grpc++/ext/health_check_service_interface.h",
+ "include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ff0927504aa..90cf1cdc777 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1128,6 +1128,8 @@ foreach(_hdr
include/grpc++/completion_queue.h
include/grpc++/create_channel.h
include/grpc++/create_channel_posix.h
+ include/grpc++/ext/health_check_service_interface.h
+ include/grpc++/ext/health_check_service_server_builder_option.h
include/grpc++/generic/async_generic_service.h
include/grpc++/generic/generic_stub.h
include/grpc++/grpc++.h
@@ -1461,6 +1463,8 @@ foreach(_hdr
include/grpc++/completion_queue.h
include/grpc++/create_channel.h
include/grpc++/create_channel_posix.h
+ include/grpc++/ext/health_check_service_interface.h
+ include/grpc++/ext/health_check_service_server_builder_option.h
include/grpc++/generic/async_generic_service.h
include/grpc++/generic/generic_stub.h
include/grpc++/grpc++.h
@@ -1667,6 +1671,8 @@ foreach(_hdr
include/grpc++/completion_queue.h
include/grpc++/create_channel.h
include/grpc++/create_channel_posix.h
+ include/grpc++/ext/health_check_service_interface.h
+ include/grpc++/ext/health_check_service_server_builder_option.h
include/grpc++/generic/async_generic_service.h
include/grpc++/generic/generic_stub.h
include/grpc++/grpc++.h
diff --git a/Makefile b/Makefile
index 8f7328ae285..85074b5b813 100644
--- a/Makefile
+++ b/Makefile
@@ -3805,6 +3805,8 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
+ include/grpc++/ext/health_check_service_interface.h \
+ include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
@@ -4167,6 +4169,8 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
+ include/grpc++/ext/health_check_service_interface.h \
+ include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
@@ -4700,6 +4704,8 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
+ include/grpc++/ext/health_check_service_interface.h \
+ include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
diff --git a/build.yaml b/build.yaml
index de9d253ef1c..25c4dd7fbf7 100644
--- a/build.yaml
+++ b/build.yaml
@@ -718,6 +718,8 @@ filegroups:
- include/grpc++/completion_queue.h
- include/grpc++/create_channel.h
- include/grpc++/create_channel_posix.h
+ - include/grpc++/ext/health_check_service_interface.h
+ - include/grpc++/ext/health_check_service_server_builder_option.h
- include/grpc++/generic/async_generic_service.h
- include/grpc++/generic/generic_stub.h
- include/grpc++/grpc++.h
diff --git a/include/grpc++/ext/health_check_service_interface.h b/include/grpc++/ext/health_check_service_interface.h
new file mode 100644
index 00000000000..b9f4ebb87f9
--- /dev/null
+++ b/include/grpc++/ext/health_check_service_interface.h
@@ -0,0 +1,52 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPCXX_EXT_HEALTH_CHECK_SERVICE_INTERFACE_H
+#define GRPCXX_EXT_HEALTH_CHECK_SERVICE_INTERFACE_H
+
+#include
+
+namespace grpc {
+
+class HealthCheckServiceInterface {
+ public:
+ virtual ~HealthCheckServiceInterface() { }
+ virtual void SetServingStatus(const grpc::string& service_name, bool serving) = 0;
+ // Apply to all registered service names.
+ virtual void SetServingStatus(bool serving) = 0;
+};
+
+
+} // namespace grpc
+
+#endif // GRPCXX_EXT_HEALTH_CHECK_SERVICE_INTERFACE_H
diff --git a/include/grpc++/ext/health_check_service_server_builder_option.h b/include/grpc++/ext/health_check_service_server_builder_option.h
new file mode 100644
index 00000000000..9da1d18c985
--- /dev/null
+++ b/include/grpc++/ext/health_check_service_server_builder_option.h
@@ -0,0 +1,56 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H
+#define GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H
+
+#include
+
+#include
+
+namespace grpc {
+
+class HealthCheckServiceInterface;
+
+class HealthCheckServiceServerBuilderOption : public ServerBuilderOption {
+ public:
+ explicit HealthCheckServiceServerBuilderOption(
+ std::unique_ptr hc);
+ void UpdateArguments(ChannelArguments* args) override;
+ private:
+ std::unique_ptr hc_;
+};
+
+} // namespace grpc
+
+#endif // GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index ff3a0e381da..77e9c7fc9ac 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -766,6 +766,8 @@ include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
+include/grpc++/ext/health_check_service_interface.h \
+include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 04e8f4e7f20..f2e871e7bdd 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -766,6 +766,8 @@ include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
+include/grpc++/ext/health_check_service_interface.h \
+include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 6ae269cc20d..4fd90ed24eb 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -7618,6 +7618,8 @@
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
+ "include/grpc++/ext/health_check_service_interface.h",
+ "include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
@@ -7670,6 +7672,8 @@
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
+ "include/grpc++/ext/health_check_service_interface.h",
+ "include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index f281db72b66..b8d4176f8a4 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -264,6 +264,8 @@
+
+
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index f359e4ef31a..b7eae651bd0 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -132,6 +132,12 @@
include\grpc++
+
+ include\grpc++\ext
+
+
+ include\grpc++\ext
+
include\grpc++\generic
@@ -416,6 +422,9 @@
{784a0281-f547-aeb0-9f55-b26b7de9c769}
+
+ {25501d8e-5fae-2fe4-14a6-d69a07acefdd}
+
{51dae921-3aa2-1976-2ee4-c5615de1af54}
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index 1511a2cfe4c..4b6d448f919 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -264,6 +264,8 @@
+
+
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index bed77b25a44..deec6d71052 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -117,6 +117,12 @@
include\grpc++
+
+ include\grpc++\ext
+
+
+ include\grpc++\ext
+
include\grpc++\generic
@@ -389,6 +395,9 @@
{eceb50c0-bb49-3812-b6bd-b0af6df81da7}
+
+ {e6643be2-2b2f-953d-ab14-27d89c835c8a}
+
{83717d3c-57d9-2bfa-ed9c-2b08f86da12b}
From 64868839401b48a68afca187b28bc772043a2e1b Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 1 Dec 2016 12:15:50 -0800
Subject: [PATCH 02/95] Add more files
---
BUILD | 3 +
CMakeLists.txt | 3 +
Makefile | 3 +
build.yaml | 1 +
...alth_check_service_server_builder_option.h | 8 ++-
...lth_check_service_server_builder_option.cc | 59 +++++++++++++++++++
tools/doxygen/Doxyfile.c++.internal | 1 +
.../generated/sources_and_headers.json | 1 +
vsprojects/vcxproj/grpc++/grpc++.vcxproj | 2 +
.../vcxproj/grpc++/grpc++.vcxproj.filters | 3 +
.../grpc++_unsecure/grpc++_unsecure.vcxproj | 2 +
.../grpc++_unsecure.vcxproj.filters | 3 +
12 files changed, 87 insertions(+), 2 deletions(-)
create mode 100644 src/cpp/ext/health_check_service_server_builder_option.cc
diff --git a/BUILD b/BUILD
index 54eda959fc2..fcd2742a8f5 100644
--- a/BUILD
+++ b/BUILD
@@ -1396,6 +1396,7 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
+ "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@@ -1688,6 +1689,7 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
+ "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@@ -2038,6 +2040,7 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
+ "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 90cf1cdc777..e90e8426cc7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1085,6 +1085,7 @@ add_library(grpc++
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
+ src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@@ -1245,6 +1246,7 @@ add_library(grpc++_cronet
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
+ src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@@ -1628,6 +1630,7 @@ add_library(grpc++_unsecure
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
+ src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
diff --git a/Makefile b/Makefile
index 85074b5b813..45d3cb29632 100644
--- a/Makefile
+++ b/Makefile
@@ -3779,6 +3779,7 @@ LIBGRPC++_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
+ src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@@ -3968,6 +3969,7 @@ LIBGRPC++_CRONET_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
+ src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@@ -4678,6 +4680,7 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
+ src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
diff --git a/build.yaml b/build.yaml
index 25c4dd7fbf7..25dc9e0fcbe 100644
--- a/build.yaml
+++ b/build.yaml
@@ -774,6 +774,7 @@ filegroups:
- src/cpp/common/channel_filter.cc
- src/cpp/common/completion_queue_cc.cc
- src/cpp/common/core_codegen.cc
+ - src/cpp/common/health_check_service_server_builder_option.cc
- src/cpp/common/resource_quota_cc.cc
- src/cpp/common/rpc_method.cc
- src/cpp/common/version_cc.cc
diff --git a/include/grpc++/ext/health_check_service_server_builder_option.h b/include/grpc++/ext/health_check_service_server_builder_option.h
index 9da1d18c985..fb5263d7426 100644
--- a/include/grpc++/ext/health_check_service_server_builder_option.h
+++ b/include/grpc++/ext/health_check_service_server_builder_option.h
@@ -36,21 +36,25 @@
#include
+#include
+#include
#include
namespace grpc {
-class HealthCheckServiceInterface;
-
class HealthCheckServiceServerBuilderOption : public ServerBuilderOption {
public:
explicit HealthCheckServiceServerBuilderOption(
std::unique_ptr hc);
+ ~HealthCheckServiceServerBuilderOption() {}
void UpdateArguments(ChannelArguments* args) override;
+ void UpdatePlugins(std::vector>* plugins) override;
private:
std::unique_ptr hc_;
};
+void EnableDefaultHealthCheckService(bool enable);
+
} // namespace grpc
#endif // GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H
diff --git a/src/cpp/ext/health_check_service_server_builder_option.cc b/src/cpp/ext/health_check_service_server_builder_option.cc
new file mode 100644
index 00000000000..dab5731e895
--- /dev/null
+++ b/src/cpp/ext/health_check_service_server_builder_option.cc
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include
+
+namespace grpc {
+namespace {
+bool g_grpc_default_health_check_service_enabled = false;
+const char kDefaultHealthCheckServiceInterfaceArg[] = "grpc.default_health_check_service_interface";
+} // namesapce
+
+HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
+ std::unique_ptr hc) : hc_(std::move(hc)) { }
+
+HealthCheckServiceServerBuilderOption::UpdateArguments(ChannelArguments* args) override {
+ args->SetPointer(kDefaultHealthCheckServiceInterfaceArg, hc_.release());
+}
+
+void HealthCheckServiceServerBuilderOption::UpdatePlugins(std::vector>* plugins) override {
+
+}
+
+void EnableDefaultHealthCheckService(bool enable) {
+ g_grpc_default_health_check_service_enabled = enable;
+}
+
+} // namespace grpc
+
+
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index f2e871e7bdd..ac20f0fc021 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -877,6 +877,7 @@ src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
+src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 4fd90ed24eb..cb92999b268 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -7723,6 +7723,7 @@
"src/cpp/common/channel_filter.h",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
+ "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index b8d4176f8a4..468accbd239 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -398,6 +398,8 @@
+
+
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index b7eae651bd0..d21b97b8df5 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -58,6 +58,9 @@
src\cpp\common
+
+ src\cpp\common
+
src\cpp\common
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index 4b6d448f919..f0e3f3a23e2 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -384,6 +384,8 @@
+
+
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index deec6d71052..6076dbc693b 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -43,6 +43,9 @@
src\cpp\common
+
+ src\cpp\common
+
src\cpp\common
From 8d668d8324c3aa24353b3774a8f6ce35edbf20b7 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 1 Dec 2016 15:09:28 -0800
Subject: [PATCH 03/95] default service
---
BUILD | 9 +++
CMakeLists.txt | 6 ++
Makefile | 6 ++
build.yaml | 3 +
...alth_check_service_server_builder_option.h | 5 +-
.../grpc++/health_check_service_interface.h | 63 +++++++++++++++++
include/grpc++/server.h | 9 +++
...lth_check_service_server_builder_option.cc | 12 +---
.../server/default_health_check_service.cc | 67 +++++++++++++++++++
src/cpp/server/default_health_check_service.h | 59 ++++++++++++++++
.../cpp/server/health_check_service.cc | 23 +++----
src/cpp/server/server_cc.cc | 33 ++++++++-
tools/doxygen/Doxyfile.c++.internal | 3 +
.../generated/sources_and_headers.json | 4 ++
vsprojects/vcxproj/grpc++/grpc++.vcxproj | 5 ++
.../vcxproj/grpc++/grpc++.vcxproj.filters | 9 +++
.../grpc++_unsecure/grpc++_unsecure.vcxproj | 5 ++
.../grpc++_unsecure.vcxproj.filters | 9 +++
18 files changed, 302 insertions(+), 28 deletions(-)
create mode 100644 include/grpc++/health_check_service_interface.h
create mode 100644 src/cpp/server/default_health_check_service.cc
create mode 100644 src/cpp/server/default_health_check_service.h
rename include/grpc++/ext/health_check_service_interface.h => src/cpp/server/health_check_service.cc (77%)
diff --git a/BUILD b/BUILD
index fcd2742a8f5..be1e23007b9 100644
--- a/BUILD
+++ b/BUILD
@@ -1374,6 +1374,7 @@ cc_library(
"src/cpp/server/secure_server_credentials.h",
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
+ "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h",
@@ -1402,7 +1403,9 @@ cc_library(
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
+ "src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
+ "src/cpp/server/health_check_service.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@@ -1525,6 +1528,7 @@ cc_library(
srcs = [
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
+ "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h",
@@ -1695,7 +1699,9 @@ cc_library(
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
+ "src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
+ "src/cpp/server/health_check_service.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@@ -2023,6 +2029,7 @@ cc_library(
srcs = [
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
+ "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h",
@@ -2046,7 +2053,9 @@ cc_library(
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
+ "src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
+ "src/cpp/server/health_check_service.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e90e8426cc7..049f7fdaca0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1091,7 +1091,9 @@ add_library(grpc++
src/cpp/common/version_cc.cc
src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc
+ src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
+ src/cpp/server/health_check_service.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@@ -1252,7 +1254,9 @@ add_library(grpc++_cronet
src/cpp/common/version_cc.cc
src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc
+ src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
+ src/cpp/server/health_check_service.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@@ -1636,7 +1640,9 @@ add_library(grpc++_unsecure
src/cpp/common/version_cc.cc
src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc
+ src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
+ src/cpp/server/health_check_service.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
diff --git a/Makefile b/Makefile
index 45d3cb29632..63f5d2ad314 100644
--- a/Makefile
+++ b/Makefile
@@ -3785,7 +3785,9 @@ LIBGRPC++_SRC = \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
+ src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
+ src/cpp/server/health_check_service.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@@ -3975,7 +3977,9 @@ LIBGRPC++_CRONET_SRC = \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
+ src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
+ src/cpp/server/health_check_service.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@@ -4686,7 +4690,9 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
+ src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
+ src/cpp/server/health_check_service.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
diff --git a/build.yaml b/build.yaml
index 25dc9e0fcbe..925c73b729d 100644
--- a/build.yaml
+++ b/build.yaml
@@ -759,6 +759,7 @@ filegroups:
headers:
- src/cpp/client/create_channel_internal.h
- src/cpp/common/channel_filter.h
+ - src/cpp/server/default_health_check_service.h
- src/cpp/server/dynamic_thread_pool.h
- src/cpp/server/thread_pool_interface.h
- src/cpp/thread_manager/thread_manager.h
@@ -780,7 +781,9 @@ filegroups:
- src/cpp/common/version_cc.cc
- src/cpp/server/async_generic_service.cc
- src/cpp/server/create_default_thread_pool.cc
+ - src/cpp/server/default_health_check_service.cc
- src/cpp/server/dynamic_thread_pool.cc
+ - src/cpp/server/health_check_service.cc
- src/cpp/server/server_builder.cc
- src/cpp/server/server_cc.cc
- src/cpp/server/server_context.cc
diff --git a/include/grpc++/ext/health_check_service_server_builder_option.h b/include/grpc++/ext/health_check_service_server_builder_option.h
index fb5263d7426..e00c4c3dd59 100644
--- a/include/grpc++/ext/health_check_service_server_builder_option.h
+++ b/include/grpc++/ext/health_check_service_server_builder_option.h
@@ -36,7 +36,7 @@
#include
-#include
+#include
#include
#include
@@ -44,6 +44,7 @@ namespace grpc {
class HealthCheckServiceServerBuilderOption : public ServerBuilderOption {
public:
+ // Use nullptr to disable default service.
explicit HealthCheckServiceServerBuilderOption(
std::unique_ptr hc);
~HealthCheckServiceServerBuilderOption() {}
@@ -53,8 +54,6 @@ class HealthCheckServiceServerBuilderOption : public ServerBuilderOption {
std::unique_ptr hc_;
};
-void EnableDefaultHealthCheckService(bool enable);
-
} // namespace grpc
#endif // GRPCXX_EXT_HEALTH_CHECK_SERVICE_SERVER_BUILDER_OPTION_H
diff --git a/include/grpc++/health_check_service_interface.h b/include/grpc++/health_check_service_interface.h
new file mode 100644
index 00000000000..70153d65cbb
--- /dev/null
+++ b/include/grpc++/health_check_service_interface.h
@@ -0,0 +1,63 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H
+#define GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H
+
+#include
+
+namespace grpc {
+
+const char kDefaultHealthCheckServiceInterfaceArg[] =
+ "grpc.default_health_check_service_interface";
+
+class HealthCheckServiceInterface {
+ public:
+ virtual ~HealthCheckServiceInterface() {}
+ virtual void SetServingStatus(const grpc::string& service_name,
+ bool serving) = 0;
+ // Apply to all registered service names.
+ virtual void SetServingStatus(bool serving) = 0;
+};
+
+bool DefaultHealthCheckServiceEnabled();
+
+// Enable/disable the default health checking service. This applies to all C++
+// servers created afterwards. For each server, user can override the default
+// with a HealthCheckServiceServerBuilderOption.
+// NOT thread safe.
+void EnableDefaultHealthCheckService(bool enable);
+
+} // namespace grpc
+
+#endif // GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index fba9952e6e7..511dc35564a 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -97,6 +97,11 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
// Returns a \em raw pointer to the underlying grpc_server instance.
grpc_server* c_server();
+ /// Returns the health check service.
+ HealthCheckServiceInterface* GetHealthCheckService() const {
+ return hc_.get();
+ }
+
private:
friend class AsyncGenericService;
friend class ServerBuilder;
@@ -214,6 +219,10 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
grpc_server* server_;
std::unique_ptr server_initializer_;
+
+ std::unique_ptr health_check_service_;
+ // User explicitly disabled health check service.
+ bool health_check_service_disabled_;
};
} // namespace grpc
diff --git a/src/cpp/ext/health_check_service_server_builder_option.cc b/src/cpp/ext/health_check_service_server_builder_option.cc
index dab5731e895..4afc82dc144 100644
--- a/src/cpp/ext/health_check_service_server_builder_option.cc
+++ b/src/cpp/ext/health_check_service_server_builder_option.cc
@@ -34,26 +34,16 @@
#include
namespace grpc {
-namespace {
-bool g_grpc_default_health_check_service_enabled = false;
-const char kDefaultHealthCheckServiceInterfaceArg[] = "grpc.default_health_check_service_interface";
-} // namesapce
HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
std::unique_ptr hc) : hc_(std::move(hc)) { }
HealthCheckServiceServerBuilderOption::UpdateArguments(ChannelArguments* args) override {
- args->SetPointer(kDefaultHealthCheckServiceInterfaceArg, hc_.release());
+ args->SetPointer(DefaultHealthCheckServiceInterfaceArg(), hc_.release());
}
void HealthCheckServiceServerBuilderOption::UpdatePlugins(std::vector>* plugins) override {
-
-}
-
-void EnableDefaultHealthCheckService(bool enable) {
- g_grpc_default_health_check_service_enabled = enable;
}
} // namespace grpc
-
diff --git a/src/cpp/server/default_health_check_service.cc b/src/cpp/server/default_health_check_service.cc
new file mode 100644
index 00000000000..eec7e2cd585
--- /dev/null
+++ b/src/cpp/server/default_health_check_service.cc
@@ -0,0 +1,67 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "src/cpp/server/default_health_check_service.h"
+
+namespace grpc {
+
+DefaultHealthCheckService::DefaultHealthCheckService() {
+ services_map_.insert("", true);
+}
+
+void DefaultHealthCheckService::SetServingStatus(
+ const grpc::string& service_name, bool serving) override {
+ std::lock_guard lock(mu_);
+ services_map_[service_name] = serving;
+}
+
+void SetServingStatus(bool serving) override {
+ std::lock_guard lock(mu_);
+ for (auto& iter = services_map_.begin(); iter != services_map_.end();
+ ++iter) {
+ iter->second = serving;
+ }
+}
+
+ServingStatus GetServingStatus(const grpc::string& service_name) const {
+ std::lock_guard lock(mu_);
+ const auto& iter = services_map_.find(service_name);
+ if (iter == services_map_.end()) {
+ return NOT_FOUND;
+ }
+ return iter->second ? SERVING : NOT_SERVING;
+}
+
+} // namespace grpc
+
+#endif // GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H
diff --git a/src/cpp/server/default_health_check_service.h b/src/cpp/server/default_health_check_service.h
new file mode 100644
index 00000000000..51afa6491e6
--- /dev/null
+++ b/src/cpp/server/default_health_check_service.h
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H
+#define GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H
+
+#include
+
+#include
+
+namespace grpc {
+
+class DefaultHealthCheckService : public HealthCheckServiceInterface {
+ public:
+ DefaultHealthCheckService();
+ void SetServingStatus(const grpc::string& service_name,
+ bool serving) override;
+ void SetServingStatus(bool serving) override;
+ enum ServingStatus { NOT_FOUND, SERVING, NOT_SERVING };
+ ServingStatus GetServingStatus(const grpc::string& service_name) const;
+
+ private:
+ std::mutex mu_;
+ std::map services_map_;
+};
+
+} // namespace grpc
+
+#endif // GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H
diff --git a/include/grpc++/ext/health_check_service_interface.h b/src/cpp/server/health_check_service.cc
similarity index 77%
rename from include/grpc++/ext/health_check_service_interface.h
rename to src/cpp/server/health_check_service.cc
index b9f4ebb87f9..cca68c55490 100644
--- a/include/grpc++/ext/health_check_service_interface.h
+++ b/src/cpp/server/health_check_service.cc
@@ -31,22 +31,19 @@
*
*/
-#ifndef GRPCXX_EXT_HEALTH_CHECK_SERVICE_INTERFACE_H
-#define GRPCXX_EXT_HEALTH_CHECK_SERVICE_INTERFACE_H
-
-#include
+#include
namespace grpc {
+namespace {
+bool g_grpc_default_health_check_service_enabled = false;
+} // namesapce
-class HealthCheckServiceInterface {
- public:
- virtual ~HealthCheckServiceInterface() { }
- virtual void SetServingStatus(const grpc::string& service_name, bool serving) = 0;
- // Apply to all registered service names.
- virtual void SetServingStatus(bool serving) = 0;
-};
+bool DefaultHealthCheckServiceEnabled() {
+ return g_grpc_default_health_check_service_enabled;
+}
+void EnableDefaultHealthCheckService(bool enable) {
+ g_grpc_default_health_check_service_enabled = enable;
+}
} // namespace grpc
-
-#endif // GRPCXX_EXT_HEALTH_CHECK_SERVICE_INTERFACE_H
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 817d85a81ca..037da2b3015 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -36,6 +36,7 @@
#include
#include
+#include
#include
#include
#include
@@ -342,6 +343,7 @@ class Server::SyncRequestThreadManager : public ThreadManager {
int cq_timeout_msec_;
std::vector> sync_requests_;
std::unique_ptr unknown_method_;
+ std::unique_ptr health_check_;
std::shared_ptr global_callbacks_;
};
@@ -358,7 +360,8 @@ Server::Server(
shutdown_notified_(false),
has_generic_service_(false),
server_(nullptr),
- server_initializer_(new ServerInitializer(this)) {
+ server_initializer_(new ServerInitializer(this)),
+ health_check_service_disabled_(false) {
g_gli_initializer.summon();
gpr_once_init(&g_once_init_callbacks, InitGlobalCallbacks);
global_callbacks_ = g_callbacks;
@@ -374,6 +377,18 @@ Server::Server(
grpc_channel_args channel_args;
args->SetChannelArgs(&channel_args);
+ for (size_t i = 0; i < channel_args.num_args; i++) {
+ if (0 == strcmp(channel_args.args[i].key,
+ kDefaultHealthCheckServiceInterfaceArg)) {
+ if (channel_args.args[i].value == nullptr) {
+ health_check_service_disabled_ = true;
+ } else {
+ health_check_service_.reset(channel_args.args[i].value);
+ }
+ break;
+ }
+ }
+
server_ = grpc_server_create(&channel_args, nullptr);
}
@@ -481,6 +496,22 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
started_ = true;
grpc_server_start(server_);
+ // Only create default health check service when user did not provide an
+ // explicit one.
+ if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
+ EnableDefaultHealthCheckService()) {
+ health_check_service_.reset(CreateDefaultHealthCheckService());
+ for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
+ (*it)->AddHealthCheckSyncMethod();
+ }
+
+ for (size_t i = 0; i < num_cqs; i++) {
+ if (cqs[i]->IsFrequentlyPolled()) {
+ // new UnimplementedAsyncRequest(this, cqs[i]);
+ }
+ }
+ }
+
if (!has_generic_service_) {
for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
(*it)->AddUnknownSyncMethod();
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index ac20f0fc021..aa79aedeb9d 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -855,6 +855,7 @@ src/cpp/common/secure_auth_context.h \
src/cpp/server/secure_server_credentials.h \
src/cpp/client/create_channel_internal.h \
src/cpp/common/channel_filter.h \
+src/cpp/server/default_health_check_service.h \
src/cpp/server/dynamic_thread_pool.h \
src/cpp/server/thread_pool_interface.h \
src/cpp/thread_manager/thread_manager.h \
@@ -883,7 +884,9 @@ src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
+src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
+src/cpp/server/health_check_service.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index cb92999b268..860a151f48a 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -7658,6 +7658,7 @@
"include/grpc++/support/time.h",
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
+ "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h"
@@ -7729,8 +7730,11 @@
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
+ "src/cpp/server/default_health_check_service.cc",
+ "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/dynamic_thread_pool.h",
+ "src/cpp/server/health_check_service.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index 468accbd239..a57ed0e2e53 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -355,6 +355,7 @@
+
@@ -410,8 +411,12 @@
+
+
+
+
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index d21b97b8df5..e455636abe2 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -76,9 +76,15 @@
src\cpp\server
+
+ src\cpp\server
+
src\cpp\server
+
+ src\cpp\server
+
src\cpp\server
@@ -404,6 +410,9 @@
src\cpp\common
+
+ src\cpp\server
+
src\cpp\server
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index f0e3f3a23e2..10c9be33399 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -351,6 +351,7 @@
+
@@ -396,8 +397,12 @@
+
+
+
+
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 6076dbc693b..0b65ff3fe81 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -61,9 +61,15 @@
src\cpp\server
+
+ src\cpp\server
+
src\cpp\server
+
+ src\cpp\server
+
src\cpp\server
@@ -377,6 +383,9 @@
src\cpp\common
+
+ src\cpp\server
+
src\cpp\server
From 08137362d0c27d9908d91333c2825f09b30bad2b Mon Sep 17 00:00:00 2001
From: yang-g
Date: Fri, 2 Dec 2016 21:28:43 -0800
Subject: [PATCH 04/95] WIP
---
src/cpp/server/server_cc.cc | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 037da2b3015..5d4da92f2bc 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -52,6 +52,7 @@
#include
#include "src/core/lib/profiling/timers.h"
+#include "src/cpp/server/default_health_check_service.h"
#include "src/cpp/thread_manager/thread_manager.h"
namespace grpc {
@@ -306,6 +307,15 @@ class Server::SyncRequestThreadManager : public ThreadManager {
sync_requests_.emplace_back(new SyncRequest(method, tag));
}
+ void AddHealthCheckSyncMethod() {
+ if (!sync_requests_.empty()) {
+ health_check_.reset(
+ new RpcServiceMethod("???", RpcMethod::NORMAL_RPC, new XXXHandler));
+ sync_requests_.emplace_back(
+ new SyncRequest(health_check_.get(), nullptr));
+ }
+ }
+
void AddUnknownSyncMethod() {
if (!sync_requests_.empty()) {
unknown_method_.reset(new RpcServiceMethod(
@@ -500,7 +510,7 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
// explicit one.
if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
EnableDefaultHealthCheckService()) {
- health_check_service_.reset(CreateDefaultHealthCheckService());
+ health_check_service_.reset(new DefaultHealthCheckService);
for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
(*it)->AddHealthCheckSyncMethod();
}
From c9d2954e556db3f102a858d97e339edb9db0388c Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 6 Dec 2016 14:20:17 -0800
Subject: [PATCH 05/95] more
---
BUILD | 6 +--
CMakeLists.txt | 6 +--
Makefile | 6 +--
build.yaml | 2 +-
include/grpc++/server.h | 8 +--
.../server/default_health_check_service.cc | 23 +++++++++
src/cpp/server/default_health_check_service.h | 22 ++++++--
...lth_check_service_server_builder_option.cc | 50 +++++++++++++++++++
src/cpp/server/server_cc.cc | 29 ++++-------
tools/doxygen/Doxyfile.c++.internal | 2 +-
.../generated/sources_and_headers.json | 2 +-
vsprojects/vcxproj/grpc++/grpc++.vcxproj | 4 +-
.../vcxproj/grpc++/grpc++.vcxproj.filters | 6 +--
.../grpc++_unsecure/grpc++_unsecure.vcxproj | 4 +-
.../grpc++_unsecure.vcxproj.filters | 6 +--
15 files changed, 127 insertions(+), 49 deletions(-)
create mode 100644 src/cpp/server/health_check_service_server_builder_option.cc
diff --git a/BUILD b/BUILD
index be1e23007b9..6e786607ccc 100644
--- a/BUILD
+++ b/BUILD
@@ -1397,7 +1397,6 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
- "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@@ -1406,6 +1405,7 @@ cc_library(
"src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/health_check_service.cc",
+ "src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@@ -1693,7 +1693,6 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
- "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@@ -1702,6 +1701,7 @@ cc_library(
"src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/health_check_service.cc",
+ "src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@@ -2047,7 +2047,6 @@ cc_library(
"src/cpp/common/channel_filter.cc",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
- "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@@ -2056,6 +2055,7 @@ cc_library(
"src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/health_check_service.cc",
+ "src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 049f7fdaca0..c32a4aaf960 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1085,7 +1085,6 @@ add_library(grpc++
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
- src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@@ -1094,6 +1093,7 @@ add_library(grpc++
src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/health_check_service.cc
+ src/cpp/server/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@@ -1248,7 +1248,6 @@ add_library(grpc++_cronet
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
- src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@@ -1257,6 +1256,7 @@ add_library(grpc++_cronet
src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/health_check_service.cc
+ src/cpp/server/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@@ -1634,7 +1634,6 @@ add_library(grpc++_unsecure
src/cpp/common/channel_filter.cc
src/cpp/common/completion_queue_cc.cc
src/cpp/common/core_codegen.cc
- src/cpp/common/health_check_service_server_builder_option.cc
src/cpp/common/resource_quota_cc.cc
src/cpp/common/rpc_method.cc
src/cpp/common/version_cc.cc
@@ -1643,6 +1642,7 @@ add_library(grpc++_unsecure
src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
src/cpp/server/health_check_service.cc
+ src/cpp/server/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
diff --git a/Makefile b/Makefile
index 63f5d2ad314..43ef3c4f068 100644
--- a/Makefile
+++ b/Makefile
@@ -3779,7 +3779,6 @@ LIBGRPC++_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
- src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@@ -3788,6 +3787,7 @@ LIBGRPC++_SRC = \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
+ src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@@ -3971,7 +3971,6 @@ LIBGRPC++_CRONET_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
- src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@@ -3980,6 +3979,7 @@ LIBGRPC++_CRONET_SRC = \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
+ src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@@ -4684,7 +4684,6 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
- src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@@ -4693,6 +4692,7 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
+ src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
diff --git a/build.yaml b/build.yaml
index 925c73b729d..f02142717d6 100644
--- a/build.yaml
+++ b/build.yaml
@@ -775,7 +775,6 @@ filegroups:
- src/cpp/common/channel_filter.cc
- src/cpp/common/completion_queue_cc.cc
- src/cpp/common/core_codegen.cc
- - src/cpp/common/health_check_service_server_builder_option.cc
- src/cpp/common/resource_quota_cc.cc
- src/cpp/common/rpc_method.cc
- src/cpp/common/version_cc.cc
@@ -784,6 +783,7 @@ filegroups:
- src/cpp/server/default_health_check_service.cc
- src/cpp/server/dynamic_thread_pool.cc
- src/cpp/server/health_check_service.cc
+ - src/cpp/server/health_check_service_server_builder_option.cc
- src/cpp/server/server_builder.cc
- src/cpp/server/server_cc.cc
- src/cpp/server/server_context.cc
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index 511dc35564a..dc97a0ec4c7 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -55,12 +55,10 @@ struct grpc_server;
namespace grpc {
-class GenericServerContext;
class AsyncGenericService;
-class ServerAsyncStreamingInterface;
+class HealthCheckServiceInterface;
class ServerContext;
class ServerInitializer;
-class ThreadPoolInterface;
/// Models a gRPC server.
///
@@ -99,7 +97,7 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
/// Returns the health check service.
HealthCheckServiceInterface* GetHealthCheckService() const {
- return hc_.get();
+ return health_check_service_.get();
}
private:
@@ -221,8 +219,6 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
std::unique_ptr server_initializer_;
std::unique_ptr health_check_service_;
- // User explicitly disabled health check service.
- bool health_check_service_disabled_;
};
} // namespace grpc
diff --git a/src/cpp/server/default_health_check_service.cc b/src/cpp/server/default_health_check_service.cc
index eec7e2cd585..45f51a97b6f 100644
--- a/src/cpp/server/default_health_check_service.cc
+++ b/src/cpp/server/default_health_check_service.cc
@@ -34,6 +34,29 @@
#include "src/cpp/server/default_health_check_service.h"
namespace grpc {
+namespace {
+
+const char kHealthCheckMethodName[] = "/grpc.health.v1.Health/Check";
+
+} // namespace
+
+SyncHealthCheckServiceImpl::SyncHealthCheckServiceImpl(
+ DefaultHealthCheckService* service)
+ : service_(service) {
+ auto* handler =
+ new RpcMethodHandler(
+ std::mem_fn(&SyncHealthCheckServiceImpl::Check), this);
+ auto* method = new RpcServiceMethod(kHealthCheckMethodName,
+ RpcMethod::NORMAL_RPC, handler);
+ AddMethod(mehtod);
+}
+
+Status SyncHealthCheckServiceImpl::Check(ServerContext* context,
+ const ByteBuffer* request,
+ ByteBuffer* response) {
+ // TODO nanopb
+ return Status::OK;
+}
DefaultHealthCheckService::DefaultHealthCheckService() {
services_map_.insert("", true);
diff --git a/src/cpp/server/default_health_check_service.h b/src/cpp/server/default_health_check_service.h
index 51afa6491e6..a2545c50e75 100644
--- a/src/cpp/server/default_health_check_service.h
+++ b/src/cpp/server/default_health_check_service.h
@@ -37,21 +37,37 @@
#include
#include
+#include
namespace grpc {
+class SyncHealthCheckServiceImpl : public Service {
+ public:
+ explicit SyncHealthCheckServiceImpl(DefaultHealthCheckService* service);
+ Status Check(ServerContext* context, const ByteBuffer* request,
+ ByteBuffer* response);
+
+ private:
+ const DefaultHealthCheckService* service_;
+};
+
+// Default implementation of HealthCheckServiceInterface. Server will create and
+// own it.
class DefaultHealthCheckService : public HealthCheckServiceInterface {
public:
DefaultHealthCheckService();
- void SetServingStatus(const grpc::string& service_name,
- bool serving) override;
- void SetServingStatus(bool serving) override;
+ void SetServingStatus(const grpc::string& service_name, bool serving) final;
+ void SetServingStatus(bool serving) final;
enum ServingStatus { NOT_FOUND, SERVING, NOT_SERVING };
ServingStatus GetServingStatus(const grpc::string& service_name) const;
+ SyncHealthCheckServiceImpl* GetSyncHealthCheckService() const {
+ return sync_service_.get();
+ }
private:
std::mutex mu_;
std::map services_map_;
+ std::unique_ptr sync_service_;
};
} // namespace grpc
diff --git a/src/cpp/server/health_check_service_server_builder_option.cc b/src/cpp/server/health_check_service_server_builder_option.cc
new file mode 100644
index 00000000000..80004b77fae
--- /dev/null
+++ b/src/cpp/server/health_check_service_server_builder_option.cc
@@ -0,0 +1,50 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include
+
+namespace grpc {
+
+HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
+ std::unique_ptr hc)
+ : hc_(std::move(hc)) {}
+// Hand over hc_ to the server.
+void HealthCheckServiceServerBuilderOption::UpdateArguments(
+ ChannelArguments* args) override {
+ args->SetPointer(kDefaultHealthCheckServiceInterfaceArg, hc_.release());
+}
+
+void HealthCheckServiceServerBuilderOption::UpdatePlugins(
+ std::vector>* plugins) override {}
+
+} // namespace grpc
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 5d4da92f2bc..03210883bfe 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -370,8 +370,7 @@ Server::Server(
shutdown_notified_(false),
has_generic_service_(false),
server_(nullptr),
- server_initializer_(new ServerInitializer(this)),
- health_check_service_disabled_(false) {
+ server_initializer_(new ServerInitializer(this)) {
g_gli_initializer.summon();
gpr_once_init(&g_once_init_callbacks, InitGlobalCallbacks);
global_callbacks_ = g_callbacks;
@@ -387,6 +386,7 @@ Server::Server(
grpc_channel_args channel_args;
args->SetChannelArgs(&channel_args);
+ bool health_check_service_disabled = false;
for (size_t i = 0; i < channel_args.num_args; i++) {
if (0 == strcmp(channel_args.args[i].key,
kDefaultHealthCheckServiceInterfaceArg)) {
@@ -398,6 +398,15 @@ Server::Server(
break;
}
}
+ // Only create default health check service when user did not provide an
+ // explicit one.
+ if (health_check_service_ == nullptr && !health_check_service_disabled &&
+ EnableDefaultHealthCheckService()) {
+ health_check_service_.reset(new DefaultHealthCheckService);
+ if (!sync_server_cqs->empty()) { // Has sync methods.
+ RegisterService(health_check_service_->GetSyncHealthCheckService());
+ }
+ }
server_ = grpc_server_create(&channel_args, nullptr);
}
@@ -506,22 +515,6 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
started_ = true;
grpc_server_start(server_);
- // Only create default health check service when user did not provide an
- // explicit one.
- if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
- EnableDefaultHealthCheckService()) {
- health_check_service_.reset(new DefaultHealthCheckService);
- for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
- (*it)->AddHealthCheckSyncMethod();
- }
-
- for (size_t i = 0; i < num_cqs; i++) {
- if (cqs[i]->IsFrequentlyPolled()) {
- // new UnimplementedAsyncRequest(this, cqs[i]);
- }
- }
- }
-
if (!has_generic_service_) {
for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
(*it)->AddUnknownSyncMethod();
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index aa79aedeb9d..5e3f2266032 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -878,7 +878,6 @@ src/cpp/common/channel_arguments.cc \
src/cpp/common/channel_filter.cc \
src/cpp/common/completion_queue_cc.cc \
src/cpp/common/core_codegen.cc \
-src/cpp/common/health_check_service_server_builder_option.cc \
src/cpp/common/resource_quota_cc.cc \
src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
@@ -887,6 +886,7 @@ src/cpp/server/create_default_thread_pool.cc \
src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
src/cpp/server/health_check_service.cc \
+src/cpp/server/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 860a151f48a..84fc1ad3b18 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -7724,7 +7724,6 @@
"src/cpp/common/channel_filter.h",
"src/cpp/common/completion_queue_cc.cc",
"src/cpp/common/core_codegen.cc",
- "src/cpp/common/health_check_service_server_builder_option.cc",
"src/cpp/common/resource_quota_cc.cc",
"src/cpp/common/rpc_method.cc",
"src/cpp/common/version_cc.cc",
@@ -7735,6 +7734,7 @@
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/dynamic_thread_pool.h",
"src/cpp/server/health_check_service.cc",
+ "src/cpp/server/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index a57ed0e2e53..4af3454e39a 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -399,8 +399,6 @@
-
-
@@ -417,6 +415,8 @@
+
+
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index e455636abe2..17ea98381a0 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -58,9 +58,6 @@
src\cpp\common
-
- src\cpp\common
-
src\cpp\common
@@ -85,6 +82,9 @@
src\cpp\server
+
+ src\cpp\server
+
src\cpp\server
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index 10c9be33399..060f2818e32 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -385,8 +385,6 @@
-
-
@@ -403,6 +401,8 @@
+
+
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 0b65ff3fe81..8aa4a77d400 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -43,9 +43,6 @@
src\cpp\common
-
- src\cpp\common
-
src\cpp\common
@@ -70,6 +67,9 @@
src\cpp\server
+
+ src\cpp\server
+
src\cpp\server
From 6d0fbfaf7b887ed96defc46f96fd1e7d5b4875b9 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 6 Dec 2016 16:49:04 -0800
Subject: [PATCH 06/95] WIP
---
.../server/default_health_check_service.cc | 29 ++++++++++---------
src/cpp/server/default_health_check_service.h | 25 ++++++++--------
...lth_check_service_server_builder_option.cc | 4 +--
src/cpp/server/server_cc.cc | 25 ++++++----------
4 files changed, 39 insertions(+), 44 deletions(-)
diff --git a/src/cpp/server/default_health_check_service.cc b/src/cpp/server/default_health_check_service.cc
index 45f51a97b6f..704243e8314 100644
--- a/src/cpp/server/default_health_check_service.cc
+++ b/src/cpp/server/default_health_check_service.cc
@@ -31,6 +31,10 @@
*
*/
+#include
+
+#include
+
#include "src/cpp/server/default_health_check_service.h"
namespace grpc {
@@ -40,43 +44,42 @@ const char kHealthCheckMethodName[] = "/grpc.health.v1.Health/Check";
} // namespace
-SyncHealthCheckServiceImpl::SyncHealthCheckServiceImpl(
- DefaultHealthCheckService* service)
+DefaultHealthCheckService::SyncHealthCheckServiceImpl::
+ SyncHealthCheckServiceImpl(DefaultHealthCheckService* service)
: service_(service) {
auto* handler =
new RpcMethodHandler(
std::mem_fn(&SyncHealthCheckServiceImpl::Check), this);
auto* method = new RpcServiceMethod(kHealthCheckMethodName,
RpcMethod::NORMAL_RPC, handler);
- AddMethod(mehtod);
+ AddMethod(method);
}
-Status SyncHealthCheckServiceImpl::Check(ServerContext* context,
- const ByteBuffer* request,
- ByteBuffer* response) {
+Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
+ ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
// TODO nanopb
return Status::OK;
}
DefaultHealthCheckService::DefaultHealthCheckService() {
- services_map_.insert("", true);
+ services_map_.emplace("", true);
}
void DefaultHealthCheckService::SetServingStatus(
- const grpc::string& service_name, bool serving) override {
+ const grpc::string& service_name, bool serving) {
std::lock_guard lock(mu_);
services_map_[service_name] = serving;
}
-void SetServingStatus(bool serving) override {
+void DefaultHealthCheckService::SetServingStatus(bool serving) {
std::lock_guard lock(mu_);
- for (auto& iter = services_map_.begin(); iter != services_map_.end();
- ++iter) {
+ for (auto iter = services_map_.begin(); iter != services_map_.end(); ++iter) {
iter->second = serving;
}
}
-ServingStatus GetServingStatus(const grpc::string& service_name) const {
+DefaultHealthCheckService::ServingStatus
+DefaultHealthCheckService::GetServingStatus(const grpc::string& service_name) {
std::lock_guard lock(mu_);
const auto& iter = services_map_.find(service_name);
if (iter == services_map_.end()) {
@@ -86,5 +89,3 @@ ServingStatus GetServingStatus(const grpc::string& service_name) const {
}
} // namespace grpc
-
-#endif // GRPC_INTERNAL_CPP_SERVER_DEFAULT_HEALTH_CHECK_SERVICE_H
diff --git a/src/cpp/server/default_health_check_service.h b/src/cpp/server/default_health_check_service.h
index a2545c50e75..23ee1cb7dc3 100644
--- a/src/cpp/server/default_health_check_service.h
+++ b/src/cpp/server/default_health_check_service.h
@@ -37,29 +37,30 @@
#include
#include
-#include
+#include
+#include
namespace grpc {
-class SyncHealthCheckServiceImpl : public Service {
- public:
- explicit SyncHealthCheckServiceImpl(DefaultHealthCheckService* service);
- Status Check(ServerContext* context, const ByteBuffer* request,
- ByteBuffer* response);
-
- private:
- const DefaultHealthCheckService* service_;
-};
-
// Default implementation of HealthCheckServiceInterface. Server will create and
// own it.
class DefaultHealthCheckService : public HealthCheckServiceInterface {
public:
+ class SyncHealthCheckServiceImpl : public Service {
+ public:
+ explicit SyncHealthCheckServiceImpl(DefaultHealthCheckService* service);
+ Status Check(ServerContext* context, const ByteBuffer* request,
+ ByteBuffer* response);
+
+ private:
+ const DefaultHealthCheckService* service_;
+ };
+
DefaultHealthCheckService();
void SetServingStatus(const grpc::string& service_name, bool serving) final;
void SetServingStatus(bool serving) final;
enum ServingStatus { NOT_FOUND, SERVING, NOT_SERVING };
- ServingStatus GetServingStatus(const grpc::string& service_name) const;
+ ServingStatus GetServingStatus(const grpc::string& service_name);
SyncHealthCheckServiceImpl* GetSyncHealthCheckService() const {
return sync_service_.get();
}
diff --git a/src/cpp/server/health_check_service_server_builder_option.cc b/src/cpp/server/health_check_service_server_builder_option.cc
index 80004b77fae..6680bed2e2b 100644
--- a/src/cpp/server/health_check_service_server_builder_option.cc
+++ b/src/cpp/server/health_check_service_server_builder_option.cc
@@ -40,11 +40,11 @@ HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
: hc_(std::move(hc)) {}
// Hand over hc_ to the server.
void HealthCheckServiceServerBuilderOption::UpdateArguments(
- ChannelArguments* args) override {
+ ChannelArguments* args) {
args->SetPointer(kDefaultHealthCheckServiceInterfaceArg, hc_.release());
}
void HealthCheckServiceServerBuilderOption::UpdatePlugins(
- std::vector>* plugins) override {}
+ std::vector>* plugins) {}
} // namespace grpc
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 03210883bfe..4eaafeabb89 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -36,7 +36,6 @@
#include
#include
-#include
#include
#include
#include
@@ -307,15 +306,6 @@ class Server::SyncRequestThreadManager : public ThreadManager {
sync_requests_.emplace_back(new SyncRequest(method, tag));
}
- void AddHealthCheckSyncMethod() {
- if (!sync_requests_.empty()) {
- health_check_.reset(
- new RpcServiceMethod("???", RpcMethod::NORMAL_RPC, new XXXHandler));
- sync_requests_.emplace_back(
- new SyncRequest(health_check_.get(), nullptr));
- }
- }
-
void AddUnknownSyncMethod() {
if (!sync_requests_.empty()) {
unknown_method_.reset(new RpcServiceMethod(
@@ -390,10 +380,11 @@ Server::Server(
for (size_t i = 0; i < channel_args.num_args; i++) {
if (0 == strcmp(channel_args.args[i].key,
kDefaultHealthCheckServiceInterfaceArg)) {
- if (channel_args.args[i].value == nullptr) {
- health_check_service_disabled_ = true;
+ if (channel_args.args[i].value.pointer.p == nullptr) {
+ health_check_service_disabled = true;
} else {
- health_check_service_.reset(channel_args.args[i].value);
+ health_check_service_.reset(static_cast(
+ channel_args.args[i].value.pointer.p));
}
break;
}
@@ -401,10 +392,12 @@ Server::Server(
// Only create default health check service when user did not provide an
// explicit one.
if (health_check_service_ == nullptr && !health_check_service_disabled &&
- EnableDefaultHealthCheckService()) {
- health_check_service_.reset(new DefaultHealthCheckService);
+ DefaultHealthCheckServiceEnabled()) {
+ auto* default_hc_service = new DefaultHealthCheckService;
+ health_check_service_.reset(default_hc_service);
if (!sync_server_cqs->empty()) { // Has sync methods.
- RegisterService(health_check_service_->GetSyncHealthCheckService());
+ grpc::string host;
+ RegisterService(&host, default_hc_service->GetSyncHealthCheckService());
}
}
From c8a49d29560be146bb81f421b8dd646c7f4a4f46 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Mon, 12 Dec 2016 11:18:49 -0800
Subject: [PATCH 07/95] codegen health proto
---
Makefile | 43 ++++---
build.yaml | 1 +
.../generated/sources_and_headers.json | 25 +---
.../vcxproj/benchmark/benchmark.vcxproj | 48 +------
.../benchmark/benchmark.vcxproj.filters | 118 ------------------
.../grpc++_test_util/grpc++_test_util.vcxproj | 8 ++
.../grpc++_test_util.vcxproj.filters | 9 ++
7 files changed, 45 insertions(+), 207 deletions(-)
diff --git a/Makefile b/Makefile
index 43ef3c4f068..e9d24906d54 100644
--- a/Makefile
+++ b/Makefile
@@ -2027,6 +2027,21 @@ $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc:
$(Q) mkdir -p $(@D)
$(Q) echo "$(GRPCXX_UNSECURE_PC_FILE)" | tr , '\n' >$@
+ifeq ($(NO_PROTOC),true)
+$(GENDIR)/src/proto/grpc/health/v1/health.pb.cc: protoc_dep_error
+$(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc: protoc_dep_error
+else
+$(GENDIR)/src/proto/grpc/health/v1/health.pb.cc: src/proto/grpc/health/v1/health.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
+ $(E) "[PROTOC] Generating protobuf CC file from $<"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --cpp_out=$(GENDIR) $<
+
+$(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc: src/proto/grpc/health/v1/health.proto $(PROTOBUF_DEP) $(PROTOC_PLUGINS)
+ $(E) "[GRPC] Generating gRPC's protobuf service CC file from $<"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(PROTOC) -Ithird_party/protobuf/src -I. --grpc_out=$(GENDIR) --plugin=protoc-gen-grpc=$(PROTOC_PLUGINS_DIR)/grpc_cpp_plugin $<
+endif
+
ifeq ($(NO_PROTOC),true)
$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc: protoc_dep_error
$(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc: protoc_dep_error
@@ -4556,6 +4571,7 @@ endif
LIBGRPC++_TEST_UTIL_SRC = \
+ $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc \
$(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc \
$(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc \
$(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc \
@@ -4660,13 +4676,13 @@ ifneq ($(NO_DEPS),true)
-include $(LIBGRPC++_TEST_UTIL_OBJS:.o=.dep)
endif
endif
-$(OBJDIR)/$(CONFIG)/test/cpp/end2end/test_service_impl.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
-$(OBJDIR)/$(CONFIG)/test/cpp/util/byte_buffer_proto_helper.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
-$(OBJDIR)/$(CONFIG)/test/cpp/util/create_test_channel.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
-$(OBJDIR)/$(CONFIG)/test/cpp/util/string_ref_helper.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
-$(OBJDIR)/$(CONFIG)/test/cpp/util/subprocess.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
-$(OBJDIR)/$(CONFIG)/test/cpp/util/test_credentials_provider.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
-$(OBJDIR)/$(CONFIG)/src/cpp/codegen/codegen_init.o: $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/end2end/test_service_impl.o: $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/util/byte_buffer_proto_helper.o: $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/util/create_test_channel.o: $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/util/string_ref_helper.o: $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/util/subprocess.o: $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/test/cpp/util/test_credentials_provider.o: $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
+$(OBJDIR)/$(CONFIG)/src/cpp/codegen/codegen_init.o: $(GENDIR)/src/proto/grpc/health/v1/health.pb.cc $(GENDIR)/src/proto/grpc/health/v1/health.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.pb.cc $(GENDIR)/src/proto/grpc/testing/echo_messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.pb.cc $(GENDIR)/src/proto/grpc/testing/echo.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.pb.cc $(GENDIR)/src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.cc
LIBGRPC++_UNSECURE_SRC = \
@@ -7014,19 +7030,6 @@ endif
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 += \
diff --git a/build.yaml b/build.yaml
index f02142717d6..54635fe3695 100644
--- a/build.yaml
+++ b/build.yaml
@@ -1124,6 +1124,7 @@ libs:
- test/cpp/util/subprocess.h
- test/cpp/util/test_credentials_provider.h
src:
+ - src/proto/grpc/health/v1/health.proto
- src/proto/grpc/testing/echo_messages.proto
- src/proto/grpc/testing/echo.proto
- src/proto/grpc/testing/duplicate/echo_duplicate.proto
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 84fc1ad3b18..02d03bd6169 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -5246,6 +5246,8 @@
"thrift_util"
],
"headers": [
+ "src/proto/grpc/health/v1/health.grpc.pb.h",
+ "src/proto/grpc/health/v1/health.pb.h",
"src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h",
"src/proto/grpc/testing/duplicate/echo_duplicate.pb.h",
"src/proto/grpc/testing/echo.grpc.pb.h",
@@ -6206,28 +6208,7 @@
},
{
"deps": [],
- "headers": [
- "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"
- ],
+ "headers": [],
"is_filegroup": false,
"language": "c++",
"name": "benchmark",
diff --git a/vsprojects/vcxproj/benchmark/benchmark.vcxproj b/vsprojects/vcxproj/benchmark/benchmark.vcxproj
index 9f262b3b00c..811317595f4 100644
--- a/vsprojects/vcxproj/benchmark/benchmark.vcxproj
+++ b/vsprojects/vcxproj/benchmark/benchmark.vcxproj
@@ -147,53 +147,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters b/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters
index ccc9ca2cae7..00e4276f1d4 100644
--- a/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters
+++ b/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters
@@ -1,125 +1,7 @@
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
-
-
- third_party\benchmark\include\benchmark
-
-
- third_party\benchmark\include\benchmark
-
-
- third_party\benchmark\include\benchmark
-
-
- third_party\benchmark\include\benchmark
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
- third_party\benchmark\src
-
-
-
- {7b593518-9fee-107e-6b64-24bdce73f939}
-
-
- {f0d35de1-6b41-778d-0ba0-faad514fb0f4}
-
-
- {cbc02dfa-face-8cc6-0efb-efacc0c3369c}
-
-
- {4f2f03fc-b82d-df33-63ee-bedebeb2c0ee}
-
-
- {f42a8e0a-5a76-0e6f-d708-f0306858f673}
-
diff --git a/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj b/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj
index d2305b2e255..49333b0951a 100644
--- a/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj
+++ b/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj
@@ -206,6 +206,14 @@
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj.filters b/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj.filters
index d1aaba70926..9a9c05b99b1 100644
--- a/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_test_util/grpc++_test_util.vcxproj.filters
@@ -1,6 +1,9 @@
+
+ src\proto\grpc\health\v1
+
src\proto\grpc\testing
@@ -242,6 +245,12 @@
{f3daac52-2bfd-362e-9a76-04cd7a90aa34}
+
+ {d2393dd7-6f95-0e70-c36d-cd8ef8e2f17e}
+
+
+ {f2f10901-f74f-a55a-abea-082923feb664}
+
{3df5f11f-e018-1126-8c22-291540035aa8}
From ad327642192363808c378b775ddcd34b86294443 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Mon, 12 Dec 2016 14:32:09 -0800
Subject: [PATCH 08/95] sync test pass
---
Makefile | 48 ++++
build.yaml | 13 ++
include/grpc++/server.h | 1 +
.../server/default_health_check_service.cc | 7 +-
src/cpp/server/server_cc.cc | 29 +--
.../end2end/health_service_end2end_test.cc | 158 +++++++++++++
.../generated/sources_and_headers.json | 19 ++
tools/run_tests/generated/tests.json | 22 ++
.../health_service_end2end_test.vcxproj | 207 ++++++++++++++++++
...ealth_service_end2end_test.vcxproj.filters | 21 ++
10 files changed, 509 insertions(+), 16 deletions(-)
create mode 100644 test/cpp/end2end/health_service_end2end_test.cc
create mode 100644 vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj.filters
diff --git a/Makefile b/Makefile
index e9d24906d54..6c7a0c15187 100644
--- a/Makefile
+++ b/Makefile
@@ -1085,6 +1085,7 @@ grpc_ruby_plugin: $(BINDIR)/$(CONFIG)/grpc_ruby_plugin
grpc_tool_test: $(BINDIR)/$(CONFIG)/grpc_tool_test
grpclb_api_test: $(BINDIR)/$(CONFIG)/grpclb_api_test
grpclb_test: $(BINDIR)/$(CONFIG)/grpclb_test
+health_service_end2end_test: $(BINDIR)/$(CONFIG)/health_service_end2end_test
hybrid_end2end_test: $(BINDIR)/$(CONFIG)/hybrid_end2end_test
interop_client: $(BINDIR)/$(CONFIG)/interop_client
interop_server: $(BINDIR)/$(CONFIG)/interop_server
@@ -1467,6 +1468,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/grpc_tool_test \
$(BINDIR)/$(CONFIG)/grpclb_api_test \
$(BINDIR)/$(CONFIG)/grpclb_test \
+ $(BINDIR)/$(CONFIG)/health_service_end2end_test \
$(BINDIR)/$(CONFIG)/hybrid_end2end_test \
$(BINDIR)/$(CONFIG)/interop_client \
$(BINDIR)/$(CONFIG)/interop_server \
@@ -1560,6 +1562,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/grpc_tool_test \
$(BINDIR)/$(CONFIG)/grpclb_api_test \
$(BINDIR)/$(CONFIG)/grpclb_test \
+ $(BINDIR)/$(CONFIG)/health_service_end2end_test \
$(BINDIR)/$(CONFIG)/hybrid_end2end_test \
$(BINDIR)/$(CONFIG)/interop_client \
$(BINDIR)/$(CONFIG)/interop_server \
@@ -1883,6 +1886,8 @@ test_cxx: buildtests_cxx
$(Q) $(BINDIR)/$(CONFIG)/grpclb_api_test || ( echo test grpclb_api_test failed ; exit 1 )
$(E) "[RUN] Testing grpclb_test"
$(Q) $(BINDIR)/$(CONFIG)/grpclb_test || ( echo test grpclb_test failed ; exit 1 )
+ $(E) "[RUN] Testing health_service_end2end_test"
+ $(Q) $(BINDIR)/$(CONFIG)/health_service_end2end_test || ( echo test health_service_end2end_test failed ; exit 1 )
$(E) "[RUN] Testing hybrid_end2end_test"
$(Q) $(BINDIR)/$(CONFIG)/hybrid_end2end_test || ( echo test hybrid_end2end_test failed ; exit 1 )
$(E) "[RUN] Testing interop_test"
@@ -12906,6 +12911,49 @@ endif
$(OBJDIR)/$(CONFIG)/test/cpp/grpclb/grpclb_test.o: $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.pb.cc $(GENDIR)/src/proto/grpc/lb/v1/load_balancer.grpc.pb.cc
+HEALTH_SERVICE_END2END_TEST_SRC = \
+ test/cpp/end2end/health_service_end2end_test.cc \
+
+HEALTH_SERVICE_END2END_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(HEALTH_SERVICE_END2END_TEST_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/health_service_end2end_test: openssl_dep_error
+
+else
+
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/health_service_end2end_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/health_service_end2end_test: $(PROTOBUF_DEP) $(HEALTH_SERVICE_END2END_TEST_OBJS) $(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) $(HEALTH_SERVICE_END2END_TEST_OBJS) $(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)/health_service_end2end_test
+
+endif
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/cpp/end2end/health_service_end2end_test.o: $(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_health_service_end2end_test: $(HEALTH_SERVICE_END2END_TEST_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(HEALTH_SERVICE_END2END_TEST_OBJS:.o=.dep)
+endif
+endif
+
+
HYBRID_END2END_TEST_SRC = \
test/cpp/end2end/hybrid_end2end_test.cc \
diff --git a/build.yaml b/build.yaml
index 54635fe3695..8be83187b1d 100644
--- a/build.yaml
+++ b/build.yaml
@@ -3192,6 +3192,19 @@ targets:
- grpc++
- grpc++_test_util
- grpc_test_util
+- name: health_service_end2end_test
+ gtest: true
+ build: test
+ language: c++
+ src:
+ - test/cpp/end2end/health_service_end2end_test.cc
+ deps:
+ - grpc++_test_util
+ - grpc_test_util
+ - grpc++
+ - grpc
+ - gpr_test_util
+ - gpr
- name: hybrid_end2end_test
gtest: true
build: test
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index dc97a0ec4c7..e3e9174c9c2 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -219,6 +219,7 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
std::unique_ptr server_initializer_;
std::unique_ptr health_check_service_;
+ bool health_check_service_disabled_;
};
} // namespace grpc
diff --git a/src/cpp/server/default_health_check_service.cc b/src/cpp/server/default_health_check_service.cc
index 704243e8314..ae10ec92c6e 100644
--- a/src/cpp/server/default_health_check_service.cc
+++ b/src/cpp/server/default_health_check_service.cc
@@ -31,9 +31,11 @@
*
*/
+#include
#include
#include
+#include
#include "src/cpp/server/default_health_check_service.h"
@@ -57,11 +59,12 @@ DefaultHealthCheckService::SyncHealthCheckServiceImpl::
Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
- // TODO nanopb
+ // TODO nanopb part
return Status::OK;
}
-DefaultHealthCheckService::DefaultHealthCheckService() {
+DefaultHealthCheckService::DefaultHealthCheckService()
+ : sync_service_(new SyncHealthCheckServiceImpl(this)) {
services_map_.emplace("", true);
}
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 4eaafeabb89..b8558cfc3de 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -360,7 +360,8 @@ Server::Server(
shutdown_notified_(false),
has_generic_service_(false),
server_(nullptr),
- server_initializer_(new ServerInitializer(this)) {
+ server_initializer_(new ServerInitializer(this)),
+ health_check_service_disabled_(false) {
g_gli_initializer.summon();
gpr_once_init(&g_once_init_callbacks, InitGlobalCallbacks);
global_callbacks_ = g_callbacks;
@@ -376,12 +377,11 @@ Server::Server(
grpc_channel_args channel_args;
args->SetChannelArgs(&channel_args);
- bool health_check_service_disabled = false;
for (size_t i = 0; i < channel_args.num_args; i++) {
if (0 == strcmp(channel_args.args[i].key,
kDefaultHealthCheckServiceInterfaceArg)) {
if (channel_args.args[i].value.pointer.p == nullptr) {
- health_check_service_disabled = true;
+ health_check_service_disabled_ = true;
} else {
health_check_service_.reset(static_cast(
channel_args.args[i].value.pointer.p));
@@ -389,17 +389,6 @@ Server::Server(
break;
}
}
- // Only create default health check service when user did not provide an
- // explicit one.
- if (health_check_service_ == nullptr && !health_check_service_disabled &&
- DefaultHealthCheckServiceEnabled()) {
- auto* default_hc_service = new DefaultHealthCheckService;
- health_check_service_.reset(default_hc_service);
- if (!sync_server_cqs->empty()) { // Has sync methods.
- grpc::string host;
- RegisterService(&host, default_hc_service->GetSyncHealthCheckService());
- }
- }
server_ = grpc_server_create(&channel_args, nullptr);
}
@@ -506,6 +495,18 @@ int Server::AddListeningPort(const grpc::string& addr,
bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
GPR_ASSERT(!started_);
started_ = true;
+
+ // Only create default health check service when user did not provide an
+ // explicit one.
+ if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
+ DefaultHealthCheckServiceEnabled()) {
+ auto* default_hc_service = new DefaultHealthCheckService;
+ health_check_service_.reset(default_hc_service);
+ if (!sync_server_cqs_->empty()) { // Has sync methods.
+ RegisterService(nullptr, default_hc_service->GetSyncHealthCheckService());
+ }
+ }
+
grpc_server_start(server_);
if (!has_generic_service_) {
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
new file mode 100644
index 00000000000..17e8c4b7615
--- /dev/null
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -0,0 +1,158 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "src/proto/grpc/health/v1/health.grpc.pb.h"
+#include "src/proto/grpc/testing/duplicate/echo_duplicate.grpc.pb.h"
+#include "src/proto/grpc/testing/echo.grpc.pb.h"
+#include "test/core/util/port.h"
+#include "test/core/util/test_config.h"
+#include "test/cpp/end2end/test_service_impl.h"
+
+using grpc::health::v1::Health;
+using grpc::health::v1::HealthCheckRequest;
+using grpc::health::v1::HealthCheckResponse;
+
+namespace grpc {
+namespace testing {
+namespace {
+
+class HealthServiceEnd2endTest : public ::testing::Test {
+ protected:
+ HealthServiceEnd2endTest() {}
+
+ void SetUpServer(grpc::Service* explicit_health_service) {
+ int port = grpc_pick_unused_port_or_die();
+ server_address_ << "localhost:" << port;
+
+ // Setup server
+ ServerBuilder builder;
+ builder.AddListeningPort(server_address_.str(),
+ grpc::InsecureServerCredentials());
+ // Register a sync service.
+ builder.RegisterService(&echo_test_service_);
+ server_ = builder.BuildAndStart();
+ }
+
+ void TearDown() override {
+ if (server_) {
+ server_->Shutdown();
+ }
+ }
+
+ void ResetStubs() {
+ std::shared_ptr channel =
+ CreateChannel(server_address_.str(), InsecureChannelCredentials());
+ stub_ = grpc::testing::EchoTestService::NewStub(channel);
+ hc_stub_ = grpc::health::v1::Health::NewStub(channel);
+ }
+
+ void SendHealthCheckRpc(
+ const grpc::string& service_name, const Status& expected_status,
+ HealthCheckResponse::ServingStatus expected_serving_status) {
+ HealthCheckRequest request;
+ request.set_service(service_name);
+ HealthCheckResponse response;
+ ClientContext context;
+ Status s = hc_stub_->Check(&context, request, &response);
+ EXPECT_EQ(expected_status.error_code(), s.error_code());
+ // EXPECT_EQ(expected_status.error_details(), s.error_details());
+ if (s.ok()) {
+ EXPECT_EQ(expected_serving_status, response.status());
+ }
+ }
+
+ TestServiceImpl echo_test_service_;
+ std::unique_ptr stub_;
+ std::unique_ptr hc_stub_;
+ std::unique_ptr server_;
+ std::ostringstream server_address_;
+};
+
+TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceDisabled) {
+ EnableDefaultHealthCheckService(false);
+ EXPECT_FALSE(DefaultHealthCheckServiceEnabled());
+ SetUpServer(nullptr);
+ HealthCheckServiceInterface* default_service =
+ server_->GetHealthCheckService();
+ EXPECT_TRUE(default_service == nullptr);
+}
+
+TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ SetUpServer(nullptr);
+ HealthCheckServiceInterface* default_service =
+ server_->GetHealthCheckService();
+ EXPECT_TRUE(default_service != nullptr);
+ const grpc::string kHealthyService("healthy_service");
+ const grpc::string kUnhealthyService("unhealthy_service");
+ default_service->SetServingStatus(kHealthyService, true);
+ default_service->SetServingStatus(kUnhealthyService, false);
+
+ ResetStubs();
+
+ SendHealthCheckRpc("", Status::OK, HealthCheckResponse::SERVING);
+ SendHealthCheckRpc(kHealthyService, Status::OK, HealthCheckResponse::SERVING);
+ SendHealthCheckRpc(kUnhealthyService, Status::OK,
+ HealthCheckResponse::NOT_SERVING);
+
+ default_service->SetServingStatus(false);
+ SendHealthCheckRpc("", Status::OK, HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kHealthyService, Status::OK,
+ HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kUnhealthyService, Status::OK,
+ HealthCheckResponse::NOT_SERVING);
+}
+
+} // namespace
+} // namespace testing
+} // namespace grpc
+
+int main(int argc, char** argv) {
+ grpc_test_init(argc, argv);
+ ::testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();
+}
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 02d03bd6169..9366e3366be 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -2772,6 +2772,25 @@
"third_party": false,
"type": "target"
},
+ {
+ "deps": [
+ "gpr",
+ "gpr_test_util",
+ "grpc",
+ "grpc++",
+ "grpc++_test_util",
+ "grpc_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "health_service_end2end_test",
+ "src": [
+ "test/cpp/end2end/health_service_end2end_test.cc"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
{
"deps": [
"gpr",
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index b76263b8b98..1cd04ea5dd9 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -2805,6 +2805,28 @@
"windows"
]
},
+ {
+ "args": [],
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": true,
+ "language": "c++",
+ "name": "health_service_end2end_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
{
"args": [],
"ci_platforms": [
diff --git a/vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj b/vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj
new file mode 100644
index 00000000000..28530d07b53
--- /dev/null
+++ b/vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj
@@ -0,0 +1,207 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {3EB2B3E9-8BC3-8DF7-82CB-38462FFE5919}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ health_service_end2end_test
+ static
+ Debug
+ static
+ Debug
+
+
+ health_service_end2end_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ true
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ true
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ true
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ true
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {0BE77741-552A-929B-A497-4EF7ECE17A64}
+
+
+ {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+
+
+ {C187A093-A0FE-489D-A40A-6E33DE0F9FEB}
+
+
+ {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+
+
+ {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+
+
+ {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj.filters b/vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj.filters
new file mode 100644
index 00000000000..cccf9682869
--- /dev/null
+++ b/vsprojects/vcxproj/test/health_service_end2end_test/health_service_end2end_test.vcxproj.filters
@@ -0,0 +1,21 @@
+
+
+
+
+ test\cpp\end2end
+
+
+
+
+
+ {00d750b2-db02-2106-d9b7-1d3b2ca58604}
+
+
+ {02e29b2f-d68a-4474-8483-621ecfd7fa9d}
+
+
+ {b0de697a-d73a-23e1-c9af-fa0edf011d4d}
+
+
+
+
From fbbb0d707fa8b8cd9b1fe373c6b196dc729c1601 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Mon, 12 Dec 2016 21:24:10 -0800
Subject: [PATCH 09/95] generated nanopb files, need to update build.yaml and
maybe move them to a sub-dir
---
.../server/default_health_check_service.cc | 4 +-
src/cpp/server/health.pb.c | 62 +++++++++++
src/cpp/server/health.pb.h | 104 ++++++++++++++++++
src/proto/grpc/health/v1/health.options | 1 +
4 files changed, 170 insertions(+), 1 deletion(-)
create mode 100644 src/cpp/server/health.pb.c
create mode 100644 src/cpp/server/health.pb.h
create mode 100644 src/proto/grpc/health/v1/health.options
diff --git a/src/cpp/server/default_health_check_service.cc b/src/cpp/server/default_health_check_service.cc
index ae10ec92c6e..1bd5973e47c 100644
--- a/src/cpp/server/default_health_check_service.cc
+++ b/src/cpp/server/default_health_check_service.cc
@@ -38,6 +38,8 @@
#include
#include "src/cpp/server/default_health_check_service.h"
+#include "third_party/nanopb/pb_encode.h"
+#include "third_party/nanopb/pb_decode.h"
namespace grpc {
namespace {
@@ -59,7 +61,7 @@ DefaultHealthCheckService::SyncHealthCheckServiceImpl::
Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
- // TODO nanopb part
+
return Status::OK;
}
diff --git a/src/cpp/server/health.pb.c b/src/cpp/server/health.pb.c
new file mode 100644
index 00000000000..cfd06b496ff
--- /dev/null
+++ b/src/cpp/server/health.pb.c
@@ -0,0 +1,62 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+/* Automatically generated nanopb constant definitions */
+/* Generated by nanopb-0.3.7-dev */
+
+#include "/usr/local/google/home/yangg/github/grpc/src/cpp/server//health.pb.h"
+
+/* @@protoc_insertion_point(includes) */
+#if PB_PROTO_HEADER_VERSION != 30
+#error Regenerate this file with the current version of nanopb generator.
+#endif
+
+
+
+const pb_field_t grpc_health_v1_HealthCheckRequest_fields[2] = {
+ PB_FIELD( 1, STRING , OPTIONAL, STATIC , FIRST, grpc_health_v1_HealthCheckRequest, service, service, 0),
+ PB_LAST_FIELD
+};
+
+const pb_field_t grpc_health_v1_HealthCheckResponse_fields[2] = {
+ PB_FIELD( 1, UENUM , OPTIONAL, STATIC , FIRST, grpc_health_v1_HealthCheckResponse, status, status, 0),
+ PB_LAST_FIELD
+};
+
+
+/* Check that field information fits in pb_field_t */
+#if !defined(PB_FIELD_16BIT) && !defined(PB_FIELD_32BIT)
+#error Field descriptor for grpc_health_v1_HealthCheckRequest.service is too large. Define PB_FIELD_16BIT to fix this.
+#endif
+
+
+/* @@protoc_insertion_point(eof) */
diff --git a/src/cpp/server/health.pb.h b/src/cpp/server/health.pb.h
new file mode 100644
index 00000000000..5782b9c1984
--- /dev/null
+++ b/src/cpp/server/health.pb.h
@@ -0,0 +1,104 @@
+/*
+ *
+ * Copyright 2016, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+/* Automatically generated nanopb header */
+/* Generated by nanopb-0.3.7-dev */
+
+#ifndef PB_GRPC_HEALTH_V1_HEALTH_PB_H_INCLUDED
+#define PB_GRPC_HEALTH_V1_HEALTH_PB_H_INCLUDED
+#include "third_party/nanopb/pb.h"
+/* @@protoc_insertion_point(includes) */
+#if PB_PROTO_HEADER_VERSION != 30
+#error Regenerate this file with the current version of nanopb generator.
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Enum definitions */
+typedef enum _grpc_health_v1_HealthCheckResponse_ServingStatus {
+ grpc_health_v1_HealthCheckResponse_ServingStatus_UNKNOWN = 0,
+ grpc_health_v1_HealthCheckResponse_ServingStatus_SERVING = 1,
+ grpc_health_v1_HealthCheckResponse_ServingStatus_NOT_SERVING = 2
+} grpc_health_v1_HealthCheckResponse_ServingStatus;
+#define _grpc_health_v1_HealthCheckResponse_ServingStatus_MIN grpc_health_v1_HealthCheckResponse_ServingStatus_UNKNOWN
+#define _grpc_health_v1_HealthCheckResponse_ServingStatus_MAX grpc_health_v1_HealthCheckResponse_ServingStatus_NOT_SERVING
+#define _grpc_health_v1_HealthCheckResponse_ServingStatus_ARRAYSIZE ((grpc_health_v1_HealthCheckResponse_ServingStatus)(grpc_health_v1_HealthCheckResponse_ServingStatus_NOT_SERVING+1))
+
+/* Struct definitions */
+typedef struct _grpc_health_v1_HealthCheckRequest {
+ bool has_service;
+ char service[2048];
+/* @@protoc_insertion_point(struct:grpc_health_v1_HealthCheckRequest) */
+} grpc_health_v1_HealthCheckRequest;
+
+typedef struct _grpc_health_v1_HealthCheckResponse {
+ bool has_status;
+ grpc_health_v1_HealthCheckResponse_ServingStatus status;
+/* @@protoc_insertion_point(struct:grpc_health_v1_HealthCheckResponse) */
+} grpc_health_v1_HealthCheckResponse;
+
+/* Default values for struct fields */
+
+/* Initializer values for message structs */
+#define grpc_health_v1_HealthCheckRequest_init_default {false, ""}
+#define grpc_health_v1_HealthCheckResponse_init_default {false, (grpc_health_v1_HealthCheckResponse_ServingStatus)0}
+#define grpc_health_v1_HealthCheckRequest_init_zero {false, ""}
+#define grpc_health_v1_HealthCheckResponse_init_zero {false, (grpc_health_v1_HealthCheckResponse_ServingStatus)0}
+
+/* Field tags (for use in manual encoding/decoding) */
+#define grpc_health_v1_HealthCheckRequest_service_tag 1
+#define grpc_health_v1_HealthCheckResponse_status_tag 1
+
+/* Struct field encoding specification for nanopb */
+extern const pb_field_t grpc_health_v1_HealthCheckRequest_fields[2];
+extern const pb_field_t grpc_health_v1_HealthCheckResponse_fields[2];
+
+/* Maximum encoded size of messages (where known) */
+#define grpc_health_v1_HealthCheckRequest_size 2051
+#define grpc_health_v1_HealthCheckResponse_size 2
+
+/* Message IDs (where set with "msgid" option) */
+#ifdef PB_MSGID
+
+#define HEALTH_MESSAGES \
+
+
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+/* @@protoc_insertion_point(eof) */
+
+#endif
diff --git a/src/proto/grpc/health/v1/health.options b/src/proto/grpc/health/v1/health.options
new file mode 100644
index 00000000000..139cf2bb52b
--- /dev/null
+++ b/src/proto/grpc/health/v1/health.options
@@ -0,0 +1 @@
+grpc.health.v1.HealthCheckRequest.service max_size:2048
From c3c475fd144b3d43a775b569dad36610014e08e4 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 27 Dec 2016 10:37:26 -0800
Subject: [PATCH 10/95] move files to subdir and add generated files
---
BUILD | 30 +++--
CMakeLists.txt | 21 ++--
Makefile | 34 +++--
build.yaml | 10 +-
.../default_health_check_service.cc | 2 +-
.../default_health_check_service.h | 0
src/cpp/server/{ => health}/health.pb.c | 0
src/cpp/server/{ => health}/health.pb.h | 0
.../{ => health}/health_check_service.cc | 0
...lth_check_service_server_builder_option.cc | 0
src/cpp/server/server_cc.cc | 2 +-
tools/doxygen/Doxyfile.c++.internal | 10 +-
.../generated/sources_and_headers.json | 36 +++++-
.../vcxproj/benchmark/benchmark.vcxproj | 48 ++++++-
.../benchmark/benchmark.vcxproj.filters | 118 ++++++++++++++++++
vsprojects/vcxproj/grpc++/grpc++.vcxproj | 13 +-
.../vcxproj/grpc++/grpc++.vcxproj.filters | 29 +++--
.../grpc++_unsecure/grpc++_unsecure.vcxproj | 13 +-
.../grpc++_unsecure.vcxproj.filters | 29 +++--
19 files changed, 318 insertions(+), 77 deletions(-)
rename src/cpp/server/{ => health}/default_health_check_service.cc (98%)
rename src/cpp/server/{ => health}/default_health_check_service.h (100%)
rename src/cpp/server/{ => health}/health.pb.c (100%)
rename src/cpp/server/{ => health}/health.pb.h (100%)
rename src/cpp/server/{ => health}/health_check_service.cc (100%)
rename src/cpp/server/{ => health}/health_check_service_server_builder_option.cc (100%)
diff --git a/BUILD b/BUILD
index 6e786607ccc..c680232d247 100644
--- a/BUILD
+++ b/BUILD
@@ -1374,8 +1374,9 @@ cc_library(
"src/cpp/server/secure_server_credentials.h",
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
- "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
+ "src/cpp/server/health/default_health_check_service.h",
+ "src/cpp/server/health/health.pb.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h",
"src/cpp/client/insecure_credentials.cc",
@@ -1402,10 +1403,11 @@ cc_library(
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
- "src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
- "src/cpp/server/health_check_service.cc",
- "src/cpp/server/health_check_service_server_builder_option.cc",
+ "src/cpp/server/health/default_health_check_service.cc",
+ "src/cpp/server/health/health.pb.c",
+ "src/cpp/server/health/health_check_service.cc",
+ "src/cpp/server/health/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@@ -1528,8 +1530,9 @@ cc_library(
srcs = [
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
- "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
+ "src/cpp/server/health/default_health_check_service.h",
+ "src/cpp/server/health/health.pb.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h",
"src/core/ext/transport/chttp2/client/chttp2_connector.h",
@@ -1698,10 +1701,11 @@ cc_library(
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
- "src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
- "src/cpp/server/health_check_service.cc",
- "src/cpp/server/health_check_service_server_builder_option.cc",
+ "src/cpp/server/health/default_health_check_service.cc",
+ "src/cpp/server/health/health.pb.c",
+ "src/cpp/server/health/health_check_service.cc",
+ "src/cpp/server/health/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
@@ -2029,8 +2033,9 @@ cc_library(
srcs = [
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
- "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
+ "src/cpp/server/health/default_health_check_service.h",
+ "src/cpp/server/health/health.pb.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h",
"src/cpp/client/insecure_credentials.cc",
@@ -2052,10 +2057,11 @@ cc_library(
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
- "src/cpp/server/default_health_check_service.cc",
"src/cpp/server/dynamic_thread_pool.cc",
- "src/cpp/server/health_check_service.cc",
- "src/cpp/server/health_check_service_server_builder_option.cc",
+ "src/cpp/server/health/default_health_check_service.cc",
+ "src/cpp/server/health/health.pb.c",
+ "src/cpp/server/health/health_check_service.cc",
+ "src/cpp/server/health/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c32a4aaf960..3f191431793 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1090,10 +1090,11 @@ add_library(grpc++
src/cpp/common/version_cc.cc
src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc
- src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
- src/cpp/server/health_check_service.cc
- src/cpp/server/health_check_service_server_builder_option.cc
+ src/cpp/server/health/default_health_check_service.cc
+ src/cpp/server/health/health.pb.c
+ src/cpp/server/health/health_check_service.cc
+ src/cpp/server/health/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@@ -1253,10 +1254,11 @@ add_library(grpc++_cronet
src/cpp/common/version_cc.cc
src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc
- src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
- src/cpp/server/health_check_service.cc
- src/cpp/server/health_check_service_server_builder_option.cc
+ src/cpp/server/health/default_health_check_service.cc
+ src/cpp/server/health/health.pb.c
+ src/cpp/server/health/health_check_service.cc
+ src/cpp/server/health/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
@@ -1639,10 +1641,11 @@ add_library(grpc++_unsecure
src/cpp/common/version_cc.cc
src/cpp/server/async_generic_service.cc
src/cpp/server/create_default_thread_pool.cc
- src/cpp/server/default_health_check_service.cc
src/cpp/server/dynamic_thread_pool.cc
- src/cpp/server/health_check_service.cc
- src/cpp/server/health_check_service_server_builder_option.cc
+ src/cpp/server/health/default_health_check_service.cc
+ src/cpp/server/health/health.pb.c
+ src/cpp/server/health/health_check_service.cc
+ src/cpp/server/health/health_check_service_server_builder_option.cc
src/cpp/server/server_builder.cc
src/cpp/server/server_cc.cc
src/cpp/server/server_context.cc
diff --git a/Makefile b/Makefile
index 6c7a0c15187..6ee90856493 100644
--- a/Makefile
+++ b/Makefile
@@ -3804,10 +3804,11 @@ LIBGRPC++_SRC = \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
- src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
- src/cpp/server/health_check_service.cc \
- src/cpp/server/health_check_service_server_builder_option.cc \
+ src/cpp/server/health/default_health_check_service.cc \
+ src/cpp/server/health/health.pb.c \
+ src/cpp/server/health/health_check_service.cc \
+ src/cpp/server/health/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@@ -3996,10 +3997,11 @@ LIBGRPC++_CRONET_SRC = \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
- src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
- src/cpp/server/health_check_service.cc \
- src/cpp/server/health_check_service_server_builder_option.cc \
+ src/cpp/server/health/default_health_check_service.cc \
+ src/cpp/server/health/health.pb.c \
+ src/cpp/server/health/health_check_service.cc \
+ src/cpp/server/health/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@@ -4710,10 +4712,11 @@ LIBGRPC++_UNSECURE_SRC = \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
- src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
- src/cpp/server/health_check_service.cc \
- src/cpp/server/health_check_service_server_builder_option.cc \
+ src/cpp/server/health/default_health_check_service.cc \
+ src/cpp/server/health/health.pb.c \
+ src/cpp/server/health/health_check_service.cc \
+ src/cpp/server/health/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
@@ -7035,6 +7038,19 @@ endif
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 += \
diff --git a/build.yaml b/build.yaml
index 8be83187b1d..4a33891e33b 100644
--- a/build.yaml
+++ b/build.yaml
@@ -759,8 +759,9 @@ filegroups:
headers:
- src/cpp/client/create_channel_internal.h
- src/cpp/common/channel_filter.h
- - src/cpp/server/default_health_check_service.h
- src/cpp/server/dynamic_thread_pool.h
+ - src/cpp/server/health/default_health_check_service.h
+ - src/cpp/server/health/health.pb.h
- src/cpp/server/thread_pool_interface.h
- src/cpp/thread_manager/thread_manager.h
src:
@@ -780,10 +781,11 @@ filegroups:
- src/cpp/common/version_cc.cc
- src/cpp/server/async_generic_service.cc
- src/cpp/server/create_default_thread_pool.cc
- - src/cpp/server/default_health_check_service.cc
- src/cpp/server/dynamic_thread_pool.cc
- - src/cpp/server/health_check_service.cc
- - src/cpp/server/health_check_service_server_builder_option.cc
+ - src/cpp/server/health/default_health_check_service.cc
+ - src/cpp/server/health/health.pb.c
+ - src/cpp/server/health/health_check_service.cc
+ - src/cpp/server/health/health_check_service_server_builder_option.cc
- src/cpp/server/server_builder.cc
- src/cpp/server/server_cc.cc
- src/cpp/server/server_context.cc
diff --git a/src/cpp/server/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc
similarity index 98%
rename from src/cpp/server/default_health_check_service.cc
rename to src/cpp/server/health/default_health_check_service.cc
index 1bd5973e47c..bc6087f1caf 100644
--- a/src/cpp/server/default_health_check_service.cc
+++ b/src/cpp/server/health/default_health_check_service.cc
@@ -37,7 +37,7 @@
#include
#include
-#include "src/cpp/server/default_health_check_service.h"
+#include "src/cpp/server/health/default_health_check_service.h"
#include "third_party/nanopb/pb_encode.h"
#include "third_party/nanopb/pb_decode.h"
diff --git a/src/cpp/server/default_health_check_service.h b/src/cpp/server/health/default_health_check_service.h
similarity index 100%
rename from src/cpp/server/default_health_check_service.h
rename to src/cpp/server/health/default_health_check_service.h
diff --git a/src/cpp/server/health.pb.c b/src/cpp/server/health/health.pb.c
similarity index 100%
rename from src/cpp/server/health.pb.c
rename to src/cpp/server/health/health.pb.c
diff --git a/src/cpp/server/health.pb.h b/src/cpp/server/health/health.pb.h
similarity index 100%
rename from src/cpp/server/health.pb.h
rename to src/cpp/server/health/health.pb.h
diff --git a/src/cpp/server/health_check_service.cc b/src/cpp/server/health/health_check_service.cc
similarity index 100%
rename from src/cpp/server/health_check_service.cc
rename to src/cpp/server/health/health_check_service.cc
diff --git a/src/cpp/server/health_check_service_server_builder_option.cc b/src/cpp/server/health/health_check_service_server_builder_option.cc
similarity index 100%
rename from src/cpp/server/health_check_service_server_builder_option.cc
rename to src/cpp/server/health/health_check_service_server_builder_option.cc
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index b8558cfc3de..c50c076bdc5 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -51,7 +51,7 @@
#include
#include "src/core/lib/profiling/timers.h"
-#include "src/cpp/server/default_health_check_service.h"
+#include "src/cpp/server/health/default_health_check_service.h"
#include "src/cpp/thread_manager/thread_manager.h"
namespace grpc {
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index 5e3f2266032..c2dbfb68f98 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -855,8 +855,9 @@ src/cpp/common/secure_auth_context.h \
src/cpp/server/secure_server_credentials.h \
src/cpp/client/create_channel_internal.h \
src/cpp/common/channel_filter.h \
-src/cpp/server/default_health_check_service.h \
src/cpp/server/dynamic_thread_pool.h \
+src/cpp/server/health/default_health_check_service.h \
+src/cpp/server/health/health.pb.h \
src/cpp/server/thread_pool_interface.h \
src/cpp/thread_manager/thread_manager.h \
src/cpp/client/insecure_credentials.cc \
@@ -883,10 +884,11 @@ src/cpp/common/rpc_method.cc \
src/cpp/common/version_cc.cc \
src/cpp/server/async_generic_service.cc \
src/cpp/server/create_default_thread_pool.cc \
-src/cpp/server/default_health_check_service.cc \
src/cpp/server/dynamic_thread_pool.cc \
-src/cpp/server/health_check_service.cc \
-src/cpp/server/health_check_service_server_builder_option.cc \
+src/cpp/server/health/default_health_check_service.cc \
+src/cpp/server/health/health.pb.c \
+src/cpp/server/health/health_check_service.cc \
+src/cpp/server/health/health_check_service_server_builder_option.cc \
src/cpp/server/server_builder.cc \
src/cpp/server/server_cc.cc \
src/cpp/server/server_context.cc \
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 9366e3366be..86986a99a6d 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -6227,7 +6227,28 @@
},
{
"deps": [],
- "headers": [],
+ "headers": [
+ "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",
@@ -7658,8 +7679,9 @@
"include/grpc++/support/time.h",
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
- "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.h",
+ "src/cpp/server/health/default_health_check_service.h",
+ "src/cpp/server/health/health.pb.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h"
],
@@ -7729,12 +7751,14 @@
"src/cpp/common/version_cc.cc",
"src/cpp/server/async_generic_service.cc",
"src/cpp/server/create_default_thread_pool.cc",
- "src/cpp/server/default_health_check_service.cc",
- "src/cpp/server/default_health_check_service.h",
"src/cpp/server/dynamic_thread_pool.cc",
"src/cpp/server/dynamic_thread_pool.h",
- "src/cpp/server/health_check_service.cc",
- "src/cpp/server/health_check_service_server_builder_option.cc",
+ "src/cpp/server/health/default_health_check_service.cc",
+ "src/cpp/server/health/default_health_check_service.h",
+ "src/cpp/server/health/health.pb.c",
+ "src/cpp/server/health/health.pb.h",
+ "src/cpp/server/health/health_check_service.cc",
+ "src/cpp/server/health/health_check_service_server_builder_option.cc",
"src/cpp/server/server_builder.cc",
"src/cpp/server/server_cc.cc",
"src/cpp/server/server_context.cc",
diff --git a/vsprojects/vcxproj/benchmark/benchmark.vcxproj b/vsprojects/vcxproj/benchmark/benchmark.vcxproj
index 811317595f4..9f262b3b00c 100644
--- a/vsprojects/vcxproj/benchmark/benchmark.vcxproj
+++ b/vsprojects/vcxproj/benchmark/benchmark.vcxproj
@@ -147,7 +147,53 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters b/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters
index 00e4276f1d4..ccc9ca2cae7 100644
--- a/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters
+++ b/vsprojects/vcxproj/benchmark/benchmark.vcxproj.filters
@@ -1,7 +1,125 @@
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+
+
+ third_party\benchmark\include\benchmark
+
+
+ third_party\benchmark\include\benchmark
+
+
+ third_party\benchmark\include\benchmark
+
+
+ third_party\benchmark\include\benchmark
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+ third_party\benchmark\src
+
+
+
+ {7b593518-9fee-107e-6b64-24bdce73f939}
+
+
+ {f0d35de1-6b41-778d-0ba0-faad514fb0f4}
+
+
+ {cbc02dfa-face-8cc6-0efb-efacc0c3369c}
+
+
+ {4f2f03fc-b82d-df33-63ee-bedebeb2c0ee}
+
+
+ {f42a8e0a-5a76-0e6f-d708-f0306858f673}
+
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index 4af3454e39a..0f0949cbd11 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -355,8 +355,9 @@
-
+
+
@@ -409,13 +410,15 @@
-
-
-
+
+
+
+
+
-
+
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index 17ea98381a0..fc64c44e083 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -73,17 +73,20 @@
src\cpp\server
-
- src\cpp\server
-
src\cpp\server
-
- src\cpp\server
+
+ src\cpp\server\health
-
- src\cpp\server
+
+ src\cpp\server\health
+
+
+ src\cpp\server\health
+
+
+ src\cpp\server\health
src\cpp\server
@@ -410,12 +413,15 @@
src\cpp\common
-
- src\cpp\server
-
src\cpp\server
+
+ src\cpp\server\health
+
+
+ src\cpp\server\health
+
src\cpp\server
@@ -479,6 +485,9 @@
{321b0980-74ad-e8ca-f23b-deffa5d6bb8f}
+
+ {5bc9ef4e-78c1-159e-4e4e-30ddfce3e140}
+
{23f9df56-8604-52a0-e6a2-f01b8e68d0e7}
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index 060f2818e32..0c53d641c7e 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -351,8 +351,9 @@
-
+
+
@@ -395,13 +396,15 @@
-
-
-
+
+
+
+
+
-
+
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 8aa4a77d400..a1ac8702262 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -58,17 +58,20 @@
src\cpp\server
-
- src\cpp\server
-
src\cpp\server
-
- src\cpp\server
+
+ src\cpp\server\health
-
- src\cpp\server
+
+ src\cpp\server\health
+
+
+ src\cpp\server\health
+
+
+ src\cpp\server\health
src\cpp\server
@@ -383,12 +386,15 @@
src\cpp\common
-
- src\cpp\server
-
src\cpp\server
+
+ src\cpp\server\health
+
+
+ src\cpp\server\health
+
src\cpp\server
@@ -452,6 +458,9 @@
{8a54a279-d14b-4237-0df3-1ffe1ef5a7af}
+
+ {a003cb5c-7249-106c-8ee5-de5e11a6692c}
+
{e5b55f25-d99f-b8e5-9981-7da7fa7ba628}
From b74cf429fdec9e72364b4cbe4ae1b7389d28672d Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 27 Dec 2016 13:17:47 -0800
Subject: [PATCH 11/95] test pass
---
.../health/default_health_check_service.cc | 59 ++++++++++++++++++-
.../health/default_health_check_service.h | 4 +-
src/cpp/server/health/health.pb.c | 8 +--
src/cpp/server/health/health.pb.h | 4 +-
src/proto/grpc/health/v1/health.options | 2 +-
.../end2end/health_service_end2end_test.cc | 13 +++-
6 files changed, 73 insertions(+), 17 deletions(-)
diff --git a/src/cpp/server/health/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc
index bc6087f1caf..665a99f86b1 100644
--- a/src/cpp/server/health/default_health_check_service.cc
+++ b/src/cpp/server/health/default_health_check_service.cc
@@ -38,8 +38,9 @@
#include
#include "src/cpp/server/health/default_health_check_service.h"
-#include "third_party/nanopb/pb_encode.h"
+#include "src/cpp/server/health/health.pb.h"
#include "third_party/nanopb/pb_decode.h"
+#include "third_party/nanopb/pb_encode.h"
namespace grpc {
namespace {
@@ -61,7 +62,60 @@ DefaultHealthCheckService::SyncHealthCheckServiceImpl::
Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
+ // Decode request.
+ std::vector slices;
+ request->Dump(&slices);
+ const uint8_t* request_bytes = nullptr;
+ size_t request_size = 0;
+ grpc_health_v1_HealthCheckRequest request_struct;
+ if (slices.empty()) {
+ request_struct.has_service = false;
+ } else if (slices.size() == 1) {
+ request_bytes = slices[0].begin();
+ request_size = slices[0].size();
+ } else {
+ abort(); // TODO
+ }
+
+ if (request_bytes != nullptr) {
+ pb_istream_t istream = pb_istream_from_buffer(request_bytes, request_size);
+ bool decode_status = pb_decode(
+ &istream, grpc_health_v1_HealthCheckRequest_fields, &request_struct);
+ if (!decode_status) {
+ return Status(StatusCode::INVALID_ARGUMENT, "");
+ }
+ }
+
+ // Check status from the associated default health checking service.
+ DefaultHealthCheckService::ServingStatus serving_status =
+ service_->GetServingStatus(
+ request_struct.has_service ? request_struct.service : "");
+ if (serving_status == DefaultHealthCheckService::NOT_FOUND) {
+ return Status(StatusCode::NOT_FOUND, "");
+ }
+ // Encode response
+ grpc_health_v1_HealthCheckResponse response_struct;
+ response_struct.has_status = true;
+ response_struct.status =
+ serving_status == DefaultHealthCheckService::SERVING
+ ? grpc_health_v1_HealthCheckResponse_ServingStatus_SERVING
+ : grpc_health_v1_HealthCheckResponse_ServingStatus_NOT_SERVING;
+ pb_ostream_t ostream;
+ memset(&ostream, 0, sizeof(ostream));
+ pb_encode(&ostream, grpc_health_v1_HealthCheckResponse_fields,
+ &response_struct);
+ grpc_slice response_slice = grpc_slice_malloc(ostream.bytes_written);
+ ostream = pb_ostream_from_buffer(GRPC_SLICE_START_PTR(response_slice),
+ GRPC_SLICE_LENGTH(response_slice));
+ bool encode_status = pb_encode(
+ &ostream, grpc_health_v1_HealthCheckResponse_fields, &response_struct);
+ if (!encode_status) {
+ return Status(StatusCode::INTERNAL, "Failed to encode response.");
+ }
+ Slice encoded_response(response_slice, Slice::STEAL_REF);
+ ByteBuffer response_buffer(&encoded_response, 1);
+ response->Swap(&response_buffer);
return Status::OK;
}
@@ -84,7 +138,8 @@ void DefaultHealthCheckService::SetServingStatus(bool serving) {
}
DefaultHealthCheckService::ServingStatus
-DefaultHealthCheckService::GetServingStatus(const grpc::string& service_name) {
+DefaultHealthCheckService::GetServingStatus(
+ const grpc::string& service_name) const {
std::lock_guard lock(mu_);
const auto& iter = services_map_.find(service_name);
if (iter == services_map_.end()) {
diff --git a/src/cpp/server/health/default_health_check_service.h b/src/cpp/server/health/default_health_check_service.h
index 23ee1cb7dc3..541c720aaa6 100644
--- a/src/cpp/server/health/default_health_check_service.h
+++ b/src/cpp/server/health/default_health_check_service.h
@@ -60,13 +60,13 @@ class DefaultHealthCheckService : public HealthCheckServiceInterface {
void SetServingStatus(const grpc::string& service_name, bool serving) final;
void SetServingStatus(bool serving) final;
enum ServingStatus { NOT_FOUND, SERVING, NOT_SERVING };
- ServingStatus GetServingStatus(const grpc::string& service_name);
+ ServingStatus GetServingStatus(const grpc::string& service_name) const;
SyncHealthCheckServiceImpl* GetSyncHealthCheckService() const {
return sync_service_.get();
}
private:
- std::mutex mu_;
+ mutable std::mutex mu_;
std::map services_map_;
std::unique_ptr sync_service_;
};
diff --git a/src/cpp/server/health/health.pb.c b/src/cpp/server/health/health.pb.c
index cfd06b496ff..1fca2c55c84 100644
--- a/src/cpp/server/health/health.pb.c
+++ b/src/cpp/server/health/health.pb.c
@@ -33,7 +33,7 @@
/* Automatically generated nanopb constant definitions */
/* Generated by nanopb-0.3.7-dev */
-#include "/usr/local/google/home/yangg/github/grpc/src/cpp/server//health.pb.h"
+#include "src/cpp/server/health/health.pb.h"
/* @@protoc_insertion_point(includes) */
#if PB_PROTO_HEADER_VERSION != 30
@@ -53,10 +53,4 @@ const pb_field_t grpc_health_v1_HealthCheckResponse_fields[2] = {
};
-/* Check that field information fits in pb_field_t */
-#if !defined(PB_FIELD_16BIT) && !defined(PB_FIELD_32BIT)
-#error Field descriptor for grpc_health_v1_HealthCheckRequest.service is too large. Define PB_FIELD_16BIT to fix this.
-#endif
-
-
/* @@protoc_insertion_point(eof) */
diff --git a/src/cpp/server/health/health.pb.h b/src/cpp/server/health/health.pb.h
index 5782b9c1984..dc790fb1035 100644
--- a/src/cpp/server/health/health.pb.h
+++ b/src/cpp/server/health/health.pb.h
@@ -58,7 +58,7 @@ typedef enum _grpc_health_v1_HealthCheckResponse_ServingStatus {
/* Struct definitions */
typedef struct _grpc_health_v1_HealthCheckRequest {
bool has_service;
- char service[2048];
+ char service[200];
/* @@protoc_insertion_point(struct:grpc_health_v1_HealthCheckRequest) */
} grpc_health_v1_HealthCheckRequest;
@@ -85,7 +85,7 @@ extern const pb_field_t grpc_health_v1_HealthCheckRequest_fields[2];
extern const pb_field_t grpc_health_v1_HealthCheckResponse_fields[2];
/* Maximum encoded size of messages (where known) */
-#define grpc_health_v1_HealthCheckRequest_size 2051
+#define grpc_health_v1_HealthCheckRequest_size 203
#define grpc_health_v1_HealthCheckResponse_size 2
/* Message IDs (where set with "msgid" option) */
diff --git a/src/proto/grpc/health/v1/health.options b/src/proto/grpc/health/v1/health.options
index 139cf2bb52b..240b498b580 100644
--- a/src/proto/grpc/health/v1/health.options
+++ b/src/proto/grpc/health/v1/health.options
@@ -1 +1 @@
-grpc.health.v1.HealthCheckRequest.service max_size:2048
+grpc.health.v1.HealthCheckRequest.service max_size:200
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
index 17e8c4b7615..02aa5cea3f6 100644
--- a/test/cpp/end2end/health_service_end2end_test.cc
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -85,7 +85,6 @@ class HealthServiceEnd2endTest : public ::testing::Test {
void ResetStubs() {
std::shared_ptr channel =
CreateChannel(server_address_.str(), InsecureChannelCredentials());
- stub_ = grpc::testing::EchoTestService::NewStub(channel);
hc_stub_ = grpc::health::v1::Health::NewStub(channel);
}
@@ -98,14 +97,12 @@ class HealthServiceEnd2endTest : public ::testing::Test {
ClientContext context;
Status s = hc_stub_->Check(&context, request, &response);
EXPECT_EQ(expected_status.error_code(), s.error_code());
- // EXPECT_EQ(expected_status.error_details(), s.error_details());
if (s.ok()) {
EXPECT_EQ(expected_serving_status, response.status());
}
}
TestServiceImpl echo_test_service_;
- std::unique_ptr stub_;
std::unique_ptr hc_stub_;
std::unique_ptr server_;
std::ostringstream server_address_;
@@ -129,6 +126,8 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
EXPECT_TRUE(default_service != nullptr);
const grpc::string kHealthyService("healthy_service");
const grpc::string kUnhealthyService("unhealthy_service");
+ const grpc::string kNotRegisteredService("not_registered");
+ const grpc::string kTooLongServiceName(201, 'x');
default_service->SetServingStatus(kHealthyService, true);
default_service->SetServingStatus(kUnhealthyService, false);
@@ -138,6 +137,10 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
SendHealthCheckRpc(kHealthyService, Status::OK, HealthCheckResponse::SERVING);
SendHealthCheckRpc(kUnhealthyService, Status::OK,
HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kNotRegisteredService, Status(StatusCode::NOT_FOUND, ""),
+ HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kTooLongServiceName, Status(StatusCode::INVALID_ARGUMENT, ""),
+ HealthCheckResponse::NOT_SERVING);
default_service->SetServingStatus(false);
SendHealthCheckRpc("", Status::OK, HealthCheckResponse::NOT_SERVING);
@@ -145,6 +148,10 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
HealthCheckResponse::NOT_SERVING);
SendHealthCheckRpc(kUnhealthyService, Status::OK,
HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kNotRegisteredService, Status(StatusCode::NOT_FOUND, ""),
+ HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kTooLongServiceName, Status(StatusCode::INVALID_ARGUMENT, ""),
+ HealthCheckResponse::NOT_SERVING);
}
} // namespace
From 4eaf96920f7949cdf7f0d81973769cb6bc42bcaf Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 27 Dec 2016 13:52:38 -0800
Subject: [PATCH 12/95] fix todo
---
.../server/health/default_health_check_service.cc | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/cpp/server/health/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc
index 665a99f86b1..bc7d5767419 100644
--- a/src/cpp/server/health/default_health_check_service.cc
+++ b/src/cpp/server/health/default_health_check_service.cc
@@ -66,6 +66,7 @@ Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
std::vector slices;
request->Dump(&slices);
const uint8_t* request_bytes = nullptr;
+ bool request_bytes_owned = false;
size_t request_size = 0;
grpc_health_v1_HealthCheckRequest request_struct;
if (slices.empty()) {
@@ -74,13 +75,22 @@ Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
request_bytes = slices[0].begin();
request_size = slices[0].size();
} else {
- abort(); // TODO
+ request_bytes_owned = true;
+ request_bytes = gpr_malloc(request->Length());
+ uint8_t* copy_to = request_bytes;
+ for (size_t i = 0; i < slices.size(); i++) {
+ memcpy(copy_to, slices[i].begin(), slices[i].size());
+ copy_to += slices[i].size();
+ }
}
if (request_bytes != nullptr) {
pb_istream_t istream = pb_istream_from_buffer(request_bytes, request_size);
bool decode_status = pb_decode(
&istream, grpc_health_v1_HealthCheckRequest_fields, &request_struct);
+ if (request_bytes_owned) {
+ gpr_free(request_bytes);
+ }
if (!decode_status) {
return Status(StatusCode::INVALID_ARGUMENT, "");
}
From 9bef0740a4ad649b6eb7438fc9575dfc1e98250e Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 27 Dec 2016 15:31:57 -0800
Subject: [PATCH 13/95] Add test for explicit option
---
...alth_check_service_server_builder_option.h | 2 +-
.../health/default_health_check_service.cc | 7 +-
.../end2end/health_service_end2end_test.cc | 186 +++++++++++++++---
3 files changed, 159 insertions(+), 36 deletions(-)
diff --git a/include/grpc++/ext/health_check_service_server_builder_option.h b/include/grpc++/ext/health_check_service_server_builder_option.h
index e00c4c3dd59..6a8fd943178 100644
--- a/include/grpc++/ext/health_check_service_server_builder_option.h
+++ b/include/grpc++/ext/health_check_service_server_builder_option.h
@@ -47,7 +47,7 @@ class HealthCheckServiceServerBuilderOption : public ServerBuilderOption {
// Use nullptr to disable default service.
explicit HealthCheckServiceServerBuilderOption(
std::unique_ptr hc);
- ~HealthCheckServiceServerBuilderOption() {}
+ ~HealthCheckServiceServerBuilderOption() override {}
void UpdateArguments(ChannelArguments* args) override;
void UpdatePlugins(std::vector>* plugins) override;
private:
diff --git a/src/cpp/server/health/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc
index bc7d5767419..cec7ecce70a 100644
--- a/src/cpp/server/health/default_health_check_service.cc
+++ b/src/cpp/server/health/default_health_check_service.cc
@@ -35,6 +35,7 @@
#include
#include
+#include
#include
#include "src/cpp/server/health/default_health_check_service.h"
@@ -65,18 +66,18 @@ Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
// Decode request.
std::vector slices;
request->Dump(&slices);
- const uint8_t* request_bytes = nullptr;
+ uint8_t* request_bytes = nullptr;
bool request_bytes_owned = false;
size_t request_size = 0;
grpc_health_v1_HealthCheckRequest request_struct;
if (slices.empty()) {
request_struct.has_service = false;
} else if (slices.size() == 1) {
- request_bytes = slices[0].begin();
+ request_bytes = const_cast(slices[0].begin());
request_size = slices[0].size();
} else {
request_bytes_owned = true;
- request_bytes = gpr_malloc(request->Length());
+ request_bytes = static_cast(gpr_malloc(request->Length()));
uint8_t* copy_to = request_bytes;
for (size_t i = 0; i < slices.size(); i++) {
memcpy(copy_to, slices[i].begin(), slices[i].size());
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
index 02aa5cea3f6..969aea1318f 100644
--- a/test/cpp/end2end/health_service_end2end_test.cc
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -32,11 +32,14 @@
*/
#include
+#include
#include
+#include
#include
#include
#include
+#include
#include
#include
#include
@@ -59,20 +62,92 @@ namespace grpc {
namespace testing {
namespace {
+// A sample sync implementation of the health checking service. This does the
+// same thing as the default one.
+class HealthCheckServiceImpl : public ::grpc::health::v1::Health::Service {
+ public:
+ Status Check(ServerContext* context, const HealthCheckRequest* request,
+ HealthCheckResponse* response) override {
+ std::lock_guard lock(mu_);
+ auto iter = status_map_.find(request->service());
+ if (iter == status_map_.end()) {
+ return Status(StatusCode::NOT_FOUND, "");
+ }
+ response->set_status(iter->second);
+ return Status::OK;
+ }
+
+ void SetStatus(const grpc::string& service_name,
+ HealthCheckResponse::ServingStatus status) {
+ std::lock_guard lock(mu_);
+ status_map_[service_name] = status;
+ }
+
+ void SetAll(HealthCheckResponse::ServingStatus status) {
+ std::lock_guard lock(mu_);
+ for (auto iter = status_map_.begin(); iter != status_map_.end(); ++iter) {
+ iter->second = status;
+ }
+ }
+
+ private:
+ std::mutex mu_;
+ std::map status_map_;
+};
+
+// A custom implementation of the health checking service interface. This is
+// used to test that it prevents the server from creating a default service and
+// also serves as an example of how to override the default service.
+class CustomHealthCheckService : public HealthCheckServiceInterface {
+ public:
+ explicit CustomHealthCheckService(HealthCheckServiceImpl* impl)
+ : impl_(impl) {
+ impl_->SetStatus("", HealthCheckResponse::SERVING);
+ }
+ void SetServingStatus(const grpc::string& service_name,
+ bool serving) override {
+ impl_->SetStatus(service_name, serving ? HealthCheckResponse::SERVING
+ : HealthCheckResponse::NOT_SERVING);
+ }
+
+ void SetServingStatus(bool serving) override {
+ impl_->SetAll(serving ? HealthCheckResponse::SERVING
+ : HealthCheckResponse::NOT_SERVING);
+ }
+
+ private:
+ HealthCheckServiceImpl* impl_; // not owned
+};
+
class HealthServiceEnd2endTest : public ::testing::Test {
protected:
HealthServiceEnd2endTest() {}
- void SetUpServer(grpc::Service* explicit_health_service) {
+ void SetUpServer(bool register_sync_test_service,
+ bool explicit_health_service,
+ std::unique_ptr service) {
int port = grpc_pick_unused_port_or_die();
server_address_ << "localhost:" << port;
+ bool register_sync_health_service_impl =
+ explicit_health_service && service != nullptr;
+
// Setup server
ServerBuilder builder;
+ if (explicit_health_service) {
+ std::unique_ptr option(
+ new HealthCheckServiceServerBuilderOption(std::move(service)));
+ builder.SetOption(std::move(option));
+ }
builder.AddListeningPort(server_address_.str(),
grpc::InsecureServerCredentials());
- // Register a sync service.
- builder.RegisterService(&echo_test_service_);
+ if (register_sync_test_service) {
+ // Register a sync service.
+ builder.RegisterService(&echo_test_service_);
+ }
+ if (register_sync_health_service_impl) {
+ builder.RegisterService(&health_check_service_impl_);
+ }
server_ = builder.BuildAndStart();
}
@@ -88,6 +163,14 @@ class HealthServiceEnd2endTest : public ::testing::Test {
hc_stub_ = grpc::health::v1::Health::NewStub(channel);
}
+ // When the expected_status is NOT OK, we do not care about the response.
+ void SendHealthCheckRpc(const grpc::string& service_name,
+ const Status& expected_status) {
+ EXPECT_FALSE(expected_status.ok());
+ SendHealthCheckRpc(service_name, expected_status,
+ HealthCheckResponse::UNKNOWN);
+ }
+
void SendHealthCheckRpc(
const grpc::string& service_name, const Status& expected_status,
HealthCheckResponse::ServingStatus expected_serving_status) {
@@ -102,7 +185,37 @@ class HealthServiceEnd2endTest : public ::testing::Test {
}
}
+ void VerifyHealthCheckService() {
+ HealthCheckServiceInterface* service = server_->GetHealthCheckService();
+ EXPECT_TRUE(service != nullptr);
+ const grpc::string kHealthyService("healthy_service");
+ const grpc::string kUnhealthyService("unhealthy_service");
+ const grpc::string kNotRegisteredService("not_registered");
+ service->SetServingStatus(kHealthyService, true);
+ service->SetServingStatus(kUnhealthyService, false);
+
+ ResetStubs();
+
+ SendHealthCheckRpc("", Status::OK, HealthCheckResponse::SERVING);
+ SendHealthCheckRpc(kHealthyService, Status::OK,
+ HealthCheckResponse::SERVING);
+ SendHealthCheckRpc(kUnhealthyService, Status::OK,
+ HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kNotRegisteredService,
+ Status(StatusCode::NOT_FOUND, ""));
+
+ service->SetServingStatus(false);
+ SendHealthCheckRpc("", Status::OK, HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kHealthyService, Status::OK,
+ HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kUnhealthyService, Status::OK,
+ HealthCheckResponse::NOT_SERVING);
+ SendHealthCheckRpc(kNotRegisteredService,
+ Status(StatusCode::NOT_FOUND, ""));
+ }
+
TestServiceImpl echo_test_service_;
+ HealthCheckServiceImpl health_check_service_impl_;
std::unique_ptr hc_stub_;
std::unique_ptr server_;
std::ostringstream server_address_;
@@ -111,47 +224,56 @@ class HealthServiceEnd2endTest : public ::testing::Test {
TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceDisabled) {
EnableDefaultHealthCheckService(false);
EXPECT_FALSE(DefaultHealthCheckServiceEnabled());
- SetUpServer(nullptr);
+ SetUpServer(true, false, nullptr);
HealthCheckServiceInterface* default_service =
server_->GetHealthCheckService();
EXPECT_TRUE(default_service == nullptr);
+
+ ResetStubs();
+
+ SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
}
TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
EnableDefaultHealthCheckService(true);
EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
- SetUpServer(nullptr);
- HealthCheckServiceInterface* default_service =
- server_->GetHealthCheckService();
- EXPECT_TRUE(default_service != nullptr);
- const grpc::string kHealthyService("healthy_service");
- const grpc::string kUnhealthyService("unhealthy_service");
- const grpc::string kNotRegisteredService("not_registered");
+ SetUpServer(true, false, nullptr);
+ VerifyHealthCheckService();
+
+ // The default service has a size limit of the service name.
const grpc::string kTooLongServiceName(201, 'x');
- default_service->SetServingStatus(kHealthyService, true);
- default_service->SetServingStatus(kUnhealthyService, false);
+ SendHealthCheckRpc(kTooLongServiceName,
+ Status(StatusCode::INVALID_ARGUMENT, ""));
+}
+
+// Provide an empty service to disable the default service.
+TEST_F(HealthServiceEnd2endTest, ExplicitlyDisableViaOverride) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ std::unique_ptr empty_service;
+ SetUpServer(true, true, std::move(empty_service));
+ HealthCheckServiceInterface* service = server_->GetHealthCheckService();
+ EXPECT_TRUE(service == nullptr);
+
+ ResetStubs();
+
+ SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
+}
+
+// Provide an explicit override of health checking service interface.
+TEST_F(HealthServiceEnd2endTest, ExplicitlyOverride) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ std::unique_ptr override_service(
+ new CustomHealthCheckService(&health_check_service_impl_));
+ HealthCheckServiceInterface* underlying_service = override_service.get();
+ SetUpServer(false, true, std::move(override_service));
+ HealthCheckServiceInterface* service = server_->GetHealthCheckService();
+ EXPECT_TRUE(service == underlying_service);
ResetStubs();
- SendHealthCheckRpc("", Status::OK, HealthCheckResponse::SERVING);
- SendHealthCheckRpc(kHealthyService, Status::OK, HealthCheckResponse::SERVING);
- SendHealthCheckRpc(kUnhealthyService, Status::OK,
- HealthCheckResponse::NOT_SERVING);
- SendHealthCheckRpc(kNotRegisteredService, Status(StatusCode::NOT_FOUND, ""),
- HealthCheckResponse::NOT_SERVING);
- SendHealthCheckRpc(kTooLongServiceName, Status(StatusCode::INVALID_ARGUMENT, ""),
- HealthCheckResponse::NOT_SERVING);
-
- default_service->SetServingStatus(false);
- SendHealthCheckRpc("", Status::OK, HealthCheckResponse::NOT_SERVING);
- SendHealthCheckRpc(kHealthyService, Status::OK,
- HealthCheckResponse::NOT_SERVING);
- SendHealthCheckRpc(kUnhealthyService, Status::OK,
- HealthCheckResponse::NOT_SERVING);
- SendHealthCheckRpc(kNotRegisteredService, Status(StatusCode::NOT_FOUND, ""),
- HealthCheckResponse::NOT_SERVING);
- SendHealthCheckRpc(kTooLongServiceName, Status(StatusCode::INVALID_ARGUMENT, ""),
- HealthCheckResponse::NOT_SERVING);
+ VerifyHealthCheckService();
}
} // namespace
From f56c251af79577edfda3da795c8a26f31e4c7e01 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 27 Dec 2016 15:36:20 -0800
Subject: [PATCH 14/95] clang-format
---
.../ext/health_check_service_server_builder_option.h | 4 +++-
.../ext/health_check_service_server_builder_option.cc | 11 ++++++-----
2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/include/grpc++/ext/health_check_service_server_builder_option.h b/include/grpc++/ext/health_check_service_server_builder_option.h
index 6a8fd943178..2dd1e6dd329 100644
--- a/include/grpc++/ext/health_check_service_server_builder_option.h
+++ b/include/grpc++/ext/health_check_service_server_builder_option.h
@@ -49,7 +49,9 @@ class HealthCheckServiceServerBuilderOption : public ServerBuilderOption {
std::unique_ptr hc);
~HealthCheckServiceServerBuilderOption() override {}
void UpdateArguments(ChannelArguments* args) override;
- void UpdatePlugins(std::vector>* plugins) override;
+ void UpdatePlugins(
+ std::vector>* plugins) override;
+
private:
std::unique_ptr hc_;
};
diff --git a/src/cpp/ext/health_check_service_server_builder_option.cc b/src/cpp/ext/health_check_service_server_builder_option.cc
index 4afc82dc144..0d523285e9c 100644
--- a/src/cpp/ext/health_check_service_server_builder_option.cc
+++ b/src/cpp/ext/health_check_service_server_builder_option.cc
@@ -36,14 +36,15 @@
namespace grpc {
HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
- std::unique_ptr hc) : hc_(std::move(hc)) { }
+ std::unique_ptr hc)
+ : hc_(std::move(hc)) {}
-HealthCheckServiceServerBuilderOption::UpdateArguments(ChannelArguments* args) override {
+HealthCheckServiceServerBuilderOption::UpdateArguments(
+ ChannelArguments* args) override {
args->SetPointer(DefaultHealthCheckServiceInterfaceArg(), hc_.release());
}
-void HealthCheckServiceServerBuilderOption::UpdatePlugins(std::vector>* plugins) override {
-}
+void HealthCheckServiceServerBuilderOption::UpdatePlugins(
+ std::vector>* plugins) override {}
} // namespace grpc
-
From 1accb12408d89160055e687d49b3b346e57ad14a Mon Sep 17 00:00:00 2001
From: yang-g
Date: Wed, 28 Dec 2016 10:38:04 -0800
Subject: [PATCH 15/95] fix path
---
BUILD | 6 +++---
CMakeLists.txt | 6 +++---
Makefile | 6 +++---
build.yaml | 2 +-
tools/doxygen/Doxyfile.c++ | 2 +-
tools/doxygen/Doxyfile.c++.internal | 2 +-
tools/run_tests/generated/sources_and_headers.json | 4 ++--
vsprojects/vcxproj/grpc++/grpc++.vcxproj | 2 +-
vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters | 6 +++---
vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj | 2 +-
.../vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters | 6 +++---
11 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/BUILD b/BUILD
index c680232d247..0d4f290e321 100644
--- a/BUILD
+++ b/BUILD
@@ -1428,11 +1428,11 @@ cc_library(
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
- "include/grpc++/ext/health_check_service_interface.h",
"include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
+ "include/grpc++/health_check_service_interface.h",
"include/grpc++/impl/call.h",
"include/grpc++/impl/client_unary_call.h",
"include/grpc++/impl/codegen/core_codegen.h",
@@ -1898,11 +1898,11 @@ cc_library(
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
- "include/grpc++/ext/health_check_service_interface.h",
"include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
+ "include/grpc++/health_check_service_interface.h",
"include/grpc++/impl/call.h",
"include/grpc++/impl/client_unary_call.h",
"include/grpc++/impl/codegen/core_codegen.h",
@@ -2082,11 +2082,11 @@ cc_library(
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
- "include/grpc++/ext/health_check_service_interface.h",
"include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
+ "include/grpc++/health_check_service_interface.h",
"include/grpc++/impl/call.h",
"include/grpc++/impl/client_unary_call.h",
"include/grpc++/impl/codegen/core_codegen.h",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3f191431793..5a2d368d590 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1132,11 +1132,11 @@ foreach(_hdr
include/grpc++/completion_queue.h
include/grpc++/create_channel.h
include/grpc++/create_channel_posix.h
- include/grpc++/ext/health_check_service_interface.h
include/grpc++/ext/health_check_service_server_builder_option.h
include/grpc++/generic/async_generic_service.h
include/grpc++/generic/generic_stub.h
include/grpc++/grpc++.h
+ include/grpc++/health_check_service_interface.h
include/grpc++/impl/call.h
include/grpc++/impl/client_unary_call.h
include/grpc++/impl/codegen/core_codegen.h
@@ -1471,11 +1471,11 @@ foreach(_hdr
include/grpc++/completion_queue.h
include/grpc++/create_channel.h
include/grpc++/create_channel_posix.h
- include/grpc++/ext/health_check_service_interface.h
include/grpc++/ext/health_check_service_server_builder_option.h
include/grpc++/generic/async_generic_service.h
include/grpc++/generic/generic_stub.h
include/grpc++/grpc++.h
+ include/grpc++/health_check_service_interface.h
include/grpc++/impl/call.h
include/grpc++/impl/client_unary_call.h
include/grpc++/impl/codegen/core_codegen.h
@@ -1683,11 +1683,11 @@ foreach(_hdr
include/grpc++/completion_queue.h
include/grpc++/create_channel.h
include/grpc++/create_channel_posix.h
- include/grpc++/ext/health_check_service_interface.h
include/grpc++/ext/health_check_service_server_builder_option.h
include/grpc++/generic/async_generic_service.h
include/grpc++/generic/generic_stub.h
include/grpc++/grpc++.h
+ include/grpc++/health_check_service_interface.h
include/grpc++/impl/call.h
include/grpc++/impl/client_unary_call.h
include/grpc++/impl/codegen/core_codegen.h
diff --git a/Makefile b/Makefile
index 6ee90856493..e7a2c653dc8 100644
--- a/Makefile
+++ b/Makefile
@@ -3829,11 +3829,11 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
- include/grpc++/ext/health_check_service_interface.h \
include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
+ include/grpc++/health_check_service_interface.h \
include/grpc++/impl/call.h \
include/grpc++/impl/client_unary_call.h \
include/grpc++/impl/codegen/core_codegen.h \
@@ -4197,11 +4197,11 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
- include/grpc++/ext/health_check_service_interface.h \
include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
+ include/grpc++/health_check_service_interface.h \
include/grpc++/impl/call.h \
include/grpc++/impl/client_unary_call.h \
include/grpc++/impl/codegen/core_codegen.h \
@@ -4737,11 +4737,11 @@ PUBLIC_HEADERS_CXX += \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
- include/grpc++/ext/health_check_service_interface.h \
include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
+ include/grpc++/health_check_service_interface.h \
include/grpc++/impl/call.h \
include/grpc++/impl/client_unary_call.h \
include/grpc++/impl/codegen/core_codegen.h \
diff --git a/build.yaml b/build.yaml
index 4a33891e33b..634394a1ad7 100644
--- a/build.yaml
+++ b/build.yaml
@@ -718,11 +718,11 @@ filegroups:
- include/grpc++/completion_queue.h
- include/grpc++/create_channel.h
- include/grpc++/create_channel_posix.h
- - include/grpc++/ext/health_check_service_interface.h
- include/grpc++/ext/health_check_service_server_builder_option.h
- include/grpc++/generic/async_generic_service.h
- include/grpc++/generic/generic_stub.h
- include/grpc++/grpc++.h
+ - include/grpc++/health_check_service_interface.h
- include/grpc++/impl/call.h
- include/grpc++/impl/client_unary_call.h
- include/grpc++/impl/codegen/core_codegen.h
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index 77e9c7fc9ac..6d4f128cbb4 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -766,11 +766,11 @@ include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
-include/grpc++/ext/health_check_service_interface.h \
include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
+include/grpc++/health_check_service_interface.h \
include/grpc++/impl/call.h \
include/grpc++/impl/client_unary_call.h \
include/grpc++/impl/codegen/core_codegen.h \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index c2dbfb68f98..7f24e84a5ad 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -766,11 +766,11 @@ include/grpc++/client_context.h \
include/grpc++/completion_queue.h \
include/grpc++/create_channel.h \
include/grpc++/create_channel_posix.h \
-include/grpc++/ext/health_check_service_interface.h \
include/grpc++/ext/health_check_service_server_builder_option.h \
include/grpc++/generic/async_generic_service.h \
include/grpc++/generic/generic_stub.h \
include/grpc++/grpc++.h \
+include/grpc++/health_check_service_interface.h \
include/grpc++/impl/call.h \
include/grpc++/impl/client_unary_call.h \
include/grpc++/impl/codegen/core_codegen.h \
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 86986a99a6d..a8157ffb9a9 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -7639,11 +7639,11 @@
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
- "include/grpc++/ext/health_check_service_interface.h",
"include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
+ "include/grpc++/health_check_service_interface.h",
"include/grpc++/impl/call.h",
"include/grpc++/impl/client_unary_call.h",
"include/grpc++/impl/codegen/core_codegen.h",
@@ -7695,11 +7695,11 @@
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
- "include/grpc++/ext/health_check_service_interface.h",
"include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
+ "include/grpc++/health_check_service_interface.h",
"include/grpc++/impl/call.h",
"include/grpc++/impl/client_unary_call.h",
"include/grpc++/impl/codegen/core_codegen.h",
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index 0f0949cbd11..9d98447a707 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -264,11 +264,11 @@
-
+
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index fc64c44e083..a9acb5c588e 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -144,9 +144,6 @@
include\grpc++
-
- include\grpc++\ext
-
include\grpc++\ext
@@ -159,6 +156,9 @@
include\grpc++
+
+ include\grpc++
+
include\grpc++\impl
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index 0c53d641c7e..a9786a1c84c 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -264,11 +264,11 @@
-
+
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index a1ac8702262..f43e859eee4 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -129,9 +129,6 @@
include\grpc++
-
- include\grpc++\ext
-
include\grpc++\ext
@@ -144,6 +141,9 @@
include\grpc++
+
+ include\grpc++
+
include\grpc++\impl
From 50993b7a4c083b8b202010aca1bb95cf9902cf74 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 29 Dec 2016 10:00:27 -0800
Subject: [PATCH 16/95] async first take
---
.../grpc++/impl/codegen/server_interface.h | 7 +-
include/grpc++/server.h | 3 +
.../health/default_health_check_service.cc | 54 ++++++++----
.../health/default_health_check_service.h | 16 ++++
src/cpp/server/server_cc.cc | 82 ++++++++++++++++++-
.../end2end/health_service_end2end_test.cc | 30 +++++++
6 files changed, 170 insertions(+), 22 deletions(-)
diff --git a/include/grpc++/impl/codegen/server_interface.h b/include/grpc++/impl/codegen/server_interface.h
index 666b9ff66eb..2acb174baf0 100644
--- a/include/grpc++/impl/codegen/server_interface.h
+++ b/include/grpc++/impl/codegen/server_interface.h
@@ -159,7 +159,8 @@ class ServerInterface : public CallHook {
public:
RegisteredAsyncRequest(ServerInterface* server, ServerContext* context,
ServerAsyncStreamingInterface* stream,
- CompletionQueue* call_cq, void* tag);
+ CompletionQueue* call_cq, void* tag,
+ bool delete_on_finalize);
// uses BaseAsyncRequest::FinalizeResult
@@ -175,7 +176,7 @@ class ServerInterface : public CallHook {
ServerAsyncStreamingInterface* stream,
CompletionQueue* call_cq,
ServerCompletionQueue* notification_cq, void* tag)
- : RegisteredAsyncRequest(server, context, stream, call_cq, tag) {
+ : RegisteredAsyncRequest(server, context, stream, call_cq, tag, true) {
IssueRequest(registered_method, nullptr, notification_cq);
}
@@ -191,7 +192,7 @@ class ServerInterface : public CallHook {
CompletionQueue* call_cq,
ServerCompletionQueue* notification_cq, void* tag,
Message* request)
- : RegisteredAsyncRequest(server, context, stream, call_cq, tag),
+ : RegisteredAsyncRequest(server, context, stream, call_cq, tag, true),
request_(request) {
IssueRequest(registered_method, &payload_, notification_cq);
}
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index e3e9174c9c2..9f31d00ef0b 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -119,6 +119,9 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
class UnimplementedAsyncRequest;
class UnimplementedAsyncResponse;
+ class HealthCheckAsyncRequestContext;
+ class HealthCheckAsyncRequest;
+
/// Server constructors. To be used by \a ServerBuilder only.
///
/// \param max_message_size Maximum message length that the channel can
diff --git a/src/cpp/server/health/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc
index cec7ecce70a..26d8fd999fb 100644
--- a/src/cpp/server/health/default_health_check_service.cc
+++ b/src/cpp/server/health/default_health_check_service.cc
@@ -48,21 +48,9 @@ namespace {
const char kHealthCheckMethodName[] = "/grpc.health.v1.Health/Check";
-} // namespace
-
-DefaultHealthCheckService::SyncHealthCheckServiceImpl::
- SyncHealthCheckServiceImpl(DefaultHealthCheckService* service)
- : service_(service) {
- auto* handler =
- new RpcMethodHandler(
- std::mem_fn(&SyncHealthCheckServiceImpl::Check), this);
- auto* method = new RpcServiceMethod(kHealthCheckMethodName,
- RpcMethod::NORMAL_RPC, handler);
- AddMethod(method);
-}
-
-Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
- ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
+Status CheckHealth(const DefaultHealthCheckService* service,
+ ServerContext* context, const ByteBuffer* request,
+ ByteBuffer* response) {
// Decode request.
std::vector slices;
request->Dump(&slices);
@@ -99,7 +87,7 @@ Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
// Check status from the associated default health checking service.
DefaultHealthCheckService::ServingStatus serving_status =
- service_->GetServingStatus(
+ service->GetServingStatus(
request_struct.has_service ? request_struct.service : "");
if (serving_status == DefaultHealthCheckService::NOT_FOUND) {
return Status(StatusCode::NOT_FOUND, "");
@@ -129,9 +117,41 @@ Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
response->Swap(&response_buffer);
return Status::OK;
}
+} // namespace
+
+DefaultHealthCheckService::SyncHealthCheckServiceImpl::
+ SyncHealthCheckServiceImpl(DefaultHealthCheckService* service)
+ : service_(service) {
+ auto* handler =
+ new RpcMethodHandler(
+ std::mem_fn(&SyncHealthCheckServiceImpl::Check), this);
+ auto* method = new RpcServiceMethod(kHealthCheckMethodName,
+ RpcMethod::NORMAL_RPC, handler);
+ AddMethod(method);
+}
+
+Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
+ ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
+ return CheckHealth(service_, context, request, response);
+}
+
+DefaultHealthCheckService::AsyncHealthCheckServiceImpl::
+ AsyncHealthCheckServiceImpl(DefaultHealthCheckService* service)
+ : service_(service) {
+ auto* method = new RpcServiceMethod(kHealthCheckMethodName,
+ RpcMethod::NORMAL_RPC, nullptr);
+ AddMethod(method);
+ method_ = method;
+}
+
+Status DefaultHealthCheckService::AsyncHealthCheckServiceImpl::Check(
+ ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
+ return CheckHealth(service_, context, request, response);
+}
DefaultHealthCheckService::DefaultHealthCheckService()
- : sync_service_(new SyncHealthCheckServiceImpl(this)) {
+ : sync_service_(new SyncHealthCheckServiceImpl(this)),
+ async_service_(new AsyncHealthCheckServiceImpl(this)) {
services_map_.emplace("", true);
}
diff --git a/src/cpp/server/health/default_health_check_service.h b/src/cpp/server/health/default_health_check_service.h
index 541c720aaa6..411aac97138 100644
--- a/src/cpp/server/health/default_health_check_service.h
+++ b/src/cpp/server/health/default_health_check_service.h
@@ -56,6 +56,18 @@ class DefaultHealthCheckService : public HealthCheckServiceInterface {
const DefaultHealthCheckService* service_;
};
+ class AsyncHealthCheckServiceImpl : public Service {
+ public:
+ explicit AsyncHealthCheckServiceImpl(DefaultHealthCheckService* service);
+ Status Check(ServerContext* context, const ByteBuffer* request,
+ ByteBuffer* response);
+ const RpcServiceMethod* method() const { return method_; }
+
+ private:
+ const DefaultHealthCheckService* service_;
+ const RpcServiceMethod* method_;
+ };
+
DefaultHealthCheckService();
void SetServingStatus(const grpc::string& service_name, bool serving) final;
void SetServingStatus(bool serving) final;
@@ -64,11 +76,15 @@ class DefaultHealthCheckService : public HealthCheckServiceInterface {
SyncHealthCheckServiceImpl* GetSyncHealthCheckService() const {
return sync_service_.get();
}
+ AsyncHealthCheckServiceImpl* GetAsyncHealthCheckService() const {
+ return async_service_.get();
+ }
private:
mutable std::mutex mu_;
std::map services_map_;
std::unique_ptr sync_service_;
+ std::unique_ptr async_service_;
};
} // namespace grpc
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index c50c076bdc5..20641aeea8d 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -37,6 +37,7 @@
#include
#include
+#include
#include
#include
#include
@@ -118,6 +119,67 @@ class Server::UnimplementedAsyncResponse final
UnimplementedAsyncRequest* const request_;
};
+class Server::HealthCheckAsyncRequestContext {
+ protected:
+ HealthCheckAsyncRequestContext() : rpc_(&server_context_) {}
+ ServerContext server_context_;
+ ServerAsyncResponseWriter rpc_;
+};
+
+class Server::HealthCheckAsyncRequest final
+ : public HealthCheckAsyncRequestContext,
+ public RegisteredAsyncRequest {
+ public:
+ HealthCheckAsyncRequest(
+ DefaultHealthCheckService::AsyncHealthCheckServiceImpl* service,
+ Server* server, ServerCompletionQueue* cq)
+ : RegisteredAsyncRequest(server, &server_context_, &rpc_, cq, this,
+ false),
+ service_(service),
+ server_(server),
+ cq_(cq),
+ had_request_(false) {
+ IssueRequest(service->method()->server_tag(), &payload_, cq);
+ }
+
+ bool FinalizeResult(void** tag, bool* status) override;
+
+ private:
+ DefaultHealthCheckService::AsyncHealthCheckServiceImpl* service_;
+ Server* const server_;
+ ServerCompletionQueue* const cq_;
+ grpc_byte_buffer* payload_;
+ bool had_request_;
+ ByteBuffer request_;
+ ByteBuffer response_;
+};
+
+bool Server::HealthCheckAsyncRequest::FinalizeResult(void** tag, bool* status) {
+ if (!had_request_) {
+ had_request_ = true;
+ bool serialization_status =
+ *status && payload_ &&
+ SerializationTraits::Deserialize(
+ payload_, &request_, server_->max_receive_message_size())
+ .ok();
+ RegisteredAsyncRequest::FinalizeResult(tag, status);
+ *status = serialization_status && *status;
+ if (*status) {
+ new HealthCheckAsyncRequest(service_, server_, cq_);
+ Status s = service_->Check(&server_context_, &request_, &response_);
+ rpc_.Finish(response_, s, this);
+ return false;
+ } else {
+ // TODO what to do here
+ delete this;
+ return false;
+ }
+ } else {
+ delete this;
+ return false;
+ }
+}
+
class ShutdownTag : public CompletionQueueTag {
public:
bool FinalizeResult(void** tag, bool* status) { return false; }
@@ -498,6 +560,8 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
// Only create default health check service when user did not provide an
// explicit one.
+ DefaultHealthCheckService::AsyncHealthCheckServiceImpl* async_health_service =
+ nullptr;
if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
DefaultHealthCheckServiceEnabled()) {
auto* default_hc_service = new DefaultHealthCheckService;
@@ -505,6 +569,10 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
if (!sync_server_cqs_->empty()) { // Has sync methods.
RegisterService(nullptr, default_hc_service->GetSyncHealthCheckService());
}
+ if (sync_server_cqs_->empty()) { // No sync methods.
+ async_health_service = default_hc_service->GetAsyncHealthCheckService();
+ RegisterService(nullptr, async_health_service);
+ }
}
grpc_server_start(server_);
@@ -521,6 +589,14 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
}
}
+ if (async_health_service) {
+ for (size_t i = 0; i < num_cqs; i++) {
+ if (cqs[i]->IsFrequentlyPolled()) {
+ new HealthCheckAsyncRequest(async_health_service, this, cqs[i]);
+ }
+ }
+ }
+
for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
(*it)->Start();
}
@@ -641,8 +717,10 @@ bool ServerInterface::BaseAsyncRequest::FinalizeResult(void** tag,
ServerInterface::RegisteredAsyncRequest::RegisteredAsyncRequest(
ServerInterface* server, ServerContext* context,
- ServerAsyncStreamingInterface* stream, CompletionQueue* call_cq, void* tag)
- : BaseAsyncRequest(server, context, stream, call_cq, tag, true) {}
+ ServerAsyncStreamingInterface* stream, CompletionQueue* call_cq, void* tag,
+ bool delete_on_finalize)
+ : BaseAsyncRequest(server, context, stream, call_cq, tag,
+ delete_on_finalize) {}
void ServerInterface::RegisteredAsyncRequest::IssueRequest(
void* registered_method, grpc_byte_buffer** payload,
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
index 969aea1318f..c41a75ec37c 100644
--- a/test/cpp/end2end/health_service_end2end_test.cc
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -45,6 +45,7 @@
#include
#include
#include
+#include
#include
#include "src/proto/grpc/health/v1/health.grpc.pb.h"
@@ -148,12 +149,17 @@ class HealthServiceEnd2endTest : public ::testing::Test {
if (register_sync_health_service_impl) {
builder.RegisterService(&health_check_service_impl_);
}
+ cq_ = builder.AddCompletionQueue();
server_ = builder.BuildAndStart();
}
void TearDown() override {
if (server_) {
server_->Shutdown();
+ cq_->Shutdown();
+ if (cq_thread_.joinable()) {
+ cq_thread_.join();
+ }
}
}
@@ -219,6 +225,8 @@ class HealthServiceEnd2endTest : public ::testing::Test {
std::unique_ptr hc_stub_;
std::unique_ptr server_;
std::ostringstream server_address_;
+ std::unique_ptr cq_;
+ std::thread cq_thread_;
};
TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceDisabled) {
@@ -246,6 +254,28 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
Status(StatusCode::INVALID_ARGUMENT, ""));
}
+void LoopCompletionQueue(ServerCompletionQueue* cq) {
+ void* tag;
+ bool ok;
+ while (cq->Next(&tag, &ok)) {
+ gpr_log(GPR_ERROR, "next %p %d", tag, ok);
+ }
+ gpr_log(GPR_ERROR, "returning from thread");
+}
+
+TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsync) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ SetUpServer(false, false, nullptr);
+ cq_thread_ = std::thread(LoopCompletionQueue, cq_.get());
+ VerifyHealthCheckService();
+
+ // The default service has a size limit of the service name.
+ const grpc::string kTooLongServiceName(201, 'x');
+ SendHealthCheckRpc(kTooLongServiceName,
+ Status(StatusCode::INVALID_ARGUMENT, ""));
+}
+
// Provide an empty service to disable the default service.
TEST_F(HealthServiceEnd2endTest, ExplicitlyDisableViaOverride) {
EnableDefaultHealthCheckService(true);
From 8e708b12cb1c88f5cb6e3984d887c3c2b9bee54f Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 29 Dec 2016 11:44:36 -0800
Subject: [PATCH 17/95] WIP
---
include/grpc++/server.h | 1 +
src/cpp/server/server_cc.cc | 103 ++++++++++----
.../end2end/health_service_end2end_test.cc | 126 +++++++++---------
3 files changed, 141 insertions(+), 89 deletions(-)
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index 9f31d00ef0b..3f205625ee7 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -121,6 +121,7 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
class HealthCheckAsyncRequestContext;
class HealthCheckAsyncRequest;
+ class HealthCheckAsyncResponse;
/// Server constructors. To be used by \a ServerBuilder only.
///
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 20641aeea8d..43f09470959 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -119,11 +119,24 @@ class Server::UnimplementedAsyncResponse final
UnimplementedAsyncRequest* const request_;
};
+class HealthCheckAsyncResponseWriter final
+ : public ServerAsyncStreamingInterface {
+ public:
+ HealthCheckAsyncResponseWriter() : call_(nullptr, nullptr, nullptr) {}
+ void SendInitialMetadata(void* tag) override {
+ abort(); // should not be called.
+ }
+ void BindCall(Call* call) override { call_ = *call; }
+ Call* call() { return &call_; }
+
+ private:
+ Call call_;
+};
+
class Server::HealthCheckAsyncRequestContext {
protected:
- HealthCheckAsyncRequestContext() : rpc_(&server_context_) {}
ServerContext server_context_;
- ServerAsyncResponseWriter rpc_;
+ HealthCheckAsyncResponseWriter rpc_;
};
class Server::HealthCheckAsyncRequest final
@@ -137,49 +150,86 @@ class Server::HealthCheckAsyncRequest final
false),
service_(service),
server_(server),
- cq_(cq),
- had_request_(false) {
+ cq_(cq) {
IssueRequest(service->method()->server_tag(), &payload_, cq);
}
bool FinalizeResult(void** tag, bool* status) override;
+ Call* call() { return rpc_.call(); }
+ ByteBuffer* response() { return &response_; }
+ Status* status() { return &status_; }
+ ServerContext* server_context() { return &server_context_; }
private:
DefaultHealthCheckService::AsyncHealthCheckServiceImpl* service_;
Server* const server_;
ServerCompletionQueue* const cq_;
grpc_byte_buffer* payload_;
- bool had_request_;
ByteBuffer request_;
ByteBuffer response_;
+ Status status_;
+};
+
+typedef SneakyCallOpSet
+ HealthCheckAsyncResponseOp;
+class Server::HealthCheckAsyncResponse final
+ : public HealthCheckAsyncResponseOp {
+ public:
+ HealthCheckAsyncResponse(HealthCheckAsyncRequest* request);
+ ~HealthCheckAsyncResponse() { delete request_; }
+
+ bool FinalizeResult(void** tag, bool* status) override {
+ HealthCheckAsyncResponseOp::FinalizeResult(tag, status);
+ delete this;
+ return false;
+ }
+
+ private:
+ HealthCheckAsyncRequest* const request_;
};
bool Server::HealthCheckAsyncRequest::FinalizeResult(void** tag, bool* status) {
- if (!had_request_) {
- had_request_ = true;
- bool serialization_status =
- *status && payload_ &&
- SerializationTraits::Deserialize(
- payload_, &request_, server_->max_receive_message_size())
- .ok();
- RegisteredAsyncRequest::FinalizeResult(tag, status);
- *status = serialization_status && *status;
- if (*status) {
- new HealthCheckAsyncRequest(service_, server_, cq_);
- Status s = service_->Check(&server_context_, &request_, &response_);
- rpc_.Finish(response_, s, this);
- return false;
- } else {
- // TODO what to do here
- delete this;
- return false;
- }
+ bool serialization_status =
+ *status && payload_ &&
+ SerializationTraits::Deserialize(
+ payload_, &request_, server_->max_receive_message_size())
+ .ok();
+ RegisteredAsyncRequest::FinalizeResult(tag, status);
+ *status = serialization_status && *status;
+ if (*status) {
+ new HealthCheckAsyncRequest(service_, server_, cq_);
+ status_ = service_->Check(&server_context_, &request_, &response_);
+ new HealthCheckAsyncResponse(this);
+ return false;
} else {
delete this;
return false;
}
}
+Server::HealthCheckAsyncResponse::HealthCheckAsyncResponse(
+ HealthCheckAsyncRequest* request)
+ : request_(request) {
+ ServerContext* context = request_->server_context();
+ if (!context->sent_initial_metadata_) {
+ SendInitialMetadata(context->initial_metadata_,
+ context->initial_metadata_flags());
+ if (context->compression_level_set()) {
+ set_compression_level(context->compression_level());
+ }
+ context->sent_initial_metadata_ = true;
+ }
+ Status* status = request_->status();
+ if (status->ok()) {
+ ServerSendStatus(context->trailing_metadata_,
+ SendMessage(*request_->response()));
+ } else {
+ ServerSendStatus(context->trailing_metadata_, *status);
+ }
+ request_->call()->PerformOps(this);
+}
+
class ShutdownTag : public CompletionQueueTag {
public:
bool FinalizeResult(void** tag, bool* status) { return false; }
@@ -567,9 +617,10 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
auto* default_hc_service = new DefaultHealthCheckService;
health_check_service_.reset(default_hc_service);
if (!sync_server_cqs_->empty()) { // Has sync methods.
+ gpr_log(GPR_ERROR, "register sync"); // XXX
RegisterService(nullptr, default_hc_service->GetSyncHealthCheckService());
- }
- if (sync_server_cqs_->empty()) { // No sync methods.
+ } else {
+ gpr_log(GPR_ERROR, "register async"); // XXX
async_health_service = default_hc_service->GetAsyncHealthCheckService();
RegisterService(nullptr, async_health_service);
}
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
index c41a75ec37c..9f2df90207a 100644
--- a/test/cpp/end2end/health_service_end2end_test.cc
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -242,69 +242,69 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceDisabled) {
SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
}
-TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
- EnableDefaultHealthCheckService(true);
- EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
- SetUpServer(true, false, nullptr);
- VerifyHealthCheckService();
-
- // The default service has a size limit of the service name.
- const grpc::string kTooLongServiceName(201, 'x');
- SendHealthCheckRpc(kTooLongServiceName,
- Status(StatusCode::INVALID_ARGUMENT, ""));
-}
-
-void LoopCompletionQueue(ServerCompletionQueue* cq) {
- void* tag;
- bool ok;
- while (cq->Next(&tag, &ok)) {
- gpr_log(GPR_ERROR, "next %p %d", tag, ok);
- }
- gpr_log(GPR_ERROR, "returning from thread");
-}
-
-TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsync) {
- EnableDefaultHealthCheckService(true);
- EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
- SetUpServer(false, false, nullptr);
- cq_thread_ = std::thread(LoopCompletionQueue, cq_.get());
- VerifyHealthCheckService();
-
- // The default service has a size limit of the service name.
- const grpc::string kTooLongServiceName(201, 'x');
- SendHealthCheckRpc(kTooLongServiceName,
- Status(StatusCode::INVALID_ARGUMENT, ""));
-}
-
-// Provide an empty service to disable the default service.
-TEST_F(HealthServiceEnd2endTest, ExplicitlyDisableViaOverride) {
- EnableDefaultHealthCheckService(true);
- EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
- std::unique_ptr empty_service;
- SetUpServer(true, true, std::move(empty_service));
- HealthCheckServiceInterface* service = server_->GetHealthCheckService();
- EXPECT_TRUE(service == nullptr);
-
- ResetStubs();
-
- SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
-}
-
-// Provide an explicit override of health checking service interface.
-TEST_F(HealthServiceEnd2endTest, ExplicitlyOverride) {
- EnableDefaultHealthCheckService(true);
- EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
- std::unique_ptr override_service(
- new CustomHealthCheckService(&health_check_service_impl_));
- HealthCheckServiceInterface* underlying_service = override_service.get();
- SetUpServer(false, true, std::move(override_service));
- HealthCheckServiceInterface* service = server_->GetHealthCheckService();
- EXPECT_TRUE(service == underlying_service);
-
- ResetStubs();
-
- VerifyHealthCheckService();
-}
+// TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
+// EnableDefaultHealthCheckService(true);
+// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+// SetUpServer(true, false, nullptr);
+// VerifyHealthCheckService();
+//
+// // The default service has a size limit of the service name.
+// const grpc::string kTooLongServiceName(201, 'x');
+// SendHealthCheckRpc(kTooLongServiceName,
+// Status(StatusCode::INVALID_ARGUMENT, ""));
+// }
+//
+// void LoopCompletionQueue(ServerCompletionQueue* cq) {
+// void* tag;
+// bool ok;
+// while (cq->Next(&tag, &ok)) {
+// abort(); // Nothing should come out of the cq.
+// }
+// gpr_log(GPR_ERROR, "returning from thread");
+// }
+//
+// TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsync) {
+// EnableDefaultHealthCheckService(true);
+// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+// SetUpServer(false, false, nullptr);
+// cq_thread_ = std::thread(LoopCompletionQueue, cq_.get());
+// VerifyHealthCheckService();
+//
+// // The default service has a size limit of the service name.
+// const grpc::string kTooLongServiceName(201, 'x');
+// SendHealthCheckRpc(kTooLongServiceName,
+// Status(StatusCode::INVALID_ARGUMENT, ""));
+// }
+//
+// // Provide an empty service to disable the default service.
+// TEST_F(HealthServiceEnd2endTest, ExplicitlyDisableViaOverride) {
+// EnableDefaultHealthCheckService(true);
+// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+// std::unique_ptr empty_service;
+// SetUpServer(true, true, std::move(empty_service));
+// HealthCheckServiceInterface* service = server_->GetHealthCheckService();
+// EXPECT_TRUE(service == nullptr);
+//
+// ResetStubs();
+//
+// SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
+// }
+//
+// // Provide an explicit override of health checking service interface.
+// TEST_F(HealthServiceEnd2endTest, ExplicitlyOverride) {
+// EnableDefaultHealthCheckService(true);
+// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+// std::unique_ptr override_service(
+// new CustomHealthCheckService(&health_check_service_impl_));
+// HealthCheckServiceInterface* underlying_service = override_service.get();
+// SetUpServer(false, true, std::move(override_service));
+// HealthCheckServiceInterface* service = server_->GetHealthCheckService();
+// EXPECT_TRUE(service == underlying_service);
+//
+// ResetStubs();
+//
+// VerifyHealthCheckService();
+// }
} // namespace
} // namespace testing
From a3c95529c7e1267c8d7e78e689ab8a4699adebf0 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 29 Dec 2016 12:10:52 -0800
Subject: [PATCH 18/95] async works
---
src/cpp/server/server_cc.cc | 2 -
.../end2end/health_service_end2end_test.cc | 128 +++++++++---------
2 files changed, 64 insertions(+), 66 deletions(-)
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 43f09470959..8a0ad36c535 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -617,10 +617,8 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
auto* default_hc_service = new DefaultHealthCheckService;
health_check_service_.reset(default_hc_service);
if (!sync_server_cqs_->empty()) { // Has sync methods.
- gpr_log(GPR_ERROR, "register sync"); // XXX
RegisterService(nullptr, default_hc_service->GetSyncHealthCheckService());
} else {
- gpr_log(GPR_ERROR, "register async"); // XXX
async_health_service = default_hc_service->GetAsyncHealthCheckService();
RegisterService(nullptr, async_health_service);
}
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
index 9f2df90207a..beb84e0a3fc 100644
--- a/test/cpp/end2end/health_service_end2end_test.cc
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -120,6 +120,14 @@ class CustomHealthCheckService : public HealthCheckServiceInterface {
HealthCheckServiceImpl* impl_; // not owned
};
+void LoopCompletionQueue(ServerCompletionQueue* cq) {
+ void* tag;
+ bool ok;
+ while (cq->Next(&tag, &ok)) {
+ abort(); // Nothing should come out of the cq.
+ }
+}
+
class HealthServiceEnd2endTest : public ::testing::Test {
protected:
HealthServiceEnd2endTest() {}
@@ -160,6 +168,7 @@ class HealthServiceEnd2endTest : public ::testing::Test {
if (cq_thread_.joinable()) {
cq_thread_.join();
}
+ LoopCompletionQueue(cq_.get());
}
}
@@ -223,9 +232,9 @@ class HealthServiceEnd2endTest : public ::testing::Test {
TestServiceImpl echo_test_service_;
HealthCheckServiceImpl health_check_service_impl_;
std::unique_ptr hc_stub_;
+ std::unique_ptr cq_;
std::unique_ptr server_;
std::ostringstream server_address_;
- std::unique_ptr cq_;
std::thread cq_thread_;
};
@@ -242,69 +251,60 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceDisabled) {
SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
}
-// TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
-// EnableDefaultHealthCheckService(true);
-// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
-// SetUpServer(true, false, nullptr);
-// VerifyHealthCheckService();
-//
-// // The default service has a size limit of the service name.
-// const grpc::string kTooLongServiceName(201, 'x');
-// SendHealthCheckRpc(kTooLongServiceName,
-// Status(StatusCode::INVALID_ARGUMENT, ""));
-// }
-//
-// void LoopCompletionQueue(ServerCompletionQueue* cq) {
-// void* tag;
-// bool ok;
-// while (cq->Next(&tag, &ok)) {
-// abort(); // Nothing should come out of the cq.
-// }
-// gpr_log(GPR_ERROR, "returning from thread");
-// }
-//
-// TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsync) {
-// EnableDefaultHealthCheckService(true);
-// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
-// SetUpServer(false, false, nullptr);
-// cq_thread_ = std::thread(LoopCompletionQueue, cq_.get());
-// VerifyHealthCheckService();
-//
-// // The default service has a size limit of the service name.
-// const grpc::string kTooLongServiceName(201, 'x');
-// SendHealthCheckRpc(kTooLongServiceName,
-// Status(StatusCode::INVALID_ARGUMENT, ""));
-// }
-//
-// // Provide an empty service to disable the default service.
-// TEST_F(HealthServiceEnd2endTest, ExplicitlyDisableViaOverride) {
-// EnableDefaultHealthCheckService(true);
-// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
-// std::unique_ptr empty_service;
-// SetUpServer(true, true, std::move(empty_service));
-// HealthCheckServiceInterface* service = server_->GetHealthCheckService();
-// EXPECT_TRUE(service == nullptr);
-//
-// ResetStubs();
-//
-// SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
-// }
-//
-// // Provide an explicit override of health checking service interface.
-// TEST_F(HealthServiceEnd2endTest, ExplicitlyOverride) {
-// EnableDefaultHealthCheckService(true);
-// EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
-// std::unique_ptr override_service(
-// new CustomHealthCheckService(&health_check_service_impl_));
-// HealthCheckServiceInterface* underlying_service = override_service.get();
-// SetUpServer(false, true, std::move(override_service));
-// HealthCheckServiceInterface* service = server_->GetHealthCheckService();
-// EXPECT_TRUE(service == underlying_service);
-//
-// ResetStubs();
-//
-// VerifyHealthCheckService();
-// }
+TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ SetUpServer(true, false, nullptr);
+ VerifyHealthCheckService();
+
+ // The default service has a size limit of the service name.
+ const grpc::string kTooLongServiceName(201, 'x');
+ SendHealthCheckRpc(kTooLongServiceName,
+ Status(StatusCode::INVALID_ARGUMENT, ""));
+}
+
+TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsync) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ SetUpServer(false, false, nullptr);
+ cq_thread_ = std::thread(LoopCompletionQueue, cq_.get());
+ VerifyHealthCheckService();
+
+ // The default service has a size limit of the service name.
+ const grpc::string kTooLongServiceName(201, 'x');
+ SendHealthCheckRpc(kTooLongServiceName,
+ Status(StatusCode::INVALID_ARGUMENT, ""));
+}
+
+// Provide an empty service to disable the default service.
+TEST_F(HealthServiceEnd2endTest, ExplicitlyDisableViaOverride) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ std::unique_ptr empty_service;
+ SetUpServer(true, true, std::move(empty_service));
+ HealthCheckServiceInterface* service = server_->GetHealthCheckService();
+ EXPECT_TRUE(service == nullptr);
+
+ ResetStubs();
+
+ SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
+}
+
+// Provide an explicit override of health checking service interface.
+TEST_F(HealthServiceEnd2endTest, ExplicitlyOverride) {
+ EnableDefaultHealthCheckService(true);
+ EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
+ std::unique_ptr override_service(
+ new CustomHealthCheckService(&health_check_service_impl_));
+ HealthCheckServiceInterface* underlying_service = override_service.get();
+ SetUpServer(false, true, std::move(override_service));
+ HealthCheckServiceInterface* service = server_->GetHealthCheckService();
+ EXPECT_TRUE(service == underlying_service);
+
+ ResetStubs();
+
+ VerifyHealthCheckService();
+}
} // namespace
} // namespace testing
From ef163280637a288685bd6f09c548fc02f6bf513f Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 29 Dec 2016 13:21:04 -0800
Subject: [PATCH 19/95] cleanup
---
.../health/default_health_check_service.cc | 65 ++++++++-----------
.../health/default_health_check_service.h | 41 +++++-------
src/cpp/server/server_cc.cc | 22 +++----
3 files changed, 52 insertions(+), 76 deletions(-)
diff --git a/src/cpp/server/health/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc
index 26d8fd999fb..9743bd5775e 100644
--- a/src/cpp/server/health/default_health_check_service.cc
+++ b/src/cpp/server/health/default_health_check_service.cc
@@ -45,12 +45,25 @@
namespace grpc {
namespace {
-
const char kHealthCheckMethodName[] = "/grpc.health.v1.Health/Check";
+} // namespace
+
+DefaultHealthCheckService::HealthCheckServiceImpl::HealthCheckServiceImpl(
+ DefaultHealthCheckService* service, bool sync)
+ : service_(service), method_(nullptr), sync_(sync) {
+ MethodHandler* handler = nullptr;
+ if (sync_) {
+ handler =
+ new RpcMethodHandler(
+ std::mem_fn(&HealthCheckServiceImpl::Check), this);
+ }
+ method_ = new RpcServiceMethod(kHealthCheckMethodName, RpcMethod::NORMAL_RPC,
+ handler);
+ AddMethod(method_);
+}
-Status CheckHealth(const DefaultHealthCheckService* service,
- ServerContext* context, const ByteBuffer* request,
- ByteBuffer* response) {
+Status DefaultHealthCheckService::HealthCheckServiceImpl::Check(
+ ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
// Decode request.
std::vector slices;
request->Dump(&slices);
@@ -87,7 +100,7 @@ Status CheckHealth(const DefaultHealthCheckService* service,
// Check status from the associated default health checking service.
DefaultHealthCheckService::ServingStatus serving_status =
- service->GetServingStatus(
+ service_->GetServingStatus(
request_struct.has_service ? request_struct.service : "");
if (serving_status == DefaultHealthCheckService::NOT_FOUND) {
return Status(StatusCode::NOT_FOUND, "");
@@ -117,41 +130,8 @@ Status CheckHealth(const DefaultHealthCheckService* service,
response->Swap(&response_buffer);
return Status::OK;
}
-} // namespace
-DefaultHealthCheckService::SyncHealthCheckServiceImpl::
- SyncHealthCheckServiceImpl(DefaultHealthCheckService* service)
- : service_(service) {
- auto* handler =
- new RpcMethodHandler(
- std::mem_fn(&SyncHealthCheckServiceImpl::Check), this);
- auto* method = new RpcServiceMethod(kHealthCheckMethodName,
- RpcMethod::NORMAL_RPC, handler);
- AddMethod(method);
-}
-
-Status DefaultHealthCheckService::SyncHealthCheckServiceImpl::Check(
- ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
- return CheckHealth(service_, context, request, response);
-}
-
-DefaultHealthCheckService::AsyncHealthCheckServiceImpl::
- AsyncHealthCheckServiceImpl(DefaultHealthCheckService* service)
- : service_(service) {
- auto* method = new RpcServiceMethod(kHealthCheckMethodName,
- RpcMethod::NORMAL_RPC, nullptr);
- AddMethod(method);
- method_ = method;
-}
-
-Status DefaultHealthCheckService::AsyncHealthCheckServiceImpl::Check(
- ServerContext* context, const ByteBuffer* request, ByteBuffer* response) {
- return CheckHealth(service_, context, request, response);
-}
-
-DefaultHealthCheckService::DefaultHealthCheckService()
- : sync_service_(new SyncHealthCheckServiceImpl(this)),
- async_service_(new AsyncHealthCheckServiceImpl(this)) {
+DefaultHealthCheckService::DefaultHealthCheckService() {
services_map_.emplace("", true);
}
@@ -179,4 +159,11 @@ DefaultHealthCheckService::GetServingStatus(
return iter->second ? SERVING : NOT_SERVING;
}
+DefaultHealthCheckService::HealthCheckServiceImpl*
+DefaultHealthCheckService::GetHealthCheckService(bool sync) {
+ GPR_ASSERT(impl_ == nullptr);
+ impl_.reset(new HealthCheckServiceImpl(this, sync));
+ return impl_.get();
+}
+
} // namespace grpc
diff --git a/src/cpp/server/health/default_health_check_service.h b/src/cpp/server/health/default_health_check_service.h
index 411aac97138..1ecb0a2ba94 100644
--- a/src/cpp/server/health/default_health_check_service.h
+++ b/src/cpp/server/health/default_health_check_service.h
@@ -44,47 +44,40 @@ namespace grpc {
// Default implementation of HealthCheckServiceInterface. Server will create and
// own it.
-class DefaultHealthCheckService : public HealthCheckServiceInterface {
+class DefaultHealthCheckService final : public HealthCheckServiceInterface {
public:
- class SyncHealthCheckServiceImpl : public Service {
+ // The service impl to register with the server.
+ class HealthCheckServiceImpl : public Service {
public:
- explicit SyncHealthCheckServiceImpl(DefaultHealthCheckService* service);
+ HealthCheckServiceImpl(DefaultHealthCheckService* service, bool sync);
+
Status Check(ServerContext* context, const ByteBuffer* request,
ByteBuffer* response);
- private:
- const DefaultHealthCheckService* service_;
- };
+ bool sync() { return sync_; }
- class AsyncHealthCheckServiceImpl : public Service {
- public:
- explicit AsyncHealthCheckServiceImpl(DefaultHealthCheckService* service);
- Status Check(ServerContext* context, const ByteBuffer* request,
- ByteBuffer* response);
- const RpcServiceMethod* method() const { return method_; }
+ // This is only useful for the async mode. It should be called after
+ // RegisterService returns.
+ void* server_tag() const { return method_->server_tag(); }
private:
- const DefaultHealthCheckService* service_;
- const RpcServiceMethod* method_;
+ const DefaultHealthCheckService* const service_;
+ RpcServiceMethod* method_;
+ const bool sync_;
};
DefaultHealthCheckService();
- void SetServingStatus(const grpc::string& service_name, bool serving) final;
- void SetServingStatus(bool serving) final;
+ void SetServingStatus(const grpc::string& service_name,
+ bool serving) override;
+ void SetServingStatus(bool serving) override;
enum ServingStatus { NOT_FOUND, SERVING, NOT_SERVING };
ServingStatus GetServingStatus(const grpc::string& service_name) const;
- SyncHealthCheckServiceImpl* GetSyncHealthCheckService() const {
- return sync_service_.get();
- }
- AsyncHealthCheckServiceImpl* GetAsyncHealthCheckService() const {
- return async_service_.get();
- }
+ HealthCheckServiceImpl* GetHealthCheckService(bool sync);
private:
mutable std::mutex mu_;
std::map services_map_;
- std::unique_ptr sync_service_;
- std::unique_ptr async_service_;
+ std::unique_ptr impl_;
};
} // namespace grpc
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 8a0ad36c535..d9c972c64a0 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -144,14 +144,14 @@ class Server::HealthCheckAsyncRequest final
public RegisteredAsyncRequest {
public:
HealthCheckAsyncRequest(
- DefaultHealthCheckService::AsyncHealthCheckServiceImpl* service,
+ DefaultHealthCheckService::HealthCheckServiceImpl* service,
Server* server, ServerCompletionQueue* cq)
: RegisteredAsyncRequest(server, &server_context_, &rpc_, cq, this,
false),
service_(service),
server_(server),
cq_(cq) {
- IssueRequest(service->method()->server_tag(), &payload_, cq);
+ IssueRequest(service->server_tag(), &payload_, cq);
}
bool FinalizeResult(void** tag, bool* status) override;
@@ -161,7 +161,7 @@ class Server::HealthCheckAsyncRequest final
ServerContext* server_context() { return &server_context_; }
private:
- DefaultHealthCheckService::AsyncHealthCheckServiceImpl* service_;
+ DefaultHealthCheckService::HealthCheckServiceImpl* service_;
Server* const server_;
ServerCompletionQueue* const cq_;
grpc_byte_buffer* payload_;
@@ -610,18 +610,14 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
// Only create default health check service when user did not provide an
// explicit one.
- DefaultHealthCheckService::AsyncHealthCheckServiceImpl* async_health_service =
- nullptr;
+ DefaultHealthCheckService::HealthCheckServiceImpl* health_service = nullptr;
if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
DefaultHealthCheckServiceEnabled()) {
auto* default_hc_service = new DefaultHealthCheckService;
health_check_service_.reset(default_hc_service);
- if (!sync_server_cqs_->empty()) { // Has sync methods.
- RegisterService(nullptr, default_hc_service->GetSyncHealthCheckService());
- } else {
- async_health_service = default_hc_service->GetAsyncHealthCheckService();
- RegisterService(nullptr, async_health_service);
- }
+ health_service =
+ default_hc_service->GetHealthCheckService(!sync_server_cqs_->empty());
+ RegisterService(nullptr, health_service);
}
grpc_server_start(server_);
@@ -638,10 +634,10 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
}
}
- if (async_health_service) {
+ if (health_service && !health_service->sync()) {
for (size_t i = 0; i < num_cqs; i++) {
if (cqs[i]->IsFrequentlyPolled()) {
- new HealthCheckAsyncRequest(async_health_service, this, cqs[i]);
+ new HealthCheckAsyncRequest(health_service, this, cqs[i]);
}
}
}
From a36ea4be8b3aa665be7b789ce4b4f97506f2ad65 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 29 Dec 2016 13:45:06 -0800
Subject: [PATCH 20/95] remove file
---
...lth_check_service_server_builder_option.cc | 50 -------------------
1 file changed, 50 deletions(-)
delete mode 100644 src/cpp/ext/health_check_service_server_builder_option.cc
diff --git a/src/cpp/ext/health_check_service_server_builder_option.cc b/src/cpp/ext/health_check_service_server_builder_option.cc
deleted file mode 100644
index 0d523285e9c..00000000000
--- a/src/cpp/ext/health_check_service_server_builder_option.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#include
-
-namespace grpc {
-
-HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
- std::unique_ptr hc)
- : hc_(std::move(hc)) {}
-
-HealthCheckServiceServerBuilderOption::UpdateArguments(
- ChannelArguments* args) override {
- args->SetPointer(DefaultHealthCheckServiceInterfaceArg(), hc_.release());
-}
-
-void HealthCheckServiceServerBuilderOption::UpdatePlugins(
- std::vector>* plugins) override {}
-
-} // namespace grpc
From b90631d3f08aaea88345a2ce950bf16fbcb77ad0 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 29 Dec 2016 14:08:13 -0800
Subject: [PATCH 21/95] more cleanup
---
.../grpc++/health_check_service_interface.h | 13 ++-
...lth_check_service_server_builder_option.cc | 2 +-
src/cpp/server/server_cc.cc | 89 ++++++++++---------
3 files changed, 56 insertions(+), 48 deletions(-)
diff --git a/include/grpc++/health_check_service_interface.h b/include/grpc++/health_check_service_interface.h
index 70153d65cbb..0eed7026839 100644
--- a/include/grpc++/health_check_service_interface.h
+++ b/include/grpc++/health_check_service_interface.h
@@ -38,26 +38,31 @@
namespace grpc {
-const char kDefaultHealthCheckServiceInterfaceArg[] =
- "grpc.default_health_check_service_interface";
+const char kHealthCheckServiceInterfaceArg[] =
+ "grpc.health_check_service_interface";
+// The gRPC server uses this interface to expose the health checking service
+// without depending on protobuf.
class HealthCheckServiceInterface {
public:
virtual ~HealthCheckServiceInterface() {}
+
+ // Set or change the serving status of the given service_name.
virtual void SetServingStatus(const grpc::string& service_name,
bool serving) = 0;
// Apply to all registered service names.
virtual void SetServingStatus(bool serving) = 0;
};
-bool DefaultHealthCheckServiceEnabled();
-
// Enable/disable the default health checking service. This applies to all C++
// servers created afterwards. For each server, user can override the default
// with a HealthCheckServiceServerBuilderOption.
// NOT thread safe.
void EnableDefaultHealthCheckService(bool enable);
+// NOT thread safe.
+bool DefaultHealthCheckServiceEnabled();
+
} // namespace grpc
#endif // GRPCXX_HEALTH_CHECK_SERVICE_INTERFACE_H
diff --git a/src/cpp/server/health/health_check_service_server_builder_option.cc b/src/cpp/server/health/health_check_service_server_builder_option.cc
index 6680bed2e2b..24264204b35 100644
--- a/src/cpp/server/health/health_check_service_server_builder_option.cc
+++ b/src/cpp/server/health/health_check_service_server_builder_option.cc
@@ -41,7 +41,7 @@ HealthCheckServiceServerBuilderOption::HealthCheckServiceServerBuilderOption(
// Hand over hc_ to the server.
void HealthCheckServiceServerBuilderOption::UpdateArguments(
ChannelArguments* args) {
- args->SetPointer(kDefaultHealthCheckServiceInterfaceArg, hc_.release());
+ args->SetPointer(kHealthCheckServiceInterfaceArg, hc_.release());
}
void HealthCheckServiceServerBuilderOption::UpdatePlugins(
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index d9c972c64a0..00aea485db9 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -119,6 +119,9 @@ class Server::UnimplementedAsyncResponse final
UnimplementedAsyncRequest* const request_;
};
+// This is a dummy implementation of the interface so that
+// HealthCheckAsyncRequest can get Call from RegisteredAsyncRequest. It does not
+// do any reading or writing.
class HealthCheckAsyncResponseWriter final
: public ServerAsyncStreamingInterface {
public:
@@ -189,47 +192,6 @@ class Server::HealthCheckAsyncResponse final
HealthCheckAsyncRequest* const request_;
};
-bool Server::HealthCheckAsyncRequest::FinalizeResult(void** tag, bool* status) {
- bool serialization_status =
- *status && payload_ &&
- SerializationTraits::Deserialize(
- payload_, &request_, server_->max_receive_message_size())
- .ok();
- RegisteredAsyncRequest::FinalizeResult(tag, status);
- *status = serialization_status && *status;
- if (*status) {
- new HealthCheckAsyncRequest(service_, server_, cq_);
- status_ = service_->Check(&server_context_, &request_, &response_);
- new HealthCheckAsyncResponse(this);
- return false;
- } else {
- delete this;
- return false;
- }
-}
-
-Server::HealthCheckAsyncResponse::HealthCheckAsyncResponse(
- HealthCheckAsyncRequest* request)
- : request_(request) {
- ServerContext* context = request_->server_context();
- if (!context->sent_initial_metadata_) {
- SendInitialMetadata(context->initial_metadata_,
- context->initial_metadata_flags());
- if (context->compression_level_set()) {
- set_compression_level(context->compression_level());
- }
- context->sent_initial_metadata_ = true;
- }
- Status* status = request_->status();
- if (status->ok()) {
- ServerSendStatus(context->trailing_metadata_,
- SendMessage(*request_->response()));
- } else {
- ServerSendStatus(context->trailing_metadata_, *status);
- }
- request_->call()->PerformOps(this);
-}
-
class ShutdownTag : public CompletionQueueTag {
public:
bool FinalizeResult(void** tag, bool* status) { return false; }
@@ -490,8 +452,8 @@ Server::Server(
args->SetChannelArgs(&channel_args);
for (size_t i = 0; i < channel_args.num_args; i++) {
- if (0 == strcmp(channel_args.args[i].key,
- kDefaultHealthCheckServiceInterfaceArg)) {
+ if (0 ==
+ strcmp(channel_args.args[i].key, kHealthCheckServiceInterfaceArg)) {
if (channel_args.args[i].value.pointer.p == nullptr) {
health_check_service_disabled_ = true;
} else {
@@ -822,6 +784,47 @@ Server::UnimplementedAsyncResponse::UnimplementedAsyncResponse(
request_->stream()->call_.PerformOps(this);
}
+bool Server::HealthCheckAsyncRequest::FinalizeResult(void** tag, bool* status) {
+ bool serialization_status =
+ *status && payload_ &&
+ SerializationTraits::Deserialize(
+ payload_, &request_, server_->max_receive_message_size())
+ .ok();
+ RegisteredAsyncRequest::FinalizeResult(tag, status);
+ *status = serialization_status && *status;
+ if (*status) {
+ new HealthCheckAsyncRequest(service_, server_, cq_);
+ status_ = service_->Check(&server_context_, &request_, &response_);
+ new HealthCheckAsyncResponse(this);
+ return false;
+ } else {
+ delete this;
+ return false;
+ }
+}
+
+Server::HealthCheckAsyncResponse::HealthCheckAsyncResponse(
+ HealthCheckAsyncRequest* request)
+ : request_(request) {
+ ServerContext* context = request_->server_context();
+ if (!context->sent_initial_metadata_) {
+ SendInitialMetadata(context->initial_metadata_,
+ context->initial_metadata_flags());
+ if (context->compression_level_set()) {
+ set_compression_level(context->compression_level());
+ }
+ context->sent_initial_metadata_ = true;
+ }
+ Status* status = request_->status();
+ if (status->ok()) {
+ ServerSendStatus(context->trailing_metadata_,
+ SendMessage(*request_->response()));
+ } else {
+ ServerSendStatus(context->trailing_metadata_, *status);
+ }
+ request_->call()->PerformOps(this);
+}
+
ServerInitializer* Server::initializer() { return server_initializer_.get(); }
} // namespace grpc
From 35674af901576b078fe158814fa9d730e09426f6 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 29 Dec 2016 15:15:12 -0800
Subject: [PATCH 22/95] make test robust
---
.../end2end/health_service_end2end_test.cc | 25 +++++++++++--------
1 file changed, 15 insertions(+), 10 deletions(-)
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
index beb84e0a3fc..8a6a9886c9a 100644
--- a/test/cpp/end2end/health_service_end2end_test.cc
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -132,7 +132,7 @@ class HealthServiceEnd2endTest : public ::testing::Test {
protected:
HealthServiceEnd2endTest() {}
- void SetUpServer(bool register_sync_test_service,
+ void SetUpServer(bool register_sync_test_service, bool add_async_cq,
bool explicit_health_service,
std::unique_ptr service) {
int port = grpc_pick_unused_port_or_die();
@@ -157,18 +157,21 @@ class HealthServiceEnd2endTest : public ::testing::Test {
if (register_sync_health_service_impl) {
builder.RegisterService(&health_check_service_impl_);
}
- cq_ = builder.AddCompletionQueue();
+ if (add_async_cq) {
+ cq_ = builder.AddCompletionQueue();
+ }
server_ = builder.BuildAndStart();
}
void TearDown() override {
if (server_) {
server_->Shutdown();
- cq_->Shutdown();
+ if (cq_ != nullptr) {
+ cq_->Shutdown();
+ }
if (cq_thread_.joinable()) {
cq_thread_.join();
}
- LoopCompletionQueue(cq_.get());
}
}
@@ -241,7 +244,7 @@ class HealthServiceEnd2endTest : public ::testing::Test {
TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceDisabled) {
EnableDefaultHealthCheckService(false);
EXPECT_FALSE(DefaultHealthCheckServiceEnabled());
- SetUpServer(true, false, nullptr);
+ SetUpServer(true, false, false, nullptr);
HealthCheckServiceInterface* default_service =
server_->GetHealthCheckService();
EXPECT_TRUE(default_service == nullptr);
@@ -254,7 +257,7 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceDisabled) {
TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
EnableDefaultHealthCheckService(true);
EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
- SetUpServer(true, false, nullptr);
+ SetUpServer(true, false, false, nullptr);
VerifyHealthCheckService();
// The default service has a size limit of the service name.
@@ -263,11 +266,13 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthService) {
Status(StatusCode::INVALID_ARGUMENT, ""));
}
-TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsync) {
+// The server has no sync service.
+TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsyncOnly) {
EnableDefaultHealthCheckService(true);
EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
- SetUpServer(false, false, nullptr);
+ SetUpServer(false, true, false, nullptr);
cq_thread_ = std::thread(LoopCompletionQueue, cq_.get());
+
VerifyHealthCheckService();
// The default service has a size limit of the service name.
@@ -281,7 +286,7 @@ TEST_F(HealthServiceEnd2endTest, ExplicitlyDisableViaOverride) {
EnableDefaultHealthCheckService(true);
EXPECT_TRUE(DefaultHealthCheckServiceEnabled());
std::unique_ptr empty_service;
- SetUpServer(true, true, std::move(empty_service));
+ SetUpServer(true, false, true, std::move(empty_service));
HealthCheckServiceInterface* service = server_->GetHealthCheckService();
EXPECT_TRUE(service == nullptr);
@@ -297,7 +302,7 @@ TEST_F(HealthServiceEnd2endTest, ExplicitlyOverride) {
std::unique_ptr override_service(
new CustomHealthCheckService(&health_check_service_impl_));
HealthCheckServiceInterface* underlying_service = override_service.get();
- SetUpServer(false, true, std::move(override_service));
+ SetUpServer(false, false, true, std::move(override_service));
HealthCheckServiceInterface* service = server_->GetHealthCheckService();
EXPECT_TRUE(service == underlying_service);
From 8bd6a0542b7d3ad08497e14fce5470cb50c7bc87 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Wed, 4 Jan 2017 13:10:30 -0800
Subject: [PATCH 23/95] remove copyright from generated files
---
...alth_check_service_server_builder_option.h | 3 +-
src/cpp/server/health/health.pb.c | 32 -------------------
src/cpp/server/health/health.pb.h | 32 -------------------
3 files changed, 2 insertions(+), 65 deletions(-)
diff --git a/include/grpc++/ext/health_check_service_server_builder_option.h b/include/grpc++/ext/health_check_service_server_builder_option.h
index 2dd1e6dd329..4861daacd40 100644
--- a/include/grpc++/ext/health_check_service_server_builder_option.h
+++ b/include/grpc++/ext/health_check_service_server_builder_option.h
@@ -44,7 +44,8 @@ namespace grpc {
class HealthCheckServiceServerBuilderOption : public ServerBuilderOption {
public:
- // Use nullptr to disable default service.
+ // The ownership of hc will be taken and transferred to the grpc server.
+ // To explicitly disable default service, pass in a nullptr.
explicit HealthCheckServiceServerBuilderOption(
std::unique_ptr hc);
~HealthCheckServiceServerBuilderOption() override {}
diff --git a/src/cpp/server/health/health.pb.c b/src/cpp/server/health/health.pb.c
index 1fca2c55c84..09bd98a3d97 100644
--- a/src/cpp/server/health/health.pb.c
+++ b/src/cpp/server/health/health.pb.c
@@ -1,35 +1,3 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
/* Automatically generated nanopb constant definitions */
/* Generated by nanopb-0.3.7-dev */
diff --git a/src/cpp/server/health/health.pb.h b/src/cpp/server/health/health.pb.h
index dc790fb1035..7051b3260ac 100644
--- a/src/cpp/server/health/health.pb.h
+++ b/src/cpp/server/health/health.pb.h
@@ -1,35 +1,3 @@
-/*
- *
- * Copyright 2016, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
/* Automatically generated nanopb header */
/* Generated by nanopb-0.3.7-dev */
From 26d20a8016feaeb0a2fe182505ee60960fb03275 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Wed, 4 Jan 2017 13:12:39 -0800
Subject: [PATCH 24/95] exclude newly added file from copyright check
---
tools/distrib/check_copyright.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/distrib/check_copyright.py b/tools/distrib/check_copyright.py
index 718bb563f3a..4f9655e9950 100755
--- a/tools/distrib/check_copyright.py
+++ b/tools/distrib/check_copyright.py
@@ -105,6 +105,8 @@ _EXEMPT = frozenset((
'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h',
'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c',
+ 'src/cpp/server/health/health.pb.h',
+ 'src/cpp/server/health/health.pb.c',
# An older file originally from outside gRPC.
'src/php/tests/bootstrap.php',
From 850fcb97d235a5fe977d5aa8489fbcab5c837c50 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Wed, 11 Jan 2017 14:26:15 -0800
Subject: [PATCH 25/95] typo
---
BUILD | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/BUILD b/BUILD
index 350ed1baf0b..9842015b06b 100644
--- a/BUILD
+++ b/BUILD
@@ -1100,7 +1100,7 @@ grpc_cc_library(
"src/cpp/client/create_channel_internal.h",
"src/cpp/common/channel_filter.h",
"src/cpp/server/dynamic_thread_pool.h",
- "src/cpp/server/health/defult_health_check_service.h",
+ "src/cpp/server/health/default_health_check_service.h",
"src/cpp/server/health/health.pb.h",
"src/cpp/server/thread_pool_interface.h",
"src/cpp/thread_manager/thread_manager.h",
From 8fe20bf093a96a50d0e1021e51f26c9e418fcb65 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 12 Jan 2017 10:33:12 -0800
Subject: [PATCH 26/95] typo
---
BUILD | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/BUILD b/BUILD
index 9842015b06b..9738085ee37 100644
--- a/BUILD
+++ b/BUILD
@@ -1117,7 +1117,7 @@ grpc_cc_library(
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
- "include/grpc++/health_check_service_interfac.h",
+ "include/grpc++/health_check_service_interface.h",
"include/grpc++/impl/call.h",
"include/grpc++/impl/client_unary_call.h",
"include/grpc++/impl/codegen/core_codegen.h",
From 0ed9fd4fefc832a4fa8019e377ed350cca6c72bf Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 26 Jan 2017 15:33:39 -0800
Subject: [PATCH 27/95] update submodules
---
CMakeLists.txt | 583 +++++++-
Makefile | 719 +++++++++-
binding.gyp | 41 +-
config.m4 | 43 +-
grpc.gemspec | 58 +-
package.xml | 58 +-
src/boringssl/err_data.c | 1266 +++++++++--------
src/python/grpcio/grpc_core_dependencies.py | 41 +-
.../generated/sources_and_headers.json | 291 +++-
tools/run_tests/generated/tests.json | 248 +++-
.../vcxproj/boringssl/boringssl.vcxproj | 93 +-
.../boringssl/boringssl.vcxproj.filters | 170 +--
.../boringssl_chacha_test.vcxproj} | 10 +-
.../boringssl_chacha_test.vcxproj.filters} | 0
.../boringssl_chacha_test_lib.vcxproj | 170 +++
.../boringssl_chacha_test_lib.vcxproj.filters | 24 +
.../boringssl_ecdh_test.vcxproj | 198 +++
.../boringssl_ecdh_test.vcxproj.filters | 7 +
.../boringssl_ecdh_test_lib.vcxproj} | 8 +-
.../boringssl_ecdh_test_lib.vcxproj.filters | 24 +
.../boringssl_ecdsa_sign_test.vcxproj | 198 +++
.../boringssl_ecdsa_sign_test.vcxproj.filters | 7 +
.../boringssl_ecdsa_sign_test_lib.vcxproj | 170 +++
...ingssl_ecdsa_sign_test_lib.vcxproj.filters | 24 +
.../boringssl_ecdsa_verify_test.vcxproj | 198 +++
...oringssl_ecdsa_verify_test.vcxproj.filters | 7 +
.../boringssl_ecdsa_verify_test_lib.vcxproj | 170 +++
...gssl_ecdsa_verify_test_lib.vcxproj.filters | 24 +
.../boringssl_gcm_test_lib.vcxproj | 2 +-
.../boringssl_gcm_test_lib.vcxproj.filters | 2 +-
...boringssl_newhope_statistical_test.vcxproj | 198 +++
...l_newhope_statistical_test.vcxproj.filters | 7 +
...ngssl_newhope_statistical_test_lib.vcxproj | 170 +++
...whope_statistical_test_lib.vcxproj.filters | 24 +
.../boringssl_newhope_test.vcxproj | 198 +++
.../boringssl_newhope_test.vcxproj.filters | 7 +
.../boringssl_newhope_test_lib.vcxproj | 170 +++
...boringssl_newhope_test_lib.vcxproj.filters | 24 +
.../boringssl_newhope_vectors_test.vcxproj | 198 +++
...ngssl_newhope_vectors_test.vcxproj.filters | 7 +
...boringssl_newhope_vectors_test_lib.vcxproj | 170 +++
...l_newhope_vectors_test_lib.vcxproj.filters | 24 +
.../boringssl_obj_test.vcxproj | 198 +++
.../boringssl_obj_test.vcxproj.filters | 7 +
.../boringssl_obj_test_lib.vcxproj | 170 +++
.../boringssl_obj_test_lib.vcxproj.filters} | 16 +-
.../boringssl_spake25519_test.vcxproj | 198 +++
.../boringssl_spake25519_test.vcxproj.filters | 7 +
.../boringssl_spake25519_test_lib.vcxproj | 170 +++
...ingssl_spake25519_test_lib.vcxproj.filters | 24 +
50 files changed, 5703 insertions(+), 1138 deletions(-)
rename vsprojects/vcxproj/test/boringssl/{boringssl_pqueue_test/boringssl_pqueue_test.vcxproj => boringssl_chacha_test/boringssl_chacha_test.vcxproj} (97%)
rename vsprojects/vcxproj/test/boringssl/{boringssl_pqueue_test/boringssl_pqueue_test.vcxproj.filters => boringssl_chacha_test/boringssl_chacha_test.vcxproj.filters} (100%)
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj.filters
rename vsprojects/vcxproj/test/boringssl/{boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj => boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj} (97%)
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj
rename vsprojects/vcxproj/test/boringssl/{boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj.filters => boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj.filters} (52%)
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj.filters
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj
create mode 100644 vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj.filters
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7626e1d1587..e1c71f2c69f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2868,7 +2868,6 @@ add_library(boringssl
third_party/boringssl/crypto/aes/mode_wrappers.c
third_party/boringssl/crypto/asn1/a_bitstr.c
third_party/boringssl/crypto/asn1/a_bool.c
- third_party/boringssl/crypto/asn1/a_bytes.c
third_party/boringssl/crypto/asn1/a_d2i_fp.c
third_party/boringssl/crypto/asn1/a_dup.c
third_party/boringssl/crypto/asn1/a_enum.c
@@ -2887,18 +2886,14 @@ add_library(boringssl
third_party/boringssl/crypto/asn1/asn1_lib.c
third_party/boringssl/crypto/asn1/asn1_par.c
third_party/boringssl/crypto/asn1/asn_pack.c
- third_party/boringssl/crypto/asn1/bio_asn1.c
- third_party/boringssl/crypto/asn1/bio_ndef.c
third_party/boringssl/crypto/asn1/f_enum.c
third_party/boringssl/crypto/asn1/f_int.c
third_party/boringssl/crypto/asn1/f_string.c
third_party/boringssl/crypto/asn1/t_bitst.c
- third_party/boringssl/crypto/asn1/t_pkey.c
third_party/boringssl/crypto/asn1/tasn_dec.c
third_party/boringssl/crypto/asn1/tasn_enc.c
third_party/boringssl/crypto/asn1/tasn_fre.c
third_party/boringssl/crypto/asn1/tasn_new.c
- third_party/boringssl/crypto/asn1/tasn_prn.c
third_party/boringssl/crypto/asn1/tasn_typ.c
third_party/boringssl/crypto/asn1/tasn_utl.c
third_party/boringssl/crypto/asn1/x_bignum.c
@@ -2928,6 +2923,7 @@ add_library(boringssl
third_party/boringssl/crypto/bn/generic.c
third_party/boringssl/crypto/bn/kronecker.c
third_party/boringssl/crypto/bn/montgomery.c
+ third_party/boringssl/crypto/bn/montgomery_inv.c
third_party/boringssl/crypto/bn/mul.c
third_party/boringssl/crypto/bn/prime.c
third_party/boringssl/crypto/bn/random.c
@@ -2939,8 +2935,7 @@ add_library(boringssl
third_party/boringssl/crypto/bytestring/ber.c
third_party/boringssl/crypto/bytestring/cbb.c
third_party/boringssl/crypto/bytestring/cbs.c
- third_party/boringssl/crypto/chacha/chacha_generic.c
- third_party/boringssl/crypto/chacha/chacha_vec.c
+ third_party/boringssl/crypto/chacha/chacha.c
third_party/boringssl/crypto/cipher/aead.c
third_party/boringssl/crypto/cipher/cipher.c
third_party/boringssl/crypto/cipher/derive_key.c
@@ -2955,10 +2950,14 @@ add_library(boringssl
third_party/boringssl/crypto/cipher/tls_cbc.c
third_party/boringssl/crypto/cmac/cmac.c
third_party/boringssl/crypto/conf/conf.c
+ third_party/boringssl/crypto/cpu-aarch64-linux.c
+ third_party/boringssl/crypto/cpu-arm-linux.c
third_party/boringssl/crypto/cpu-arm.c
third_party/boringssl/crypto/cpu-intel.c
+ third_party/boringssl/crypto/cpu-ppc64le.c
third_party/boringssl/crypto/crypto.c
third_party/boringssl/crypto/curve25519/curve25519.c
+ third_party/boringssl/crypto/curve25519/spake25519.c
third_party/boringssl/crypto/curve25519/x25519-x86_64.c
third_party/boringssl/crypto/des/des.c
third_party/boringssl/crypto/dh/check.c
@@ -2967,8 +2966,6 @@ add_library(boringssl
third_party/boringssl/crypto/dh/params.c
third_party/boringssl/crypto/digest/digest.c
third_party/boringssl/crypto/digest/digests.c
- third_party/boringssl/crypto/directory_posix.c
- third_party/boringssl/crypto/directory_win.c
third_party/boringssl/crypto/dsa/dsa.c
third_party/boringssl/crypto/dsa/dsa_asn1.c
third_party/boringssl/crypto/ec/ec.c
@@ -2987,7 +2984,6 @@ add_library(boringssl
third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c
third_party/boringssl/crypto/engine/engine.c
third_party/boringssl/crypto/err/err.c
- third_party/boringssl/crypto/evp/algorithm.c
third_party/boringssl/crypto/evp/digestsign.c
third_party/boringssl/crypto/evp/evp.c
third_party/boringssl/crypto/evp/evp_asn1.c
@@ -2998,6 +2994,7 @@ add_library(boringssl
third_party/boringssl/crypto/evp/p_rsa.c
third_party/boringssl/crypto/evp/p_rsa_asn1.c
third_party/boringssl/crypto/evp/pbkdf.c
+ third_party/boringssl/crypto/evp/print.c
third_party/boringssl/crypto/evp/sign.c
third_party/boringssl/crypto/ex_data.c
third_party/boringssl/crypto/hkdf/hkdf.c
@@ -3011,6 +3008,12 @@ add_library(boringssl
third_party/boringssl/crypto/modes/ctr.c
third_party/boringssl/crypto/modes/gcm.c
third_party/boringssl/crypto/modes/ofb.c
+ third_party/boringssl/crypto/newhope/error_correction.c
+ third_party/boringssl/crypto/newhope/newhope.c
+ third_party/boringssl/crypto/newhope/ntt.c
+ third_party/boringssl/crypto/newhope/poly.c
+ third_party/boringssl/crypto/newhope/precomp.c
+ third_party/boringssl/crypto/newhope/reduce.c
third_party/boringssl/crypto/obj/obj.c
third_party/boringssl/crypto/obj/obj_xref.c
third_party/boringssl/crypto/pem/pem_all.c
@@ -3028,6 +3031,7 @@ add_library(boringssl
third_party/boringssl/crypto/poly1305/poly1305.c
third_party/boringssl/crypto/poly1305/poly1305_arm.c
third_party/boringssl/crypto/poly1305/poly1305_vec.c
+ third_party/boringssl/crypto/rand/deterministic.c
third_party/boringssl/crypto/rand/rand.c
third_party/boringssl/crypto/rand/urandom.c
third_party/boringssl/crypto/rand/windows.c
@@ -3052,11 +3056,13 @@ add_library(boringssl
third_party/boringssl/crypto/x509/a_sign.c
third_party/boringssl/crypto/x509/a_strex.c
third_party/boringssl/crypto/x509/a_verify.c
+ third_party/boringssl/crypto/x509/algorithm.c
third_party/boringssl/crypto/x509/asn1_gen.c
third_party/boringssl/crypto/x509/by_dir.c
third_party/boringssl/crypto/x509/by_file.c
third_party/boringssl/crypto/x509/i2d_pr.c
third_party/boringssl/crypto/x509/pkcs7.c
+ third_party/boringssl/crypto/x509/rsa_pss.c
third_party/boringssl/crypto/x509/t_crl.c
third_party/boringssl/crypto/x509/t_req.c
third_party/boringssl/crypto/x509/t_x509.c
@@ -3131,21 +3137,17 @@ add_library(boringssl
third_party/boringssl/crypto/x509v3/v3_utl.c
third_party/boringssl/ssl/custom_extensions.c
third_party/boringssl/ssl/d1_both.c
- third_party/boringssl/ssl/d1_clnt.c
third_party/boringssl/ssl/d1_lib.c
- third_party/boringssl/ssl/d1_meth.c
third_party/boringssl/ssl/d1_pkt.c
third_party/boringssl/ssl/d1_srtp.c
- third_party/boringssl/ssl/d1_srvr.c
+ third_party/boringssl/ssl/dtls_method.c
third_party/boringssl/ssl/dtls_record.c
- third_party/boringssl/ssl/pqueue/pqueue.c
+ third_party/boringssl/ssl/handshake_client.c
+ third_party/boringssl/ssl/handshake_server.c
third_party/boringssl/ssl/s3_both.c
- third_party/boringssl/ssl/s3_clnt.c
third_party/boringssl/ssl/s3_enc.c
third_party/boringssl/ssl/s3_lib.c
- third_party/boringssl/ssl/s3_meth.c
third_party/boringssl/ssl/s3_pkt.c
- third_party/boringssl/ssl/s3_srvr.c
third_party/boringssl/ssl/ssl_aead_ctx.c
third_party/boringssl/ssl/ssl_asn1.c
third_party/boringssl/ssl/ssl_buffer.c
@@ -3159,6 +3161,11 @@ add_library(boringssl
third_party/boringssl/ssl/ssl_stat.c
third_party/boringssl/ssl/t1_enc.c
third_party/boringssl/ssl/t1_lib.c
+ third_party/boringssl/ssl/tls13_both.c
+ third_party/boringssl/ssl/tls13_client.c
+ third_party/boringssl/ssl/tls13_enc.c
+ third_party/boringssl/ssl/tls13_server.c
+ third_party/boringssl/ssl/tls_method.c
third_party/boringssl/ssl/tls_record.c
)
@@ -3367,6 +3374,33 @@ target_link_libraries(boringssl_bytestring_test_lib
)
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_chacha_test_lib
+ third_party/boringssl/crypto/chacha/chacha_test.cc
+)
+
+
+target_include_directories(boringssl_chacha_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_chacha_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
@@ -3500,6 +3534,33 @@ target_link_libraries(boringssl_ed25519_test_lib
)
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_spake25519_test_lib
+ third_party/boringssl/crypto/curve25519/spake25519_test.cc
+)
+
+
+target_include_directories(boringssl_spake25519_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_spake25519_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
@@ -3658,6 +3719,60 @@ target_link_libraries(boringssl_example_mul_lib
)
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_ecdh_test_lib
+ third_party/boringssl/crypto/ecdh/ecdh_test.cc
+)
+
+
+target_include_directories(boringssl_ecdh_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_ecdh_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_ecdsa_sign_test_lib
+ third_party/boringssl/crypto/ecdsa/ecdsa_sign_test.cc
+)
+
+
+target_include_directories(boringssl_ecdsa_sign_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_ecdsa_sign_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
@@ -3685,6 +3800,33 @@ target_link_libraries(boringssl_ecdsa_test_lib
)
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_ecdsa_verify_test_lib
+ third_party/boringssl/crypto/ecdsa/ecdsa_verify_test.cc
+)
+
+
+target_include_directories(boringssl_ecdsa_verify_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_ecdsa_verify_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
@@ -3874,7 +4016,7 @@ endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
add_library(boringssl_gcm_test_lib
- third_party/boringssl/crypto/modes/gcm_test.c
+ third_party/boringssl/crypto/modes/gcm_test.cc
)
@@ -3886,6 +4028,8 @@ target_include_directories(boringssl_gcm_test_lib
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
)
target_link_libraries(boringssl_gcm_test_lib
@@ -3895,6 +4039,114 @@ target_link_libraries(boringssl_gcm_test_lib
)
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_newhope_statistical_test_lib
+ third_party/boringssl/crypto/newhope/newhope_statistical_test.cc
+)
+
+
+target_include_directories(boringssl_newhope_statistical_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_newhope_statistical_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_newhope_test_lib
+ third_party/boringssl/crypto/newhope/newhope_test.cc
+)
+
+
+target_include_directories(boringssl_newhope_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_newhope_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_newhope_vectors_test_lib
+ third_party/boringssl/crypto/newhope/newhope_vectors_test.cc
+)
+
+
+target_include_directories(boringssl_newhope_vectors_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_newhope_vectors_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_library(boringssl_obj_test_lib
+ third_party/boringssl/crypto/obj/obj_test.cc
+)
+
+
+target_include_directories(boringssl_obj_test_lib
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_INCLUDE_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_obj_test_lib
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_test_util
+ boringssl
+)
+
+
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
@@ -4155,31 +4407,6 @@ target_link_libraries(boringssl_v3name_test_lib
)
-endif (gRPC_BUILD_TESTS)
-if (gRPC_BUILD_TESTS)
-
-add_library(boringssl_pqueue_test_lib
- third_party/boringssl/ssl/pqueue/pqueue_test.c
-)
-
-
-target_include_directories(boringssl_pqueue_test_lib
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${BORINGSSL_ROOT_DIR}/include
- PRIVATE ${PROTOBUF_ROOT_DIR}/src
- PRIVATE ${ZLIB_INCLUDE_DIR}
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
-)
-
-target_link_libraries(boringssl_pqueue_test_lib
- ${_gRPC_SSL_LIBRARIES}
- boringssl_test_util
- boringssl
-)
-
-
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
@@ -9401,6 +9628,33 @@ target_link_libraries(boringssl_bytestring_test
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
+add_executable(boringssl_chacha_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_chacha_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_chacha_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_chacha_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
add_executable(boringssl_aead_test
third_party/googletest/src/gtest-all.cc
)
@@ -9536,6 +9790,33 @@ target_link_libraries(boringssl_ed25519_test
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
+add_executable(boringssl_spake25519_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_spake25519_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_spake25519_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_spake25519_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
add_executable(boringssl_x25519_test
third_party/googletest/src/gtest-all.cc
)
@@ -9698,6 +9979,60 @@ target_link_libraries(boringssl_example_mul
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
+add_executable(boringssl_ecdh_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_ecdh_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_ecdh_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_ecdh_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_executable(boringssl_ecdsa_sign_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_ecdsa_sign_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_ecdsa_sign_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_ecdsa_sign_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
add_executable(boringssl_ecdsa_test
third_party/googletest/src/gtest-all.cc
)
@@ -9725,6 +10060,33 @@ target_link_libraries(boringssl_ecdsa_test
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
+add_executable(boringssl_ecdsa_verify_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_ecdsa_verify_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_ecdsa_verify_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_ecdsa_verify_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
add_executable(boringssl_err_test
third_party/googletest/src/gtest-all.cc
)
@@ -9941,6 +10303,114 @@ target_link_libraries(boringssl_gcm_test
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
+add_executable(boringssl_newhope_statistical_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_newhope_statistical_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_newhope_statistical_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_newhope_statistical_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_executable(boringssl_newhope_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_newhope_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_newhope_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_newhope_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_executable(boringssl_newhope_vectors_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_newhope_vectors_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_newhope_vectors_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_newhope_vectors_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
+add_executable(boringssl_obj_test
+ third_party/googletest/src/gtest-all.cc
+)
+
+target_include_directories(boringssl_obj_test
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+)
+
+target_link_libraries(boringssl_obj_test
+ ${_gRPC_SSL_LIBRARIES}
+ boringssl_obj_test_lib
+ boringssl_test_util
+ boringssl
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+
add_executable(boringssl_pkcs12_test
third_party/googletest/src/gtest-all.cc
)
@@ -10211,33 +10681,6 @@ target_link_libraries(boringssl_v3name_test
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
-add_executable(boringssl_pqueue_test
- third_party/googletest/src/gtest-all.cc
-)
-
-target_include_directories(boringssl_pqueue_test
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${BORINGSSL_ROOT_DIR}/include
- PRIVATE ${PROTOBUF_ROOT_DIR}/src
- PRIVATE ${ZLIB_ROOT_DIR}
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
- PRIVATE third_party/googletest/include
- PRIVATE third_party/googletest
-)
-
-target_link_libraries(boringssl_pqueue_test
- ${_gRPC_SSL_LIBRARIES}
- boringssl_pqueue_test_lib
- boringssl_test_util
- boringssl
- ${_gRPC_GFLAGS_LIBRARIES}
-)
-
-endif (gRPC_BUILD_TESTS)
-if (gRPC_BUILD_TESTS)
-
add_executable(boringssl_ssl_test
third_party/googletest/src/gtest-all.cc
)
diff --git a/Makefile b/Makefile
index f71365f115f..42d1238224b 100644
--- a/Makefile
+++ b/Makefile
@@ -1135,18 +1135,23 @@ boringssl_base64_test: $(BINDIR)/$(CONFIG)/boringssl_base64_test
boringssl_bio_test: $(BINDIR)/$(CONFIG)/boringssl_bio_test
boringssl_bn_test: $(BINDIR)/$(CONFIG)/boringssl_bn_test
boringssl_bytestring_test: $(BINDIR)/$(CONFIG)/boringssl_bytestring_test
+boringssl_chacha_test: $(BINDIR)/$(CONFIG)/boringssl_chacha_test
boringssl_aead_test: $(BINDIR)/$(CONFIG)/boringssl_aead_test
boringssl_cipher_test: $(BINDIR)/$(CONFIG)/boringssl_cipher_test
boringssl_cmac_test: $(BINDIR)/$(CONFIG)/boringssl_cmac_test
boringssl_constant_time_test: $(BINDIR)/$(CONFIG)/boringssl_constant_time_test
boringssl_ed25519_test: $(BINDIR)/$(CONFIG)/boringssl_ed25519_test
+boringssl_spake25519_test: $(BINDIR)/$(CONFIG)/boringssl_spake25519_test
boringssl_x25519_test: $(BINDIR)/$(CONFIG)/boringssl_x25519_test
boringssl_dh_test: $(BINDIR)/$(CONFIG)/boringssl_dh_test
boringssl_digest_test: $(BINDIR)/$(CONFIG)/boringssl_digest_test
boringssl_dsa_test: $(BINDIR)/$(CONFIG)/boringssl_dsa_test
boringssl_ec_test: $(BINDIR)/$(CONFIG)/boringssl_ec_test
boringssl_example_mul: $(BINDIR)/$(CONFIG)/boringssl_example_mul
+boringssl_ecdh_test: $(BINDIR)/$(CONFIG)/boringssl_ecdh_test
+boringssl_ecdsa_sign_test: $(BINDIR)/$(CONFIG)/boringssl_ecdsa_sign_test
boringssl_ecdsa_test: $(BINDIR)/$(CONFIG)/boringssl_ecdsa_test
+boringssl_ecdsa_verify_test: $(BINDIR)/$(CONFIG)/boringssl_ecdsa_verify_test
boringssl_err_test: $(BINDIR)/$(CONFIG)/boringssl_err_test
boringssl_evp_extra_test: $(BINDIR)/$(CONFIG)/boringssl_evp_extra_test
boringssl_evp_test: $(BINDIR)/$(CONFIG)/boringssl_evp_test
@@ -1155,6 +1160,10 @@ boringssl_hkdf_test: $(BINDIR)/$(CONFIG)/boringssl_hkdf_test
boringssl_hmac_test: $(BINDIR)/$(CONFIG)/boringssl_hmac_test
boringssl_lhash_test: $(BINDIR)/$(CONFIG)/boringssl_lhash_test
boringssl_gcm_test: $(BINDIR)/$(CONFIG)/boringssl_gcm_test
+boringssl_newhope_statistical_test: $(BINDIR)/$(CONFIG)/boringssl_newhope_statistical_test
+boringssl_newhope_test: $(BINDIR)/$(CONFIG)/boringssl_newhope_test
+boringssl_newhope_vectors_test: $(BINDIR)/$(CONFIG)/boringssl_newhope_vectors_test
+boringssl_obj_test: $(BINDIR)/$(CONFIG)/boringssl_obj_test
boringssl_pkcs12_test: $(BINDIR)/$(CONFIG)/boringssl_pkcs12_test
boringssl_pkcs8_test: $(BINDIR)/$(CONFIG)/boringssl_pkcs8_test
boringssl_poly1305_test: $(BINDIR)/$(CONFIG)/boringssl_poly1305_test
@@ -1165,7 +1174,6 @@ boringssl_pkcs7_test: $(BINDIR)/$(CONFIG)/boringssl_pkcs7_test
boringssl_x509_test: $(BINDIR)/$(CONFIG)/boringssl_x509_test
boringssl_tab_test: $(BINDIR)/$(CONFIG)/boringssl_tab_test
boringssl_v3name_test: $(BINDIR)/$(CONFIG)/boringssl_v3name_test
-boringssl_pqueue_test: $(BINDIR)/$(CONFIG)/boringssl_pqueue_test
boringssl_ssl_test: $(BINDIR)/$(CONFIG)/boringssl_ssl_test
badreq_bad_client_test: $(BINDIR)/$(CONFIG)/badreq_bad_client_test
connection_prefix_bad_client_test: $(BINDIR)/$(CONFIG)/connection_prefix_bad_client_test
@@ -1275,7 +1283,7 @@ 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)/libhttp2_client_main.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
+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)/libhttp2_client_main.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_chacha_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_spake25519_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_ecdh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_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_gcm_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_obj_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)/libhttp2_client_main.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
@@ -1521,18 +1529,23 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/boringssl_bio_test \
$(BINDIR)/$(CONFIG)/boringssl_bn_test \
$(BINDIR)/$(CONFIG)/boringssl_bytestring_test \
+ $(BINDIR)/$(CONFIG)/boringssl_chacha_test \
$(BINDIR)/$(CONFIG)/boringssl_aead_test \
$(BINDIR)/$(CONFIG)/boringssl_cipher_test \
$(BINDIR)/$(CONFIG)/boringssl_cmac_test \
$(BINDIR)/$(CONFIG)/boringssl_constant_time_test \
$(BINDIR)/$(CONFIG)/boringssl_ed25519_test \
+ $(BINDIR)/$(CONFIG)/boringssl_spake25519_test \
$(BINDIR)/$(CONFIG)/boringssl_x25519_test \
$(BINDIR)/$(CONFIG)/boringssl_dh_test \
$(BINDIR)/$(CONFIG)/boringssl_digest_test \
$(BINDIR)/$(CONFIG)/boringssl_dsa_test \
$(BINDIR)/$(CONFIG)/boringssl_ec_test \
$(BINDIR)/$(CONFIG)/boringssl_example_mul \
+ $(BINDIR)/$(CONFIG)/boringssl_ecdh_test \
+ $(BINDIR)/$(CONFIG)/boringssl_ecdsa_sign_test \
$(BINDIR)/$(CONFIG)/boringssl_ecdsa_test \
+ $(BINDIR)/$(CONFIG)/boringssl_ecdsa_verify_test \
$(BINDIR)/$(CONFIG)/boringssl_err_test \
$(BINDIR)/$(CONFIG)/boringssl_evp_extra_test \
$(BINDIR)/$(CONFIG)/boringssl_evp_test \
@@ -1541,6 +1554,10 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/boringssl_hmac_test \
$(BINDIR)/$(CONFIG)/boringssl_lhash_test \
$(BINDIR)/$(CONFIG)/boringssl_gcm_test \
+ $(BINDIR)/$(CONFIG)/boringssl_newhope_statistical_test \
+ $(BINDIR)/$(CONFIG)/boringssl_newhope_test \
+ $(BINDIR)/$(CONFIG)/boringssl_newhope_vectors_test \
+ $(BINDIR)/$(CONFIG)/boringssl_obj_test \
$(BINDIR)/$(CONFIG)/boringssl_pkcs12_test \
$(BINDIR)/$(CONFIG)/boringssl_pkcs8_test \
$(BINDIR)/$(CONFIG)/boringssl_poly1305_test \
@@ -1551,7 +1568,6 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/boringssl_x509_test \
$(BINDIR)/$(CONFIG)/boringssl_tab_test \
$(BINDIR)/$(CONFIG)/boringssl_v3name_test \
- $(BINDIR)/$(CONFIG)/boringssl_pqueue_test \
$(BINDIR)/$(CONFIG)/boringssl_ssl_test \
else
@@ -5475,7 +5491,6 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/aes/mode_wrappers.c \
third_party/boringssl/crypto/asn1/a_bitstr.c \
third_party/boringssl/crypto/asn1/a_bool.c \
- third_party/boringssl/crypto/asn1/a_bytes.c \
third_party/boringssl/crypto/asn1/a_d2i_fp.c \
third_party/boringssl/crypto/asn1/a_dup.c \
third_party/boringssl/crypto/asn1/a_enum.c \
@@ -5494,18 +5509,14 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/asn1/asn1_lib.c \
third_party/boringssl/crypto/asn1/asn1_par.c \
third_party/boringssl/crypto/asn1/asn_pack.c \
- third_party/boringssl/crypto/asn1/bio_asn1.c \
- third_party/boringssl/crypto/asn1/bio_ndef.c \
third_party/boringssl/crypto/asn1/f_enum.c \
third_party/boringssl/crypto/asn1/f_int.c \
third_party/boringssl/crypto/asn1/f_string.c \
third_party/boringssl/crypto/asn1/t_bitst.c \
- third_party/boringssl/crypto/asn1/t_pkey.c \
third_party/boringssl/crypto/asn1/tasn_dec.c \
third_party/boringssl/crypto/asn1/tasn_enc.c \
third_party/boringssl/crypto/asn1/tasn_fre.c \
third_party/boringssl/crypto/asn1/tasn_new.c \
- third_party/boringssl/crypto/asn1/tasn_prn.c \
third_party/boringssl/crypto/asn1/tasn_typ.c \
third_party/boringssl/crypto/asn1/tasn_utl.c \
third_party/boringssl/crypto/asn1/x_bignum.c \
@@ -5535,6 +5546,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/bn/generic.c \
third_party/boringssl/crypto/bn/kronecker.c \
third_party/boringssl/crypto/bn/montgomery.c \
+ third_party/boringssl/crypto/bn/montgomery_inv.c \
third_party/boringssl/crypto/bn/mul.c \
third_party/boringssl/crypto/bn/prime.c \
third_party/boringssl/crypto/bn/random.c \
@@ -5546,8 +5558,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/bytestring/ber.c \
third_party/boringssl/crypto/bytestring/cbb.c \
third_party/boringssl/crypto/bytestring/cbs.c \
- third_party/boringssl/crypto/chacha/chacha_generic.c \
- third_party/boringssl/crypto/chacha/chacha_vec.c \
+ third_party/boringssl/crypto/chacha/chacha.c \
third_party/boringssl/crypto/cipher/aead.c \
third_party/boringssl/crypto/cipher/cipher.c \
third_party/boringssl/crypto/cipher/derive_key.c \
@@ -5562,10 +5573,14 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/cipher/tls_cbc.c \
third_party/boringssl/crypto/cmac/cmac.c \
third_party/boringssl/crypto/conf/conf.c \
+ third_party/boringssl/crypto/cpu-aarch64-linux.c \
+ third_party/boringssl/crypto/cpu-arm-linux.c \
third_party/boringssl/crypto/cpu-arm.c \
third_party/boringssl/crypto/cpu-intel.c \
+ third_party/boringssl/crypto/cpu-ppc64le.c \
third_party/boringssl/crypto/crypto.c \
third_party/boringssl/crypto/curve25519/curve25519.c \
+ third_party/boringssl/crypto/curve25519/spake25519.c \
third_party/boringssl/crypto/curve25519/x25519-x86_64.c \
third_party/boringssl/crypto/des/des.c \
third_party/boringssl/crypto/dh/check.c \
@@ -5574,8 +5589,6 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/dh/params.c \
third_party/boringssl/crypto/digest/digest.c \
third_party/boringssl/crypto/digest/digests.c \
- third_party/boringssl/crypto/directory_posix.c \
- third_party/boringssl/crypto/directory_win.c \
third_party/boringssl/crypto/dsa/dsa.c \
third_party/boringssl/crypto/dsa/dsa_asn1.c \
third_party/boringssl/crypto/ec/ec.c \
@@ -5594,7 +5607,6 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c \
third_party/boringssl/crypto/engine/engine.c \
third_party/boringssl/crypto/err/err.c \
- third_party/boringssl/crypto/evp/algorithm.c \
third_party/boringssl/crypto/evp/digestsign.c \
third_party/boringssl/crypto/evp/evp.c \
third_party/boringssl/crypto/evp/evp_asn1.c \
@@ -5605,6 +5617,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/evp/p_rsa.c \
third_party/boringssl/crypto/evp/p_rsa_asn1.c \
third_party/boringssl/crypto/evp/pbkdf.c \
+ third_party/boringssl/crypto/evp/print.c \
third_party/boringssl/crypto/evp/sign.c \
third_party/boringssl/crypto/ex_data.c \
third_party/boringssl/crypto/hkdf/hkdf.c \
@@ -5618,6 +5631,12 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/modes/ctr.c \
third_party/boringssl/crypto/modes/gcm.c \
third_party/boringssl/crypto/modes/ofb.c \
+ third_party/boringssl/crypto/newhope/error_correction.c \
+ third_party/boringssl/crypto/newhope/newhope.c \
+ third_party/boringssl/crypto/newhope/ntt.c \
+ third_party/boringssl/crypto/newhope/poly.c \
+ third_party/boringssl/crypto/newhope/precomp.c \
+ third_party/boringssl/crypto/newhope/reduce.c \
third_party/boringssl/crypto/obj/obj.c \
third_party/boringssl/crypto/obj/obj_xref.c \
third_party/boringssl/crypto/pem/pem_all.c \
@@ -5635,6 +5654,7 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/poly1305/poly1305.c \
third_party/boringssl/crypto/poly1305/poly1305_arm.c \
third_party/boringssl/crypto/poly1305/poly1305_vec.c \
+ third_party/boringssl/crypto/rand/deterministic.c \
third_party/boringssl/crypto/rand/rand.c \
third_party/boringssl/crypto/rand/urandom.c \
third_party/boringssl/crypto/rand/windows.c \
@@ -5659,11 +5679,13 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/x509/a_sign.c \
third_party/boringssl/crypto/x509/a_strex.c \
third_party/boringssl/crypto/x509/a_verify.c \
+ third_party/boringssl/crypto/x509/algorithm.c \
third_party/boringssl/crypto/x509/asn1_gen.c \
third_party/boringssl/crypto/x509/by_dir.c \
third_party/boringssl/crypto/x509/by_file.c \
third_party/boringssl/crypto/x509/i2d_pr.c \
third_party/boringssl/crypto/x509/pkcs7.c \
+ third_party/boringssl/crypto/x509/rsa_pss.c \
third_party/boringssl/crypto/x509/t_crl.c \
third_party/boringssl/crypto/x509/t_req.c \
third_party/boringssl/crypto/x509/t_x509.c \
@@ -5738,21 +5760,17 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/crypto/x509v3/v3_utl.c \
third_party/boringssl/ssl/custom_extensions.c \
third_party/boringssl/ssl/d1_both.c \
- third_party/boringssl/ssl/d1_clnt.c \
third_party/boringssl/ssl/d1_lib.c \
- third_party/boringssl/ssl/d1_meth.c \
third_party/boringssl/ssl/d1_pkt.c \
third_party/boringssl/ssl/d1_srtp.c \
- third_party/boringssl/ssl/d1_srvr.c \
+ third_party/boringssl/ssl/dtls_method.c \
third_party/boringssl/ssl/dtls_record.c \
- third_party/boringssl/ssl/pqueue/pqueue.c \
+ third_party/boringssl/ssl/handshake_client.c \
+ third_party/boringssl/ssl/handshake_server.c \
third_party/boringssl/ssl/s3_both.c \
- third_party/boringssl/ssl/s3_clnt.c \
third_party/boringssl/ssl/s3_enc.c \
third_party/boringssl/ssl/s3_lib.c \
- third_party/boringssl/ssl/s3_meth.c \
third_party/boringssl/ssl/s3_pkt.c \
- third_party/boringssl/ssl/s3_srvr.c \
third_party/boringssl/ssl/ssl_aead_ctx.c \
third_party/boringssl/ssl/ssl_asn1.c \
third_party/boringssl/ssl/ssl_buffer.c \
@@ -5766,6 +5784,11 @@ LIBBORINGSSL_SRC = \
third_party/boringssl/ssl/ssl_stat.c \
third_party/boringssl/ssl/t1_enc.c \
third_party/boringssl/ssl/t1_lib.c \
+ third_party/boringssl/ssl/tls13_both.c \
+ third_party/boringssl/ssl/tls13_client.c \
+ third_party/boringssl/ssl/tls13_enc.c \
+ third_party/boringssl/ssl/tls13_server.c \
+ third_party/boringssl/ssl/tls_method.c \
third_party/boringssl/ssl/tls_record.c \
PUBLIC_HEADERS_C += \
@@ -6060,6 +6083,44 @@ ifneq ($(NO_DEPS),true)
endif
+LIBBORINGSSL_CHACHA_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/chacha/chacha_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_CHACHA_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_CHACHA_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_CHACHA_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_CHACHA_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_chacha_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_CHACHA_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a $(LIBBORINGSSL_CHACHA_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_CHACHA_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
LIBBORINGSSL_AEAD_TEST_LIB_SRC = \
third_party/boringssl/crypto/cipher/aead_test.cc \
@@ -6239,6 +6300,44 @@ ifneq ($(NO_DEPS),true)
endif
+LIBBORINGSSL_SPAKE25519_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/curve25519/spake25519_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_SPAKE25519_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_spake25519_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a $(LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_SPAKE25519_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
LIBBORINGSSL_X25519_TEST_LIB_SRC = \
third_party/boringssl/crypto/curve25519/x25519_test.cc \
@@ -6445,6 +6544,82 @@ ifneq ($(NO_DEPS),true)
endif
+LIBBORINGSSL_ECDH_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/ecdh/ecdh_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_ECDH_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ECDH_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_ECDH_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_ECDH_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_ecdh_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDH_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a $(LIBBORINGSSL_ECDH_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_ECDH_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
+LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/ecdsa/ecdsa_sign_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_ecdsa_sign_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_ECDSA_SIGN_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
LIBBORINGSSL_ECDSA_TEST_LIB_SRC = \
third_party/boringssl/crypto/ecdsa/ecdsa_test.cc \
@@ -6483,6 +6658,44 @@ ifneq ($(NO_DEPS),true)
endif
+LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/ecdsa/ecdsa_verify_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_ecdsa_verify_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a $(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_ECDSA_VERIFY_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
LIBBORINGSSL_ERR_TEST_LIB_SRC = \
third_party/boringssl/crypto/err/err_test.cc \
@@ -6728,16 +6941,25 @@ endif
LIBBORINGSSL_GCM_TEST_LIB_SRC = \
- third_party/boringssl/crypto/modes/gcm_test.c \
+ third_party/boringssl/crypto/modes/gcm_test.cc \
-PUBLIC_HEADERS_C += \
+PUBLIC_HEADERS_CXX += \
LIBBORINGSSL_GCM_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_GCM_TEST_LIB_SRC))))
$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
$(LIBBORINGSSL_GCM_TEST_LIB_OBJS): 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)
-$(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_GCM_TEST_LIB_OBJS)
+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)/libboringssl_gcm_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_GCM_TEST_LIB_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a
@@ -6749,11 +6971,165 @@ endif
+endif
+
ifneq ($(NO_DEPS),true)
-include $(LIBBORINGSSL_GCM_TEST_LIB_OBJS:.o=.dep)
endif
+LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/newhope/newhope_statistical_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_newhope_statistical_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_NEWHOPE_STATISTICAL_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
+LIBBORINGSSL_NEWHOPE_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/newhope/newhope_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_NEWHOPE_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_newhope_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_NEWHOPE_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
+LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/newhope/newhope_vectors_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_newhope_vectors_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_NEWHOPE_VECTORS_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
+LIBBORINGSSL_OBJ_TEST_LIB_SRC = \
+ third_party/boringssl/crypto/obj/obj_test.cc \
+
+PUBLIC_HEADERS_CXX += \
+
+LIBBORINGSSL_OBJ_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_OBJ_TEST_LIB_SRC))))
+
+$(LIBBORINGSSL_OBJ_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
+$(LIBBORINGSSL_OBJ_TEST_LIB_OBJS): 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)
+
+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)/libboringssl_obj_test_lib.a: protobuf_dep_error
+
+
+else
+
+$(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a: $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_OBJ_TEST_LIB_OBJS)
+ $(E) "[AR] Creating $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a
+ $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a $(LIBBORINGSSL_OBJ_TEST_LIB_OBJS)
+ifeq ($(SYSTEM),Darwin)
+ $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a
+endif
+
+
+
+
+endif
+
+ifneq ($(NO_DEPS),true)
+-include $(LIBBORINGSSL_OBJ_TEST_LIB_OBJS:.o=.dep)
+endif
+
+
LIBBORINGSSL_PKCS12_TEST_LIB_SRC = \
third_party/boringssl/crypto/pkcs8/pkcs12_test.cc \
@@ -7079,33 +7455,6 @@ ifneq ($(NO_DEPS),true)
endif
-LIBBORINGSSL_PQUEUE_TEST_LIB_SRC = \
- third_party/boringssl/ssl/pqueue/pqueue_test.c \
-
-PUBLIC_HEADERS_C += \
-
-LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBBORINGSSL_PQUEUE_TEST_LIB_SRC))))
-
-$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): CPPFLAGS += -Ithird_party/boringssl/include -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN -D_HAS_EXCEPTIONS=0 -DNOMINMAX
-$(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS): 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)
-
-$(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a: $(ZLIB_DEP) $(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS)
- $(E) "[AR] Creating $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a $(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS)
-ifeq ($(SYSTEM),Darwin)
- $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a
-endif
-
-
-
-
-ifneq ($(NO_DEPS),true)
--include $(LIBBORINGSSL_PQUEUE_TEST_LIB_OBJS:.o=.dep)
-endif
-
-
LIBBORINGSSL_SSL_TEST_LIB_SRC = \
third_party/boringssl/ssl/ssl_test.cc \
@@ -14640,6 +14989,33 @@ endif
+# 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
+$(BORINGSSL_CHACHA_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_CHACHA_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_CHACHA_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_chacha_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_chacha_test: $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_chacha_test
+
+endif
+
+
+
+
+
# 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
@@ -14775,6 +15151,33 @@ endif
+# 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
+$(BORINGSSL_SPAKE25519_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_SPAKE25519_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_SPAKE25519_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_spake25519_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_spake25519_test: $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_spake25519_test
+
+endif
+
+
+
+
+
# 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
@@ -14937,6 +15340,60 @@ endif
+# 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
+$(BORINGSSL_ECDH_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_ECDH_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_ECDH_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_ecdh_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_ecdh_test: $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_ecdh_test
+
+endif
+
+
+
+
+
+# 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
+$(BORINGSSL_ECDSA_SIGN_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_ECDSA_SIGN_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_ECDSA_SIGN_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_ecdsa_sign_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_ecdsa_sign_test: $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_ecdsa_sign_test
+
+endif
+
+
+
+
+
# 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
@@ -14964,6 +15421,33 @@ endif
+# 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
+$(BORINGSSL_ECDSA_VERIFY_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_ECDSA_VERIFY_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_ECDSA_VERIFY_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_ecdsa_verify_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_ecdsa_verify_test: $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_ecdsa_verify_test
+
+endif
+
+
+
+
+
# 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
@@ -15180,6 +15664,114 @@ endif
+# 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
+$(BORINGSSL_NEWHOPE_STATISTICAL_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_NEWHOPE_STATISTICAL_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_NEWHOPE_STATISTICAL_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_newhope_statistical_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_newhope_statistical_test: $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_newhope_statistical_test
+
+endif
+
+
+
+
+
+# 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
+$(BORINGSSL_NEWHOPE_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_NEWHOPE_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_NEWHOPE_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_newhope_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_newhope_test: $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_newhope_test
+
+endif
+
+
+
+
+
+# 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
+$(BORINGSSL_NEWHOPE_VECTORS_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_NEWHOPE_VECTORS_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_NEWHOPE_VECTORS_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_newhope_vectors_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_newhope_vectors_test: $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_newhope_vectors_test
+
+endif
+
+
+
+
+
+# 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
+$(BORINGSSL_OBJ_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
+$(BORINGSSL_OBJ_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
+$(BORINGSSL_OBJ_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/boringssl_obj_test: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/boringssl_obj_test: $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
+ $(E) "[LD] Linking $@"
+ $(Q) mkdir -p `dirname $@`
+ $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_obj_test
+
+endif
+
+
+
+
+
# 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
@@ -15450,33 +16042,6 @@ endif
-# 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
-$(BORINGSSL_PQUEUE_TEST_OBJS): CFLAGS := -Ithird_party/boringssl/include $(CFLAGS) -Wno-sign-conversion -Wno-conversion -Wno-unused-value $(NO_W_EXTRA_SEMI)
-$(BORINGSSL_PQUEUE_TEST_OBJS): CXXFLAGS := -Ithird_party/boringssl/include $(CXXFLAGS)
-$(BORINGSSL_PQUEUE_TEST_OBJS): CPPFLAGS += -DOPENSSL_NO_ASM -D_GNU_SOURCE
-
-
-ifeq ($(NO_PROTOBUF),true)
-
-# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
-
-$(BINDIR)/$(CONFIG)/boringssl_pqueue_test: protobuf_dep_error
-
-else
-
-$(BINDIR)/$(CONFIG)/boringssl_pqueue_test: $(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LDXX) $(LDFLAGS) $(LIBDIR)/$(CONFIG)/libboringssl_pqueue_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/boringssl_pqueue_test
-
-endif
-
-
-
-
-
# 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
diff --git a/binding.gyp b/binding.gyp
index d75b05472a6..9328a30929c 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -161,7 +161,6 @@
'third_party/boringssl/crypto/aes/mode_wrappers.c',
'third_party/boringssl/crypto/asn1/a_bitstr.c',
'third_party/boringssl/crypto/asn1/a_bool.c',
- 'third_party/boringssl/crypto/asn1/a_bytes.c',
'third_party/boringssl/crypto/asn1/a_d2i_fp.c',
'third_party/boringssl/crypto/asn1/a_dup.c',
'third_party/boringssl/crypto/asn1/a_enum.c',
@@ -180,18 +179,14 @@
'third_party/boringssl/crypto/asn1/asn1_lib.c',
'third_party/boringssl/crypto/asn1/asn1_par.c',
'third_party/boringssl/crypto/asn1/asn_pack.c',
- 'third_party/boringssl/crypto/asn1/bio_asn1.c',
- 'third_party/boringssl/crypto/asn1/bio_ndef.c',
'third_party/boringssl/crypto/asn1/f_enum.c',
'third_party/boringssl/crypto/asn1/f_int.c',
'third_party/boringssl/crypto/asn1/f_string.c',
'third_party/boringssl/crypto/asn1/t_bitst.c',
- 'third_party/boringssl/crypto/asn1/t_pkey.c',
'third_party/boringssl/crypto/asn1/tasn_dec.c',
'third_party/boringssl/crypto/asn1/tasn_enc.c',
'third_party/boringssl/crypto/asn1/tasn_fre.c',
'third_party/boringssl/crypto/asn1/tasn_new.c',
- 'third_party/boringssl/crypto/asn1/tasn_prn.c',
'third_party/boringssl/crypto/asn1/tasn_typ.c',
'third_party/boringssl/crypto/asn1/tasn_utl.c',
'third_party/boringssl/crypto/asn1/x_bignum.c',
@@ -221,6 +216,7 @@
'third_party/boringssl/crypto/bn/generic.c',
'third_party/boringssl/crypto/bn/kronecker.c',
'third_party/boringssl/crypto/bn/montgomery.c',
+ 'third_party/boringssl/crypto/bn/montgomery_inv.c',
'third_party/boringssl/crypto/bn/mul.c',
'third_party/boringssl/crypto/bn/prime.c',
'third_party/boringssl/crypto/bn/random.c',
@@ -232,8 +228,7 @@
'third_party/boringssl/crypto/bytestring/ber.c',
'third_party/boringssl/crypto/bytestring/cbb.c',
'third_party/boringssl/crypto/bytestring/cbs.c',
- 'third_party/boringssl/crypto/chacha/chacha_generic.c',
- 'third_party/boringssl/crypto/chacha/chacha_vec.c',
+ 'third_party/boringssl/crypto/chacha/chacha.c',
'third_party/boringssl/crypto/cipher/aead.c',
'third_party/boringssl/crypto/cipher/cipher.c',
'third_party/boringssl/crypto/cipher/derive_key.c',
@@ -248,10 +243,14 @@
'third_party/boringssl/crypto/cipher/tls_cbc.c',
'third_party/boringssl/crypto/cmac/cmac.c',
'third_party/boringssl/crypto/conf/conf.c',
+ 'third_party/boringssl/crypto/cpu-aarch64-linux.c',
+ 'third_party/boringssl/crypto/cpu-arm-linux.c',
'third_party/boringssl/crypto/cpu-arm.c',
'third_party/boringssl/crypto/cpu-intel.c',
+ 'third_party/boringssl/crypto/cpu-ppc64le.c',
'third_party/boringssl/crypto/crypto.c',
'third_party/boringssl/crypto/curve25519/curve25519.c',
+ 'third_party/boringssl/crypto/curve25519/spake25519.c',
'third_party/boringssl/crypto/curve25519/x25519-x86_64.c',
'third_party/boringssl/crypto/des/des.c',
'third_party/boringssl/crypto/dh/check.c',
@@ -260,8 +259,6 @@
'third_party/boringssl/crypto/dh/params.c',
'third_party/boringssl/crypto/digest/digest.c',
'third_party/boringssl/crypto/digest/digests.c',
- 'third_party/boringssl/crypto/directory_posix.c',
- 'third_party/boringssl/crypto/directory_win.c',
'third_party/boringssl/crypto/dsa/dsa.c',
'third_party/boringssl/crypto/dsa/dsa_asn1.c',
'third_party/boringssl/crypto/ec/ec.c',
@@ -280,7 +277,6 @@
'third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c',
'third_party/boringssl/crypto/engine/engine.c',
'third_party/boringssl/crypto/err/err.c',
- 'third_party/boringssl/crypto/evp/algorithm.c',
'third_party/boringssl/crypto/evp/digestsign.c',
'third_party/boringssl/crypto/evp/evp.c',
'third_party/boringssl/crypto/evp/evp_asn1.c',
@@ -291,6 +287,7 @@
'third_party/boringssl/crypto/evp/p_rsa.c',
'third_party/boringssl/crypto/evp/p_rsa_asn1.c',
'third_party/boringssl/crypto/evp/pbkdf.c',
+ 'third_party/boringssl/crypto/evp/print.c',
'third_party/boringssl/crypto/evp/sign.c',
'third_party/boringssl/crypto/ex_data.c',
'third_party/boringssl/crypto/hkdf/hkdf.c',
@@ -304,6 +301,12 @@
'third_party/boringssl/crypto/modes/ctr.c',
'third_party/boringssl/crypto/modes/gcm.c',
'third_party/boringssl/crypto/modes/ofb.c',
+ 'third_party/boringssl/crypto/newhope/error_correction.c',
+ 'third_party/boringssl/crypto/newhope/newhope.c',
+ 'third_party/boringssl/crypto/newhope/ntt.c',
+ 'third_party/boringssl/crypto/newhope/poly.c',
+ 'third_party/boringssl/crypto/newhope/precomp.c',
+ 'third_party/boringssl/crypto/newhope/reduce.c',
'third_party/boringssl/crypto/obj/obj.c',
'third_party/boringssl/crypto/obj/obj_xref.c',
'third_party/boringssl/crypto/pem/pem_all.c',
@@ -321,6 +324,7 @@
'third_party/boringssl/crypto/poly1305/poly1305.c',
'third_party/boringssl/crypto/poly1305/poly1305_arm.c',
'third_party/boringssl/crypto/poly1305/poly1305_vec.c',
+ 'third_party/boringssl/crypto/rand/deterministic.c',
'third_party/boringssl/crypto/rand/rand.c',
'third_party/boringssl/crypto/rand/urandom.c',
'third_party/boringssl/crypto/rand/windows.c',
@@ -345,11 +349,13 @@
'third_party/boringssl/crypto/x509/a_sign.c',
'third_party/boringssl/crypto/x509/a_strex.c',
'third_party/boringssl/crypto/x509/a_verify.c',
+ 'third_party/boringssl/crypto/x509/algorithm.c',
'third_party/boringssl/crypto/x509/asn1_gen.c',
'third_party/boringssl/crypto/x509/by_dir.c',
'third_party/boringssl/crypto/x509/by_file.c',
'third_party/boringssl/crypto/x509/i2d_pr.c',
'third_party/boringssl/crypto/x509/pkcs7.c',
+ 'third_party/boringssl/crypto/x509/rsa_pss.c',
'third_party/boringssl/crypto/x509/t_crl.c',
'third_party/boringssl/crypto/x509/t_req.c',
'third_party/boringssl/crypto/x509/t_x509.c',
@@ -424,21 +430,17 @@
'third_party/boringssl/crypto/x509v3/v3_utl.c',
'third_party/boringssl/ssl/custom_extensions.c',
'third_party/boringssl/ssl/d1_both.c',
- 'third_party/boringssl/ssl/d1_clnt.c',
'third_party/boringssl/ssl/d1_lib.c',
- 'third_party/boringssl/ssl/d1_meth.c',
'third_party/boringssl/ssl/d1_pkt.c',
'third_party/boringssl/ssl/d1_srtp.c',
- 'third_party/boringssl/ssl/d1_srvr.c',
+ 'third_party/boringssl/ssl/dtls_method.c',
'third_party/boringssl/ssl/dtls_record.c',
- 'third_party/boringssl/ssl/pqueue/pqueue.c',
+ 'third_party/boringssl/ssl/handshake_client.c',
+ 'third_party/boringssl/ssl/handshake_server.c',
'third_party/boringssl/ssl/s3_both.c',
- 'third_party/boringssl/ssl/s3_clnt.c',
'third_party/boringssl/ssl/s3_enc.c',
'third_party/boringssl/ssl/s3_lib.c',
- 'third_party/boringssl/ssl/s3_meth.c',
'third_party/boringssl/ssl/s3_pkt.c',
- 'third_party/boringssl/ssl/s3_srvr.c',
'third_party/boringssl/ssl/ssl_aead_ctx.c',
'third_party/boringssl/ssl/ssl_asn1.c',
'third_party/boringssl/ssl/ssl_buffer.c',
@@ -452,6 +454,11 @@
'third_party/boringssl/ssl/ssl_stat.c',
'third_party/boringssl/ssl/t1_enc.c',
'third_party/boringssl/ssl/t1_lib.c',
+ 'third_party/boringssl/ssl/tls13_both.c',
+ 'third_party/boringssl/ssl/tls13_client.c',
+ 'third_party/boringssl/ssl/tls13_enc.c',
+ 'third_party/boringssl/ssl/tls13_server.c',
+ 'third_party/boringssl/ssl/tls_method.c',
'third_party/boringssl/ssl/tls_record.c',
]
},
diff --git a/config.m4 b/config.m4
index 6a2c0ddb47e..9b2d8192a60 100644
--- a/config.m4
+++ b/config.m4
@@ -305,7 +305,6 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/aes/mode_wrappers.c \
third_party/boringssl/crypto/asn1/a_bitstr.c \
third_party/boringssl/crypto/asn1/a_bool.c \
- third_party/boringssl/crypto/asn1/a_bytes.c \
third_party/boringssl/crypto/asn1/a_d2i_fp.c \
third_party/boringssl/crypto/asn1/a_dup.c \
third_party/boringssl/crypto/asn1/a_enum.c \
@@ -324,18 +323,14 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/asn1/asn1_lib.c \
third_party/boringssl/crypto/asn1/asn1_par.c \
third_party/boringssl/crypto/asn1/asn_pack.c \
- third_party/boringssl/crypto/asn1/bio_asn1.c \
- third_party/boringssl/crypto/asn1/bio_ndef.c \
third_party/boringssl/crypto/asn1/f_enum.c \
third_party/boringssl/crypto/asn1/f_int.c \
third_party/boringssl/crypto/asn1/f_string.c \
third_party/boringssl/crypto/asn1/t_bitst.c \
- third_party/boringssl/crypto/asn1/t_pkey.c \
third_party/boringssl/crypto/asn1/tasn_dec.c \
third_party/boringssl/crypto/asn1/tasn_enc.c \
third_party/boringssl/crypto/asn1/tasn_fre.c \
third_party/boringssl/crypto/asn1/tasn_new.c \
- third_party/boringssl/crypto/asn1/tasn_prn.c \
third_party/boringssl/crypto/asn1/tasn_typ.c \
third_party/boringssl/crypto/asn1/tasn_utl.c \
third_party/boringssl/crypto/asn1/x_bignum.c \
@@ -365,6 +360,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/bn/generic.c \
third_party/boringssl/crypto/bn/kronecker.c \
third_party/boringssl/crypto/bn/montgomery.c \
+ third_party/boringssl/crypto/bn/montgomery_inv.c \
third_party/boringssl/crypto/bn/mul.c \
third_party/boringssl/crypto/bn/prime.c \
third_party/boringssl/crypto/bn/random.c \
@@ -376,8 +372,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/bytestring/ber.c \
third_party/boringssl/crypto/bytestring/cbb.c \
third_party/boringssl/crypto/bytestring/cbs.c \
- third_party/boringssl/crypto/chacha/chacha_generic.c \
- third_party/boringssl/crypto/chacha/chacha_vec.c \
+ third_party/boringssl/crypto/chacha/chacha.c \
third_party/boringssl/crypto/cipher/aead.c \
third_party/boringssl/crypto/cipher/cipher.c \
third_party/boringssl/crypto/cipher/derive_key.c \
@@ -392,10 +387,14 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/cipher/tls_cbc.c \
third_party/boringssl/crypto/cmac/cmac.c \
third_party/boringssl/crypto/conf/conf.c \
+ third_party/boringssl/crypto/cpu-aarch64-linux.c \
+ third_party/boringssl/crypto/cpu-arm-linux.c \
third_party/boringssl/crypto/cpu-arm.c \
third_party/boringssl/crypto/cpu-intel.c \
+ third_party/boringssl/crypto/cpu-ppc64le.c \
third_party/boringssl/crypto/crypto.c \
third_party/boringssl/crypto/curve25519/curve25519.c \
+ third_party/boringssl/crypto/curve25519/spake25519.c \
third_party/boringssl/crypto/curve25519/x25519-x86_64.c \
third_party/boringssl/crypto/des/des.c \
third_party/boringssl/crypto/dh/check.c \
@@ -404,8 +403,6 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/dh/params.c \
third_party/boringssl/crypto/digest/digest.c \
third_party/boringssl/crypto/digest/digests.c \
- third_party/boringssl/crypto/directory_posix.c \
- third_party/boringssl/crypto/directory_win.c \
third_party/boringssl/crypto/dsa/dsa.c \
third_party/boringssl/crypto/dsa/dsa_asn1.c \
third_party/boringssl/crypto/ec/ec.c \
@@ -424,7 +421,6 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c \
third_party/boringssl/crypto/engine/engine.c \
third_party/boringssl/crypto/err/err.c \
- third_party/boringssl/crypto/evp/algorithm.c \
third_party/boringssl/crypto/evp/digestsign.c \
third_party/boringssl/crypto/evp/evp.c \
third_party/boringssl/crypto/evp/evp_asn1.c \
@@ -435,6 +431,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/evp/p_rsa.c \
third_party/boringssl/crypto/evp/p_rsa_asn1.c \
third_party/boringssl/crypto/evp/pbkdf.c \
+ third_party/boringssl/crypto/evp/print.c \
third_party/boringssl/crypto/evp/sign.c \
third_party/boringssl/crypto/ex_data.c \
third_party/boringssl/crypto/hkdf/hkdf.c \
@@ -448,6 +445,12 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/modes/ctr.c \
third_party/boringssl/crypto/modes/gcm.c \
third_party/boringssl/crypto/modes/ofb.c \
+ third_party/boringssl/crypto/newhope/error_correction.c \
+ third_party/boringssl/crypto/newhope/newhope.c \
+ third_party/boringssl/crypto/newhope/ntt.c \
+ third_party/boringssl/crypto/newhope/poly.c \
+ third_party/boringssl/crypto/newhope/precomp.c \
+ third_party/boringssl/crypto/newhope/reduce.c \
third_party/boringssl/crypto/obj/obj.c \
third_party/boringssl/crypto/obj/obj_xref.c \
third_party/boringssl/crypto/pem/pem_all.c \
@@ -465,6 +468,7 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/poly1305/poly1305.c \
third_party/boringssl/crypto/poly1305/poly1305_arm.c \
third_party/boringssl/crypto/poly1305/poly1305_vec.c \
+ third_party/boringssl/crypto/rand/deterministic.c \
third_party/boringssl/crypto/rand/rand.c \
third_party/boringssl/crypto/rand/urandom.c \
third_party/boringssl/crypto/rand/windows.c \
@@ -489,11 +493,13 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/x509/a_sign.c \
third_party/boringssl/crypto/x509/a_strex.c \
third_party/boringssl/crypto/x509/a_verify.c \
+ third_party/boringssl/crypto/x509/algorithm.c \
third_party/boringssl/crypto/x509/asn1_gen.c \
third_party/boringssl/crypto/x509/by_dir.c \
third_party/boringssl/crypto/x509/by_file.c \
third_party/boringssl/crypto/x509/i2d_pr.c \
third_party/boringssl/crypto/x509/pkcs7.c \
+ third_party/boringssl/crypto/x509/rsa_pss.c \
third_party/boringssl/crypto/x509/t_crl.c \
third_party/boringssl/crypto/x509/t_req.c \
third_party/boringssl/crypto/x509/t_x509.c \
@@ -568,21 +574,17 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/crypto/x509v3/v3_utl.c \
third_party/boringssl/ssl/custom_extensions.c \
third_party/boringssl/ssl/d1_both.c \
- third_party/boringssl/ssl/d1_clnt.c \
third_party/boringssl/ssl/d1_lib.c \
- third_party/boringssl/ssl/d1_meth.c \
third_party/boringssl/ssl/d1_pkt.c \
third_party/boringssl/ssl/d1_srtp.c \
- third_party/boringssl/ssl/d1_srvr.c \
+ third_party/boringssl/ssl/dtls_method.c \
third_party/boringssl/ssl/dtls_record.c \
- third_party/boringssl/ssl/pqueue/pqueue.c \
+ third_party/boringssl/ssl/handshake_client.c \
+ third_party/boringssl/ssl/handshake_server.c \
third_party/boringssl/ssl/s3_both.c \
- third_party/boringssl/ssl/s3_clnt.c \
third_party/boringssl/ssl/s3_enc.c \
third_party/boringssl/ssl/s3_lib.c \
- third_party/boringssl/ssl/s3_meth.c \
third_party/boringssl/ssl/s3_pkt.c \
- third_party/boringssl/ssl/s3_srvr.c \
third_party/boringssl/ssl/ssl_aead_ctx.c \
third_party/boringssl/ssl/ssl_asn1.c \
third_party/boringssl/ssl/ssl_buffer.c \
@@ -596,6 +598,11 @@ if test "$PHP_GRPC" != "no"; then
third_party/boringssl/ssl/ssl_stat.c \
third_party/boringssl/ssl/t1_enc.c \
third_party/boringssl/ssl/t1_lib.c \
+ third_party/boringssl/ssl/tls13_both.c \
+ third_party/boringssl/ssl/tls13_client.c \
+ third_party/boringssl/ssl/tls13_enc.c \
+ third_party/boringssl/ssl/tls13_server.c \
+ third_party/boringssl/ssl/tls_method.c \
third_party/boringssl/ssl/tls_record.c \
, $ext_shared, , -Wall -Werror \
-Wno-parentheses-equality -Wno-unused-value -std=c11 \
@@ -678,6 +685,7 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/md4)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/md5)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/modes)
+ PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/newhope)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/obj)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/pem)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/pkcs8)
@@ -690,6 +698,5 @@ if test "$PHP_GRPC" != "no"; then
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/x509)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/crypto/x509v3)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/ssl)
- PHP_ADD_BUILD_DIR($ext_builddir/third_party/boringssl/ssl/pqueue)
PHP_ADD_BUILD_DIR($ext_builddir/third_party/nanopb)
fi
diff --git a/grpc.gemspec b/grpc.gemspec
index 32e4eb960b7..2d84682456b 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -583,23 +583,22 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/conf/internal.h )
s.files += %w( third_party/boringssl/crypto/curve25519/internal.h )
s.files += %w( third_party/boringssl/crypto/des/internal.h )
- s.files += %w( third_party/boringssl/crypto/dh/internal.h )
s.files += %w( third_party/boringssl/crypto/digest/internal.h )
s.files += %w( third_party/boringssl/crypto/digest/md32_common.h )
- s.files += %w( third_party/boringssl/crypto/directory.h )
s.files += %w( third_party/boringssl/crypto/ec/internal.h )
s.files += %w( third_party/boringssl/crypto/ec/p256-x86_64-table.h )
s.files += %w( third_party/boringssl/crypto/evp/internal.h )
s.files += %w( third_party/boringssl/crypto/internal.h )
s.files += %w( third_party/boringssl/crypto/modes/internal.h )
+ s.files += %w( third_party/boringssl/crypto/newhope/internal.h )
s.files += %w( third_party/boringssl/crypto/obj/obj_dat.h )
s.files += %w( third_party/boringssl/crypto/obj/obj_xref.h )
s.files += %w( third_party/boringssl/crypto/pkcs8/internal.h )
+ s.files += %w( third_party/boringssl/crypto/poly1305/internal.h )
s.files += %w( third_party/boringssl/crypto/rand/internal.h )
s.files += %w( third_party/boringssl/crypto/rsa/internal.h )
- s.files += %w( third_party/boringssl/crypto/test/scoped_types.h )
- s.files += %w( third_party/boringssl/crypto/test/test_util.h )
s.files += %w( third_party/boringssl/crypto/x509/charmap.h )
+ s.files += %w( third_party/boringssl/crypto/x509/internal.h )
s.files += %w( third_party/boringssl/crypto/x509/vpm_int.h )
s.files += %w( third_party/boringssl/crypto/x509v3/ext_dat.h )
s.files += %w( third_party/boringssl/crypto/x509v3/pcy_int.h )
@@ -645,10 +644,12 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/include/openssl/md4.h )
s.files += %w( third_party/boringssl/include/openssl/md5.h )
s.files += %w( third_party/boringssl/include/openssl/mem.h )
+ s.files += %w( third_party/boringssl/include/openssl/newhope.h )
+ s.files += %w( third_party/boringssl/include/openssl/nid.h )
s.files += %w( third_party/boringssl/include/openssl/obj.h )
s.files += %w( third_party/boringssl/include/openssl/obj_mac.h )
s.files += %w( third_party/boringssl/include/openssl/objects.h )
- s.files += %w( third_party/boringssl/include/openssl/opensslfeatures.h )
+ s.files += %w( third_party/boringssl/include/openssl/opensslconf.h )
s.files += %w( third_party/boringssl/include/openssl/opensslv.h )
s.files += %w( third_party/boringssl/include/openssl/ossl_typ.h )
s.files += %w( third_party/boringssl/include/openssl/pem.h )
@@ -656,9 +657,9 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/include/openssl/pkcs7.h )
s.files += %w( third_party/boringssl/include/openssl/pkcs8.h )
s.files += %w( third_party/boringssl/include/openssl/poly1305.h )
- s.files += %w( third_party/boringssl/include/openssl/pqueue.h )
s.files += %w( third_party/boringssl/include/openssl/rand.h )
s.files += %w( third_party/boringssl/include/openssl/rc4.h )
+ s.files += %w( third_party/boringssl/include/openssl/ripemd.h )
s.files += %w( third_party/boringssl/include/openssl/rsa.h )
s.files += %w( third_party/boringssl/include/openssl/safestack.h )
s.files += %w( third_party/boringssl/include/openssl/sha.h )
@@ -675,16 +676,11 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/include/openssl/x509_vfy.h )
s.files += %w( third_party/boringssl/include/openssl/x509v3.h )
s.files += %w( third_party/boringssl/ssl/internal.h )
- s.files += %w( third_party/boringssl/ssl/test/async_bio.h )
- s.files += %w( third_party/boringssl/ssl/test/packeted_bio.h )
- s.files += %w( third_party/boringssl/ssl/test/scoped_types.h )
- s.files += %w( third_party/boringssl/ssl/test/test_config.h )
s.files += %w( src/boringssl/err_data.c )
s.files += %w( third_party/boringssl/crypto/aes/aes.c )
s.files += %w( third_party/boringssl/crypto/aes/mode_wrappers.c )
s.files += %w( third_party/boringssl/crypto/asn1/a_bitstr.c )
s.files += %w( third_party/boringssl/crypto/asn1/a_bool.c )
- s.files += %w( third_party/boringssl/crypto/asn1/a_bytes.c )
s.files += %w( third_party/boringssl/crypto/asn1/a_d2i_fp.c )
s.files += %w( third_party/boringssl/crypto/asn1/a_dup.c )
s.files += %w( third_party/boringssl/crypto/asn1/a_enum.c )
@@ -703,18 +699,14 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/asn1/asn1_lib.c )
s.files += %w( third_party/boringssl/crypto/asn1/asn1_par.c )
s.files += %w( third_party/boringssl/crypto/asn1/asn_pack.c )
- s.files += %w( third_party/boringssl/crypto/asn1/bio_asn1.c )
- s.files += %w( third_party/boringssl/crypto/asn1/bio_ndef.c )
s.files += %w( third_party/boringssl/crypto/asn1/f_enum.c )
s.files += %w( third_party/boringssl/crypto/asn1/f_int.c )
s.files += %w( third_party/boringssl/crypto/asn1/f_string.c )
s.files += %w( third_party/boringssl/crypto/asn1/t_bitst.c )
- s.files += %w( third_party/boringssl/crypto/asn1/t_pkey.c )
s.files += %w( third_party/boringssl/crypto/asn1/tasn_dec.c )
s.files += %w( third_party/boringssl/crypto/asn1/tasn_enc.c )
s.files += %w( third_party/boringssl/crypto/asn1/tasn_fre.c )
s.files += %w( third_party/boringssl/crypto/asn1/tasn_new.c )
- s.files += %w( third_party/boringssl/crypto/asn1/tasn_prn.c )
s.files += %w( third_party/boringssl/crypto/asn1/tasn_typ.c )
s.files += %w( third_party/boringssl/crypto/asn1/tasn_utl.c )
s.files += %w( third_party/boringssl/crypto/asn1/x_bignum.c )
@@ -744,6 +736,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/bn/generic.c )
s.files += %w( third_party/boringssl/crypto/bn/kronecker.c )
s.files += %w( third_party/boringssl/crypto/bn/montgomery.c )
+ s.files += %w( third_party/boringssl/crypto/bn/montgomery_inv.c )
s.files += %w( third_party/boringssl/crypto/bn/mul.c )
s.files += %w( third_party/boringssl/crypto/bn/prime.c )
s.files += %w( third_party/boringssl/crypto/bn/random.c )
@@ -755,8 +748,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/bytestring/ber.c )
s.files += %w( third_party/boringssl/crypto/bytestring/cbb.c )
s.files += %w( third_party/boringssl/crypto/bytestring/cbs.c )
- s.files += %w( third_party/boringssl/crypto/chacha/chacha_generic.c )
- s.files += %w( third_party/boringssl/crypto/chacha/chacha_vec.c )
+ s.files += %w( third_party/boringssl/crypto/chacha/chacha.c )
s.files += %w( third_party/boringssl/crypto/cipher/aead.c )
s.files += %w( third_party/boringssl/crypto/cipher/cipher.c )
s.files += %w( third_party/boringssl/crypto/cipher/derive_key.c )
@@ -771,10 +763,14 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/cipher/tls_cbc.c )
s.files += %w( third_party/boringssl/crypto/cmac/cmac.c )
s.files += %w( third_party/boringssl/crypto/conf/conf.c )
+ s.files += %w( third_party/boringssl/crypto/cpu-aarch64-linux.c )
+ s.files += %w( third_party/boringssl/crypto/cpu-arm-linux.c )
s.files += %w( third_party/boringssl/crypto/cpu-arm.c )
s.files += %w( third_party/boringssl/crypto/cpu-intel.c )
+ s.files += %w( third_party/boringssl/crypto/cpu-ppc64le.c )
s.files += %w( third_party/boringssl/crypto/crypto.c )
s.files += %w( third_party/boringssl/crypto/curve25519/curve25519.c )
+ s.files += %w( third_party/boringssl/crypto/curve25519/spake25519.c )
s.files += %w( third_party/boringssl/crypto/curve25519/x25519-x86_64.c )
s.files += %w( third_party/boringssl/crypto/des/des.c )
s.files += %w( third_party/boringssl/crypto/dh/check.c )
@@ -783,8 +779,6 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/dh/params.c )
s.files += %w( third_party/boringssl/crypto/digest/digest.c )
s.files += %w( third_party/boringssl/crypto/digest/digests.c )
- s.files += %w( third_party/boringssl/crypto/directory_posix.c )
- s.files += %w( third_party/boringssl/crypto/directory_win.c )
s.files += %w( third_party/boringssl/crypto/dsa/dsa.c )
s.files += %w( third_party/boringssl/crypto/dsa/dsa_asn1.c )
s.files += %w( third_party/boringssl/crypto/ec/ec.c )
@@ -803,7 +797,6 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c )
s.files += %w( third_party/boringssl/crypto/engine/engine.c )
s.files += %w( third_party/boringssl/crypto/err/err.c )
- s.files += %w( third_party/boringssl/crypto/evp/algorithm.c )
s.files += %w( third_party/boringssl/crypto/evp/digestsign.c )
s.files += %w( third_party/boringssl/crypto/evp/evp.c )
s.files += %w( third_party/boringssl/crypto/evp/evp_asn1.c )
@@ -814,6 +807,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/evp/p_rsa.c )
s.files += %w( third_party/boringssl/crypto/evp/p_rsa_asn1.c )
s.files += %w( third_party/boringssl/crypto/evp/pbkdf.c )
+ s.files += %w( third_party/boringssl/crypto/evp/print.c )
s.files += %w( third_party/boringssl/crypto/evp/sign.c )
s.files += %w( third_party/boringssl/crypto/ex_data.c )
s.files += %w( third_party/boringssl/crypto/hkdf/hkdf.c )
@@ -827,6 +821,12 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/modes/ctr.c )
s.files += %w( third_party/boringssl/crypto/modes/gcm.c )
s.files += %w( third_party/boringssl/crypto/modes/ofb.c )
+ s.files += %w( third_party/boringssl/crypto/newhope/error_correction.c )
+ s.files += %w( third_party/boringssl/crypto/newhope/newhope.c )
+ s.files += %w( third_party/boringssl/crypto/newhope/ntt.c )
+ s.files += %w( third_party/boringssl/crypto/newhope/poly.c )
+ s.files += %w( third_party/boringssl/crypto/newhope/precomp.c )
+ s.files += %w( third_party/boringssl/crypto/newhope/reduce.c )
s.files += %w( third_party/boringssl/crypto/obj/obj.c )
s.files += %w( third_party/boringssl/crypto/obj/obj_xref.c )
s.files += %w( third_party/boringssl/crypto/pem/pem_all.c )
@@ -844,6 +844,7 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/poly1305/poly1305.c )
s.files += %w( third_party/boringssl/crypto/poly1305/poly1305_arm.c )
s.files += %w( third_party/boringssl/crypto/poly1305/poly1305_vec.c )
+ s.files += %w( third_party/boringssl/crypto/rand/deterministic.c )
s.files += %w( third_party/boringssl/crypto/rand/rand.c )
s.files += %w( third_party/boringssl/crypto/rand/urandom.c )
s.files += %w( third_party/boringssl/crypto/rand/windows.c )
@@ -868,11 +869,13 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/x509/a_sign.c )
s.files += %w( third_party/boringssl/crypto/x509/a_strex.c )
s.files += %w( third_party/boringssl/crypto/x509/a_verify.c )
+ s.files += %w( third_party/boringssl/crypto/x509/algorithm.c )
s.files += %w( third_party/boringssl/crypto/x509/asn1_gen.c )
s.files += %w( third_party/boringssl/crypto/x509/by_dir.c )
s.files += %w( third_party/boringssl/crypto/x509/by_file.c )
s.files += %w( third_party/boringssl/crypto/x509/i2d_pr.c )
s.files += %w( third_party/boringssl/crypto/x509/pkcs7.c )
+ s.files += %w( third_party/boringssl/crypto/x509/rsa_pss.c )
s.files += %w( third_party/boringssl/crypto/x509/t_crl.c )
s.files += %w( third_party/boringssl/crypto/x509/t_req.c )
s.files += %w( third_party/boringssl/crypto/x509/t_x509.c )
@@ -947,21 +950,17 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/crypto/x509v3/v3_utl.c )
s.files += %w( third_party/boringssl/ssl/custom_extensions.c )
s.files += %w( third_party/boringssl/ssl/d1_both.c )
- s.files += %w( third_party/boringssl/ssl/d1_clnt.c )
s.files += %w( third_party/boringssl/ssl/d1_lib.c )
- s.files += %w( third_party/boringssl/ssl/d1_meth.c )
s.files += %w( third_party/boringssl/ssl/d1_pkt.c )
s.files += %w( third_party/boringssl/ssl/d1_srtp.c )
- s.files += %w( third_party/boringssl/ssl/d1_srvr.c )
+ s.files += %w( third_party/boringssl/ssl/dtls_method.c )
s.files += %w( third_party/boringssl/ssl/dtls_record.c )
- s.files += %w( third_party/boringssl/ssl/pqueue/pqueue.c )
+ s.files += %w( third_party/boringssl/ssl/handshake_client.c )
+ s.files += %w( third_party/boringssl/ssl/handshake_server.c )
s.files += %w( third_party/boringssl/ssl/s3_both.c )
- s.files += %w( third_party/boringssl/ssl/s3_clnt.c )
s.files += %w( third_party/boringssl/ssl/s3_enc.c )
s.files += %w( third_party/boringssl/ssl/s3_lib.c )
- s.files += %w( third_party/boringssl/ssl/s3_meth.c )
s.files += %w( third_party/boringssl/ssl/s3_pkt.c )
- s.files += %w( third_party/boringssl/ssl/s3_srvr.c )
s.files += %w( third_party/boringssl/ssl/ssl_aead_ctx.c )
s.files += %w( third_party/boringssl/ssl/ssl_asn1.c )
s.files += %w( third_party/boringssl/ssl/ssl_buffer.c )
@@ -975,6 +974,11 @@ Gem::Specification.new do |s|
s.files += %w( third_party/boringssl/ssl/ssl_stat.c )
s.files += %w( third_party/boringssl/ssl/t1_enc.c )
s.files += %w( third_party/boringssl/ssl/t1_lib.c )
+ s.files += %w( third_party/boringssl/ssl/tls13_both.c )
+ s.files += %w( third_party/boringssl/ssl/tls13_client.c )
+ s.files += %w( third_party/boringssl/ssl/tls13_enc.c )
+ s.files += %w( third_party/boringssl/ssl/tls13_server.c )
+ s.files += %w( third_party/boringssl/ssl/tls_method.c )
s.files += %w( third_party/boringssl/ssl/tls_record.c )
s.files += %w( third_party/zlib/crc32.h )
s.files += %w( third_party/zlib/deflate.h )
diff --git a/package.xml b/package.xml
index 95a4b95345d..06ce67a02c0 100644
--- a/package.xml
+++ b/package.xml
@@ -592,23 +592,22 @@
-
-
+
+
-
-
+
@@ -654,10 +653,12 @@
+
+
-
+
@@ -665,9 +666,9 @@
-
+
@@ -684,16 +685,11 @@
-
-
-
-
-
@@ -712,18 +708,14 @@
-
-
-
-
@@ -753,6 +745,7 @@
+
@@ -764,8 +757,7 @@
-
-
+
@@ -780,10 +772,14 @@
+
+
+
+
@@ -792,8 +788,6 @@
-
-
@@ -812,7 +806,6 @@
-
@@ -823,6 +816,7 @@
+
@@ -836,6 +830,12 @@
+
+
+
+
+
+
@@ -853,6 +853,7 @@
+
@@ -877,11 +878,13 @@
+
+
@@ -956,21 +959,17 @@
-
-
-
+
-
+
+
-
-
-
@@ -984,6 +983,11 @@
+
+
+
+
+
diff --git a/src/boringssl/err_data.c b/src/boringssl/err_data.c
index d4cc08bd99c..c1257cdc787 100644
--- a/src/boringssl/err_data.c
+++ b/src/boringssl/err_data.c
@@ -54,182 +54,166 @@ OPENSSL_COMPILE_ASSERT(ERR_LIB_USER == 32, library_values_changed_32);
OPENSSL_COMPILE_ASSERT(ERR_NUM_LIBS == 33, library_values_changed_num);
const uint32_t kOpenSSLReasonValues[] = {
- 0xc3207ab,
- 0xc3287c5,
- 0xc3307d4,
- 0xc3387e4,
- 0xc3407f3,
- 0xc34880c,
- 0xc350818,
- 0xc358835,
- 0xc360847,
- 0xc368855,
- 0xc370865,
- 0xc378872,
- 0xc380882,
- 0xc38888d,
- 0xc3908a3,
- 0xc3988b2,
- 0xc3a08c6,
- 0xc3a87b8,
- 0xc3b00b0,
- 0x10321484,
- 0x10329490,
- 0x103314a9,
- 0x103394bc,
- 0x10340ded,
- 0x103494cf,
- 0x103514e4,
- 0x10359516,
- 0x1036152f,
- 0x10369544,
- 0x10371562,
- 0x10379571,
- 0x1038158d,
- 0x103895a8,
- 0x103915b7,
- 0x103995d3,
- 0x103a15ee,
- 0x103a9605,
- 0x103b1616,
- 0x103b962a,
- 0x103c1649,
- 0x103c9658,
- 0x103d166f,
- 0x103d9682,
- 0x103e0b5d,
- 0x103e96b3,
- 0x103f16c6,
- 0x103f96e0,
- 0x104016f0,
- 0x10409704,
- 0x1041171a,
- 0x10419732,
- 0x10421747,
- 0x1042975b,
- 0x1043176d,
- 0x104385c1,
- 0x104408b2,
- 0x10449782,
- 0x10451799,
- 0x104597ae,
- 0x104617bc,
- 0x10469695,
- 0x104714f7,
- 0x104787b8,
- 0x104800b0,
- 0x10488b8c,
- 0x14320b40,
- 0x14328b4e,
- 0x14330b5d,
- 0x14338b6f,
+ 0xc320838,
+ 0xc328852,
+ 0xc330861,
+ 0xc338871,
+ 0xc340880,
+ 0xc348899,
+ 0xc3508a5,
+ 0xc3588c2,
+ 0xc3608d4,
+ 0xc3688e2,
+ 0xc3708f2,
+ 0xc3788ff,
+ 0xc38090f,
+ 0xc38891a,
+ 0xc390930,
+ 0xc39893f,
+ 0xc3a0953,
+ 0xc3a8845,
+ 0xc3b00ea,
+ 0x10320845,
+ 0x103293ab,
+ 0x103313b7,
+ 0x103393d0,
+ 0x103413e3,
+ 0x10348e8b,
+ 0x10350c19,
+ 0x103593f6,
+ 0x1036140b,
+ 0x1036941e,
+ 0x1037143d,
+ 0x10379456,
+ 0x1038146b,
+ 0x10389489,
+ 0x10391498,
+ 0x103994b4,
+ 0x103a14cf,
+ 0x103a94de,
+ 0x103b14fa,
+ 0x103b9515,
+ 0x103c152c,
+ 0x103c80ea,
+ 0x103d153d,
+ 0x103d9551,
+ 0x103e1570,
+ 0x103e957f,
+ 0x103f1596,
+ 0x103f95a9,
+ 0x10400bea,
+ 0x104095bc,
+ 0x104115da,
+ 0x104195ed,
+ 0x10421607,
+ 0x10429617,
+ 0x1043162b,
+ 0x10439641,
+ 0x10441659,
+ 0x1044966e,
+ 0x10451682,
+ 0x10459694,
+ 0x104605fb,
+ 0x1046893f,
+ 0x104716a9,
+ 0x104796c0,
+ 0x104816d5,
+ 0x104896e3,
+ 0x14320bcd,
+ 0x14328bdb,
+ 0x14330bea,
+ 0x14338bfc,
+ 0x143400ac,
+ 0x143480ea,
0x18320083,
- 0x18328e53,
- 0x18340e81,
- 0x18348e95,
- 0x18358ecc,
- 0x18368ef9,
- 0x18370f0c,
- 0x18378f20,
- 0x18380f44,
- 0x18388f52,
- 0x18390f68,
- 0x18398f7c,
- 0x183a0f8c,
- 0x183b0f9c,
- 0x183b8fb1,
- 0x183c8fdc,
- 0x183d0ff0,
- 0x183d9000,
- 0x183e0b98,
- 0x183e900d,
- 0x183f101f,
- 0x183f902a,
- 0x1840103a,
- 0x1840904b,
- 0x1841105c,
- 0x1841906e,
- 0x18421097,
- 0x184290c9,
- 0x184310d8,
- 0x18451141,
- 0x18459157,
- 0x18461172,
- 0x18468ee4,
- 0x184709ca,
- 0x18478094,
- 0x18480fc8,
- 0x1848910d,
- 0x18490e69,
- 0x18498eaa,
- 0x184a11a8,
- 0x184a9125,
- 0x184b10ec,
- 0x184b8e43,
- 0x184c10b0,
- 0x184c865c,
- 0x184d118d,
- 0x184d80b0,
- 0x203211cf,
- 0x243211db,
- 0x243288f8,
- 0x243311ed,
- 0x243391fa,
- 0x24341207,
- 0x24349219,
- 0x24351228,
- 0x24359245,
- 0x24361252,
- 0x24369260,
- 0x2437126e,
- 0x2437927c,
- 0x24381285,
- 0x24389292,
- 0x243912a5,
- 0x28320b80,
- 0x28328b98,
- 0x28330b5d,
- 0x28338bab,
- 0x28340b8c,
- 0x28348094,
- 0x283500b0,
- 0x2c32281d,
- 0x2c32a82b,
- 0x2c33283d,
- 0x2c33a84f,
- 0x2c342863,
- 0x2c34a875,
- 0x2c352890,
- 0x2c35a8a2,
- 0x2c3628b5,
- 0x2c3682f3,
- 0x2c3728c2,
- 0x2c37a8d4,
- 0x2c3828e7,
- 0x2c38a8f5,
- 0x2c392905,
- 0x2c39a917,
- 0x2c3a292b,
- 0x2c3aa93c,
- 0x2c3b1365,
- 0x2c3ba94d,
- 0x2c3c2961,
- 0x2c3ca977,
- 0x2c3d2990,
- 0x2c3da9be,
- 0x2c3e29cc,
- 0x2c3ea9e4,
- 0x2c3f29fc,
- 0x2c3faa09,
- 0x2c402a2c,
- 0x2c40aa4b,
- 0x2c4111cf,
- 0x2c41aa5c,
- 0x2c422a6f,
- 0x2c429141,
- 0x2c432a80,
- 0x2c438693,
- 0x2c4429ad,
+ 0x18328ee1,
+ 0x183300ac,
+ 0x18338ef7,
+ 0x18340f0b,
+ 0x183480ea,
+ 0x18350f20,
+ 0x18358f38,
+ 0x18360f4d,
+ 0x18368f61,
+ 0x18370f85,
+ 0x18378f9b,
+ 0x18380faf,
+ 0x18388fbf,
+ 0x18390a57,
+ 0x18398fcf,
+ 0x183a0fe4,
+ 0x183a8ff8,
+ 0x183b0c25,
+ 0x183b9005,
+ 0x183c1017,
+ 0x183c9022,
+ 0x183d1032,
+ 0x183d9043,
+ 0x183e1054,
+ 0x183e9066,
+ 0x183f108f,
+ 0x183f90a8,
+ 0x184010c0,
+ 0x184086d3,
+ 0x203210e7,
+ 0x243210f3,
+ 0x24328985,
+ 0x24331105,
+ 0x24339112,
+ 0x2434111f,
+ 0x24349131,
+ 0x24351140,
+ 0x2435915d,
+ 0x2436116a,
+ 0x24369178,
+ 0x24371186,
+ 0x24379194,
+ 0x2438119d,
+ 0x243891aa,
+ 0x243911bd,
+ 0x28320c0d,
+ 0x28328c25,
+ 0x28330bea,
+ 0x28338c38,
+ 0x28340c19,
+ 0x283480ac,
+ 0x283500ea,
+ 0x2c3228ca,
+ 0x2c32a8d8,
+ 0x2c3328ea,
+ 0x2c33a8fc,
+ 0x2c342910,
+ 0x2c34a922,
+ 0x2c35293d,
+ 0x2c35a94f,
+ 0x2c362962,
+ 0x2c36832d,
+ 0x2c37296f,
+ 0x2c37a981,
+ 0x2c382994,
+ 0x2c38a9ab,
+ 0x2c3929b9,
+ 0x2c39a9c9,
+ 0x2c3a29db,
+ 0x2c3aa9ef,
+ 0x2c3b2a00,
+ 0x2c3baa1f,
+ 0x2c3c2a33,
+ 0x2c3caa49,
+ 0x2c3d2a62,
+ 0x2c3daa7f,
+ 0x2c3e2a90,
+ 0x2c3eaa9e,
+ 0x2c3f2ab6,
+ 0x2c3faace,
+ 0x2c402adb,
+ 0x2c4090e7,
+ 0x2c412aec,
+ 0x2c41aaff,
+ 0x2c4210c0,
+ 0x2c42ab10,
+ 0x2c430720,
+ 0x2c43aa11,
0x30320000,
0x30328015,
0x3033001f,
@@ -239,443 +223,465 @@ const uint32_t kOpenSSLReasonValues[] = {
0x3035006b,
0x30358083,
0x30360094,
- 0x303680a1,
- 0x303700b0,
- 0x303780bd,
- 0x303800d0,
- 0x303880eb,
- 0x30390100,
- 0x30398114,
- 0x303a0128,
- 0x303a8139,
- 0x303b0152,
- 0x303b816f,
- 0x303c017d,
- 0x303c8191,
- 0x303d01a1,
- 0x303d81ba,
- 0x303e01ca,
- 0x303e81dd,
- 0x303f01ec,
- 0x303f81f8,
- 0x3040020d,
- 0x3040821d,
- 0x30410234,
- 0x30418241,
- 0x30420254,
- 0x30428263,
- 0x30430278,
- 0x30438299,
- 0x304402ac,
- 0x304482bf,
- 0x304502d8,
- 0x304582f3,
- 0x30460310,
- 0x30468329,
- 0x30470337,
- 0x30478348,
- 0x30480357,
- 0x3048836f,
- 0x30490381,
- 0x30498395,
- 0x304a03b4,
- 0x304a83c7,
- 0x304b03d2,
- 0x304b83e3,
- 0x304c03ef,
- 0x304c8405,
- 0x304d0413,
- 0x304d8429,
- 0x304e043b,
- 0x304e844d,
- 0x304f0460,
- 0x304f8473,
- 0x30500484,
- 0x30508494,
- 0x305104ac,
- 0x305184c1,
- 0x305204d9,
- 0x305284ed,
- 0x30530505,
- 0x3053851e,
- 0x30540537,
- 0x30548554,
- 0x3055055f,
- 0x30558577,
- 0x30560587,
- 0x30568598,
- 0x305705ab,
- 0x305785c1,
- 0x305805ca,
- 0x305885df,
- 0x305905f2,
- 0x30598601,
- 0x305a0621,
- 0x305a8630,
- 0x305b063c,
- 0x305b865c,
- 0x305c0678,
- 0x305c8689,
- 0x305d0693,
- 0x34320aba,
- 0x34328ace,
- 0x34330aeb,
- 0x34338afe,
- 0x34340b0d,
- 0x34348b2a,
+ 0x303680ac,
+ 0x303700b9,
+ 0x303780c8,
+ 0x303800ea,
+ 0x303880f7,
+ 0x3039010a,
+ 0x30398125,
+ 0x303a013a,
+ 0x303a814e,
+ 0x303b0162,
+ 0x303b8173,
+ 0x303c018c,
+ 0x303c81a9,
+ 0x303d01b7,
+ 0x303d81cb,
+ 0x303e01db,
+ 0x303e81f4,
+ 0x303f0204,
+ 0x303f8217,
+ 0x30400226,
+ 0x30408232,
+ 0x30410247,
+ 0x30418257,
+ 0x3042026e,
+ 0x3042827b,
+ 0x3043028e,
+ 0x3043829d,
+ 0x304402b2,
+ 0x304482d3,
+ 0x304502e6,
+ 0x304582f9,
+ 0x30460312,
+ 0x3046832d,
+ 0x3047034a,
+ 0x30478363,
+ 0x30480371,
+ 0x30488382,
+ 0x30490391,
+ 0x304983a9,
+ 0x304a03bb,
+ 0x304a83cf,
+ 0x304b03ee,
+ 0x304b8401,
+ 0x304c040c,
+ 0x304c841d,
+ 0x304d0429,
+ 0x304d843f,
+ 0x304e044d,
+ 0x304e8463,
+ 0x304f0475,
+ 0x304f8487,
+ 0x3050049a,
+ 0x305084ad,
+ 0x305104be,
+ 0x305184ce,
+ 0x305204e6,
+ 0x305284fb,
+ 0x30530513,
+ 0x30538527,
+ 0x3054053f,
+ 0x30548558,
+ 0x30550571,
+ 0x3055858e,
+ 0x30560599,
+ 0x305685b1,
+ 0x305705c1,
+ 0x305785d2,
+ 0x305805e5,
+ 0x305885fb,
+ 0x30590604,
+ 0x30598619,
+ 0x305a062c,
+ 0x305a863b,
+ 0x305b065b,
+ 0x305b866a,
+ 0x305c068b,
+ 0x305c86a7,
+ 0x305d06b3,
+ 0x305d86d3,
+ 0x305e06ef,
+ 0x305e8700,
+ 0x305f0716,
+ 0x305f8720,
+ 0x34320b47,
+ 0x34328b5b,
+ 0x34330b78,
+ 0x34338b8b,
+ 0x34340b9a,
+ 0x34348bb7,
0x3c320083,
- 0x3c328bd5,
- 0x3c330bee,
- 0x3c338c09,
- 0x3c340c26,
- 0x3c348c50,
- 0x3c350c6b,
- 0x3c358c80,
- 0x3c360c99,
- 0x3c368cb1,
- 0x3c370cc2,
- 0x3c378cd0,
- 0x3c380cdd,
- 0x3c388cf1,
- 0x3c390b98,
- 0x3c398d05,
- 0x3c3a0d19,
- 0x3c3a8872,
- 0x3c3b0d29,
- 0x3c3b8d44,
- 0x3c3c0d56,
- 0x3c3c8d6c,
- 0x3c3d0d76,
- 0x3c3d8d8a,
- 0x3c3e0d98,
- 0x3c3e8dbd,
- 0x3c3f0bc1,
- 0x3c3f8da6,
- 0x3c400094,
- 0x3c4080b0,
- 0x3c410c41,
- 0x403217d3,
- 0x403297e9,
- 0x40331817,
- 0x40339821,
- 0x40341838,
- 0x40349856,
- 0x40351866,
- 0x40359878,
- 0x40361885,
- 0x40369891,
- 0x403718a6,
- 0x403798b8,
- 0x403818c3,
- 0x403898d5,
- 0x40390ded,
- 0x403998e5,
- 0x403a18f8,
- 0x403a9919,
- 0x403b192a,
- 0x403b993a,
+ 0x3c328c62,
+ 0x3c330c7b,
+ 0x3c338c96,
+ 0x3c340cb3,
+ 0x3c348cdd,
+ 0x3c350cf8,
+ 0x3c358d1e,
+ 0x3c360d37,
+ 0x3c368d4f,
+ 0x3c370d60,
+ 0x3c378d6e,
+ 0x3c380d7b,
+ 0x3c388d8f,
+ 0x3c390c25,
+ 0x3c398da3,
+ 0x3c3a0db7,
+ 0x3c3a88ff,
+ 0x3c3b0dc7,
+ 0x3c3b8de2,
+ 0x3c3c0df4,
+ 0x3c3c8e0a,
+ 0x3c3d0e14,
+ 0x3c3d8e28,
+ 0x3c3e0e36,
+ 0x3c3e8e5b,
+ 0x3c3f0c4e,
+ 0x3c3f8e44,
+ 0x3c4000ac,
+ 0x3c4080ea,
+ 0x3c410cce,
+ 0x3c418d0d,
+ 0x403216fa,
+ 0x40329710,
+ 0x4033173e,
+ 0x40339748,
+ 0x4034175f,
+ 0x4034977d,
+ 0x4035178d,
+ 0x4035979f,
+ 0x403617ac,
+ 0x403697b8,
+ 0x403717cd,
+ 0x403797df,
+ 0x403817ea,
+ 0x403897fc,
+ 0x40390e8b,
+ 0x4039980c,
+ 0x403a181f,
+ 0x403a9840,
+ 0x403b1851,
+ 0x403b9861,
0x403c0064,
0x403c8083,
- 0x403d1946,
- 0x403d995c,
- 0x403e196b,
- 0x403e997e,
- 0x403f1998,
- 0x403f99a6,
- 0x404019bb,
- 0x404099cf,
- 0x404119ec,
- 0x40419a07,
- 0x40421a20,
- 0x40429a33,
- 0x40431a47,
- 0x40439a5f,
- 0x40441a76,
- 0x40448094,
- 0x40451a8b,
- 0x40459a9d,
- 0x40461ac1,
- 0x40469ae1,
- 0x40471aef,
- 0x40479b03,
- 0x40481b18,
- 0x40489b31,
- 0x40491b48,
- 0x40499b62,
- 0x404a1b79,
- 0x404a9b97,
- 0x404b1baf,
- 0x404b9bc6,
- 0x404c1bdc,
- 0x404c9bee,
- 0x404d1c0f,
- 0x404d9c31,
- 0x404e1c45,
- 0x404e9c52,
- 0x404f1c69,
- 0x404f9c79,
- 0x40501c89,
- 0x40509c9d,
- 0x40511cb8,
- 0x40519cc8,
- 0x40521cdf,
- 0x40529cf1,
- 0x40531d09,
- 0x40539d1c,
- 0x40541d31,
- 0x40549d54,
- 0x40551d62,
- 0x40559d7f,
- 0x40561d8c,
- 0x40569da5,
- 0x40571dbd,
- 0x40579dd0,
- 0x40581de5,
- 0x40589df7,
- 0x40591e07,
- 0x40599e20,
- 0x405a1e34,
- 0x405a9e44,
- 0x405b1e5c,
- 0x405b9e6d,
- 0x405c1e80,
- 0x405c9e91,
- 0x405d1e9e,
- 0x405d9eb5,
- 0x405e1ed5,
- 0x405e8a08,
- 0x405f1ef6,
- 0x405f9f03,
- 0x40601f11,
- 0x40609f33,
- 0x40611f5b,
- 0x40619f70,
- 0x40621f87,
- 0x40629f98,
- 0x40631fa9,
- 0x40639fbe,
- 0x40641fd5,
- 0x40649fe6,
- 0x40652001,
- 0x4065a018,
- 0x40662030,
- 0x4066a05a,
- 0x40672085,
- 0x4067a0a6,
- 0x406820b9,
- 0x4068a0da,
- 0x406920f5,
- 0x4069a123,
- 0x406a2144,
- 0x406aa164,
- 0x406b22ec,
- 0x406ba30f,
- 0x406c2325,
- 0x406ca551,
- 0x406d2580,
- 0x406da5a8,
- 0x406e25c1,
- 0x406ea5d9,
- 0x406f25f8,
- 0x406fa60d,
- 0x40702620,
- 0x4070a63d,
- 0x40710773,
- 0x4071a64f,
- 0x40722662,
- 0x4072a67b,
- 0x40732693,
- 0x407390c9,
- 0x407426a7,
- 0x4074a6c1,
- 0x407526d2,
- 0x4075a6e6,
- 0x407626f4,
- 0x40769292,
- 0x40772719,
- 0x4077a73b,
- 0x40782756,
- 0x4078a76b,
- 0x40792782,
- 0x4079a798,
- 0x407a27a4,
- 0x407aa7b7,
- 0x407b27cc,
- 0x407ba7de,
- 0x407c27f3,
- 0x407ca7fc,
- 0x41f42217,
- 0x41f922a9,
- 0x41fe219c,
- 0x41fea378,
- 0x41ff2469,
- 0x42032230,
- 0x42082252,
- 0x4208a28e,
- 0x42092180,
- 0x4209a2c8,
- 0x420a21d7,
- 0x420aa1b7,
- 0x420b21f7,
- 0x420ba270,
- 0x420c2485,
- 0x420ca345,
- 0x420d235f,
- 0x420da396,
- 0x421223b0,
- 0x4217244c,
- 0x4217a3f2,
- 0x421c2414,
- 0x421f23cf,
- 0x4221249c,
- 0x4226242f,
- 0x422b2535,
- 0x422ba4fe,
- 0x422c251d,
- 0x422ca4d8,
- 0x422d24b7,
- 0x4432069e,
- 0x443286ad,
- 0x443306b9,
- 0x443386c7,
- 0x443406da,
- 0x443486eb,
- 0x443506f2,
- 0x443586fc,
- 0x4436070f,
- 0x44368725,
- 0x44370737,
- 0x44378744,
- 0x44380753,
- 0x4438875b,
- 0x44390773,
- 0x44398781,
- 0x443a0794,
- 0x4c3212bc,
- 0x4c3292cc,
- 0x4c3312df,
- 0x4c3392ff,
- 0x4c340094,
- 0x4c3480b0,
- 0x4c35130b,
- 0x4c359319,
- 0x4c361335,
- 0x4c369348,
- 0x4c371357,
- 0x4c379365,
- 0x4c38137a,
- 0x4c389386,
- 0x4c3913a6,
- 0x4c3993d0,
- 0x4c3a13e9,
- 0x4c3a9402,
- 0x4c3b05c1,
- 0x4c3b941b,
- 0x4c3c142d,
- 0x4c3c943c,
- 0x4c3d10c9,
- 0x4c3d9455,
- 0x4c3e1462,
- 0x50322a92,
- 0x5032aaa1,
- 0x50332aac,
- 0x5033aabc,
- 0x50342ad5,
- 0x5034aaef,
- 0x50352afd,
- 0x5035ab13,
- 0x50362b25,
- 0x5036ab3b,
- 0x50372b54,
- 0x5037ab67,
- 0x50382b7f,
- 0x5038ab90,
- 0x50392ba5,
- 0x5039abb9,
- 0x503a2bd9,
- 0x503aabef,
- 0x503b2c07,
- 0x503bac19,
- 0x503c2c35,
- 0x503cac4c,
- 0x503d2c65,
- 0x503dac7b,
- 0x503e2c88,
- 0x503eac9e,
- 0x503f2cb0,
- 0x503f8348,
- 0x50402cc3,
- 0x5040acd3,
- 0x50412ced,
- 0x5041acfc,
- 0x50422d16,
- 0x5042ad33,
- 0x50432d43,
- 0x5043ad53,
- 0x50442d62,
- 0x50448405,
- 0x50452d76,
- 0x5045ad94,
- 0x50462da7,
- 0x5046adbd,
- 0x50472dcf,
- 0x5047ade4,
- 0x50482e0a,
- 0x5048ae18,
- 0x50492e2b,
- 0x5049ae40,
- 0x504a2e56,
- 0x504aae66,
- 0x504b2e86,
- 0x504bae99,
- 0x504c2ebc,
- 0x504caeea,
- 0x504d2efc,
- 0x504daf19,
- 0x504e2f34,
- 0x504eaf50,
- 0x504f2f62,
- 0x504faf79,
- 0x50502f88,
- 0x50508678,
- 0x50512f9b,
- 0x58320e2b,
- 0x68320ded,
- 0x68328b98,
- 0x68330bab,
- 0x68338dfb,
- 0x68340e0b,
- 0x683480b0,
- 0x6c320dc9,
- 0x6c328b6f,
- 0x6c330dd4,
- 0x7432097e,
- 0x783208e3,
- 0x783288f8,
- 0x78330904,
+ 0x403d18aa,
+ 0x403d98c0,
+ 0x403e18cf,
+ 0x403e98e2,
+ 0x403f18fc,
+ 0x403f990a,
+ 0x4040191f,
+ 0x40409933,
+ 0x40411950,
+ 0x4041996b,
+ 0x40421984,
+ 0x40429997,
+ 0x404319ab,
+ 0x404399c3,
+ 0x404419da,
+ 0x404480ac,
+ 0x404519ef,
+ 0x40459a01,
+ 0x40461a25,
+ 0x40469a45,
+ 0x40471a53,
+ 0x40479a7a,
+ 0x40481ab7,
+ 0x40489ad0,
+ 0x40491ae7,
+ 0x40499b01,
+ 0x404a1b18,
+ 0x404a9b36,
+ 0x404b1b4e,
+ 0x404b9b65,
+ 0x404c1b7b,
+ 0x404c9b8d,
+ 0x404d1bae,
+ 0x404d9bd0,
+ 0x404e1be4,
+ 0x404e9bf1,
+ 0x404f1c1e,
+ 0x404f9c47,
+ 0x40501c71,
+ 0x40509c85,
+ 0x40511ca0,
+ 0x40519cb0,
+ 0x40521cc7,
+ 0x40529ceb,
+ 0x40531d03,
+ 0x40539d16,
+ 0x40541d2b,
+ 0x40549d4e,
+ 0x40551d5c,
+ 0x40559d79,
+ 0x40561d86,
+ 0x40569d9f,
+ 0x40571db7,
+ 0x40579dca,
+ 0x40581ddf,
+ 0x40589e06,
+ 0x40591e35,
+ 0x40599e62,
+ 0x405a1e76,
+ 0x405a9e86,
+ 0x405b1e9e,
+ 0x405b9eaf,
+ 0x405c1ec2,
+ 0x405c9ed3,
+ 0x405d1ee0,
+ 0x405d9ef7,
+ 0x405e1f17,
+ 0x405e8a95,
+ 0x405f1f38,
+ 0x405f9f45,
+ 0x40601f53,
+ 0x40609f75,
+ 0x40611f9d,
+ 0x40619fb2,
+ 0x40621fc9,
+ 0x40629fda,
+ 0x40631feb,
+ 0x4063a000,
+ 0x40642017,
+ 0x4064a043,
+ 0x4065205e,
+ 0x4065a075,
+ 0x4066208d,
+ 0x4066a0b7,
+ 0x406720e2,
+ 0x4067a103,
+ 0x40682116,
+ 0x4068a137,
+ 0x40692169,
+ 0x4069a197,
+ 0x406a21b8,
+ 0x406aa1d8,
+ 0x406b2360,
+ 0x406ba383,
+ 0x406c2399,
+ 0x406ca5c5,
+ 0x406d25f4,
+ 0x406da61c,
+ 0x406e264a,
+ 0x406ea662,
+ 0x406f2681,
+ 0x406fa696,
+ 0x407026a9,
+ 0x4070a6c6,
+ 0x40710800,
+ 0x4071a6d8,
+ 0x407226eb,
+ 0x4072a704,
+ 0x4073271c,
+ 0x4073936d,
+ 0x40742730,
+ 0x4074a74a,
+ 0x4075275b,
+ 0x4075a76f,
+ 0x4076277d,
+ 0x407691aa,
+ 0x407727a2,
+ 0x4077a7c4,
+ 0x407827df,
+ 0x4078a818,
+ 0x4079282f,
+ 0x4079a845,
+ 0x407a2851,
+ 0x407aa864,
+ 0x407b2879,
+ 0x407ba88b,
+ 0x407c28a0,
+ 0x407ca8a9,
+ 0x407d2152,
+ 0x407d9c57,
+ 0x407e27f4,
+ 0x407e9e16,
+ 0x407f1a67,
+ 0x407f9887,
+ 0x40801c2e,
+ 0x40809a8f,
+ 0x40811cd9,
+ 0x40819c08,
+ 0x40822635,
+ 0x4082986d,
+ 0x40831df1,
+ 0x4083a028,
+ 0x40841aa3,
+ 0x40849e4e,
+ 0x41f4228b,
+ 0x41f9231d,
+ 0x41fe2210,
+ 0x41fea3ec,
+ 0x41ff24dd,
+ 0x420322a4,
+ 0x420822c6,
+ 0x4208a302,
+ 0x420921f4,
+ 0x4209a33c,
+ 0x420a224b,
+ 0x420aa22b,
+ 0x420b226b,
+ 0x420ba2e4,
+ 0x420c24f9,
+ 0x420ca3b9,
+ 0x420d23d3,
+ 0x420da40a,
+ 0x42122424,
+ 0x421724c0,
+ 0x4217a466,
+ 0x421c2488,
+ 0x421f2443,
+ 0x42212510,
+ 0x422624a3,
+ 0x422b25a9,
+ 0x422ba572,
+ 0x422c2591,
+ 0x422ca54c,
+ 0x422d252b,
+ 0x4432072b,
+ 0x4432873a,
+ 0x44330746,
+ 0x44338754,
+ 0x44340767,
+ 0x44348778,
+ 0x4435077f,
+ 0x44358789,
+ 0x4436079c,
+ 0x443687b2,
+ 0x443707c4,
+ 0x443787d1,
+ 0x443807e0,
+ 0x443887e8,
+ 0x44390800,
+ 0x4439880e,
+ 0x443a0821,
+ 0x4c3211d4,
+ 0x4c3291e4,
+ 0x4c3311f7,
+ 0x4c339217,
+ 0x4c3400ac,
+ 0x4c3480ea,
+ 0x4c351223,
+ 0x4c359231,
+ 0x4c36124d,
+ 0x4c369260,
+ 0x4c37126f,
+ 0x4c37927d,
+ 0x4c381292,
+ 0x4c38929e,
+ 0x4c3912be,
+ 0x4c3992e8,
+ 0x4c3a1301,
+ 0x4c3a931a,
+ 0x4c3b05fb,
+ 0x4c3b9333,
+ 0x4c3c1345,
+ 0x4c3c9354,
+ 0x4c3d136d,
+ 0x4c3d937c,
+ 0x4c3e1389,
+ 0x50322b22,
+ 0x5032ab31,
+ 0x50332b3c,
+ 0x5033ab4c,
+ 0x50342b65,
+ 0x5034ab7f,
+ 0x50352b8d,
+ 0x5035aba3,
+ 0x50362bb5,
+ 0x5036abcb,
+ 0x50372be4,
+ 0x5037abf7,
+ 0x50382c0f,
+ 0x5038ac20,
+ 0x50392c35,
+ 0x5039ac49,
+ 0x503a2c69,
+ 0x503aac7f,
+ 0x503b2c97,
+ 0x503baca9,
+ 0x503c2cc5,
+ 0x503cacdc,
+ 0x503d2cf5,
+ 0x503dad0b,
+ 0x503e2d18,
+ 0x503ead2e,
+ 0x503f2d40,
+ 0x503f8382,
+ 0x50402d53,
+ 0x5040ad63,
+ 0x50412d7d,
+ 0x5041ad8c,
+ 0x50422da6,
+ 0x5042adc3,
+ 0x50432dd3,
+ 0x5043ade3,
+ 0x50442df2,
+ 0x5044843f,
+ 0x50452e06,
+ 0x5045ae24,
+ 0x50462e37,
+ 0x5046ae4d,
+ 0x50472e5f,
+ 0x5047ae74,
+ 0x50482e9a,
+ 0x5048aea8,
+ 0x50492ebb,
+ 0x5049aed0,
+ 0x504a2ee6,
+ 0x504aaef6,
+ 0x504b2f16,
+ 0x504baf29,
+ 0x504c2f4c,
+ 0x504caf7a,
+ 0x504d2f8c,
+ 0x504dafa9,
+ 0x504e2fc4,
+ 0x504eafe0,
+ 0x504f2ff2,
+ 0x504fb009,
+ 0x50503018,
+ 0x505086ef,
+ 0x5051302b,
+ 0x58320ec9,
+ 0x68320e8b,
+ 0x68328c25,
+ 0x68330c38,
+ 0x68338e99,
+ 0x68340ea9,
+ 0x683480ea,
+ 0x6c320e67,
+ 0x6c328bfc,
+ 0x6c330e72,
+ 0x74320a0b,
+ 0x78320970,
+ 0x78328985,
+ 0x78330991,
0x78338083,
- 0x78340913,
- 0x78348928,
- 0x78350947,
- 0x78358969,
- 0x7836097e,
- 0x78368994,
- 0x783709a4,
- 0x783789b7,
- 0x783809ca,
- 0x783889dc,
- 0x783909e9,
- 0x78398a08,
- 0x783a0a1d,
- 0x783a8a2b,
- 0x783b0a35,
- 0x783b8a49,
- 0x783c0a60,
- 0x783c8a75,
- 0x783d0a8c,
- 0x783d8aa1,
- 0x783e09f7,
- 0x7c3211be,
+ 0x783409a0,
+ 0x783489b5,
+ 0x783509d4,
+ 0x783589f6,
+ 0x78360a0b,
+ 0x78368a21,
+ 0x78370a31,
+ 0x78378a44,
+ 0x78380a57,
+ 0x78388a69,
+ 0x78390a76,
+ 0x78398a95,
+ 0x783a0aaa,
+ 0x783a8ab8,
+ 0x783b0ac2,
+ 0x783b8ad6,
+ 0x783c0aed,
+ 0x783c8b02,
+ 0x783d0b19,
+ 0x783d8b2e,
+ 0x783e0a84,
+ 0x7c3210d6,
};
const size_t kOpenSSLReasonValuesLen = sizeof(kOpenSSLReasonValues) / sizeof(kOpenSSLReasonValues[0]);
@@ -689,8 +695,10 @@ const char kOpenSSLReasonStringData[] =
"BN_LIB\0"
"BOOLEAN_IS_WRONG_LENGTH\0"
"BUFFER_TOO_SMALL\0"
+ "CONTEXT_NOT_INITIALISED\0"
"DECODE_ERROR\0"
"DEPTH_EXCEEDED\0"
+ "DIGEST_AND_KEY_TYPE_NOT_SUPPORTED\0"
"ENCODE_ERROR\0"
"ERROR_GETTING_TIME\0"
"EXPECTING_AN_ASN1_SEQUENCE\0"
@@ -762,10 +770,13 @@ const char kOpenSSLReasonStringData[] =
"UNEXPECTED_EOC\0"
"UNIVERSALSTRING_IS_WRONG_LENGTH\0"
"UNKNOWN_FORMAT\0"
+ "UNKNOWN_MESSAGE_DIGEST_ALGORITHM\0"
+ "UNKNOWN_SIGNATURE_ALGORITHM\0"
"UNKNOWN_TAG\0"
"UNSUPPORTED_ANY_DEFINED_BY_TYPE\0"
"UNSUPPORTED_PUBLIC_KEY_TYPE\0"
"UNSUPPORTED_TYPE\0"
+ "WRONG_PUBLIC_KEY_TYPE\0"
"WRONG_TAG\0"
"WRONG_TYPE\0"
"BAD_FOPEN_MODE\0"
@@ -849,6 +860,7 @@ const char kOpenSSLReasonStringData[] =
"GROUP_MISMATCH\0"
"I2D_ECPKPARAMETERS_FAILURE\0"
"INCOMPATIBLE_OBJECTS\0"
+ "INVALID_COFACTOR\0"
"INVALID_COMPRESSED_POINT\0"
"INVALID_COMPRESSION_BIT\0"
"INVALID_ENCODING\0"
@@ -873,27 +885,19 @@ const char kOpenSSLReasonStringData[] =
"NOT_IMPLEMENTED\0"
"RANDOM_NUMBER_GENERATION_FAILED\0"
"OPERATION_NOT_SUPPORTED\0"
- "BN_DECODE_ERROR\0"
"COMMAND_NOT_SUPPORTED\0"
- "CONTEXT_NOT_INITIALISED\0"
"DIFFERENT_KEY_TYPES\0"
"DIFFERENT_PARAMETERS\0"
- "DIGEST_AND_KEY_TYPE_NOT_SUPPORTED\0"
"EXPECTING_AN_EC_KEY_KEY\0"
"EXPECTING_AN_RSA_KEY\0"
- "EXPECTING_A_DH_KEY\0"
"EXPECTING_A_DSA_KEY\0"
"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE\0"
- "INVALID_CURVE\0"
"INVALID_DIGEST_LENGTH\0"
"INVALID_DIGEST_TYPE\0"
"INVALID_KEYBITS\0"
"INVALID_MGF1_MD\0"
"INVALID_PADDING_MODE\0"
- "INVALID_PSS_PARAMETERS\0"
"INVALID_PSS_SALTLEN\0"
- "INVALID_SALT_LENGTH\0"
- "INVALID_TRAILER\0"
"KEYS_NOT_SET\0"
"NO_DEFAULT_DIGEST\0"
"NO_KEY_SET\0"
@@ -903,17 +907,8 @@ const char kOpenSSLReasonStringData[] =
"NO_PARAMETERS_SET\0"
"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE\0"
"OPERATON_NOT_INITIALIZED\0"
- "PARAMETER_ENCODING_ERROR\0"
- "UNKNOWN_DIGEST\0"
- "UNKNOWN_MASK_DIGEST\0"
- "UNKNOWN_MESSAGE_DIGEST_ALGORITHM\0"
"UNKNOWN_PUBLIC_KEY_TYPE\0"
- "UNKNOWN_SIGNATURE_ALGORITHM\0"
"UNSUPPORTED_ALGORITHM\0"
- "UNSUPPORTED_MASK_ALGORITHM\0"
- "UNSUPPORTED_MASK_PARAMETER\0"
- "UNSUPPORTED_SIGNATURE_TYPE\0"
- "WRONG_PUBLIC_KEY_TYPE\0"
"OUTPUT_TOO_LARGE\0"
"UNKNOWN_NID\0"
"BAD_BASE64_DECODE\0"
@@ -949,6 +944,7 @@ const char kOpenSSLReasonStringData[] =
"UNKNOWN_ALGORITHM\0"
"UNKNOWN_CIPHER\0"
"UNKNOWN_CIPHER_ALGORITHM\0"
+ "UNKNOWN_DIGEST\0"
"UNKNOWN_HASH\0"
"UNSUPPORTED_PRIVATE_KEY_ALGORITHM\0"
"BAD_E_VALUE\0"
@@ -1009,6 +1005,8 @@ const char kOpenSSLReasonStringData[] =
"BAD_SSL_FILETYPE\0"
"BAD_WRITE_RETRY\0"
"BIO_NOT_SET\0"
+ "BLOCK_CIPHER_PAD_IS_WRONG\0"
+ "BUFFERED_MESSAGES_ON_CIPHER_CHANGE\0"
"CA_DN_LENGTH_MISMATCH\0"
"CA_DN_TOO_LONG\0"
"CCS_RECEIVED_EARLY\0"
@@ -1029,7 +1027,10 @@ const char kOpenSSLReasonStringData[] =
"DH_PUBLIC_VALUE_LENGTH_IS_WRONG\0"
"DH_P_TOO_LONG\0"
"DIGEST_CHECK_FAILED\0"
+ "DOWNGRADE_DETECTED\0"
"DTLS_MESSAGE_TOO_BIG\0"
+ "DUPLICATE_EXTENSION\0"
+ "DUPLICATE_KEY_SHARE\0"
"ECC_CERT_NOT_FOR_SIGNING\0"
"EMS_STATE_INCONSISTENT\0"
"ENCRYPTED_LENGTH_TOO_LONG\0"
@@ -1044,13 +1045,17 @@ const char kOpenSSLReasonStringData[] =
"HTTPS_PROXY_REQUEST\0"
"HTTP_REQUEST\0"
"INAPPROPRIATE_FALLBACK\0"
+ "INVALID_ALPN_PROTOCOL\0"
"INVALID_COMMAND\0"
+ "INVALID_COMPRESSION_LIST\0"
"INVALID_MESSAGE\0"
+ "INVALID_OUTER_RECORD_TYPE\0"
"INVALID_SSL_SESSION\0"
"INVALID_TICKET_KEYS_LENGTH\0"
"LENGTH_MISMATCH\0"
"LIBRARY_HAS_NO_CIPHERS\0"
"MISSING_EXTENSION\0"
+ "MISSING_KEY_SHARE\0"
"MISSING_RSA_CERTIFICATE\0"
"MISSING_TMP_DH_KEY\0"
"MISSING_TMP_ECDH_KEY\0"
@@ -1063,8 +1068,11 @@ const char kOpenSSLReasonStringData[] =
"NO_CERTIFICATE_SET\0"
"NO_CIPHERS_AVAILABLE\0"
"NO_CIPHERS_PASSED\0"
+ "NO_CIPHERS_SPECIFIED\0"
"NO_CIPHER_MATCH\0"
+ "NO_COMMON_SIGNATURE_ALGORITHMS\0"
"NO_COMPRESSION_SPECIFIED\0"
+ "NO_GROUPS_SPECIFIED\0"
"NO_METHOD_SPECIFIED\0"
"NO_P256_SUPPORT\0"
"NO_PRIVATE_KEY_ASSIGNED\0"
@@ -1086,6 +1094,7 @@ const char kOpenSSLReasonStringData[] =
"READ_TIMEOUT_EXPIRED\0"
"RECORD_LENGTH_MISMATCH\0"
"RECORD_TOO_LARGE\0"
+ "RENEGOTIATION_EMS_MISMATCH\0"
"RENEGOTIATION_ENCODING_ERR\0"
"RENEGOTIATION_MISMATCH\0"
"REQUIRED_CIPHER_MISSING\0"
@@ -1095,6 +1104,7 @@ const char kOpenSSLReasonStringData[] =
"SERVERHELLO_TLSEXT\0"
"SESSION_ID_CONTEXT_UNINITIALIZED\0"
"SESSION_MAY_NOT_BE_CREATED\0"
+ "SHUTDOWN_WHILE_IN_INIT\0"
"SIGNATURE_ALGORITHMS_EXTENSION_SENT_BY_SERVER\0"
"SRTP_COULD_NOT_ALLOCATE_PROFILES\0"
"SRTP_UNKNOWN_PROTECTION_PROFILE\0"
@@ -1135,6 +1145,7 @@ const char kOpenSSLReasonStringData[] =
"TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST\0"
"TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG\0"
"TOO_MANY_EMPTY_FRAGMENTS\0"
+ "TOO_MANY_KEY_UPDATES\0"
"TOO_MANY_WARNING_ALERTS\0"
"UNABLE_TO_FIND_ECDH_PARAMETERS\0"
"UNEXPECTED_EXTENSION\0"
@@ -1153,6 +1164,7 @@ const char kOpenSSLReasonStringData[] =
"UNSUPPORTED_COMPRESSION_ALGORITHM\0"
"UNSUPPORTED_ELLIPTIC_CURVE\0"
"UNSUPPORTED_PROTOCOL\0"
+ "UNSUPPORTED_PROTOCOL_FOR_CUSTOM_KEY\0"
"WRONG_CERTIFICATE_TYPE\0"
"WRONG_CIPHER_RETURNED\0"
"WRONG_CURVE\0"
@@ -1173,12 +1185,14 @@ const char kOpenSSLReasonStringData[] =
"IDP_MISMATCH\0"
"INVALID_DIRECTORY\0"
"INVALID_FIELD_NAME\0"
+ "INVALID_PSS_PARAMETERS\0"
"INVALID_TRUST\0"
"ISSUER_MISMATCH\0"
"KEY_TYPE_MISMATCH\0"
"KEY_VALUES_MISMATCH\0"
"LOADING_CERT_DIR\0"
"LOADING_DEFAULTS\0"
+ "NAME_TOO_LONG\0"
"NEWER_CRL_NOT_NEWER\0"
"NOT_PKCS7_SIGNED_DATA\0"
"NO_CERTIFICATES_INCLUDED\0"
@@ -1188,8 +1202,6 @@ const char kOpenSSLReasonStringData[] =
"PUBLIC_KEY_DECODE_ERROR\0"
"PUBLIC_KEY_ENCODE_ERROR\0"
"SHOULD_RETRY\0"
- "UNABLE_TO_FIND_PARAMETERS_IN_CHAIN\0"
- "UNABLE_TO_GET_CERTS_PUBLIC_KEY\0"
"UNKNOWN_KEY_TYPE\0"
"UNKNOWN_PURPOSE_ID\0"
"UNKNOWN_TRUST_ID\0"
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 7adf6dbed87..9d470e17dfe 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -299,7 +299,6 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/aes/mode_wrappers.c',
'third_party/boringssl/crypto/asn1/a_bitstr.c',
'third_party/boringssl/crypto/asn1/a_bool.c',
- 'third_party/boringssl/crypto/asn1/a_bytes.c',
'third_party/boringssl/crypto/asn1/a_d2i_fp.c',
'third_party/boringssl/crypto/asn1/a_dup.c',
'third_party/boringssl/crypto/asn1/a_enum.c',
@@ -318,18 +317,14 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/asn1/asn1_lib.c',
'third_party/boringssl/crypto/asn1/asn1_par.c',
'third_party/boringssl/crypto/asn1/asn_pack.c',
- 'third_party/boringssl/crypto/asn1/bio_asn1.c',
- 'third_party/boringssl/crypto/asn1/bio_ndef.c',
'third_party/boringssl/crypto/asn1/f_enum.c',
'third_party/boringssl/crypto/asn1/f_int.c',
'third_party/boringssl/crypto/asn1/f_string.c',
'third_party/boringssl/crypto/asn1/t_bitst.c',
- 'third_party/boringssl/crypto/asn1/t_pkey.c',
'third_party/boringssl/crypto/asn1/tasn_dec.c',
'third_party/boringssl/crypto/asn1/tasn_enc.c',
'third_party/boringssl/crypto/asn1/tasn_fre.c',
'third_party/boringssl/crypto/asn1/tasn_new.c',
- 'third_party/boringssl/crypto/asn1/tasn_prn.c',
'third_party/boringssl/crypto/asn1/tasn_typ.c',
'third_party/boringssl/crypto/asn1/tasn_utl.c',
'third_party/boringssl/crypto/asn1/x_bignum.c',
@@ -359,6 +354,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/bn/generic.c',
'third_party/boringssl/crypto/bn/kronecker.c',
'third_party/boringssl/crypto/bn/montgomery.c',
+ 'third_party/boringssl/crypto/bn/montgomery_inv.c',
'third_party/boringssl/crypto/bn/mul.c',
'third_party/boringssl/crypto/bn/prime.c',
'third_party/boringssl/crypto/bn/random.c',
@@ -370,8 +366,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/bytestring/ber.c',
'third_party/boringssl/crypto/bytestring/cbb.c',
'third_party/boringssl/crypto/bytestring/cbs.c',
- 'third_party/boringssl/crypto/chacha/chacha_generic.c',
- 'third_party/boringssl/crypto/chacha/chacha_vec.c',
+ 'third_party/boringssl/crypto/chacha/chacha.c',
'third_party/boringssl/crypto/cipher/aead.c',
'third_party/boringssl/crypto/cipher/cipher.c',
'third_party/boringssl/crypto/cipher/derive_key.c',
@@ -386,10 +381,14 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/cipher/tls_cbc.c',
'third_party/boringssl/crypto/cmac/cmac.c',
'third_party/boringssl/crypto/conf/conf.c',
+ 'third_party/boringssl/crypto/cpu-aarch64-linux.c',
+ 'third_party/boringssl/crypto/cpu-arm-linux.c',
'third_party/boringssl/crypto/cpu-arm.c',
'third_party/boringssl/crypto/cpu-intel.c',
+ 'third_party/boringssl/crypto/cpu-ppc64le.c',
'third_party/boringssl/crypto/crypto.c',
'third_party/boringssl/crypto/curve25519/curve25519.c',
+ 'third_party/boringssl/crypto/curve25519/spake25519.c',
'third_party/boringssl/crypto/curve25519/x25519-x86_64.c',
'third_party/boringssl/crypto/des/des.c',
'third_party/boringssl/crypto/dh/check.c',
@@ -398,8 +397,6 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/dh/params.c',
'third_party/boringssl/crypto/digest/digest.c',
'third_party/boringssl/crypto/digest/digests.c',
- 'third_party/boringssl/crypto/directory_posix.c',
- 'third_party/boringssl/crypto/directory_win.c',
'third_party/boringssl/crypto/dsa/dsa.c',
'third_party/boringssl/crypto/dsa/dsa_asn1.c',
'third_party/boringssl/crypto/ec/ec.c',
@@ -418,7 +415,6 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c',
'third_party/boringssl/crypto/engine/engine.c',
'third_party/boringssl/crypto/err/err.c',
- 'third_party/boringssl/crypto/evp/algorithm.c',
'third_party/boringssl/crypto/evp/digestsign.c',
'third_party/boringssl/crypto/evp/evp.c',
'third_party/boringssl/crypto/evp/evp_asn1.c',
@@ -429,6 +425,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/evp/p_rsa.c',
'third_party/boringssl/crypto/evp/p_rsa_asn1.c',
'third_party/boringssl/crypto/evp/pbkdf.c',
+ 'third_party/boringssl/crypto/evp/print.c',
'third_party/boringssl/crypto/evp/sign.c',
'third_party/boringssl/crypto/ex_data.c',
'third_party/boringssl/crypto/hkdf/hkdf.c',
@@ -442,6 +439,12 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/modes/ctr.c',
'third_party/boringssl/crypto/modes/gcm.c',
'third_party/boringssl/crypto/modes/ofb.c',
+ 'third_party/boringssl/crypto/newhope/error_correction.c',
+ 'third_party/boringssl/crypto/newhope/newhope.c',
+ 'third_party/boringssl/crypto/newhope/ntt.c',
+ 'third_party/boringssl/crypto/newhope/poly.c',
+ 'third_party/boringssl/crypto/newhope/precomp.c',
+ 'third_party/boringssl/crypto/newhope/reduce.c',
'third_party/boringssl/crypto/obj/obj.c',
'third_party/boringssl/crypto/obj/obj_xref.c',
'third_party/boringssl/crypto/pem/pem_all.c',
@@ -459,6 +462,7 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/poly1305/poly1305.c',
'third_party/boringssl/crypto/poly1305/poly1305_arm.c',
'third_party/boringssl/crypto/poly1305/poly1305_vec.c',
+ 'third_party/boringssl/crypto/rand/deterministic.c',
'third_party/boringssl/crypto/rand/rand.c',
'third_party/boringssl/crypto/rand/urandom.c',
'third_party/boringssl/crypto/rand/windows.c',
@@ -483,11 +487,13 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/x509/a_sign.c',
'third_party/boringssl/crypto/x509/a_strex.c',
'third_party/boringssl/crypto/x509/a_verify.c',
+ 'third_party/boringssl/crypto/x509/algorithm.c',
'third_party/boringssl/crypto/x509/asn1_gen.c',
'third_party/boringssl/crypto/x509/by_dir.c',
'third_party/boringssl/crypto/x509/by_file.c',
'third_party/boringssl/crypto/x509/i2d_pr.c',
'third_party/boringssl/crypto/x509/pkcs7.c',
+ 'third_party/boringssl/crypto/x509/rsa_pss.c',
'third_party/boringssl/crypto/x509/t_crl.c',
'third_party/boringssl/crypto/x509/t_req.c',
'third_party/boringssl/crypto/x509/t_x509.c',
@@ -562,21 +568,17 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/crypto/x509v3/v3_utl.c',
'third_party/boringssl/ssl/custom_extensions.c',
'third_party/boringssl/ssl/d1_both.c',
- 'third_party/boringssl/ssl/d1_clnt.c',
'third_party/boringssl/ssl/d1_lib.c',
- 'third_party/boringssl/ssl/d1_meth.c',
'third_party/boringssl/ssl/d1_pkt.c',
'third_party/boringssl/ssl/d1_srtp.c',
- 'third_party/boringssl/ssl/d1_srvr.c',
+ 'third_party/boringssl/ssl/dtls_method.c',
'third_party/boringssl/ssl/dtls_record.c',
- 'third_party/boringssl/ssl/pqueue/pqueue.c',
+ 'third_party/boringssl/ssl/handshake_client.c',
+ 'third_party/boringssl/ssl/handshake_server.c',
'third_party/boringssl/ssl/s3_both.c',
- 'third_party/boringssl/ssl/s3_clnt.c',
'third_party/boringssl/ssl/s3_enc.c',
'third_party/boringssl/ssl/s3_lib.c',
- 'third_party/boringssl/ssl/s3_meth.c',
'third_party/boringssl/ssl/s3_pkt.c',
- 'third_party/boringssl/ssl/s3_srvr.c',
'third_party/boringssl/ssl/ssl_aead_ctx.c',
'third_party/boringssl/ssl/ssl_asn1.c',
'third_party/boringssl/ssl/ssl_buffer.c',
@@ -590,6 +592,11 @@ CORE_SOURCE_FILES = [
'third_party/boringssl/ssl/ssl_stat.c',
'third_party/boringssl/ssl/t1_enc.c',
'third_party/boringssl/ssl/t1_lib.c',
+ 'third_party/boringssl/ssl/tls13_both.c',
+ 'third_party/boringssl/ssl/tls13_client.c',
+ 'third_party/boringssl/ssl/tls13_enc.c',
+ 'third_party/boringssl/ssl/tls13_server.c',
+ 'third_party/boringssl/ssl/tls_method.c',
'third_party/boringssl/ssl/tls_record.c',
'third_party/zlib/adler32.c',
'third_party/zlib/compress.c',
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 0eaa832e147..e766dcbdb61 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -3545,6 +3545,20 @@
"third_party": true,
"type": "target"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_chacha_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_chacha_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
{
"deps": [
"boringssl",
@@ -3615,6 +3629,20 @@
"third_party": true,
"type": "target"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_spake25519_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_spake25519_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
{
"deps": [
"boringssl",
@@ -3699,6 +3727,34 @@
"third_party": true,
"type": "target"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_ecdh_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_ecdh_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_ecdsa_sign_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_ecdsa_sign_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
{
"deps": [
"boringssl",
@@ -3713,6 +3769,20 @@
"third_party": true,
"type": "target"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_ecdsa_verify_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_ecdsa_verify_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
{
"deps": [
"boringssl",
@@ -3825,6 +3895,62 @@
"third_party": true,
"type": "target"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_newhope_statistical_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_newhope_statistical_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_newhope_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_newhope_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_newhope_vectors_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_newhope_vectors_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_obj_test_lib",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_obj_test",
+ "src": [],
+ "third_party": true,
+ "type": "target"
+ },
{
"deps": [
"boringssl",
@@ -3965,20 +4091,6 @@
"third_party": true,
"type": "target"
},
- {
- "deps": [
- "boringssl",
- "boringssl_pqueue_test_lib",
- "boringssl_test_util"
- ],
- "headers": [],
- "is_filegroup": false,
- "language": "c++",
- "name": "boringssl_pqueue_test",
- "src": [],
- "third_party": true,
- "type": "target"
- },
{
"deps": [
"boringssl",
@@ -5710,23 +5822,22 @@
"third_party/boringssl/crypto/conf/internal.h",
"third_party/boringssl/crypto/curve25519/internal.h",
"third_party/boringssl/crypto/des/internal.h",
- "third_party/boringssl/crypto/dh/internal.h",
"third_party/boringssl/crypto/digest/internal.h",
"third_party/boringssl/crypto/digest/md32_common.h",
- "third_party/boringssl/crypto/directory.h",
"third_party/boringssl/crypto/ec/internal.h",
"third_party/boringssl/crypto/ec/p256-x86_64-table.h",
"third_party/boringssl/crypto/evp/internal.h",
"third_party/boringssl/crypto/internal.h",
"third_party/boringssl/crypto/modes/internal.h",
+ "third_party/boringssl/crypto/newhope/internal.h",
"third_party/boringssl/crypto/obj/obj_dat.h",
"third_party/boringssl/crypto/obj/obj_xref.h",
"third_party/boringssl/crypto/pkcs8/internal.h",
+ "third_party/boringssl/crypto/poly1305/internal.h",
"third_party/boringssl/crypto/rand/internal.h",
"third_party/boringssl/crypto/rsa/internal.h",
- "third_party/boringssl/crypto/test/scoped_types.h",
- "third_party/boringssl/crypto/test/test_util.h",
"third_party/boringssl/crypto/x509/charmap.h",
+ "third_party/boringssl/crypto/x509/internal.h",
"third_party/boringssl/crypto/x509/vpm_int.h",
"third_party/boringssl/crypto/x509v3/ext_dat.h",
"third_party/boringssl/crypto/x509v3/pcy_int.h",
@@ -5772,10 +5883,12 @@
"third_party/boringssl/include/openssl/md4.h",
"third_party/boringssl/include/openssl/md5.h",
"third_party/boringssl/include/openssl/mem.h",
+ "third_party/boringssl/include/openssl/newhope.h",
+ "third_party/boringssl/include/openssl/nid.h",
"third_party/boringssl/include/openssl/obj.h",
"third_party/boringssl/include/openssl/obj_mac.h",
"third_party/boringssl/include/openssl/objects.h",
- "third_party/boringssl/include/openssl/opensslfeatures.h",
+ "third_party/boringssl/include/openssl/opensslconf.h",
"third_party/boringssl/include/openssl/opensslv.h",
"third_party/boringssl/include/openssl/ossl_typ.h",
"third_party/boringssl/include/openssl/pem.h",
@@ -5783,9 +5896,9 @@
"third_party/boringssl/include/openssl/pkcs7.h",
"third_party/boringssl/include/openssl/pkcs8.h",
"third_party/boringssl/include/openssl/poly1305.h",
- "third_party/boringssl/include/openssl/pqueue.h",
"third_party/boringssl/include/openssl/rand.h",
"third_party/boringssl/include/openssl/rc4.h",
+ "third_party/boringssl/include/openssl/ripemd.h",
"third_party/boringssl/include/openssl/rsa.h",
"third_party/boringssl/include/openssl/safestack.h",
"third_party/boringssl/include/openssl/sha.h",
@@ -5801,11 +5914,7 @@
"third_party/boringssl/include/openssl/x509.h",
"third_party/boringssl/include/openssl/x509_vfy.h",
"third_party/boringssl/include/openssl/x509v3.h",
- "third_party/boringssl/ssl/internal.h",
- "third_party/boringssl/ssl/test/async_bio.h",
- "third_party/boringssl/ssl/test/packeted_bio.h",
- "third_party/boringssl/ssl/test/scoped_types.h",
- "third_party/boringssl/ssl/test/test_config.h"
+ "third_party/boringssl/ssl/internal.h"
],
"is_filegroup": false,
"language": "c",
@@ -5904,6 +6013,19 @@
"third_party": true,
"type": "lib"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_chacha_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
{
"deps": [
"boringssl",
@@ -5969,6 +6091,19 @@
"third_party": true,
"type": "lib"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_spake25519_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
{
"deps": [
"boringssl",
@@ -6047,6 +6182,32 @@
"third_party": true,
"type": "lib"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_ecdh_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_ecdsa_sign_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
{
"deps": [
"boringssl",
@@ -6060,6 +6221,19 @@
"third_party": true,
"type": "lib"
},
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_ecdsa_verify_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
{
"deps": [
"boringssl",
@@ -6158,7 +6332,7 @@
],
"headers": [],
"is_filegroup": false,
- "language": "c",
+ "language": "c++",
"name": "boringssl_gcm_test_lib",
"src": [],
"third_party": true,
@@ -6172,7 +6346,7 @@
"headers": [],
"is_filegroup": false,
"language": "c++",
- "name": "boringssl_pkcs12_test_lib",
+ "name": "boringssl_newhope_statistical_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6185,7 +6359,7 @@
"headers": [],
"is_filegroup": false,
"language": "c++",
- "name": "boringssl_pkcs8_test_lib",
+ "name": "boringssl_newhope_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6198,7 +6372,7 @@
"headers": [],
"is_filegroup": false,
"language": "c++",
- "name": "boringssl_poly1305_test_lib",
+ "name": "boringssl_newhope_vectors_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6210,8 +6384,8 @@
],
"headers": [],
"is_filegroup": false,
- "language": "c",
- "name": "boringssl_refcount_test_lib",
+ "language": "c++",
+ "name": "boringssl_obj_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6224,7 +6398,7 @@
"headers": [],
"is_filegroup": false,
"language": "c++",
- "name": "boringssl_rsa_test_lib",
+ "name": "boringssl_pkcs12_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6236,8 +6410,21 @@
],
"headers": [],
"is_filegroup": false,
- "language": "c",
- "name": "boringssl_thread_test_lib",
+ "language": "c++",
+ "name": "boringssl_pkcs8_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_poly1305_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6250,7 +6437,7 @@
"headers": [],
"is_filegroup": false,
"language": "c",
- "name": "boringssl_pkcs7_test_lib",
+ "name": "boringssl_refcount_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6263,7 +6450,7 @@
"headers": [],
"is_filegroup": false,
"language": "c++",
- "name": "boringssl_x509_test_lib",
+ "name": "boringssl_rsa_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6276,7 +6463,7 @@
"headers": [],
"is_filegroup": false,
"language": "c",
- "name": "boringssl_tab_test_lib",
+ "name": "boringssl_thread_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6289,7 +6476,20 @@
"headers": [],
"is_filegroup": false,
"language": "c",
- "name": "boringssl_v3name_test_lib",
+ "name": "boringssl_pkcs7_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "boringssl_x509_test_lib",
"src": [],
"third_party": true,
"type": "lib"
@@ -6302,7 +6502,20 @@
"headers": [],
"is_filegroup": false,
"language": "c",
- "name": "boringssl_pqueue_test_lib",
+ "name": "boringssl_tab_test_lib",
+ "src": [],
+ "third_party": true,
+ "type": "lib"
+ },
+ {
+ "deps": [
+ "boringssl",
+ "boringssl_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c",
+ "name": "boringssl_v3name_test_lib",
"src": [],
"third_party": true,
"type": "lib"
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index 1251932c256..1f40b8735af 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -3590,7 +3590,9 @@
]
},
{
- "args": [],
+ "args": [
+ "third_party/boringssl/crypto/bn/bn_tests.txt"
+ ],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -3637,6 +3639,30 @@
"windows"
]
},
+ {
+ "args": [],
+ "boringssl": true,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "defaults": "boringssl",
+ "exclude_configs": [
+ "asan"
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "boringssl_chacha_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
{
"args": [
"aes-128-gcm",
@@ -3801,8 +3827,8 @@
},
{
"args": [
- "rc4-md5-tls",
- "third_party/boringssl/crypto/cipher/test/rc4_md5_tls_tests.txt"
+ "aes-128-cbc-sha1-tls",
+ "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha1_tls_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -3828,8 +3854,8 @@
},
{
"args": [
- "rc4-sha1-tls",
- "third_party/boringssl/crypto/cipher/test/rc4_sha1_tls_tests.txt"
+ "aes-128-cbc-sha1-tls-implicit-iv",
+ "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha1_tls_implicit_iv_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -3855,8 +3881,8 @@
},
{
"args": [
- "aes-128-cbc-sha1-tls",
- "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha1_tls_tests.txt"
+ "aes-128-cbc-sha256-tls",
+ "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha256_tls_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -3882,8 +3908,8 @@
},
{
"args": [
- "aes-128-cbc-sha1-tls-implicit-iv",
- "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha1_tls_implicit_iv_tests.txt"
+ "aes-256-cbc-sha1-tls",
+ "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha1_tls_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -3909,8 +3935,8 @@
},
{
"args": [
- "aes-128-cbc-sha256-tls",
- "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha256_tls_tests.txt"
+ "aes-256-cbc-sha1-tls-implicit-iv",
+ "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha1_tls_implicit_iv_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -3936,8 +3962,8 @@
},
{
"args": [
- "aes-256-cbc-sha1-tls",
- "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha1_tls_tests.txt"
+ "aes-256-cbc-sha256-tls",
+ "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha256_tls_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -3963,8 +3989,8 @@
},
{
"args": [
- "aes-256-cbc-sha1-tls-implicit-iv",
- "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha1_tls_implicit_iv_tests.txt"
+ "aes-256-cbc-sha384-tls",
+ "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha384_tls_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -3990,8 +4016,8 @@
},
{
"args": [
- "aes-256-cbc-sha256-tls",
- "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha256_tls_tests.txt"
+ "des-ede3-cbc-sha1-tls",
+ "third_party/boringssl/crypto/cipher/test/des_ede3_cbc_sha1_tls_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4017,8 +4043,8 @@
},
{
"args": [
- "aes-256-cbc-sha384-tls",
- "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha384_tls_tests.txt"
+ "des-ede3-cbc-sha1-tls-implicit-iv",
+ "third_party/boringssl/crypto/cipher/test/des_ede3_cbc_sha1_tls_implicit_iv_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4044,8 +4070,8 @@
},
{
"args": [
- "des-ede3-cbc-sha1-tls",
- "third_party/boringssl/crypto/cipher/test/des_ede3_cbc_sha1_tls_tests.txt"
+ "aes-128-cbc-sha1-ssl3",
+ "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha1_ssl3_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4071,8 +4097,8 @@
},
{
"args": [
- "des-ede3-cbc-sha1-tls-implicit-iv",
- "third_party/boringssl/crypto/cipher/test/des_ede3_cbc_sha1_tls_implicit_iv_tests.txt"
+ "aes-256-cbc-sha1-ssl3",
+ "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha1_ssl3_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4098,8 +4124,8 @@
},
{
"args": [
- "rc4-md5-ssl3",
- "third_party/boringssl/crypto/cipher/test/rc4_md5_ssl3_tests.txt"
+ "des-ede3-cbc-sha1-ssl3",
+ "third_party/boringssl/crypto/cipher/test/des_ede3_cbc_sha1_ssl3_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4125,8 +4151,8 @@
},
{
"args": [
- "rc4-sha1-ssl3",
- "third_party/boringssl/crypto/cipher/test/rc4_sha1_ssl3_tests.txt"
+ "aes-128-ctr-hmac-sha256",
+ "third_party/boringssl/crypto/cipher/test/aes_128_ctr_hmac_sha256.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4152,8 +4178,8 @@
},
{
"args": [
- "aes-128-cbc-sha1-ssl3",
- "third_party/boringssl/crypto/cipher/test/aes_128_cbc_sha1_ssl3_tests.txt"
+ "aes-256-ctr-hmac-sha256",
+ "third_party/boringssl/crypto/cipher/test/aes_256_ctr_hmac_sha256.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4179,8 +4205,7 @@
},
{
"args": [
- "aes-256-cbc-sha1-ssl3",
- "third_party/boringssl/crypto/cipher/test/aes_256_cbc_sha1_ssl3_tests.txt"
+ "third_party/boringssl/crypto/cipher/test/cipher_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4196,7 +4221,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_aead_test",
+ "name": "boringssl_cipher_test",
"platforms": [
"linux",
"mac",
@@ -4205,10 +4230,7 @@
]
},
{
- "args": [
- "des-ede3-cbc-sha1-ssl3",
- "third_party/boringssl/crypto/cipher/test/des_ede3_cbc_sha1_ssl3_tests.txt"
- ],
+ "args": [],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -4223,7 +4245,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_aead_test",
+ "name": "boringssl_cmac_test",
"platforms": [
"linux",
"mac",
@@ -4232,10 +4254,7 @@
]
},
{
- "args": [
- "aes-128-ctr-hmac-sha256",
- "third_party/boringssl/crypto/cipher/test/aes_128_ctr_hmac_sha256.txt"
- ],
+ "args": [],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -4250,7 +4269,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_aead_test",
+ "name": "boringssl_constant_time_test",
"platforms": [
"linux",
"mac",
@@ -4260,8 +4279,7 @@
},
{
"args": [
- "aes-256-ctr-hmac-sha256",
- "third_party/boringssl/crypto/cipher/test/aes_256_ctr_hmac_sha256.txt"
+ "third_party/boringssl/crypto/curve25519/ed25519_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4277,7 +4295,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_aead_test",
+ "name": "boringssl_ed25519_test",
"platforms": [
"linux",
"mac",
@@ -4286,9 +4304,7 @@
]
},
{
- "args": [
- "third_party/boringssl/crypto/cipher/test/cipher_test.txt"
- ],
+ "args": [],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -4303,7 +4319,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_cipher_test",
+ "name": "boringssl_x25519_test",
"platforms": [
"linux",
"mac",
@@ -4327,7 +4343,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_cmac_test",
+ "name": "boringssl_spake25519_test",
"platforms": [
"linux",
"mac",
@@ -4351,7 +4367,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_constant_time_test",
+ "name": "boringssl_dh_test",
"platforms": [
"linux",
"mac",
@@ -4360,9 +4376,7 @@
]
},
{
- "args": [
- "third_party/boringssl/crypto/curve25519/ed25519_tests.txt"
- ],
+ "args": [],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -4377,7 +4391,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_ed25519_test",
+ "name": "boringssl_digest_test",
"platforms": [
"linux",
"mac",
@@ -4401,7 +4415,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_x25519_test",
+ "name": "boringssl_dsa_test",
"platforms": [
"linux",
"mac",
@@ -4425,7 +4439,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_dh_test",
+ "name": "boringssl_ec_test",
"platforms": [
"linux",
"mac",
@@ -4449,7 +4463,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_digest_test",
+ "name": "boringssl_example_mul",
"platforms": [
"linux",
"mac",
@@ -4458,7 +4472,9 @@
]
},
{
- "args": [],
+ "args": [
+ "third_party/boringssl/crypto/ecdh/ecdh_tests.txt"
+ ],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -4473,7 +4489,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_dsa_test",
+ "name": "boringssl_ecdh_test",
"platforms": [
"linux",
"mac",
@@ -4482,7 +4498,9 @@
]
},
{
- "args": [],
+ "args": [
+ "third_party/boringssl/crypto/ecdsa/ecdsa_sign_tests.txt"
+ ],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -4497,7 +4515,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_ec_test",
+ "name": "boringssl_ecdsa_sign_test",
"platforms": [
"linux",
"mac",
@@ -4521,7 +4539,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_example_mul",
+ "name": "boringssl_ecdsa_test",
"platforms": [
"linux",
"mac",
@@ -4530,7 +4548,9 @@
]
},
{
- "args": [],
+ "args": [
+ "third_party/boringssl/crypto/ecdsa/ecdsa_verify_tests.txt"
+ ],
"boringssl": true,
"ci_platforms": [
"linux",
@@ -4545,7 +4565,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_ecdsa_test",
+ "name": "boringssl_ecdsa_verify_test",
"platforms": [
"linux",
"mac",
@@ -4765,7 +4785,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_pkcs8_test",
+ "name": "boringssl_newhope_test",
"platforms": [
"linux",
"mac",
@@ -4789,7 +4809,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_pkcs12_test",
+ "name": "boringssl_newhope_statistical_test",
"platforms": [
"linux",
"mac",
@@ -4799,7 +4819,7 @@
},
{
"args": [
- "third_party/boringssl/crypto/poly1305/poly1305_test.txt"
+ "third_party/boringssl/crypto/newhope/newhope_tests.txt"
],
"boringssl": true,
"ci_platforms": [
@@ -4815,7 +4835,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_poly1305_test",
+ "name": "boringssl_newhope_vectors_test",
"platforms": [
"linux",
"mac",
@@ -4839,7 +4859,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_refcount_test",
+ "name": "boringssl_obj_test",
"platforms": [
"linux",
"mac",
@@ -4863,7 +4883,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_rsa_test",
+ "name": "boringssl_pkcs12_test",
"platforms": [
"linux",
"mac",
@@ -4887,7 +4907,33 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_thread_test",
+ "name": "boringssl_pkcs8_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
+ {
+ "args": [
+ "third_party/boringssl/crypto/poly1305/poly1305_tests.txt"
+ ],
+ "boringssl": true,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "defaults": "boringssl",
+ "exclude_configs": [
+ "asan"
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "boringssl_poly1305_test",
"platforms": [
"linux",
"mac",
@@ -4911,7 +4957,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_pkcs7_test",
+ "name": "boringssl_refcount_test",
"platforms": [
"linux",
"mac",
@@ -4935,7 +4981,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_x509_test",
+ "name": "boringssl_rsa_test",
"platforms": [
"linux",
"mac",
@@ -4959,7 +5005,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_tab_test",
+ "name": "boringssl_thread_test",
"platforms": [
"linux",
"mac",
@@ -4983,7 +5029,7 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_v3name_test",
+ "name": "boringssl_pkcs7_test",
"platforms": [
"linux",
"mac",
@@ -5007,7 +5053,55 @@
],
"flaky": false,
"language": "c++",
- "name": "boringssl_pqueue_test",
+ "name": "boringssl_x509_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
+ {
+ "args": [],
+ "boringssl": true,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "defaults": "boringssl",
+ "exclude_configs": [
+ "asan"
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "boringssl_tab_test",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ]
+ },
+ {
+ "args": [],
+ "boringssl": true,
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix",
+ "windows"
+ ],
+ "cpu_cost": 1.0,
+ "defaults": "boringssl",
+ "exclude_configs": [
+ "asan"
+ ],
+ "flaky": false,
+ "language": "c++",
+ "name": "boringssl_v3name_test",
"platforms": [
"linux",
"mac",
diff --git a/vsprojects/vcxproj/boringssl/boringssl.vcxproj b/vsprojects/vcxproj/boringssl/boringssl.vcxproj
index 59db775d799..a67b2c3a5d8 100644
--- a/vsprojects/vcxproj/boringssl/boringssl.vcxproj
+++ b/vsprojects/vcxproj/boringssl/boringssl.vcxproj
@@ -158,23 +158,22 @@
-
-
+
+
-
-
+
@@ -220,10 +219,12 @@
+
+
-
+
@@ -231,9 +232,9 @@
-
+
@@ -250,10 +251,6 @@
-
-
-
-
@@ -266,8 +263,6 @@
-
-
@@ -304,10 +299,6 @@
-
-
-
-
@@ -316,8 +307,6 @@
-
-
@@ -326,8 +315,6 @@
-
-
@@ -386,6 +373,8 @@
+
+
@@ -408,9 +397,7 @@
-
-
-
+
@@ -440,14 +427,22 @@
+
+
+
+
+
+
+
+
@@ -464,10 +459,6 @@
-
-
-
-
@@ -504,8 +495,6 @@
-
-
@@ -526,6 +515,8 @@
+
+
@@ -552,6 +543,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -586,6 +589,8 @@
+
+
@@ -634,6 +639,8 @@
+
+
@@ -644,6 +651,8 @@
+
+
@@ -792,36 +801,28 @@
-
-
-
-
-
+
-
+
-
+
-
+
-
-
-
-
@@ -848,6 +849,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters b/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters
index bd996bdc445..09aa067f785 100644
--- a/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters
+++ b/vsprojects/vcxproj/boringssl/boringssl.vcxproj.filters
@@ -16,9 +16,6 @@
third_party\boringssl\crypto\asn1
-
- third_party\boringssl\crypto\asn1
-
third_party\boringssl\crypto\asn1
@@ -73,12 +70,6 @@
third_party\boringssl\crypto\asn1
-
- third_party\boringssl\crypto\asn1
-
-
- third_party\boringssl\crypto\asn1
-
third_party\boringssl\crypto\asn1
@@ -91,9 +82,6 @@
third_party\boringssl\crypto\asn1
-
- third_party\boringssl\crypto\asn1
-
third_party\boringssl\crypto\asn1
@@ -106,9 +94,6 @@
third_party\boringssl\crypto\asn1
-
- third_party\boringssl\crypto\asn1
-
third_party\boringssl\crypto\asn1
@@ -196,6 +181,9 @@
third_party\boringssl\crypto\bn
+
+ third_party\boringssl\crypto\bn
+
third_party\boringssl\crypto\bn
@@ -229,10 +217,7 @@
third_party\boringssl\crypto\bytestring
-
- third_party\boringssl\crypto\chacha
-
-
+
third_party\boringssl\crypto\chacha
@@ -277,18 +262,30 @@
third_party\boringssl\crypto\conf
+
+ third_party\boringssl\crypto
+
+
+ third_party\boringssl\crypto
+
third_party\boringssl\crypto
third_party\boringssl\crypto
+
+ third_party\boringssl\crypto
+
third_party\boringssl\crypto
third_party\boringssl\crypto\curve25519
+
+ third_party\boringssl\crypto\curve25519
+
third_party\boringssl\crypto\curve25519
@@ -313,12 +310,6 @@
third_party\boringssl\crypto\digest
-
- third_party\boringssl\crypto
-
-
- third_party\boringssl\crypto
-
third_party\boringssl\crypto\dsa
@@ -373,9 +364,6 @@
third_party\boringssl\crypto\err
-
- third_party\boringssl\crypto\evp
-
third_party\boringssl\crypto\evp
@@ -406,6 +394,9 @@
third_party\boringssl\crypto\evp
+
+ third_party\boringssl\crypto\evp
+
third_party\boringssl\crypto\evp
@@ -445,6 +436,24 @@
third_party\boringssl\crypto\modes
+
+ third_party\boringssl\crypto\newhope
+
+
+ third_party\boringssl\crypto\newhope
+
+
+ third_party\boringssl\crypto\newhope
+
+
+ third_party\boringssl\crypto\newhope
+
+
+ third_party\boringssl\crypto\newhope
+
+
+ third_party\boringssl\crypto\newhope
+
third_party\boringssl\crypto\obj
@@ -496,6 +505,9 @@
third_party\boringssl\crypto\poly1305
+
+ third_party\boringssl\crypto\rand
+
third_party\boringssl\crypto\rand
@@ -568,6 +580,9 @@
third_party\boringssl\crypto\x509
+
+ third_party\boringssl\crypto\x509
+
third_party\boringssl\crypto\x509
@@ -583,6 +598,9 @@
third_party\boringssl\crypto\x509
+
+ third_party\boringssl\crypto\x509
+
third_party\boringssl\crypto\x509
@@ -805,34 +823,28 @@
third_party\boringssl\ssl
-
- third_party\boringssl\ssl
-
third_party\boringssl\ssl
-
- third_party\boringssl\ssl
-
third_party\boringssl\ssl
third_party\boringssl\ssl
-
+
third_party\boringssl\ssl
third_party\boringssl\ssl
-
- third_party\boringssl\ssl\pqueue
+
+ third_party\boringssl\ssl
-
+
third_party\boringssl\ssl
-
+
third_party\boringssl\ssl
@@ -841,15 +853,9 @@
third_party\boringssl\ssl
-
- third_party\boringssl\ssl
-
third_party\boringssl\ssl
-
- third_party\boringssl\ssl
-
third_party\boringssl\ssl
@@ -889,6 +895,21 @@
third_party\boringssl\ssl
+
+ third_party\boringssl\ssl
+
+
+ third_party\boringssl\ssl
+
+
+ third_party\boringssl\ssl
+
+
+ third_party\boringssl\ssl
+
+
+ third_party\boringssl\ssl
+
third_party\boringssl\ssl
@@ -927,18 +948,12 @@
third_party\boringssl\crypto\des
-
- third_party\boringssl\crypto\dh
-
third_party\boringssl\crypto\digest
third_party\boringssl\crypto\digest
-
- third_party\boringssl\crypto
-
third_party\boringssl\crypto\ec
@@ -954,6 +969,9 @@
third_party\boringssl\crypto\modes
+
+ third_party\boringssl\crypto\newhope
+
third_party\boringssl\crypto\obj
@@ -963,21 +981,21 @@
third_party\boringssl\crypto\pkcs8
+
+ third_party\boringssl\crypto\poly1305
+
third_party\boringssl\crypto\rand
third_party\boringssl\crypto\rsa
-
- third_party\boringssl\crypto\test
-
-
- third_party\boringssl\crypto\test
-
third_party\boringssl\crypto\x509
+
+ third_party\boringssl\crypto\x509
+
third_party\boringssl\crypto\x509
@@ -1113,6 +1131,12 @@
third_party\boringssl\include\openssl
+
+ third_party\boringssl\include\openssl
+
+
+ third_party\boringssl\include\openssl
+
third_party\boringssl\include\openssl
@@ -1122,7 +1146,7 @@
third_party\boringssl\include\openssl
-
+
third_party\boringssl\include\openssl
@@ -1146,15 +1170,15 @@
third_party\boringssl\include\openssl
-
- third_party\boringssl\include\openssl
-
third_party\boringssl\include\openssl
third_party\boringssl\include\openssl
+
+ third_party\boringssl\include\openssl
+
third_party\boringssl\include\openssl
@@ -1203,18 +1227,6 @@
third_party\boringssl\ssl
-
- third_party\boringssl\ssl\test
-
-
- third_party\boringssl\ssl\test
-
-
- third_party\boringssl\ssl\test
-
-
- third_party\boringssl\ssl\test
-
@@ -1320,6 +1332,9 @@
{63ca8fcd-7644-61d6-4357-5a0bcfdc395b}
+
+ {2a39f7c3-62df-5021-0825-36f18f10ad12}
+
{59349deb-4276-df4c-f4cd-e2cf707c3b4c}
@@ -1347,9 +1362,6 @@
{7b1c1e89-c813-5ccd-fa2a-dd1b187f8da9}
-
- {eec8fd39-7429-3d4d-be78-028791b4b927}
-
{74c9e47d-193b-84c0-95d9-4b33703b7890}
@@ -1365,12 +1377,6 @@
{e6e8c0c0-1755-4978-209e-5429ee3a2f5f}
-
- {89eb7fc9-98ec-dee5-ea8c-f7d23760aa94}
-
-
- {8dda7bd5-b246-84a4-20c9-c92101caeb48}
-
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test/boringssl_pqueue_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test/boringssl_chacha_test.vcxproj
similarity index 97%
rename from vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test/boringssl_pqueue_test.vcxproj
rename to vsprojects/vcxproj/test/boringssl/boringssl_chacha_test/boringssl_chacha_test.vcxproj
index 7c0189b6271..f8932983672 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test/boringssl_pqueue_test.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test/boringssl_chacha_test.vcxproj
@@ -20,7 +20,7 @@
- {CCAA2ACD-B171-6011-0646-93010DCF8BC5}
+ {0F12358C-9F7A-E3B5-23EC-250C29C9D3A2}
true
$(SolutionDir)IntDir\$(MSBuildProjectName)\
@@ -62,14 +62,14 @@
- boringssl_pqueue_test
+ boringssl_chacha_test
static
Debug
static
Debug
- boringssl_pqueue_test
+ boringssl_chacha_test
static
Release
static
@@ -164,8 +164,8 @@
-
- {D03600F9-540A-2691-69F6-3A1DC2874D24}
+
+ {D15F1CF5-EC88-FDD5-55A0-CBE5DC8A9F29}
{427037B1-B51B-D6F1-5025-AD12B200266A}
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test/boringssl_pqueue_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test/boringssl_chacha_test.vcxproj.filters
similarity index 100%
rename from vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test/boringssl_pqueue_test.vcxproj.filters
rename to vsprojects/vcxproj/test/boringssl/boringssl_chacha_test/boringssl_chacha_test.vcxproj.filters
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj
new file mode 100644
index 00000000000..3c4c382c56d
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {D15F1CF5-EC88-FDD5-55A0-CBE5DC8A9F29}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_chacha_test_lib
+
+
+ boringssl_chacha_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..5fb3e2fc495
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_chacha_test_lib/boringssl_chacha_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\chacha
+
+
+
+
+
+ {4b736811-6554-6004-024b-74e526459c17}
+
+
+ {256ad378-581e-bc4f-e018-f4a4e4098091}
+
+
+ {7e6857c0-cc2b-da3a-bdf7-cf9f82aba586}
+
+
+ {02432684-f62e-6b57-5847-af2e296fbbab}
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj
new file mode 100644
index 00000000000..cb85dd53829
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {8B7A464C-BC82-53A0-656A-0215D2BCE85D}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_ecdh_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_ecdh_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {04FA7804-13C6-D0E4-144D-BD3736334565}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test/boringssl_ecdh_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj
similarity index 97%
rename from vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj
rename to vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj
index 12198c11495..22c033c57b2 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj
@@ -19,7 +19,7 @@
- {D03600F9-540A-2691-69F6-3A1DC2874D24}
+ {04FA7804-13C6-D0E4-144D-BD3736334565}
true
$(SolutionDir)IntDir\$(MSBuildProjectName)\
@@ -57,10 +57,10 @@
- boringssl_pqueue_test_lib
+ boringssl_ecdh_test_lib
- boringssl_pqueue_test_lib
+ boringssl_ecdh_test_lib
@@ -147,7 +147,7 @@
-
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..51393f51907
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdh_test_lib/boringssl_ecdh_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\ecdh
+
+
+
+
+
+ {100930cd-7241-d92b-da6a-a84ea68e24bd}
+
+
+ {2f0bb152-1c3a-5f3a-7512-ca92fef36751}
+
+
+ {c004f731-666a-9d7d-c448-96a16069cbc4}
+
+
+ {74176a90-7b93-c871-7de7-0048a1a55076}
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj
new file mode 100644
index 00000000000..db7fc98af66
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {B9368314-B4D2-DEB2-A448-26D327059447}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_ecdsa_sign_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_ecdsa_sign_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {8F0F763A-31D1-6710-6286-FD91EAC75EDB}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test/boringssl_ecdsa_sign_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj
new file mode 100644
index 00000000000..947dcddd949
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {8F0F763A-31D1-6710-6286-FD91EAC75EDB}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_ecdsa_sign_test_lib
+
+
+ boringssl_ecdsa_sign_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..69fb20cc1bd
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_sign_test_lib/boringssl_ecdsa_sign_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\ecdsa
+
+
+
+
+
+ {2407663e-0b17-cfb0-0aaa-fe639ecda00a}
+
+
+ {9ad9cf54-8113-a6e1-0689-09b051b5acf9}
+
+
+ {8057866a-62e2-5309-70fa-f98800b682a8}
+
+
+ {76196bab-7843-c0ca-4f97-32c3336af99b}
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj
new file mode 100644
index 00000000000..ddf4b0c0227
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {BF550763-A8E9-1C98-89C5-7A4A00364E06}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_ecdsa_verify_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_ecdsa_verify_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {3F79C89D-E5CA-4C28-DE1C-27E0E1BFCA43}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test/boringssl_ecdsa_verify_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj
new file mode 100644
index 00000000000..5287bbec92b
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {3F79C89D-E5CA-4C28-DE1C-27E0E1BFCA43}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_ecdsa_verify_test_lib
+
+
+ boringssl_ecdsa_verify_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..01169e3656b
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_verify_test_lib/boringssl_ecdsa_verify_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\ecdsa
+
+
+
+
+
+ {62c752a3-7d35-4a52-4e3e-af92d1ef7ae0}
+
+
+ {cf981be6-06c7-d75e-bb01-bdcf6cbac573}
+
+
+ {f4955fa6-0694-bb47-d2e7-59ee77f72e37}
+
+
+ {bc349ef0-99fd-5724-06c0-0c6f6e1f7b69}
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj
index 7b5ffa1ca10..8b3f5f49bc6 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj
@@ -147,7 +147,7 @@
-
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj.filters
index 7260136bd81..fbc3a077ecf 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj.filters
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj.filters
@@ -1,7 +1,7 @@
-
+
third_party\boringssl\crypto\modes
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj
new file mode 100644
index 00000000000..f3dde154ade
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {2DFF4B39-A402-0C88-ACE5-58BD7E5F7686}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_newhope_statistical_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_newhope_statistical_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {95B2444A-04E1-7F0A-049C-30099AA62E84}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test/boringssl_newhope_statistical_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj
new file mode 100644
index 00000000000..c9cb80a4306
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {95B2444A-04E1-7F0A-049C-30099AA62E84}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_newhope_statistical_test_lib
+
+
+ boringssl_newhope_statistical_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..95945c24671
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_statistical_test_lib/boringssl_newhope_statistical_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\newhope
+
+
+
+
+
+ {25a9ae19-5707-441e-6d97-13ff38322368}
+
+
+ {e6e1e1f9-31eb-463f-a882-01c72cbe7a6e}
+
+
+ {37a6d595-952d-a224-060b-ea246359d76a}
+
+
+ {e0473499-9b3e-c3c3-5463-4706bd005f6c}
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj
new file mode 100644
index 00000000000..7a085b638f1
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {105DF9D7-2B9F-501B-9FC4-C98BF16FC9D3}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_newhope_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_newhope_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {2E791A00-9907-8B9A-D201-4E0C357A6BB3}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test/boringssl_newhope_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj
new file mode 100644
index 00000000000..55046360614
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {2E791A00-9907-8B9A-D201-4E0C357A6BB3}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_newhope_test_lib
+
+
+ boringssl_newhope_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..f2dc0e6a5bb
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_test_lib/boringssl_newhope_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\newhope
+
+
+
+
+
+ {f6eddde4-4559-9adb-797f-897631281a89}
+
+
+ {81b307de-7498-3465-2ad4-7b634bf4788a}
+
+
+ {af9d3e32-2f0f-f0f3-f63f-4a8bd7f07c46}
+
+
+ {ea48f773-5060-8693-62ef-f257ccd47b21}
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj
new file mode 100644
index 00000000000..505f7cf33a8
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {E4C140A1-B7A3-0D00-A02F-CC90C9972F00}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_newhope_vectors_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_newhope_vectors_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {0993166D-33B9-2E51-B0A9-5035A9086A2E}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test/boringssl_newhope_vectors_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj
new file mode 100644
index 00000000000..4f01ec4b706
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {0993166D-33B9-2E51-B0A9-5035A9086A2E}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_newhope_vectors_test_lib
+
+
+ boringssl_newhope_vectors_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..27b208d3507
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_newhope_vectors_test_lib/boringssl_newhope_vectors_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\newhope
+
+
+
+
+
+ {678cf897-2d02-4bb5-1872-b6d6d61c528f}
+
+
+ {3cc5b2df-8409-e2e8-9504-748004a314f3}
+
+
+ {2a4fb92f-e756-007b-f6fc-d8f55fee6096}
+
+
+ {09155346-c8e7-ffdb-7791-4f623ac5d521}
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj
new file mode 100644
index 00000000000..188663cd253
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {CAF4E45E-3BA1-0EFD-2551-F16B4E43D0AB}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_obj_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_obj_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {9C5FF985-A7D0-185E-4982-8166BC8267EF}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test/boringssl_obj_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj
new file mode 100644
index 00000000000..5cff5dc611a
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {9C5FF985-A7D0-185E-4982-8166BC8267EF}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_obj_test_lib
+
+
+ boringssl_obj_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj.filters
similarity index 52%
rename from vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj.filters
rename to vsprojects/vcxproj/test/boringssl/boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj.filters
index 50a19355fc4..e860a95a150 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj.filters
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_obj_test_lib/boringssl_obj_test_lib.vcxproj.filters
@@ -1,23 +1,23 @@
-
- third_party\boringssl\ssl\pqueue
+
+ third_party\boringssl\crypto\obj
- {5abc2e4b-4b3e-76f3-af5b-32b49bed5734}
+ {1e65df99-429c-84ab-e85c-2a74292dff99}
- {ba7fa262-1d79-278b-6d33-494ef09bc0b0}
+ {f67c8934-df62-47c5-ab21-f2670e0624d4}
-
- {bbe38f66-e869-8d99-4ef8-a477041fda28}
+
+ {a1c37911-be8c-bf36-9263-c4db89aa11dc}
-
- {c6deeb40-d424-ed7a-bcf9-8b33d62d603d}
+
+ {26163139-0b8e-2ee1-11ac-7be64498bbab}
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj
new file mode 100644
index 00000000000..dd9022b2ac1
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj
@@ -0,0 +1,198 @@
+
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {6E1688D7-E3F2-8F4A-0748-8DEB832397A6}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ Application
+ true
+ Unicode
+
+
+ Application
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_spake25519_test
+ static
+ Debug
+ static
+ Debug
+
+
+ boringssl_spake25519_test
+ static
+ Release
+ static
+ Release
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Console
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {B5EDD577-C90C-F122-313E-6D9803E91FEB}
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj.filters
new file mode 100644
index 00000000000..00e4276f1d4
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test/boringssl_spake25519_test.vcxproj.filters
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj
new file mode 100644
index 00000000000..f0347a48932
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj
@@ -0,0 +1,170 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {B5EDD577-C90C-F122-313E-6D9803E91FEB}
+ true
+ $(SolutionDir)IntDir\$(MSBuildProjectName)\
+
+
+
+ v100
+
+
+ v110
+
+
+ v120
+
+
+ v140
+
+
+ StaticLibrary
+ true
+ Unicode
+
+
+ StaticLibrary
+ false
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+ boringssl_spake25519_test_lib
+
+
+ boringssl_spake25519_test_lib
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ Disabled
+ WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ MultiThreadedDebug
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+ NotUsing
+ Level3
+ MaxSpeed
+ WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
+ true
+ true
+ true
+ MultiThreaded
+ false
+ None
+ false
+
+
+ Windows
+ true
+ false
+ true
+ true
+
+
+
+
+
+
+
+
+
+ {427037B1-B51B-D6F1-5025-AD12B200266A}
+
+
+ {9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}
+
+
+
+
+
+
+
+ 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}.
+
+
+
+
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj.filters b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj.filters
new file mode 100644
index 00000000000..a94780cf898
--- /dev/null
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_spake25519_test_lib/boringssl_spake25519_test_lib.vcxproj.filters
@@ -0,0 +1,24 @@
+
+
+
+
+ third_party\boringssl\crypto\curve25519
+
+
+
+
+
+ {88324f4e-8e00-0e8c-b6ab-d9406be0cccf}
+
+
+ {067bed6d-c308-8eee-2225-771546a4eb5c}
+
+
+ {08b844f4-9df6-ff01-d951-1c944f9e5b6b}
+
+
+ {2f6416cc-d016-dedd-4e2f-d0ebd4d78fdb}
+
+
+
+
From 113b094c690bb3afd3d1d68034c7490b95b12998 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 26 Jan 2017 15:40:05 -0800
Subject: [PATCH 28/95] typo
---
BUILD | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/BUILD b/BUILD
index 1b5a53f6d1f..5ef46e70df4 100644
--- a/BUILD
+++ b/BUILD
@@ -1122,7 +1122,7 @@ grpc_cc_library(
"include/grpc++/completion_queue.h",
"include/grpc++/create_channel.h",
"include/grpc++/create_channel_posix.h",
- "include/grpc++/ext/health_check_service_server_buieder_option.h",
+ "include/grpc++/ext/health_check_service_server_builder_option.h",
"include/grpc++/generic/async_generic_service.h",
"include/grpc++/generic/generic_stub.h",
"include/grpc++/grpc++.h",
From f0bf99ac41af04e0381ac256ac8e2c1a0f051965 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Mon, 30 Jan 2017 10:27:01 -0800
Subject: [PATCH 29/95] test
---
third_party/boringssl | 2 +-
third_party/gflags | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/third_party/boringssl b/third_party/boringssl
index c880e42ba1c..78684e5b222 160000
--- a/third_party/boringssl
+++ b/third_party/boringssl
@@ -1 +1 @@
-Subproject commit c880e42ba1c8032d4cdde2aba0541d8a9d9fa2e9
+Subproject commit 78684e5b222645828ca302e56b40b9daff2b2d27
diff --git a/third_party/gflags b/third_party/gflags
index 05b155ff591..f8a0efe03aa 160000
--- a/third_party/gflags
+++ b/third_party/gflags
@@ -1 +1 @@
-Subproject commit 05b155ff59114735ec8cd089f669c4c3d8f59029
+Subproject commit f8a0efe03aa69b3336d8e228b37d4ccb17324b88
From 1e19b8d3e7a29a39fd4c5359cc99c941179be7f3 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Mon, 30 Jan 2017 10:48:59 -0800
Subject: [PATCH 30/95] Update for API change
---
src/cpp/server/server_cc.cc | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index dec4551b101..69e491dc96b 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -779,9 +779,7 @@ Server::UnimplementedAsyncResponse::UnimplementedAsyncResponse(
bool Server::HealthCheckAsyncRequest::FinalizeResult(void** tag, bool* status) {
bool serialization_status =
*status && payload_ &&
- SerializationTraits::Deserialize(
- payload_, &request_, server_->max_receive_message_size())
- .ok();
+ SerializationTraits::Deserialize(payload_, &request_).ok();
RegisteredAsyncRequest::FinalizeResult(tag, status);
*status = serialization_status && *status;
if (*status) {
From 7240b54ddb1a10fc4400c81bede0ac0390aa6e0f Mon Sep 17 00:00:00 2001
From: David Garcia Quintas
Date: Tue, 31 Jan 2017 16:00:49 -0800
Subject: [PATCH 31/95] make grpc-encoding:identity implicit
---
src/core/lib/channel/compress_filter.c | 10 ++++++----
test/core/end2end/bad_server_response_test.c | 4 ++--
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/src/core/lib/channel/compress_filter.c b/src/core/lib/channel/compress_filter.c
index c860d60d881..22781c78399 100644
--- a/src/core/lib/channel/compress_filter.c
+++ b/src/core/lib/channel/compress_filter.c
@@ -105,7 +105,6 @@ static grpc_error *process_send_initial_metadata(
static grpc_error *process_send_initial_metadata(
grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
grpc_metadata_batch *initial_metadata) {
- grpc_error *error;
call_data *calld = elem->call_data;
channel_data *channeld = elem->channel_data;
/* Parse incoming request for compression. If any, it'll be available
@@ -144,10 +143,13 @@ static grpc_error *process_send_initial_metadata(
calld->has_compression_algorithm = 1; /* GPR_TRUE */
}
+ grpc_error *error = GRPC_ERROR_NONE;
/* hint compression algorithm */
- error = grpc_metadata_batch_add_tail(
- exec_ctx, initial_metadata, &calld->compression_algorithm_storage,
- grpc_compression_encoding_mdelem(calld->compression_algorithm));
+ if (calld->compression_algorithm != GRPC_COMPRESS_NONE) {
+ error = grpc_metadata_batch_add_tail(
+ exec_ctx, initial_metadata, &calld->compression_algorithm_storage,
+ grpc_compression_encoding_mdelem(calld->compression_algorithm));
+ }
if (error != GRPC_ERROR_NONE) return error;
diff --git a/test/core/end2end/bad_server_response_test.c b/test/core/end2end/bad_server_response_test.c
index d5f428eb829..9cfe0cebe01 100644
--- a/test/core/end2end/bad_server_response_test.c
+++ b/test/core/end2end/bad_server_response_test.c
@@ -82,7 +82,7 @@
#define HTTP1_DETAIL_MSG "Trying to connect an http1.x server"
/* TODO(zyc) Check the content of incomming data instead of using this length */
-#define EXPECTED_INCOMING_DATA_LENGTH (size_t)310
+#define EXPECTED_INCOMING_DATA_LENGTH (size_t)300
struct rpc_state {
char *target;
@@ -135,7 +135,7 @@ static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
gpr_log(GPR_DEBUG, "got %" PRIuPTR " bytes, expected %" PRIuPTR " bytes",
state.incoming_data_length, EXPECTED_INCOMING_DATA_LENGTH);
- if (state.incoming_data_length > EXPECTED_INCOMING_DATA_LENGTH) {
+ if (state.incoming_data_length >= EXPECTED_INCOMING_DATA_LENGTH) {
handle_write(exec_ctx);
} else {
grpc_endpoint_read(exec_ctx, state.tcp, &state.temp_incoming_buffer,
From 191d52c4c1246b7fb80a901186fa39f101738815 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas
Date: Wed, 1 Feb 2017 12:46:05 -0800
Subject: [PATCH 32/95] Renamed define for better readability
---
test/core/end2end/bad_server_response_test.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/test/core/end2end/bad_server_response_test.c b/test/core/end2end/bad_server_response_test.c
index 9cfe0cebe01..39a98e84ca9 100644
--- a/test/core/end2end/bad_server_response_test.c
+++ b/test/core/end2end/bad_server_response_test.c
@@ -82,7 +82,9 @@
#define HTTP1_DETAIL_MSG "Trying to connect an http1.x server"
/* TODO(zyc) Check the content of incomming data instead of using this length */
-#define EXPECTED_INCOMING_DATA_LENGTH (size_t)300
+/* The 'bad' server will start sending responses after reading this amount of
+ * data from the client. */
+#define SERVER_INCOMING_DATA_LENGTH_LOWER_THRESHOLD (size_t)200
struct rpc_state {
char *target;
@@ -134,8 +136,10 @@ static void handle_read(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
}
gpr_log(GPR_DEBUG, "got %" PRIuPTR " bytes, expected %" PRIuPTR " bytes",
- state.incoming_data_length, EXPECTED_INCOMING_DATA_LENGTH);
- if (state.incoming_data_length >= EXPECTED_INCOMING_DATA_LENGTH) {
+ state.incoming_data_length,
+ SERVER_INCOMING_DATA_LENGTH_LOWER_THRESHOLD);
+ if (state.incoming_data_length >=
+ SERVER_INCOMING_DATA_LENGTH_LOWER_THRESHOLD) {
handle_write(exec_ctx);
} else {
grpc_endpoint_read(exec_ctx, state.tcp, &state.temp_incoming_buffer,
From 076bac017b200accb8071e569b471f118fc3ba32 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Tue, 7 Feb 2017 13:50:36 -0800
Subject: [PATCH 33/95] Remove async
---
.../grpc++/impl/codegen/server_interface.h | 7 +-
include/grpc++/server.h | 4 -
.../health/default_health_check_service.cc | 17 +--
.../health/default_health_check_service.h | 11 +-
src/cpp/server/server_cc.cc | 140 ++----------------
.../end2end/health_service_end2end_test.cc | 11 +-
6 files changed, 28 insertions(+), 162 deletions(-)
diff --git a/include/grpc++/impl/codegen/server_interface.h b/include/grpc++/impl/codegen/server_interface.h
index 785568f19a1..bd1b36e8839 100644
--- a/include/grpc++/impl/codegen/server_interface.h
+++ b/include/grpc++/impl/codegen/server_interface.h
@@ -158,8 +158,7 @@ class ServerInterface : public CallHook {
public:
RegisteredAsyncRequest(ServerInterface* server, ServerContext* context,
ServerAsyncStreamingInterface* stream,
- CompletionQueue* call_cq, void* tag,
- bool delete_on_finalize);
+ CompletionQueue* call_cq, void* tag);
// uses BaseAsyncRequest::FinalizeResult
@@ -175,7 +174,7 @@ class ServerInterface : public CallHook {
ServerAsyncStreamingInterface* stream,
CompletionQueue* call_cq,
ServerCompletionQueue* notification_cq, void* tag)
- : RegisteredAsyncRequest(server, context, stream, call_cq, tag, true) {
+ : RegisteredAsyncRequest(server, context, stream, call_cq, tag) {
IssueRequest(registered_method, nullptr, notification_cq);
}
@@ -191,7 +190,7 @@ class ServerInterface : public CallHook {
CompletionQueue* call_cq,
ServerCompletionQueue* notification_cq, void* tag,
Message* request)
- : RegisteredAsyncRequest(server, context, stream, call_cq, tag, true),
+ : RegisteredAsyncRequest(server, context, stream, call_cq, tag),
request_(request) {
IssueRequest(registered_method, &payload_, notification_cq);
}
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index 3f205625ee7..e3e9174c9c2 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -119,10 +119,6 @@ class Server final : public ServerInterface, private GrpcLibraryCodegen {
class UnimplementedAsyncRequest;
class UnimplementedAsyncResponse;
- class HealthCheckAsyncRequestContext;
- class HealthCheckAsyncRequest;
- class HealthCheckAsyncResponse;
-
/// Server constructors. To be used by \a ServerBuilder only.
///
/// \param max_message_size Maximum message length that the channel can
diff --git a/src/cpp/server/health/default_health_check_service.cc b/src/cpp/server/health/default_health_check_service.cc
index 9743bd5775e..46def70e8a3 100644
--- a/src/cpp/server/health/default_health_check_service.cc
+++ b/src/cpp/server/health/default_health_check_service.cc
@@ -49,14 +49,11 @@ const char kHealthCheckMethodName[] = "/grpc.health.v1.Health/Check";
} // namespace
DefaultHealthCheckService::HealthCheckServiceImpl::HealthCheckServiceImpl(
- DefaultHealthCheckService* service, bool sync)
- : service_(service), method_(nullptr), sync_(sync) {
- MethodHandler* handler = nullptr;
- if (sync_) {
- handler =
- new RpcMethodHandler(
- std::mem_fn(&HealthCheckServiceImpl::Check), this);
- }
+ DefaultHealthCheckService* service)
+ : service_(service), method_(nullptr) {
+ MethodHandler* handler =
+ new RpcMethodHandler(
+ std::mem_fn(&HealthCheckServiceImpl::Check), this);
method_ = new RpcServiceMethod(kHealthCheckMethodName, RpcMethod::NORMAL_RPC,
handler);
AddMethod(method_);
@@ -160,9 +157,9 @@ DefaultHealthCheckService::GetServingStatus(
}
DefaultHealthCheckService::HealthCheckServiceImpl*
-DefaultHealthCheckService::GetHealthCheckService(bool sync) {
+DefaultHealthCheckService::GetHealthCheckService() {
GPR_ASSERT(impl_ == nullptr);
- impl_.reset(new HealthCheckServiceImpl(this, sync));
+ impl_.reset(new HealthCheckServiceImpl(this));
return impl_.get();
}
diff --git a/src/cpp/server/health/default_health_check_service.h b/src/cpp/server/health/default_health_check_service.h
index 1ecb0a2ba94..5c0e2303423 100644
--- a/src/cpp/server/health/default_health_check_service.h
+++ b/src/cpp/server/health/default_health_check_service.h
@@ -49,21 +49,14 @@ class DefaultHealthCheckService final : public HealthCheckServiceInterface {
// The service impl to register with the server.
class HealthCheckServiceImpl : public Service {
public:
- HealthCheckServiceImpl(DefaultHealthCheckService* service, bool sync);
+ explicit HealthCheckServiceImpl(DefaultHealthCheckService* service);
Status Check(ServerContext* context, const ByteBuffer* request,
ByteBuffer* response);
- bool sync() { return sync_; }
-
- // This is only useful for the async mode. It should be called after
- // RegisterService returns.
- void* server_tag() const { return method_->server_tag(); }
-
private:
const DefaultHealthCheckService* const service_;
RpcServiceMethod* method_;
- const bool sync_;
};
DefaultHealthCheckService();
@@ -72,7 +65,7 @@ class DefaultHealthCheckService final : public HealthCheckServiceInterface {
void SetServingStatus(bool serving) override;
enum ServingStatus { NOT_FOUND, SERVING, NOT_SERVING };
ServingStatus GetServingStatus(const grpc::string& service_name) const;
- HealthCheckServiceImpl* GetHealthCheckService(bool sync);
+ HealthCheckServiceImpl* GetHealthCheckService();
private:
mutable std::mutex mu_;
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 69e491dc96b..c377297ec00 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -119,79 +119,6 @@ class Server::UnimplementedAsyncResponse final
UnimplementedAsyncRequest* const request_;
};
-// This is a dummy implementation of the interface so that
-// HealthCheckAsyncRequest can get Call from RegisteredAsyncRequest. It does not
-// do any reading or writing.
-class HealthCheckAsyncResponseWriter final
- : public ServerAsyncStreamingInterface {
- public:
- HealthCheckAsyncResponseWriter() : call_(nullptr, nullptr, nullptr) {}
- void SendInitialMetadata(void* tag) override {
- abort(); // should not be called.
- }
- void BindCall(Call* call) override { call_ = *call; }
- Call* call() { return &call_; }
-
- private:
- Call call_;
-};
-
-class Server::HealthCheckAsyncRequestContext {
- protected:
- ServerContext server_context_;
- HealthCheckAsyncResponseWriter rpc_;
-};
-
-class Server::HealthCheckAsyncRequest final
- : public HealthCheckAsyncRequestContext,
- public RegisteredAsyncRequest {
- public:
- HealthCheckAsyncRequest(
- DefaultHealthCheckService::HealthCheckServiceImpl* service,
- Server* server, ServerCompletionQueue* cq)
- : RegisteredAsyncRequest(server, &server_context_, &rpc_, cq, this,
- false),
- service_(service),
- server_(server),
- cq_(cq) {
- IssueRequest(service->server_tag(), &payload_, cq);
- }
-
- bool FinalizeResult(void** tag, bool* status) override;
- Call* call() { return rpc_.call(); }
- ByteBuffer* response() { return &response_; }
- Status* status() { return &status_; }
- ServerContext* server_context() { return &server_context_; }
-
- private:
- DefaultHealthCheckService::HealthCheckServiceImpl* service_;
- Server* const server_;
- ServerCompletionQueue* const cq_;
- grpc_byte_buffer* payload_;
- ByteBuffer request_;
- ByteBuffer response_;
- Status status_;
-};
-
-typedef SneakyCallOpSet
- HealthCheckAsyncResponseOp;
-class Server::HealthCheckAsyncResponse final
- : public HealthCheckAsyncResponseOp {
- public:
- HealthCheckAsyncResponse(HealthCheckAsyncRequest* request);
- ~HealthCheckAsyncResponse() { delete request_; }
-
- bool FinalizeResult(void** tag, bool* status) override {
- HealthCheckAsyncResponseOp::FinalizeResult(tag, status);
- delete this;
- return false;
- }
-
- private:
- HealthCheckAsyncRequest* const request_;
-};
-
class ShutdownTag : public CompletionQueueTag {
public:
bool FinalizeResult(void** tag, bool* status) { return false; }
@@ -572,14 +499,16 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
// Only create default health check service when user did not provide an
// explicit one.
- DefaultHealthCheckService::HealthCheckServiceImpl* health_service = nullptr;
if (health_check_service_ == nullptr && !health_check_service_disabled_ &&
DefaultHealthCheckServiceEnabled()) {
- auto* default_hc_service = new DefaultHealthCheckService;
- health_check_service_.reset(default_hc_service);
- health_service =
- default_hc_service->GetHealthCheckService(!sync_server_cqs_->empty());
- RegisterService(nullptr, health_service);
+ if (sync_server_cqs_->empty()) {
+ gpr_log(GPR_ERROR,
+ "Default health check service disabled at async-only server.");
+ } else {
+ auto* default_hc_service = new DefaultHealthCheckService;
+ health_check_service_.reset(default_hc_service);
+ RegisterService(nullptr, default_hc_service->GetHealthCheckService());
+ }
}
grpc_server_start(server_);
@@ -596,14 +525,6 @@ bool Server::Start(ServerCompletionQueue** cqs, size_t num_cqs) {
}
}
- if (health_service && !health_service->sync()) {
- for (size_t i = 0; i < num_cqs; i++) {
- if (cqs[i]->IsFrequentlyPolled()) {
- new HealthCheckAsyncRequest(health_service, this, cqs[i]);
- }
- }
- }
-
for (auto it = sync_req_mgrs_.begin(); it != sync_req_mgrs_.end(); it++) {
(*it)->Start();
}
@@ -715,10 +636,8 @@ bool ServerInterface::BaseAsyncRequest::FinalizeResult(void** tag,
ServerInterface::RegisteredAsyncRequest::RegisteredAsyncRequest(
ServerInterface* server, ServerContext* context,
- ServerAsyncStreamingInterface* stream, CompletionQueue* call_cq, void* tag,
- bool delete_on_finalize)
- : BaseAsyncRequest(server, context, stream, call_cq, tag,
- delete_on_finalize) {}
+ ServerAsyncStreamingInterface* stream, CompletionQueue* call_cq, void* tag)
+ : BaseAsyncRequest(server, context, stream, call_cq, tag, true) {}
void ServerInterface::RegisteredAsyncRequest::IssueRequest(
void* registered_method, grpc_byte_buffer** payload,
@@ -776,45 +695,6 @@ Server::UnimplementedAsyncResponse::UnimplementedAsyncResponse(
request_->stream()->call_.PerformOps(this);
}
-bool Server::HealthCheckAsyncRequest::FinalizeResult(void** tag, bool* status) {
- bool serialization_status =
- *status && payload_ &&
- SerializationTraits::Deserialize(payload_, &request_).ok();
- RegisteredAsyncRequest::FinalizeResult(tag, status);
- *status = serialization_status && *status;
- if (*status) {
- new HealthCheckAsyncRequest(service_, server_, cq_);
- status_ = service_->Check(&server_context_, &request_, &response_);
- new HealthCheckAsyncResponse(this);
- return false;
- } else {
- delete this;
- return false;
- }
-}
-
-Server::HealthCheckAsyncResponse::HealthCheckAsyncResponse(
- HealthCheckAsyncRequest* request)
- : request_(request) {
- ServerContext* context = request_->server_context();
- if (!context->sent_initial_metadata_) {
- SendInitialMetadata(context->initial_metadata_,
- context->initial_metadata_flags());
- if (context->compression_level_set()) {
- set_compression_level(context->compression_level());
- }
- context->sent_initial_metadata_ = true;
- }
- Status* status = request_->status();
- if (status->ok()) {
- ServerSendStatus(context->trailing_metadata_,
- SendMessage(*request_->response()));
- } else {
- ServerSendStatus(context->trailing_metadata_, *status);
- }
- request_->call()->PerformOps(this);
-}
-
ServerInitializer* Server::initializer() { return server_initializer_.get(); }
} // namespace grpc
diff --git a/test/cpp/end2end/health_service_end2end_test.cc b/test/cpp/end2end/health_service_end2end_test.cc
index 8a6a9886c9a..3d510078570 100644
--- a/test/cpp/end2end/health_service_end2end_test.cc
+++ b/test/cpp/end2end/health_service_end2end_test.cc
@@ -273,12 +273,13 @@ TEST_F(HealthServiceEnd2endTest, DefaultHealthServiceAsyncOnly) {
SetUpServer(false, true, false, nullptr);
cq_thread_ = std::thread(LoopCompletionQueue, cq_.get());
- VerifyHealthCheckService();
+ HealthCheckServiceInterface* default_service =
+ server_->GetHealthCheckService();
+ EXPECT_TRUE(default_service == nullptr);
- // The default service has a size limit of the service name.
- const grpc::string kTooLongServiceName(201, 'x');
- SendHealthCheckRpc(kTooLongServiceName,
- Status(StatusCode::INVALID_ARGUMENT, ""));
+ ResetStubs();
+
+ SendHealthCheckRpc("", Status(StatusCode::UNIMPLEMENTED, ""));
}
// Provide an empty service to disable the default service.
From 3a5bba0a2034a2dffbfeb7a30281f8ac43d5ce59 Mon Sep 17 00:00:00 2001
From: Paul Marks
Date: Tue, 7 Feb 2017 16:28:09 -0800
Subject: [PATCH 34/95] Connect to "localhost" from interop clients.
This is for compatibility with IPv6-only environments; see the Google
bug b/32531998.
Note that InteropClient.cs and http2_client.cc don't appear to be tested
by our internal branch, but I've included them for consistency.
---
src/csharp/Grpc.IntegrationTesting/InteropClient.cs | 2 +-
src/python/grpcio_tests/tests/interop/client.py | 2 +-
test/cpp/interop/client.cc | 2 +-
test/cpp/interop/http2_client.cc | 2 +-
test/cpp/interop/reconnect_interop_client.cc | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
index 5ba83b143ed..68a8f4879b4 100644
--- a/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
+++ b/src/csharp/Grpc.IntegrationTesting/InteropClient.cs
@@ -56,7 +56,7 @@ namespace Grpc.IntegrationTesting
{
private class ClientOptions
{
- [Option("server_host", Default = "127.0.0.1")]
+ [Option("server_host", Default = "localhost")]
public string ServerHost { get; set; }
[Option("server_host_override", Default = TestCredentials.DefaultHostOverride)]
diff --git a/src/python/grpcio_tests/tests/interop/client.py b/src/python/grpcio_tests/tests/interop/client.py
index 833818e6625..97f6843d3cb 100644
--- a/src/python/grpcio_tests/tests/interop/client.py
+++ b/src/python/grpcio_tests/tests/interop/client.py
@@ -45,7 +45,7 @@ def _args():
'--server_host',
help='the host to which to connect',
type=str,
- default="127.0.0.1")
+ default="localhost")
parser.add_argument(
'--server_port', help='the port to which to connect', type=int)
parser.add_argument(
diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc
index 8a00b61cef1..5688ab79716 100644
--- a/test/cpp/interop/client.cc
+++ b/test/cpp/interop/client.cc
@@ -51,7 +51,7 @@ DEFINE_bool(use_tls, false, "Whether to use tls.");
DEFINE_string(custom_credentials_type, "", "User provided credentials type.");
DEFINE_bool(use_test_ca, false, "False to use SSL roots for google");
DEFINE_int32(server_port, 0, "Server port.");
-DEFINE_string(server_host, "127.0.0.1", "Server host to connect to");
+DEFINE_string(server_host, "localhost", "Server host to connect to");
DEFINE_string(server_host_override, "foo.test.google.fr",
"Override the server host which is sent in HTTP header");
DEFINE_string(
diff --git a/test/cpp/interop/http2_client.cc b/test/cpp/interop/http2_client.cc
index 38aee43b26a..b96e9fac36e 100644
--- a/test/cpp/interop/http2_client.cc
+++ b/test/cpp/interop/http2_client.cc
@@ -223,7 +223,7 @@ bool Http2Client::DoMaxStreams() {
} // namespace grpc
DEFINE_int32(server_port, 0, "Server port.");
-DEFINE_string(server_host, "127.0.0.1", "Server host to connect to");
+DEFINE_string(server_host, "localhost", "Server host to connect to");
DEFINE_string(test_case, "rst_after_header",
"Configure different test cases. Valid options are:\n\n"
"goaway\n"
diff --git a/test/cpp/interop/reconnect_interop_client.cc b/test/cpp/interop/reconnect_interop_client.cc
index 797e52c744f..1c2f6066377 100644
--- a/test/cpp/interop/reconnect_interop_client.cc
+++ b/test/cpp/interop/reconnect_interop_client.cc
@@ -48,7 +48,7 @@
DEFINE_int32(server_control_port, 0, "Server port for control rpcs.");
DEFINE_int32(server_retry_port, 0, "Server port for testing reconnection.");
-DEFINE_string(server_host, "127.0.0.1", "Server host to connect to");
+DEFINE_string(server_host, "localhost", "Server host to connect to");
DEFINE_int32(max_reconnect_backoff_ms, 0,
"Maximum backoff time, or 0 for default.");
From befafe64f9a010920c492956ee8df1257a6d4e77 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 11:30:54 -0800
Subject: [PATCH 35/95] Initial pass to remove mu_lock from client_channel:
trickier cases remain
---
src/core/ext/client_channel/client_channel.c | 291 ++++++++++---------
1 file changed, 150 insertions(+), 141 deletions(-)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index 06038bb5ba9..2595acd8c42 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -51,6 +51,7 @@
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/channel/connected_channel.h"
#include "src/core/lib/channel/deadline_filter.h"
+#include "src/core/lib/iomgr/combiner.h"
#include "src/core/lib/iomgr/iomgr.h"
#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/profiling/timers.h"
@@ -160,8 +161,8 @@ typedef struct client_channel_channel_data {
/** client channel factory */
grpc_client_channel_factory *client_channel_factory;
- /** mutex protecting all variables below in this data structure */
- gpr_mu mu;
+ /** combiner protecting all variables below in this data structure */
+ grpc_combiner *combiner;
/** currently active load balancer */
char *lb_policy_name;
grpc_lb_policy *lb_policy;
@@ -218,8 +219,8 @@ static void set_channel_connectivity_state_locked(grpc_exec_ctx *exec_ctx,
}
static void on_lb_policy_state_changed_locked(grpc_exec_ctx *exec_ctx,
- lb_policy_connectivity_watcher *w,
- grpc_error *error) {
+ void *arg, grpc_error *error) {
+ lb_policy_connectivity_watcher *w = arg;
grpc_connectivity_state publish_state = w->state;
/* check if the notification is for a stale policy */
if (w->lb_policy != w->chand->lb_policy) return;
@@ -235,15 +236,6 @@ static void on_lb_policy_state_changed_locked(grpc_exec_ctx *exec_ctx,
if (w->state != GRPC_CHANNEL_SHUTDOWN) {
watch_lb_policy(exec_ctx, w->chand, w->lb_policy, w->state);
}
-}
-
-static void on_lb_policy_state_changed(grpc_exec_ctx *exec_ctx, void *arg,
- grpc_error *error) {
- lb_policy_connectivity_watcher *w = arg;
-
- gpr_mu_lock(&w->chand->mu);
- on_lb_policy_state_changed_locked(exec_ctx, w, error);
- gpr_mu_unlock(&w->chand->mu);
GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack, "watch_lb_policy");
gpr_free(w);
@@ -256,16 +248,16 @@ static void watch_lb_policy(grpc_exec_ctx *exec_ctx, channel_data *chand,
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "watch_lb_policy");
w->chand = chand;
- grpc_closure_init(&w->on_changed, on_lb_policy_state_changed, w,
- grpc_schedule_on_exec_ctx);
+ grpc_closure_init(&w->on_changed, on_lb_policy_state_changed_locked, w,
+ grpc_combiner_scheduler(chand->combiner, false));
w->state = current_state;
w->lb_policy = lb_policy;
grpc_lb_policy_notify_on_state_change(exec_ctx, lb_policy, &w->state,
&w->on_changed);
}
-static void on_resolver_result_changed(grpc_exec_ctx *exec_ctx, void *arg,
- grpc_error *error) {
+static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
+ void *arg, grpc_error *error) {
channel_data *chand = arg;
char *lb_policy_name = NULL;
grpc_lb_policy *lb_policy = NULL;
@@ -353,7 +345,6 @@ static void on_resolver_result_changed(grpc_exec_ctx *exec_ctx, void *arg,
chand->interested_parties);
}
- gpr_mu_lock(&chand->mu);
if (lb_policy_name != NULL) {
gpr_free(chand->lb_policy_name);
chand->lb_policy_name = lb_policy_name;
@@ -391,7 +382,6 @@ static void on_resolver_result_changed(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
grpc_resolver_next(exec_ctx, chand->resolver, &chand->resolver_result,
&chand->on_resolver_result_changed);
- gpr_mu_unlock(&chand->mu);
} else {
if (chand->resolver != NULL) {
grpc_resolver_shutdown(exec_ctx, chand->resolver);
@@ -404,7 +394,6 @@ static void on_resolver_result_changed(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_ERROR_CREATE_REFERENCING("Got config after disconnection", refs,
GPR_ARRAY_SIZE(refs)),
"resolver_gone");
- gpr_mu_unlock(&chand->mu);
}
if (exit_idle) {
@@ -426,20 +415,12 @@ static void on_resolver_result_changed(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_ERROR_UNREF(state_error);
}
-static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
- grpc_channel_element *elem,
- grpc_transport_op *op) {
+static void cc_start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error_ignored) {
+ grpc_transport_op *op = arg;
+ grpc_channel_element *elem = op->transport_private.args[0];
channel_data *chand = elem->channel_data;
- grpc_closure_sched(exec_ctx, op->on_consumed, GRPC_ERROR_NONE);
-
- GPR_ASSERT(op->set_accept_stream == false);
- if (op->bind_pollset != NULL) {
- grpc_pollset_set_add_pollset(exec_ctx, chand->interested_parties,
- op->bind_pollset);
- }
-
- gpr_mu_lock(&chand->mu);
if (op->on_connectivity_state_change != NULL) {
grpc_connectivity_state_notify_on_state_change(
exec_ctx, &chand->state_tracker, op->connectivity_state,
@@ -482,7 +463,28 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
}
GRPC_ERROR_UNREF(op->disconnect_with_error);
}
- gpr_mu_unlock(&chand->mu);
+}
+
+static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
+ grpc_channel_element *elem,
+ grpc_transport_op *op) {
+ channel_data *chand = elem->channel_data;
+
+ grpc_closure_sched(exec_ctx, op->on_consumed, GRPC_ERROR_NONE);
+
+ GPR_ASSERT(op->set_accept_stream == false);
+ if (op->bind_pollset != NULL) {
+ grpc_pollset_set_add_pollset(exec_ctx, chand->interested_parties,
+ op->bind_pollset);
+ }
+
+ op->transport_private.args[0] = elem;
+ grpc_closure_sched(
+ exec_ctx,
+ grpc_closure_init(&op->transport_private.closure,
+ cc_start_transport_op_locked, op,
+ grpc_combiner_scheduler(chand->combiner, false)),
+ GRPC_ERROR_NONE);
}
static void cc_get_channel_info(grpc_exec_ctx *exec_ctx,
@@ -512,11 +514,11 @@ static grpc_error *cc_init_channel_elem(grpc_exec_ctx *exec_ctx,
GPR_ASSERT(args->is_last);
GPR_ASSERT(elem->filter == &grpc_client_channel_filter);
// Initialize data members.
- gpr_mu_init(&chand->mu);
+ chand->combiner = grpc_combiner_create(NULL);
chand->owning_stack = args->channel_stack;
grpc_closure_init(&chand->on_resolver_result_changed,
- on_resolver_result_changed, chand,
- grpc_schedule_on_exec_ctx);
+ on_resolver_result_changed_locked, chand,
+ grpc_combiner_scheduler(chand->combiner, false));
chand->interested_parties = grpc_pollset_set_create();
grpc_connectivity_state_init(&chand->state_tracker, GRPC_CHANNEL_IDLE,
"client_channel");
@@ -572,7 +574,7 @@ static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx,
}
grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker);
grpc_pollset_set_destroy(chand->interested_parties);
- gpr_mu_destroy(&chand->mu);
+ grpc_combiner_destroy(exec_ctx, chand->combiner);
}
/*************************************************************************
@@ -615,8 +617,6 @@ typedef struct client_channel_call_data {
grpc_subchannel_call */
gpr_atm subchannel_call;
- gpr_mu mu;
-
subchannel_creation_phase creation_phase;
grpc_connected_subchannel *connected_subchannel;
grpc_polling_entity *pollent;
@@ -701,12 +701,11 @@ static void retry_waiting_locked(grpc_exec_ctx *exec_ctx, call_data *calld) {
GRPC_ERROR_NONE);
}
-static void subchannel_ready(grpc_exec_ctx *exec_ctx, void *arg,
- grpc_error *error) {
+static void subchannel_ready_locked(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error) {
grpc_call_element *elem = arg;
call_data *calld = elem->call_data;
channel_data *chand = elem->channel_data;
- gpr_mu_lock(&calld->mu);
GPR_ASSERT(calld->creation_phase ==
GRPC_SUBCHANNEL_CALL_HOLDER_PICKING_SUBCHANNEL);
grpc_polling_entity_del_from_pollset_set(exec_ctx, calld->pollent,
@@ -742,7 +741,6 @@ static void subchannel_ready(grpc_exec_ctx *exec_ctx, void *arg,
(gpr_atm)(uintptr_t)subchannel_call);
retry_waiting_locked(exec_ctx, calld);
}
- gpr_mu_unlock(&calld->mu);
GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call, "pick_subchannel");
}
@@ -768,37 +766,35 @@ typedef struct {
/** Return true if subchannel is available immediately (in which case on_ready
should not be called), or false otherwise (in which case on_ready should be
called when the subchannel is available). */
-static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
- grpc_metadata_batch *initial_metadata,
- uint32_t initial_metadata_flags,
- grpc_connected_subchannel **connected_subchannel,
- grpc_closure *on_ready, grpc_error *error);
-
-static void continue_picking(grpc_exec_ctx *exec_ctx, void *arg,
- grpc_error *error) {
+static bool pick_subchannel_locked(
+ grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ grpc_metadata_batch *initial_metadata, uint32_t initial_metadata_flags,
+ grpc_connected_subchannel **connected_subchannel, grpc_closure *on_ready,
+ grpc_error *error);
+
+static void continue_picking_locked(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error) {
continue_picking_args *cpa = arg;
if (cpa->connected_subchannel == NULL) {
/* cancelled, do nothing */
} else if (error != GRPC_ERROR_NONE) {
grpc_closure_sched(exec_ctx, cpa->on_ready, GRPC_ERROR_REF(error));
} else {
- call_data *calld = cpa->elem->call_data;
- gpr_mu_lock(&calld->mu);
- if (pick_subchannel(exec_ctx, cpa->elem, cpa->initial_metadata,
- cpa->initial_metadata_flags, cpa->connected_subchannel,
- cpa->on_ready, GRPC_ERROR_NONE)) {
+ if (pick_subchannel_locked(exec_ctx, cpa->elem, cpa->initial_metadata,
+ cpa->initial_metadata_flags,
+ cpa->connected_subchannel, cpa->on_ready,
+ GRPC_ERROR_NONE)) {
grpc_closure_sched(exec_ctx, cpa->on_ready, GRPC_ERROR_NONE);
}
- gpr_mu_unlock(&calld->mu);
}
gpr_free(cpa);
}
-static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
- grpc_metadata_batch *initial_metadata,
- uint32_t initial_metadata_flags,
- grpc_connected_subchannel **connected_subchannel,
- grpc_closure *on_ready, grpc_error *error) {
+static bool pick_subchannel_locked(
+ grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
+ grpc_metadata_batch *initial_metadata, uint32_t initial_metadata_flags,
+ grpc_connected_subchannel **connected_subchannel, grpc_closure *on_ready,
+ grpc_error *error) {
GPR_TIMER_BEGIN("pick_subchannel", 0);
channel_data *chand = elem->channel_data;
@@ -808,7 +804,6 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
GPR_ASSERT(connected_subchannel);
- gpr_mu_lock(&chand->mu);
if (initial_metadata == NULL) {
if (chand->lb_policy != NULL) {
grpc_lb_policy_cancel_pick(exec_ctx, chand->lb_policy,
@@ -824,7 +819,6 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
GRPC_ERROR_CREATE_REFERENCING("Pick cancelled", &error, 1));
}
}
- gpr_mu_unlock(&chand->mu);
GPR_TIMER_END("pick_subchannel", 0);
GRPC_ERROR_UNREF(error);
return true;
@@ -833,7 +827,6 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
if (chand->lb_policy != NULL) {
grpc_lb_policy *lb_policy = chand->lb_policy;
GRPC_LB_POLICY_REF(lb_policy, "pick_subchannel");
- gpr_mu_unlock(&chand->mu);
// If the application explicitly set wait_for_ready, use that.
// Otherwise, if the service config specified a value for this
// method, use that.
@@ -872,59 +865,37 @@ static bool pick_subchannel(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
cpa->connected_subchannel = connected_subchannel;
cpa->on_ready = on_ready;
cpa->elem = elem;
- grpc_closure_init(&cpa->closure, continue_picking, cpa,
- grpc_schedule_on_exec_ctx);
+ grpc_closure_init(&cpa->closure, continue_picking_locked, cpa,
+ grpc_combiner_scheduler(chand->combiner, true));
grpc_closure_list_append(&chand->waiting_for_config_closures, &cpa->closure,
GRPC_ERROR_NONE);
} else {
grpc_closure_sched(exec_ctx, on_ready, GRPC_ERROR_CREATE("Disconnected"));
}
- gpr_mu_unlock(&chand->mu);
GPR_TIMER_END("pick_subchannel", 0);
return false;
}
-// The logic here is fairly complicated, due to (a) the fact that we
-// need to handle the case where we receive the send op before the
-// initial metadata op, and (b) the need for efficiency, especially in
-// the streaming case.
-// TODO(ctiller): Explain this more thoroughly.
-static void cc_start_transport_stream_op(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem,
- grpc_transport_stream_op *op) {
+static void cc_start_transport_stream_op_locked(grpc_exec_ctx *exec_ctx,
+ void *arg,
+ grpc_error *error_ignored) {
+ grpc_transport_stream_op *op = arg;
+ grpc_call_element *elem = op->transport_private.args[0];
call_data *calld = elem->call_data;
channel_data *chand = elem->channel_data;
- GRPC_CALL_LOG_OP(GPR_INFO, elem, op);
- grpc_deadline_state_client_start_transport_stream_op(exec_ctx, elem, op);
- /* try to (atomically) get the call */
- grpc_subchannel_call *call = GET_CALL(calld);
- GPR_TIMER_BEGIN("cc_start_transport_stream_op", 0);
- if (call == CANCELLED_CALL) {
- grpc_transport_stream_op_finish_with_failure(
- exec_ctx, op, GRPC_ERROR_REF(calld->cancel_error));
- GPR_TIMER_END("cc_start_transport_stream_op", 0);
- return;
- }
- if (call != NULL) {
- grpc_subchannel_call_process_op(exec_ctx, call, op);
- GPR_TIMER_END("cc_start_transport_stream_op", 0);
- return;
- }
- /* we failed; lock and figure out what to do */
- gpr_mu_lock(&calld->mu);
+ grpc_subchannel_call *call;
+
retry:
/* need to recheck that another thread hasn't set the call */
call = GET_CALL(calld);
if (call == CANCELLED_CALL) {
- gpr_mu_unlock(&calld->mu);
grpc_transport_stream_op_finish_with_failure(
exec_ctx, op, GRPC_ERROR_REF(calld->cancel_error));
GPR_TIMER_END("cc_start_transport_stream_op", 0);
return;
}
if (call != NULL) {
- gpr_mu_unlock(&calld->mu);
grpc_subchannel_call_process_op(exec_ctx, call, op);
GPR_TIMER_END("cc_start_transport_stream_op", 0);
return;
@@ -946,11 +917,11 @@ retry:
fail_locked(exec_ctx, calld, GRPC_ERROR_REF(op->cancel_error));
break;
case GRPC_SUBCHANNEL_CALL_HOLDER_PICKING_SUBCHANNEL:
- pick_subchannel(exec_ctx, elem, NULL, 0, &calld->connected_subchannel,
- NULL, GRPC_ERROR_REF(op->cancel_error));
+ pick_subchannel_locked(exec_ctx, elem, NULL, 0,
+ &calld->connected_subchannel, NULL,
+ GRPC_ERROR_REF(op->cancel_error));
break;
}
- gpr_mu_unlock(&calld->mu);
grpc_transport_stream_op_finish_with_failure(
exec_ctx, op, GRPC_ERROR_REF(op->cancel_error));
GPR_TIMER_END("cc_start_transport_stream_op", 0);
@@ -962,16 +933,16 @@ retry:
calld->connected_subchannel == NULL &&
op->send_initial_metadata != NULL) {
calld->creation_phase = GRPC_SUBCHANNEL_CALL_HOLDER_PICKING_SUBCHANNEL;
- grpc_closure_init(&calld->next_step, subchannel_ready, elem,
- grpc_schedule_on_exec_ctx);
+ grpc_closure_init(&calld->next_step, subchannel_ready_locked, elem,
+ grpc_combiner_scheduler(chand->combiner, true));
GRPC_CALL_STACK_REF(calld->owning_call, "pick_subchannel");
/* If a subchannel is not available immediately, the polling entity from
call_data should be provided to channel_data's interested_parties, so
that IO of the lb_policy and resolver could be done under it. */
- if (pick_subchannel(exec_ctx, elem, op->send_initial_metadata,
- op->send_initial_metadata_flags,
- &calld->connected_subchannel, &calld->next_step,
- GRPC_ERROR_NONE)) {
+ if (pick_subchannel_locked(exec_ctx, elem, op->send_initial_metadata,
+ op->send_initial_metadata_flags,
+ &calld->connected_subchannel, &calld->next_step,
+ GRPC_ERROR_NONE)) {
calld->creation_phase = GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING;
GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call, "pick_subchannel");
} else {
@@ -998,27 +969,60 @@ retry:
}
/* nothing to be done but wait */
add_waiting_locked(calld, op);
- gpr_mu_unlock(&calld->mu);
GPR_TIMER_END("cc_start_transport_stream_op", 0);
}
+// The logic here is fairly complicated, due to (a) the fact that we
+// need to handle the case where we receive the send op before the
+// initial metadata op, and (b) the need for efficiency, especially in
+// the streaming case.
+// TODO(ctiller): Explain this more thoroughly.
+static void cc_start_transport_stream_op(grpc_exec_ctx *exec_ctx,
+ grpc_call_element *elem,
+ grpc_transport_stream_op *op) {
+ call_data *calld = elem->call_data;
+ channel_data *chand = elem->channel_data;
+ GRPC_CALL_LOG_OP(GPR_INFO, elem, op);
+ grpc_deadline_state_client_start_transport_stream_op(exec_ctx, elem, op);
+ /* try to (atomically) get the call */
+ grpc_subchannel_call *call = GET_CALL(calld);
+ GPR_TIMER_BEGIN("cc_start_transport_stream_op", 0);
+ if (call == CANCELLED_CALL) {
+ grpc_transport_stream_op_finish_with_failure(
+ exec_ctx, op, GRPC_ERROR_REF(calld->cancel_error));
+ GPR_TIMER_END("cc_start_transport_stream_op", 0);
+ return;
+ }
+ if (call != NULL) {
+ grpc_subchannel_call_process_op(exec_ctx, call, op);
+ GPR_TIMER_END("cc_start_transport_stream_op", 0);
+ return;
+ }
+ /* we failed; lock and figure out what to do */
+ op->transport_private.args[0] = elem;
+ grpc_closure_sched(
+ exec_ctx,
+ grpc_closure_init(&op->transport_private.closure,
+ cc_start_transport_stream_op_locked, op,
+ grpc_combiner_scheduler(chand->combiner, false)),
+ GRPC_ERROR_NONE);
+}
+
// Gets data from the service config. Invoked when the resolver returns
// its initial result.
-static void read_service_config(grpc_exec_ctx *exec_ctx, void *arg,
- grpc_error *error) {
+static void read_service_config_locked(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error) {
grpc_call_element *elem = arg;
channel_data *chand = elem->channel_data;
call_data *calld = elem->call_data;
// If this is an error, there's no point in looking at the service config.
if (error == GRPC_ERROR_NONE) {
// Get the method config table from channel data.
- gpr_mu_lock(&chand->mu);
grpc_slice_hash_table *method_params_table = NULL;
if (chand->method_params_table != NULL) {
method_params_table =
grpc_slice_hash_table_ref(chand->method_params_table);
}
- gpr_mu_unlock(&chand->mu);
// If the method config table was present, use it.
if (method_params_table != NULL) {
const method_parameters *method_params = grpc_method_config_table_get(
@@ -1028,7 +1032,6 @@ static void read_service_config(grpc_exec_ctx *exec_ctx, void *arg,
gpr_time_cmp(method_params->timeout, gpr_time_0(GPR_TIMESPAN)) != 0;
if (have_method_timeout ||
method_params->wait_for_ready != WAIT_FOR_READY_UNSET) {
- gpr_mu_lock(&calld->mu);
if (have_method_timeout) {
const gpr_timespec per_method_deadline =
gpr_time_add(calld->call_start_time, method_params->timeout);
@@ -1042,7 +1045,6 @@ static void read_service_config(grpc_exec_ctx *exec_ctx, void *arg,
calld->wait_for_ready_from_service_config =
method_params->wait_for_ready;
}
- gpr_mu_unlock(&calld->mu);
}
}
grpc_slice_hash_table_unref(exec_ctx, method_params_table);
@@ -1051,43 +1053,25 @@ static void read_service_config(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call, "read_service_config");
}
-/* Constructor for call_data */
-static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
- grpc_call_element *elem,
- grpc_call_element_args *args) {
+static void initial_read_service_config_locked(grpc_exec_ctx *exec_ctx,
+ void *arg,
+ grpc_error *error_ignored) {
+ grpc_call_element *elem = arg;
channel_data *chand = elem->channel_data;
call_data *calld = elem->call_data;
- // Initialize data members.
- grpc_deadline_state_init(exec_ctx, elem, args->call_stack);
- calld->path = grpc_slice_ref_internal(args->path);
- calld->call_start_time = args->start_time;
- calld->deadline = gpr_convert_clock_type(args->deadline, GPR_CLOCK_MONOTONIC);
- calld->wait_for_ready_from_service_config = WAIT_FOR_READY_UNSET;
- calld->cancel_error = GRPC_ERROR_NONE;
- gpr_atm_rel_store(&calld->subchannel_call, 0);
- gpr_mu_init(&calld->mu);
- calld->connected_subchannel = NULL;
- calld->waiting_ops = NULL;
- calld->waiting_ops_count = 0;
- calld->waiting_ops_capacity = 0;
- calld->creation_phase = GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING;
- calld->owning_call = args->call_stack;
- calld->pollent = NULL;
// If the resolver has already returned results, then we can access
// the service config parameters immediately. Otherwise, we need to
// defer that work until the resolver returns an initial result.
// TODO(roth): This code is almost but not quite identical to the code
// in read_service_config() above. It would be nice to find a way to
// combine them, to avoid having to maintain it twice.
- gpr_mu_lock(&chand->mu);
if (chand->lb_policy != NULL) {
// We already have a resolver result, so check for service config.
if (chand->method_params_table != NULL) {
grpc_slice_hash_table *method_params_table =
grpc_slice_hash_table_ref(chand->method_params_table);
- gpr_mu_unlock(&chand->mu);
method_parameters *method_params = grpc_method_config_table_get(
- exec_ctx, method_params_table, args->path);
+ exec_ctx, method_params_table, calld->path);
if (method_params != NULL) {
if (gpr_time_cmp(method_params->timeout,
gpr_time_0(GPR_CLOCK_MONOTONIC)) != 0) {
@@ -1101,24 +1085,50 @@ static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
}
}
grpc_slice_hash_table_unref(exec_ctx, method_params_table);
- } else {
- gpr_mu_unlock(&chand->mu);
}
} else {
// We don't yet have a resolver result, so register a callback to
// get the service config data once the resolver returns.
// Take a reference to the call stack to be owned by the callback.
GRPC_CALL_STACK_REF(calld->owning_call, "read_service_config");
- grpc_closure_init(&calld->read_service_config, read_service_config, elem,
- grpc_schedule_on_exec_ctx);
+ grpc_closure_init(&calld->read_service_config, read_service_config_locked,
+ elem, grpc_combiner_scheduler(chand->combiner, false));
grpc_closure_list_append(&chand->waiting_for_config_closures,
&calld->read_service_config, GRPC_ERROR_NONE);
- gpr_mu_unlock(&chand->mu);
}
// Start the deadline timer with the current deadline value. If we
// do not yet have service config data, then the timer may be reset
// later.
grpc_deadline_state_start(exec_ctx, elem, calld->deadline);
+}
+
+/* Constructor for call_data */
+static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
+ grpc_call_element *elem,
+ grpc_call_element_args *args) {
+ channel_data *chand = elem->channel_data;
+ call_data *calld = elem->call_data;
+ // Initialize data members.
+ grpc_deadline_state_init(exec_ctx, elem, args->call_stack);
+ calld->path = grpc_slice_ref_internal(args->path);
+ calld->call_start_time = args->start_time;
+ calld->deadline = gpr_convert_clock_type(args->deadline, GPR_CLOCK_MONOTONIC);
+ calld->wait_for_ready_from_service_config = WAIT_FOR_READY_UNSET;
+ calld->cancel_error = GRPC_ERROR_NONE;
+ gpr_atm_rel_store(&calld->subchannel_call, 0);
+ calld->connected_subchannel = NULL;
+ calld->waiting_ops = NULL;
+ calld->waiting_ops_count = 0;
+ calld->waiting_ops_capacity = 0;
+ calld->creation_phase = GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING;
+ calld->owning_call = args->call_stack;
+ calld->pollent = NULL;
+ grpc_closure_sched(
+ exec_ctx,
+ grpc_closure_init(&calld->read_service_config,
+ initial_read_service_config_locked, elem,
+ grpc_combiner_scheduler(chand->combiner, false)),
+ GRPC_ERROR_NONE);
return GRPC_ERROR_NONE;
}
@@ -1136,7 +1146,6 @@ static void cc_destroy_call_elem(grpc_exec_ctx *exec_ctx,
GRPC_SUBCHANNEL_CALL_UNREF(exec_ctx, call, "client_channel_destroy_call");
}
GPR_ASSERT(calld->creation_phase == GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING);
- gpr_mu_destroy(&calld->mu);
GPR_ASSERT(calld->waiting_ops_count == 0);
if (calld->connected_subchannel != NULL) {
GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, calld->connected_subchannel,
From 613dafa60ce3a22a5d7f1351b8054a3090b9deb1 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 12:00:43 -0800
Subject: [PATCH 36/95] Convert connectivity_state, channel info into a
combiner-compatible form
---
src/core/ext/client_channel/client_channel.c | 100 +++++++++++-------
src/core/ext/client_channel/subchannel.c | 2 +-
src/core/ext/lb_policy/grpclb/grpclb.c | 9 +-
.../ext/lb_policy/pick_first/pick_first.c | 2 +-
.../ext/lb_policy/round_robin/round_robin.c | 2 +-
src/core/lib/transport/connectivity_state.c | 42 +++++---
src/core/lib/transport/connectivity_state.h | 20 +++-
test/core/transport/connectivity_state_test.c | 3 +-
8 files changed, 117 insertions(+), 63 deletions(-)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index 2595acd8c42..58504de87d2 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -164,10 +164,7 @@ typedef struct client_channel_channel_data {
/** combiner protecting all variables below in this data structure */
grpc_combiner *combiner;
/** currently active load balancer */
- char *lb_policy_name;
grpc_lb_policy *lb_policy;
- /** service config in JSON form */
- char *service_config_json;
/** maps method names to method_parameters structs */
grpc_slice_hash_table *method_params_table;
/** incoming resolver result - set by resolver.next() */
@@ -184,6 +181,13 @@ typedef struct client_channel_channel_data {
grpc_channel_stack *owning_stack;
/** interested parties (owned) */
grpc_pollset_set *interested_parties;
+
+ /* the following properties are guarded by a mutex since API's require them
+ to be instantaniously available */
+ gpr_mu info_mu;
+ char *info_lb_policy_name;
+ /** service config in JSON form */
+ char *info_service_config_json;
} channel_data;
/** We create one watcher for each new lb_policy that is returned from a
@@ -345,16 +349,18 @@ static void on_resolver_result_changed_locked(grpc_exec_ctx *exec_ctx,
chand->interested_parties);
}
+ gpr_mu_lock(&chand->info_mu);
if (lb_policy_name != NULL) {
- gpr_free(chand->lb_policy_name);
- chand->lb_policy_name = lb_policy_name;
+ gpr_free(chand->info_lb_policy_name);
+ chand->info_lb_policy_name = lb_policy_name;
}
old_lb_policy = chand->lb_policy;
chand->lb_policy = lb_policy;
if (service_config_json != NULL) {
- gpr_free(chand->service_config_json);
- chand->service_config_json = service_config_json;
+ gpr_free(chand->info_service_config_json);
+ chand->info_service_config_json = service_config_json;
}
+ gpr_mu_unlock(&chand->info_mu);
if (chand->method_params_table != NULL) {
grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table);
}
@@ -491,18 +497,19 @@ static void cc_get_channel_info(grpc_exec_ctx *exec_ctx,
grpc_channel_element *elem,
const grpc_channel_info *info) {
channel_data *chand = elem->channel_data;
- gpr_mu_lock(&chand->mu);
+ gpr_mu_lock(&chand->info_mu);
if (info->lb_policy_name != NULL) {
- *info->lb_policy_name = chand->lb_policy_name == NULL
+ *info->lb_policy_name = chand->info_lb_policy_name == NULL
? NULL
- : gpr_strdup(chand->lb_policy_name);
+ : gpr_strdup(chand->info_lb_policy_name);
}
if (info->service_config_json != NULL) {
- *info->service_config_json = chand->service_config_json == NULL
- ? NULL
- : gpr_strdup(chand->service_config_json);
+ *info->service_config_json =
+ chand->info_service_config_json == NULL
+ ? NULL
+ : gpr_strdup(chand->info_service_config_json);
}
- gpr_mu_unlock(&chand->mu);
+ gpr_mu_unlock(&chand->info_mu);
}
/* Constructor for channel_data */
@@ -567,8 +574,8 @@ static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx,
chand->interested_parties);
GRPC_LB_POLICY_UNREF(exec_ctx, chand->lb_policy, "channel");
}
- gpr_free(chand->lb_policy_name);
- gpr_free(chand->service_config_json);
+ gpr_free(chand->info_lb_policy_name);
+ gpr_free(chand->info_service_config_json);
if (chand->method_params_table != NULL) {
grpc_slice_hash_table_unref(exec_ctx, chand->method_params_table);
}
@@ -1181,26 +1188,34 @@ const grpc_channel_filter grpc_client_channel_filter = {
"client-channel",
};
+static void try_to_connect_locked(grpc_exec_ctx *exec_ctx, void *arg,
+ grpc_error *error_ignored) {
+ channel_data *chand = arg;
+ if (chand->lb_policy != NULL) {
+ grpc_lb_policy_exit_idle(exec_ctx, chand->lb_policy);
+ } else {
+ chand->exit_idle_when_lb_policy_arrives = true;
+ if (!chand->started_resolving && chand->resolver != NULL) {
+ GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
+ chand->started_resolving = true;
+ grpc_resolver_next(exec_ctx, chand->resolver, &chand->resolver_result,
+ &chand->on_resolver_result_changed);
+ }
+ }
+}
+
grpc_connectivity_state grpc_client_channel_check_connectivity_state(
grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, int try_to_connect) {
channel_data *chand = elem->channel_data;
grpc_connectivity_state out;
- gpr_mu_lock(&chand->mu);
- out = grpc_connectivity_state_check(&chand->state_tracker, NULL);
+ out = grpc_connectivity_state_check(&chand->state_tracker);
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
- if (chand->lb_policy != NULL) {
- grpc_lb_policy_exit_idle(exec_ctx, chand->lb_policy);
- } else {
- chand->exit_idle_when_lb_policy_arrives = true;
- if (!chand->started_resolving && chand->resolver != NULL) {
- GRPC_CHANNEL_STACK_REF(chand->owning_stack, "resolver");
- chand->started_resolving = true;
- grpc_resolver_next(exec_ctx, chand->resolver, &chand->resolver_result,
- &chand->on_resolver_result_changed);
- }
- }
+ grpc_closure_sched(
+ exec_ctx,
+ grpc_closure_create(try_to_connect_locked, chand,
+ grpc_combiner_scheduler(chand->combiner, false)),
+ GRPC_ERROR_NONE);
}
- gpr_mu_unlock(&chand->mu);
return out;
}
@@ -1208,6 +1223,7 @@ typedef struct {
channel_data *chand;
grpc_pollset *pollset;
grpc_closure *on_complete;
+ grpc_connectivity_state *state;
grpc_closure my_closure;
} external_connectivity_watcher;
@@ -1220,7 +1236,17 @@ static void on_external_watch_complete(grpc_exec_ctx *exec_ctx, void *arg,
GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack,
"external_connectivity_watcher");
gpr_free(w);
- follow_up->cb(exec_ctx, follow_up->cb_arg, error);
+ grpc_closure_run(exec_ctx, follow_up, GRPC_ERROR_REF(error));
+}
+
+static void cc_watch_connectivity_state_locked(grpc_exec_ctx *exec_ctx,
+ void *arg,
+ grpc_error *error_ignored) {
+ external_connectivity_watcher *w = arg;
+ grpc_closure_init(&w->my_closure, on_external_watch_complete, w,
+ grpc_schedule_on_exec_ctx);
+ grpc_connectivity_state_notify_on_state_change(
+ exec_ctx, &w->chand->state_tracker, w->state, &w->my_closure);
}
void grpc_client_channel_watch_connectivity_state(
@@ -1231,13 +1257,13 @@ void grpc_client_channel_watch_connectivity_state(
w->chand = chand;
w->pollset = pollset;
w->on_complete = on_complete;
+ w->state = state;
grpc_pollset_set_add_pollset(exec_ctx, chand->interested_parties, pollset);
- grpc_closure_init(&w->my_closure, on_external_watch_complete, w,
- grpc_schedule_on_exec_ctx);
GRPC_CHANNEL_STACK_REF(w->chand->owning_stack,
"external_connectivity_watcher");
- gpr_mu_lock(&chand->mu);
- grpc_connectivity_state_notify_on_state_change(
- exec_ctx, &chand->state_tracker, state, &w->my_closure);
- gpr_mu_unlock(&chand->mu);
+ grpc_closure_sched(
+ exec_ctx,
+ grpc_closure_init(&w->my_closure, cc_watch_connectivity_state_locked, w,
+ grpc_combiner_scheduler(chand->combiner, true)),
+ GRPC_ERROR_NONE);
}
diff --git a/src/core/ext/client_channel/subchannel.c b/src/core/ext/client_channel/subchannel.c
index aa036e883ba..c37134fd5e7 100644
--- a/src/core/ext/client_channel/subchannel.c
+++ b/src/core/ext/client_channel/subchannel.c
@@ -419,7 +419,7 @@ grpc_connectivity_state grpc_subchannel_check_connectivity(grpc_subchannel *c,
grpc_error **error) {
grpc_connectivity_state state;
gpr_mu_lock(&c->mu);
- state = grpc_connectivity_state_check(&c->state_tracker, error);
+ state = grpc_connectivity_state_get(&c->state_tracker, error);
gpr_mu_unlock(&c->mu);
return state;
}
diff --git a/src/core/ext/lb_policy/grpclb/grpclb.c b/src/core/ext/lb_policy/grpclb/grpclb.c
index ab62e5ed6a1..8a2af483283 100644
--- a/src/core/ext/lb_policy/grpclb/grpclb.c
+++ b/src/core/ext/lb_policy/grpclb/grpclb.c
@@ -492,9 +492,8 @@ static grpc_lb_addresses *process_serverlist_locked(
static bool update_lb_connectivity_status_locked(
grpc_exec_ctx *exec_ctx, glb_lb_policy *glb_policy,
grpc_connectivity_state new_rr_state, grpc_error *new_rr_state_error) {
- grpc_error *curr_state_error;
- const grpc_connectivity_state curr_glb_state = grpc_connectivity_state_check(
- &glb_policy->state_tracker, &curr_state_error);
+ const grpc_connectivity_state curr_glb_state =
+ grpc_connectivity_state_check(&glb_policy->state_tracker);
/* The new connectivity status is a function of the previous one and the new
* input coming from the status of the RR policy.
@@ -1098,8 +1097,8 @@ static grpc_connectivity_state glb_check_connectivity(
glb_lb_policy *glb_policy = (glb_lb_policy *)pol;
grpc_connectivity_state st;
gpr_mu_lock(&glb_policy->mu);
- st = grpc_connectivity_state_check(&glb_policy->state_tracker,
- connectivity_error);
+ st = grpc_connectivity_state_get(&glb_policy->state_tracker,
+ connectivity_error);
gpr_mu_unlock(&glb_policy->mu);
return st;
}
diff --git a/src/core/ext/lb_policy/pick_first/pick_first.c b/src/core/ext/lb_policy/pick_first/pick_first.c
index 9f2aa461bed..1b965183f6b 100644
--- a/src/core/ext/lb_policy/pick_first/pick_first.c
+++ b/src/core/ext/lb_policy/pick_first/pick_first.c
@@ -398,7 +398,7 @@ static grpc_connectivity_state pf_check_connectivity(grpc_exec_ctx *exec_ctx,
pick_first_lb_policy *p = (pick_first_lb_policy *)pol;
grpc_connectivity_state st;
gpr_mu_lock(&p->mu);
- st = grpc_connectivity_state_check(&p->state_tracker, error);
+ st = grpc_connectivity_state_get(&p->state_tracker, error);
gpr_mu_unlock(&p->mu);
return st;
}
diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c
index 3e060d189ab..63e3d033adf 100644
--- a/src/core/ext/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/lb_policy/round_robin/round_robin.c
@@ -655,7 +655,7 @@ static grpc_connectivity_state rr_check_connectivity(grpc_exec_ctx *exec_ctx,
round_robin_lb_policy *p = (round_robin_lb_policy *)pol;
grpc_connectivity_state st;
gpr_mu_lock(&p->mu);
- st = grpc_connectivity_state_check(&p->state_tracker, error);
+ st = grpc_connectivity_state_get(&p->state_tracker, error);
gpr_mu_unlock(&p->mu);
return st;
}
diff --git a/src/core/lib/transport/connectivity_state.c b/src/core/lib/transport/connectivity_state.c
index 8fc5bf3e9a6..e884567240d 100644
--- a/src/core/lib/transport/connectivity_state.c
+++ b/src/core/lib/transport/connectivity_state.c
@@ -62,7 +62,7 @@ const char *grpc_connectivity_state_name(grpc_connectivity_state state) {
void grpc_connectivity_state_init(grpc_connectivity_state_tracker *tracker,
grpc_connectivity_state init_state,
const char *name) {
- tracker->current_state = init_state;
+ gpr_atm_no_barrier_store(&tracker->current_state_atm, init_state);
tracker->current_error = GRPC_ERROR_NONE;
tracker->watchers = NULL;
tracker->name = gpr_strdup(name);
@@ -89,15 +89,29 @@ void grpc_connectivity_state_destroy(grpc_exec_ctx *exec_ctx,
}
grpc_connectivity_state grpc_connectivity_state_check(
+ grpc_connectivity_state_tracker *tracker) {
+ grpc_connectivity_state cur =
+ (grpc_connectivity_state)gpr_atm_no_barrier_load(
+ &tracker->current_state_atm);
+ if (grpc_connectivity_state_trace) {
+ gpr_log(GPR_DEBUG, "CONWATCH: %p %s: get %s", tracker, tracker->name,
+ grpc_connectivity_state_name(cur));
+ }
+ return cur;
+}
+
+grpc_connectivity_state grpc_connectivity_state_get(
grpc_connectivity_state_tracker *tracker, grpc_error **error) {
+ grpc_connectivity_state cur =(grpc_connectivity_state)
+ gpr_atm_no_barrier_load(&tracker->current_state_atm);
if (grpc_connectivity_state_trace) {
gpr_log(GPR_DEBUG, "CONWATCH: %p %s: get %s", tracker, tracker->name,
- grpc_connectivity_state_name(tracker->current_state));
+ grpc_connectivity_state_name(cur));
}
if (error != NULL) {
*error = GRPC_ERROR_REF(tracker->current_error);
}
- return tracker->current_state;
+ return cur;
}
bool grpc_connectivity_state_has_watchers(
@@ -108,6 +122,8 @@ bool grpc_connectivity_state_has_watchers(
bool grpc_connectivity_state_notify_on_state_change(
grpc_exec_ctx *exec_ctx, grpc_connectivity_state_tracker *tracker,
grpc_connectivity_state *current, grpc_closure *notify) {
+ grpc_connectivity_state cur =(grpc_connectivity_state)
+ gpr_atm_no_barrier_load(&tracker->current_state_atm);
if (grpc_connectivity_state_trace) {
if (current == NULL) {
gpr_log(GPR_DEBUG, "CONWATCH: %p %s: unsubscribe notify=%p", tracker,
@@ -115,7 +131,7 @@ bool grpc_connectivity_state_notify_on_state_change(
} else {
gpr_log(GPR_DEBUG, "CONWATCH: %p %s: from %s [cur=%s] notify=%p", tracker,
tracker->name, grpc_connectivity_state_name(*current),
- grpc_connectivity_state_name(tracker->current_state), notify);
+ grpc_connectivity_state_name(cur), notify);
}
}
if (current == NULL) {
@@ -138,8 +154,8 @@ bool grpc_connectivity_state_notify_on_state_change(
}
return false;
} else {
- if (tracker->current_state != *current) {
- *current = tracker->current_state;
+ if (cur != *current) {
+ *current = cur;
grpc_closure_sched(exec_ctx, notify,
GRPC_ERROR_REF(tracker->current_error));
} else {
@@ -149,7 +165,7 @@ bool grpc_connectivity_state_notify_on_state_change(
w->next = tracker->watchers;
tracker->watchers = w;
}
- return tracker->current_state == GRPC_CHANNEL_IDLE;
+ return cur == GRPC_CHANNEL_IDLE;
}
}
@@ -157,11 +173,13 @@ void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx,
grpc_connectivity_state_tracker *tracker,
grpc_connectivity_state state,
grpc_error *error, const char *reason) {
+ grpc_connectivity_state cur =(grpc_connectivity_state)
+ gpr_atm_no_barrier_load(&tracker->current_state_atm);
grpc_connectivity_state_watcher *w;
if (grpc_connectivity_state_trace) {
const char *error_string = grpc_error_string(error);
gpr_log(GPR_DEBUG, "SET: %p %s: %s --> %s [%s] error=%p %s", tracker,
- tracker->name, grpc_connectivity_state_name(tracker->current_state),
+ tracker->name, grpc_connectivity_state_name(cur),
grpc_connectivity_state_name(state), reason, error, error_string);
}
switch (state) {
@@ -178,13 +196,13 @@ void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx,
}
GRPC_ERROR_UNREF(tracker->current_error);
tracker->current_error = error;
- if (tracker->current_state == state) {
+ if (cur == state) {
return;
}
- GPR_ASSERT(tracker->current_state != GRPC_CHANNEL_SHUTDOWN);
- tracker->current_state = state;
+ GPR_ASSERT(cur != GRPC_CHANNEL_SHUTDOWN);
+ gpr_atm_no_barrier_store(&tracker->current_state_atm, state);
while ((w = tracker->watchers) != NULL) {
- *w->current = tracker->current_state;
+ *w->current = state;
tracker->watchers = w->next;
if (grpc_connectivity_state_trace) {
gpr_log(GPR_DEBUG, "NOTIFY: %p %s: %p", tracker, tracker->name,
diff --git a/src/core/lib/transport/connectivity_state.h b/src/core/lib/transport/connectivity_state.h
index 769c675b797..c9604c34dda 100644
--- a/src/core/lib/transport/connectivity_state.h
+++ b/src/core/lib/transport/connectivity_state.h
@@ -47,8 +47,8 @@ typedef struct grpc_connectivity_state_watcher {
} grpc_connectivity_state_watcher;
typedef struct {
- /** current connectivity state */
- grpc_connectivity_state current_state;
+ /** current grpc_connectivity_state */
+ gpr_atm current_state_atm;
/** error associated with state */
grpc_error *current_error;
/** all our watchers */
@@ -59,6 +59,7 @@ typedef struct {
extern int grpc_connectivity_state_trace;
+/** enum --> string conversion */
const char *grpc_connectivity_state_name(grpc_connectivity_state state);
void grpc_connectivity_state_init(grpc_connectivity_state_tracker *tracker,
@@ -68,22 +69,31 @@ void grpc_connectivity_state_destroy(grpc_exec_ctx *exec_ctx,
grpc_connectivity_state_tracker *tracker);
/** Set connectivity state; not thread safe; access must be serialized with an
- * external lock */
+ * external lock */
void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx,
grpc_connectivity_state_tracker *tracker,
grpc_connectivity_state state,
grpc_error *associated_error,
const char *reason);
+/** Return true if this connectivity state has watchers.
+ Access must be serialized with an external lock. */
bool grpc_connectivity_state_has_watchers(
grpc_connectivity_state_tracker *tracker);
+/** Return the last seen connectivity state. No need to synchronize access. */
grpc_connectivity_state grpc_connectivity_state_check(
- grpc_connectivity_state_tracker *tracker, grpc_error **current_error);
+ grpc_connectivity_state_tracker *tracker);
+
+/** Return the last seen connectivity state, and the associated error.
+ Access must be serialized with an external lock. */
+grpc_connectivity_state grpc_connectivity_state_get(
+ grpc_connectivity_state_tracker *tracker, grpc_error **error);
/** Return 1 if the channel should start connecting, 0 otherwise.
If current==NULL cancel notify if it is already queued (success==0 in that
- case) */
+ case).
+ Access must be serialized with an external lock. */
bool grpc_connectivity_state_notify_on_state_change(
grpc_exec_ctx *exec_ctx, grpc_connectivity_state_tracker *tracker,
grpc_connectivity_state *current, grpc_closure *notify);
diff --git a/test/core/transport/connectivity_state_test.c b/test/core/transport/connectivity_state_test.c
index 3520ef0a80d..8314a5f6190 100644
--- a/test/core/transport/connectivity_state_test.c
+++ b/test/core/transport/connectivity_state_test.c
@@ -77,8 +77,9 @@ static void test_check(void) {
grpc_error *error;
gpr_log(GPR_DEBUG, "test_check");
grpc_connectivity_state_init(&tracker, GRPC_CHANNEL_IDLE, "xxx");
- GPR_ASSERT(grpc_connectivity_state_check(&tracker, &error) ==
+ GPR_ASSERT(grpc_connectivity_state_get(&tracker, &error) ==
GRPC_CHANNEL_IDLE);
+ GPR_ASSERT(grpc_connectivity_state_check(&tracker) == GRPC_CHANNEL_IDLE);
GPR_ASSERT(error == GRPC_ERROR_NONE);
grpc_connectivity_state_destroy(&exec_ctx, &tracker);
grpc_exec_ctx_finish(&exec_ctx);
From d85477515230c5161659175cbc60b684109aedbf Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 12:02:39 -0800
Subject: [PATCH 37/95] Init mutex
---
src/core/ext/client_channel/client_channel.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index 58504de87d2..a7dd967a51e 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -522,6 +522,7 @@ static grpc_error *cc_init_channel_elem(grpc_exec_ctx *exec_ctx,
GPR_ASSERT(elem->filter == &grpc_client_channel_filter);
// Initialize data members.
chand->combiner = grpc_combiner_create(NULL);
+ gpr_mu_init(&chand->info_mu);
chand->owning_stack = args->channel_stack;
grpc_closure_init(&chand->on_resolver_result_changed,
on_resolver_result_changed_locked, chand,
@@ -582,6 +583,7 @@ static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx,
grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker);
grpc_pollset_set_destroy(chand->interested_parties);
grpc_combiner_destroy(exec_ctx, chand->combiner);
+ gpr_mu_destroy(&chand->info_mu);
}
/*************************************************************************
From d2e5cfc5bbe844ece808a843314458b798368748 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 13:02:20 -0800
Subject: [PATCH 38/95] Start fixing refcounting
---
src/core/ext/client_channel/client_channel.c | 48 ++++++++------------
1 file changed, 19 insertions(+), 29 deletions(-)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index a7dd967a51e..282913431f3 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -469,6 +469,9 @@ static void cc_start_transport_op_locked(grpc_exec_ctx *exec_ctx, void *arg,
}
GRPC_ERROR_UNREF(op->disconnect_with_error);
}
+ GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->owning_stack, "start_transport_op");
+
+ grpc_closure_sched(exec_ctx, op->on_consumed, GRPC_ERROR_NONE);
}
static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
@@ -476,8 +479,6 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
grpc_transport_op *op) {
channel_data *chand = elem->channel_data;
- grpc_closure_sched(exec_ctx, op->on_consumed, GRPC_ERROR_NONE);
-
GPR_ASSERT(op->set_accept_stream == false);
if (op->bind_pollset != NULL) {
grpc_pollset_set_add_pollset(exec_ctx, chand->interested_parties,
@@ -485,6 +486,7 @@ static void cc_start_transport_op(grpc_exec_ctx *exec_ctx,
}
op->transport_private.args[0] = elem;
+ GRPC_CHANNEL_STACK_REF(chand->owning_stack, "start_transport_op");
grpc_closure_sched(
exec_ctx,
grpc_closure_init(&op->transport_private.closure,
@@ -670,44 +672,24 @@ static void fail_locked(grpc_exec_ctx *exec_ctx, call_data *calld,
GRPC_ERROR_UNREF(error);
}
-typedef struct {
- grpc_transport_stream_op **ops;
- size_t nops;
- grpc_subchannel_call *call;
-} retry_ops_args;
-
-static void retry_ops(grpc_exec_ctx *exec_ctx, void *args, grpc_error *error) {
- retry_ops_args *a = args;
- size_t i;
- for (i = 0; i < a->nops; i++) {
- grpc_subchannel_call_process_op(exec_ctx, a->call, a->ops[i]);
- }
- GRPC_SUBCHANNEL_CALL_UNREF(exec_ctx, a->call, "retry_ops");
- gpr_free(a->ops);
- gpr_free(a);
-}
-
static void retry_waiting_locked(grpc_exec_ctx *exec_ctx, call_data *calld) {
if (calld->waiting_ops_count == 0) {
return;
}
- retry_ops_args *a = gpr_malloc(sizeof(*a));
- a->ops = calld->waiting_ops;
- a->nops = calld->waiting_ops_count;
- a->call = GET_CALL(calld);
- if (a->call == CANCELLED_CALL) {
- gpr_free(a);
+ grpc_subchannel_call *call = GET_CALL(calld);
+ grpc_transport_stream_op **ops = calld->waiting_ops;
+ size_t nops = calld->waiting_ops_count;
+ if (call == CANCELLED_CALL) {
fail_locked(exec_ctx, calld, GRPC_ERROR_CANCELLED);
return;
}
calld->waiting_ops = NULL;
calld->waiting_ops_count = 0;
calld->waiting_ops_capacity = 0;
- GRPC_SUBCHANNEL_CALL_REF(a->call, "retry_ops");
- grpc_closure_sched(
- exec_ctx, grpc_closure_create(retry_ops, a, grpc_schedule_on_exec_ctx),
- GRPC_ERROR_NONE);
+ for (size_t i = 0; i < nops; i++) {
+ grpc_subchannel_call_process_op(exec_ctx, call, ops[i]);
+ }
}
static void subchannel_ready_locked(grpc_exec_ctx *exec_ctx, void *arg,
@@ -978,6 +960,8 @@ retry:
}
/* nothing to be done but wait */
add_waiting_locked(calld, op);
+ GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call,
+ "start_transport_stream_op");
GPR_TIMER_END("cc_start_transport_stream_op", 0);
}
@@ -1008,6 +992,7 @@ static void cc_start_transport_stream_op(grpc_exec_ctx *exec_ctx,
return;
}
/* we failed; lock and figure out what to do */
+ GRPC_CALL_STACK_REF(calld->owning_call, "start_transport_stream_op");
op->transport_private.args[0] = elem;
grpc_closure_sched(
exec_ctx,
@@ -1109,6 +1094,8 @@ static void initial_read_service_config_locked(grpc_exec_ctx *exec_ctx,
// do not yet have service config data, then the timer may be reset
// later.
grpc_deadline_state_start(exec_ctx, elem, calld->deadline);
+ GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call,
+ "initial_read_service_config");
}
/* Constructor for call_data */
@@ -1132,6 +1119,7 @@ static grpc_error *cc_init_call_elem(grpc_exec_ctx *exec_ctx,
calld->creation_phase = GRPC_SUBCHANNEL_CALL_HOLDER_NOT_CREATING;
calld->owning_call = args->call_stack;
calld->pollent = NULL;
+ GRPC_CALL_STACK_REF(calld->owning_call, "initial_read_service_config");
grpc_closure_sched(
exec_ctx,
grpc_closure_init(&calld->read_service_config,
@@ -1204,6 +1192,7 @@ static void try_to_connect_locked(grpc_exec_ctx *exec_ctx, void *arg,
&chand->on_resolver_result_changed);
}
}
+ GRPC_CHANNEL_STACK_UNREF(exec_ctx, chand->owning_stack, "try_to_connect");
}
grpc_connectivity_state grpc_client_channel_check_connectivity_state(
@@ -1212,6 +1201,7 @@ grpc_connectivity_state grpc_client_channel_check_connectivity_state(
grpc_connectivity_state out;
out = grpc_connectivity_state_check(&chand->state_tracker);
if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
+ GRPC_CHANNEL_STACK_REF(chand->owning_stack, "try_to_connect");
grpc_closure_sched(
exec_ctx,
grpc_closure_create(try_to_connect_locked, chand,
From 9efea88d33132964b3eadcbdc43bd2bba38517ad Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 13:06:52 -0800
Subject: [PATCH 39/95] Fix waiting_ops leak
---
src/core/ext/client_channel/client_channel.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index 282913431f3..4bde9ec8054 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -690,6 +690,7 @@ static void retry_waiting_locked(grpc_exec_ctx *exec_ctx, call_data *calld) {
for (size_t i = 0; i < nops; i++) {
grpc_subchannel_call_process_op(exec_ctx, call, ops[i]);
}
+ gpr_free(ops);
}
static void subchannel_ready_locked(grpc_exec_ctx *exec_ctx, void *arg,
From 2b56dcc49ee44a9c30cb8397c0d0fdf0d42a5a65 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 13:13:05 -0800
Subject: [PATCH 40/95] Fix leak in client_channel
---
src/core/ext/client_channel/client_channel.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index 4bde9ec8054..e62fdf3adb5 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -884,13 +884,11 @@ retry:
if (call == CANCELLED_CALL) {
grpc_transport_stream_op_finish_with_failure(
exec_ctx, op, GRPC_ERROR_REF(calld->cancel_error));
- GPR_TIMER_END("cc_start_transport_stream_op", 0);
- return;
+ goto done;
}
if (call != NULL) {
grpc_subchannel_call_process_op(exec_ctx, call, op);
- GPR_TIMER_END("cc_start_transport_stream_op", 0);
- return;
+ goto done;
}
/* if this is a cancellation, then we can raise our cancelled flag */
if (op->cancel_error != GRPC_ERROR_NONE) {
@@ -916,8 +914,7 @@ retry:
}
grpc_transport_stream_op_finish_with_failure(
exec_ctx, op, GRPC_ERROR_REF(op->cancel_error));
- GPR_TIMER_END("cc_start_transport_stream_op", 0);
- return;
+ goto done;
}
}
/* if we don't have a subchannel, try to get one */
@@ -961,6 +958,7 @@ retry:
}
/* nothing to be done but wait */
add_waiting_locked(calld, op);
+done:
GRPC_CALL_STACK_UNREF(exec_ctx, calld->owning_call,
"start_transport_stream_op");
GPR_TIMER_END("cc_start_transport_stream_op", 0);
From c5de83531ee88919da57cc37dbc8a2725c7b94ca Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 14:08:05 -0800
Subject: [PATCH 41/95] Fix leaks
---
src/core/ext/client_channel/client_channel.c | 26 ++++++++++----------
src/core/lib/transport/connectivity_state.c | 15 ++++++-----
2 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index e62fdf3adb5..907d81866dc 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -226,19 +226,19 @@ static void on_lb_policy_state_changed_locked(grpc_exec_ctx *exec_ctx,
void *arg, grpc_error *error) {
lb_policy_connectivity_watcher *w = arg;
grpc_connectivity_state publish_state = w->state;
- /* check if the notification is for a stale policy */
- if (w->lb_policy != w->chand->lb_policy) return;
-
- if (publish_state == GRPC_CHANNEL_SHUTDOWN && w->chand->resolver != NULL) {
- publish_state = GRPC_CHANNEL_TRANSIENT_FAILURE;
- grpc_resolver_channel_saw_error(exec_ctx, w->chand->resolver);
- GRPC_LB_POLICY_UNREF(exec_ctx, w->chand->lb_policy, "channel");
- w->chand->lb_policy = NULL;
- }
- set_channel_connectivity_state_locked(exec_ctx, w->chand, publish_state,
- GRPC_ERROR_REF(error), "lb_changed");
- if (w->state != GRPC_CHANNEL_SHUTDOWN) {
- watch_lb_policy(exec_ctx, w->chand, w->lb_policy, w->state);
+ /* check if the notification is for the latest policy */
+ if (w->lb_policy == w->chand->lb_policy) {
+ if (publish_state == GRPC_CHANNEL_SHUTDOWN && w->chand->resolver != NULL) {
+ publish_state = GRPC_CHANNEL_TRANSIENT_FAILURE;
+ grpc_resolver_channel_saw_error(exec_ctx, w->chand->resolver);
+ GRPC_LB_POLICY_UNREF(exec_ctx, w->chand->lb_policy, "channel");
+ w->chand->lb_policy = NULL;
+ }
+ set_channel_connectivity_state_locked(exec_ctx, w->chand, publish_state,
+ GRPC_ERROR_REF(error), "lb_changed");
+ if (w->state != GRPC_CHANNEL_SHUTDOWN) {
+ watch_lb_policy(exec_ctx, w->chand, w->lb_policy, w->state);
+ }
}
GRPC_CHANNEL_STACK_UNREF(exec_ctx, w->chand->owning_stack, "watch_lb_policy");
diff --git a/src/core/lib/transport/connectivity_state.c b/src/core/lib/transport/connectivity_state.c
index e884567240d..afe1f6164d7 100644
--- a/src/core/lib/transport/connectivity_state.c
+++ b/src/core/lib/transport/connectivity_state.c
@@ -102,8 +102,9 @@ grpc_connectivity_state grpc_connectivity_state_check(
grpc_connectivity_state grpc_connectivity_state_get(
grpc_connectivity_state_tracker *tracker, grpc_error **error) {
- grpc_connectivity_state cur =(grpc_connectivity_state)
- gpr_atm_no_barrier_load(&tracker->current_state_atm);
+ grpc_connectivity_state cur =
+ (grpc_connectivity_state)gpr_atm_no_barrier_load(
+ &tracker->current_state_atm);
if (grpc_connectivity_state_trace) {
gpr_log(GPR_DEBUG, "CONWATCH: %p %s: get %s", tracker, tracker->name,
grpc_connectivity_state_name(cur));
@@ -122,8 +123,9 @@ bool grpc_connectivity_state_has_watchers(
bool grpc_connectivity_state_notify_on_state_change(
grpc_exec_ctx *exec_ctx, grpc_connectivity_state_tracker *tracker,
grpc_connectivity_state *current, grpc_closure *notify) {
- grpc_connectivity_state cur =(grpc_connectivity_state)
- gpr_atm_no_barrier_load(&tracker->current_state_atm);
+ grpc_connectivity_state cur =
+ (grpc_connectivity_state)gpr_atm_no_barrier_load(
+ &tracker->current_state_atm);
if (grpc_connectivity_state_trace) {
if (current == NULL) {
gpr_log(GPR_DEBUG, "CONWATCH: %p %s: unsubscribe notify=%p", tracker,
@@ -173,8 +175,9 @@ void grpc_connectivity_state_set(grpc_exec_ctx *exec_ctx,
grpc_connectivity_state_tracker *tracker,
grpc_connectivity_state state,
grpc_error *error, const char *reason) {
- grpc_connectivity_state cur =(grpc_connectivity_state)
- gpr_atm_no_barrier_load(&tracker->current_state_atm);
+ grpc_connectivity_state cur =
+ (grpc_connectivity_state)gpr_atm_no_barrier_load(
+ &tracker->current_state_atm);
grpc_connectivity_state_watcher *w;
if (grpc_connectivity_state_trace) {
const char *error_string = grpc_error_string(error);
From f1021678e4de35babec7b09e64a3f1ce2750a841 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 9 Feb 2017 21:29:50 -0800
Subject: [PATCH 42/95] Merge fixup
---
src/core/ext/client_channel/client_channel.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/ext/client_channel/client_channel.c b/src/core/ext/client_channel/client_channel.c
index 907d81866dc..43f7e619cfc 100644
--- a/src/core/ext/client_channel/client_channel.c
+++ b/src/core/ext/client_channel/client_channel.c
@@ -584,7 +584,7 @@ static void cc_destroy_channel_elem(grpc_exec_ctx *exec_ctx,
}
grpc_connectivity_state_destroy(exec_ctx, &chand->state_tracker);
grpc_pollset_set_destroy(chand->interested_parties);
- grpc_combiner_destroy(exec_ctx, chand->combiner);
+ GRPC_COMBINER_UNREF(exec_ctx, chand->combiner, "client_channel");
gpr_mu_destroy(&chand->info_mu);
}
From f31f0962740cd263dffe383f6bf1b8a56c4ddbdb Mon Sep 17 00:00:00 2001
From: David Garcia Quintas
Date: Fri, 10 Feb 2017 14:53:58 -0800
Subject: [PATCH 43/95] Use call context to propagare LR costs
---
CMakeLists.txt | 46 +-
Makefile | 65 +-
build.yaml | 19 +-
gRPC-Core.podspec | 1 +
grpc.def | 1 +
grpc.gemspec | 1 +
include/grpc++/impl/codegen/server_context.h | 9 +-
.../grpc++/test/server_context_test_spouse.h | 14 +-
include/grpc/grpc.h | 10 +-
.../grpc/load_reporting.h | 44 +-
package.xml | 1 +
src/core/ext/load_reporting/load_reporting.c | 20 +
src/core/ext/load_reporting/load_reporting.h | 17 +-
.../load_reporting/load_reporting_filter.c | 18 +-
src/core/lib/channel/context.h | 3 +
src/core/lib/transport/static_metadata.c | 763 +++++++++---------
src/core/lib/transport/static_metadata.h | 221 +++--
src/cpp/server/server_context.cc | 16 +
src/ruby/ext/grpc/rb_grpc_imports.generated.c | 2 +
src/ruby/ext/grpc/rb_grpc_imports.generated.h | 3 +
test/core/end2end/fuzzers/hpack.dictionary | 2 -
test/core/end2end/tests/load_reporting_hook.c | 29 +-
.../core/surface/public_headers_must_be_c89.c | 1 +
tools/codegen/core/gen_static_metadata.py | 2 -
tools/doxygen/Doxyfile.core | 1 +
tools/doxygen/Doxyfile.core.internal | 1 +
.../generated/sources_and_headers.json | 35 +-
.../vcxproj/grpc++_test/grpc++_test.vcxproj | 170 ----
.../grpc++_test/grpc++_test.vcxproj.filters | 35 -
vsprojects/vcxproj/grpc/grpc.vcxproj | 1 +
vsprojects/vcxproj/grpc/grpc.vcxproj.filters | 3 +
.../grpc_test_util/grpc_test_util.vcxproj | 1 +
.../grpc_test_util.vcxproj.filters | 3 +
.../grpc_unsecure/grpc_unsecure.vcxproj | 1 +
.../grpc_unsecure.vcxproj.filters | 3 +
.../server_context_test_spouse_test.vcxproj | 3 -
36 files changed, 663 insertions(+), 902 deletions(-)
rename src/cpp/test/server_context_test_spouse.cc => include/grpc/load_reporting.h (63%)
delete mode 100644 vsprojects/vcxproj/grpc++_test/grpc++_test.vcxproj
delete mode 100644 vsprojects/vcxproj/grpc++_test/grpc++_test.vcxproj.filters
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 51e512c85c4..d232a7cc779 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1086,6 +1086,7 @@ foreach(_hdr
include/grpc/grpc.h
include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h
+ include/grpc/load_reporting.h
include/grpc/slice.h
include/grpc/slice_buffer.h
include/grpc/status.h
@@ -1363,6 +1364,7 @@ foreach(_hdr
include/grpc/grpc.h
include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h
+ include/grpc/load_reporting.h
include/grpc/slice.h
include/grpc/slice_buffer.h
include/grpc/status.h
@@ -1585,6 +1587,7 @@ foreach(_hdr
include/grpc/grpc.h
include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h
+ include/grpc/load_reporting.h
include/grpc/slice.h
include/grpc/slice_buffer.h
include/grpc/status.h
@@ -1906,6 +1909,7 @@ foreach(_hdr
include/grpc/grpc.h
include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h
+ include/grpc/load_reporting.h
include/grpc/slice.h
include/grpc/slice_buffer.h
include/grpc/status.h
@@ -2558,6 +2562,7 @@ foreach(_hdr
include/grpc/grpc.h
include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h
+ include/grpc/load_reporting.h
include/grpc/slice.h
include/grpc/slice_buffer.h
include/grpc/status.h
@@ -2699,46 +2704,6 @@ endif()
if (gRPC_BUILD_TESTS)
-add_library(grpc++_test
- src/cpp/test/server_context_test_spouse.cc
-)
-
-if(WIN32 AND MSVC)
- set_target_properties(grpc++_test PROPERTIES COMPILE_PDB_NAME "grpc++_test"
- COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
- )
- if (gRPC_INSTALL)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc++_test.pdb
- DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL
- )
- endif()
-endif()
-
-
-target_include_directories(grpc++_test
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${BORINGSSL_ROOT_DIR}/include
- PRIVATE ${PROTOBUF_ROOT_DIR}/src
- PRIVATE ${ZLIB_INCLUDE_DIR}
- PRIVATE ${BENCHMARK}/include
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
- PRIVATE third_party/googletest/include
- PRIVATE third_party/googletest
- PRIVATE ${_gRPC_PROTO_GENS_DIR}
-)
-
-target_link_libraries(grpc++_test
- ${_gRPC_PROTOBUF_LIBRARIES}
- ${_gRPC_ALLTARGETS_LIBRARIES}
- grpc++
-)
-
-
-endif (gRPC_BUILD_TESTS)
-if (gRPC_BUILD_TESTS)
-
add_library(grpc++_test_config
test/cpp/util/test_config_cc.cc
)
@@ -9330,7 +9295,6 @@ target_link_libraries(server_context_test_spouse_test
${_gRPC_PROTOBUF_LIBRARIES}
${_gRPC_ALLTARGETS_LIBRARIES}
grpc_test_util
- grpc++_test
grpc++
grpc
gpr_test_util
diff --git a/Makefile b/Makefile
index 125512307c2..4f0797dab69 100644
--- a/Makefile
+++ b/Makefile
@@ -1257,9 +1257,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)/libhttp2_client_main.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_chacha_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_spake25519_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_ecdh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_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_gcm_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_obj_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
+privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libhttp2_client_main.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_chacha_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_spake25519_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_ecdh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_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_gcm_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_obj_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)/libhttp2_client_main.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
+privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libhttp2_client_main.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
@@ -2882,6 +2882,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \
include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \
+ include/grpc/load_reporting.h \
include/grpc/slice.h \
include/grpc/slice_buffer.h \
include/grpc/status.h \
@@ -3163,6 +3164,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \
include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \
+ include/grpc/load_reporting.h \
include/grpc/slice.h \
include/grpc/slice_buffer.h \
include/grpc/status.h \
@@ -3388,6 +3390,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \
include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \
+ include/grpc/load_reporting.h \
include/grpc/slice.h \
include/grpc/slice_buffer.h \
include/grpc/status.h \
@@ -3690,6 +3693,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \
include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \
+ include/grpc/load_reporting.h \
include/grpc/slice.h \
include/grpc/slice_buffer.h \
include/grpc/status.h \
@@ -4340,6 +4344,7 @@ PUBLIC_HEADERS_CXX += \
include/grpc/grpc.h \
include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \
+ include/grpc/load_reporting.h \
include/grpc/slice.h \
include/grpc/slice_buffer.h \
include/grpc/status.h \
@@ -4533,55 +4538,6 @@ $(OBJDIR)/$(CONFIG)/src/cpp/ext/proto_server_reflection.o: $(GENDIR)/src/proto/g
$(OBJDIR)/$(CONFIG)/src/cpp/ext/proto_server_reflection_plugin.o: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc
-LIBGRPC++_TEST_SRC = \
- src/cpp/test/server_context_test_spouse.cc \
-
-PUBLIC_HEADERS_CXX += \
-
-LIBGRPC++_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_TEST_SRC))))
-
-
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure libraries if you don't have OpenSSL.
-
-$(LIBDIR)/$(CONFIG)/libgrpc++_test.a: openssl_dep_error
-
-
-else
-
-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)/libgrpc++_test.a: protobuf_dep_error
-
-
-else
-
-$(LIBDIR)/$(CONFIG)/libgrpc++_test.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_TEST_OBJS)
- $(E) "[AR] Creating $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc++_test.a
- $(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBGRPC++_TEST_OBJS)
-ifeq ($(SYSTEM),Darwin)
- $(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc++_test.a
-endif
-
-
-
-
-endif
-
-endif
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(LIBGRPC++_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
LIBGRPC++_TEST_CONFIG_SRC = \
test/cpp/util/test_config_cc.cc \
@@ -14476,16 +14432,16 @@ $(BINDIR)/$(CONFIG)/server_context_test_spouse_test: protobuf_dep_error
else
-$(BINDIR)/$(CONFIG)/server_context_test_spouse_test: $(PROTOBUF_DEP) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+$(BINDIR)/$(CONFIG)/server_context_test_spouse_test: $(PROTOBUF_DEP) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(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) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.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)/server_context_test_spouse_test
+ $(Q) $(LDXX) $(LDFLAGS) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(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)/server_context_test_spouse_test
endif
endif
-$(OBJDIR)/$(CONFIG)/test/cpp/test/server_context_test_spouse_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
+$(OBJDIR)/$(CONFIG)/test/cpp/test/server_context_test_spouse_test.o: $(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_server_context_test_spouse_test: $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS:.o=.dep)
@@ -17798,7 +17754,6 @@ src/cpp/common/secure_create_auth_context.cc: $(OPENSSL_DEP)
src/cpp/ext/proto_server_reflection.cc: $(OPENSSL_DEP)
src/cpp/ext/proto_server_reflection_plugin.cc: $(OPENSSL_DEP)
src/cpp/server/secure_server_credentials.cc: $(OPENSSL_DEP)
-src/cpp/test/server_context_test_spouse.cc: $(OPENSSL_DEP)
src/csharp/ext/grpc_csharp_ext.c: $(OPENSSL_DEP)
test/core/bad_client/bad_client.c: $(OPENSSL_DEP)
test/core/bad_ssl/server_common.c: $(OPENSSL_DEP)
diff --git a/build.yaml b/build.yaml
index 62321fafc26..750bb696d30 100644
--- a/build.yaml
+++ b/build.yaml
@@ -165,6 +165,7 @@ filegroups:
- include/grpc/grpc.h
- include/grpc/grpc_posix.h
- include/grpc/grpc_security_constants.h
+ - include/grpc/load_reporting.h
- include/grpc/slice.h
- include/grpc/slice_buffer.h
- include/grpc/status.h
@@ -894,6 +895,12 @@ filegroups:
language: c++
src:
- src/proto/grpc/reflection/v1alpha/reflection.proto
+- name: grpc++_test
+ language: c++
+ public_headers:
+ - include/grpc++/test/server_context_test_spouse.h
+ deps:
+ - grpc++
- name: thrift_util
language: c++
public_headers:
@@ -1140,15 +1147,6 @@ libs:
- grpc++
filegroups:
- grpc++_reflection_proto
-- name: grpc++_test
- build: private
- language: c++
- headers:
- - include/grpc++/test/server_context_test_spouse.h
- src:
- - src/cpp/test/server_context_test_spouse.cc
- deps:
- - grpc++
- name: grpc++_test_config
build: private
language: c++
@@ -3663,11 +3661,12 @@ targets:
- test/cpp/test/server_context_test_spouse_test.cc
deps:
- grpc_test_util
- - grpc++_test
- grpc++
- grpc
- gpr_test_util
- gpr
+ uses:
+ - grpc++_test
- name: server_crash_test
gtest: true
cpu_cost: 0.1
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 07b3b2bad53..384ef094f19 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -162,6 +162,7 @@ Pod::Spec.new do |s|
'include/grpc/grpc.h',
'include/grpc/grpc_posix.h',
'include/grpc/grpc_security_constants.h',
+ 'include/grpc/load_reporting.h',
'include/grpc/slice.h',
'include/grpc/slice_buffer.h',
'include/grpc/status.h',
diff --git a/grpc.def b/grpc.def
index 5ef59ab9561..e387c8b7125 100644
--- a/grpc.def
+++ b/grpc.def
@@ -69,6 +69,7 @@ EXPORTS
grpc_channel_create_registered_call
grpc_call_start_batch
grpc_call_get_peer
+ grpc_call_set_load_reporting_cost_context
grpc_census_call_set_context
grpc_census_call_get_context
grpc_channel_get_target
diff --git a/grpc.gemspec b/grpc.gemspec
index 335021fdc83..82c9d680801 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -143,6 +143,7 @@ Gem::Specification.new do |s|
s.files += %w( include/grpc/grpc.h )
s.files += %w( include/grpc/grpc_posix.h )
s.files += %w( include/grpc/grpc_security_constants.h )
+ s.files += %w( include/grpc/load_reporting.h )
s.files += %w( include/grpc/slice.h )
s.files += %w( include/grpc/slice_buffer.h )
s.files += %w( include/grpc/status.h )
diff --git a/include/grpc++/impl/codegen/server_context.h b/include/grpc++/impl/codegen/server_context.h
index 8c7fe0809ea..43bbff6ce9c 100644
--- a/include/grpc++/impl/codegen/server_context.h
+++ b/include/grpc++/impl/codegen/server_context.h
@@ -36,6 +36,10 @@
#include
\n" % txt
+ index_html += "%s
\n" % cgi.escape(txt)
def collect_latency(bm_name, args):
"""generate latency profiles"""
From 6955c5e8d2c881169dfa4ffd80a38182d6e2e14e Mon Sep 17 00:00:00 2001
From: yang-g
Date: Mon, 13 Feb 2017 15:49:27 -0800
Subject: [PATCH 57/95] Remove code from network_status_tracker.c Pull the hash
function to useful.h
---
include/grpc/support/useful.h | 3 +
src/core/lib/iomgr/network_status_tracker.c | 87 ++-----------------
src/core/lib/iomgr/timer_generic.c | 10 +--
src/core/lib/support/cpu_posix.c | 9 +-
.../end2end/tests/network_status_change.c | 5 +-
5 files changed, 16 insertions(+), 98 deletions(-)
diff --git a/include/grpc/support/useful.h b/include/grpc/support/useful.h
index 003e096cf9a..9d8314e4bef 100644
--- a/include/grpc/support/useful.h
+++ b/include/grpc/support/useful.h
@@ -74,4 +74,7 @@
#define GPR_ICMP(a, b) ((a) < (b) ? -1 : ((a) > (b) ? 1 : 0))
+#define GPR_HASH_POINTER(x, range) \
+ ((((size_t)x) >> 4) ^ (((size_t)x) >> 9) ^ (((size_t)x) >> 14)) % (range)
+
#endif /* GRPC_SUPPORT_USEFUL_H */
diff --git a/src/core/lib/iomgr/network_status_tracker.c b/src/core/lib/iomgr/network_status_tracker.c
index 1601a390028..4104bf927a1 100644
--- a/src/core/lib/iomgr/network_status_tracker.c
+++ b/src/core/lib/iomgr/network_status_tracker.c
@@ -31,95 +31,18 @@
*
*/
-#include
-#include
#include "src/core/lib/iomgr/endpoint.h"
-typedef struct endpoint_ll_node {
- grpc_endpoint *ep;
- struct endpoint_ll_node *next;
-} endpoint_ll_node;
-
-static endpoint_ll_node *head = NULL;
-static gpr_mu g_endpoint_mutex;
-
-void grpc_network_status_shutdown(void) {
- if (head != NULL) {
- gpr_log(GPR_ERROR,
- "Memory leaked as not all network endpoints were shut down");
- }
- gpr_mu_destroy(&g_endpoint_mutex);
-}
+void grpc_network_status_shutdown(void) {}
void grpc_network_status_init(void) {
- gpr_mu_init(&g_endpoint_mutex);
// TODO(makarandd): Install callback with OS to monitor network status.
}
-void grpc_destroy_network_status_monitor() {
- for (endpoint_ll_node *curr = head; curr != NULL;) {
- endpoint_ll_node *next = curr->next;
- gpr_free(curr);
- curr = next;
- }
- gpr_mu_destroy(&g_endpoint_mutex);
-}
-
-void grpc_network_status_register_endpoint(grpc_endpoint *ep) {
- gpr_mu_lock(&g_endpoint_mutex);
- if (head == NULL) {
- head = (endpoint_ll_node *)gpr_malloc(sizeof(endpoint_ll_node));
- head->ep = ep;
- head->next = NULL;
- } else {
- endpoint_ll_node *prev_head = head;
- head = (endpoint_ll_node *)gpr_malloc(sizeof(endpoint_ll_node));
- head->ep = ep;
- head->next = prev_head;
- }
- gpr_mu_unlock(&g_endpoint_mutex);
-}
+void grpc_destroy_network_status_monitor() {}
-void grpc_network_status_unregister_endpoint(grpc_endpoint *ep) {
- gpr_mu_lock(&g_endpoint_mutex);
- GPR_ASSERT(head);
- bool found = false;
- endpoint_ll_node *prev = head;
- // if we're unregistering the head, just move head to the next
- if (ep == head->ep) {
- head = head->next;
- gpr_free(prev);
- found = true;
- } else {
- for (endpoint_ll_node *curr = head->next; curr != NULL; curr = curr->next) {
- if (ep == curr->ep) {
- prev->next = curr->next;
- gpr_free(curr);
- found = true;
- break;
- }
- prev = curr;
- }
- }
- gpr_mu_unlock(&g_endpoint_mutex);
- GPR_ASSERT(found);
-}
+void grpc_network_status_register_endpoint(grpc_endpoint *ep) { (void)ep; }
-// Walk the linked-list from head and execute shutdown. It is possible that
-// other threads might be in the process of shutdown as well, but that has
-// no side effect since endpoint shutdown is idempotent.
-void grpc_network_status_shutdown_all_endpoints() {
- gpr_mu_lock(&g_endpoint_mutex);
- if (head == NULL) {
- gpr_mu_unlock(&g_endpoint_mutex);
- return;
- }
- grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+void grpc_network_status_unregister_endpoint(grpc_endpoint *ep) { (void)ep; }
- for (endpoint_ll_node *curr = head; curr != NULL; curr = curr->next) {
- curr->ep->vtable->shutdown(&exec_ctx, curr->ep,
- GRPC_ERROR_CREATE("Network unavailable"));
- }
- gpr_mu_unlock(&g_endpoint_mutex);
- grpc_exec_ctx_finish(&exec_ctx);
-}
+void grpc_network_status_shutdown_all_endpoints() {}
diff --git a/src/core/lib/iomgr/timer_generic.c b/src/core/lib/iomgr/timer_generic.c
index 40c83514724..8a5617e7c13 100644
--- a/src/core/lib/iomgr/timer_generic.c
+++ b/src/core/lib/iomgr/timer_generic.c
@@ -121,12 +121,6 @@ void grpc_timer_list_shutdown(grpc_exec_ctx *exec_ctx) {
g_initialized = false;
}
-/* This is a cheap, but good enough, pointer hash for sharding the tasks: */
-static size_t shard_idx(const grpc_timer *info) {
- size_t x = (size_t)info;
- return ((x >> 4) ^ (x >> 9) ^ (x >> 14)) & (NUM_SHARDS - 1);
-}
-
static double ts_to_dbl(gpr_timespec ts) {
return (double)ts.tv_sec + 1e-9 * ts.tv_nsec;
}
@@ -181,7 +175,7 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
gpr_timespec deadline, grpc_closure *closure,
gpr_timespec now) {
int is_first_timer = 0;
- shard_type *shard = &g_shards[shard_idx(timer)];
+ shard_type *shard = &g_shards[GPR_HASH_POINTER(timer, NUM_SHARDS)];
GPR_ASSERT(deadline.clock_type == g_clock_type);
GPR_ASSERT(now.clock_type == g_clock_type);
timer->closure = closure;
@@ -247,7 +241,7 @@ void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) {
return;
}
- shard_type *shard = &g_shards[shard_idx(timer)];
+ shard_type *shard = &g_shards[GPR_HASH_POINTER(timer, NUM_SHARDS)];
gpr_mu_lock(&shard->mu);
if (!timer->triggered) {
grpc_closure_sched(exec_ctx, timer->closure, GRPC_ERROR_CANCELLED);
diff --git a/src/core/lib/support/cpu_posix.c b/src/core/lib/support/cpu_posix.c
index 667bde7cad4..245f12f06d7 100644
--- a/src/core/lib/support/cpu_posix.c
+++ b/src/core/lib/support/cpu_posix.c
@@ -41,6 +41,7 @@
#include
#include
+#include
static __thread char magic_thread_local;
@@ -60,18 +61,12 @@ unsigned gpr_cpu_num_cores(void) {
return (unsigned)ncpus;
}
-/* This is a cheap, but good enough, pointer hash for sharding things: */
-static size_t shard_ptr(const void *info) {
- size_t x = (size_t)info;
- return ((x >> 4) ^ (x >> 9) ^ (x >> 14)) % gpr_cpu_num_cores();
-}
-
unsigned gpr_cpu_current_cpu(void) {
/* NOTE: there's no way I know to return the actual cpu index portably...
most code that's using this is using it to shard across work queues though,
so here we use thread identity instead to achieve a similar though not
identical effect */
- return (unsigned)shard_ptr(&magic_thread_local);
+ return (unsigned)GPR_HASH_POINTER(&magic_thread_local, gpr_cpu_num_cores());
}
#endif /* GPR_CPU_POSIX */
diff --git a/test/core/end2end/tests/network_status_change.c b/test/core/end2end/tests/network_status_change.c
index 9cef02b2b3b..7540ce93a1b 100644
--- a/test/core/end2end/tests/network_status_change.c
+++ b/test/core/end2end/tests/network_status_change.c
@@ -212,8 +212,11 @@ static void test_invoke_network_status_change(grpc_end2end_test_config config) {
CQ_EXPECT_COMPLETION(cqv, tag(1), 1);
cq_verify(cqv);
+ // TODO(makdharma) Update this when the shutdown_all_endpoints is implemented.
// Expected behavior of a RPC when network is lost.
- GPR_ASSERT(status == GRPC_STATUS_UNAVAILABLE);
+ // GPR_ASSERT(status == GRPC_STATUS_UNAVAILABLE);
+ GPR_ASSERT(status == GRPC_STATUS_OK);
+
GPR_ASSERT(0 == grpc_slice_str_cmp(call_details.method, "/foo"));
validate_host_override_string("foo.test.google.fr:1234", call_details.host,
config);
From 6da1e85255b921b88f0ff9a21edcbbd739c6044a Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 16 Feb 2017 10:34:06 -0800
Subject: [PATCH 58/95] Contain the links for the pending handshake managers
inside handshake_manager
---
.../transport/chttp2/server/chttp2_server.c | 57 +++----------------
src/core/lib/channel/handshaker.c | 37 ++++++++++++
src/core/lib/channel/handshaker.h | 16 ++++++
3 files changed, 61 insertions(+), 49 deletions(-)
diff --git a/src/core/ext/transport/chttp2/server/chttp2_server.c b/src/core/ext/transport/chttp2/server/chttp2_server.c
index ae2c3838ed9..0fc180d52f1 100644
--- a/src/core/ext/transport/chttp2/server/chttp2_server.c
+++ b/src/core/ext/transport/chttp2/server/chttp2_server.c
@@ -55,11 +55,6 @@
#include "src/core/lib/surface/api_trace.h"
#include "src/core/lib/surface/server.h"
-typedef struct pending_handshake_manager_node {
- grpc_handshake_manager *handshake_mgr;
- struct pending_handshake_manager_node *next;
-} pending_handshake_manager_node;
-
typedef struct {
grpc_server *server;
grpc_tcp_server *tcp_server;
@@ -68,7 +63,7 @@ typedef struct {
bool shutdown;
grpc_closure tcp_server_shutdown_complete;
grpc_closure *server_destroy_listener_done;
- pending_handshake_manager_node *pending_handshake_mgrs;
+ grpc_handshake_manager *pending_handshake_mgrs;
} server_state;
typedef struct {
@@ -78,44 +73,6 @@ typedef struct {
grpc_handshake_manager *handshake_mgr;
} server_connection_state;
-static void pending_handshake_manager_add_locked(
- server_state *state, grpc_handshake_manager *handshake_mgr) {
- pending_handshake_manager_node *node = gpr_malloc(sizeof(*node));
- node->handshake_mgr = handshake_mgr;
- node->next = state->pending_handshake_mgrs;
- state->pending_handshake_mgrs = node;
-}
-
-static void pending_handshake_manager_remove_locked(
- server_state *state, grpc_handshake_manager *handshake_mgr) {
- pending_handshake_manager_node **prev_node = &state->pending_handshake_mgrs;
- for (pending_handshake_manager_node *node = state->pending_handshake_mgrs;
- node != NULL; node = node->next) {
- if (node->handshake_mgr == handshake_mgr) {
- *prev_node = node->next;
- gpr_free(node);
- break;
- }
- prev_node = &node->next;
- }
-}
-
-static void pending_handshake_manager_shutdown_locked(grpc_exec_ctx *exec_ctx,
- server_state *state,
- grpc_error *why) {
- pending_handshake_manager_node *prev_node = NULL;
- for (pending_handshake_manager_node *node = state->pending_handshake_mgrs;
- node != NULL; node = node->next) {
- grpc_handshake_manager_shutdown(exec_ctx, node->handshake_mgr,
- GRPC_ERROR_REF(why));
- gpr_free(prev_node);
- prev_node = node;
- }
- gpr_free(prev_node);
- state->pending_handshake_mgrs = NULL;
- GRPC_ERROR_UNREF(why);
-}
-
static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
grpc_error *error) {
grpc_handshaker_args *args = arg;
@@ -153,8 +110,9 @@ static void on_handshake_done(grpc_exec_ctx *exec_ctx, void *arg,
grpc_channel_args_destroy(exec_ctx, args->args);
}
}
- pending_handshake_manager_remove_locked(connection_state->server_state,
- connection_state->handshake_mgr);
+ grpc_handshake_manager_pending_list_remove(
+ &connection_state->server_state->pending_handshake_mgrs,
+ connection_state->handshake_mgr);
gpr_mu_unlock(&connection_state->server_state->mu);
grpc_handshake_manager_destroy(exec_ctx, connection_state->handshake_mgr);
grpc_tcp_server_unref(exec_ctx, connection_state->server_state->tcp_server);
@@ -174,7 +132,8 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_endpoint *tcp,
return;
}
grpc_handshake_manager *handshake_mgr = grpc_handshake_manager_create();
- pending_handshake_manager_add_locked(state, handshake_mgr);
+ grpc_handshake_manager_pending_list_add(&state->pending_handshake_mgrs,
+ handshake_mgr);
gpr_mu_unlock(&state->mu);
grpc_tcp_server_ref(state->tcp_server);
server_connection_state *connection_state =
@@ -213,8 +172,8 @@ static void tcp_server_shutdown_complete(grpc_exec_ctx *exec_ctx, void *arg,
gpr_mu_lock(&state->mu);
grpc_closure *destroy_done = state->server_destroy_listener_done;
GPR_ASSERT(state->shutdown);
- pending_handshake_manager_shutdown_locked(exec_ctx, state,
- GRPC_ERROR_REF(error));
+ grpc_handshake_manager_pending_list_shutdown_all(
+ exec_ctx, state->pending_handshake_mgrs, GRPC_ERROR_REF(error));
gpr_mu_unlock(&state->mu);
// Flush queued work before destroying handshaker factory, since that
// may do a synchronous unref.
diff --git a/src/core/lib/channel/handshaker.c b/src/core/lib/channel/handshaker.c
index 5bed2d041d8..82c361c7ef6 100644
--- a/src/core/lib/channel/handshaker.c
+++ b/src/core/lib/channel/handshaker.c
@@ -92,6 +92,10 @@ struct grpc_handshake_manager {
void* user_data;
// Handshaker args.
grpc_handshaker_args args;
+ // Links to the previous and next managers in a list of all pending handshakes
+ // Used at server side only.
+ grpc_handshake_manager* prev;
+ grpc_handshake_manager* next;
};
grpc_handshake_manager* grpc_handshake_manager_create() {
@@ -102,6 +106,39 @@ grpc_handshake_manager* grpc_handshake_manager_create() {
return mgr;
}
+void grpc_handshake_manager_pending_list_add(grpc_handshake_manager** head,
+ grpc_handshake_manager* mgr) {
+ GPR_ASSERT(mgr->prev == NULL);
+ GPR_ASSERT(mgr->next == NULL);
+ mgr->next = *head;
+ if (*head) {
+ (*head)->prev = mgr;
+ }
+ *head = mgr;
+}
+
+void grpc_handshake_manager_pending_list_remove(grpc_handshake_manager** head,
+ grpc_handshake_manager* mgr) {
+ if (mgr->next != NULL) {
+ mgr->next->prev = mgr->prev;
+ }
+ if (mgr->prev != NULL) {
+ mgr->prev->next = mgr->next;
+ } else {
+ GPR_ASSERT(*head == mgr);
+ *head = mgr->next;
+ }
+}
+
+void grpc_handshake_manager_pending_list_shutdown_all(
+ grpc_exec_ctx* exec_ctx, grpc_handshake_manager* head, grpc_error* why) {
+ while (head != NULL) {
+ grpc_handshake_manager_shutdown(exec_ctx, head, GRPC_ERROR_REF(why));
+ head = head->next;
+ }
+ GRPC_ERROR_UNREF(why);
+}
+
static bool is_power_of_2(size_t n) { return (n & (n - 1)) == 0; }
void grpc_handshake_manager_add(grpc_handshake_manager* mgr,
diff --git a/src/core/lib/channel/handshaker.h b/src/core/lib/channel/handshaker.h
index a8e3692add4..5f97c3fc736 100644
--- a/src/core/lib/channel/handshaker.h
+++ b/src/core/lib/channel/handshaker.h
@@ -163,4 +163,20 @@ void grpc_handshake_manager_do_handshake(
gpr_timespec deadline, grpc_tcp_server_acceptor* acceptor,
grpc_iomgr_cb_func on_handshake_done, void* user_data);
+/// Add \a mgr to the server side list of all pending handshake managers, the
+/// list starts with \a *head.
+// Not thread-safe. Caller needs to synchronize.
+void grpc_handshake_manager_pending_list_add(grpc_handshake_manager** head,
+ grpc_handshake_manager* mgr);
+
+/// Remove \a mgr from the server side list of all pending handshake managers.
+// Not thread-safe. Caller needs to synchronize.
+void grpc_handshake_manager_pending_list_remove(grpc_handshake_manager** head,
+ grpc_handshake_manager* mgr);
+
+/// Shutdown all pending handshake managers on the server side.
+// Not thread-safe. Caller needs to synchronize.
+void grpc_handshake_manager_pending_list_shutdown_all(
+ grpc_exec_ctx* exec_ctx, grpc_handshake_manager* head, grpc_error* why);
+
#endif /* GRPC_CORE_LIB_CHANNEL_HANDSHAKER_H */
From 6a5c83d4dea710463c59b972170c7fb0d71fab35 Mon Sep 17 00:00:00 2001
From: Stanley Cheung
Date: Thu, 16 Feb 2017 12:25:32 -0800
Subject: [PATCH 59/95] PHP: add macro for arg info in extension
---
src/php/ext/grpc/call.c | 52 +++++++++++++++-----
src/php/ext/grpc/call_credentials.c | 13 ++++-
src/php/ext/grpc/channel.c | 35 +++++++++++--
src/php/ext/grpc/channel_credentials.c | 31 ++++++++++--
src/php/ext/grpc/server.c | 36 +++++++++++---
src/php/ext/grpc/server_credentials.c | 8 ++-
src/php/ext/grpc/timeval.c | 68 ++++++++++++++++++++++----
7 files changed, 201 insertions(+), 42 deletions(-)
diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index be071903d03..48a374fa08e 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -104,7 +104,8 @@ zval *grpc_parse_metadata_array(grpc_metadata_array
str_key = ecalloc(key_len + 1, sizeof(char));
memcpy(str_key, GRPC_SLICE_START_PTR(elem->key), key_len);
str_val = ecalloc(GRPC_SLICE_LENGTH(elem->value) + 1, sizeof(char));
- memcpy(str_val, GRPC_SLICE_START_PTR(elem->value), GRPC_SLICE_LENGTH(elem->value));
+ memcpy(str_val, GRPC_SLICE_START_PTR(elem->value),
+ GRPC_SLICE_LENGTH(elem->value));
if (php_grpc_zend_hash_find(array_hash, str_key, key_len, (void **)&data)
== SUCCESS) {
if (Z_TYPE_P(data) != IS_ARRAY) {
@@ -115,7 +116,8 @@ zval *grpc_parse_metadata_array(grpc_metadata_array
efree(str_val);
return NULL;
}
- php_grpc_add_next_index_stringl(data, str_val, GRPC_SLICE_LENGTH(elem->value),
+ php_grpc_add_next_index_stringl(data, str_val,
+ GRPC_SLICE_LENGTH(elem->value),
false);
} else {
PHP_GRPC_MAKE_STD_ZVAL(inner_array);
@@ -172,8 +174,10 @@ bool create_metadata_array(zval *array, grpc_metadata_array *metadata) {
if (Z_TYPE_P(value) != IS_STRING) {
return false;
}
- metadata->metadata[metadata->count].key = grpc_slice_from_copied_string(key1);
- metadata->metadata[metadata->count].value = grpc_slice_from_copied_buffer(Z_STRVAL_P(value), Z_STRLEN_P(value));
+ metadata->metadata[metadata->count].key =
+ grpc_slice_from_copied_string(key1);
+ metadata->metadata[metadata->count].value =
+ grpc_slice_from_copied_buffer(Z_STRVAL_P(value), Z_STRLEN_P(value));
metadata->count += 1;
PHP_GRPC_HASH_FOREACH_END()
PHP_GRPC_HASH_FOREACH_END()
@@ -233,7 +237,8 @@ PHP_METHOD(Call, __construct) {
grpc_slice_from_copied_string(host_override) : grpc_empty_slice();
call->wrapped =
grpc_channel_create_call(channel->wrapped, NULL, GRPC_PROPAGATE_DEFAULTS,
- completion_queue, method_slice, host_override != NULL ? &host_slice : NULL,
+ completion_queue, method_slice,
+ host_override != NULL ? &host_slice : NULL,
deadline->wrapped, NULL);
grpc_slice_unref(method_slice);
grpc_slice_unref(host_slice);
@@ -384,8 +389,10 @@ PHP_METHOD(Call, startBatch) {
1 TSRMLS_CC);
goto cleanup;
}
- send_status_details = grpc_slice_from_copied_string(Z_STRVAL_P(inner_value));
- ops[op_num].data.send_status_from_server.status_details = &send_status_details;
+ send_status_details = grpc_slice_from_copied_string(
+ Z_STRVAL_P(inner_value));
+ ops[op_num].data.send_status_from_server.status_details =
+ &send_status_details;
} else {
zend_throw_exception(spl_ce_InvalidArgumentException,
"String status details is required",
@@ -557,12 +564,33 @@ PHP_METHOD(Call, setCredentials) {
RETURN_LONG(error);
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_construct, 0, 0, 3)
+ ZEND_ARG_INFO(0, channel)
+ ZEND_ARG_INFO(0, method)
+ ZEND_ARG_INFO(0, deadline)
+ ZEND_ARG_INFO(0, host_override)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_startBatch, 0, 0, 1)
+ ZEND_ARG_INFO(0, ops)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_getPeer, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_cancel, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_setCredentials, 0, 0, 1)
+ ZEND_ARG_INFO(0, credentials)
+ZEND_END_ARG_INFO()
+
static zend_function_entry call_methods[] = {
- PHP_ME(Call, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(Call, startBatch, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, getPeer, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, cancel, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Call, setCredentials, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, __construct, arginfo_construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ PHP_ME(Call, startBatch, arginfo_startBatch, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, getPeer, arginfo_getPeer, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, cancel, arginfo_cancel, ZEND_ACC_PUBLIC)
+ PHP_ME(Call, setCredentials, arginfo_setCredentials, ZEND_ACC_PUBLIC)
PHP_FE_END
};
diff --git a/src/php/ext/grpc/call_credentials.c b/src/php/ext/grpc/call_credentials.c
index 043817facd1..625c0c62ae3 100644
--- a/src/php/ext/grpc/call_credentials.c
+++ b/src/php/ext/grpc/call_credentials.c
@@ -212,10 +212,19 @@ void plugin_destroy_state(void *ptr) {
efree(state);
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_createComposite, 0, 0, 2)
+ ZEND_ARG_INFO(0, creds1)
+ ZEND_ARG_INFO(0, creds2)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_createFromPlugin, 0, 0, 1)
+ ZEND_ARG_INFO(0, callback)
+ZEND_END_ARG_INFO()
+
static zend_function_entry call_credentials_methods[] = {
- PHP_ME(CallCredentials, createComposite, NULL,
+ PHP_ME(CallCredentials, createComposite, arginfo_createComposite,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(CallCredentials, createFromPlugin, NULL,
+ PHP_ME(CallCredentials, createFromPlugin, arginfo_createFromPlugin,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
PHP_FE_END
};
diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c
index 4ce4f307b04..c26fe4a6fb8 100644
--- a/src/php/ext/grpc/channel.c
+++ b/src/php/ext/grpc/channel.c
@@ -243,12 +243,37 @@ PHP_METHOD(Channel, close) {
}
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_construct, 0, 0, 2)
+ ZEND_ARG_INFO(0, target)
+ ZEND_ARG_INFO(0, args)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_getTarget, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_getConnectivityState, 0, 0, 0)
+ ZEND_ARG_INFO(0, try_to_connect)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_watchConnectivityState, 0, 0, 2)
+ ZEND_ARG_INFO(0, last_state)
+ ZEND_ARG_INFO(0, deadline)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_close, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
static zend_function_entry channel_methods[] = {
- PHP_ME(Channel, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(Channel, getTarget, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Channel, getConnectivityState, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Channel, watchConnectivityState, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Channel, close, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Channel, __construct, arginfo_construct,
+ ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ PHP_ME(Channel, getTarget, arginfo_getTarget,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Channel, getConnectivityState, arginfo_getConnectivityState,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Channel, watchConnectivityState, arginfo_watchConnectivityState,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Channel, close, arginfo_close,
+ ZEND_ACC_PUBLIC)
PHP_FE_END
};
diff --git a/src/php/ext/grpc/channel_credentials.c b/src/php/ext/grpc/channel_credentials.c
index 36a8223b880..2160a548c3e 100644
--- a/src/php/ext/grpc/channel_credentials.c
+++ b/src/php/ext/grpc/channel_credentials.c
@@ -199,16 +199,37 @@ PHP_METHOD(ChannelCredentials, createInsecure) {
RETURN_NULL();
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_setDefaultRootsPem, 0, 0, 1)
+ ZEND_ARG_INFO(0, pem_roots)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_createDefault, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_createSsl, 0, 0, 0)
+ ZEND_ARG_INFO(0, pem_root_certs)
+ ZEND_ARG_INFO(0, pem_private_key)
+ ZEND_ARG_INFO(0, pem_cert_chain)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_createComposite, 0, 0, 2)
+ ZEND_ARG_INFO(0, channel_creds)
+ ZEND_ARG_INFO(0, call_creds)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_createInsecure, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
static zend_function_entry channel_credentials_methods[] = {
- PHP_ME(ChannelCredentials, setDefaultRootsPem, NULL,
+ PHP_ME(ChannelCredentials, setDefaultRootsPem, arginfo_setDefaultRootsPem,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(ChannelCredentials, createDefault, NULL,
+ PHP_ME(ChannelCredentials, createDefault, arginfo_createDefault,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(ChannelCredentials, createSsl, NULL,
+ PHP_ME(ChannelCredentials, createSsl, arginfo_createSsl,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(ChannelCredentials, createComposite, NULL,
+ PHP_ME(ChannelCredentials, createComposite, arginfo_createComposite,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(ChannelCredentials, createInsecure, NULL,
+ PHP_ME(ChannelCredentials, createInsecure, arginfo_createInsecure,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
PHP_FE_END
};
diff --git a/src/php/ext/grpc/server.c b/src/php/ext/grpc/server.c
index 9ac5d2a3c39..87780e997e3 100644
--- a/src/php/ext/grpc/server.c
+++ b/src/php/ext/grpc/server.c
@@ -116,8 +116,6 @@ PHP_METHOD(Server, __construct) {
/**
* Request a call on a server. Creates a single GRPC_SERVER_RPC_NEW event.
- * @param long $tag_new The tag to associate with the new request
- * @param long $tag_cancel The tag to use if the call is cancelled
* @return void
*/
PHP_METHOD(Server, requestCall) {
@@ -239,12 +237,36 @@ PHP_METHOD(Server, start) {
grpc_server_start(server->wrapped);
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_construct, 0, 0, 0)
+ ZEND_ARG_INFO(0, args)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_requestCall, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_addHttp2Port, 0, 0, 1)
+ ZEND_ARG_INFO(0, addr)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_addSecureHttp2Port, 0, 0, 2)
+ ZEND_ARG_INFO(0, addr)
+ ZEND_ARG_INFO(0, server_creds)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_start, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
static zend_function_entry server_methods[] = {
- PHP_ME(Server, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(Server, requestCall, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Server, addHttp2Port, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Server, addSecureHttp2Port, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Server, start, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(Server, __construct, arginfo_construct,
+ ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ PHP_ME(Server, requestCall, arginfo_requestCall,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Server, addHttp2Port, arginfo_addHttp2Port,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Server, addSecureHttp2Port, arginfo_addSecureHttp2Port,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Server, start, arginfo_start,
+ ZEND_ACC_PUBLIC)
PHP_FE_END
};
diff --git a/src/php/ext/grpc/server_credentials.c b/src/php/ext/grpc/server_credentials.c
index 3e39fee246c..ec29dfdc7c2 100644
--- a/src/php/ext/grpc/server_credentials.c
+++ b/src/php/ext/grpc/server_credentials.c
@@ -117,8 +117,14 @@ PHP_METHOD(ServerCredentials, createSsl) {
RETURN_DESTROY_ZVAL(creds_object);
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_createSsl, 0, 0, 3)
+ ZEND_ARG_INFO(0, pem_root_certs)
+ ZEND_ARG_INFO(0, pem_private_key)
+ ZEND_ARG_INFO(0, pem_cert_chain)
+ZEND_END_ARG_INFO()
+
static zend_function_entry server_credentials_methods[] = {
- PHP_ME(ServerCredentials, createSsl, NULL,
+ PHP_ME(ServerCredentials, createSsl, arginfo_createSsl,
ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
PHP_FE_END
};
diff --git a/src/php/ext/grpc/timeval.c b/src/php/ext/grpc/timeval.c
index 7ada915aadd..78c29e385b1 100644
--- a/src/php/ext/grpc/timeval.c
+++ b/src/php/ext/grpc/timeval.c
@@ -245,17 +245,65 @@ PHP_METHOD(Timeval, sleepUntil) {
gpr_sleep_until(this->wrapped);
}
+ZEND_BEGIN_ARG_INFO_EX(arginfo_construct, 0, 0, 1)
+ ZEND_ARG_INFO(0, microseconds)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_add, 0, 0, 1)
+ ZEND_ARG_INFO(0, timeval)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_compare, 0, 0, 2)
+ ZEND_ARG_INFO(0, a_timeval)
+ ZEND_ARG_INFO(0, b_timeval)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_infFuture, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_infPast, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_now, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_similar, 0, 0, 3)
+ ZEND_ARG_INFO(0, a_timeval)
+ ZEND_ARG_INFO(0, b_timeval)
+ ZEND_ARG_INFO(0, threshold_timeval)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_sleepUntil, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_subtract, 0, 0, 1)
+ ZEND_ARG_INFO(0, timeval)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_zero, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
static zend_function_entry timeval_methods[] = {
- PHP_ME(Timeval, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
- PHP_ME(Timeval, add, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Timeval, compare, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, infFuture, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, infPast, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, now, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, similar, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
- PHP_ME(Timeval, sleepUntil, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Timeval, subtract, NULL, ZEND_ACC_PUBLIC)
- PHP_ME(Timeval, zero, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, __construct, arginfo_construct,
+ ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
+ PHP_ME(Timeval, add, arginfo_add,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Timeval, compare, arginfo_compare,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, infFuture, arginfo_infFuture,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, infPast, arginfo_infPast,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, now, arginfo_now,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, similar, arginfo_similar,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+ PHP_ME(Timeval, sleepUntil, arginfo_sleepUntil,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Timeval, subtract, arginfo_subtract,
+ ZEND_ACC_PUBLIC)
+ PHP_ME(Timeval, zero, arginfo_zero,
+ ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
PHP_FE_END
};
From b5359b5fac0513ad60124259c37df64759edb541 Mon Sep 17 00:00:00 2001
From: David Garcia Quintas
Date: Thu, 16 Feb 2017 14:06:34 -0800
Subject: [PATCH 60/95] added assert against combining -p and -n
---
tools/run_tests/run_tests.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 54803de6804..1de20ae1b60 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -1462,6 +1462,8 @@ def _build_and_run(
if not isclose(args.sample_percent, 100.0):
print("Running %d tests out of %d (~%d%%)" %
(sample_size, num_jobs, args.sample_percent))
+ else:
+ assert args.runs_per_test == 1, "Can't do sampling (-p) over multiple runs (-n)."
if infinite_runs:
assert len(massaged_one_run) > 0, 'Must have at least one test for a -n inf run'
runs_sequence = (itertools.repeat(massaged_one_run) if infinite_runs
From 37cbc3f5b30451254c99a85be36364bae74f2c70 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 16 Feb 2017 14:54:55 -0800
Subject: [PATCH 61/95] Use special errors where appropriate in call
cancellation: avoids many allocations in a semi-common case
---
src/core/lib/surface/call.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c
index 3352e427cd2..48a1e586e17 100644
--- a/src/core/lib/surface/call.c
+++ b/src/core/lib/surface/call.c
@@ -481,7 +481,10 @@ void grpc_call_destroy(grpc_call *c) {
c->destroy_called = 1;
cancel = !c->received_final_op;
gpr_mu_unlock(&c->mu);
- if (cancel) grpc_call_cancel(c, NULL);
+ if (cancel) {
+ cancel_with_error(&exec_ctx, c, STATUS_FROM_API_OVERRIDE,
+ GRPC_ERROR_CANCELLED);
+ }
GRPC_CALL_INTERNAL_UNREF(&exec_ctx, c, "destroy");
grpc_exec_ctx_finish(&exec_ctx);
GPR_TIMER_END("grpc_call_destroy", 0);
@@ -490,8 +493,11 @@ void grpc_call_destroy(grpc_call *c) {
grpc_call_error grpc_call_cancel(grpc_call *call, void *reserved) {
GRPC_API_TRACE("grpc_call_cancel(call=%p, reserved=%p)", 2, (call, reserved));
GPR_ASSERT(!reserved);
- return grpc_call_cancel_with_status(call, GRPC_STATUS_CANCELLED, "Cancelled",
- NULL);
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ cancel_with_error(&exec_ctx, call, STATUS_FROM_API_OVERRIDE,
+ GRPC_ERROR_CANCELLED);
+ grpc_exec_ctx_finish(&exec_ctx);
+ return GRPC_CALL_OK;
}
static void execute_op(grpc_exec_ctx *exec_ctx, grpc_call *call,
From f07ed45439110033c8460295a71e4a5b4c42a0a1 Mon Sep 17 00:00:00 2001
From: yang-g
Date: Thu, 16 Feb 2017 23:01:28 -0800
Subject: [PATCH 62/95] Restore the NextMessageSize for streamed calls
---
include/grpc++/impl/codegen/call.h | 15 ++++++++++++++-
include/grpc++/impl/codegen/sync_stream.h | 8 ++++----
src/cpp/server/server_cc.cc | 4 ++--
3 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/include/grpc++/impl/codegen/call.h b/include/grpc++/impl/codegen/call.h
index a17cdf9236f..19a5ca2b2ee 100644
--- a/include/grpc++/impl/codegen/call.h
+++ b/include/grpc++/impl/codegen/call.h
@@ -618,7 +618,17 @@ class Call final {
public:
/* call is owned by the caller */
Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq)
- : call_hook_(call_hook), cq_(cq), call_(call) {}
+ : call_hook_(call_hook),
+ cq_(cq),
+ call_(call),
+ max_receive_message_size_(-1) {}
+
+ Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq,
+ int max_receive_message_size)
+ : call_hook_(call_hook),
+ cq_(cq),
+ call_(call),
+ max_receive_message_size_(max_receive_message_size) {}
void PerformOps(CallOpSetInterface* ops) {
call_hook_->PerformOpsOnCall(ops, this);
@@ -627,10 +637,13 @@ class Call final {
grpc_call* call() const { return call_; }
CompletionQueue* cq() const { return cq_; }
+ int max_receive_message_size() const { return max_receive_message_size_; }
+
private:
CallHook* call_hook_;
CompletionQueue* cq_;
grpc_call* call_;
+ int max_receive_message_size_;
};
} // namespace grpc
diff --git a/include/grpc++/impl/codegen/sync_stream.h b/include/grpc++/impl/codegen/sync_stream.h
index 1f7708bab94..4d9b074e95f 100644
--- a/include/grpc++/impl/codegen/sync_stream.h
+++ b/include/grpc++/impl/codegen/sync_stream.h
@@ -160,7 +160,7 @@ class ClientReader final : public ClientReaderInterface {
}
bool NextMessageSize(uint32_t* sz) override {
- *sz = INT_MAX;
+ *sz = call_.max_receive_message_size();
return true;
}
@@ -310,7 +310,7 @@ class ClientReaderWriter final : public ClientReaderWriterInterface {
}
bool NextMessageSize(uint32_t* sz) override {
- *sz = INT_MAX;
+ *sz = call_.max_receive_message_size();
return true;
}
@@ -382,7 +382,7 @@ class ServerReader final : public ServerReaderInterface {
}
bool NextMessageSize(uint32_t* sz) override {
- *sz = INT_MAX;
+ *sz = call_->max_receive_message_size();
return true;
}
@@ -474,7 +474,7 @@ class ServerReaderWriterBody final {
}
bool NextMessageSize(uint32_t* sz) {
- *sz = INT_MAX;
+ *sz = call_->max_receive_message_size();
return true;
}
diff --git a/src/cpp/server/server_cc.cc b/src/cpp/server/server_cc.cc
index 29898a4209e..5ed9f41d4f4 100644
--- a/src/cpp/server/server_cc.cc
+++ b/src/cpp/server/server_cc.cc
@@ -186,7 +186,7 @@ class Server::SyncRequest final : public CompletionQueueTag {
public:
explicit CallData(Server* server, SyncRequest* mrd)
: cq_(mrd->cq_),
- call_(mrd->call_, server, &cq_),
+ call_(mrd->call_, server, &cq_, server->max_receive_message_size()),
ctx_(mrd->deadline_, mrd->request_metadata_.metadata,
mrd->request_metadata_.count),
has_request_payload_(mrd->has_request_payload_),
@@ -590,7 +590,7 @@ bool ServerInterface::BaseAsyncRequest::FinalizeResult(void** tag,
}
context_->set_call(call_);
context_->cq_ = call_cq_;
- Call call(call_, server_, call_cq_);
+ Call call(call_, server_, call_cq_, server_->max_receive_message_size());
if (*status && call_) {
context_->BeginCompletionOp(&call);
}
From 3e16f4f1fa6b8725b10fac7baed770297ad9ab12 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 06:58:43 -0800
Subject: [PATCH 63/95] Fix test
---
test/core/end2end/tests/filter_call_init_fails.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/core/end2end/tests/filter_call_init_fails.c b/test/core/end2end/tests/filter_call_init_fails.c
index 7e189164b2a..d2d6e82d574 100644
--- a/test/core/end2end/tests/filter_call_init_fails.c
+++ b/test/core/end2end/tests/filter_call_init_fails.c
@@ -205,7 +205,7 @@ static void test_request(grpc_end2end_test_config config) {
static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
- grpc_call_element_args *args) {
+ const grpc_call_element_args *args) {
return grpc_error_set_int(GRPC_ERROR_CREATE("access denied"),
GRPC_ERROR_INT_GRPC_STATUS,
GRPC_STATUS_PERMISSION_DENIED);
From 448191cb9ad4826b7604b40828fdd432dbe77e4f Mon Sep 17 00:00:00 2001
From: David Garcia Quintas
Date: Fri, 17 Feb 2017 09:37:50 -0800
Subject: [PATCH 64/95] Temporarily disable lb policies test
---
Makefile | 2 --
build.yaml | 2 +-
tools/run_tests/generated/tests.json | 22 ----------------------
3 files changed, 1 insertion(+), 25 deletions(-)
diff --git a/Makefile b/Makefile
index 0acf06e946d..9cffe04ddf7 100644
--- a/Makefile
+++ b/Makefile
@@ -1860,8 +1860,6 @@ test_c: buildtests_c
flaky_test_c: buildtests_c
- $(E) "[RUN] Testing lb_policies_test"
- $(Q) $(BINDIR)/$(CONFIG)/lb_policies_test || ( echo test lb_policies_test failed ; exit 1 )
$(E) "[RUN] Testing mlog_test"
$(Q) $(BINDIR)/$(CONFIG)/mlog_test || ( echo test mlog_test failed ; exit 1 )
diff --git a/build.yaml b/build.yaml
index 5782afb62e3..ee4d0cb99f5 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2348,8 +2348,8 @@ targets:
- gpr
- name: lb_policies_test
cpu_cost: 0.1
- flaky: true
build: test
+ run: false
language: c
src:
- test/core/client_channel/lb_policies_test.c
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index a161e8a670e..1ed1af9e6b1 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -1521,28 +1521,6 @@
"windows"
]
},
- {
- "args": [],
- "ci_platforms": [
- "linux",
- "mac",
- "posix",
- "windows"
- ],
- "cpu_cost": 0.1,
- "exclude_configs": [],
- "exclude_iomgrs": [],
- "flaky": true,
- "gtest": false,
- "language": "c",
- "name": "lb_policies_test",
- "platforms": [
- "linux",
- "mac",
- "posix",
- "windows"
- ]
- },
{
"args": [],
"ci_platforms": [
From bbe6bfd6fdb7d59101ab457c4459f98140f71cf1 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 11:50:51 -0800
Subject: [PATCH 65/95] Add BUILD file for test/core/slice
---
test/core/slice/BUILD | 54 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
create mode 100644 test/core/slice/BUILD
diff --git a/test/core/slice/BUILD b/test/core/slice/BUILD
new file mode 100644
index 00000000000..67a47063482
--- /dev/null
+++ b/test/core/slice/BUILD
@@ -0,0 +1,54 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer")
+
+grpc_fuzzer(
+ name = "percent_decode_fuzzer",
+ srcs = ["percent_decode_fuzzer.c"],
+ deps = ["//:gpr", "//:grpc", "//test/core/util:grpc_test_util"],
+ corpus = "response_corpus",
+ copts = ["-std=c99"],
+)
+
+cc_test(
+ name = "percent_encoding_test",
+ srcs = ["percent_encoding_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "slice_buffer_test",
+ srcs = ["slice_string_helpers_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From 92bc4156535116423d1cf3670a3e401f5315142b Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 11:58:30 -0800
Subject: [PATCH 66/95] Add BUILD file for test/core/fling
---
test/core/fling/BUILD | 62 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 62 insertions(+)
create mode 100644 test/core/fling/BUILD
diff --git a/test/core/fling/BUILD b/test/core/fling/BUILD
new file mode 100644
index 00000000000..0b0ebcb2523
--- /dev/null
+++ b/test/core/fling/BUILD
@@ -0,0 +1,62 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer")
+
+cc_binary(
+ name = "client",
+ srcs = ["client.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:ssl_test_data"],
+ testonly = 1,
+ copts = ['-std=c99']
+)
+
+cc_binary(
+ name = "server",
+ srcs = ["server.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:ssl_test_data"],
+ testonly = 1,
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "fling",
+ srcs = ["fling_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:ssl_test_data"],
+ data = [":client", ":server"]
+)
+
+cc_test(
+ name = "fling_stream",
+ srcs = ["fling_stream_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:ssl_test_data"],
+ data = [":client", ":server"]
+)
From 4e0363af9c907139ae5fa5d706d32d97f58bf815 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:01:08 -0800
Subject: [PATCH 67/95] Complete test/core/http/BUILD
---
test/core/http/BUILD | 55 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/test/core/http/BUILD b/test/core/http/BUILD
index 037ede3cd1c..abfa7591798 100644
--- a/test/core/http/BUILD
+++ b/test/core/http/BUILD
@@ -47,3 +47,58 @@ grpc_fuzzer(
copts = ["-std=c99"],
)
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer")
+
+cc_test(
+ name = "httpcli_test",
+ srcs = ["httpcli_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:ssl_test_data"],
+ copts = ['-std=c99'],
+ data = ['test_server.py']
+)
+
+cc_test(
+ name = "httpscli_test",
+ srcs = ["httpscli_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:ssl_test_data"],
+ copts = ['-std=c99'],
+ data = ['test_server.py']
+)
+
+cc_test(
+ name = "parser_test",
+ srcs = ["parser_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:ssl_test_data"],
+ copts = ['-std=c99']
+)
From 6f7b26ffb337413050e85ab0a6c4757b5e6ee594 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:06:43 -0800
Subject: [PATCH 68/95] Complete test/core/transport/chttp2; add
test/core/transport/BUILD
---
test/core/transport/BUILD | 72 ++++++++++++++++++++++++++++++++
test/core/transport/chttp2/BUILD | 55 ++++++++++++++++++++++++
2 files changed, 127 insertions(+)
create mode 100644 test/core/transport/BUILD
diff --git a/test/core/transport/BUILD b/test/core/transport/BUILD
new file mode 100644
index 00000000000..865b0c26ef5
--- /dev/null
+++ b/test/core/transport/BUILD
@@ -0,0 +1,72 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+cc_test(
+ name = "bdp_estimator_test",
+ srcs = ["bdp_estimator_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "connectivity_state_test",
+ srcs = ["connectivity_state_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "metadata_test",
+ srcs = ["metadata_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "pid_controller_test",
+ srcs = ["pid_controller_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "status_conversion_test",
+ srcs = ["status_conversion_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "timeout_encoding_test",
+ srcs = ["timeout_encoding_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
diff --git a/test/core/transport/chttp2/BUILD b/test/core/transport/chttp2/BUILD
index 94b48301386..b507e27efe5 100644
--- a/test/core/transport/chttp2/BUILD
+++ b/test/core/transport/chttp2/BUILD
@@ -38,3 +38,58 @@ grpc_fuzzer(
corpus = "hpack_parser_corpus"
)
+cc_test(
+ name = "alpn_test",
+ srcs = ["alpn_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "bin_decoder_test",
+ srcs = ["bin_decoder_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "bin_encoder_test",
+ srcs = ["bin_encoder_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "hpack_encoder_test",
+ srcs = ["hpack_encoder_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "hpack_parser_test",
+ srcs = ["hpack_parser_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "hpack_table_test",
+ srcs = ["hpack_table_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "stream_map_test",
+ srcs = ["stream_map_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "varint_test",
+ srcs = ["varint_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From 911a5dc5b1e41a839d5bbdf0cfa383d7f3167cb9 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:09:05 -0800
Subject: [PATCH 69/95] Add test/core/tsi/BUILD
---
test/core/tsi/BUILD | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
create mode 100644 test/core/tsi/BUILD
diff --git a/test/core/tsi/BUILD b/test/core/tsi/BUILD
new file mode 100644
index 00000000000..e6cba344eef
--- /dev/null
+++ b/test/core/tsi/BUILD
@@ -0,0 +1,37 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+cc_test(
+ name = "transport_security_test",
+ srcs = ["transport_security_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From 3b78f42ee39e5e8cf295cceeb0f417d630efe932 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:12:46 -0800
Subject: [PATCH 70/95] Add test/core/client_channel/BUILD
---
test/core/client_channel/BUILD | 54 ++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
create mode 100644 test/core/client_channel/BUILD
diff --git a/test/core/client_channel/BUILD b/test/core/client_channel/BUILD
new file mode 100644
index 00000000000..a29e9aca4e6
--- /dev/null
+++ b/test/core/client_channel/BUILD
@@ -0,0 +1,54 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer")
+
+grpc_fuzzer(
+ name = "uri_fuzzer_test",
+ srcs = ["uri_fuzzer_test.c"],
+ deps = ["//:gpr", "//:grpc", "//test/core/util:grpc_test_util"],
+ corpus = "uri_corpus",
+ copts = ["-std=c99"],
+)
+
+cc_test(
+ name = "lb_policies_test",
+ srcs = ["lb_policies_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/end2end:cq_verifier"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "set_initial_connect_string_test",
+ srcs = ["set_initial_connect_string_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From 54fa9244e702c64ccd63f085b784125641168f3e Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:14:45 -0800
Subject: [PATCH 71/95] Add test/core/client_channel/resolvers/BUILD
---
test/core/client_channel/resolvers/BUILD | 51 ++++++++++++++++++++++++
1 file changed, 51 insertions(+)
create mode 100644 test/core/client_channel/resolvers/BUILD
diff --git a/test/core/client_channel/resolvers/BUILD b/test/core/client_channel/resolvers/BUILD
new file mode 100644
index 00000000000..af37072e3a4
--- /dev/null
+++ b/test/core/client_channel/resolvers/BUILD
@@ -0,0 +1,51 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+cc_test(
+ name = "dns_resolver_connectivity_test",
+ srcs = ["dns_resolver_connectivity_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "dns_resolver_test",
+ srcs = ["dns_resolver_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "sockaddr_resolver_test",
+ srcs = ["sockaddr_resolver_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From a646b0e019e48b7cb79d59be8ae904e3891f11e2 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:21:33 -0800
Subject: [PATCH 72/95] Add test/core/iomgr/BUILD
---
test/core/iomgr/BUILD | 180 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 180 insertions(+)
create mode 100644 test/core/iomgr/BUILD
diff --git a/test/core/iomgr/BUILD b/test/core/iomgr/BUILD
new file mode 100644
index 00000000000..08d4a07f413
--- /dev/null
+++ b/test/core/iomgr/BUILD
@@ -0,0 +1,180 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer")
+
+cc_library(
+ name = "endpoint_tests",
+ srcs = ["endpoint_tests.c"],
+ hdrs = ["endpoint_tests.h"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "combiner_test",
+ srcs = ["combiner_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "endpoint_pair_test",
+ srcs = ["endpoint_pair_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", ":endpoint_tests"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "ev_epoll_linux_test",
+ srcs = ["ev_epoll_linux_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "fd_conservation_posix_test",
+ srcs = ["fd_conservation_posix_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "fd_posix_test",
+ srcs = ["fd_posix_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "load_file_test",
+ srcs = ["load_file_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "pollset_set_test",
+ srcs = ["pollset_set_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "resolve_address_posix_test",
+ srcs = ["resolve_address_posix_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "resolve_address_test",
+ srcs = ["resolve_address_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "resource_quota_test",
+ srcs = ["resource_quota_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "sockaddr_utils_test",
+ srcs = ["sockaddr_utils_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "socket_utils_test",
+ srcs = ["socket_utils_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "tcp_client_posix_test",
+ srcs = ["tcp_client_posix_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "tcp_posix_test",
+ srcs = ["tcp_posix_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", ":endpoint_tests"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "tcp_server_posix_test",
+ srcs = ["tcp_server_posix_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "time_averaged_stats_test",
+ srcs = ["time_averaged_stats_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "timer_heap_test",
+ srcs = ["timer_heap_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "timer_list_test",
+ srcs = ["timer_list_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "udp_server_test",
+ srcs = ["udp_server_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "wakeup_fd_cv_test",
+ srcs = ["wakeup_fd_cv_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From 8506219a1555877b2115a19ff89738dd7ece6413 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:28:39 -0800
Subject: [PATCH 73/95] Remove internal api canaries: they have never solved
anything for us
---
CMakeLists.txt | 84 --------
Makefile | 102 ---------
build.yaml | 33 ---
test/core/internal_api_canaries/iomgr.c | 119 -----------
test/core/internal_api_canaries/support.c | 58 -----
test/core/internal_api_canaries/transport.c | 81 -------
.../generated/sources_and_headers.json | 51 -----
vsprojects/buildtests_c.sln | 81 -------
.../internal_api_canary_iomgr_test.vcxproj | 199 ------------------
...rnal_api_canary_iomgr_test.vcxproj.filters | 21 --
.../internal_api_canary_support_test.vcxproj | 199 ------------------
...al_api_canary_support_test.vcxproj.filters | 21 --
...internal_api_canary_transport_test.vcxproj | 199 ------------------
..._api_canary_transport_test.vcxproj.filters | 21 --
14 files changed, 1269 deletions(-)
delete mode 100644 test/core/internal_api_canaries/iomgr.c
delete mode 100644 test/core/internal_api_canaries/support.c
delete mode 100644 test/core/internal_api_canaries/transport.c
delete mode 100644 vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj
delete mode 100644 vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj.filters
delete mode 100644 vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj
delete mode 100644 vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj.filters
delete mode 100644 vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj
delete mode 100644 vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj.filters
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 101f0ad2ef9..00098656a42 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -420,9 +420,6 @@ if(_gRPC_PLATFORM_LINUX)
add_dependencies(buildtests_c httpscli_test)
endif()
add_dependencies(buildtests_c init_test)
-add_dependencies(buildtests_c internal_api_canary_iomgr_test)
-add_dependencies(buildtests_c internal_api_canary_support_test)
-add_dependencies(buildtests_c internal_api_canary_transport_test)
add_dependencies(buildtests_c invalid_call_argument_test)
add_dependencies(buildtests_c json_rewrite)
add_dependencies(buildtests_c json_rewrite_test)
@@ -5945,87 +5942,6 @@ target_link_libraries(init_test
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
-add_executable(internal_api_canary_iomgr_test
- test/core/internal_api_canaries/iomgr.c
-)
-
-
-target_include_directories(internal_api_canary_iomgr_test
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${BORINGSSL_ROOT_DIR}/include
- PRIVATE ${PROTOBUF_ROOT_DIR}/src
- PRIVATE ${BENCHMARK_ROOT_DIR}/include
- PRIVATE ${ZLIB_ROOT_DIR}
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
-)
-
-target_link_libraries(internal_api_canary_iomgr_test
- ${_gRPC_ALLTARGETS_LIBRARIES}
- grpc_test_util
- grpc
- gpr_test_util
- gpr
-)
-
-endif (gRPC_BUILD_TESTS)
-if (gRPC_BUILD_TESTS)
-
-add_executable(internal_api_canary_support_test
- test/core/internal_api_canaries/iomgr.c
-)
-
-
-target_include_directories(internal_api_canary_support_test
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${BORINGSSL_ROOT_DIR}/include
- PRIVATE ${PROTOBUF_ROOT_DIR}/src
- PRIVATE ${BENCHMARK_ROOT_DIR}/include
- PRIVATE ${ZLIB_ROOT_DIR}
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
-)
-
-target_link_libraries(internal_api_canary_support_test
- ${_gRPC_ALLTARGETS_LIBRARIES}
- grpc_test_util
- grpc
- gpr_test_util
- gpr
-)
-
-endif (gRPC_BUILD_TESTS)
-if (gRPC_BUILD_TESTS)
-
-add_executable(internal_api_canary_transport_test
- test/core/internal_api_canaries/iomgr.c
-)
-
-
-target_include_directories(internal_api_canary_transport_test
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
- PRIVATE ${BORINGSSL_ROOT_DIR}/include
- PRIVATE ${PROTOBUF_ROOT_DIR}/src
- PRIVATE ${BENCHMARK_ROOT_DIR}/include
- PRIVATE ${ZLIB_ROOT_DIR}
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
- PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
-)
-
-target_link_libraries(internal_api_canary_transport_test
- ${_gRPC_ALLTARGETS_LIBRARIES}
- grpc_test_util
- grpc
- gpr_test_util
- gpr
-)
-
-endif (gRPC_BUILD_TESTS)
-if (gRPC_BUILD_TESTS)
-
add_executable(invalid_call_argument_test
test/core/end2end/invalid_call_argument_test.c
)
diff --git a/Makefile b/Makefile
index 5dde577cca8..0d76b941d52 100644
--- a/Makefile
+++ b/Makefile
@@ -980,9 +980,6 @@ httpcli_format_request_test: $(BINDIR)/$(CONFIG)/httpcli_format_request_test
httpcli_test: $(BINDIR)/$(CONFIG)/httpcli_test
httpscli_test: $(BINDIR)/$(CONFIG)/httpscli_test
init_test: $(BINDIR)/$(CONFIG)/init_test
-internal_api_canary_iomgr_test: $(BINDIR)/$(CONFIG)/internal_api_canary_iomgr_test
-internal_api_canary_support_test: $(BINDIR)/$(CONFIG)/internal_api_canary_support_test
-internal_api_canary_transport_test: $(BINDIR)/$(CONFIG)/internal_api_canary_transport_test
invalid_call_argument_test: $(BINDIR)/$(CONFIG)/invalid_call_argument_test
json_fuzzer_test: $(BINDIR)/$(CONFIG)/json_fuzzer_test
json_rewrite: $(BINDIR)/$(CONFIG)/json_rewrite
@@ -1334,9 +1331,6 @@ buildtests_c: privatelibs_c \
$(BINDIR)/$(CONFIG)/httpcli_test \
$(BINDIR)/$(CONFIG)/httpscli_test \
$(BINDIR)/$(CONFIG)/init_test \
- $(BINDIR)/$(CONFIG)/internal_api_canary_iomgr_test \
- $(BINDIR)/$(CONFIG)/internal_api_canary_support_test \
- $(BINDIR)/$(CONFIG)/internal_api_canary_transport_test \
$(BINDIR)/$(CONFIG)/invalid_call_argument_test \
$(BINDIR)/$(CONFIG)/json_rewrite \
$(BINDIR)/$(CONFIG)/json_rewrite_test \
@@ -10340,102 +10334,6 @@ endif
endif
-INTERNAL_API_CANARY_IOMGR_TEST_SRC = \
- test/core/internal_api_canaries/iomgr.c \
-
-INTERNAL_API_CANARY_IOMGR_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INTERNAL_API_CANARY_IOMGR_TEST_SRC))))
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL.
-
-$(BINDIR)/$(CONFIG)/internal_api_canary_iomgr_test: openssl_dep_error
-
-else
-
-
-
-$(BINDIR)/$(CONFIG)/internal_api_canary_iomgr_test: $(INTERNAL_API_CANARY_IOMGR_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(INTERNAL_API_CANARY_IOMGR_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/internal_api_canary_iomgr_test
-
-endif
-
-$(OBJDIR)/$(CONFIG)/test/core/internal_api_canaries/iomgr.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
-
-deps_internal_api_canary_iomgr_test: $(INTERNAL_API_CANARY_IOMGR_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(INTERNAL_API_CANARY_IOMGR_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-INTERNAL_API_CANARY_SUPPORT_TEST_SRC = \
- test/core/internal_api_canaries/iomgr.c \
-
-INTERNAL_API_CANARY_SUPPORT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INTERNAL_API_CANARY_SUPPORT_TEST_SRC))))
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL.
-
-$(BINDIR)/$(CONFIG)/internal_api_canary_support_test: openssl_dep_error
-
-else
-
-
-
-$(BINDIR)/$(CONFIG)/internal_api_canary_support_test: $(INTERNAL_API_CANARY_SUPPORT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(INTERNAL_API_CANARY_SUPPORT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/internal_api_canary_support_test
-
-endif
-
-$(OBJDIR)/$(CONFIG)/test/core/internal_api_canaries/iomgr.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
-
-deps_internal_api_canary_support_test: $(INTERNAL_API_CANARY_SUPPORT_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(INTERNAL_API_CANARY_SUPPORT_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
-INTERNAL_API_CANARY_TRANSPORT_TEST_SRC = \
- test/core/internal_api_canaries/iomgr.c \
-
-INTERNAL_API_CANARY_TRANSPORT_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(INTERNAL_API_CANARY_TRANSPORT_TEST_SRC))))
-ifeq ($(NO_SECURE),true)
-
-# You can't build secure targets if you don't have OpenSSL.
-
-$(BINDIR)/$(CONFIG)/internal_api_canary_transport_test: openssl_dep_error
-
-else
-
-
-
-$(BINDIR)/$(CONFIG)/internal_api_canary_transport_test: $(INTERNAL_API_CANARY_TRANSPORT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
- $(E) "[LD] Linking $@"
- $(Q) mkdir -p `dirname $@`
- $(Q) $(LD) $(LDFLAGS) $(INTERNAL_API_CANARY_TRANSPORT_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBS) $(LDLIBS_SECURE) -o $(BINDIR)/$(CONFIG)/internal_api_canary_transport_test
-
-endif
-
-$(OBJDIR)/$(CONFIG)/test/core/internal_api_canaries/iomgr.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
-
-deps_internal_api_canary_transport_test: $(INTERNAL_API_CANARY_TRANSPORT_TEST_OBJS:.o=.dep)
-
-ifneq ($(NO_SECURE),true)
-ifneq ($(NO_DEPS),true)
--include $(INTERNAL_API_CANARY_TRANSPORT_TEST_OBJS:.o=.dep)
-endif
-endif
-
-
INVALID_CALL_ARGUMENT_TEST_SRC = \
test/core/end2end/invalid_call_argument_test.c \
diff --git a/build.yaml b/build.yaml
index 2fbaa2e2262..10943b0750c 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2239,39 +2239,6 @@ targets:
- grpc
- gpr_test_util
- gpr
-- name: internal_api_canary_iomgr_test
- build: test
- run: false
- language: c
- src:
- - test/core/internal_api_canaries/iomgr.c
- deps:
- - grpc_test_util
- - grpc
- - gpr_test_util
- - gpr
-- name: internal_api_canary_support_test
- build: test
- run: false
- language: c
- src:
- - test/core/internal_api_canaries/iomgr.c
- deps:
- - grpc_test_util
- - grpc
- - gpr_test_util
- - gpr
-- name: internal_api_canary_transport_test
- build: test
- run: false
- language: c
- src:
- - test/core/internal_api_canaries/iomgr.c
- deps:
- - grpc_test_util
- - grpc
- - gpr_test_util
- - gpr
- name: invalid_call_argument_test
cpu_cost: 0.1
build: test
diff --git a/test/core/internal_api_canaries/iomgr.c b/test/core/internal_api_canaries/iomgr.c
deleted file mode 100644
index d73d5c175c9..00000000000
--- a/test/core/internal_api_canaries/iomgr.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *
- * 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.
- *
- */
-
-#include "src/core/lib/iomgr/iomgr.h"
-#include "src/core/lib/iomgr/closure.h"
-#include "src/core/lib/iomgr/endpoint.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
-#include "src/core/lib/iomgr/executor.h"
-
-/*******************************************************************************
- * NOTE: If this test fails to compile, then the api changes are likely to cause
- * merge failures downstream. Please pay special attention to reviewing
- * these changes, and solicit help as appropriate when merging downstream.
- *
- * This test is NOT expected to be run directly.
- ******************************************************************************/
-
-static void test_code(void) {
- /* iomgr.h */
- grpc_iomgr_init();
- grpc_iomgr_shutdown(NULL);
-
- /* closure.h */
- grpc_closure closure;
- closure.cb = NULL;
- closure.cb_arg = NULL;
- closure.next_data.scratch = 0;
-
- grpc_closure_list closure_list = GRPC_CLOSURE_LIST_INIT;
- closure_list.head = NULL;
- closure_list.tail = NULL;
-
- grpc_closure_init(&closure, NULL, NULL, grpc_schedule_on_exec_ctx);
-
- grpc_closure_create(NULL, NULL, grpc_schedule_on_exec_ctx);
-
- grpc_closure_list_move(NULL, NULL);
- grpc_closure_list_append(NULL, NULL, GRPC_ERROR_CREATE("Foo"));
- grpc_closure_list_empty(closure_list);
-
- /* exec_ctx.h */
- grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
- grpc_exec_ctx_flush(&exec_ctx);
- grpc_exec_ctx_finish(&exec_ctx);
- grpc_closure_sched(&exec_ctx, &closure, GRPC_ERROR_CREATE("Foo"));
- grpc_closure_list_sched(&exec_ctx, &closure_list);
-
- /* endpoint.h */
- grpc_endpoint endpoint;
- grpc_endpoint_vtable vtable = {grpc_endpoint_read,
- grpc_endpoint_write,
- grpc_endpoint_get_workqueue,
- grpc_endpoint_add_to_pollset,
- grpc_endpoint_add_to_pollset_set,
- grpc_endpoint_shutdown,
- grpc_endpoint_destroy,
- grpc_endpoint_get_resource_user,
- grpc_endpoint_get_peer,
- grpc_endpoint_get_fd};
- endpoint.vtable = &vtable;
-
- grpc_endpoint_read(&exec_ctx, &endpoint, NULL, NULL);
- grpc_endpoint_get_peer(&endpoint);
- grpc_endpoint_write(&exec_ctx, &endpoint, NULL, NULL);
- grpc_endpoint_shutdown(&exec_ctx, &endpoint, GRPC_ERROR_CANCELLED);
- grpc_endpoint_destroy(&exec_ctx, &endpoint);
- grpc_endpoint_add_to_pollset(&exec_ctx, &endpoint, NULL);
- grpc_endpoint_add_to_pollset_set(&exec_ctx, &endpoint, NULL);
-
- /* executor.h */
- grpc_executor_init();
- grpc_executor_shutdown(NULL);
-
- /* pollset.h */
- grpc_pollset_size();
- grpc_pollset_init(NULL, NULL);
- grpc_pollset_shutdown(NULL, NULL, NULL);
- grpc_pollset_reset(NULL);
- grpc_pollset_destroy(NULL);
- GRPC_ERROR_UNREF(grpc_pollset_work(NULL, NULL, NULL,
- gpr_now(GPR_CLOCK_REALTIME),
- gpr_now(GPR_CLOCK_MONOTONIC)));
- GRPC_ERROR_UNREF(grpc_pollset_kick(NULL, NULL));
-}
-
-int main(void) {
- if (false) test_code();
- return 0;
-}
diff --git a/test/core/internal_api_canaries/support.c b/test/core/internal_api_canaries/support.c
deleted file mode 100644
index e992d2a66aa..00000000000
--- a/test/core/internal_api_canaries/support.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *
- * 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.
- *
- */
-
-/*******************************************************************************
- * NOTE: If this test fails to compile, then the api changes are likely to cause
- * merge failures downstream. Please pay special attention to reviewing
- * these changes, and solicit help as appropriate when merging downstream.
- *
- * This test is NOT expected to be run directly.
- ******************************************************************************/
-
-#include "src/core/lib/iomgr/load_file.h"
-#include "src/core/lib/support/env.h"
-#include "src/core/lib/support/tmpfile.h"
-
-static void test_code(void) {
- /* env.h */
- gpr_set_env("abc", gpr_getenv("xyz"));
- /* load_file.h */
- grpc_load_file("abc", 1, NULL);
- /* tmpfile.h */
- fclose(gpr_tmpfile("foo", NULL));
-}
-
-int main(void) {
- if (false) test_code();
- return 0;
-}
diff --git a/test/core/internal_api_canaries/transport.c b/test/core/internal_api_canaries/transport.c
deleted file mode 100644
index 2989f595353..00000000000
--- a/test/core/internal_api_canaries/transport.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *
- * 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.
- *
- */
-
-/*******************************************************************************
- * NOTE: If this test fails to compile, then the api changes are likely to cause
- * merge failures downstream. Please pay special attention to reviewing
- * these changes, and solicit help as appropriate when merging downstream.
- *
- * This test is NOT expected to be run directly.
- ******************************************************************************/
-
-#include "src/core/lib/transport/transport.h"
-#include "src/core/lib/transport/transport_impl.h"
-
-static void test_code(void) {
- /* transport_impl.h */
- grpc_transport transport;
- grpc_transport_vtable vtable = {12345,
- grpc_transport_init_stream,
- grpc_transport_set_pollset,
- grpc_transport_perform_stream_op,
- grpc_transport_perform_op,
- grpc_transport_destroy_stream,
- grpc_transport_destroy,
- grpc_transport_get_peer};
- transport.vtable = &vtable;
-
- /* transport.h */
- GRPC_STREAM_REF_INIT(NULL, 0, NULL, NULL, "xyz");
- GPR_ASSERT(0 == grpc_transport_stream_size(NULL));
- GPR_ASSERT(grpc_transport_init_stream(&transport, NULL, NULL, NULL, NULL));
- grpc_transport_set_pollset(&transport, NULL, NULL, NULL);
- grpc_transport_destroy_stream(&transport, NULL, NULL);
- grpc_transport_stream_op_finish_with_failure(NULL, NULL);
- grpc_transport_stream_op_add_cancellation(NULL, GRPC_STATUS_UNAVAILABLE);
- grpc_transport_stream_op_add_close(NULL, GRPC_STATUS_UNAVAILABLE,
- grpc_transport_op_string(NULL));
- grpc_transport_perform_stream_op(&transport, NULL, NULL, NULL);
- grpc_transport_perform_op(&transport, NULL, NULL);
- grpc_transport_ping(&transport, NULL);
- grpc_transport_goaway(&transport, GRPC_STATUS_UNAVAILABLE,
- grpc_slice_malloc(0));
- grpc_transport_close(&transport);
- grpc_transport_destroy(&transport, NULL);
- GPR_ASSERT("xyz" == grpc_transport_get_peer(&transport, NULL));
-}
-
-int main(void) {
- if (false) test_code();
- return 0;
-}
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 0d5aeb233c4..b31da122ae2 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -1289,57 +1289,6 @@
"third_party": false,
"type": "target"
},
- {
- "deps": [
- "gpr",
- "gpr_test_util",
- "grpc",
- "grpc_test_util"
- ],
- "headers": [],
- "is_filegroup": false,
- "language": "c",
- "name": "internal_api_canary_iomgr_test",
- "src": [
- "test/core/internal_api_canaries/iomgr.c"
- ],
- "third_party": false,
- "type": "target"
- },
- {
- "deps": [
- "gpr",
- "gpr_test_util",
- "grpc",
- "grpc_test_util"
- ],
- "headers": [],
- "is_filegroup": false,
- "language": "c",
- "name": "internal_api_canary_support_test",
- "src": [
- "test/core/internal_api_canaries/iomgr.c"
- ],
- "third_party": false,
- "type": "target"
- },
- {
- "deps": [
- "gpr",
- "gpr_test_util",
- "grpc",
- "grpc_test_util"
- ],
- "headers": [],
- "is_filegroup": false,
- "language": "c",
- "name": "internal_api_canary_transport_test",
- "src": [
- "test/core/internal_api_canaries/iomgr.c"
- ],
- "third_party": false,
- "type": "target"
- },
{
"deps": [
"gpr",
diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln
index ca7f969aa1b..12a45ee1f85 100644
--- a/vsprojects/buildtests_c.sln
+++ b/vsprojects/buildtests_c.sln
@@ -1071,39 +1071,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "initial_settings_frame_bad_
{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "internal_api_canary_iomgr_test", "vcxproj\test\internal_api_canary_iomgr_test\internal_api_canary_iomgr_test.vcxproj", "{28AE726B-1BFB-202B-48D2-41AF9D09B9EA}"
- ProjectSection(myProperties) = preProject
- lib = "False"
- EndProjectSection
- ProjectSection(ProjectDependencies) = postProject
- {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
- {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
- {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
- {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "internal_api_canary_support_test", "vcxproj\test\internal_api_canary_support_test\internal_api_canary_support_test.vcxproj", "{D53575C6-713C-E6E3-FD74-E65F20916498}"
- ProjectSection(myProperties) = preProject
- lib = "False"
- EndProjectSection
- ProjectSection(ProjectDependencies) = postProject
- {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
- {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
- {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
- {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "internal_api_canary_transport_test", "vcxproj\test\internal_api_canary_transport_test\internal_api_canary_transport_test.vcxproj", "{ED24E700-964E-B426-6A6A-1944E2EF7BCB}"
- ProjectSection(myProperties) = preProject
- lib = "False"
- EndProjectSection
- ProjectSection(ProjectDependencies) = postProject
- {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
- {29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
- {EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
- {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
- EndProjectSection
-EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "invalid_call_argument_test", "vcxproj\test\invalid_call_argument_test\invalid_call_argument_test.vcxproj", "{C32CA8A3-58E6-8EB9-B72F-C295547D36A6}"
ProjectSection(myProperties) = preProject
lib = "False"
@@ -3218,54 +3185,6 @@ Global
{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|Win32.Build.0 = Release|Win32
{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|x64.ActiveCfg = Release|x64
{6756895E-05BF-8CC7-58F2-868DF0C0300C}.Release-DLL|x64.Build.0 = Release|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug|Win32.ActiveCfg = Debug|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug|x64.ActiveCfg = Debug|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release|Win32.ActiveCfg = Release|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release|x64.ActiveCfg = Release|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug|Win32.Build.0 = Debug|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug|x64.Build.0 = Debug|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release|Win32.Build.0 = Release|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release|x64.Build.0 = Release|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug-DLL|Win32.Build.0 = Debug|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug-DLL|x64.ActiveCfg = Debug|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Debug-DLL|x64.Build.0 = Debug|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release-DLL|Win32.ActiveCfg = Release|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release-DLL|Win32.Build.0 = Release|Win32
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release-DLL|x64.ActiveCfg = Release|x64
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}.Release-DLL|x64.Build.0 = Release|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug|Win32.ActiveCfg = Debug|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug|x64.ActiveCfg = Debug|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release|Win32.ActiveCfg = Release|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release|x64.ActiveCfg = Release|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug|Win32.Build.0 = Debug|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug|x64.Build.0 = Debug|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release|Win32.Build.0 = Release|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release|x64.Build.0 = Release|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug-DLL|Win32.Build.0 = Debug|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug-DLL|x64.ActiveCfg = Debug|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Debug-DLL|x64.Build.0 = Debug|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release-DLL|Win32.ActiveCfg = Release|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release-DLL|Win32.Build.0 = Release|Win32
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release-DLL|x64.ActiveCfg = Release|x64
- {D53575C6-713C-E6E3-FD74-E65F20916498}.Release-DLL|x64.Build.0 = Release|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug|Win32.ActiveCfg = Debug|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug|x64.ActiveCfg = Debug|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release|Win32.ActiveCfg = Release|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release|x64.ActiveCfg = Release|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug|Win32.Build.0 = Debug|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug|x64.Build.0 = Debug|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release|Win32.Build.0 = Release|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release|x64.Build.0 = Release|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug-DLL|Win32.ActiveCfg = Debug|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug-DLL|Win32.Build.0 = Debug|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug-DLL|x64.ActiveCfg = Debug|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Debug-DLL|x64.Build.0 = Debug|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release-DLL|Win32.ActiveCfg = Release|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release-DLL|Win32.Build.0 = Release|Win32
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release-DLL|x64.ActiveCfg = Release|x64
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}.Release-DLL|x64.Build.0 = Release|x64
{C32CA8A3-58E6-8EB9-B72F-C295547D36A6}.Debug|Win32.ActiveCfg = Debug|Win32
{C32CA8A3-58E6-8EB9-B72F-C295547D36A6}.Debug|x64.ActiveCfg = Debug|x64
{C32CA8A3-58E6-8EB9-B72F-C295547D36A6}.Release|Win32.ActiveCfg = Release|Win32
diff --git a/vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj b/vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj
deleted file mode 100644
index 11d89a01c15..00000000000
--- a/vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj
+++ /dev/null
@@ -1,199 +0,0 @@
-
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {28AE726B-1BFB-202B-48D2-41AF9D09B9EA}
- true
- $(SolutionDir)IntDir\$(MSBuildProjectName)\
-
-
-
- v100
-
-
- v110
-
-
- v120
-
-
- v140
-
-
- Application
- true
- Unicode
-
-
- Application
- false
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
- internal_api_canary_iomgr_test
- static
- Debug
- static
- Debug
-
-
- internal_api_canary_iomgr_test
- static
- Release
- static
- Release
-
-
-
- NotUsing
- Level3
- Disabled
- WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDebug
- true
- None
- false
-
-
- Console
- true
- false
-
-
-
-
-
- NotUsing
- Level3
- Disabled
- WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDebug
- true
- None
- false
-
-
- Console
- true
- false
-
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
- true
- true
- true
- MultiThreaded
- true
- None
- false
-
-
- Console
- true
- false
- true
- true
-
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
- true
- true
- true
- MultiThreaded
- true
- None
- false
-
-
- Console
- true
- false
- true
- true
-
-
-
-
-
-
-
-
-
- {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-
-
- {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-
-
- {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
-
-
- {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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}.
-
-
-
-
-
-
-
-
-
diff --git a/vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj.filters b/vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj.filters
deleted file mode 100644
index f1ee82d1f4c..00000000000
--- a/vsprojects/vcxproj/test/internal_api_canary_iomgr_test/internal_api_canary_iomgr_test.vcxproj.filters
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- test\core\internal_api_canaries
-
-
-
-
-
- {881986d1-d1fe-b377-cf26-b3377af95009}
-
-
- {4f9a544e-5680-18ee-30d7-38179bf82cee}
-
-
- {6ab29f78-ec9d-d63a-8e8f-0d7552b3edd4}
-
-
-
-
diff --git a/vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj b/vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj
deleted file mode 100644
index 59092dc2b3c..00000000000
--- a/vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj
+++ /dev/null
@@ -1,199 +0,0 @@
-
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {D53575C6-713C-E6E3-FD74-E65F20916498}
- true
- $(SolutionDir)IntDir\$(MSBuildProjectName)\
-
-
-
- v100
-
-
- v110
-
-
- v120
-
-
- v140
-
-
- Application
- true
- Unicode
-
-
- Application
- false
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
- internal_api_canary_support_test
- static
- Debug
- static
- Debug
-
-
- internal_api_canary_support_test
- static
- Release
- static
- Release
-
-
-
- NotUsing
- Level3
- Disabled
- WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDebug
- true
- None
- false
-
-
- Console
- true
- false
-
-
-
-
-
- NotUsing
- Level3
- Disabled
- WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDebug
- true
- None
- false
-
-
- Console
- true
- false
-
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
- true
- true
- true
- MultiThreaded
- true
- None
- false
-
-
- Console
- true
- false
- true
- true
-
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
- true
- true
- true
- MultiThreaded
- true
- None
- false
-
-
- Console
- true
- false
- true
- true
-
-
-
-
-
-
-
-
-
- {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-
-
- {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-
-
- {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
-
-
- {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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}.
-
-
-
-
-
-
-
-
-
diff --git a/vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj.filters b/vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj.filters
deleted file mode 100644
index f7f4e3200ed..00000000000
--- a/vsprojects/vcxproj/test/internal_api_canary_support_test/internal_api_canary_support_test.vcxproj.filters
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- test\core\internal_api_canaries
-
-
-
-
-
- {a6c31cba-af9d-78ea-8980-8b77c9fc4485}
-
-
- {d84283b8-4529-6c09-18bf-20a69f14f7ab}
-
-
- {ea379f93-9285-7180-0d69-24a56da2b201}
-
-
-
-
diff --git a/vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj b/vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj
deleted file mode 100644
index 110f7e3b048..00000000000
--- a/vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj
+++ /dev/null
@@ -1,199 +0,0 @@
-
-
-
-
-
- Debug
- Win32
-
-
- Debug
- x64
-
-
- Release
- Win32
-
-
- Release
- x64
-
-
-
- {ED24E700-964E-B426-6A6A-1944E2EF7BCB}
- true
- $(SolutionDir)IntDir\$(MSBuildProjectName)\
-
-
-
- v100
-
-
- v110
-
-
- v120
-
-
- v140
-
-
- Application
- true
- Unicode
-
-
- Application
- false
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
- internal_api_canary_transport_test
- static
- Debug
- static
- Debug
-
-
- internal_api_canary_transport_test
- static
- Release
- static
- Release
-
-
-
- NotUsing
- Level3
- Disabled
- WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDebug
- true
- None
- false
-
-
- Console
- true
- false
-
-
-
-
-
- NotUsing
- Level3
- Disabled
- WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
- true
- MultiThreadedDebug
- true
- None
- false
-
-
- Console
- true
- false
-
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
- true
- true
- true
- MultiThreaded
- true
- None
- false
-
-
- Console
- true
- false
- true
- true
-
-
-
-
-
- NotUsing
- Level3
- MaxSpeed
- WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
- true
- true
- true
- MultiThreaded
- true
- None
- false
-
-
- Console
- true
- false
- true
- true
-
-
-
-
-
-
-
-
-
- {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-
-
- {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-
-
- {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
-
-
- {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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}.
-
-
-
-
-
-
-
-
-
diff --git a/vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj.filters b/vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj.filters
deleted file mode 100644
index 1e0b4c5557e..00000000000
--- a/vsprojects/vcxproj/test/internal_api_canary_transport_test/internal_api_canary_transport_test.vcxproj.filters
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- test\core\internal_api_canaries
-
-
-
-
-
- {38e59e26-aad9-60fd-a1a7-c8fd9b606e2f}
-
-
- {79aad60f-59b8-09e2-2cad-5b5e083ac008}
-
-
- {e4f0214e-e3ec-b5b8-c00b-2932b5ec2422}
-
-
-
-
From c547c0d9929f5aa83d263d3d8dff1352e3db54d4 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:43:08 -0800
Subject: [PATCH 74/95] Add test/core/json/BUILD
---
test/core/json/BUILD | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/test/core/json/BUILD b/test/core/json/BUILD
index 05d4c6e0c5e..7a12d68126d 100644
--- a/test/core/json/BUILD
+++ b/test/core/json/BUILD
@@ -39,3 +39,32 @@ grpc_fuzzer(
copts = ["-std=c99"],
)
+cc_binary(
+ name = "json_rewrite",
+ srcs = ["json_rewrite.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ testonly = 1,
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "json_rewrite_test",
+ srcs = ["json_rewrite_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99'],
+ data = ["rewrite_test_input.json", "rewrite_test_output_condensed.json", "rewrite_test_output_indented.json", ":json_stream_error_test"]
+)
+
+cc_test(
+ name = "json_stream_error_test",
+ srcs = ["json_stream_error_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "json_test",
+ srcs = ["json_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From 528072a1234de26e46f3563c0bd2a3a14b2a25b5 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:45:41 -0800
Subject: [PATCH 75/95] Add test/core/network_benchmarks/BUILD
---
test/core/network_benchmarks/BUILD | 37 ++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
create mode 100644 test/core/network_benchmarks/BUILD
diff --git a/test/core/network_benchmarks/BUILD b/test/core/network_benchmarks/BUILD
new file mode 100644
index 00000000000..a5209de4c91
--- /dev/null
+++ b/test/core/network_benchmarks/BUILD
@@ -0,0 +1,37 @@
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+licenses(["notice"]) # 3-clause BSD
+
+cc_binary(
+ name = "low_level_ping_pong",
+ srcs = ["low_level_ping_pong.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
From abd887012f096c597ce511d9da3079226c76ad64 Mon Sep 17 00:00:00 2001
From: "Nicolas \"Pixel\" Noble"
Date: Fri, 17 Feb 2017 21:56:10 +0100
Subject: [PATCH 76/95] Initial test/cpp/util/BUILD file.
---
test/cpp/util/BUILD | 63 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 test/cpp/util/BUILD
diff --git a/test/cpp/util/BUILD b/test/cpp/util/BUILD
new file mode 100644
index 00000000000..78eca8c3bd2
--- /dev/null
+++ b/test/cpp/util/BUILD
@@ -0,0 +1,63 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+cc_library(
+ name = "test_config",
+ srcs = [
+ "test_config_cc.cc",
+ ],
+ hdrs = [
+ "test_config.h",
+ ],
+ deps = ["//:gpr"],
+ visibility = ["//test:__subpackages__"],
+)
+
+cc_library(
+ name = "test_util",
+ srcs = [
+# "test/cpp/end2end/test_service_impl.cc",
+ "byte_buffer_proto_helper.cc",
+ "create_test_channel.cc",
+ "string_ref_helper.cc",
+ "subprocess.cc",
+ "test_credentials_provider.cc",
+ ],
+ hdrs = [
+ "byte_buffer_proto_helper.h",
+ "create_test_channel.h",
+ "string_ref_helper.h",
+ "subprocess.h",
+ "test_credentials_provider.h",
+ ],
+ deps = ["//test/core/util:gpr_test_util", "//:grpc++", "//test/core/end2end:ssl_test_data"],
+ visibility = ["//test:__subpackages__"],
+)
From 554144699a386de06422ee04f63e5b1565ab64fa Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 12:56:23 -0800
Subject: [PATCH 77/95] Add test/core/security/BUILD
---
test/core/iomgr/BUILD | 1 +
test/core/security/BUILD | 104 +++++++++++++++++++++++++++++++++++++++
2 files changed, 105 insertions(+)
create mode 100644 test/core/security/BUILD
diff --git a/test/core/iomgr/BUILD b/test/core/iomgr/BUILD
index 08d4a07f413..0cf93e73f5c 100644
--- a/test/core/iomgr/BUILD
+++ b/test/core/iomgr/BUILD
@@ -36,6 +36,7 @@ cc_library(
srcs = ["endpoint_tests.c"],
hdrs = ["endpoint_tests.h"],
deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ visibility = ["//test:__subpackages__"],
copts = ['-std=c99']
)
diff --git a/test/core/security/BUILD b/test/core/security/BUILD
new file mode 100644
index 00000000000..e750c39b7c6
--- /dev/null
+++ b/test/core/security/BUILD
@@ -0,0 +1,104 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+load("//test/core/util:grpc_fuzzer.bzl", "grpc_fuzzer")
+
+grpc_fuzzer(
+ name = "ssl_server_fuzzer",
+ srcs = ["ssl_server_fuzzer.c"],
+ deps = ["//:gpr", "//:grpc", "//test/core/util:grpc_test_util"],
+ corpus = "corpus",
+ copts = ["-std=c99"],
+)
+
+cc_library(
+ name = "oauth2_utils",
+ srcs = ["oauth2_utils.c"],
+ hdrs = ["oauth2_utils.h"],
+ deps = ["//:grpc"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "auth_context_test",
+ srcs = ["auth_context_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "b64_test",
+ srcs = ["b64_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "credentials_test",
+ srcs = ["credentials_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "secure_endpoint_test",
+ srcs = ["secure_endpoint_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util", "//test/core/iomgr:endpoint_tests"],
+ copts = ['-std=c99']
+)
+
+cc_test(
+ name = "security_connector_test",
+ srcs = ["security_connector_test.c"],
+ deps = ["//:grpc", "//test/core/util:grpc_test_util", "//:gpr", "//test/core/util:gpr_test_util"],
+ copts = ['-std=c99']
+)
+
+cc_binary(
+ name = "create_jwt",
+ srcs = ["create_jwt.c"],
+ deps = ["//:grpc", "//:gpr"],
+ copts = ['-std=c99']
+)
+
+cc_binary(
+ name = "fetch_oauth2",
+ srcs = ["fetch_oauth2.c"],
+ deps = ["//:grpc", "//:gpr", ":oauth2_utils"],
+ copts = ['-std=c99']
+)
+
+cc_binary(
+ name = "verify_jwt",
+ srcs = ["verify_jwt.c"],
+ deps = ["//:grpc", "//:gpr"],
+ copts = ['-std=c99']
+)
From 05fbe3c5185c8ba487041862496c41c304ff4c03 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 13:27:21 -0800
Subject: [PATCH 78/95] Get gtest building with Bazel, add first test in
test/cpp/common/BUILD
---
WORKSPACE | 11 +++++++++++
test/core/json/BUILD | 2 +-
test/cpp/common/BUILD | 36 ++++++++++++++++++++++++++++++++++++
third_party/gtest.BUILD | 14 ++++++++++++++
4 files changed, 62 insertions(+), 1 deletion(-)
create mode 100644 test/cpp/common/BUILD
create mode 100644 third_party/gtest.BUILD
diff --git a/WORKSPACE b/WORKSPACE
index 98831096345..4f90f06d881 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -28,6 +28,11 @@ bind(
actual = "@submodule_protobuf//:protoc",
)
+bind(
+ name = "gtest",
+ actual = "@submodule_gtest//:gtest",
+)
+
new_local_repository(
name = "submodule_boringssl",
path = "third_party/boringssl-with-bazel",
@@ -45,3 +50,9 @@ new_local_repository(
path = "third_party/protobuf",
build_file = "third_party/protobuf/BUILD",
)
+
+new_local_repository(
+ name = "submodule_gtest",
+ path = "third_party/googletest",
+ build_file = "third_party/gtest.BUILD",
+)
diff --git a/test/core/json/BUILD b/test/core/json/BUILD
index 7a12d68126d..f5a877e6af4 100644
--- a/test/core/json/BUILD
+++ b/test/core/json/BUILD
@@ -1,4 +1,4 @@
-# Copyright 2016, Google Inc.
+# Copyright 2017, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
diff --git a/test/cpp/common/BUILD b/test/cpp/common/BUILD
new file mode 100644
index 00000000000..0e2db00f0ab
--- /dev/null
+++ b/test/cpp/common/BUILD
@@ -0,0 +1,36 @@
+# Copyright 2017, 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.
+
+licenses(["notice"]) # 3-clause BSD
+
+cc_test(
+ name = "alarm_cpp_test",
+ srcs = ["alarm_cpp_test.cc"],
+ deps = ["//:grpc++", "//external:gtest", "//test/core/util:gpr_test_util"],
+)
diff --git a/third_party/gtest.BUILD b/third_party/gtest.BUILD
new file mode 100644
index 00000000000..bf980754ca2
--- /dev/null
+++ b/third_party/gtest.BUILD
@@ -0,0 +1,14 @@
+cc_library(
+ name = "gtest",
+ srcs = [
+ "src/gtest-all.cc",
+ ],
+ hdrs = glob(["include/**/*.h", "src/*.cc", "src/*.h"]),
+ includes = [
+ "include", "."
+ ],
+ linkstatic = 1,
+ visibility = [
+ "//visibility:public",
+ ],
+)
From 221edc1e5b7699ca00336b98749953ea9571b230 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 13:58:19 -0800
Subject: [PATCH 79/95] Remove dead code
---
test/cpp/qps/qps_test_with_poll.cc | 85 ------------------------------
1 file changed, 85 deletions(-)
delete mode 100644 test/cpp/qps/qps_test_with_poll.cc
diff --git a/test/cpp/qps/qps_test_with_poll.cc b/test/cpp/qps/qps_test_with_poll.cc
deleted file mode 100644
index c64e6c9d495..00000000000
--- a/test/cpp/qps/qps_test_with_poll.cc
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *
- * 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.
- *
- */
-
-#include
-
-#include
-
-#include "test/cpp/qps/driver.h"
-#include "test/cpp/qps/report.h"
-#include "test/cpp/util/benchmark_config.h"
-
-extern "C" {
-#include "src/core/lib/iomgr/pollset_posix.h"
-}
-
-namespace grpc {
-namespace testing {
-
-static const int WARMUP = 5;
-static const int BENCHMARK = 5;
-
-static void RunQPS() {
- gpr_log(GPR_INFO, "Running QPS test");
-
- ClientConfig client_config;
- client_config.set_client_type(ASYNC_CLIENT);
- client_config.set_outstanding_rpcs_per_channel(1000);
- client_config.set_client_channels(8);
- client_config.set_async_client_threads(8);
- client_config.set_rpc_type(UNARY);
- client_config.mutable_load_params()->mutable_closed_loop();
-
- ServerConfig server_config;
- server_config.set_server_type(ASYNC_SERVER);
- server_config.set_async_server_threads(4);
-
- const auto result =
- RunScenario(client_config, 1, server_config, 1, WARMUP, BENCHMARK, -2);
-
- GetReporter()->ReportQPSPerCore(*result);
- GetReporter()->ReportLatency(*result);
-}
-
-} // namespace testing
-} // namespace grpc
-
-int main(int argc, char** argv) {
- grpc::testing::InitBenchmark(&argc, &argv, true);
-
- grpc_platform_become_multipoller = grpc_poll_become_multipoller;
-
- grpc::testing::RunQPS();
-
- return 0;
-}
From ece502fa12ae9db7fc969f0bae1f7c26ece1dce3 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 17 Feb 2017 16:20:50 -0800
Subject: [PATCH 80/95] Speed up latency profiling (and tune down the memory
usage)
---
tools/run_tests/run_microbenchmark.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/run_tests/run_microbenchmark.py b/tools/run_tests/run_microbenchmark.py
index a9a563c1bec..1cafffb52dd 100755
--- a/tools/run_tests/run_microbenchmark.py
+++ b/tools/run_tests/run_microbenchmark.py
@@ -91,7 +91,9 @@ def collect_latency(bm_name, args):
'--benchmark_list_tests']).splitlines():
link(line, '%s.txt' % fnize(line))
benchmarks.append(
- jobset.JobSpec(['bins/basicprof/%s' % bm_name, '--benchmark_filter=^%s$' % line],
+ jobset.JobSpec(['bins/basicprof/%s' % bm_name,
+ '--benchmark_filter=^%s$' % line,
+ '--benchmark_min_time=0.05'],
environ={'LATENCY_TRACE': '%s.trace' % fnize(line)}))
profile_analysis.append(
jobset.JobSpec([sys.executable,
@@ -103,7 +105,7 @@ def collect_latency(bm_name, args):
# consume upwards of five gigabytes of ram in some cases, and so analysing
# hundreds of them at once is impractical -- but we want at least some
# concurrency or the work takes too long
- if len(benchmarks) >= min(4, multiprocessing.cpu_count()):
+ if len(benchmarks) >= min(16, multiprocessing.cpu_count()):
# run up to half the cpu count: each benchmark can use up to two cores
# (one for the microbenchmark, one for the data flush)
jobset.run(benchmarks, maxjobs=max(1, multiprocessing.cpu_count()/2),
From f3dec9c995e5c2b85460107a9ad9d937facd9a49 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Tue, 21 Feb 2017 10:02:31 -0800
Subject: [PATCH 81/95] Add counters for rmw atomic operations to
microbenchmarks
---
Makefile | 2 +-
build.yaml | 2 +-
include/grpc/impl/codegen/atm_gcc_atomic.h | 30 +++++++++----
src/core/lib/support/sync_posix.c | 9 ++--
test/cpp/microbenchmarks/bm_closure.cc | 51 ++++++++++++++++++++++
test/cpp/microbenchmarks/bm_fullstack.cc | 20 ++++++---
6 files changed, 92 insertions(+), 22 deletions(-)
diff --git a/Makefile b/Makefile
index 8f92816672b..d47d967e477 100644
--- a/Makefile
+++ b/Makefile
@@ -217,7 +217,7 @@ CC_counters = $(DEFAULT_CC)
CXX_counters = $(DEFAULT_CXX)
LD_counters = $(DEFAULT_CC)
LDXX_counters = $(DEFAULT_CXX)
-CPPFLAGS_counters = -O2 -DGPR_MU_COUNTERS
+CPPFLAGS_counters = -O2 -DGPR_LOW_LEVEL_COUNTERS
DEFINES_counters = NDEBUG
diff --git a/build.yaml b/build.yaml
index 141526cb594..120c7a85b1e 100644
--- a/build.yaml
+++ b/build.yaml
@@ -3919,7 +3919,7 @@ configs:
CPPFLAGS: -O2 -DGRPC_BASIC_PROFILER -DGRPC_TIMERS_RDTSC
DEFINES: NDEBUG
counters:
- CPPFLAGS: -O2 -DGPR_MU_COUNTERS
+ CPPFLAGS: -O2 -DGPR_LOW_LEVEL_COUNTERS
DEFINES: NDEBUG
dbg:
CPPFLAGS: -O0
diff --git a/include/grpc/impl/codegen/atm_gcc_atomic.h b/include/grpc/impl/codegen/atm_gcc_atomic.h
index 7d4ae98cf78..e5a623f723c 100644
--- a/include/grpc/impl/codegen/atm_gcc_atomic.h
+++ b/include/grpc/impl/codegen/atm_gcc_atomic.h
@@ -40,6 +40,15 @@
typedef intptr_t gpr_atm;
+#ifdef GPR_LOW_LEVEL_COUNTERS
+extern gpr_atm gpr_counter_rmw;
+#define GPR_ATM_INC_COUNTER(counter) \
+ __atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED)
+#define GPR_ATM_INC_RMW_THEN(blah) (GPR_ATM_INC_COUNTER(gpr_counter_rmw), blah)
+#else
+#define GPR_ATM_INC_RMW_THEN(blah) blah
+#endif
+
#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST))
#define gpr_atm_acq_load(p) (__atomic_load_n((p), __ATOMIC_ACQUIRE))
@@ -50,25 +59,28 @@ typedef intptr_t gpr_atm;
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED))
#define gpr_atm_no_barrier_fetch_add(p, delta) \
- (__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED))
+ GPR_ATM_INC_RMW_THEN( \
+ __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED))
#define gpr_atm_full_fetch_add(p, delta) \
- (__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL))
+ GPR_ATM_INC_RMW_THEN( \
+ __atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL))
static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELAXED,
- __ATOMIC_RELAXED);
+ return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ p, &o, n, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED));
}
static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_ACQUIRE,
- __ATOMIC_RELAXED);
+ return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ p, &o, n, 0, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED));
}
static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return __atomic_compare_exchange_n(p, &o, n, 0, __ATOMIC_RELEASE,
- __ATOMIC_RELAXED);
+ return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ p, &o, n, 0, __ATOMIC_RELEASE, __ATOMIC_RELAXED));
}
-#define gpr_atm_full_xchg(p, n) __atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL)
+#define gpr_atm_full_xchg(p, n) \
+ GPR_ATM_INC_RMW_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */
diff --git a/src/core/lib/support/sync_posix.c b/src/core/lib/support/sync_posix.c
index de0f0484b57..3b7d7806082 100644
--- a/src/core/lib/support/sync_posix.c
+++ b/src/core/lib/support/sync_posix.c
@@ -42,8 +42,9 @@
#include
#include "src/core/lib/profiling/timers.h"
-#ifdef GPR_MU_COUNTERS
-gpr_atm grpc_mu_locks = 0;
+#ifdef GPR_LOW_LEVEL_COUNTERS
+gpr_atm gpr_mu_locks = 0;
+gpr_atm gpr_counter_rmw = 0;
#endif
void gpr_mu_init(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_init(mu, NULL) == 0); }
@@ -51,8 +52,8 @@ void gpr_mu_init(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_init(mu, NULL) == 0); }
void gpr_mu_destroy(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_destroy(mu) == 0); }
void gpr_mu_lock(gpr_mu* mu) {
-#ifdef GPR_MU_COUNTERS
- gpr_atm_no_barrier_fetch_add(&grpc_mu_locks, 1);
+#ifdef GPR_LOW_LEVEL_COUNTERS
+ GPR_ATM_INC_COUNTER(gpr_mu_locks);
#endif
GPR_TIMER_BEGIN("gpr_mu_lock", 0);
GPR_ASSERT(pthread_mutex_lock(mu) == 0);
diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc
index 80d6610e13b..16d05781bb4 100644
--- a/test/cpp/microbenchmarks/bm_closure.cc
+++ b/test/cpp/microbenchmarks/bm_closure.cc
@@ -43,13 +43,46 @@ extern "C" {
#include "third_party/benchmark/include/benchmark/benchmark.h"
+#include
+
+#ifdef GPR_LOW_LEVEL_COUNTERS
+extern "C" gpr_atm gpr_mu_locks;
+#endif
+
static class InitializeStuff {
public:
InitializeStuff() { grpc_init(); }
~InitializeStuff() { grpc_shutdown(); }
} initialize_stuff;
+class TrackCounters {
+ public:
+ TrackCounters(benchmark::State& state) : state_(state) {}
+
+ ~TrackCounters() {
+ std::ostringstream out;
+#ifdef GPR_LOW_LEVEL_COUNTERS
+ out << " locks/iter:" << ((double)(gpr_atm_no_barrier_load(&gpr_mu_locks) -
+ mu_locks_at_start_) /
+ (double)state_.iterations())
+ << " atm_rmw/iter:"
+ << ((double)(gpr_atm_no_barrier_load(&gpr_counter_rmw) -
+ rmw_at_start_) /
+ (double)state_.iterations());
+#endif
+ state_.SetLabel(out.str());
+ }
+
+ private:
+ benchmark::State& state_;
+#ifdef GPR_LOW_LEVEL_COUNTERS
+ const size_t mu_locks_at_start_ = gpr_atm_no_barrier_load(&gpr_mu_locks);
+ const size_t rmw_at_start_ = gpr_atm_no_barrier_load(&gpr_counter_rmw);
+#endif
+};
+
static void BM_NoOpExecCtx(benchmark::State& state) {
+ TrackCounters track_counters(state);
while (state.KeepRunning()) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_exec_ctx_finish(&exec_ctx);
@@ -58,6 +91,7 @@ static void BM_NoOpExecCtx(benchmark::State& state) {
BENCHMARK(BM_NoOpExecCtx);
static void BM_WellFlushed(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
while (state.KeepRunning()) {
grpc_exec_ctx_flush(&exec_ctx);
@@ -69,6 +103,7 @@ BENCHMARK(BM_WellFlushed);
static void DoNothing(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {}
static void BM_ClosureInitAgainstExecCtx(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_closure c;
while (state.KeepRunning()) {
benchmark::DoNotOptimize(
@@ -78,6 +113,7 @@ static void BM_ClosureInitAgainstExecCtx(benchmark::State& state) {
BENCHMARK(BM_ClosureInitAgainstExecCtx);
static void BM_ClosureInitAgainstCombiner(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_combiner* combiner = grpc_combiner_create(NULL);
grpc_closure c;
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -91,6 +127,7 @@ static void BM_ClosureInitAgainstCombiner(benchmark::State& state) {
BENCHMARK(BM_ClosureInitAgainstCombiner);
static void BM_ClosureRunOnExecCtx(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_closure c;
grpc_closure_init(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -103,6 +140,7 @@ static void BM_ClosureRunOnExecCtx(benchmark::State& state) {
BENCHMARK(BM_ClosureRunOnExecCtx);
static void BM_ClosureCreateAndRun(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
while (state.KeepRunning()) {
grpc_closure_run(&exec_ctx, grpc_closure_create(DoNothing, NULL,
@@ -114,6 +152,7 @@ static void BM_ClosureCreateAndRun(benchmark::State& state) {
BENCHMARK(BM_ClosureCreateAndRun);
static void BM_ClosureInitAndRun(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_closure c;
while (state.KeepRunning()) {
@@ -126,6 +165,7 @@ static void BM_ClosureInitAndRun(benchmark::State& state) {
BENCHMARK(BM_ClosureInitAndRun);
static void BM_ClosureSchedOnExecCtx(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_closure c;
grpc_closure_init(&c, DoNothing, NULL, grpc_schedule_on_exec_ctx);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -138,6 +178,7 @@ static void BM_ClosureSchedOnExecCtx(benchmark::State& state) {
BENCHMARK(BM_ClosureSchedOnExecCtx);
static void BM_ClosureSched2OnExecCtx(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_closure c1;
grpc_closure c2;
grpc_closure_init(&c1, DoNothing, NULL, grpc_schedule_on_exec_ctx);
@@ -153,6 +194,7 @@ static void BM_ClosureSched2OnExecCtx(benchmark::State& state) {
BENCHMARK(BM_ClosureSched2OnExecCtx);
static void BM_ClosureSched3OnExecCtx(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_closure c1;
grpc_closure c2;
grpc_closure c3;
@@ -171,6 +213,7 @@ static void BM_ClosureSched3OnExecCtx(benchmark::State& state) {
BENCHMARK(BM_ClosureSched3OnExecCtx);
static void BM_AcquireMutex(benchmark::State& state) {
+ TrackCounters track_counters(state);
// for comparison with the combiner stuff below
gpr_mu mu;
gpr_mu_init(&mu);
@@ -185,6 +228,7 @@ static void BM_AcquireMutex(benchmark::State& state) {
BENCHMARK(BM_AcquireMutex);
static void BM_ClosureSchedOnCombiner(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_combiner* combiner = grpc_combiner_create(NULL);
grpc_closure c;
grpc_closure_init(&c, DoNothing, NULL,
@@ -200,6 +244,7 @@ static void BM_ClosureSchedOnCombiner(benchmark::State& state) {
BENCHMARK(BM_ClosureSchedOnCombiner);
static void BM_ClosureSched2OnCombiner(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_combiner* combiner = grpc_combiner_create(NULL);
grpc_closure c1;
grpc_closure c2;
@@ -219,6 +264,7 @@ static void BM_ClosureSched2OnCombiner(benchmark::State& state) {
BENCHMARK(BM_ClosureSched2OnCombiner);
static void BM_ClosureSched3OnCombiner(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_combiner* combiner = grpc_combiner_create(NULL);
grpc_closure c1;
grpc_closure c2;
@@ -242,6 +288,7 @@ static void BM_ClosureSched3OnCombiner(benchmark::State& state) {
BENCHMARK(BM_ClosureSched3OnCombiner);
static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_combiner* combiner1 = grpc_combiner_create(NULL);
grpc_combiner* combiner2 = grpc_combiner_create(NULL);
grpc_closure c1;
@@ -263,6 +310,7 @@ static void BM_ClosureSched2OnTwoCombiners(benchmark::State& state) {
BENCHMARK(BM_ClosureSched2OnTwoCombiners);
static void BM_ClosureSched4OnTwoCombiners(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_combiner* combiner1 = grpc_combiner_create(NULL);
grpc_combiner* combiner2 = grpc_combiner_create(NULL);
grpc_closure c1;
@@ -323,6 +371,7 @@ class Rescheduler {
};
static void BM_ClosureReschedOnExecCtx(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
Rescheduler r(state, grpc_schedule_on_exec_ctx);
r.ScheduleFirst(&exec_ctx);
@@ -331,6 +380,7 @@ static void BM_ClosureReschedOnExecCtx(benchmark::State& state) {
BENCHMARK(BM_ClosureReschedOnExecCtx);
static void BM_ClosureReschedOnCombiner(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_combiner* combiner = grpc_combiner_create(NULL);
Rescheduler r(state, grpc_combiner_scheduler(combiner, false));
@@ -342,6 +392,7 @@ static void BM_ClosureReschedOnCombiner(benchmark::State& state) {
BENCHMARK(BM_ClosureReschedOnCombiner);
static void BM_ClosureReschedOnCombinerFinally(benchmark::State& state) {
+ TrackCounters track_counters(state);
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_combiner* combiner = grpc_combiner_create(NULL);
Rescheduler r(state, grpc_combiner_finally_scheduler(combiner, false));
diff --git a/test/cpp/microbenchmarks/bm_fullstack.cc b/test/cpp/microbenchmarks/bm_fullstack.cc
index c63de0ce0ab..5bb456ab468 100644
--- a/test/cpp/microbenchmarks/bm_fullstack.cc
+++ b/test/cpp/microbenchmarks/bm_fullstack.cc
@@ -99,8 +99,9 @@ static void ApplyCommonChannelArguments(ChannelArguments* c) {
c->SetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, INT_MAX);
}
-#ifdef GPR_MU_COUNTERS
-extern "C" gpr_atm grpc_mu_locks;
+#ifdef GPR_LOW_LEVEL_COUNTERS
+extern "C" gpr_atm gpr_mu_locks;
+extern "C" gpr_atm gpr_counter_rmw;
#endif
class BaseFixture {
@@ -108,10 +109,14 @@ class BaseFixture {
void Finish(benchmark::State& s) {
std::ostringstream out;
this->AddToLabel(out, s);
-#ifdef GPR_MU_COUNTERS
- out << " locks/iter:" << ((double)(gpr_atm_no_barrier_load(&grpc_mu_locks) -
+#ifdef GPR_LOW_LEVEL_COUNTERS
+ out << " locks/iter:" << ((double)(gpr_atm_no_barrier_load(&gpr_mu_locks) -
mu_locks_at_start_) /
- (double)s.iterations());
+ (double)s.iterations())
+ << " atm_rmw/iter:"
+ << ((double)(gpr_atm_no_barrier_load(&gpr_counter_rmw) -
+ rmw_at_start_) /
+ (double)s.iterations());
#endif
grpc_memory_counters counters_at_end = grpc_memory_counters_snapshot();
out << " allocs/iter:"
@@ -128,8 +133,9 @@ class BaseFixture {
virtual void AddToLabel(std::ostream& out, benchmark::State& s) = 0;
private:
-#ifdef GPR_MU_COUNTERS
- const size_t mu_locks_at_start_ = gpr_atm_no_barrier_load(&grpc_mu_locks);
+#ifdef GPR_LOW_LEVEL_COUNTERS
+ const size_t mu_locks_at_start_ = gpr_atm_no_barrier_load(&gpr_mu_locks);
+ const size_t rmw_at_start_ = gpr_atm_no_barrier_load(&gpr_counter_rmw);
#endif
grpc_memory_counters counters_at_start_ = grpc_memory_counters_snapshot();
};
From 3d826b9e0acf79466726c5ef188975cb3cec45e0 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Tue, 21 Feb 2017 10:05:59 -0800
Subject: [PATCH 82/95] Fix script to track atomic rmws
---
tools/profiling/microbenchmarks/bm2bq.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/profiling/microbenchmarks/bm2bq.py b/tools/profiling/microbenchmarks/bm2bq.py
index a7d82269f55..62a2f699c7a 100755
--- a/tools/profiling/microbenchmarks/bm2bq.py
+++ b/tools/profiling/microbenchmarks/bm2bq.py
@@ -66,6 +66,7 @@ columns = [
('cli_stream_stalls_per_iteration', 'float'),
('svr_transport_stalls_per_iteration', 'float'),
('svr_stream_stalls_per_iteration', 'float'),
+ ('atm_rmw_per_iteration', 'float')
]
if sys.argv[1] == '--schema':
@@ -158,7 +159,7 @@ def parse_name(name):
for bm in js['benchmarks']:
context = js['context']
if 'label' in bm:
- labels_list = [s.split(':') for s in bm['label'].split(' ')]
+ labels_list = [s.split(':') for s in bm['label'].strip().split(' ')]
for el in labels_list:
el[0] = el[0].replace('/iter', '_per_iteration')
labels = dict(labels_list)
From 7f4d30a0321a042d4f8512815c1029cbaad6fac8 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Tue, 21 Feb 2017 10:24:00 -0800
Subject: [PATCH 83/95] Separate CAS/ADD RMWs
---
include/grpc/impl/codegen/atm_gcc_atomic.h | 23 +++++++++++++---------
src/core/lib/support/sync_posix.c | 3 ++-
test/cpp/microbenchmarks/bm_closure.cc | 15 ++++++++++----
test/cpp/microbenchmarks/bm_fullstack.cc | 18 ++++++++++++-----
tools/profiling/microbenchmarks/bm2bq.py | 3 ++-
5 files changed, 42 insertions(+), 20 deletions(-)
diff --git a/include/grpc/impl/codegen/atm_gcc_atomic.h b/include/grpc/impl/codegen/atm_gcc_atomic.h
index e5a623f723c..4bd3b257413 100644
--- a/include/grpc/impl/codegen/atm_gcc_atomic.h
+++ b/include/grpc/impl/codegen/atm_gcc_atomic.h
@@ -41,12 +41,17 @@
typedef intptr_t gpr_atm;
#ifdef GPR_LOW_LEVEL_COUNTERS
-extern gpr_atm gpr_counter_rmw;
+extern gpr_atm gpr_counter_atm_cas;
+extern gpr_atm gpr_counter_atm_add;
#define GPR_ATM_INC_COUNTER(counter) \
__atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED)
-#define GPR_ATM_INC_RMW_THEN(blah) (GPR_ATM_INC_COUNTER(gpr_counter_rmw), blah)
+#define GPR_ATM_INC_CAS_THEN(blah) \
+ (GPR_ATM_INC_COUNTER(gpr_counter_atm_cas), blah)
+#define GPR_ATM_INC_ADD_THEN(blah) \
+ (GPR_ATM_INC_COUNTER(gpr_counter_atm_add), blah)
#else
-#define GPR_ATM_INC_RMW_THEN(blah) blah
+#define GPR_ATM_INC_CAS_THEN(blah) blah
+#define GPR_ATM_INC_ADD_THEN(blah) blah
#endif
#define gpr_atm_full_barrier() (__atomic_thread_fence(__ATOMIC_SEQ_CST))
@@ -59,28 +64,28 @@ extern gpr_atm gpr_counter_rmw;
(__atomic_store_n((p), (intptr_t)(value), __ATOMIC_RELAXED))
#define gpr_atm_no_barrier_fetch_add(p, delta) \
- GPR_ATM_INC_RMW_THEN( \
+ GPR_ATM_INC_ADD_THEN( \
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_RELAXED))
#define gpr_atm_full_fetch_add(p, delta) \
- GPR_ATM_INC_RMW_THEN( \
+ GPR_ATM_INC_ADD_THEN( \
__atomic_fetch_add((p), (intptr_t)(delta), __ATOMIC_ACQ_REL))
static __inline int gpr_atm_no_barrier_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
p, &o, n, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED));
}
static __inline int gpr_atm_acq_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
p, &o, n, 0, __ATOMIC_ACQUIRE, __ATOMIC_RELAXED));
}
static __inline int gpr_atm_rel_cas(gpr_atm *p, gpr_atm o, gpr_atm n) {
- return GPR_ATM_INC_RMW_THEN(__atomic_compare_exchange_n(
+ return GPR_ATM_INC_CAS_THEN(__atomic_compare_exchange_n(
p, &o, n, 0, __ATOMIC_RELEASE, __ATOMIC_RELAXED));
}
#define gpr_atm_full_xchg(p, n) \
- GPR_ATM_INC_RMW_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
+ GPR_ATM_INC_CAS_THEN(__atomic_exchange_n((p), (n), __ATOMIC_ACQ_REL))
#endif /* GRPC_IMPL_CODEGEN_ATM_GCC_ATOMIC_H */
diff --git a/src/core/lib/support/sync_posix.c b/src/core/lib/support/sync_posix.c
index 3b7d7806082..16e7d6e12a5 100644
--- a/src/core/lib/support/sync_posix.c
+++ b/src/core/lib/support/sync_posix.c
@@ -44,7 +44,8 @@
#ifdef GPR_LOW_LEVEL_COUNTERS
gpr_atm gpr_mu_locks = 0;
-gpr_atm gpr_counter_rmw = 0;
+gpr_atm gpr_counter_atm_cas = 0;
+gpr_atm gpr_counter_atm_add = 0;
#endif
void gpr_mu_init(gpr_mu* mu) { GPR_ASSERT(pthread_mutex_init(mu, NULL) == 0); }
diff --git a/test/cpp/microbenchmarks/bm_closure.cc b/test/cpp/microbenchmarks/bm_closure.cc
index 16d05781bb4..03aede35b27 100644
--- a/test/cpp/microbenchmarks/bm_closure.cc
+++ b/test/cpp/microbenchmarks/bm_closure.cc
@@ -65,9 +65,13 @@ class TrackCounters {
out << " locks/iter:" << ((double)(gpr_atm_no_barrier_load(&gpr_mu_locks) -
mu_locks_at_start_) /
(double)state_.iterations())
- << " atm_rmw/iter:"
- << ((double)(gpr_atm_no_barrier_load(&gpr_counter_rmw) -
- rmw_at_start_) /
+ << " atm_cas/iter:"
+ << ((double)(gpr_atm_no_barrier_load(&gpr_counter_atm_cas) -
+ atm_cas_at_start_) /
+ (double)state_.iterations())
+ << " atm_add/iter:"
+ << ((double)(gpr_atm_no_barrier_load(&gpr_counter_atm_add) -
+ atm_add_at_start_) /
(double)state_.iterations());
#endif
state_.SetLabel(out.str());
@@ -77,7 +81,10 @@ class TrackCounters {
benchmark::State& state_;
#ifdef GPR_LOW_LEVEL_COUNTERS
const size_t mu_locks_at_start_ = gpr_atm_no_barrier_load(&gpr_mu_locks);
- const size_t rmw_at_start_ = gpr_atm_no_barrier_load(&gpr_counter_rmw);
+ const size_t atm_cas_at_start_ =
+ gpr_atm_no_barrier_load(&gpr_counter_atm_cas);
+ const size_t atm_add_at_start_ =
+ gpr_atm_no_barrier_load(&gpr_counter_atm_add);
#endif
};
diff --git a/test/cpp/microbenchmarks/bm_fullstack.cc b/test/cpp/microbenchmarks/bm_fullstack.cc
index 5bb456ab468..48e131f1be0 100644
--- a/test/cpp/microbenchmarks/bm_fullstack.cc
+++ b/test/cpp/microbenchmarks/bm_fullstack.cc
@@ -101,7 +101,8 @@ static void ApplyCommonChannelArguments(ChannelArguments* c) {
#ifdef GPR_LOW_LEVEL_COUNTERS
extern "C" gpr_atm gpr_mu_locks;
-extern "C" gpr_atm gpr_counter_rmw;
+extern "C" gpr_atm gpr_counter_atm_cas;
+extern "C" gpr_atm gpr_counter_atm_add;
#endif
class BaseFixture {
@@ -113,9 +114,13 @@ class BaseFixture {
out << " locks/iter:" << ((double)(gpr_atm_no_barrier_load(&gpr_mu_locks) -
mu_locks_at_start_) /
(double)s.iterations())
- << " atm_rmw/iter:"
- << ((double)(gpr_atm_no_barrier_load(&gpr_counter_rmw) -
- rmw_at_start_) /
+ << " atm_cas/iter:"
+ << ((double)(gpr_atm_no_barrier_load(&gpr_counter_atm_cas) -
+ atm_cas_at_start_) /
+ (double)s.iterations())
+ << " atm_add/iter:"
+ << ((double)(gpr_atm_no_barrier_load(&gpr_counter_atm_add) -
+ atm_add_at_start_) /
(double)s.iterations());
#endif
grpc_memory_counters counters_at_end = grpc_memory_counters_snapshot();
@@ -135,7 +140,10 @@ class BaseFixture {
private:
#ifdef GPR_LOW_LEVEL_COUNTERS
const size_t mu_locks_at_start_ = gpr_atm_no_barrier_load(&gpr_mu_locks);
- const size_t rmw_at_start_ = gpr_atm_no_barrier_load(&gpr_counter_rmw);
+ const size_t atm_cas_at_start_ =
+ gpr_atm_no_barrier_load(&gpr_counter_atm_cas);
+ const size_t atm_add_at_start_ =
+ gpr_atm_no_barrier_load(&gpr_counter_atm_add);
#endif
grpc_memory_counters counters_at_start_ = grpc_memory_counters_snapshot();
};
diff --git a/tools/profiling/microbenchmarks/bm2bq.py b/tools/profiling/microbenchmarks/bm2bq.py
index 62a2f699c7a..8ead4b44559 100755
--- a/tools/profiling/microbenchmarks/bm2bq.py
+++ b/tools/profiling/microbenchmarks/bm2bq.py
@@ -66,7 +66,8 @@ columns = [
('cli_stream_stalls_per_iteration', 'float'),
('svr_transport_stalls_per_iteration', 'float'),
('svr_stream_stalls_per_iteration', 'float'),
- ('atm_rmw_per_iteration', 'float')
+ ('atm_cas_per_iteration', 'float')
+ ('atm_add_per_iteration', 'float')
]
if sys.argv[1] == '--schema':
From ebcba69bc0f9483eb8c2ffac5ed90c437def2d89 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Tue, 21 Feb 2017 13:31:24 -0800
Subject: [PATCH 84/95] Fix typo
---
tools/profiling/microbenchmarks/bm2bq.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/profiling/microbenchmarks/bm2bq.py b/tools/profiling/microbenchmarks/bm2bq.py
index 8ead4b44559..8770fb71cf5 100755
--- a/tools/profiling/microbenchmarks/bm2bq.py
+++ b/tools/profiling/microbenchmarks/bm2bq.py
@@ -66,7 +66,7 @@ columns = [
('cli_stream_stalls_per_iteration', 'float'),
('svr_transport_stalls_per_iteration', 'float'),
('svr_stream_stalls_per_iteration', 'float'),
- ('atm_cas_per_iteration', 'float')
+ ('atm_cas_per_iteration', 'float'),
('atm_add_per_iteration', 'float')
]
From 1d77399656ff0fb91259fa2a3dd679b669c6ebc8 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Tue, 21 Feb 2017 16:36:51 -0800
Subject: [PATCH 85/95] Fix copyright
---
test/cpp/microbenchmarks/bm_call_create.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc
index bb77f2151ab..bf09046798a 100644
--- a/test/cpp/microbenchmarks/bm_call_create.cc
+++ b/test/cpp/microbenchmarks/bm_call_create.cc
@@ -1,6 +1,6 @@
/*
*
- * Copyright 2015, Google Inc.
+ * Copyright 2017, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
From eb022becae96c1c3ba622e0880ae8024c3c600bc Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Wed, 22 Feb 2017 08:08:53 -0800
Subject: [PATCH 86/95] Fix compile
---
src/cpp/common/channel_filter.h | 4 ++--
test/core/channel/channel_stack_test.c | 2 +-
test/core/end2end/tests/filter_causes_close.c | 2 +-
test/core/end2end/tests/filter_latency.c | 2 +-
test/cpp/common/channel_filter_test.cc | 2 +-
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/cpp/common/channel_filter.h b/src/cpp/common/channel_filter.h
index 5f9fd8790b5..79c4bab985b 100644
--- a/src/cpp/common/channel_filter.h
+++ b/src/cpp/common/channel_filter.h
@@ -244,7 +244,7 @@ class CallData {
/// Initializes the call data.
virtual grpc_error *Init(grpc_exec_ctx *exec_ctx, ChannelData *channel_data,
- grpc_call_element_args *args) {
+ const grpc_call_element_args *args) {
return GRPC_ERROR_NONE;
}
@@ -308,7 +308,7 @@ class ChannelFilter final {
static grpc_error *InitCallElement(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
- grpc_call_element_args *args) {
+ const grpc_call_element_args *args) {
ChannelDataType *channel_data = (ChannelDataType *)elem->channel_data;
// Construct the object in the already-allocated memory.
CallDataType *call_data = new (elem->call_data) CallDataType();
diff --git a/test/core/channel/channel_stack_test.c b/test/core/channel/channel_stack_test.c
index dd9c5445243..76bb57346c0 100644
--- a/test/core/channel/channel_stack_test.c
+++ b/test/core/channel/channel_stack_test.c
@@ -57,7 +57,7 @@ static grpc_error *channel_init_func(grpc_exec_ctx *exec_ctx,
static grpc_error *call_init_func(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
- grpc_call_element_args *args) {
+ const grpc_call_element_args *args) {
++*(int *)(elem->channel_data);
*(int *)(elem->call_data) = 0;
return GRPC_ERROR_NONE;
diff --git a/test/core/end2end/tests/filter_causes_close.c b/test/core/end2end/tests/filter_causes_close.c
index 308b4de71b8..25e606556da 100644
--- a/test/core/end2end/tests/filter_causes_close.c
+++ b/test/core/end2end/tests/filter_causes_close.c
@@ -230,7 +230,7 @@ static void start_transport_stream_op(grpc_exec_ctx *exec_ctx,
static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
- grpc_call_element_args *args) {
+ const grpc_call_element_args *args) {
return GRPC_ERROR_NONE;
}
diff --git a/test/core/end2end/tests/filter_latency.c b/test/core/end2end/tests/filter_latency.c
index 13d2ae012cf..d05e9e79a11 100644
--- a/test/core/end2end/tests/filter_latency.c
+++ b/test/core/end2end/tests/filter_latency.c
@@ -260,7 +260,7 @@ static void test_request(grpc_end2end_test_config config) {
static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx,
grpc_call_element *elem,
- grpc_call_element_args *args) {
+ const grpc_call_element_args *args) {
return GRPC_ERROR_NONE;
}
diff --git a/test/cpp/common/channel_filter_test.cc b/test/cpp/common/channel_filter_test.cc
index 32246a4b765..d78b05e5d8a 100644
--- a/test/cpp/common/channel_filter_test.cc
+++ b/test/cpp/common/channel_filter_test.cc
@@ -55,7 +55,7 @@ class MyCallData : public CallData {
MyCallData() {}
grpc_error* Init(grpc_exec_ctx* exec_ctx, ChannelData* channel_data,
- grpc_call_element_args* args) override {
+ const grpc_call_element_args* args) override {
(void)args->path; // Make sure field is available.
return GRPC_ERROR_NONE;
}
From 2ec37e1bdbd45b09e77f819657ce3919767ce18b Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Wed, 22 Feb 2017 10:26:52 -0800
Subject: [PATCH 87/95] Fix memory leak
---
test/cpp/microbenchmarks/bm_call_create.cc | 2 ++
1 file changed, 2 insertions(+)
diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc
index bf09046798a..4224bd6ddcd 100644
--- a/test/cpp/microbenchmarks/bm_call_create.cc
+++ b/test/cpp/microbenchmarks/bm_call_create.cc
@@ -294,6 +294,7 @@ static void BM_FilterInitDestroy(benchmark::State &state) {
}
grpc_channel_stack_destroy(&exec_ctx, channel_stack);
grpc_exec_ctx_finish(&exec_ctx);
+ gpr_free(channel_stack);
state.SetLabel(label.str());
}
@@ -360,6 +361,7 @@ static void BM_FilterInitSendInitialMetadataThenDestroy(
}
grpc_channel_stack_destroy(&exec_ctx, channel_stack);
grpc_exec_ctx_finish(&exec_ctx);
+ gpr_free(channel_stack);
state.SetLabel(label.str());
}
From 385b00932cfcf86143c2c94c8bbc3bc396f71dbb Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Wed, 22 Feb 2017 13:45:01 -0800
Subject: [PATCH 88/95] Cleanup
---
test/cpp/microbenchmarks/bm_call_create.cc | 152 +++++++++------------
tools/profiling/microbenchmarks/bm2bq.py | 6 +-
2 files changed, 68 insertions(+), 90 deletions(-)
diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc
index 4224bd6ddcd..a633b49c655 100644
--- a/test/cpp/microbenchmarks/bm_call_create.cc
+++ b/test/cpp/microbenchmarks/bm_call_create.cc
@@ -74,6 +74,7 @@ static void BM_InsecureChannelWithDefaults(benchmark::State &state) {
method, NULL, deadline, NULL));
}
grpc_channel_destroy(channel);
+ grpc_completion_queue_destroy(cq);
}
BENCHMARK(BM_InsecureChannelWithDefaults);
@@ -244,64 +245,50 @@ static grpc_transport dummy_transport = {&dummy_transport_vtable};
} // namespace dummy_transport
-template
-static void BM_FilterInitDestroy(benchmark::State &state) {
- Fixture fixture;
- std::ostringstream label;
-
- std::vector args;
- FakeClientChannelFactory fake_client_channel_factory;
- args.push_back(grpc_client_channel_factory_create_channel_arg(
- &fake_client_channel_factory));
- args.push_back(StringArg(GRPC_ARG_SERVER_URI, "localhost"));
-
- grpc_channel_args channel_args = {args.size(), &args[0]};
+class NoOp {
+ public:
+ class Op {
+ public:
+ Op(grpc_exec_ctx *exec_ctx, NoOp *p, grpc_call_stack *s) {}
+ void Finish(grpc_exec_ctx *exec_ctx) {}
+ };
+};
- std::vector filters;
- if (fixture.filter != nullptr) {
- filters.push_back(fixture.filter);
- }
- if (fixture.flags & CHECKS_NOT_LAST) {
- filters.push_back(&dummy_filter::dummy_filter);
- label << " has_dummy_filter";
+class SendEmptyMetadata {
+ public:
+ SendEmptyMetadata() {
+ memset(&op_, 0, sizeof(op_));
+ op_.on_complete = grpc_closure_init(&closure_, DoNothing, nullptr,
+ grpc_schedule_on_exec_ctx);
}
- grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
- size_t channel_size = grpc_channel_stack_size(&filters[0], filters.size());
- grpc_channel_stack *channel_stack =
- static_cast(gpr_malloc(channel_size));
- GPR_ASSERT(GRPC_LOG_IF_ERROR(
- "call_stack_init",
- grpc_channel_stack_init(&exec_ctx, 1, FilterDestroy, channel_stack,
- &filters[0], filters.size(), &channel_args,
- fixture.flags & REQUIRES_TRANSPORT
- ? &dummy_transport::dummy_transport
- : nullptr,
- "CHANNEL", channel_stack)));
- grpc_exec_ctx_flush(&exec_ctx);
- grpc_call_stack *call_stack = static_cast(
- gpr_malloc(channel_stack->call_stack_size));
- gpr_timespec deadline = gpr_inf_future(GPR_CLOCK_MONOTONIC);
- gpr_timespec start_time = gpr_now(GPR_CLOCK_MONOTONIC);
- grpc_slice method = grpc_slice_from_static_string("/foo/bar");
- grpc_call_final_info final_info;
- while (state.KeepRunning()) {
- GRPC_ERROR_UNREF(grpc_call_stack_init(&exec_ctx, channel_stack, 1,
- DoNothing, NULL, NULL, NULL, method,
- start_time, deadline, call_stack));
- grpc_call_stack_destroy(&exec_ctx, call_stack, &final_info, NULL);
- grpc_exec_ctx_flush(&exec_ctx);
- }
- grpc_channel_stack_destroy(&exec_ctx, channel_stack);
- grpc_exec_ctx_finish(&exec_ctx);
- gpr_free(channel_stack);
+ class Op {
+ public:
+ Op(grpc_exec_ctx *exec_ctx, SendEmptyMetadata *p, grpc_call_stack *s) {
+ grpc_metadata_batch_init(&batch_);
+ p->op_.send_initial_metadata = &batch_;
+ }
+ void Finish(grpc_exec_ctx *exec_ctx) {
+ grpc_metadata_batch_destroy(exec_ctx, &batch_);
+ }
- state.SetLabel(label.str());
-}
+ private:
+ grpc_metadata_batch batch_;
+ };
+
+ private:
+ const gpr_timespec deadline_ = gpr_inf_future(GPR_CLOCK_MONOTONIC);
+ const gpr_timespec start_time_ = gpr_now(GPR_CLOCK_MONOTONIC);
+ const grpc_slice method_ = grpc_slice_from_static_string("/foo/bar");
+ grpc_transport_stream_op op_;
+ grpc_closure closure_;
+};
-template
-static void BM_FilterInitSendInitialMetadataThenDestroy(
- benchmark::State &state) {
+// Test a filter in isolation. Fixture specifies the filter under test (use the
+// Fixture<> template to specify this), and TestOp defines some unit of work to
+// perform on said filter.
+template
+static void BM_IsolatedFilter(benchmark::State &state) {
Fixture fixture;
std::ostringstream label;
@@ -319,7 +306,7 @@ static void BM_FilterInitSendInitialMetadataThenDestroy(
}
if (fixture.flags & CHECKS_NOT_LAST) {
filters.push_back(&dummy_filter::dummy_filter);
- label << " has_dummy_filter";
+ label << " #has_dummy_filter";
}
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
@@ -341,68 +328,55 @@ static void BM_FilterInitSendInitialMetadataThenDestroy(
gpr_timespec start_time = gpr_now(GPR_CLOCK_MONOTONIC);
grpc_slice method = grpc_slice_from_static_string("/foo/bar");
grpc_call_final_info final_info;
- grpc_transport_stream_op op;
- memset(&op, 0, sizeof(op));
- grpc_closure closure;
- op.on_complete = grpc_closure_init(&closure, DoNothing, nullptr,
- grpc_schedule_on_exec_ctx);
+ TestOp test_op_data;
while (state.KeepRunning()) {
- grpc_metadata_batch batch;
- grpc_metadata_batch_init(&batch);
- op.send_initial_metadata = &batch;
GRPC_ERROR_UNREF(grpc_call_stack_init(&exec_ctx, channel_stack, 1,
DoNothing, NULL, NULL, NULL, method,
start_time, deadline, call_stack));
- auto elem = grpc_call_stack_element(call_stack, 0);
- elem->filter->start_transport_stream_op(&exec_ctx, elem, &op);
+ typename TestOp::Op op(&exec_ctx, &test_op_data, call_stack);
grpc_call_stack_destroy(&exec_ctx, call_stack, &final_info, NULL);
- grpc_metadata_batch_destroy(&exec_ctx, &batch);
+ op.Finish(&exec_ctx);
grpc_exec_ctx_flush(&exec_ctx);
}
grpc_channel_stack_destroy(&exec_ctx, channel_stack);
grpc_exec_ctx_finish(&exec_ctx);
gpr_free(channel_stack);
+ gpr_free(call_stack);
state.SetLabel(label.str());
}
typedef Fixture NoFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, NoFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, NoFilter, NoOp);
typedef Fixture<&dummy_filter::dummy_filter, 0> DummyFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, DummyFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy, DummyFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, DummyFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, DummyFilter, SendEmptyMetadata);
typedef Fixture<&grpc_client_channel_filter, 0> ClientChannelFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, ClientChannelFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, ClientChannelFilter, NoOp);
typedef Fixture<&grpc_compress_filter, CHECKS_NOT_LAST> CompressFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, CompressFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy, CompressFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, CompressFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, CompressFilter, SendEmptyMetadata);
typedef Fixture<&grpc_client_deadline_filter, CHECKS_NOT_LAST>
ClientDeadlineFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, ClientDeadlineFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy,
- ClientDeadlineFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, ClientDeadlineFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, ClientDeadlineFilter, SendEmptyMetadata);
typedef Fixture<&grpc_server_deadline_filter, CHECKS_NOT_LAST>
ServerDeadlineFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, ServerDeadlineFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy,
- ServerDeadlineFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, ServerDeadlineFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, ServerDeadlineFilter, SendEmptyMetadata);
typedef Fixture<&grpc_http_client_filter, CHECKS_NOT_LAST | REQUIRES_TRANSPORT>
HttpClientFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, HttpClientFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy,
- HttpClientFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, HttpClientFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, HttpClientFilter, SendEmptyMetadata);
typedef Fixture<&grpc_http_server_filter, CHECKS_NOT_LAST> HttpServerFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, HttpServerFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy,
- HttpServerFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, HttpServerFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, HttpServerFilter, SendEmptyMetadata);
typedef Fixture<&grpc_message_size_filter, CHECKS_NOT_LAST> MessageSizeFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, MessageSizeFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy,
- MessageSizeFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, MessageSizeFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, MessageSizeFilter, SendEmptyMetadata);
typedef Fixture<&grpc_load_reporting_filter, CHECKS_NOT_LAST>
LoadReportingFilter;
-BENCHMARK_TEMPLATE(BM_FilterInitDestroy, LoadReportingFilter);
-BENCHMARK_TEMPLATE(BM_FilterInitSendInitialMetadataThenDestroy,
- LoadReportingFilter);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, LoadReportingFilter, NoOp);
+BENCHMARK_TEMPLATE(BM_IsolatedFilter, LoadReportingFilter, SendEmptyMetadata);
BENCHMARK_MAIN();
diff --git a/tools/profiling/microbenchmarks/bm2bq.py b/tools/profiling/microbenchmarks/bm2bq.py
index 8770fb71cf5..b65aebc97ff 100755
--- a/tools/profiling/microbenchmarks/bm2bq.py
+++ b/tools/profiling/microbenchmarks/bm2bq.py
@@ -104,6 +104,10 @@ bm_specs = {
'tpl': [],
'dyn': ['request_size', 'bandwidth_kilobits'],
},
+ 'BM_IsolatedFilter' : {
+ 'tpl': ['fixture', 'client_mutator'],
+ 'dyn': [],
+ }
}
def numericalize(s):
@@ -160,7 +164,7 @@ def parse_name(name):
for bm in js['benchmarks']:
context = js['context']
if 'label' in bm:
- labels_list = [s.split(':') for s in bm['label'].strip().split(' ')]
+ labels_list = [s.split(':') for s in bm['label'].strip().split(' ') if len(s) and s[0] != '#']
for el in labels_list:
el[0] = el[0].replace('/iter', '_per_iteration')
labels = dict(labels_list)
From 2f792d9d16dc36fbfde05ef5a0873a0d2dc39649 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Wed, 22 Feb 2017 16:26:33 -0800
Subject: [PATCH 89/95] Initial http2 benchmarks
---
CMakeLists.txt | 41 +++
Makefile | 48 +++
build.yaml | 19 ++
.../chttp2/transport/hpack_encoder.c | 1 +
test/cpp/microbenchmarks/bm_chttp2.cc | 290 ++++++++++++++++++
.../generated/sources_and_headers.json | 20 ++
tools/run_tests/generated/tests.json | 22 ++
7 files changed, 441 insertions(+)
create mode 100644 test/cpp/microbenchmarks/bm_chttp2.cc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f2a2380f2e4..3023a4a9d7a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -570,6 +570,9 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx bm_call_create)
endif()
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+add_dependencies(buildtests_cxx bm_chttp2)
+endif()
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx bm_closure)
endif()
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
@@ -7404,6 +7407,44 @@ endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+add_executable(bm_chttp2
+ test/cpp/microbenchmarks/bm_chttp2.cc
+ third_party/googletest/src/gtest-all.cc
+)
+
+
+target_include_directories(bm_chttp2
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
+ PRIVATE ${BORINGSSL_ROOT_DIR}/include
+ PRIVATE ${PROTOBUF_ROOT_DIR}/src
+ PRIVATE ${BENCHMARK_ROOT_DIR}/include
+ PRIVATE ${ZLIB_ROOT_DIR}
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
+ PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
+ PRIVATE third_party/googletest/include
+ PRIVATE third_party/googletest
+ PRIVATE ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(bm_chttp2
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ benchmark
+ grpc++_test_util
+ grpc_test_util
+ grpc++
+ grpc
+ gpr_test_util
+ gpr
+ ${_gRPC_GFLAGS_LIBRARIES}
+)
+
+endif()
+endif (gRPC_BUILD_TESTS)
+if (gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
+
add_executable(bm_closure
test/cpp/microbenchmarks/bm_closure.cc
third_party/googletest/src/gtest-all.cc
diff --git a/Makefile b/Makefile
index 0d8b9608f2e..333992129e5 100644
--- a/Makefile
+++ b/Makefile
@@ -1041,6 +1041,7 @@ alarm_cpp_test: $(BINDIR)/$(CONFIG)/alarm_cpp_test
async_end2end_test: $(BINDIR)/$(CONFIG)/async_end2end_test
auth_property_iterator_test: $(BINDIR)/$(CONFIG)/auth_property_iterator_test
bm_call_create: $(BINDIR)/$(CONFIG)/bm_call_create
+bm_chttp2: $(BINDIR)/$(CONFIG)/bm_chttp2
bm_closure: $(BINDIR)/$(CONFIG)/bm_closure
bm_cq: $(BINDIR)/$(CONFIG)/bm_cq
bm_error: $(BINDIR)/$(CONFIG)/bm_error
@@ -1449,6 +1450,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/async_end2end_test \
$(BINDIR)/$(CONFIG)/auth_property_iterator_test \
$(BINDIR)/$(CONFIG)/bm_call_create \
+ $(BINDIR)/$(CONFIG)/bm_chttp2 \
$(BINDIR)/$(CONFIG)/bm_closure \
$(BINDIR)/$(CONFIG)/bm_cq \
$(BINDIR)/$(CONFIG)/bm_error \
@@ -1558,6 +1560,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/async_end2end_test \
$(BINDIR)/$(CONFIG)/auth_property_iterator_test \
$(BINDIR)/$(CONFIG)/bm_call_create \
+ $(BINDIR)/$(CONFIG)/bm_chttp2 \
$(BINDIR)/$(CONFIG)/bm_closure \
$(BINDIR)/$(CONFIG)/bm_cq \
$(BINDIR)/$(CONFIG)/bm_error \
@@ -1879,6 +1882,8 @@ test_cxx: buildtests_cxx
$(Q) $(BINDIR)/$(CONFIG)/auth_property_iterator_test || ( echo test auth_property_iterator_test failed ; exit 1 )
$(E) "[RUN] Testing bm_call_create"
$(Q) $(BINDIR)/$(CONFIG)/bm_call_create || ( echo test bm_call_create failed ; exit 1 )
+ $(E) "[RUN] Testing bm_chttp2"
+ $(Q) $(BINDIR)/$(CONFIG)/bm_chttp2 || ( echo test bm_chttp2 failed ; exit 1 )
$(E) "[RUN] Testing bm_closure"
$(Q) $(BINDIR)/$(CONFIG)/bm_closure || ( echo test bm_closure failed ; exit 1 )
$(E) "[RUN] Testing bm_cq"
@@ -12345,6 +12350,49 @@ endif
endif
+BM_CHTTP2_SRC = \
+ test/cpp/microbenchmarks/bm_chttp2.cc \
+
+BM_CHTTP2_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BM_CHTTP2_SRC))))
+ifeq ($(NO_SECURE),true)
+
+# You can't build secure targets if you don't have OpenSSL.
+
+$(BINDIR)/$(CONFIG)/bm_chttp2: openssl_dep_error
+
+else
+
+
+
+
+ifeq ($(NO_PROTOBUF),true)
+
+# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
+
+$(BINDIR)/$(CONFIG)/bm_chttp2: protobuf_dep_error
+
+else
+
+$(BINDIR)/$(CONFIG)/bm_chttp2: $(PROTOBUF_DEP) $(BM_CHTTP2_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_CHTTP2_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_chttp2
+
+endif
+
+endif
+
+$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/bm_chttp2.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_chttp2: $(BM_CHTTP2_OBJS:.o=.dep)
+
+ifneq ($(NO_SECURE),true)
+ifneq ($(NO_DEPS),true)
+-include $(BM_CHTTP2_OBJS:.o=.dep)
+endif
+endif
+
+
BM_CLOSURE_SRC = \
test/cpp/microbenchmarks/bm_closure.cc \
diff --git a/build.yaml b/build.yaml
index 33cd692b455..5ac2ff52f58 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2980,6 +2980,25 @@ targets:
- mac
- linux
- posix
+- name: bm_chttp2
+ build: test
+ language: c++
+ src:
+ - test/cpp/microbenchmarks/bm_chttp2.cc
+ deps:
+ - benchmark
+ - grpc++_test_util
+ - grpc_test_util
+ - grpc++
+ - grpc
+ - gpr_test_util
+ - gpr
+ args:
+ - --benchmark_min_time=0
+ platforms:
+ - mac
+ - linux
+ - posix
- name: bm_closure
build: test
language: c++
diff --git a/src/core/ext/transport/chttp2/transport/hpack_encoder.c b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
index 63df8e135f8..84586cd9988 100644
--- a/src/core/ext/transport/chttp2/transport/hpack_encoder.c
+++ b/src/core/ext/transport/chttp2/transport/hpack_encoder.c
@@ -173,6 +173,7 @@ static void add_header_data(framer_state *st, grpc_slice slice) {
static uint8_t *add_tiny_header_data(framer_state *st, size_t len) {
ensure_space(st, len);
+ st->stats->header_bytes += len;
return grpc_slice_buffer_tiny_add(st->output, len);
}
diff --git a/test/cpp/microbenchmarks/bm_chttp2.cc b/test/cpp/microbenchmarks/bm_chttp2.cc
new file mode 100644
index 00000000000..275e1d085d6
--- /dev/null
+++ b/test/cpp/microbenchmarks/bm_chttp2.cc
@@ -0,0 +1,290 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+/* Microbenchmarks around CHTTP2 operations */
+
+#include
+#include
+#include
+extern "C" {
+#include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
+#include "src/core/ext/transport/chttp2/transport/hpack_parser.h"
+#include "src/core/lib/slice/slice_internal.h"
+#include "src/core/lib/transport/static_metadata.h"
+}
+#include "third_party/benchmark/include/benchmark/benchmark.h"
+
+static struct Init {
+ Init() { grpc_init(); }
+ ~Init() { grpc_shutdown(); }
+} g_init;
+
+////////////////////////////////////////////////////////////////////////////////
+// HPACK encoder
+//
+
+static void BM_HpackEncoderInitDestroy(benchmark::State &state) {
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_chttp2_hpack_compressor c;
+ while (state.KeepRunning()) {
+ grpc_chttp2_hpack_compressor_init(&c);
+ grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c);
+ grpc_exec_ctx_flush(&exec_ctx);
+ }
+ grpc_exec_ctx_finish(&exec_ctx);
+}
+BENCHMARK(BM_HpackEncoderInitDestroy);
+
+template
+static void BM_HpackEncoderEncodeHeader(benchmark::State &state) {
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+
+ grpc_metadata_batch b;
+ grpc_metadata_batch_init(&b);
+ std::vector elems = Fixture::GetElems(&exec_ctx);
+ std::vector storage(elems.size());
+ for (size_t i = 0; i < elems.size(); i++) {
+ GPR_ASSERT(GRPC_LOG_IF_ERROR(
+ "addmd",
+ grpc_metadata_batch_add_tail(&exec_ctx, &b, &storage[i], elems[i])));
+ }
+
+ grpc_chttp2_hpack_compressor c;
+ grpc_chttp2_hpack_compressor_init(&c);
+ grpc_transport_one_way_stats stats;
+ memset(&stats, 0, sizeof(stats));
+ grpc_slice_buffer outbuf;
+ grpc_slice_buffer_init(&outbuf);
+ while (state.KeepRunning()) {
+ grpc_chttp2_encode_header(&exec_ctx, &c, (uint32_t)state.iterations(), &b,
+ state.range(0), state.range(1), &stats, &outbuf);
+ grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, &outbuf);
+ grpc_exec_ctx_flush(&exec_ctx);
+ }
+ grpc_metadata_batch_destroy(&exec_ctx, &b);
+ grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c);
+ grpc_exec_ctx_finish(&exec_ctx);
+
+ std::ostringstream label;
+ label << "framing_bytes/iter:" << (static_cast(stats.framing_bytes) /
+ static_cast(state.iterations()))
+ << " header_bytes/iter:" << (static_cast(stats.header_bytes) /
+ static_cast(state.iterations()));
+ state.SetLabel(label.str());
+}
+
+namespace hpack_encoder_fixtures {
+
+class EmptyBatch {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {};
+ }
+};
+
+class SingleStaticElem {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE};
+ }
+};
+
+class SingleInternedElem {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {grpc_mdelem_from_slices(
+ exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")),
+ grpc_slice_intern(grpc_slice_from_static_string("def")))};
+ }
+};
+
+class SingleInternedKeyElem {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {grpc_mdelem_from_slices(
+ exec_ctx, grpc_slice_intern(grpc_slice_from_static_string("abc")),
+ grpc_slice_from_static_string("def"))};
+ }
+};
+
+class SingleNonInternedElem {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {grpc_mdelem_from_slices(exec_ctx,
+ grpc_slice_from_static_string("abc"),
+ grpc_slice_from_static_string("def"))};
+ }
+};
+
+class RepresentativeClientInitialMetadata {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {
+ GRPC_MDELEM_SCHEME_HTTP, GRPC_MDELEM_METHOD_POST,
+ grpc_mdelem_from_slices(
+ exec_ctx, GRPC_MDSTR_PATH,
+ grpc_slice_intern(grpc_slice_from_static_string("/foo/bar"))),
+ grpc_mdelem_from_slices(exec_ctx, GRPC_MDSTR_AUTHORITY,
+ grpc_slice_intern(grpc_slice_from_static_string(
+ "foo.test.google.fr:1234"))),
+ GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP,
+ GRPC_MDELEM_TE_TRAILERS,
+ GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC,
+ grpc_mdelem_from_slices(
+ exec_ctx, GRPC_MDSTR_USER_AGENT,
+ grpc_slice_intern(grpc_slice_from_static_string(
+ "grpc-c/3.0.0-dev (linux; chttp2; green)")))};
+ }
+};
+
+class RepresentativeServerInitialMetadata {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {GRPC_MDELEM_STATUS_200,
+ GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC,
+ GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP};
+ }
+};
+
+class RepresentativeServerTrailingMetadata {
+ public:
+ static std::vector GetElems(grpc_exec_ctx *exec_ctx) {
+ return {GRPC_MDELEM_GRPC_STATUS_0};
+ }
+};
+
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, EmptyBatch)->Args({0, 16384});
+// test with eof (shouldn't affect anything)
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, EmptyBatch)->Args({1, 16384});
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, SingleStaticElem)
+ ->Args({0, 16384});
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, SingleInternedKeyElem)
+ ->Args({0, 16384});
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, SingleInternedElem)
+ ->Args({0, 16384});
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, SingleNonInternedElem)
+ ->Args({0, 16384});
+// test with a tiny frame size, to highlight continuation costs
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader, SingleNonInternedElem)
+ ->Args({0, 1});
+
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader,
+ RepresentativeClientInitialMetadata)
+ ->Args({0, 16384});
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader,
+ RepresentativeServerInitialMetadata)
+ ->Args({0, 16384});
+BENCHMARK_TEMPLATE(BM_HpackEncoderEncodeHeader,
+ RepresentativeServerTrailingMetadata)
+ ->Args({1, 16384});
+
+} // namespace hpack_encoder_fixtures
+
+////////////////////////////////////////////////////////////////////////////////
+// HPACK parser
+//
+
+static void BM_HpackParserInitDestroy(benchmark::State &state) {
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ grpc_chttp2_hpack_parser p;
+ while (state.KeepRunning()) {
+ grpc_chttp2_hpack_parser_init(&exec_ctx, &p);
+ grpc_chttp2_hpack_parser_destroy(&exec_ctx, &p);
+ grpc_exec_ctx_flush(&exec_ctx);
+ }
+ grpc_exec_ctx_finish(&exec_ctx);
+}
+BENCHMARK(BM_HpackParserInitDestroy);
+
+static void UnrefHeader(grpc_exec_ctx *exec_ctx, void *user_data,
+ grpc_mdelem md) {
+ GRPC_MDELEM_UNREF(exec_ctx, md);
+}
+
+template
+static void BM_HpackParserParseHeader(benchmark::State &state) {
+ grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
+ std::vector init_slices = Fixture::GetInitSlices();
+ std::vector benchmark_slices = Fixture::GetBenchmarkSlices();
+ grpc_chttp2_hpack_parser p;
+ grpc_chttp2_hpack_parser_init(&exec_ctx, &p);
+ p.on_header = UnrefHeader;
+ p.on_header_user_data = nullptr;
+ for (auto slice : init_slices) {
+ grpc_chttp2_hpack_parser_parse(&exec_ctx, &p, slice);
+ }
+ while (state.KeepRunning()) {
+ for (auto slice : benchmark_slices) {
+ grpc_chttp2_hpack_parser_parse(&exec_ctx, &p, slice);
+ }
+ grpc_exec_ctx_flush(&exec_ctx);
+ }
+ grpc_chttp2_hpack_parser_destroy(&exec_ctx, &p);
+ grpc_exec_ctx_finish(&exec_ctx);
+}
+
+namespace hpack_parser_fixtures {
+
+static grpc_slice MakeSlice(std::initializer_list bytes) {
+ grpc_slice s = grpc_slice_malloc(bytes.size());
+ uint8_t *p = GRPC_SLICE_START_PTR(s);
+ for (auto b : bytes) {
+ *p++ = b;
+ }
+ return s;
+}
+
+class EmptyBatch {
+ public:
+ static std::vector GetInitSlices() { return {}; }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice({})};
+ }
+};
+
+class IndexedSingleStaticElem {
+ public:
+ static std::vector GetInitSlices() {
+ return {MakeSlice(
+ {0x40, 0x07, ':', 's', 't', 'a', 't', 'u', 's', 0x03, '2', '0', '0'})};
+ }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice({0xbf})};
+ }
+};
+
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, EmptyBatch);
+
+} // namespace hpack_parser_fixtures
+
+BENCHMARK_MAIN();
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index b04e4bd06fa..45708dece12 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -2332,6 +2332,26 @@
"third_party": false,
"type": "target"
},
+ {
+ "deps": [
+ "benchmark",
+ "gpr",
+ "gpr_test_util",
+ "grpc",
+ "grpc++",
+ "grpc++_test_util",
+ "grpc_test_util"
+ ],
+ "headers": [],
+ "is_filegroup": false,
+ "language": "c++",
+ "name": "bm_chttp2",
+ "src": [
+ "test/cpp/microbenchmarks/bm_chttp2.cc"
+ ],
+ "third_party": false,
+ "type": "target"
+ },
{
"deps": [
"benchmark",
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index d93b55a0233..815d367c62f 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -2469,6 +2469,28 @@
"posix"
]
},
+ {
+ "args": [
+ "--benchmark_min_time=0"
+ ],
+ "ci_platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ],
+ "cpu_cost": 1.0,
+ "exclude_configs": [],
+ "exclude_iomgrs": [],
+ "flaky": false,
+ "gtest": false,
+ "language": "c++",
+ "name": "bm_chttp2",
+ "platforms": [
+ "linux",
+ "mac",
+ "posix"
+ ]
+ },
{
"args": [
"--benchmark_min_time=0"
From 29dd982487e32bdbad8244337049d0c6e734a600 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Wed, 22 Feb 2017 16:49:47 -0800
Subject: [PATCH 90/95] ...
---
test/cpp/microbenchmarks/bm_chttp2.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/cpp/microbenchmarks/bm_chttp2.cc b/test/cpp/microbenchmarks/bm_chttp2.cc
index 275e1d085d6..5ec517aaf3c 100644
--- a/test/cpp/microbenchmarks/bm_chttp2.cc
+++ b/test/cpp/microbenchmarks/bm_chttp2.cc
@@ -284,6 +284,7 @@ class IndexedSingleStaticElem {
};
BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, EmptyBatch);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, IndexedSingleStaticElem);
} // namespace hpack_parser_fixtures
From 5cd989e95a766e1119a7d333fda197e6a563d6a6 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Wed, 22 Feb 2017 17:08:00 -0800
Subject: [PATCH 91/95] Basic parsing tests
---
test/cpp/microbenchmarks/bm_chttp2.cc | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/test/cpp/microbenchmarks/bm_chttp2.cc b/test/cpp/microbenchmarks/bm_chttp2.cc
index 5ec517aaf3c..fa3d84cf800 100644
--- a/test/cpp/microbenchmarks/bm_chttp2.cc
+++ b/test/cpp/microbenchmarks/bm_chttp2.cc
@@ -279,12 +279,24 @@ class IndexedSingleStaticElem {
{0x40, 0x07, ':', 's', 't', 'a', 't', 'u', 's', 0x03, '2', '0', '0'})};
}
static std::vector GetBenchmarkSlices() {
- return {MakeSlice({0xbf})};
+ return {MakeSlice({0xbe})};
+ }
+};
+
+class IndexedSingleInternedElem {
+ public:
+ static std::vector GetInitSlices() {
+ return {MakeSlice(
+ {0x40, 0x03, 'a', 'b', 'c', 0x03, 'd', 'e', 'f'})};
+ }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice({0xbe})};
}
};
BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, EmptyBatch);
BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, IndexedSingleStaticElem);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, IndexedSingleInternedElem);
} // namespace hpack_parser_fixtures
From 0db30f3dd0f14d02fa1ace4208e8c977807a3898 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 23 Feb 2017 08:48:34 -0800
Subject: [PATCH 92/95] HPACK parsing benchmarks
---
test/cpp/microbenchmarks/bm_chttp2.cc | 143 +++++++++++++++++-
...esentative_server_initial_metadata.headers | 4 +
...sentative_server_trailing_metadata.headers | 3 +
tools/codegen/core/gen_header_frame.py | 95 ++++++++----
4 files changed, 214 insertions(+), 31 deletions(-)
create mode 100644 test/cpp/microbenchmarks/representative_server_initial_metadata.headers
create mode 100644 test/cpp/microbenchmarks/representative_server_trailing_metadata.headers
diff --git a/test/cpp/microbenchmarks/bm_chttp2.cc b/test/cpp/microbenchmarks/bm_chttp2.cc
index fa3d84cf800..10bccdfcee5 100644
--- a/test/cpp/microbenchmarks/bm_chttp2.cc
+++ b/test/cpp/microbenchmarks/bm_chttp2.cc
@@ -283,20 +283,159 @@ class IndexedSingleStaticElem {
}
};
-class IndexedSingleInternedElem {
+class AddIndexedSingleStaticElem {
+ public:
+ static std::vector GetInitSlices() { return {}; }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice(
+ {0x40, 0x07, ':', 's', 't', 'a', 't', 'u', 's', 0x03, '2', '0', '0'})};
+ }
+};
+
+class KeyIndexedSingleStaticElem {
public:
static std::vector GetInitSlices() {
return {MakeSlice(
- {0x40, 0x03, 'a', 'b', 'c', 0x03, 'd', 'e', 'f'})};
+ {0x40, 0x07, ':', 's', 't', 'a', 't', 'u', 's', 0x03, '2', '0', '0'})};
+ }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice({0x7e, 0x03, 'd', 'e', 'f'})};
+ }
+};
+
+class IndexedSingleInternedElem {
+ public:
+ static std::vector GetInitSlices() {
+ return {MakeSlice({0x40, 0x03, 'a', 'b', 'c', 0x03, 'd', 'e', 'f'})};
}
static std::vector GetBenchmarkSlices() {
return {MakeSlice({0xbe})};
}
};
+class AddIndexedSingleInternedElem {
+ public:
+ static std::vector GetInitSlices() { return {}; }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice({0x40, 0x03, 'a', 'b', 'c', 0x03, 'd', 'e', 'f'})};
+ }
+};
+
+class KeyIndexedSingleInternedElem {
+ public:
+ static std::vector GetInitSlices() {
+ return {MakeSlice({0x40, 0x03, 'a', 'b', 'c', 0x03, 'd', 'e', 'f'})};
+ }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice({0x7e, 0x03, 'g', 'h', 'i'})};
+ }
+};
+
+class NonIndexedElem {
+ public:
+ static std::vector GetInitSlices() { return {}; }
+ static std::vector GetBenchmarkSlices() {
+ return {MakeSlice({0x00, 0x03, 'a', 'b', 'c', 0x03, 'd', 'e', 'f'})};
+ }
+};
+
+class RepresentativeClientInitialMetadata {
+ public:
+ static std::vector GetInitSlices() {
+ return {grpc_slice_from_static_string(
+ // generated with:
+ // ```
+ // tools/codegen/core/gen_header_frame.py --compression inc --no_framing
+ // < test/core/bad_client/tests/simple_request.headers
+ // ```
+ "@\x05:path\x08/foo/bar"
+ "@\x07:scheme\x04http"
+ "@\x07:method\x04POST"
+ "@\x0a:authority\x09localhost"
+ "@\x0c"
+ "content-type\x10"
+ "application/grpc"
+ "@\x14grpc-accept-encoding\x15identity,deflate,gzip"
+ "@\x02te\x08trailers"
+ "@\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)")};
+ }
+ static std::vector GetBenchmarkSlices() {
+ // generated with:
+ // ```
+ // tools/codegen/core/gen_header_frame.py --compression pre --no_framing
+ // --hex < test/core/bad_client/tests/simple_request.headers
+ // ```
+ return {MakeSlice({0xc5, 0xc4, 0xc3, 0xc2, 0xc1, 0xc0, 0xbf, 0xbe})};
+ }
+};
+
+class RepresentativeServerInitialMetadata {
+ public:
+ static std::vector GetInitSlices() {
+ return {grpc_slice_from_static_string(
+ // generated with:
+ // ```
+ // tools/codegen/core/gen_header_frame.py --compression inc --no_framing
+ // <
+ // test/cpp/microbenchmarks/representative_server_initial_metadata.headers
+ // ```
+ "@\x07:status\x03"
+ "200"
+ "@\x0c"
+ "content-type\x10"
+ "application/grpc"
+ "@\x14grpc-accept-encoding\x15identity,deflate,gzip")};
+ }
+ static std::vector GetBenchmarkSlices() {
+ // generated with:
+ // ```
+ // tools/codegen/core/gen_header_frame.py --compression pre --no_framing
+ // --hex <
+ // test/cpp/microbenchmarks/representative_server_initial_metadata.headers
+ // ```
+ return {MakeSlice({0xc0, 0xbf, 0xbe})};
+ }
+};
+
+class RepresentativeServerTrailingMetadata {
+ public:
+ static std::vector GetInitSlices() {
+ return {grpc_slice_from_static_string(
+ // generated with:
+ // ```
+ // tools/codegen/core/gen_header_frame.py --compression inc --no_framing
+ // <
+ // test/cpp/microbenchmarks/representative_server_trailing_metadata.headers
+ // ```
+ "@\x0bgrpc-status\x01"
+ "0"
+ "@\x0cgrpc-message\x00")};
+ }
+ static std::vector GetBenchmarkSlices() {
+ // generated with:
+ // ```
+ // tools/codegen/core/gen_header_frame.py --compression pre --no_framing
+ // --hex <
+ // test/cpp/microbenchmarks/representative_server_trailing_metadata.headers
+ // ```
+ return {MakeSlice({0xbf, 0xbe})};
+ }
+};
+
BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, EmptyBatch);
BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, IndexedSingleStaticElem);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, AddIndexedSingleStaticElem);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, KeyIndexedSingleStaticElem);
BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, IndexedSingleInternedElem);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, AddIndexedSingleInternedElem);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, KeyIndexedSingleInternedElem);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader, NonIndexedElem);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader,
+ RepresentativeClientInitialMetadata);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader,
+ RepresentativeServerInitialMetadata);
+BENCHMARK_TEMPLATE(BM_HpackParserParseHeader,
+ RepresentativeServerTrailingMetadata);
} // namespace hpack_parser_fixtures
diff --git a/test/cpp/microbenchmarks/representative_server_initial_metadata.headers b/test/cpp/microbenchmarks/representative_server_initial_metadata.headers
new file mode 100644
index 00000000000..d3e69333668
--- /dev/null
+++ b/test/cpp/microbenchmarks/representative_server_initial_metadata.headers
@@ -0,0 +1,4 @@
+:status: 200
+content-type: application/grpc
+grpc-accept-encoding: identity,deflate,gzip
+
diff --git a/test/cpp/microbenchmarks/representative_server_trailing_metadata.headers b/test/cpp/microbenchmarks/representative_server_trailing_metadata.headers
new file mode 100644
index 00000000000..544d0898539
--- /dev/null
+++ b/test/cpp/microbenchmarks/representative_server_trailing_metadata.headers
@@ -0,0 +1,3 @@
+grpc-status: 0
+grpc-message:
+
diff --git a/tools/codegen/core/gen_header_frame.py b/tools/codegen/core/gen_header_frame.py
index ee476267f23..c92ff3c579d 100755
--- a/tools/codegen/core/gen_header_frame.py
+++ b/tools/codegen/core/gen_header_frame.py
@@ -37,8 +37,41 @@
import json
import sys
+import argparse
-set_end_stream = len(sys.argv) > 1 and sys.argv[1] == '--set_end_stream'
+def append_never_indexed(payload_line, n, count, key, value):
+ payload_line.append(0x10)
+ assert(len(key) <= 126)
+ payload_line.append(len(key))
+ payload_line.extend(ord(c) for c in key)
+ assert(len(value) <= 126)
+ payload_line.append(len(value))
+ payload_line.extend(ord(c) for c in value)
+
+def append_inc_indexed(payload_line, n, count, key, value):
+ payload_line.append(0x40)
+ assert(len(key) <= 126)
+ payload_line.append(len(key))
+ payload_line.extend(ord(c) for c in key)
+ assert(len(value) <= 126)
+ payload_line.append(len(value))
+ payload_line.extend(ord(c) for c in value)
+
+def append_pre_indexed(payload_line, n, count, key, value):
+ payload_line.append(0x80 + 61 + count - n)
+
+_COMPRESSORS = {
+ 'never': append_never_indexed,
+ 'inc': append_inc_indexed,
+ 'pre': append_pre_indexed,
+}
+
+argp = argparse.ArgumentParser('Generate header frames')
+argp.add_argument('--set_end_stream', default=False, action='store_const', const=True)
+argp.add_argument('--no_framing', default=False, action='store_const', const=True)
+argp.add_argument('--compression', choices=sorted(_COMPRESSORS.keys()), default='never')
+argp.add_argument('--hex', default=False, action='store_const', const=True)
+args = argp.parse_args()
# parse input, fill in vals
vals = []
@@ -52,38 +85,37 @@ for line in sys.stdin:
vals.append((key, value))
# generate frame payload binary data
-payload_bytes = [[]] # reserve space for header
+payload_bytes = []
+if not args.no_framing:
+ payload_bytes.append([]) # reserve space for header
payload_len = 0
+n = 0
for key, value in vals:
payload_line = []
- payload_line.append(0x10)
- assert(len(key) <= 126)
- payload_line.append(len(key))
- payload_line.extend(ord(c) for c in key)
- assert(len(value) <= 126)
- payload_line.append(len(value))
- payload_line.extend(ord(c) for c in value)
+ _COMPRESSORS[args.compression](payload_line, n, len(vals), key, value)
+ n += 1
payload_len += len(payload_line)
payload_bytes.append(payload_line)
# fill in header
-flags = 0x04 # END_HEADERS
-if set_end_stream:
- flags |= 0x01 # END_STREAM
-payload_bytes[0].extend([
- (payload_len >> 16) & 0xff,
- (payload_len >> 8) & 0xff,
- (payload_len) & 0xff,
- # header frame
- 0x01,
- # flags
- flags,
- # stream id
- 0x00,
- 0x00,
- 0x00,
- 0x01
-])
+if not args.no_framing:
+ flags = 0x04 # END_HEADERS
+ if args.set_end_stream:
+ flags |= 0x01 # END_STREAM
+ payload_bytes[0].extend([
+ (payload_len >> 16) & 0xff,
+ (payload_len >> 8) & 0xff,
+ (payload_len) & 0xff,
+ # header frame
+ 0x01,
+ # flags
+ flags,
+ # stream id
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x01
+ ])
hex_bytes = [ord(c) for c in "abcdefABCDEF0123456789"]
@@ -105,6 +137,11 @@ def esc_c(line):
return out + "\""
# dump bytes
-for line in payload_bytes:
- print esc_c(line)
-
+if args.hex:
+ all_bytes = []
+ for line in payload_bytes:
+ all_bytes.extend(line)
+ print '{%s}' % ', '.join('0x%02x' % c for c in all_bytes)
+else:
+ for line in payload_bytes:
+ print esc_c(line)
From 523d54beebb4566af5b3f6f7e53ad609de016cbd Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 23 Feb 2017 08:52:38 -0800
Subject: [PATCH 93/95] Refine to just be a HPACK benchmark
---
CMakeLists.txt | 10 +++----
Makefile | 30 +++++++++----------
build.yaml | 4 +--
.../{bm_chttp2.cc => bm_chttp2_hpack.cc} | 2 +-
third_party/gflags | 2 +-
.../generated/sources_and_headers.json | 4 +--
tools/run_tests/generated/tests.json | 2 +-
tools/run_tests/run_microbenchmark.py | 7 ++++-
8 files changed, 33 insertions(+), 28 deletions(-)
rename test/cpp/microbenchmarks/{bm_chttp2.cc => bm_chttp2_hpack.cc} (99%)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3023a4a9d7a..b72b8e79d90 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -570,7 +570,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx bm_call_create)
endif()
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
-add_dependencies(buildtests_cxx bm_chttp2)
+add_dependencies(buildtests_cxx bm_chttp2_hpack)
endif()
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx bm_closure)
@@ -7407,13 +7407,13 @@ endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
-add_executable(bm_chttp2
- test/cpp/microbenchmarks/bm_chttp2.cc
+add_executable(bm_chttp2_hpack
+ test/cpp/microbenchmarks/bm_chttp2_hpack.cc
third_party/googletest/src/gtest-all.cc
)
-target_include_directories(bm_chttp2
+target_include_directories(bm_chttp2_hpack
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
PRIVATE ${BORINGSSL_ROOT_DIR}/include
@@ -7427,7 +7427,7 @@ target_include_directories(bm_chttp2
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
-target_link_libraries(bm_chttp2
+target_link_libraries(bm_chttp2_hpack
${_gRPC_PROTOBUF_LIBRARIES}
${_gRPC_ALLTARGETS_LIBRARIES}
benchmark
diff --git a/Makefile b/Makefile
index 333992129e5..1fff1375892 100644
--- a/Makefile
+++ b/Makefile
@@ -1041,7 +1041,7 @@ alarm_cpp_test: $(BINDIR)/$(CONFIG)/alarm_cpp_test
async_end2end_test: $(BINDIR)/$(CONFIG)/async_end2end_test
auth_property_iterator_test: $(BINDIR)/$(CONFIG)/auth_property_iterator_test
bm_call_create: $(BINDIR)/$(CONFIG)/bm_call_create
-bm_chttp2: $(BINDIR)/$(CONFIG)/bm_chttp2
+bm_chttp2_hpack: $(BINDIR)/$(CONFIG)/bm_chttp2_hpack
bm_closure: $(BINDIR)/$(CONFIG)/bm_closure
bm_cq: $(BINDIR)/$(CONFIG)/bm_cq
bm_error: $(BINDIR)/$(CONFIG)/bm_error
@@ -1450,7 +1450,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/async_end2end_test \
$(BINDIR)/$(CONFIG)/auth_property_iterator_test \
$(BINDIR)/$(CONFIG)/bm_call_create \
- $(BINDIR)/$(CONFIG)/bm_chttp2 \
+ $(BINDIR)/$(CONFIG)/bm_chttp2_hpack \
$(BINDIR)/$(CONFIG)/bm_closure \
$(BINDIR)/$(CONFIG)/bm_cq \
$(BINDIR)/$(CONFIG)/bm_error \
@@ -1560,7 +1560,7 @@ buildtests_cxx: privatelibs_cxx \
$(BINDIR)/$(CONFIG)/async_end2end_test \
$(BINDIR)/$(CONFIG)/auth_property_iterator_test \
$(BINDIR)/$(CONFIG)/bm_call_create \
- $(BINDIR)/$(CONFIG)/bm_chttp2 \
+ $(BINDIR)/$(CONFIG)/bm_chttp2_hpack \
$(BINDIR)/$(CONFIG)/bm_closure \
$(BINDIR)/$(CONFIG)/bm_cq \
$(BINDIR)/$(CONFIG)/bm_error \
@@ -1882,8 +1882,8 @@ test_cxx: buildtests_cxx
$(Q) $(BINDIR)/$(CONFIG)/auth_property_iterator_test || ( echo test auth_property_iterator_test failed ; exit 1 )
$(E) "[RUN] Testing bm_call_create"
$(Q) $(BINDIR)/$(CONFIG)/bm_call_create || ( echo test bm_call_create failed ; exit 1 )
- $(E) "[RUN] Testing bm_chttp2"
- $(Q) $(BINDIR)/$(CONFIG)/bm_chttp2 || ( echo test bm_chttp2 failed ; exit 1 )
+ $(E) "[RUN] Testing bm_chttp2_hpack"
+ $(Q) $(BINDIR)/$(CONFIG)/bm_chttp2_hpack || ( echo test bm_chttp2_hpack failed ; exit 1 )
$(E) "[RUN] Testing bm_closure"
$(Q) $(BINDIR)/$(CONFIG)/bm_closure || ( echo test bm_closure failed ; exit 1 )
$(E) "[RUN] Testing bm_cq"
@@ -12350,15 +12350,15 @@ endif
endif
-BM_CHTTP2_SRC = \
- test/cpp/microbenchmarks/bm_chttp2.cc \
+BM_CHTTP2_HPACK_SRC = \
+ test/cpp/microbenchmarks/bm_chttp2_hpack.cc \
-BM_CHTTP2_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BM_CHTTP2_SRC))))
+BM_CHTTP2_HPACK_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(BM_CHTTP2_HPACK_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure targets if you don't have OpenSSL.
-$(BINDIR)/$(CONFIG)/bm_chttp2: openssl_dep_error
+$(BINDIR)/$(CONFIG)/bm_chttp2_hpack: openssl_dep_error
else
@@ -12369,26 +12369,26 @@ ifeq ($(NO_PROTOBUF),true)
# You can't build the protoc plugins or protobuf-enabled targets if you don't have protobuf 3.0.0+.
-$(BINDIR)/$(CONFIG)/bm_chttp2: protobuf_dep_error
+$(BINDIR)/$(CONFIG)/bm_chttp2_hpack: protobuf_dep_error
else
-$(BINDIR)/$(CONFIG)/bm_chttp2: $(PROTOBUF_DEP) $(BM_CHTTP2_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
+$(BINDIR)/$(CONFIG)/bm_chttp2_hpack: $(PROTOBUF_DEP) $(BM_CHTTP2_HPACK_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_CHTTP2_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_chttp2
+ $(Q) $(LDXX) $(LDFLAGS) $(BM_CHTTP2_HPACK_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_chttp2_hpack
endif
endif
-$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/bm_chttp2.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
+$(OBJDIR)/$(CONFIG)/test/cpp/microbenchmarks/bm_chttp2_hpack.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_chttp2: $(BM_CHTTP2_OBJS:.o=.dep)
+deps_bm_chttp2_hpack: $(BM_CHTTP2_HPACK_OBJS:.o=.dep)
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
--include $(BM_CHTTP2_OBJS:.o=.dep)
+-include $(BM_CHTTP2_HPACK_OBJS:.o=.dep)
endif
endif
diff --git a/build.yaml b/build.yaml
index 5ac2ff52f58..4dca4d86947 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2980,11 +2980,11 @@ targets:
- mac
- linux
- posix
-- name: bm_chttp2
+- name: bm_chttp2_hpack
build: test
language: c++
src:
- - test/cpp/microbenchmarks/bm_chttp2.cc
+ - test/cpp/microbenchmarks/bm_chttp2_hpack.cc
deps:
- benchmark
- grpc++_test_util
diff --git a/test/cpp/microbenchmarks/bm_chttp2.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
similarity index 99%
rename from test/cpp/microbenchmarks/bm_chttp2.cc
rename to test/cpp/microbenchmarks/bm_chttp2_hpack.cc
index 10bccdfcee5..be0f4943e6f 100644
--- a/test/cpp/microbenchmarks/bm_chttp2.cc
+++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
@@ -31,7 +31,7 @@
*
*/
-/* Microbenchmarks around CHTTP2 operations */
+/* Microbenchmarks around CHTTP2 HPACK operations */
#include
#include
diff --git a/third_party/gflags b/third_party/gflags
index f8a0efe03aa..30dbc81fb5f 160000
--- a/third_party/gflags
+++ b/third_party/gflags
@@ -1 +1 @@
-Subproject commit f8a0efe03aa69b3336d8e228b37d4ccb17324b88
+Subproject commit 30dbc81fb5ffdc98ea9b14b1918bfe4e8779b26e
diff --git a/tools/run_tests/generated/sources_and_headers.json b/tools/run_tests/generated/sources_and_headers.json
index 45708dece12..61c4f37b3ed 100644
--- a/tools/run_tests/generated/sources_and_headers.json
+++ b/tools/run_tests/generated/sources_and_headers.json
@@ -2345,9 +2345,9 @@
"headers": [],
"is_filegroup": false,
"language": "c++",
- "name": "bm_chttp2",
+ "name": "bm_chttp2_hpack",
"src": [
- "test/cpp/microbenchmarks/bm_chttp2.cc"
+ "test/cpp/microbenchmarks/bm_chttp2_hpack.cc"
],
"third_party": false,
"type": "target"
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
index 815d367c62f..e112b93aece 100644
--- a/tools/run_tests/generated/tests.json
+++ b/tools/run_tests/generated/tests.json
@@ -2484,7 +2484,7 @@
"flaky": false,
"gtest": false,
"language": "c++",
- "name": "bm_chttp2",
+ "name": "bm_chttp2_hpack",
"platforms": [
"linux",
"mac",
diff --git a/tools/run_tests/run_microbenchmark.py b/tools/run_tests/run_microbenchmark.py
index c5247761ef6..8b74d31d500 100755
--- a/tools/run_tests/run_microbenchmark.py
+++ b/tools/run_tests/run_microbenchmark.py
@@ -199,7 +199,12 @@ argp.add_argument('-c', '--collect',
default=sorted(collectors.keys()),
help='Which collectors should be run against each benchmark')
argp.add_argument('-b', '--benchmarks',
- default=['bm_fullstack', 'bm_closure', 'bm_cq', 'bm_call_create', 'bm_error'],
+ default=['bm_fullstack',
+ 'bm_closure',
+ 'bm_cq',
+ 'bm_call_create',
+ 'bm_error',
+ 'bm_chttp2_hpack'],
nargs='+',
type=str,
help='Which microbenchmarks should be run')
From 681507aa24f7e404fe5171dca5ef4016d8bca796 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Thu, 23 Feb 2017 13:17:29 -0800
Subject: [PATCH 94/95] Fix memory leak
---
test/cpp/microbenchmarks/bm_chttp2_hpack.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
index be0f4943e6f..5fb3f371306 100644
--- a/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
+++ b/test/cpp/microbenchmarks/bm_chttp2_hpack.cc
@@ -93,6 +93,7 @@ static void BM_HpackEncoderEncodeHeader(benchmark::State &state) {
}
grpc_metadata_batch_destroy(&exec_ctx, &b);
grpc_chttp2_hpack_compressor_destroy(&exec_ctx, &c);
+ grpc_slice_buffer_destroy_internal(&exec_ctx, &outbuf);
grpc_exec_ctx_finish(&exec_ctx);
std::ostringstream label;
From b325a1dd4af3f3d3443da3e0ac0f007162c63772 Mon Sep 17 00:00:00 2001
From: Craig Tiller
Date: Fri, 24 Feb 2017 16:55:00 -0800
Subject: [PATCH 95/95] Fix submodule
---
third_party/gflags | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/third_party/gflags b/third_party/gflags
index 30dbc81fb5f..f8a0efe03aa 160000
--- a/third_party/gflags
+++ b/third_party/gflags
@@ -1 +1 @@
-Subproject commit 30dbc81fb5ffdc98ea9b14b1918bfe4e8779b26e
+Subproject commit f8a0efe03aa69b3336d8e228b37d4ccb17324b88