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.

155 lines
3.9 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_test", "grpc_package")
load("//test/core/call/yodel:grpc_yodel_test.bzl", "grpc_yodel_simple_test")
load("//test/cpp/microbenchmarks:grpc_benchmark_config.bzl", "grpc_cc_benchmark")
grpc_package(name = "test/core/client_channel")
4 years ago
licenses(["notice"])
grpc_cc_test(
name = "subchannel_args_test",
srcs = ["subchannel_args_test.cc"],
external_deps = ["gtest"],
language = "C++",
uses_event_engine = False,
uses_polling = False,
deps = [
"//:grpc_client_channel",
"//src/core:channel_args",
"//src/core:subchannel_pool_interface",
"//test/core/test_util:grpc_test_util",
],
)
grpc_yodel_simple_test(
name = "client_channel",
srcs = ["client_channel_test.cc"],
external_deps = ["gtest"],
deps = [
"//:grpc_client_channel",
"//test/core/call/yodel:yodel_test",
],
)
grpc_yodel_simple_test(
name = "connected_subchannel",
srcs = ["connected_subchannel_test.cc"],
external_deps = ["gtest"],
deps = [
"//:grpc_client_channel",
"//test/core/call/yodel:yodel_test",
],
)
grpc_yodel_simple_test(
name = "load_balanced_call_destination",
srcs = ["load_balanced_call_destination_test.cc"],
external_deps = [
"absl/log:log",
"gtest",
],
deps = [
"//:grpc_client_channel",
"//test/core/call/yodel:yodel_test",
],
)
grpc_cc_test(
name = "retry_throttle_test",
srcs = ["retry_throttle_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
uses_event_engine = False,
uses_polling = False,
deps = [
"//:gpr",
"//:grpc",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "client_channel_service_config_test",
srcs = ["client_channel_service_config_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
uses_event_engine = False,
uses_polling = False,
deps = [
"//:gpr",
"//:grpc",
"//src/core:channel_args",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_test(
name = "retry_service_config_test",
srcs = ["retry_service_config_test.cc"],
external_deps = [
"gtest",
],
language = "C++",
uses_event_engine = False,
uses_polling = False,
deps = [
"//:gpr",
"//:grpc",
"//src/core:channel_args",
"//test/core/test_util:grpc_test_util",
],
)
grpc_cc_benchmark(
name = "bm_client_channel",
srcs = ["bm_client_channel.cc"],
deps = [
"//:grpc",
"//src/core:default_event_engine",
"//test/core/transport:call_spine_benchmarks",
],
)
[call-v3][client-channel] Add benchmarks for lb picks (#37052) Two new benchmarks here-in. Benchmark 1: `bm_picker` ------ Measures various load balancing policies pick performance. For now we cover `pick_first` and `weighted_round_robin` at 1, 10, 100, 1000, 10000, and 100000 backends. Today's output: ``` ------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------ BM_Pick/pick_first/1 20.4 ns 20.4 ns 68285 BM_Pick/pick_first/10 20.6 ns 20.6 ns 68274 BM_Pick/pick_first/100 20.5 ns 20.5 ns 67817 BM_Pick/pick_first/1000 20.6 ns 20.6 ns 67347 BM_Pick/pick_first/10000 20.7 ns 20.7 ns 67317 BM_Pick/pick_first/100000 20.9 ns 20.9 ns 67385 BM_Pick/weighted_round_robin/1 54.7 ns 54.7 ns 26641 BM_Pick/weighted_round_robin/10 54.2 ns 54.2 ns 25828 BM_Pick/weighted_round_robin/100 55.2 ns 55.2 ns 26210 BM_Pick/weighted_round_robin/1000 54.1 ns 54.1 ns 25678 BM_Pick/weighted_round_robin/10000 77.3 ns 76.6 ns 15776 BM_Pick/weighted_round_robin/100000 148 ns 148 ns 9882 ``` Benchmark 2: `bm_load_balanced_call_destination` ----- This benchmark measures call performance when a call spine passes through a `LoadBalancedCallDestination`, and with `BM_LoadBalancedCallDestination` also the construction/destruction cost of this object. We do not consider picker performance in this benchmark as it's separately covered by `bm_picker` above. Today's output: ``` ----------------------------------------------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ----------------------------------------------------------------------------------------------------------------------------------------- BM_UnaryWithSpawnPerEnd<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1255 ns 1255 ns 1076 BM_UnaryWithSpawnPerOp<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 1459 ns 1459 ns 939 BM_ClientToServerStreaming<UnstartedCallDestinationFixture<LoadBalancedCallDestinationTraits>> 209 ns 209 ns 6775 BM_LoadBalancedCallDestination 92.8 ns 92.8 ns 15063 ``` Notes ------ There's some duplicated code between the benchmarks & tests -- this is ok -- as the tests evolve we'll likely want to add more checks to the fixtures, whereas as the benchmarks evolve we may well want to optimize the fixtures so that performance of the systems under test dominate more. That is, the duplicated code is expected to have different evolutionary tracks. Closes #37052 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37052 from ctiller:moar-benchy 30c7072d878248908c59ca53544c3a9d155d9dc6 PiperOrigin-RevId: 658181731
4 months ago
grpc_cc_benchmark(
name = "bm_load_balanced_call_destination",
srcs = ["bm_load_balanced_call_destination.cc"],
deps = [
"//:grpc",
"//src/core:default_event_engine",
"//test/core/transport:call_spine_benchmarks",
],
)
grpc_cc_test(
name = "lb_metadata_test",
srcs = ["lb_metadata_test.cc"],
external_deps = ["gtest"],
language = "C++",
uses_event_engine = False,
uses_polling = False,
deps = [
"//src/core:lb_metadata",
"//src/core:metadata_batch",
"//src/core:slice",
"//test/core/test_util:grpc_test_util",
],
)