Merge branch 'master' into fix-win-core-e2e

pull/37918/head
AJ Heller 4 months ago
commit e60f832a5d
  1. 4
      BUILD
  2. 49
      CMakeLists.txt
  3. 2
      Makefile
  4. 2
      _metadata.py
  5. 2
      bazel/generate_cc.bzl
  6. 14
      bazel/grpc_build_system.bzl
  7. 19
      build_autogenerated.yaml
  8. 4
      build_handwritten.yaml
  9. 2
      config.m4
  10. 3
      doc/g_stands_for.md
  11. 2
      gRPC-C++.podspec
  12. 2
      gRPC-Core.podspec
  13. 2
      gRPC-ProtoRPC.podspec
  14. 2
      gRPC-RxLibrary.podspec
  15. 2
      gRPC.podspec
  16. 4
      include/grpcpp/version_info.h
  17. 6
      package.xml
  18. 20
      src/core/BUILD
  19. 105
      src/core/lib/promise/match_promise.h
  20. 2
      src/core/lib/surface/version.cc
  21. 4
      src/core/xds/grpc/xds_http_gcp_authn_filter.cc
  22. 2
      src/csharp/build/dependencies.props
  23. 2
      src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec
  24. 2
      src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
  25. 2
      src/objective-c/GRPCClient/version.h
  26. 2
      src/objective-c/tests/version.h
  27. 2
      src/php/composer.json
  28. 2
      src/php/ext/grpc/version.h
  29. 2
      src/python/grpcio/grpc/_grpcio_metadata.py
  30. 2
      src/python/grpcio/grpc_version.py
  31. 2
      src/python/grpcio_admin/grpc_version.py
  32. 2
      src/python/grpcio_channelz/grpc_version.py
  33. 2
      src/python/grpcio_csds/grpc_version.py
  34. 2
      src/python/grpcio_csm_observability/grpc_version.py
  35. 2
      src/python/grpcio_health_checking/grpc_version.py
  36. 2
      src/python/grpcio_observability/grpc_version.py
  37. 2
      src/python/grpcio_reflection/grpc_version.py
  38. 2
      src/python/grpcio_status/grpc_version.py
  39. 2
      src/python/grpcio_testing/grpc_version.py
  40. 2
      src/python/grpcio_tests/grpc_version.py
  41. 2
      src/ruby/lib/grpc/version.rb
  42. 2
      src/ruby/nativedebug/version.rb
  43. 2
      src/ruby/tools/version.rb
  44. 18
      test/core/promise/BUILD
  45. 66
      test/core/promise/match_promise_test.cc
  46. 20
      test/core/xds/xds_http_filters_test.cc
  47. 2
      tools/distrib/python/grpc_version.py
  48. 2
      tools/distrib/python/grpcio_tools/grpc_tools/grpc_version.py
  49. 2
      tools/distrib/python/grpcio_tools/grpc_version.py
  50. 2
      tools/distrib/python/xds_protos/grpc_version.py
  51. 2
      tools/doxygen/Doxyfile.c++
  52. 2
      tools/doxygen/Doxyfile.c++.internal
  53. 2
      tools/doxygen/Doxyfile.objc
  54. 2
      tools/doxygen/Doxyfile.objc.internal
  55. 2
      tools/doxygen/Doxyfile.php
  56. 2
      tools/internal_ci/windows/grpc_portability.cfg
  57. 9
      tools/interop_matrix/client_matrix.py
  58. 24
      tools/run_tests/generated/tests.json
  59. 2
      tools/run_tests/run_tests_matrix.py

