import grpc-1.48.4-44.el10

i10ce
Arkady L. Shane 3 weeks ago
commit 00808310d7
Signed by: tigro
GPG Key ID: 1EC08A25C9DB2503

6
.gitignore vendored

@ -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,40 @@
From d583a79750a7f3cf2c955d880ebfbfd5b8aa1675 Mon Sep 17 00:00:00 2001
From: "Benjamin A. Beasley" <code@musicinmybrain.net>
Date: Thu, 2 Nov 2023 07:00:37 -0400
Subject: [PATCH] [Python] Do not call PyEval_InitThreads
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Since Python 3.7, its called by Py_Initialize and doesnt need to be called manually, so this removal has no effect.
Since Python 3.9, it does nothing, and in Python 3.13, it will be removed, which makes this change necessary.
References:
https://docs.python.org/3/c-api/init.html#c.PyEval_InitThreads
https://github.com/python/cpython/issues/105182
---
src/python/grpcio/grpc/_cython/cygrpc.pyx | 7 -------
1 file changed, 7 deletions(-)
diff --git a/src/python/grpcio/grpc/_cython/cygrpc.pyx b/src/python/grpcio/grpc/_cython/cygrpc.pyx
index 2fd2347352a27..3b6ae9281139d 100644
--- a/src/python/grpcio/grpc/_cython/cygrpc.pyx
+++ b/src/python/grpcio/grpc/_cython/cygrpc.pyx
@@ -80,14 +80,7 @@ include "_cygrpc/aio/server.pyx.pxi"
#
# initialize gRPC
#
-cdef extern from "Python.h":
-
- int PyEval_InitThreads()
-
cdef _initialize():
- # We have Python callbacks called by c-core threads, this ensures the GIL
- # is initialized.
- PyEval_InitThreads()
grpc_set_ssl_roots_override_callback(
<grpc_ssl_roots_override_callback>ssl_roots_override_callback)

@ -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…
Cancel
Save