commit
00808310d7
@ -0,0 +1,6 @@
|
||||
SOURCES/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz
|
||||
SOURCES/opencensus-proto-0.3.0.tar.gz
|
||||
SOURCES/googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz
|
||||
SOURCES/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz
|
||||
SOURCES/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz
|
||||
SOURCES/grpc-1.48.4.tar.gz
|
@ -0,0 +1,6 @@
|
||||
a152c3abb31dd14e5b0dbfe25ff5a3fbb856cb3b SOURCES/xds-cb28da3451f158a947dfc45090fe92b07b243bc1.tar.gz
|
||||
4542627be900520721af59b93e211683dbb0e4bc SOURCES/opencensus-proto-0.3.0.tar.gz
|
||||
a01364a9c6e7aa314b6cffdf22377a7bde85ba11 SOURCES/googletest-0e402173c97aea7a00749e825b194bfede4f2e45.tar.gz
|
||||
91c505c822dfb16318290afacb90478b8a6200a4 SOURCES/googleapis-2f9af297c84c55c8b871ba4495e01ade42476c92.tar.gz
|
||||
8c793d42dea7e87a1c7736406d63d0ce0f2e9a00 SOURCES/data-plane-api-9c42588c956220b48eb3099d186487c2f04d32ec.tar.gz
|
||||
880c2177d6021bd6c4c0a9d01a32e974f6b43925 SOURCES/grpc-1.48.4.tar.gz
|
@ -0,0 +1,121 @@
|
||||
From a30b55f51196b446dfb7bc1422cad0dc98274571 Mon Sep 17 00:00:00 2001
|
||||
From: Carl George <carlwgeorge@gmail.com>
|
||||
Date: Mon, 9 Sep 2024 18:46:13 -0500
|
||||
Subject: [PATCH] Remove usage of coverage
|
||||
|
||||
https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters
|
||||
---
|
||||
src/python/grpcio_tests/setup.py | 2 +-
|
||||
src/python/grpcio_tests/tests/_loader.py | 8 ------
|
||||
src/python/grpcio_tests/tests/_result.py | 35 ++----------------------
|
||||
3 files changed, 3 insertions(+), 42 deletions(-)
|
||||
|
||||
diff --git a/src/python/grpcio_tests/setup.py b/src/python/grpcio_tests/setup.py
|
||||
index f0679eb170..4345b94253 100644
|
||||
--- a/src/python/grpcio_tests/setup.py
|
||||
+++ b/src/python/grpcio_tests/setup.py
|
||||
@@ -37,7 +37,7 @@ PACKAGE_DIRECTORIES = {
|
||||
}
|
||||
|
||||
INSTALL_REQUIRES = (
|
||||
- 'coverage>=4.0', 'grpcio>={version}'.format(version=grpc_version.VERSION),
|
||||
+ 'grpcio>={version}'.format(version=grpc_version.VERSION),
|
||||
'grpcio-channelz>={version}'.format(version=grpc_version.VERSION),
|
||||
'grpcio-status>={version}'.format(version=grpc_version.VERSION),
|
||||
'grpcio-tools>={version}'.format(version=grpc_version.VERSION),
|
||||
diff --git a/src/python/grpcio_tests/tests/_loader.py b/src/python/grpcio_tests/tests/_loader.py
|
||||
index 80c107aa8e..cb4e934c1b 100644
|
||||
--- a/src/python/grpcio_tests/tests/_loader.py
|
||||
+++ b/src/python/grpcio_tests/tests/_loader.py
|
||||
@@ -19,8 +19,6 @@ import pkgutil
|
||||
import re
|
||||
import unittest
|
||||
|
||||
-import coverage
|
||||
-
|
||||
TEST_MODULE_REGEX = r'^.*_test$'
|
||||
|
||||
|
||||
@@ -44,10 +42,6 @@ class Loader(object):
|
||||
def loadTestsFromNames(self, names, module=None):
|
||||
"""Function mirroring TestLoader::loadTestsFromNames, as expected by
|
||||
setuptools.setup argument `test_loader`."""
|
||||
- # ensure that we capture decorators and definitions (else our coverage
|
||||
- # measure unnecessarily suffers)
|
||||
- coverage_context = coverage.Coverage(data_suffix=True)
|
||||
- coverage_context.start()
|
||||
imported_modules = tuple(
|
||||
importlib.import_module(name) for name in names)
|
||||
for imported_module in imported_modules:
|
||||
@@ -58,8 +52,6 @@ class Loader(object):
|
||||
except AttributeError:
|
||||
continue
|
||||
self.walk_packages(package_paths)
|
||||
- coverage_context.stop()
|
||||
- coverage_context.save()
|
||||
return self.suite
|
||||
|
||||
def walk_packages(self, package_paths):
|
||||
diff --git a/src/python/grpcio_tests/tests/_result.py b/src/python/grpcio_tests/tests/_result.py
|
||||
index 389d5f4f96..9d3e0cf15c 100644
|
||||
--- a/src/python/grpcio_tests/tests/_result.py
|
||||
+++ b/src/python/grpcio_tests/tests/_result.py
|
||||
@@ -20,7 +20,6 @@ import traceback
|
||||
import unittest
|
||||
from xml.etree import ElementTree
|
||||
|
||||
-import coverage
|
||||
from six import moves
|
||||
|
||||
from tests import _loader
|
||||
@@ -216,36 +215,6 @@ class AugmentedResult(unittest.TestResult):
|
||||
if filter(self.cases[case_id]))
|
||||
|
||||
|
||||
-class CoverageResult(AugmentedResult):
|
||||
- """Extension to AugmentedResult adding coverage.py support per test.\
|
||||
-
|
||||
- Attributes:
|
||||
- coverage_context (coverage.Coverage): coverage.py management object.
|
||||
- """
|
||||
-
|
||||
- def __init__(self, id_map):
|
||||
- """See AugmentedResult.__init__."""
|
||||
- super(CoverageResult, self).__init__(id_map=id_map)
|
||||
- self.coverage_context = None
|
||||
-
|
||||
- def startTest(self, test):
|
||||
- """See unittest.TestResult.startTest.
|
||||
-
|
||||
- Additionally initializes and begins code coverage tracking."""
|
||||
- super(CoverageResult, self).startTest(test)
|
||||
- self.coverage_context = coverage.Coverage(data_suffix=True)
|
||||
- self.coverage_context.start()
|
||||
-
|
||||
- def stopTest(self, test):
|
||||
- """See unittest.TestResult.stopTest.
|
||||
-
|
||||
- Additionally stops and deinitializes code coverage tracking."""
|
||||
- super(CoverageResult, self).stopTest(test)
|
||||
- self.coverage_context.stop()
|
||||
- self.coverage_context.save()
|
||||
- self.coverage_context = None
|
||||
-
|
||||
-
|
||||
class _Colors(object):
|
||||
"""Namespaced constants for terminal color magic numbers."""
|
||||
HEADER = '\033[95m'
|
||||
@@ -258,8 +227,8 @@ class _Colors(object):
|
||||
END = '\033[0m'
|
||||
|
||||
|
||||
-class TerminalResult(CoverageResult):
|
||||
- """Extension to CoverageResult adding basic terminal reporting."""
|
||||
+class TerminalResult(AugmentedResult):
|
||||
+ """Extension to AugmentedResult adding basic terminal reporting."""
|
||||
|
||||
def __init__(self, out, id_map):
|
||||
"""Initialize the result object.
|
||||
--
|
||||
2.46.0
|
||||
|
@ -0,0 +1,145 @@
|
||||
From 45d31dba83999638808891ee7bf93638106bdb71 Mon Sep 17 00:00:00 2001
|
||||
From: Atri Bhattacharya <badshah400@gmail.com>
|
||||
Date: Thu, 7 Sep 2023 07:06:56 +0200
|
||||
Subject: [PATCH] Specify noexcept for cdef functions.
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
To build against cython 3.0, cdef functions that do not raise exceptions
|
||||
need to be explicitly declared as noexcept. Fixes issue #33918.
|
||||
|
||||
Co-Authored-By: Miro Hrončok <miro@hroncok.cz>
|
||||
---
|
||||
.../grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi | 2 +-
|
||||
.../grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi | 2 +-
|
||||
.../grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi | 2 +-
|
||||
.../grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi | 12 ++++++------
|
||||
.../grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi | 6 +++---
|
||||
.../grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi | 6 +++---
|
||||
6 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi
|
||||
index e54e510..26edbdb 100644
|
||||
--- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi
|
||||
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi
|
||||
@@ -48,7 +48,7 @@ cdef class CallbackWrapper:
|
||||
@staticmethod
|
||||
cdef void functor_run(
|
||||
grpc_completion_queue_functor* functor,
|
||||
- int succeed)
|
||||
+ int succeed) noexcept
|
||||
|
||||
cdef grpc_completion_queue_functor *c_functor(self)
|
||||
|
||||
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi
|
||||
index f2d94a9..5dda90a 100644
|
||||
--- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi
|
||||
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi
|
||||
@@ -50,7 +50,7 @@ cdef class CallbackWrapper:
|
||||
@staticmethod
|
||||
cdef void functor_run(
|
||||
grpc_completion_queue_functor* functor,
|
||||
- int success):
|
||||
+ int success) noexcept:
|
||||
cdef CallbackContext *context = <CallbackContext *>functor
|
||||
cdef object waiter = <object>context.waiter
|
||||
if not waiter.cancelled():
|
||||
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
|
||||
index 23de3a0..52071f5 100644
|
||||
--- a/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
|
||||
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/credentials.pyx.pxi
|
||||
@@ -314,7 +314,7 @@ def server_credentials_ssl_dynamic_cert_config(initial_cert_config,
|
||||
return credentials
|
||||
|
||||
cdef grpc_ssl_certificate_config_reload_status _server_cert_config_fetcher_wrapper(
|
||||
- void* user_data, grpc_ssl_server_certificate_config **config) with gil:
|
||||
+ void* user_data, grpc_ssl_server_certificate_config **config) noexcept with gil:
|
||||
# This is a credentials.ServerCertificateConfig
|
||||
cdef ServerCertificateConfig cert_config = None
|
||||
if not user_data:
|
||||
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi
|
||||
index a925bdd..5e97a6d 100644
|
||||
--- a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi
|
||||
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pxd.pxi
|
||||
@@ -15,15 +15,15 @@
|
||||
|
||||
cdef extern from "pthread.h" nogil:
|
||||
int pthread_atfork(
|
||||
- void (*prepare)() nogil,
|
||||
- void (*parent)() nogil,
|
||||
- void (*child)() nogil)
|
||||
+ void (*prepare)() noexcept nogil,
|
||||
+ void (*parent)() noexcept nogil,
|
||||
+ void (*child)() noexcept nogil) noexcept
|
||||
|
||||
|
||||
-cdef void __prefork() nogil
|
||||
+cdef void __prefork() noexcept nogil
|
||||
|
||||
|
||||
-cdef void __postfork_parent() nogil
|
||||
+cdef void __postfork_parent() noexcept nogil
|
||||
|
||||
|
||||
-cdef void __postfork_child() nogil
|
||||
\ No newline at end of file
|
||||
+cdef void __postfork_child() noexcept nogil
|
||||
\ No newline at end of file
|
||||
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
|
||||
index 53657e8..d4d1cff 100644
|
||||
--- a/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
|
||||
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/fork_posix.pyx.pxi
|
||||
@@ -34,7 +34,7 @@ _GRPC_ENABLE_FORK_SUPPORT = (
|
||||
|
||||
_fork_handler_failed = False
|
||||
|
||||
-cdef void __prefork() nogil:
|
||||
+cdef void __prefork() noexcept nogil:
|
||||
with gil:
|
||||
global _fork_handler_failed
|
||||
_fork_handler_failed = False
|
||||
@@ -48,14 +48,14 @@ cdef void __prefork() nogil:
|
||||
_fork_handler_failed = True
|
||||
|
||||
|
||||
-cdef void __postfork_parent() nogil:
|
||||
+cdef void __postfork_parent() noexcept nogil:
|
||||
with gil:
|
||||
with _fork_state.fork_in_progress_condition:
|
||||
_fork_state.fork_in_progress = False
|
||||
_fork_state.fork_in_progress_condition.notify_all()
|
||||
|
||||
|
||||
-cdef void __postfork_child() nogil:
|
||||
+cdef void __postfork_child() noexcept nogil:
|
||||
with gil:
|
||||
try:
|
||||
if _fork_handler_failed:
|
||||
diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi
|
||||
index da4b81b..f594100 100644
|
||||
--- a/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi
|
||||
+++ b/src/python/grpcio/grpc/_cython/_cygrpc/vtable.pyx.pxi
|
||||
@@ -13,16 +13,16 @@
|
||||
# limitations under the License.
|
||||
|
||||
# TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
|
||||
-cdef void* _copy_pointer(void* pointer):
|
||||
+cdef void* _copy_pointer(void* pointer) noexcept:
|
||||
return pointer
|
||||
|
||||
|
||||
# TODO(https://github.com/grpc/grpc/issues/15662): Reform this.
|
||||
-cdef void _destroy_pointer(void* pointer):
|
||||
+cdef void _destroy_pointer(void* pointer) noexcept:
|
||||
pass
|
||||
|
||||
|
||||
-cdef int _compare_pointer(void* first_pointer, void* second_pointer):
|
||||
+cdef int _compare_pointer(void* first_pointer, void* second_pointer) noexcept:
|
||||
if first_pointer < second_pointer:
|
||||
return -1
|
||||
elif first_pointer > second_pointer:
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,695 @@
|
||||
From 9f01fd62c356c05d14abbaebfcedf0b387d1cb96 Mon Sep 17 00:00:00 2001
|
||||
From: Craig Tiller <ctiller@google.com>
|
||||
Date: Tue, 7 Feb 2023 08:27:04 -0800
|
||||
Subject: [PATCH] [http2] Dont drop connections on metadata limit exceeded
|
||||
(#32309)
|
||||
|
||||
* [http] Dont drop connections on metadata limit exceeded
|
||||
|
||||
* remove bad test
|
||||
|
||||
* Automated change: Fix sanity tests
|
||||
|
||||
---------
|
||||
|
||||
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
|
||||
---
|
||||
CMakeLists.txt | 38 ---
|
||||
build_autogenerated.yaml | 13 -
|
||||
.../chttp2/transport/hpack_parser.cc | 11 +-
|
||||
.../ext/transport/chttp2/transport/internal.h | 2 -
|
||||
.../ext/transport/chttp2/transport/parsing.cc | 6 +-
|
||||
test/core/bad_client/generate_tests.bzl | 1 -
|
||||
test/core/bad_client/tests/large_metadata.cc | 108 ---------
|
||||
.../bad_client/tests/large_metadata.headers | 106 --------
|
||||
test/core/end2end/tests/large_metadata.cc | 226 +++++++++---------
|
||||
tools/run_tests/generated/tests.json | 24 --
|
||||
10 files changed, 126 insertions(+), 409 deletions(-)
|
||||
delete mode 100644 test/core/bad_client/tests/large_metadata.cc
|
||||
delete mode 100644 test/core/bad_client/tests/large_metadata.headers
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 1ecaea8eb7..661ce2c511 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -1078,7 +1078,6 @@ if(gRPC_BUILD_TESTS)
|
||||
add_dependencies(buildtests_cxx istio_echo_server_test)
|
||||
add_dependencies(buildtests_cxx join_test)
|
||||
add_dependencies(buildtests_cxx json_test)
|
||||
- add_dependencies(buildtests_cxx large_metadata_bad_client_test)
|
||||
add_dependencies(buildtests_cxx latch_test)
|
||||
add_dependencies(buildtests_cxx lb_get_cpu_stats_test)
|
||||
add_dependencies(buildtests_cxx lb_load_data_store_test)
|
||||
@@ -12796,43 +12795,6 @@ target_link_libraries(json_test
|
||||
)
|
||||
|
||||
|
||||
-endif()
|
||||
-if(gRPC_BUILD_TESTS)
|
||||
-
|
||||
-add_executable(large_metadata_bad_client_test
|
||||
- test/core/bad_client/bad_client.cc
|
||||
- test/core/bad_client/tests/large_metadata.cc
|
||||
- test/core/end2end/cq_verifier.cc
|
||||
- third_party/googletest/googletest/src/gtest-all.cc
|
||||
- third_party/googletest/googlemock/src/gmock-all.cc
|
||||
-)
|
||||
-
|
||||
-target_include_directories(large_metadata_bad_client_test
|
||||
- PRIVATE
|
||||
- ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
- ${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||
- ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
|
||||
- ${_gRPC_RE2_INCLUDE_DIR}
|
||||
- ${_gRPC_SSL_INCLUDE_DIR}
|
||||
- ${_gRPC_UPB_GENERATED_DIR}
|
||||
- ${_gRPC_UPB_GRPC_GENERATED_DIR}
|
||||
- ${_gRPC_UPB_INCLUDE_DIR}
|
||||
- ${_gRPC_XXHASH_INCLUDE_DIR}
|
||||
- ${_gRPC_ZLIB_INCLUDE_DIR}
|
||||
- third_party/googletest/googletest/include
|
||||
- third_party/googletest/googletest
|
||||
- third_party/googletest/googlemock/include
|
||||
- third_party/googletest/googlemock
|
||||
- ${_gRPC_PROTO_GENS_DIR}
|
||||
-)
|
||||
-
|
||||
-target_link_libraries(large_metadata_bad_client_test
|
||||
- ${_gRPC_PROTOBUF_LIBRARIES}
|
||||
- ${_gRPC_ALLTARGETS_LIBRARIES}
|
||||
- grpc_test_util
|
||||
-)
|
||||
-
|
||||
-
|
||||
endif()
|
||||
if(gRPC_BUILD_TESTS)
|
||||
|
||||
diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml
|
||||
index 941a095cd1..9c2fbaf2b8 100644
|
||||
--- a/build_autogenerated.yaml
|
||||
+++ b/build_autogenerated.yaml
|
||||
@@ -6683,19 +6683,6 @@ targets:
|
||||
deps:
|
||||
- grpc_test_util
|
||||
uses_polling: false
|
||||
-- name: large_metadata_bad_client_test
|
||||
- gtest: true
|
||||
- build: test
|
||||
- language: c++
|
||||
- headers:
|
||||
- - test/core/bad_client/bad_client.h
|
||||
- - test/core/end2end/cq_verifier.h
|
||||
- src:
|
||||
- - test/core/bad_client/bad_client.cc
|
||||
- - test/core/bad_client/tests/large_metadata.cc
|
||||
- - test/core/end2end/cq_verifier.cc
|
||||
- deps:
|
||||
- - grpc_test_util
|
||||
- name: latch_test
|
||||
gtest: true
|
||||
build: test
|
||||
diff --git a/src/core/ext/transport/chttp2/transport/hpack_parser.cc b/src/core/ext/transport/chttp2/transport/hpack_parser.cc
|
||||
index 5354338cba..314707b59e 100644
|
||||
--- a/src/core/ext/transport/chttp2/transport/hpack_parser.cc
|
||||
+++ b/src/core/ext/transport/chttp2/transport/hpack_parser.cc
|
||||
@@ -1218,12 +1218,17 @@ class HPackParser::Parser {
|
||||
"). GRPC_ARG_MAX_METADATA_SIZE can be set to increase this limit.",
|
||||
*frame_length_, metadata_size_limit_);
|
||||
if (metadata_buffer_ != nullptr) metadata_buffer_->Clear();
|
||||
+ // StreamId is used as a signal to skip this stream but keep the connection
|
||||
+ // alive
|
||||
return input_->MaybeSetErrorAndReturn(
|
||||
[] {
|
||||
return grpc_error_set_int(
|
||||
- GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
||||
- "received initial metadata size exceeds limit"),
|
||||
- GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_RESOURCE_EXHAUSTED);
|
||||
+ grpc_error_set_int(
|
||||
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
||||
+ "received initial metadata size exceeds limit"),
|
||||
+ GRPC_ERROR_INT_GRPC_STATUS,
|
||||
+ GRPC_STATUS_RESOURCE_EXHAUSTED),
|
||||
+ GRPC_ERROR_INT_STREAM_ID, 0);
|
||||
},
|
||||
false);
|
||||
}
|
||||
diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h
|
||||
index 4af3c4ec9d..e01cff72c1 100644
|
||||
--- a/src/core/ext/transport/chttp2/transport/internal.h
|
||||
+++ b/src/core/ext/transport/chttp2/transport/internal.h
|
||||
@@ -541,8 +541,6 @@ struct grpc_chttp2_stream {
|
||||
|
||||
grpc_core::Timestamp deadline = grpc_core::Timestamp::InfFuture();
|
||||
|
||||
- /** saw some stream level error */
|
||||
- grpc_error_handle forced_close_error = GRPC_ERROR_NONE;
|
||||
/** how many header frames have we received? */
|
||||
uint8_t header_frames_received = 0;
|
||||
/** number of bytes received - reset at end of parse thread execution */
|
||||
diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc
|
||||
index 6a45381e54..48dddc9313 100644
|
||||
--- a/src/core/ext/transport/chttp2/transport/parsing.cc
|
||||
+++ b/src/core/ext/transport/chttp2/transport/parsing.cc
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include <string>
|
||||
+#include <utility>
|
||||
|
||||
#include "absl/base/attributes.h"
|
||||
#include "absl/status/status.h"
|
||||
@@ -675,10 +676,7 @@ static grpc_error_handle parse_frame_slice(grpc_chttp2_transport* t,
|
||||
}
|
||||
grpc_chttp2_parsing_become_skip_parser(t);
|
||||
if (s) {
|
||||
- s->forced_close_error = err;
|
||||
- grpc_chttp2_add_rst_stream_to_next_write(t, t->incoming_stream_id,
|
||||
- GRPC_HTTP2_PROTOCOL_ERROR,
|
||||
- &s->stats.outgoing);
|
||||
+ grpc_chttp2_cancel_stream(t, s, std::exchange(err, absl::OkStatus()));
|
||||
} else {
|
||||
GRPC_ERROR_UNREF(err);
|
||||
}
|
||||
diff --git a/test/core/bad_client/generate_tests.bzl b/test/core/bad_client/generate_tests.bzl
|
||||
index 85aafed655..6100d142d6 100755
|
||||
--- a/test/core/bad_client/generate_tests.bzl
|
||||
+++ b/test/core/bad_client/generate_tests.bzl
|
||||
@@ -29,7 +29,6 @@ BAD_CLIENT_TESTS = {
|
||||
"headers": test_options(),
|
||||
"initial_settings_frame": test_options(),
|
||||
"head_of_line_blocking": test_options(),
|
||||
- "large_metadata": test_options(),
|
||||
"out_of_bounds": test_options(),
|
||||
"server_registered_method": test_options(),
|
||||
"simple_request": test_options(),
|
||||
diff --git a/test/core/bad_client/tests/large_metadata.cc b/test/core/bad_client/tests/large_metadata.cc
|
||||
deleted file mode 100644
|
||||
index 9423dc3f6d..0000000000
|
||||
--- a/test/core/bad_client/tests/large_metadata.cc
|
||||
+++ /dev/null
|
||||
@@ -1,108 +0,0 @@
|
||||
-/*
|
||||
- *
|
||||
- * Copyright 2015 gRPC authors.
|
||||
- *
|
||||
- * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
- * you may not use this file except in compliance with the License.
|
||||
- * You may obtain a copy of the License at
|
||||
- *
|
||||
- * http://www.apache.org/licenses/LICENSE-2.0
|
||||
- *
|
||||
- * Unless required by applicable law or agreed to in writing, software
|
||||
- * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
- * See the License for the specific language governing permissions and
|
||||
- * limitations under the License.
|
||||
- *
|
||||
- */
|
||||
-
|
||||
-#include <string.h>
|
||||
-
|
||||
-#include "absl/strings/str_format.h"
|
||||
-#include "absl/strings/str_join.h"
|
||||
-
|
||||
-#include <grpc/support/alloc.h>
|
||||
-#include <grpc/support/string_util.h>
|
||||
-
|
||||
-#include "src/core/lib/gpr/string.h"
|
||||
-#include "src/core/lib/surface/server.h"
|
||||
-#include "test/core/bad_client/bad_client.h"
|
||||
-#include "test/core/end2end/cq_verifier.h"
|
||||
-
|
||||
-// The large-metadata headers that we're adding for this test are not
|
||||
-// actually appended to this in a single string, since the string would
|
||||
-// be longer than the C99 string literal limit. Instead, we dynamically
|
||||
-// construct it by adding the large headers one at a time.
|
||||
-
|
||||
-/* headers: generated from large_metadata.headers in this directory */
|
||||
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST \
|
||||
- "\x00\x00\x00\x04\x01\x00\x00\x00\x00" \
|
||||
- "\x00" \
|
||||
- "5{\x01\x05\x00\x00\x00\x01" \
|
||||
- "\x10\x05:path\x08/foo/bar" \
|
||||
- "\x10\x07:scheme\x04http" \
|
||||
- "\x10\x07:method\x04POST" \
|
||||
- "\x10\x0a:authority\x09localhost" \
|
||||
- "\x10\x0c" \
|
||||
- "content-type\x10" \
|
||||
- "application/grpc" \
|
||||
- "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \
|
||||
- "\x10\x02te\x08trailers" \
|
||||
- "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"
|
||||
-
|
||||
-// Each large-metadata header is constructed from these start and end
|
||||
-// strings, with a two-digit number in between.
|
||||
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR "\x10\x0duser-header"
|
||||
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR \
|
||||
- "~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
|
||||
- "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
-
|
||||
-// The size of each large-metadata header string.
|
||||
-#define PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE \
|
||||
- ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR) - 1) + 2 + \
|
||||
- (sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR) - 1))
|
||||
-
|
||||
-// The number of headers we're adding and the total size of the client
|
||||
-// payload.
|
||||
-#define NUM_HEADERS 46
|
||||
-#define TOO_MUCH_METADATA_FROM_CLIENT_REQUEST_SIZE \
|
||||
- ((sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST) - 1) + \
|
||||
- (NUM_HEADERS * PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_SIZE) + 1)
|
||||
-
|
||||
-static void verifier_fails(grpc_server* server, grpc_completion_queue* cq,
|
||||
- void* /*registered_method*/) {
|
||||
- while (grpc_core::Server::FromC(server)->HasOpenConnections()) {
|
||||
- GPR_ASSERT(grpc_completion_queue_next(
|
||||
- cq, grpc_timeout_milliseconds_to_deadline(20), nullptr)
|
||||
- .type == GRPC_QUEUE_TIMEOUT);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-int main(int argc, char** argv) {
|
||||
- int i;
|
||||
- grpc_init();
|
||||
- grpc::testing::TestEnvironment env(&argc, argv);
|
||||
-
|
||||
- // Test sending more metadata than the server will accept.
|
||||
- std::vector<std::string> headers;
|
||||
- for (i = 0; i < NUM_HEADERS; ++i) {
|
||||
- headers.push_back(absl::StrFormat(
|
||||
- "%s%02d%s", PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_START_STR, i,
|
||||
- PFX_TOO_MUCH_METADATA_FROM_CLIENT_HEADER_END_STR));
|
||||
- }
|
||||
- std::string client_headers = absl::StrJoin(headers, "");
|
||||
- char client_payload[TOO_MUCH_METADATA_FROM_CLIENT_REQUEST_SIZE] =
|
||||
- PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST;
|
||||
- memcpy(client_payload + sizeof(PFX_TOO_MUCH_METADATA_FROM_CLIENT_REQUEST) - 1,
|
||||
- client_headers.data(), client_headers.size());
|
||||
- grpc_bad_client_arg args[2];
|
||||
- args[0] = connection_preface_arg;
|
||||
- args[1].client_validator = rst_stream_client_validator;
|
||||
- args[1].client_payload = client_payload;
|
||||
- args[1].client_payload_length = sizeof(client_payload) - 1;
|
||||
-
|
||||
- grpc_run_bad_client_test(verifier_fails, args, 2, 0);
|
||||
-
|
||||
- grpc_shutdown();
|
||||
- return 0;
|
||||
-}
|
||||
diff --git a/test/core/bad_client/tests/large_metadata.headers b/test/core/bad_client/tests/large_metadata.headers
|
||||
deleted file mode 100644
|
||||
index 75de3ef100..0000000000
|
||||
--- a/test/core/bad_client/tests/large_metadata.headers
|
||||
+++ /dev/null
|
||||
@@ -1,106 +0,0 @@
|
||||
-# headers used in simple_request.c
|
||||
-# use tools/codegen/core/gen_header_frame.py --set_end_stream to generate
|
||||
-# the binary strings contained in the source code
|
||||
-:path: /foo/bar
|
||||
-:scheme: http
|
||||
-:method: POST
|
||||
-:authority: localhost
|
||||
-content-type: application/grpc
|
||||
-grpc-accept-encoding: identity,deflate,gzip
|
||||
-te: trailers
|
||||
-user-agent: bad-client grpc-c/0.12.0.0 (linux)
|
||||
-user-header00: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header01: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header02: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header03: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header04: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header05: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header06: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header07: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header08: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header09: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header10: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header11: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header12: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header13: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header14: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header15: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header16: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header17: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header18: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header19: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header20: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header21: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header22: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header23: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header24: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header25: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header26: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header27: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header28: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header29: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header30: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header31: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header32: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header33: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header34: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header35: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header36: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header37: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header38: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header39: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header40: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header41: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header42: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header43: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header44: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header45: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header46: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header47: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header48: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header49: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header50: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header51: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header52: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header53: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header54: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header55: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header56: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header57: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header58: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header59: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header60: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header61: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header62: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header63: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header64: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header65: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header66: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header67: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header68: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header69: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header70: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header71: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header72: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header73: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header74: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header75: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header76: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header77: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header78: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header79: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header80: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header81: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header82: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header83: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header84: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header85: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header86: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header87: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header88: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header89: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header90: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header91: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header92: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header93: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
-user-header94: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
diff --git a/test/core/end2end/tests/large_metadata.cc b/test/core/end2end/tests/large_metadata.cc
|
||||
index 72cf519899..08cd20cb4f 100644
|
||||
--- a/test/core/end2end/tests/large_metadata.cc
|
||||
+++ b/test/core/end2end/tests/large_metadata.cc
|
||||
@@ -247,10 +247,6 @@ static void test_request_with_large_metadata(grpc_end2end_test_config config) {
|
||||
// Server responds with metadata larger than what the client accepts.
|
||||
static void test_request_with_bad_large_metadata_response(
|
||||
grpc_end2end_test_config config) {
|
||||
- grpc_call* c;
|
||||
- grpc_call* s;
|
||||
- grpc_metadata meta;
|
||||
- const size_t large_size = 64 * 1024;
|
||||
grpc_arg arg;
|
||||
arg.type = GRPC_ARG_INTEGER;
|
||||
arg.key = const_cast<char*>(GRPC_ARG_MAX_METADATA_SIZE);
|
||||
@@ -259,115 +255,125 @@ static void test_request_with_bad_large_metadata_response(
|
||||
grpc_end2end_test_fixture f = begin_test(
|
||||
config, "test_request_with_bad_large_metadata_response", &args, &args);
|
||||
cq_verifier* cqv = cq_verifier_create(f.cq);
|
||||
- grpc_op ops[6];
|
||||
- grpc_op* op;
|
||||
- grpc_metadata_array initial_metadata_recv;
|
||||
- grpc_metadata_array trailing_metadata_recv;
|
||||
- grpc_metadata_array request_metadata_recv;
|
||||
- grpc_call_details call_details;
|
||||
- grpc_status_code status;
|
||||
- grpc_call_error error;
|
||||
- grpc_slice details;
|
||||
- int was_cancelled = 2;
|
||||
-
|
||||
- gpr_timespec deadline = five_seconds_from_now();
|
||||
- c = grpc_channel_create_call(f.client, nullptr, GRPC_PROPAGATE_DEFAULTS, f.cq,
|
||||
- grpc_slice_from_static_string("/foo"), nullptr,
|
||||
- deadline, nullptr);
|
||||
- GPR_ASSERT(c);
|
||||
-
|
||||
- meta.key = grpc_slice_from_static_string("key");
|
||||
- meta.value = grpc_slice_malloc(large_size);
|
||||
- memset(GRPC_SLICE_START_PTR(meta.value), 'a', large_size);
|
||||
-
|
||||
- grpc_metadata_array_init(&initial_metadata_recv);
|
||||
- grpc_metadata_array_init(&trailing_metadata_recv);
|
||||
- grpc_metadata_array_init(&request_metadata_recv);
|
||||
- grpc_call_details_init(&call_details);
|
||||
-
|
||||
- memset(ops, 0, sizeof(ops));
|
||||
- // Client: send request.
|
||||
- op = ops;
|
||||
- op->op = GRPC_OP_SEND_INITIAL_METADATA;
|
||||
- op->data.send_initial_metadata.count = 0;
|
||||
- op->flags = 0;
|
||||
- op->reserved = nullptr;
|
||||
- op++;
|
||||
- op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
|
||||
- op->flags = 0;
|
||||
- op->reserved = nullptr;
|
||||
- op++;
|
||||
- op->op = GRPC_OP_RECV_INITIAL_METADATA;
|
||||
- op->data.recv_initial_metadata.recv_initial_metadata = &initial_metadata_recv;
|
||||
- op->flags = 0;
|
||||
- op->reserved = nullptr;
|
||||
- op++;
|
||||
- op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
|
||||
- op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv;
|
||||
- op->data.recv_status_on_client.status = &status;
|
||||
- op->data.recv_status_on_client.status_details = &details;
|
||||
- op->flags = 0;
|
||||
- op->reserved = nullptr;
|
||||
- op++;
|
||||
- error = grpc_call_start_batch(c, ops, static_cast<size_t>(op - ops), tag(1),
|
||||
- nullptr);
|
||||
- GPR_ASSERT(GRPC_CALL_OK == error);
|
||||
-
|
||||
- error =
|
||||
- grpc_server_request_call(f.server, &s, &call_details,
|
||||
- &request_metadata_recv, f.cq, f.cq, tag(101));
|
||||
- GPR_ASSERT(GRPC_CALL_OK == error);
|
||||
-
|
||||
- CQ_EXPECT_COMPLETION(cqv, tag(101), 1);
|
||||
- cq_verify(cqv);
|
||||
-
|
||||
- memset(ops, 0, sizeof(ops));
|
||||
- // Server: send large initial metadata
|
||||
- op = ops;
|
||||
- op->op = GRPC_OP_SEND_INITIAL_METADATA;
|
||||
- op->data.send_initial_metadata.count = 1;
|
||||
- op->data.send_initial_metadata.metadata = &meta;
|
||||
- op->flags = 0;
|
||||
- op->reserved = nullptr;
|
||||
- op++;
|
||||
- op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
|
||||
- op->data.recv_close_on_server.cancelled = &was_cancelled;
|
||||
- op->flags = 0;
|
||||
- op->reserved = nullptr;
|
||||
- op++;
|
||||
- op->op = GRPC_OP_SEND_STATUS_FROM_SERVER;
|
||||
- op->data.send_status_from_server.trailing_metadata_count = 0;
|
||||
- op->data.send_status_from_server.status = GRPC_STATUS_OK;
|
||||
- grpc_slice status_details = grpc_slice_from_static_string("xyz");
|
||||
- op->data.send_status_from_server.status_details = &status_details;
|
||||
- op->flags = 0;
|
||||
- op->reserved = nullptr;
|
||||
- op++;
|
||||
- error = grpc_call_start_batch(s, ops, static_cast<size_t>(op - ops), tag(102),
|
||||
- nullptr);
|
||||
- GPR_ASSERT(GRPC_CALL_OK == error);
|
||||
- CQ_EXPECT_COMPLETION(cqv, tag(102), 1);
|
||||
- CQ_EXPECT_COMPLETION(cqv, tag(1), 1);
|
||||
- cq_verify(cqv);
|
||||
-
|
||||
- GPR_ASSERT(status == GRPC_STATUS_RESOURCE_EXHAUSTED);
|
||||
- GPR_ASSERT(0 == grpc_slice_str_cmp(
|
||||
- details, "received initial metadata size exceeds limit"));
|
||||
- GPR_ASSERT(0 == grpc_slice_str_cmp(call_details.method, "/foo"));
|
||||
-
|
||||
- grpc_slice_unref(details);
|
||||
- grpc_metadata_array_destroy(&initial_metadata_recv);
|
||||
- grpc_metadata_array_destroy(&trailing_metadata_recv);
|
||||
- grpc_metadata_array_destroy(&request_metadata_recv);
|
||||
- grpc_call_details_destroy(&call_details);
|
||||
-
|
||||
- grpc_call_unref(c);
|
||||
- grpc_call_unref(s);
|
||||
|
||||
+ for (int i = 0; i < 10; i++) {
|
||||
+ grpc_call* c;
|
||||
+ grpc_call* s;
|
||||
+ grpc_metadata meta;
|
||||
+ const size_t large_size = 64 * 1024;
|
||||
+ grpc_op ops[6];
|
||||
+ grpc_op* op;
|
||||
+ grpc_metadata_array initial_metadata_recv;
|
||||
+ grpc_metadata_array trailing_metadata_recv;
|
||||
+ grpc_metadata_array request_metadata_recv;
|
||||
+ grpc_call_details call_details;
|
||||
+ grpc_status_code status;
|
||||
+ grpc_call_error error;
|
||||
+ grpc_slice details;
|
||||
+ int was_cancelled = 2;
|
||||
+
|
||||
+ gpr_timespec deadline = five_seconds_from_now();
|
||||
+ c = grpc_channel_create_call(f.client, nullptr, GRPC_PROPAGATE_DEFAULTS,
|
||||
+ f.cq, grpc_slice_from_static_string("/foo"),
|
||||
+ nullptr, deadline, nullptr);
|
||||
+ GPR_ASSERT(c);
|
||||
+
|
||||
+ meta.key = grpc_slice_from_static_string("key");
|
||||
+ meta.value = grpc_slice_malloc(large_size);
|
||||
+ memset(GRPC_SLICE_START_PTR(meta.value), 'a', large_size);
|
||||
+
|
||||
+ grpc_metadata_array_init(&initial_metadata_recv);
|
||||
+ grpc_metadata_array_init(&trailing_metadata_recv);
|
||||
+ grpc_metadata_array_init(&request_metadata_recv);
|
||||
+ grpc_call_details_init(&call_details);
|
||||
+
|
||||
+ memset(ops, 0, sizeof(ops));
|
||||
+ // Client: send request.
|
||||
+ op = ops;
|
||||
+ op->op = GRPC_OP_SEND_INITIAL_METADATA;
|
||||
+ op->data.send_initial_metadata.count = 0;
|
||||
+ op->flags = 0;
|
||||
+ op->reserved = nullptr;
|
||||
+ op++;
|
||||
+ op->op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
|
||||
+ op->flags = 0;
|
||||
+ op->reserved = nullptr;
|
||||
+ op++;
|
||||
+ op->op = GRPC_OP_RECV_INITIAL_METADATA;
|
||||
+ op->data.recv_initial_metadata.recv_initial_metadata =
|
||||
+ &initial_metadata_recv;
|
||||
+ op->flags = 0;
|
||||
+ op->reserved = nullptr;
|
||||
+ op++;
|
||||
+ op->op = GRPC_OP_RECV_STATUS_ON_CLIENT;
|
||||
+ op->data.recv_status_on_client.trailing_metadata = &trailing_metadata_recv;
|
||||
+ op->data.recv_status_on_client.status = &status;
|
||||
+ op->data.recv_status_on_client.status_details = &details;
|
||||
+ op->flags = 0;
|
||||
+ op->reserved = nullptr;
|
||||
+ op++;
|
||||
+ error = grpc_call_start_batch(c, ops, static_cast<size_t>(op - ops), tag(1),
|
||||
+ nullptr);
|
||||
+ GPR_ASSERT(GRPC_CALL_OK == error);
|
||||
+
|
||||
+ error =
|
||||
+ grpc_server_request_call(f.server, &s, &call_details,
|
||||
+ &request_metadata_recv, f.cq, f.cq, tag(101));
|
||||
+ GPR_ASSERT(GRPC_CALL_OK == error);
|
||||
+
|
||||
+ CQ_EXPECT_COMPLETION(cqv, tag(101), 1);
|
||||
+ cq_verify(cqv);
|
||||
+
|
||||
+ memset(ops, 0, sizeof(ops));
|
||||
+ // Server: send large initial metadata
|
||||
+ op = ops;
|
||||
+ op->op = GRPC_OP_SEND_INITIAL_METADATA;
|
||||
+ op->data.send_initial_metadata.count = 1;
|
||||
+ op->data.send_initial_metadata.metadata = &meta;
|
||||
+ op->flags = 0;
|
||||
+ op->reserved = nullptr;
|
||||
+ op++;
|
||||
+ op->op = GRPC_OP_RECV_CLOSE_ON_SERVER;
|
||||
+ op->data.recv_close_on_server.cancelled = &was_cancelled;
|
||||
+ op->flags = 0;
|
||||
+ op->reserved = nullptr;
|
||||
+ op++;
|
||||
+ op->op = GRPC_OP_SEND_STATUS_FROM_SERVER;
|
||||
+ op->data.send_status_from_server.trailing_metadata_count = 0;
|
||||
+ op->data.send_status_from_server.status = GRPC_STATUS_OK;
|
||||
+ grpc_slice status_details = grpc_slice_from_static_string("xyz");
|
||||
+ op->data.send_status_from_server.status_details = &status_details;
|
||||
+ op->flags = 0;
|
||||
+ op->reserved = nullptr;
|
||||
+ op++;
|
||||
+ error = grpc_call_start_batch(s, ops, static_cast<size_t>(op - ops),
|
||||
+ tag(102), nullptr);
|
||||
+ GPR_ASSERT(GRPC_CALL_OK == error);
|
||||
+ CQ_EXPECT_COMPLETION(cqv, tag(102), 1);
|
||||
+ CQ_EXPECT_COMPLETION(cqv, tag(1), 1);
|
||||
+ cq_verify(cqv);
|
||||
+
|
||||
+ GPR_ASSERT(status == GRPC_STATUS_RESOURCE_EXHAUSTED);
|
||||
+ const char* expected_error = "received initial metadata size exceeds limit";
|
||||
+ grpc_slice actual_error =
|
||||
+ grpc_slice_split_head(&details, strlen(expected_error));
|
||||
+ GPR_ASSERT(0 == grpc_slice_str_cmp(actual_error, expected_error));
|
||||
+ GPR_ASSERT(0 == grpc_slice_str_cmp(call_details.method, "/foo"));
|
||||
+
|
||||
+ grpc_slice_unref(actual_error);
|
||||
+ grpc_slice_unref(details);
|
||||
+ grpc_metadata_array_destroy(&initial_metadata_recv);
|
||||
+ grpc_metadata_array_destroy(&trailing_metadata_recv);
|
||||
+ grpc_metadata_array_destroy(&request_metadata_recv);
|
||||
+ grpc_call_details_destroy(&call_details);
|
||||
+
|
||||
+ grpc_call_unref(c);
|
||||
+ grpc_call_unref(s);
|
||||
+
|
||||
+ grpc_slice_unref(meta.value);
|
||||
+ }
|
||||
cq_verifier_destroy(cqv);
|
||||
|
||||
- grpc_slice_unref(meta.value);
|
||||
-
|
||||
end_test(&f);
|
||||
config.tear_down_data(&f);
|
||||
}
|
||||
diff --git a/tools/run_tests/generated/tests.json b/tools/run_tests/generated/tests.json
|
||||
index 9f21710575..0cf8b37e76 100644
|
||||
--- a/tools/run_tests/generated/tests.json
|
||||
+++ b/tools/run_tests/generated/tests.json
|
||||
@@ -5087,30 +5087,6 @@
|
||||
],
|
||||
"uses_polling": false
|
||||
},
|
||||
- {
|
||||
- "args": [],
|
||||
- "benchmark": false,
|
||||
- "ci_platforms": [
|
||||
- "linux",
|
||||
- "mac",
|
||||
- "posix",
|
||||
- "windows"
|
||||
- ],
|
||||
- "cpu_cost": 1.0,
|
||||
- "exclude_configs": [],
|
||||
- "exclude_iomgrs": [],
|
||||
- "flaky": false,
|
||||
- "gtest": true,
|
||||
- "language": "c++",
|
||||
- "name": "large_metadata_bad_client_test",
|
||||
- "platforms": [
|
||||
- "linux",
|
||||
- "mac",
|
||||
- "posix",
|
||||
- "windows"
|
||||
- ],
|
||||
- "uses_polling": true
|
||||
- },
|
||||
{
|
||||
"args": [],
|
||||
"benchmark": false,
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,28 @@
|
||||
From beb3d7c392c22517c5a91e2f13558bee379abb2a Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Wed, 16 Nov 2022 09:00:21 -0500
|
||||
Subject: [PATCH] Use CMake variables for paths in pkg-config files
|
||||
|
||||
Use @gRPC_INSTALL_LIBDIR@ for libdir; this fixes an incorrect
|
||||
-L/usr/lib on multilib Linux systems where that is the 32-bit library
|
||||
path and the correct path is /usr/lib64.
|
||||
|
||||
Use @gRPC_INSTALL_INCLUDEDIR@ for consistency.
|
||||
---
|
||||
cmake/pkg-config-template.pc.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/cmake/pkg-config-template.pc.in b/cmake/pkg-config-template.pc.in
|
||||
index d56154bb3a53..5a56b4f88530 100644
|
||||
--- a/cmake/pkg-config-template.pc.in
|
||||
+++ b/cmake/pkg-config-template.pc.in
|
||||
@@ -1,7 +1,7 @@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=${prefix}
|
||||
-includedir=${prefix}/include
|
||||
-libdir=${exec_prefix}/lib
|
||||
+includedir=${prefix}/@gRPC_INSTALL_INCLUDEDIR@
|
||||
+libdir=${exec_prefix}/@gRPC_INSTALL_LIBDIR@
|
||||
|
||||
Name: @PC_NAME@
|
||||
Description: @PC_DESCRIPTION@
|
@ -0,0 +1,45 @@
|
||||
diff -Naur grpc-1.36.4-original/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py grpc-1.36.4/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py
|
||||
--- grpc-1.36.4-original/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py 2021-03-17 15:59:05.000000000 -0400
|
||||
+++ grpc-1.36.4/src/python/grpcio_tests/tests/health_check/_health_servicer_test.py 2021-03-22 16:39:05.558398948 -0400
|
||||
@@ -234,9 +234,7 @@
|
||||
|
||||
def setUp(self):
|
||||
self._thread_pool = thread_pool.RecordingThreadPool(max_workers=None)
|
||||
- super(HealthServicerTest,
|
||||
- self).start_server(non_blocking=True,
|
||||
- thread_pool=self._thread_pool)
|
||||
+ super().start_server(non_blocking=True, thread_pool=self._thread_pool)
|
||||
|
||||
def test_check_empty_service(self):
|
||||
request = health_pb2.HealthCheckRequest()
|
||||
@@ -273,8 +271,7 @@
|
||||
class HealthServicerBackwardsCompatibleWatchTest(BaseWatchTests.WatchTests):
|
||||
|
||||
def setUp(self):
|
||||
- super(HealthServicerBackwardsCompatibleWatchTest,
|
||||
- self).start_server(non_blocking=False, thread_pool=None)
|
||||
+ super().start_server(non_blocking=False, thread_pool=None)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
diff -Naur grpc-1.36.4-original/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py grpc-1.36.4/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py
|
||||
--- grpc-1.36.4-original/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py 2021-03-17 15:59:05.000000000 -0400
|
||||
+++ grpc-1.36.4/src/python/grpcio_tests/tests/protoc_plugin/_python_plugin_test.py 2021-03-22 16:39:05.559398954 -0400
|
||||
@@ -532,7 +532,7 @@
|
||||
request_iterator, context)
|
||||
|
||||
def setUp(self):
|
||||
- super(SimpleStubsPluginTest, self).setUp()
|
||||
+ super().setUp()
|
||||
self._server = test_common.test_server()
|
||||
service_pb2_grpc.add_TestServiceServicer_to_server(
|
||||
self.Servicer(), self._server)
|
||||
@@ -542,7 +542,7 @@
|
||||
|
||||
def tearDown(self):
|
||||
self._server.stop(None)
|
||||
- super(SimpleStubsPluginTest, self).tearDown()
|
||||
+ super().tearDown()
|
||||
|
||||
def testUnaryCall(self):
|
||||
request = request_pb2.SimpleRequest(response_size=13)
|
@ -0,0 +1,50 @@
|
||||
diff -Naur grpc-1.37.1-original/CMakeLists.txt grpc-1.37.1/CMakeLists.txt
|
||||
--- grpc-1.37.1-original/CMakeLists.txt 2021-04-27 18:01:25.000000000 -0400
|
||||
+++ grpc-1.37.1/CMakeLists.txt 2021-05-04 11:00:04.934427672 -0400
|
||||
@@ -3294,10 +3294,6 @@
|
||||
${_gRPC_UPB_INCLUDE_DIR}
|
||||
${_gRPC_XXHASH_INCLUDE_DIR}
|
||||
${_gRPC_ZLIB_INCLUDE_DIR}
|
||||
- third_party/googletest/googletest/include
|
||||
- third_party/googletest/googletest
|
||||
- third_party/googletest/googlemock/include
|
||||
- third_party/googletest/googlemock
|
||||
${_gRPC_PROTO_GENS_DIR}
|
||||
)
|
||||
target_link_libraries(grpc++_test_config
|
||||
@@ -10669,7 +10665,6 @@
|
||||
|
||||
|
||||
endif()
|
||||
-if(gRPC_BUILD_TESTS)
|
||||
|
||||
add_executable(grpc_cli
|
||||
${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.pb.cc
|
||||
@@ -10683,8 +10678,6 @@
|
||||
test/cpp/util/proto_file_parser.cc
|
||||
test/cpp/util/proto_reflection_descriptor_database.cc
|
||||
test/cpp/util/service_describer.cc
|
||||
- third_party/googletest/googletest/src/gtest-all.cc
|
||||
- third_party/googletest/googlemock/src/gmock-all.cc
|
||||
)
|
||||
|
||||
target_include_directories(grpc_cli
|
||||
@@ -10699,10 +10692,6 @@
|
||||
${_gRPC_UPB_INCLUDE_DIR}
|
||||
${_gRPC_XXHASH_INCLUDE_DIR}
|
||||
${_gRPC_ZLIB_INCLUDE_DIR}
|
||||
- third_party/googletest/googletest/include
|
||||
- third_party/googletest/googletest
|
||||
- third_party/googletest/googlemock/include
|
||||
- third_party/googletest/googlemock
|
||||
${_gRPC_PROTO_GENS_DIR}
|
||||
)
|
||||
|
||||
@@ -10715,7 +10704,6 @@
|
||||
)
|
||||
|
||||
|
||||
-endif()
|
||||
if(gRPC_BUILD_CODEGEN AND gRPC_BUILD_GRPC_CPP_PLUGIN)
|
||||
|
||||
add_executable(grpc_cpp_plugin
|
@ -0,0 +1,40 @@
|
||||
diff -Naur grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm
|
||||
--- grpc-1.39.0-original/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/src/objective-c/tests/CronetTests/CronetUnitTests.mm 2021-07-23 14:42:11.649278304 -0400
|
||||
@@ -103,7 +103,7 @@
|
||||
BIO_free(pem);
|
||||
|
||||
// Select cipher suite
|
||||
- SSL_CTX_set_cipher_list(ctx, "ECDHE-RSA-AES128-GCM-SHA256");
|
||||
+ SSL_CTX_set_cipher_list(ctx, "PROFILE=SYSTEM");
|
||||
|
||||
// Select ALPN protocol
|
||||
SSL_CTX_set_alpn_select_cb(ctx, alpn_cb, NULL);
|
||||
diff -Naur grpc-1.39.0-original/test/core/handshake/client_ssl.cc grpc-1.39.0/test/core/handshake/client_ssl.cc
|
||||
--- grpc-1.39.0-original/test/core/handshake/client_ssl.cc 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/test/core/handshake/client_ssl.cc 2021-07-23 14:41:27.549570232 -0400
|
||||
@@ -220,9 +220,7 @@
|
||||
|
||||
// Set the cipher list to match the one expressed in
|
||||
// src/core/tsi/ssl_transport_security.cc.
|
||||
- const char* cipher_list =
|
||||
- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-"
|
||||
- "SHA384:ECDHE-RSA-AES256-GCM-SHA384";
|
||||
+ const char* cipher_list = "PROFILE=SYSTEM";
|
||||
if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) {
|
||||
ERR_print_errors_fp(stderr);
|
||||
gpr_log(GPR_ERROR, "Couldn't set server cipher list.");
|
||||
diff -Naur grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc grpc-1.39.0/test/core/handshake/server_ssl_common.cc
|
||||
--- grpc-1.39.0-original/test/core/handshake/server_ssl_common.cc 2021-07-20 18:39:39.000000000 -0400
|
||||
+++ grpc-1.39.0/test/core/handshake/server_ssl_common.cc 2021-07-23 14:41:14.369657480 -0400
|
||||
@@ -204,9 +204,7 @@
|
||||
|
||||
// Set the cipher list to match the one expressed in
|
||||
// src/core/tsi/ssl_transport_security.c.
|
||||
- const char* cipher_list =
|
||||
- "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-"
|
||||
- "SHA384:ECDHE-RSA-AES256-GCM-SHA384";
|
||||
+ const char* cipher_list = "PROFILE=SYSTEM";
|
||||
if (!SSL_CTX_set_cipher_list(ctx, cipher_list)) {
|
||||
ERR_print_errors_fp(stderr);
|
||||
gpr_log(GPR_ERROR, "Couldn't set server cipher list.");
|
@ -0,0 +1,20 @@
|
||||
diff -Naur grpc-1.40.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py grpc-1.40.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py
|
||||
--- grpc-1.40.0-original/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2021-09-03 19:20:52.000000000 -0400
|
||||
+++ grpc-1.40.0/src/python/grpcio_tests/tests/unit/_dns_resolver_test.py 2021-09-09 10:55:12.919416808 -0400
|
||||
@@ -14,6 +14,7 @@
|
||||
"""Tests for an actual dns resolution."""
|
||||
|
||||
import logging
|
||||
+import os
|
||||
import unittest
|
||||
|
||||
import grpc
|
||||
@@ -46,6 +47,8 @@
|
||||
def tearDown(self):
|
||||
self._server.stop(None)
|
||||
|
||||
+ @unittest.skipIf('FEDORA_NO_NETWORK_TESTS' in os.environ,
|
||||
+ 'Network tests disabled')
|
||||
def test_connect_loopback(self):
|
||||
# NOTE(https://github.com/grpc/grpc/issues/18422)
|
||||
# In short, Gevent + C-Ares = Segfault. The C-Ares driver is not
|
@ -0,0 +1,15 @@
|
||||
diff -Naur grpc-1.45.0-original/test/core/http/httpcli_test_util.cc grpc-1.45.0/test/core/http/httpcli_test_util.cc
|
||||
--- grpc-1.45.0-original/test/core/http/httpcli_test_util.cc 2022-03-18 13:20:52.000000000 -0400
|
||||
+++ grpc-1.45.0/test/core/http/httpcli_test_util.cc 2022-03-31 13:14:49.481349132 -0400
|
||||
@@ -53,9 +53,9 @@
|
||||
lslash = me + (lslash - me) - sizeof("http");
|
||||
}
|
||||
root = static_cast<char*>(
|
||||
- gpr_malloc(static_cast<size_t>(lslash - me + sizeof("/../.."))));
|
||||
+ gpr_malloc(static_cast<size_t>(lslash - me + sizeof("/.."))));
|
||||
memcpy(root, me, static_cast<size_t>(lslash - me));
|
||||
- memcpy(root + (lslash - me), "/../..", sizeof("/../.."));
|
||||
+ memcpy(root + (lslash - me), "/..", sizeof("/.."));
|
||||
} else {
|
||||
root = gpr_strdup(".");
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
From 280cab57a6810d0b564540737d248b1fc7226b58 Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Wed, 8 Jun 2022 21:07:38 -0400
|
||||
Subject: [PATCH] Skip failing ChannelzServicerTest tests on Python 3.11
|
||||
|
||||
---
|
||||
.../grpcio_tests/tests/channelz/_channelz_servicer_test.py | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py b/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py
|
||||
index 565a79814c..07ee2c3500 100644
|
||||
--- a/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py
|
||||
+++ b/src/python/grpcio_tests/tests/channelz/_channelz_servicer_test.py
|
||||
@@ -274,12 +274,14 @@ class ChannelzServicerTest(unittest.TestCase):
|
||||
self.assertEqual(gtc_resp.channel[i].data.calls_failed,
|
||||
gsc_resp.subchannel.data.calls_failed)
|
||||
|
||||
+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11")
|
||||
def test_server_basic(self):
|
||||
self._pairs = _generate_channel_server_pairs(1)
|
||||
resp = self._channelz_stub.GetServers(
|
||||
channelz_pb2.GetServersRequest(start_server_id=0))
|
||||
self.assertEqual(len(resp.server), 1)
|
||||
|
||||
+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11")
|
||||
def test_get_one_server(self):
|
||||
self._pairs = _generate_channel_server_pairs(1)
|
||||
gss_resp = self._channelz_stub.GetServers(
|
||||
@@ -291,6 +293,7 @@ class ChannelzServicerTest(unittest.TestCase):
|
||||
self.assertEqual(gss_resp.server[0].ref.server_id,
|
||||
gs_resp.server.ref.server_id)
|
||||
|
||||
+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11")
|
||||
def test_server_call(self):
|
||||
self._pairs = _generate_channel_server_pairs(1)
|
||||
k_success = 23
|
||||
@@ -394,6 +397,7 @@ class ChannelzServicerTest(unittest.TestCase):
|
||||
self.assertEqual(gs_resp.socket.data.messages_received,
|
||||
test_constants.STREAM_LENGTH)
|
||||
|
||||
+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11")
|
||||
def test_server_sockets(self):
|
||||
self._pairs = _generate_channel_server_pairs(1)
|
||||
self._send_successful_unary_unary(0)
|
||||
@@ -412,6 +416,7 @@ class ChannelzServicerTest(unittest.TestCase):
|
||||
# If the RPC call failed, it will raise a grpc.RpcError
|
||||
# So, if there is no exception raised, considered pass
|
||||
|
||||
+ @unittest.skipIf(sys.version_info >= (3, 11), "Fails on 3.11")
|
||||
def test_server_listen_sockets(self):
|
||||
self._pairs = _generate_channel_server_pairs(1)
|
||||
|
||||
--
|
||||
2.36.1
|
||||
|
@ -0,0 +1,11 @@
|
||||
diff -Naur grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py grpc-1.48.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py
|
||||
--- grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py 2022-07-18 20:40:04.000000000 -0400
|
||||
+++ grpc-1.48.0/src/python/grpcio_tests/tests/unit/_dynamic_stubs_test.py 2022-08-14 15:41:01.208719432 -0400
|
||||
@@ -128,6 +128,7 @@
|
||||
@unittest.skipIf(os.name == "nt", "Windows multiprocessing unsupported")
|
||||
@unittest.skipIf(test_common.running_under_gevent(),
|
||||
"Import paths do not work with gevent runner.")
|
||||
+@unittest.skip("Tests hang; possibly related to upstream issue #25368?")
|
||||
class DynamicStubTest(unittest.TestCase):
|
||||
|
||||
def test_sunny_day(self):
|
@ -0,0 +1,19 @@
|
||||
diff -Naur grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_compression_test.py grpc-1.48.0/src/python/grpcio_tests/tests/unit/_compression_test.py
|
||||
--- grpc-1.48.0-original/src/python/grpcio_tests/tests/unit/_compression_test.py 2022-07-18 20:40:04.000000000 -0400
|
||||
+++ grpc-1.48.0/src/python/grpcio_tests/tests/unit/_compression_test.py 2022-08-14 11:07:13.780565137 -0400
|
||||
@@ -298,6 +298,7 @@
|
||||
multicallable_kwargs, server_kwargs,
|
||||
server_handler, _REQUEST)
|
||||
|
||||
+ @unittest.skip('Wrong compression ratio may occur; unknown cause')
|
||||
def testDisableNextCompressionStreaming(self):
|
||||
server_kwargs = {
|
||||
'compression': grpc.Compression.Deflate,
|
||||
@@ -349,6 +350,7 @@
|
||||
|
||||
def test_compression(**kwargs):
|
||||
|
||||
+ @unittest.skip('Wrong compression ratio may occur; unknown cause')
|
||||
def _test_compression(self):
|
||||
self.assertConfigurationCompressed(**kwargs)
|
||||
|
@ -0,0 +1,117 @@
|
||||
From a133d644138b6018b5df2bcb4bba07211a9ac5b7 Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Wed, 17 Jan 2024 21:43:39 -0500
|
||||
Subject: [PATCH 1/3] Add some missing #includes for absl/strings/str_cat.h
|
||||
|
||||
Partial backport of a giant IWYU commit:
|
||||
|
||||
https://github.com/grpc/grpc/commit/8174a75079bc00aec4f80e3cd9f91a7042073ca8
|
||||
|
||||
Needed for abseil-cpp-20240116.rc1 compatibility.
|
||||
---
|
||||
test/core/address_utils/sockaddr_utils_test.cc | 1 +
|
||||
test/core/channel/call_finalization_test.cc | 1 +
|
||||
test/core/json/json_test.cc | 1 +
|
||||
3 files changed, 3 insertions(+)
|
||||
|
||||
diff --git a/test/core/address_utils/sockaddr_utils_test.cc b/test/core/address_utils/sockaddr_utils_test.cc
|
||||
index 3ecb5a7f82..e071d94e41 100644
|
||||
--- a/test/core/address_utils/sockaddr_utils_test.cc
|
||||
+++ b/test/core/address_utils/sockaddr_utils_test.cc
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <sys/un.h>
|
||||
#endif
|
||||
|
||||
+#include "absl/strings/str_cat.h"
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <grpc/grpc.h>
|
||||
diff --git a/test/core/channel/call_finalization_test.cc b/test/core/channel/call_finalization_test.cc
|
||||
index 61d92c5f56..0ff7a00cff 100644
|
||||
--- a/test/core/channel/call_finalization_test.cc
|
||||
+++ b/test/core/channel/call_finalization_test.cc
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "src/core/lib/channel/call_finalization.h"
|
||||
|
||||
+#include "absl/strings/str_cat.h"
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include "src/core/lib/resource_quota/resource_quota.h"
|
||||
diff --git a/test/core/json/json_test.cc b/test/core/json/json_test.cc
|
||||
index 232caca9ba..ff26b7ee75 100644
|
||||
--- a/test/core/json/json_test.cc
|
||||
+++ b/test/core/json/json_test.cc
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
+#include "absl/strings/str_cat.h"
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
||||
From 9f2762981680094d97a6092e76c8b94309df9512 Mon Sep 17 00:00:00 2001
|
||||
From: Esun Kim <veblush@google.com>
|
||||
Date: Thu, 14 Sep 2023 17:25:41 -0700
|
||||
Subject: [PATCH 2/3] [Fix] Added missing #include (#34359)
|
||||
|
||||
One more missing #include
|
||||
---
|
||||
test/core/tsi/crl_ssl_transport_security_test.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/test/core/tsi/crl_ssl_transport_security_test.cc b/test/core/tsi/crl_ssl_transport_security_test.cc
|
||||
index 5e4dc1b57e..dd33173abf 100644
|
||||
--- a/test/core/tsi/crl_ssl_transport_security_test.cc
|
||||
+++ b/test/core/tsi/crl_ssl_transport_security_test.cc
|
||||
@@ -19,6 +19,8 @@
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
+#include "absl/strings/str_cat.h"
|
||||
+
|
||||
#include <grpc/grpc.h>
|
||||
#include <grpc/support/alloc.h>
|
||||
#include <grpc/support/log.h>
|
||||
--
|
||||
2.43.0
|
||||
|
||||
|
||||
From 8a53ca0b02de4074763ec970c85ab9594d99532c Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Thu, 18 Jan 2024 08:07:10 -0500
|
||||
Subject: [PATCH 3/3] Add abseil includes in test/cpp/end2end/xds/xds_server.h
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This follows the IWYU “philosophy,” but the necessary includes were
|
||||
found and added manually.
|
||||
|
||||
Needed for compatibility with abseil-cpp 20240116.rc1.
|
||||
---
|
||||
test/cpp/end2end/xds/xds_server.h | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/test/cpp/end2end/xds/xds_server.h b/test/cpp/end2end/xds/xds_server.h
|
||||
index 066629b101..4499af1a8d 100644
|
||||
--- a/test/cpp/end2end/xds/xds_server.h
|
||||
+++ b/test/cpp/end2end/xds/xds_server.h
|
||||
@@ -26,6 +26,10 @@
|
||||
#include <gmock/gmock.h>
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
+#include "absl/status/status.h"
|
||||
+#include "absl/strings/numbers.h"
|
||||
+#include "absl/strings/string_view.h"
|
||||
+#include "absl/time/time.h"
|
||||
#include "absl/types/optional.h"
|
||||
|
||||
#include <grpc/support/log.h>
|
||||
--
|
||||
2.43.0
|
||||
|
@ -0,0 +1,12 @@
|
||||
--- grpc-1.48.4/src/core/tsi/ssl_transport_security.cc.orig 2024-09-19 10:02:30.511044976 -0400
|
||||
+++ grpc-1.48.4/src/core/tsi/ssl_transport_security.cc 2024-09-19 10:03:28.363061372 -0400
|
||||
@@ -37,7 +37,9 @@
|
||||
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/crypto.h> /* For OPENSSL_free */
|
||||
+#if !defined(OPENSSL_NO_ENGINE)
|
||||
#include <openssl/engine.h>
|
||||
+#endif
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/tls1.h>
|
@ -0,0 +1,71 @@
|
||||
From 01d7101b39dd9049ae3cb9c30195b42ed9c76579 Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Tue, 20 Jun 2023 11:36:40 -0400
|
||||
Subject: [PATCH 1/2] Do not use importlib find_module API
|
||||
|
||||
This API was removed in Python 3.12
|
||||
(https://github.com/python/cpython/issues/98040).
|
||||
|
||||
Fixes Python 3.12 support in grpcio tests.
|
||||
---
|
||||
src/python/grpcio_tests/tests/_loader.py | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/python/grpcio_tests/tests/_loader.py b/src/python/grpcio_tests/tests/_loader.py
|
||||
index 80c107aa8e..c497a9aabd 100644
|
||||
--- a/src/python/grpcio_tests/tests/_loader.py
|
||||
+++ b/src/python/grpcio_tests/tests/_loader.py
|
||||
@@ -71,7 +71,9 @@ class Loader(object):
|
||||
"""
|
||||
for importer, module_name, is_package in (
|
||||
pkgutil.walk_packages(package_paths)):
|
||||
- module = importer.find_module(module_name).load_module(module_name)
|
||||
+ spec = importer.find_spec(module_name)
|
||||
+ module = importlib.util.module_from_spec(spec)
|
||||
+ spec.loader.exec_module(module)
|
||||
self.visit_module(module)
|
||||
|
||||
def visit_module(self, module):
|
||||
--
|
||||
2.40.1
|
||||
|
||||
|
||||
From a7191f6781674340740896d5a284ab856e596b2e Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Tue, 20 Jun 2023 12:38:23 -0400
|
||||
Subject: [PATCH 2/2] More importlib find_module migration
|
||||
|
||||
Do not use importlib find_module API in bazel/_gevent_test_main.py
|
||||
|
||||
This API was removed in Python 3.12
|
||||
(https://github.com/python/cpython/issues/98040).
|
||||
---
|
||||
bazel/_gevent_test_main.py | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/bazel/_gevent_test_main.py b/bazel/_gevent_test_main.py
|
||||
index f7936daaf0..bec31a911b 100644
|
||||
--- a/bazel/_gevent_test_main.py
|
||||
+++ b/bazel/_gevent_test_main.py
|
||||
@@ -42,6 +42,7 @@ import unittest
|
||||
import sys
|
||||
import os
|
||||
import pkgutil
|
||||
+import importlib
|
||||
|
||||
def trace_callback(event, args):
|
||||
if event in ("switch", "throw"):
|
||||
@@ -73,7 +74,9 @@ class SingleLoader(object):
|
||||
tests = []
|
||||
for importer, module_name, is_package in pkgutil.walk_packages([os.path.dirname(os.path.relpath(__file__))]):
|
||||
if pattern in module_name:
|
||||
- module = importer.find_module(module_name).load_module(module_name)
|
||||
+ spec = importer.find_spec(module_name)
|
||||
+ module = importlib.util.module_from_spec(spec)
|
||||
+ spec.loader.exec_module(module)
|
||||
tests.append(loader.loadTestsFromModule(module))
|
||||
if len(tests) != 1:
|
||||
raise AssertionError("Expected only 1 test module. Found {}".format(tests))
|
||||
--
|
||||
2.40.1
|
||||
|
@ -0,0 +1,30 @@
|
||||
From 15b168ffc762f99997c57a34c4cbb595697ede79 Mon Sep 17 00:00:00 2001
|
||||
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
|
||||
Date: Tue, 20 Jun 2023 09:05:35 -0400
|
||||
Subject: [PATCH] Use ssl.SSLContext.wrap_socket, not ssl.wrap_socket
|
||||
|
||||
The latter emits a DeprecationWarning since Python 3.10 and is removed
|
||||
in Python 3.12.
|
||||
---
|
||||
test/core/http/test_server.py | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/test/core/http/test_server.py b/test/core/http/test_server.py
|
||||
index abd26c53d3..7c01638d8b 100755
|
||||
--- a/test/core/http/test_server.py
|
||||
+++ b/test/core/http/test_server.py
|
||||
@@ -62,8 +62,7 @@ class Handler(BaseHTTPRequestHandler):
|
||||
|
||||
httpd = HTTPServer(('localhost', args.port), Handler)
|
||||
if args.ssl:
|
||||
- httpd.socket = ssl.wrap_socket(httpd.socket,
|
||||
- certfile=_PEM,
|
||||
- keyfile=_KEY,
|
||||
- server_side=True)
|
||||
+ ctx = ssl.SSLContext()
|
||||
+ ctx.load_cert_chain(certfile=_PEM, keyfile=_KEY)
|
||||
+ httpd.socket = ctx.wrap_socket(httpd.socket, server_side=True)
|
||||
httpd.serve_forever()
|
||||
--
|
||||
2.40.1
|
||||
|
@ -0,0 +1,105 @@
|
||||
.TH GRPC_CLI\-CALL "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ call
|
||||
\(en call method
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli call
|
||||
.I address
|
||||
.RI [ service [\fB. method ]]
|
||||
.I request
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.I address
|
||||
.IB host : port
|
||||
.TP
|
||||
.I service
|
||||
Exported service name
|
||||
.TP
|
||||
.I method
|
||||
Method name
|
||||
.TP
|
||||
.I request
|
||||
Text protobuffer (overrides
|
||||
.BR \-\-infile )
|
||||
.TP
|
||||
.B \-\-protofiles
|
||||
Comma separated proto files used as a fallback when parsing request/response
|
||||
.TP
|
||||
.B \-\-proto_path
|
||||
The search paths of proto files
|
||||
.RB ( :
|
||||
separated), valid only when
|
||||
.B \-\-protofiles
|
||||
is given
|
||||
.TP
|
||||
.B \-\-noremotedb
|
||||
Don\(cqt attempt to use reflection service at all
|
||||
.TP
|
||||
.B \-\-metadata
|
||||
The metadata to be sent to the server
|
||||
.TP
|
||||
.B \-\-infile
|
||||
Input filename (defaults to
|
||||
.IR stdin )
|
||||
.TP
|
||||
.B \-\-outfile
|
||||
Output filename (defaults to
|
||||
.IR stdout )
|
||||
.TP
|
||||
.B \-\-binary_input
|
||||
Input in binary format
|
||||
.TP
|
||||
.B \-\-binary_output
|
||||
Output in binary format
|
||||
.TP
|
||||
.B \-\-json_input
|
||||
Input in json format
|
||||
.TP
|
||||
.B \-\-json_output
|
||||
Output in json format
|
||||
.TP
|
||||
.B \-\-timeout
|
||||
Specify timeout (in seconds), used to set the deadline for RPCs.
|
||||
The default value of
|
||||
.B \-1
|
||||
means no deadline has been set.
|
||||
.TP
|
||||
.B \-\-ssl_target
|
||||
Set server host for ssl validation
|
||||
.TP
|
||||
.B \-\-ssl_client_cert
|
||||
Client cert for ssl
|
||||
.TP
|
||||
.B \-\-ssl_client_key
|
||||
Client private key for ssl
|
||||
.TP
|
||||
.B \-\-local_connect_type
|
||||
Set to
|
||||
.B local_tcp
|
||||
or
|
||||
.B uds
|
||||
.TP
|
||||
.B \-\-channel_creds_type
|
||||
Set to
|
||||
.BR insecure ,
|
||||
.BR ssl ,
|
||||
.BR gdc ,
|
||||
.BR alts ,
|
||||
or
|
||||
.B local
|
||||
.TP
|
||||
.B \-\-call_creds
|
||||
Set to
|
||||
.BR none ,
|
||||
or
|
||||
.BI access_token= token
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-tobinary (1),
|
||||
.BR grpc_cli\-help (1)
|
@ -0,0 +1,16 @@
|
||||
.TH GRPC_CLI\-HELP "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ help
|
||||
\(en print help
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli help
|
||||
.I subcommand
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-tobinary (1)
|
@ -0,0 +1,65 @@
|
||||
.TH GRPC_CLI\-LS "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ ls
|
||||
\(en list services
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli ls
|
||||
.I address
|
||||
.RI [ service [\fB/ method ]]
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.I address
|
||||
.IB host : port
|
||||
.TP
|
||||
.I service
|
||||
Exported service name
|
||||
.TP
|
||||
.I method
|
||||
Method name
|
||||
.TP
|
||||
.B \-\-l
|
||||
Use a long listing format
|
||||
.TP
|
||||
.B \-\-outfile
|
||||
Output filename (defaults to
|
||||
.IR stdout )
|
||||
.TP
|
||||
.B \-\-ssl_target
|
||||
Set server host for ssl validation
|
||||
.TP
|
||||
.B \-\-ssl_client_cert
|
||||
Client cert for ssl
|
||||
.TP
|
||||
.B \-\-ssl_client_key
|
||||
Client private key for ssl
|
||||
.TP
|
||||
.B \-\-local_connect_type
|
||||
Set to
|
||||
.B local_tcp
|
||||
or
|
||||
.B uds
|
||||
.TP
|
||||
.B \-\-channel_creds_type
|
||||
Set to
|
||||
.BR insecure ,
|
||||
.BR ssl ,
|
||||
.BR gdc ,
|
||||
.BR alts ,
|
||||
or
|
||||
.B local
|
||||
.TP
|
||||
.B \-\-call_creds
|
||||
Set to
|
||||
.BR none ,
|
||||
or
|
||||
.BI access_token= token
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-tobinary (1),
|
||||
.BR grpc_cli\-help (1)
|
@ -0,0 +1,93 @@
|
||||
.TH GRPC_CLI\-PARSE "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ parse
|
||||
\(en parse message
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli parse
|
||||
.I address
|
||||
.I type
|
||||
.RI [ message ]
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.I address
|
||||
.IB host : port
|
||||
.TP
|
||||
.I type
|
||||
Protocol buffer type name
|
||||
.TP
|
||||
.I message
|
||||
Text protobuffer (overrides
|
||||
.BR \-\-infile )
|
||||
.TP
|
||||
.B \-\-protofiles
|
||||
Comma separated proto files used as a fallback when parsing request/response
|
||||
.TP
|
||||
.B \-\-proto_path
|
||||
The search paths of proto files
|
||||
.RB ( :
|
||||
separated), valid only when
|
||||
.B \-\-protofiles
|
||||
is given
|
||||
.TP
|
||||
.B \-\-noremotedb
|
||||
Don\(cqt attempt to use reflection service at all
|
||||
.TP
|
||||
.B \-\-infile
|
||||
Input filename (defaults to
|
||||
.IR stdin )
|
||||
.TP
|
||||
.B \-\-outfile
|
||||
Output filename (defaults to
|
||||
.IR stdout )
|
||||
.TP
|
||||
.B \-\-binary_input
|
||||
Input in binary format
|
||||
.TP
|
||||
.B \-\-binary_output
|
||||
Output in binary format
|
||||
.TP
|
||||
.B \-\-json_input
|
||||
Input in json format
|
||||
.TP
|
||||
.B \-\-json_output
|
||||
Output in json format
|
||||
.TP
|
||||
.B \-\-ssl_target
|
||||
Set server host for ssl validation
|
||||
.TP
|
||||
.B \-\-ssl_client_cert
|
||||
Client cert for ssl
|
||||
.TP
|
||||
.B \-\-ssl_client_key
|
||||
Client private key for ssl
|
||||
.TP
|
||||
.B \-\-local_connect_type
|
||||
Set to
|
||||
.B local_tcp
|
||||
or
|
||||
.B uds
|
||||
.TP
|
||||
.B \-\-channel_creds_type
|
||||
Set to
|
||||
.BR insecure ,
|
||||
.BR ssl ,
|
||||
.BR gdc ,
|
||||
.BR alts ,
|
||||
or
|
||||
.B local
|
||||
.TP
|
||||
.B \-\-call_creds
|
||||
Set to
|
||||
.BR none ,
|
||||
or
|
||||
.BI access_token= token
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-tobinary (1),
|
||||
.BR grpc_cli\-help (1)
|
@ -0,0 +1,39 @@
|
||||
.TH GRPC_CLI\-TOBINARY "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ tobinary
|
||||
\(en convert text message to binary
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli tobinary
|
||||
.I protofiles
|
||||
.I type
|
||||
.RI [ message ]
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.I protofiles
|
||||
Comma separated list of proto files
|
||||
.TP
|
||||
.I type
|
||||
Protocol buffer type name
|
||||
.TP
|
||||
.B \-\-proto_path
|
||||
The search paths of proto files
|
||||
.RB ( :
|
||||
separated)
|
||||
.TP
|
||||
.B \-\-infile
|
||||
Input filename (defaults to
|
||||
.IR stdin )
|
||||
.TP
|
||||
.B \-\-outfile
|
||||
Output filename (defaults to
|
||||
.IR stdout )
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-help (1)
|
@ -0,0 +1,38 @@
|
||||
.TH GRPC_CLI\-TOJSON "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ tojson
|
||||
\(en convert binary message to json
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli tojson
|
||||
.I protofiles
|
||||
.I type
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.I protofiles
|
||||
Comma separated list of proto files
|
||||
.TP
|
||||
.I type
|
||||
Protocol buffer type name
|
||||
.TP
|
||||
.B \-\-proto_path
|
||||
The search paths of proto files
|
||||
.RB ( :
|
||||
separated)
|
||||
.TP
|
||||
.B \-\-infile
|
||||
Input filename (defaults to
|
||||
.IR stdin )
|
||||
.TP
|
||||
.B \-\-outfile
|
||||
Output filename (defaults to
|
||||
.IR stdout )
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tobinary (1),
|
||||
.BR grpc_cli\-help (1)
|
@ -0,0 +1,38 @@
|
||||
.TH GRPC_CLI\-TOTEXT "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ totext
|
||||
\(en convert binary message to text
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli totext
|
||||
.I protofiles
|
||||
.I type
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.I protofiles
|
||||
Comma separated list of proto files
|
||||
.TP
|
||||
.I type
|
||||
Protocol buffer type name
|
||||
.TP
|
||||
.B \-\-proto_path
|
||||
The search paths of proto files
|
||||
.RB ( :
|
||||
separated)
|
||||
.TP
|
||||
.B \-\-infile
|
||||
Input filename (defaults to
|
||||
.IR stdin )
|
||||
.TP
|
||||
.B \-\-outfile
|
||||
Output filename (defaults to
|
||||
.IR stdout )
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-tobinary (1),
|
||||
.BR grpc_cli\-help (1)
|
@ -0,0 +1,55 @@
|
||||
.TH GRPC_CLI\-TYPE "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli\ type
|
||||
\(en print type
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli type
|
||||
.I address
|
||||
.I type
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.I address
|
||||
.IB host : port
|
||||
.TP
|
||||
.I type
|
||||
Protocol buffer type name
|
||||
.TP
|
||||
.B \-\-ssl_target
|
||||
Set server host for ssl validation
|
||||
.TP
|
||||
.B \-\-ssl_client_cert
|
||||
Client cert for ssl
|
||||
.TP
|
||||
.B \-\-ssl_client_key
|
||||
Client private key for ssl
|
||||
.TP
|
||||
.B \-\-local_connect_type
|
||||
Set to
|
||||
.B local_tcp
|
||||
or
|
||||
.B uds
|
||||
.TP
|
||||
.B \-\-channel_creds_type
|
||||
Set to
|
||||
.BR insecure ,
|
||||
.BR ssl ,
|
||||
.BR gdc ,
|
||||
.BR alts ,
|
||||
or
|
||||
.B local
|
||||
.TP
|
||||
.B \-\-call_creds
|
||||
Set to
|
||||
.BR none ,
|
||||
or
|
||||
.BI access_token= token
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli (1),
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-tobinary (1),
|
||||
.BR grpc_cli\-help (1)
|
@ -0,0 +1,48 @@
|
||||
.TH GRPC_CLI "1" "May 2021" "" "User Commands"
|
||||
.SH NAME
|
||||
.B grpc_cli
|
||||
\(en a command-line tool to talk to a grpc server
|
||||
.SH SYNOPSIS
|
||||
.B grpc_cli
|
||||
.I COMMAND
|
||||
.RI [ OPTION ]...\:
|
||||
.SH OPTIONS
|
||||
.SS COMMANDS
|
||||
.P
|
||||
Each of the following has a corresponding man page: for example,
|
||||
.BR grpc_cli\-ls (1)
|
||||
for
|
||||
.RB \(lq grpc_cli\ ls \(rq.
|
||||
.TP
|
||||
.B grpc_cli\ ls
|
||||
List services
|
||||
.TP
|
||||
.B grpc_cli\ call
|
||||
Call method
|
||||
.TP
|
||||
.B grpc_cli\ type
|
||||
Print type
|
||||
.TP
|
||||
.B grpc_cli\ parse
|
||||
Parse message
|
||||
.TP
|
||||
.B grpc_cli\ totext
|
||||
Convert binary message to text
|
||||
.TP
|
||||
.B grpc_cli\ tojson
|
||||
Convert binary message to json
|
||||
.TP
|
||||
.B grpc_cli\ tobinary
|
||||
Convert text message to binary
|
||||
.TP
|
||||
.B grpc_cli\ help
|
||||
Print this message, or per-command usage
|
||||
.SH "SEE\ ALSO"
|
||||
.BR grpc_cli\-ls (1),
|
||||
.BR grpc_cli\-call (1),
|
||||
.BR grpc_cli\-type (1),
|
||||
.BR grpc_cli\-parse (1),
|
||||
.BR grpc_cli\-totext (1),
|
||||
.BR grpc_cli\-tojson (1),
|
||||
.BR grpc_cli\-tobinary (1),
|
||||
.BR grpc_cli\-help (1)
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue