The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

533 lines
16 KiB

# Copyright 2017 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.
load("//bazel:grpc_build_system.bzl", "grpc_cc_library", "grpc_cc_test", "grpc_package")
licenses(["notice"])
grpc_package(
name = "test/cpp/end2end/xds",
visibility = "public",
) # Allows external users to implement end2end tests.
grpc_cc_library(
name = "xds_server",
srcs = ["xds_server.cc"],
hdrs = ["xds_server.h"],
external_deps = [
"absl/log:check",
"absl/log:log",
],
visibility = ["@grpc:xds_end2end_test_utils"],
deps = [
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing/xds/v3:ads_proto",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:discovery_proto",
"//src/proto/grpc/testing/xds/v3:endpoint_proto",
"//src/proto/grpc/testing/xds/v3:listener_proto",
"//src/proto/grpc/testing/xds/v3:lrs_proto",
"//src/proto/grpc/testing/xds/v3:route_proto",
"//test/core/test_util:grpc_test_util",
"//test/cpp/end2end:counted_service",
],
)
grpc_cc_library(
name = "xds_utils",
srcs = ["xds_utils.cc"],
hdrs = ["xds_utils.h"],
visibility = ["@grpc:xds_end2end_test_utils"],
deps = [
":xds_server",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:discovery_proto",
"//src/proto/grpc/testing/xds/v3:endpoint_proto",
"//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
"//src/proto/grpc/testing/xds/v3:listener_proto",
"//src/proto/grpc/testing/xds/v3:route_proto",
"//src/proto/grpc/testing/xds/v3:router_proto",
"//test/core/test_util:grpc_test_util_base",
],
)
grpc_cc_library(
name = "xds_end2end_test_lib",
testonly = True,
srcs = ["xds_end2end_test_lib.cc"],
hdrs = ["xds_end2end_test_lib.h"],
external_deps = [
"absl/log:check",
"gtest",
],
deps = [
":xds_server",
":xds_utils",
"//:gpr",
"//:grpc",
"//:grpc++",
"//:grpc_resolver_fake",
"//src/proto/grpc/testing:echo_messages_proto",
"//src/proto/grpc/testing:echo_proto",
"//src/proto/grpc/testing/duplicate:echo_duplicate_proto",
"//src/proto/grpc/testing/xds/v3:ads_proto",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:discovery_proto",
"//src/proto/grpc/testing/xds/v3:endpoint_proto",
"//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
"//src/proto/grpc/testing/xds/v3:http_filter_rbac_proto",
"//src/proto/grpc/testing/xds/v3:listener_proto",
"//src/proto/grpc/testing/xds/v3:lrs_proto",
"//src/proto/grpc/testing/xds/v3:route_proto",
"//src/proto/grpc/testing/xds/v3:router_proto",
"//test/core/test_util:grpc_test_util",
"//test/cpp/end2end:counted_service",
"//test/cpp/end2end:test_service_impl",
"//test/cpp/util:tls_test_utils",
],
)
grpc_cc_test(
name = "xds_end2end_test",
size = "large",
srcs = ["xds_end2end_test.cc"],
data = [
"//src/core/tsi/test_creds:badclient.key",
"//src/core/tsi/test_creds:badclient.pem",
"//src/core/tsi/test_creds:ca.pem",
"//src/core/tsi/test_creds:client.key",
"//src/core/tsi/test_creds:client.pem",
"//src/core/tsi/test_creds:server1.key",
"//src/core/tsi/test_creds:server1.pem",
],
external_deps = [
"absl/log:check",
"gtest",
],
flaky = True, # TODO(b/144705388)
linkstatic = True, # Fixes dyld error on MacOS
shard_count = 50,
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//:grpc_resolver_fake",
"//src/core:channel_args",
"//src/core:grpc_audit_logging",
"//src/proto/grpc/testing:echo_messages_proto",
"//src/proto/grpc/testing:echo_proto",
"//src/proto/grpc/testing/duplicate:echo_duplicate_proto",
"//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:endpoint_proto",
"//src/proto/grpc/testing/xds/v3:fault_common_proto",
"//src/proto/grpc/testing/xds/v3:fault_proto",
"//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
"//src/proto/grpc/testing/xds/v3:http_filter_rbac_proto",
"//src/proto/grpc/testing/xds/v3:listener_proto",
"//src/proto/grpc/testing/xds/v3:route_proto",
"//src/proto/grpc/testing/xds/v3:router_proto",
"//src/proto/grpc/testing/xds/v3:tls_proto",
"//src/proto/grpc/testing/xds/v3:typed_struct_proto",
"//test/core/test_util:audit_logging_utils",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
"//test/cpp/util:test_config",
"//test/cpp/util:test_util",
"//test/cpp/util:tls_test_utils",
],
)
grpc_cc_test(
name = "xds_cluster_end2end_test",
size = "large",
srcs = ["xds_cluster_end2end_test.cc"],
external_deps = [
"gtest",
],
flaky = True, # TODO(b/144705388)
linkstatic = True, # Fixes dyld error on MacOS
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
shard_count = 50,
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//test/core/test_util:fake_stats_plugin",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
"//test/cpp/end2end:connection_attempt_injector",
],
)
grpc_cc_test(
name = "xds_cluster_type_end2end_test",
size = "large",
srcs = ["xds_cluster_type_end2end_test.cc"],
external_deps = [
"absl/log:check",
"gtest",
],
flaky = True, # TODO(b/144705388)
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//:grpc_resolver_fake",
"//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
"//test/cpp/end2end:connection_attempt_injector",
],
)
grpc_cc_test(
name = "xds_core_end2end_test",
size = "large",
srcs = ["xds_core_end2end_test.cc"],
data = [
"//src/core/tsi/test_creds:ca.pem",
"//src/core/tsi/test_creds:server1.key",
"//src/core/tsi/test_creds:server1.pem",
],
external_deps = [
"gtest",
],
flaky = True,
linkstatic = True, # Fixes dyld error on MacOS
shard_count = 15,
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//test/core/test_util:fake_stats_plugin",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
],
)
grpc_cc_test(
name = "xds_csds_end2end_test",
size = "large",
srcs = ["xds_csds_end2end_test.cc"],
external_deps = [
"gtest",
],
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//:grpcpp_csds",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:endpoint_proto",
"//src/proto/grpc/testing/xds/v3:listener_proto",
"//src/proto/grpc/testing/xds/v3:route_proto",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "xds_fault_injection_end2end_test",
size = "large",
srcs = ["xds_fault_injection_end2end_test.cc"],
external_deps = [
"gtest",
],
flaky = True,
linkstatic = True, # Fixes dyld error on MacOS
shard_count = 5,
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:fault_proto",
"//src/proto/grpc/testing/xds/v3:http_connection_manager_proto",
"//src/proto/grpc/testing/xds/v3:router_proto",
"//test/core/test_util:grpc_test_util",
],
)
outlier detection: implement LB policy and xDS configuration (#29343) * Initial skeleton for outlier detection * fixing code review comments (modifying child policy) * Skeleton and all tests passing except for 1 * small code review comments fix * Adding the parsing of the policy in cds and put it in discovery mechansim json format * Parsing outlier detection json policy from parent * Adding parsing of the updates * Added Subchannel wrapper and watcher wrapper: and all states pass through and all tests still pass * added framework to do eject and uneject * fixing code review comments * restore a test * fixing code review comments * taking care of code review comments * removing debug code and rebuild build files * fixing according to code review comments * fixing code review comments * Adding address to subchannel map * addressing code review comments * adding call counter * Refcount SubchannelState (in the map) and store them in Subcahnnel Wrapper * fixing counterss * Call counter and tracker skleton added * Call counter * addressing code review comments * addressing code review comments * Added CallCounter and timer * fixing sanity; but more importantly: taking out timer temporarly as it was causing test failures. * sanity * fixing according to code review comments * addressing code review comments * all algorithms implemented * addressing code review comment about starting the timer * protect private vars * small fix * Added one more corner case * fixing EjectionTimer * Fixing according to code review suggestions. * fixing according to code reveiw comments * taking care of code review comments * fixing sanity issues * Adding proto to tests * First test * Fixing according to code review comments * Tests all working now * fixing a crash * fixing build files * fixing sanity * sanity * Simplifying tests * merge and update * format * sanity and format * Fixing asan error * fixing parsing logic and error handling * 6 more tests done * Added verifying unejection to tests * Added all the tests * fixing according to code review comments * fixing asan and ubsan * Fixing tests according to code review comments * Added both algorithm tests * added percentage enforcement tests * fixing tsan error * keeping debug, but fix warning * remove debugs * fixing IWYU and build errors after * test comments change only but very important * fixing code review comments * one more refactorying of util function * Removed debugs and added one more helper method * one more logic fix * Fixing last bit of code review comments and added disable tests * fixing code review comments * fixing IWYU * sanity format * protecting the feature with environment var: registering policy and generating policy * added a todo according to code review comments * fixing a clang finding at import time * build fix after synching to latest
3 years ago
grpc_cc_test(
name = "xds_outlier_detection_end2end_test",
size = "large",
srcs = ["xds_outlier_detection_end2end_test.cc"],
external_deps = [
"absl/log:check",
outlier detection: implement LB policy and xDS configuration (#29343) * Initial skeleton for outlier detection * fixing code review comments (modifying child policy) * Skeleton and all tests passing except for 1 * small code review comments fix * Adding the parsing of the policy in cds and put it in discovery mechansim json format * Parsing outlier detection json policy from parent * Adding parsing of the updates * Added Subchannel wrapper and watcher wrapper: and all states pass through and all tests still pass * added framework to do eject and uneject * fixing code review comments * restore a test * fixing code review comments * taking care of code review comments * removing debug code and rebuild build files * fixing according to code review comments * fixing code review comments * Adding address to subchannel map * addressing code review comments * adding call counter * Refcount SubchannelState (in the map) and store them in Subcahnnel Wrapper * fixing counterss * Call counter and tracker skleton added * Call counter * addressing code review comments * addressing code review comments * Added CallCounter and timer * fixing sanity; but more importantly: taking out timer temporarly as it was causing test failures. * sanity * fixing according to code review comments * addressing code review comments * all algorithms implemented * addressing code review comment about starting the timer * protect private vars * small fix * Added one more corner case * fixing EjectionTimer * Fixing according to code review suggestions. * fixing according to code reveiw comments * taking care of code review comments * fixing sanity issues * Adding proto to tests * First test * Fixing according to code review comments * Tests all working now * fixing a crash * fixing build files * fixing sanity * sanity * Simplifying tests * merge and update * format * sanity and format * Fixing asan error * fixing parsing logic and error handling * 6 more tests done * Added verifying unejection to tests * Added all the tests * fixing according to code review comments * fixing asan and ubsan * Fixing tests according to code review comments * Added both algorithm tests * added percentage enforcement tests * fixing tsan error * keeping debug, but fix warning * remove debugs * fixing IWYU and build errors after * test comments change only but very important * fixing code review comments * one more refactorying of util function * Removed debugs and added one more helper method * one more logic fix * Fixing last bit of code review comments and added disable tests * fixing code review comments * fixing IWYU * sanity format * protecting the feature with environment var: registering policy and generating policy * added a todo according to code review comments * fixing a clang finding at import time * build fix after synching to latest
3 years ago
"gtest",
],
flaky = True,
outlier detection: implement LB policy and xDS configuration (#29343) * Initial skeleton for outlier detection * fixing code review comments (modifying child policy) * Skeleton and all tests passing except for 1 * small code review comments fix * Adding the parsing of the policy in cds and put it in discovery mechansim json format * Parsing outlier detection json policy from parent * Adding parsing of the updates * Added Subchannel wrapper and watcher wrapper: and all states pass through and all tests still pass * added framework to do eject and uneject * fixing code review comments * restore a test * fixing code review comments * taking care of code review comments * removing debug code and rebuild build files * fixing according to code review comments * fixing code review comments * Adding address to subchannel map * addressing code review comments * adding call counter * Refcount SubchannelState (in the map) and store them in Subcahnnel Wrapper * fixing counterss * Call counter and tracker skleton added * Call counter * addressing code review comments * addressing code review comments * Added CallCounter and timer * fixing sanity; but more importantly: taking out timer temporarly as it was causing test failures. * sanity * fixing according to code review comments * addressing code review comments * all algorithms implemented * addressing code review comment about starting the timer * protect private vars * small fix * Added one more corner case * fixing EjectionTimer * Fixing according to code review suggestions. * fixing according to code reveiw comments * taking care of code review comments * fixing sanity issues * Adding proto to tests * First test * Fixing according to code review comments * Tests all working now * fixing a crash * fixing build files * fixing sanity * sanity * Simplifying tests * merge and update * format * sanity and format * Fixing asan error * fixing parsing logic and error handling * 6 more tests done * Added verifying unejection to tests * Added all the tests * fixing according to code review comments * fixing asan and ubsan * Fixing tests according to code review comments * Added both algorithm tests * added percentage enforcement tests * fixing tsan error * keeping debug, but fix warning * remove debugs * fixing IWYU and build errors after * test comments change only but very important * fixing code review comments * one more refactorying of util function * Removed debugs and added one more helper method * one more logic fix * Fixing last bit of code review comments and added disable tests * fixing code review comments * fixing IWYU * sanity format * protecting the feature with environment var: registering policy and generating policy * added a todo according to code review comments * fixing a clang finding at import time * build fix after synching to latest
3 years ago
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
outlier detection: implement LB policy and xDS configuration (#29343) * Initial skeleton for outlier detection * fixing code review comments (modifying child policy) * Skeleton and all tests passing except for 1 * small code review comments fix * Adding the parsing of the policy in cds and put it in discovery mechansim json format * Parsing outlier detection json policy from parent * Adding parsing of the updates * Added Subchannel wrapper and watcher wrapper: and all states pass through and all tests still pass * added framework to do eject and uneject * fixing code review comments * restore a test * fixing code review comments * taking care of code review comments * removing debug code and rebuild build files * fixing according to code review comments * fixing code review comments * Adding address to subchannel map * addressing code review comments * adding call counter * Refcount SubchannelState (in the map) and store them in Subcahnnel Wrapper * fixing counterss * Call counter and tracker skleton added * Call counter * addressing code review comments * addressing code review comments * Added CallCounter and timer * fixing sanity; but more importantly: taking out timer temporarly as it was causing test failures. * sanity * fixing according to code review comments * addressing code review comments * all algorithms implemented * addressing code review comment about starting the timer * protect private vars * small fix * Added one more corner case * fixing EjectionTimer * Fixing according to code review suggestions. * fixing according to code reveiw comments * taking care of code review comments * fixing sanity issues * Adding proto to tests * First test * Fixing according to code review comments * Tests all working now * fixing a crash * fixing build files * fixing sanity * sanity * Simplifying tests * merge and update * format * sanity and format * Fixing asan error * fixing parsing logic and error handling * 6 more tests done * Added verifying unejection to tests * Added all the tests * fixing according to code review comments * fixing asan and ubsan * Fixing tests according to code review comments * Added both algorithm tests * added percentage enforcement tests * fixing tsan error * keeping debug, but fix warning * remove debugs * fixing IWYU and build errors after * test comments change only but very important * fixing code review comments * one more refactorying of util function * Removed debugs and added one more helper method * one more logic fix * Fixing last bit of code review comments and added disable tests * fixing code review comments * fixing IWYU * sanity format * protecting the feature with environment var: registering policy and generating policy * added a todo according to code review comments * fixing a clang finding at import time * build fix after synching to latest
3 years ago
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing/xds/v3:fault_proto",
"//src/proto/grpc/testing/xds/v3:router_proto",
"//test/core/test_util:grpc_test_util",
outlier detection: implement LB policy and xDS configuration (#29343) * Initial skeleton for outlier detection * fixing code review comments (modifying child policy) * Skeleton and all tests passing except for 1 * small code review comments fix * Adding the parsing of the policy in cds and put it in discovery mechansim json format * Parsing outlier detection json policy from parent * Adding parsing of the updates * Added Subchannel wrapper and watcher wrapper: and all states pass through and all tests still pass * added framework to do eject and uneject * fixing code review comments * restore a test * fixing code review comments * taking care of code review comments * removing debug code and rebuild build files * fixing according to code review comments * fixing code review comments * Adding address to subchannel map * addressing code review comments * adding call counter * Refcount SubchannelState (in the map) and store them in Subcahnnel Wrapper * fixing counterss * Call counter and tracker skleton added * Call counter * addressing code review comments * addressing code review comments * Added CallCounter and timer * fixing sanity; but more importantly: taking out timer temporarly as it was causing test failures. * sanity * fixing according to code review comments * addressing code review comments * all algorithms implemented * addressing code review comment about starting the timer * protect private vars * small fix * Added one more corner case * fixing EjectionTimer * Fixing according to code review suggestions. * fixing according to code reveiw comments * taking care of code review comments * fixing sanity issues * Adding proto to tests * First test * Fixing according to code review comments * Tests all working now * fixing a crash * fixing build files * fixing sanity * sanity * Simplifying tests * merge and update * format * sanity and format * Fixing asan error * fixing parsing logic and error handling * 6 more tests done * Added verifying unejection to tests * Added all the tests * fixing according to code review comments * fixing asan and ubsan * Fixing tests according to code review comments * Added both algorithm tests * added percentage enforcement tests * fixing tsan error * keeping debug, but fix warning * remove debugs * fixing IWYU and build errors after * test comments change only but very important * fixing code review comments * one more refactorying of util function * Removed debugs and added one more helper method * one more logic fix * Fixing last bit of code review comments and added disable tests * fixing code review comments * fixing IWYU * sanity format * protecting the feature with environment var: registering policy and generating policy * added a todo according to code review comments * fixing a clang finding at import time * build fix after synching to latest
3 years ago
],
)
grpc_cc_test(
name = "xds_wrr_end2end_test",
size = "large",
srcs = ["xds_wrr_end2end_test.cc"],
external_deps = [
"gtest",
],
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing/xds/v3:client_side_weighted_round_robin_proto",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:wrr_locality_proto",
"//test/core/test_util:fake_stats_plugin",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
],
)
grpc_cc_test(
name = "xds_ring_hash_end2end_test",
size = "large",
srcs = ["xds_ring_hash_end2end_test.cc"],
external_deps = [
"absl/log:check",
"absl/log:log",
"gtest",
],
flaky = True, # TODO(b/144705388)
linkstatic = True, # Fixes dyld error on MacOS
shard_count = 10,
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//:grpc_resolver_fake",
"//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
"//src/proto/grpc/testing/xds/v3:cluster_proto",
"//src/proto/grpc/testing/xds/v3:endpoint_proto",
"//src/proto/grpc/testing/xds/v3:listener_proto",
"//src/proto/grpc/testing/xds/v3:route_proto",
"//test/core/test_util:grpc_test_util",
"//test/cpp/end2end:connection_attempt_injector",
],
)
grpc_cc_test(
name = "xds_rls_end2end_test",
size = "large",
srcs = ["xds_rls_end2end_test.cc"],
external_deps = [
"gtest",
],
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/lookup/v1:rls_config_proto",
"//src/proto/grpc/lookup/v1:rls_proto",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
"//test/cpp/end2end:rls_server",
],
)
grpc_cc_test(
name = "xds_routing_end2end_test",
size = "large",
srcs = ["xds_routing_end2end_test.cc"],
external_deps = [
"gtest",
],
flaky = True, # TODO(b/144705388)
linkstatic = True, # Fixes dyld error on MacOS
shard_count = 10,
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing/xds/v3:fault_proto",
"//src/proto/grpc/testing/xds/v3:router_proto",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "xds_credentials_end2end_test",
srcs = ["xds_credentials_end2end_test.cc"],
external_deps = [
"gtest",
],
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
tags = [
"no_test_ios",
"xds_end2end_test",
],
deps = [
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing:echo_messages_proto",
"//src/proto/grpc/testing:echo_proto",
"//test/core/test_util:grpc_test_util",
"//test/cpp/end2end:test_service_impl",
"//test/cpp/util:test_util",
],
)
grpc_cc_test(
name = "xds_override_host_end2end_test",
size = "large",
srcs = ["xds_override_host_end2end_test.cc"],
external_deps = [
"gtest",
],
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
[promises] Run C++ end to end tests with server promises (#32537) Expand server promises to run with C++ end2end tests. Across connected_channel/call/batch_builder/pipe/transport: - fix a bug where read errors weren't propagated from transport to call so that we can populate failed_before_recv_message for the c++ bindings - ensure those errors are not, however, used to populate the returned call status Add a new latch call arg to lazily propagate the bound CQ for a server call (and client call, but here it's used degenerately - it's always populated). This allows server calls to be properly bound to pollsets.(1)/(2) In call.cc: - move some profiling code from FilterStackCall to Call, and then use it in PromiseBasedCall (this should be cleaned up with tracing work) - implement GetServerAuthority In server.cc: - use an RAII pattern on `MatchResult` to avoid a bug whereby a tag could be dropped if we cancel a request after it's been matched but before it's published - fix deadline export to ServerContext In resource_quota_server.cc: - fix some long standing flakes (that were finally obvious with the new test code) - it's legal here to have client calls not arrive at the server due to resource starvation, work through that (includes adding expectations during a `Step` call, which required some small tweaks to cq_verifier) In the C++ end2end_test.cc: - strengthen a flaky test so it passes consistently (it's likely we'll revisit this with the fuzzing efforts to strengthen it into an actually robust test) (1) It's time to remove this concept (2) Surprisingly the only test that *reliably* demonstrates this not being done is time_change_test --------- Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing/xds/v3:stateful_session_cookie_proto",
"//src/proto/grpc/testing/xds/v3:stateful_session_proto",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
],
)
grpc_cc_test(
name = "xds_pick_first_end2end_test",
size = "large",
srcs = ["xds_pick_first_end2end_test.cc"],
external_deps = [
"gtest",
],
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//src/proto/grpc/testing/xds/v3:aggregate_cluster_proto",
"//src/proto/grpc/testing/xds/v3:pick_first_proto",
"//src/proto/grpc/testing/xds/v3:router_proto",
"//test/core/test_util:grpc_test_util",
"//test/core/test_util:scoped_env_var",
"//test/cpp/end2end:connection_attempt_injector",
],
)
grpc_cc_test(
name = "xds_fallback_end2end_test",
srcs = ["xds_fallback_end2end_test.cc"],
external_deps = [
"gtest",
],
linkstatic = True, # Fixes dyld error on MacOS
tags = [
"no_test_ios",
"no_windows",
"xds_end2end_test",
], # TODO(jtattermusch): fix test on windows
deps = [
":xds_end2end_test_lib",
"//:gpr",
"//:grpc",
"//:grpc++",
"//test/core/test_util:scoped_env_var",
],
)