@ -207,11 +207,11 @@ config_setting(
python_config_settings()
# This should be updated along with build_handwritten.yaml
g_stands_for = "groovy" # @unused
g_stands_for = "gridiron" # @unused
core_version = "44.1.0" # @unused
version = "1.68.0-dev" # @unused
version = "1.69.0-dev" # @unused
GPR_PUBLIC_HDRS = [
"include/grpc/support/alloc.h",

49
CMakeLists.txt generated

@ -25,11 +25,11 @@
cmake_minimum_required(VERSION 3.16)
set(PACKAGE_NAME "grpc")
set(PACKAGE_VERSION "1.68.0-dev")
set(PACKAGE_VERSION "1.69.0-dev")
set(gRPC_CORE_VERSION "44.1.0")
set(gRPC_CORE_SOVERSION "44")
set(gRPC_CPP_VERSION "1.68.0-dev")
set(gRPC_CPP_SOVERSION "1.68")
set(gRPC_CPP_VERSION "1.69.0-dev")
set(gRPC_CPP_SOVERSION "1.69")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")
@ -1629,6 +1629,7 @@ if(gRPC_BUILD_TESTS)
add_dependencies(buildtests_cxx loop_test)
add_dependencies(buildtests_cxx lru_cache_test)
add_dependencies(buildtests_cxx map_pipe_test)
add_dependencies(buildtests_cxx match_promise_test)
add_dependencies(buildtests_cxx match_test)
add_dependencies(buildtests_cxx matchers_test)
add_dependencies(buildtests_cxx max_concurrent_streams_test)
@ -19871,6 +19872,48 @@ target_link_libraries(map_pipe_test
)
endif()
if(gRPC_BUILD_TESTS)
add_executable(match_promise_test
test/core/promise/match_promise_test.cc
)
if(WIN32 AND MSVC)
if(BUILD_SHARED_LIBS)
target_compile_definitions(match_promise_test
PRIVATE
"GPR_DLL_IMPORTS"
)
endif()
endif()
target_compile_features(match_promise_test PUBLIC cxx_std_14)
target_include_directories(match_promise_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(match_promise_test
${_gRPC_ALLTARGETS_LIBRARIES}
gtest
absl::type_traits
gpr
)
endif()
if(gRPC_BUILD_TESTS)

2
Makefile generated

@ -368,7 +368,7 @@ Q = @
endif
CORE_VERSION = 44.1.0
CPP_VERSION = 1.68.0-dev
CPP_VERSION = 1.69.0-dev
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/_metadata.py.template`!!!
__version__ = """1.68.0.dev0"""
__version__ = """1.69.0.dev0"""

@ -134,7 +134,7 @@ def generate_cc_impl(ctx):
# Include the output directory so that protoc puts the generated code in the
# right directory.
arguments.append("--proto_path={0}{1}".format(dir_out, proto_root))
arguments.append("--proto_path={0}".format(dir_out))
arguments += [_get_srcs_file_path(proto) for proto in protos]
# create a list of well known proto files if the argument is non-None

@ -146,6 +146,13 @@ def _update_visibility(visibility):
final_visibility.append(rule)
return [x for x in final_visibility]
def _include_prefix():
include_prefix = ""
if native.package_name():
for _ in native.package_name().split("/"):
include_prefix += "../"
return include_prefix
def grpc_cc_library(
name,
srcs = [],
@ -193,6 +200,7 @@ def grpc_cc_library(
if select_deps:
for select_deps_entry in select_deps:
deps += select(select_deps_entry)
include_prefix = _include_prefix()
native.cc_library(
name = name,
srcs = srcs,
@ -217,9 +225,9 @@ def grpc_cc_library(
testonly = testonly,
linkopts = linkopts,
includes = [
"include",
"src/core/ext/upb-gen", # Once upb code-gen issue is resolved, remove this.
"src/core/ext/upbdefs-gen", # Once upb code-gen issue is resolved, remove this.
include_prefix + "include",
include_prefix + "src/core/ext/upb-gen", # Once upb code-gen issue is resolved, remove this.
include_prefix + "src/core/ext/upbdefs-gen", # Once upb code-gen issue is resolved, remove this.
],
alwayslink = alwayslink,
data = data,

@ -12822,6 +12822,25 @@ targets:
- absl/status:statusor
- gpr
uses_polling: false
- name: match_promise_test
gtest: true
build: test
language: c++
headers:
- src/core/lib/promise/detail/promise_factory.h
- src/core/lib/promise/detail/promise_like.h
- src/core/lib/promise/match_promise.h
- src/core/lib/promise/poll.h
- src/core/lib/promise/promise.h
- src/core/util/overload.h
- test/core/promise/poll_matcher.h
src:
- test/core/promise/match_promise_test.cc
deps:
- gtest
- absl/meta:type_traits
- gpr
uses_polling: false
- name: match_test
gtest: true
build: test

@ -14,7 +14,7 @@ settings:
'#10': See the expand_version.py for all the quirks here
core_version: 44.1.0
csharp_major_version: 2
g_stands_for: groovy
g_stands_for: gridiron
protobuf_version: 3.28.1
supported_python_versions:
- '3.8'
@ -23,7 +23,7 @@ settings:
- '3.11'
- '3.12'
- '3.13'
version: 1.68.0-dev
version: 1.69.0-dev
configs:
asan:
CC: clang

2
config.m4 generated

@ -1410,7 +1410,7 @@ if test "$PHP_GRPC" != "no"; then
-D_HAS_EXCEPTIONS=0 -DNOMINMAX -DGRPC_ARES=0 \
-DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 \
-DGRPC_XDS_USER_AGENT_NAME_SUFFIX='"\"PHP\""' \
-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.68.0dev\""')
-DGRPC_XDS_USER_AGENT_VERSION_SUFFIX='"\"1.69.0dev\""')
PHP_ADD_BUILD_DIR($ext_builddir/src/core/channelz)
PHP_ADD_BUILD_DIR($ext_builddir/src/core/client_channel)

@ -67,4 +67,5 @@
- 1.65 'g' stands for ['gnarly'](https://github.com/grpc/grpc/tree/v1.65.x)
- 1.66 'g' stands for ['gladiator'](https://github.com/grpc/grpc/tree/v1.66.x)
- 1.67 'g' stands for ['gesundheit'](https://github.com/grpc/grpc/tree/v1.67.x)
- 1.68 'g' stands for ['groovy'](https://github.com/grpc/grpc/tree/master)
- 1.68 'g' stands for ['groovy'](https://github.com/grpc/grpc/tree/v1.68.x)
- 1.69 'g' stands for ['gridiron'](https://github.com/grpc/grpc/tree/master)

2
gRPC-C++.podspec generated

@ -22,7 +22,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-C++'
# TODO (mxyan): use version that match gRPC version when pod is stabilized
version = '1.68.0-dev'
version = '1.69.0-dev'
s.version = version
s.summary = 'gRPC C++ library'
s.homepage = 'https://grpc.io'

2
gRPC-Core.podspec generated

@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-Core'
version = '1.68.0-dev'
version = '1.69.0-dev'
s.version = version
s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'https://grpc.io'

@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-ProtoRPC'
version = '1.68.0-dev'
version = '1.69.0-dev'
s.version = version
s.summary = 'RPC library for Protocol Buffers, based on gRPC'
s.homepage = 'https://grpc.io'

@ -21,7 +21,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC-RxLibrary'
version = '1.68.0-dev'
version = '1.69.0-dev'
s.version = version
s.summary = 'Reactive Extensions library for iOS/OSX.'
s.homepage = 'https://grpc.io'

2
gRPC.podspec generated

@ -20,7 +20,7 @@
Pod::Spec.new do |s|
s.name = 'gRPC'
version = '1.68.0-dev'
version = '1.69.0-dev'
s.version = version
s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'https://grpc.io'

@ -19,9 +19,9 @@
#define GRPCPP_VERSION_INFO_H
#define GRPC_CPP_VERSION_MAJOR 1
#define GRPC_CPP_VERSION_MINOR 68
#define GRPC_CPP_VERSION_MINOR 69
#define GRPC_CPP_VERSION_PATCH 0
#define GRPC_CPP_VERSION_TAG "dev"
#define GRPC_CPP_VERSION_STRING "1.68.0-dev"
#define GRPC_CPP_VERSION_STRING "1.69.0-dev"
#endif // GRPCPP_VERSION_INFO_H

6
package.xml generated

@ -13,8 +13,8 @@
<date>2019-09-24</date>
<time>16:06:07</time>
<version>
<release>1.68.0dev</release>
<api>1.68.0dev</api>
<release>1.69.0dev</release>
<api>1.69.0dev</api>
</version>
<stability>
<release>beta</release>
@ -22,7 +22,7 @@
</stability>
<license>Apache 2.0</license>
<notes>
- gRPC Core 1.68.0 update
- gRPC Core 1.69.0 update
</notes>
<contents>
<dir baseinstalldir="/" name="/">

@ -65,9 +65,6 @@ grpc_cc_library(
"absl/strings:str_format",
],
language = "c++",
deps = [
"//:gpr_platform",
],
)
grpc_cc_library(
@ -681,6 +678,23 @@ grpc_cc_library(
],
)
grpc_cc_library(
name = "match_promise",
external_deps = [
"absl/strings",
"absl/types:variant",
],
language = "c++",
public_hdrs = ["lib/promise/match_promise.h"],
deps = [
"overload",
"poll",
"promise_factory",
"promise_like",
"//:gpr_platform",
],
)
grpc_cc_library(
name = "sleep",
srcs = [

@ -0,0 +1,105 @@
// Copyright 2024 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.
#ifndef GRPC_SRC_CORE_LIB_PROMISE_MATCH_PROMISE_H
#define GRPC_SRC_CORE_LIB_PROMISE_MATCH_PROMISE_H
#include "absl/types/variant.h"
#include "src/core/lib/promise/detail/promise_factory.h"
#include "src/core/lib/promise/detail/promise_like.h"
#include "src/core/util/overload.h"
namespace grpc_core {
namespace promise_detail {
// This types job is to visit a supplied variant, and apply a mapping
// Constructor from input types to promises, returning a variant full of
// promises.
template <typename Constructor, typename... Ts>
struct ConstructPromiseVariantVisitor {
// Factory functions supplied to the top level `Match` object, wrapped by
// OverloadType to become overloaded members.
Constructor constructor;
// Helper function... only callable once.
// Given a value, construct a Promise Factory that accepts that value type,
// and uses the constructor type above to map from that type to a promise
// returned by the factory.
// We use the Promise Factory infrastructure to deal with all the common
// variants of factory signatures that we've found to be convenient.
template <typename T>
auto CallConstructorThenFactory(T x) {
OncePromiseFactory<T, Constructor> factory(std::move(constructor));
return factory.Make(std::move(x));
}
// Polling operator.
// Given a visited type T, construct a Promise Factory, use it, and then cast
// the result into a variant type that covers ALL of the possible return types
// given the input types listed in Ts...
template <typename T>
auto operator()(T x)
-> absl::variant<promise_detail::PromiseLike<
decltype(CallConstructorThenFactory(std::declval<Ts>()))>...> {
return CallConstructorThenFactory(x);
}
};
// Visitor function for PromiseVariant - calls the poll operator on the inner
// type
class PollVisitor {
public:
template <typename T>
auto operator()(T& x) {
return x();
}
};
// Helper type - given a variant V, provides the poll operator (which simply
// visits the inner type on the variant with PollVisitor)
template <typename V>
class PromiseVariant {
public:
explicit PromiseVariant(V variant) : variant_(std::move(variant)) {}
auto operator()() { return absl::visit(PollVisitor(), variant_); }
private:
V variant_;
};
} // namespace promise_detail
// Match for promises
// Like the Match function takes a variant of some set of types,
// and a set of functions - one per variant type.
// We use these functions as Promise Factories, and return a Promise that can be
// polled selected by the type that was in the variant.
template <typename... Fs, typename... Ts>
auto MatchPromise(absl::variant<Ts...> value, Fs... fs) {
// Construct a variant of promises using the factory functions fs, selected by
// the type held by value.
auto body = absl::visit(
promise_detail::ConstructPromiseVariantVisitor<OverloadType<Fs...>,
Ts...>{
OverloadType<Fs...>(std::move(fs)...)},
std::move(value));
// Wrap that in a PromiseVariant that provides the promise API on the wrapped
// variant.
return promise_detail::PromiseVariant<decltype(body)>(std::move(body));
}
} // namespace grpc_core
#endif // GRPC_SRC_CORE_LIB_PROMISE_MATCH_PROMISE_H

@ -24,4 +24,4 @@
const char* grpc_version_string(void) { return "44.1.0"; }
const char* grpc_g_stands_for(void) { return "groovy"; }
const char* grpc_g_stands_for(void) { return "gridiron"; }

@ -69,9 +69,9 @@ Json::Object ValidateFilterConfig(
envoy_extensions_filters_http_gcp_authn_v3_TokenCacheConfig_cache_size(
cache_config))
.value_or(10);
if (cache_size == 0 || cache_size >= INT64_MAX) {
if (cache_size == 0) {
ValidationErrors::ScopedField field(errors, ".cache_config.cache_size");
errors->AddError("must be in the range (0, INT64_MAX)");
errors->AddError("must be greater than 0");
}
config["cache_size"] = Json::FromNumber(cache_size);
return config;

@ -1,7 +1,7 @@
<!-- This file is generated -->
<Project>
<PropertyGroup>
<GrpcCsharpVersion>2.68.0-dev</GrpcCsharpVersion>
<GrpcCsharpVersion>2.69.0-dev</GrpcCsharpVersion>
<GoogleProtobufVersion>3.28.1</GoogleProtobufVersion>
</PropertyGroup>
</Project>

@ -42,7 +42,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler-gRPCCppPlugin'
v = '1.68.0-dev'
v = '1.69.0-dev'
s.version = v
s.summary = 'The gRPC ProtoC plugin generates C++ files from .proto services.'
s.description = <<-DESC

@ -42,7 +42,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them.
s.name = '!ProtoCompiler-gRPCPlugin'
v = '1.68.0-dev'
v = '1.69.0-dev'
s.version = v
s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
s.description = <<-DESC

@ -22,4 +22,4 @@
// instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`.
#define GRPC_OBJC_VERSION_STRING @"1.68.0-dev"
#define GRPC_OBJC_VERSION_STRING @"1.69.0-dev"

@ -22,5 +22,5 @@
// instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`.
#define GRPC_OBJC_VERSION_STRING @"1.68.0-dev"
#define GRPC_OBJC_VERSION_STRING @"1.69.0-dev"
#define GRPC_C_VERSION_STRING @"44.1.0"

@ -2,7 +2,7 @@
"name": "grpc/grpc-dev",
"description": "gRPC library for PHP - for Development use only",
"license": "Apache-2.0",
"version": "1.68.0",
"version": "1.69.0",
"require": {
"php": ">=7.0.0",
"google/protobuf": "^v3.3.0"

@ -20,6 +20,6 @@
#ifndef VERSION_H
#define VERSION_H
#define PHP_GRPC_VERSION "1.68.0dev"
#define PHP_GRPC_VERSION "1.69.0dev"
#endif /* VERSION_H */

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
__version__ = """1.68.0.dev0"""
__version__ = """1.69.0.dev0"""

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_admin/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_channelz/python_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_csds/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_csm_observability/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_observability/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_status/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,5 +14,5 @@
# GRPC contains the General RPC module.
module GRPC
VERSION = '1.68.0.dev'
VERSION = '1.69.0.dev'
end

@ -14,6 +14,6 @@
module GRPC
module NativeDebug
VERSION = '1.68.0.dev'
VERSION = '1.69.0.dev'
end
end

@ -14,6 +14,6 @@
module GRPC
module Tools
VERSION = '1.68.0.dev'
VERSION = '1.69.0.dev'
end
end

@ -152,6 +152,24 @@ grpc_cc_test(
],
)
grpc_cc_test(
name = "match_promise_test",
srcs = ["match_promise_test.cc"],
external_deps = [
"absl/functional:any_invocable",
"gtest",
],
language = "c++",
tags = ["promise_test"],
uses_event_engine = False,
uses_polling = False,
deps = [
"poll_matcher",
"//:promise",
"//src/core:match_promise",
],
)
grpc_cc_test(
name = "race_test",
srcs = ["race_test.cc"],

@ -0,0 +1,66 @@
// Copyright 2021 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 "src/core/lib/promise/match_promise.h"
#include <memory>
#include "absl/strings/str_cat.h"
#include "gtest/gtest.h"
#include "src/core/lib/promise/promise.h"
#include "test/core/promise/poll_matcher.h"
namespace grpc_core {
TEST(MatchPromiseTest, Works) {
struct Int {
int x;
};
struct Float {
float x;
};
using V = absl::variant<Int, Float, std::string>;
auto make_promise = [](V v) -> Promise<std::string> {
return MatchPromise(
std::move(v),
[](Float x) mutable {
return [n = 3, x]() mutable -> Poll<std::string> {
--n;
if (n > 0) return Pending{};
return absl::StrCat(x.x);
};
},
[](Int x) {
return []() mutable -> Poll<std::string> { return Pending{}; };
},
[](std::string x) { return x; });
};
auto promise = make_promise(V(Float{3.0f}));
EXPECT_THAT(promise(), IsPending());
EXPECT_THAT(promise(), IsPending());
EXPECT_THAT(promise(), IsReady("3"));
promise = make_promise(V(Int{42}));
for (int i = 0; i < 10000; i++) {
EXPECT_THAT(promise(), IsPending());
}
promise = make_promise(V("hello"));
EXPECT_THAT(promise(), IsReady("hello"));
}
} // namespace grpc_core
int main(int argc, char** argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

@ -1574,25 +1574,7 @@ TEST_F(XdsGcpAuthnFilterTest, GenerateFilterConfigCacheSizeZero) {
"field:http_filter.value["
"envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig]"
".cache_config.cache_size "
"error:must be in the range (0, INT64_MAX)]")
<< status;
}
TEST_F(XdsGcpAuthnFilterTest, GenerateFilterConfigCacheSizeTooBig) {
GcpAuthnFilterConfig proto;
proto.mutable_cache_config()->mutable_cache_size()->set_value(INT64_MAX);
XdsExtension extension = MakeXdsExtension(proto);
auto config = filter_->GenerateFilterConfig("langley", decode_context_,
std::move(extension), &errors_);
absl::Status status = errors_.status(absl::StatusCode::kInvalidArgument,
"errors validating filter config");
EXPECT_EQ(status.code(), absl::StatusCode::kInvalidArgument);
EXPECT_EQ(status.message(),
"errors validating filter config: ["
"field:http_filter.value["
"envoy.extensions.filters.http.gcp_authn.v3.GcpAuthnFilterConfig]"
".cache_config.cache_size "
"error:must be in the range (0, INT64_MAX)]")
"error:must be greater than 0]")
<< status;
}

@ -14,5 +14,5 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'
PROTOBUF_VERSION = '3.28.1'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_tools/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'

@ -14,5 +14,5 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'
PROTOBUF_VERSION = '3.28.1'

@ -14,5 +14,5 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/xds_protos/grpc_version.py.template`!!!
VERSION = '1.68.0.dev0'
VERSION = '1.69.0.dev0'
PROTOBUF_VERSION = '3.28.1'

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.68.0-dev
PROJECT_NUMBER = 1.69.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.68.0-dev
PROJECT_NUMBER = 1.69.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Objective-C"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.68.0-dev
PROJECT_NUMBER = 1.69.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Objective-C"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.68.0-dev
PROJECT_NUMBER = 1.69.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC PHP"
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER = 1.68.0-dev
PROJECT_NUMBER = 1.69.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a

@ -16,7 +16,7 @@
# Location of the continuous shell script in repository.
build_file: "grpc/tools/internal_ci/windows/grpc_run_tests_matrix.bat"
timeout_mins: 300
timeout_mins: 360
action {
define_artifacts {
regex: "**/*sponge_log.*"

@ -136,6 +136,7 @@ LANG_RELEASE_MATRIX = {
("v1.64.1", ReleaseInfo()),
("v1.65.0", ReleaseInfo()),
("v1.66.0", ReleaseInfo()),
("v1.67.0", ReleaseInfo()),
]
),
"go": OrderedDict(
@ -815,6 +816,12 @@ LANG_RELEASE_MATRIX = {
runtimes=["python"], testcases_file="python__master"
),
),
(
"v1.67.0",
ReleaseInfo(
runtimes=["python"], testcases_file="python__master"
),
),
]
),
"node": OrderedDict(
@ -915,6 +922,7 @@ LANG_RELEASE_MATRIX = {
("v1.64.0", ReleaseInfo()),
("v1.65.0", ReleaseInfo()),
("v1.66.0", ReleaseInfo()),
("v1.67.0", ReleaseInfo()),
]
),
"php": OrderedDict(
@ -979,6 +987,7 @@ LANG_RELEASE_MATRIX = {
("v1.64.0", ReleaseInfo()),
("v1.65.0", ReleaseInfo()),
("v1.66.0", ReleaseInfo()),
("v1.67.0", ReleaseInfo()),
]
),
"csharp": OrderedDict(

@ -5753,6 +5753,30 @@
],
"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": "match_promise_test",
"platforms": [
"linux",
"mac",
"posix",
"windows"
],
"uses_polling": false
},
{
"args": [],
"benchmark": false,

@ -31,7 +31,7 @@ os.chdir(_ROOT)
_DEFAULT_RUNTESTS_TIMEOUT = 1 * 60 * 60
# C/C++ tests can take long time
_CPP_RUNTESTS_TIMEOUT = 4 * 60 * 60
_CPP_RUNTESTS_TIMEOUT = 6 * 60 * 60
# Set timeout high for ObjC for Cocoapods to install pods
_OBJC_RUNTESTS_TIMEOUT = 4 * 60 * 60

Loading…
Cancel
Save