|
|
|
#!/usr/bin/env python2.7
|
|
|
|
# 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.
|
|
|
|
|
|
|
|
"""
|
|
|
|
Houses generate_resolver_component_tests.
|
|
|
|
"""
|
|
|
|
|
|
|
|
load("//bazel:grpc_build_system.bzl", "grpc_cc_binary", "grpc_cc_test")
|
|
|
|
|
|
|
|
# buildifier: disable=unnamed-macro
|
|
|
|
def generate_resolver_component_tests():
|
|
|
|
"""Generate address_sorting_test and resolver_component_test suite with different configurations.
|
|
|
|
|
|
|
|
Note that the resolver_component_test suite's configuration is 2 dimensional: security and whether to enable the event_engine_dns experiment.
|
|
|
|
"""
|
|
|
|
for unsecure_build_config_suffix in ["_unsecure", ""]:
|
|
|
|
grpc_cc_test(
|
|
|
|
name = "address_sorting_test%s" % unsecure_build_config_suffix,
|
|
|
|
srcs = [
|
|
|
|
"address_sorting_test.cc",
|
|
|
|
],
|
|
|
|
external_deps = [
|
|
|
|
"gtest",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
"//test/cpp/util:test_util%s" % unsecure_build_config_suffix,
|
|
|
|
"//test/core/util:grpc_test_util%s" % unsecure_build_config_suffix,
|
|
|
|
"//:grpc++%s" % unsecure_build_config_suffix,
|
|
|
|
"//:grpc%s" % unsecure_build_config_suffix,
|
|
|
|
"//:gpr",
|
|
|
|
"//test/cpp/util:test_config",
|
|
|
|
],
|
|
|
|
tags = ["no_windows"],
|
|
|
|
)
|
|
|
|
|
|
|
|
# meant to be invoked only through the top-level shell script driver
|
|
|
|
grpc_cc_binary(
|
|
|
|
name = "resolver_component_test%s" % unsecure_build_config_suffix,
|
|
|
|
testonly = 1,
|
|
|
|
srcs = [
|
|
|
|
"resolver_component_test.cc",
|
|
|
|
],
|
|
|
|
external_deps = [
|
|
|
|
"gtest",
|
|
|
|
],
|
|
|
|
deps = [
|
|
|
|
"//test/cpp/util:test_util%s" % unsecure_build_config_suffix,
|
|
|
|
"//test/core/util:grpc_test_util%s" % unsecure_build_config_suffix,
|
[fuzzing] Implement endpoints for FuzzingEventEngine (#32689)
Implement listeners, connection, endpoints for `FuzzingEventEngine`.
Allows the fuzzer to select write sizes and delays, connection delays,
and port assignments.
I made a few modifications to the test suite to admit this event engine
to pass the client & server tests:
1. the test factories return shared_ptr<> to admit us to return the same
event engine for both the oracle and the implementation - necessary
because FuzzingEventEngine forms a closed world of addresses & ports.
2. removed the WaitForSingleOwner calls - these seem unnecessary, and we
don't ask our users to do this - tested existing linux tests 1000x
across debug, asan, tsan with this change
Additionally, the event engine overrides the global port picker logic so
that port assignments are made by the fuzzer too.
This PR is a step along a longer journey, and has some outstanding
brethren PR's, and some follow-up work:
* #32603 will convert all the core e2e tests into a more malleable form
* we'll then use #32667 to turn all of these into fuzzers
* finally we'll integrate this into that work and turn all core e2e
tests into fuzzers over timer & callback reorderings and io
size/spacings
---------
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
|
|
|
"//test/core/util:fake_udp_and_tcp_server%s" % unsecure_build_config_suffix,
|
|
|
|
"//test/core/util:socket_use_after_close_detector%s" % unsecure_build_config_suffix,
|
|
|
|
"//:grpc++%s" % unsecure_build_config_suffix,
|
|
|
|
"//:grpc%s" % unsecure_build_config_suffix,
|
|
|
|
"//:gpr",
|
|
|
|
"//src/core:ares_resolver",
|
|
|
|
"//test/cpp/util:test_config",
|
|
|
|
],
|
|
|
|
tags = ["no_windows"],
|
|
|
|
)
|
|
|
|
grpc_cc_test(
|
|
|
|
name = "resolver_component_tests_runner_invoker%s" % unsecure_build_config_suffix,
|
|
|
|
srcs = [
|
|
|
|
"resolver_component_tests_runner_invoker.cc",
|
|
|
|
],
|
|
|
|
external_deps = [
|
|
|
|
"absl/flags:flag",
|
|
|
|
"absl/strings",
|
|
|
|
],
|
|
|
|
deps = [
|
[fuzzing] Implement endpoints for FuzzingEventEngine (#32689)
Implement listeners, connection, endpoints for `FuzzingEventEngine`.
Allows the fuzzer to select write sizes and delays, connection delays,
and port assignments.
I made a few modifications to the test suite to admit this event engine
to pass the client & server tests:
1. the test factories return shared_ptr<> to admit us to return the same
event engine for both the oracle and the implementation - necessary
because FuzzingEventEngine forms a closed world of addresses & ports.
2. removed the WaitForSingleOwner calls - these seem unnecessary, and we
don't ask our users to do this - tested existing linux tests 1000x
across debug, asan, tsan with this change
Additionally, the event engine overrides the global port picker logic so
that port assignments are made by the fuzzer too.
This PR is a step along a longer journey, and has some outstanding
brethren PR's, and some follow-up work:
* #32603 will convert all the core e2e tests into a more malleable form
* we'll then use #32667 to turn all of these into fuzzers
* finally we'll integrate this into that work and turn all core e2e
tests into fuzzers over timer & callback reorderings and io
size/spacings
---------
Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2 years ago
|
|
|
"//test/cpp/util:test_util%s" % unsecure_build_config_suffix,
|
|
|
|
"//test/core/util:grpc_test_util%s" % unsecure_build_config_suffix,
|
|
|
|
"//:grpc++%s" % unsecure_build_config_suffix,
|
|
|
|
"//:grpc%s" % unsecure_build_config_suffix,
|
|
|
|
"//:gpr",
|
|
|
|
"//test/cpp/util:test_config",
|
|
|
|
"//test/cpp/util/windows:manifest_file",
|
|
|
|
],
|
|
|
|
data = [
|
|
|
|
":resolver_component_tests_runner",
|
|
|
|
":resolver_component_test%s" % unsecure_build_config_suffix,
|
|
|
|
"//test/cpp/naming/utils:dns_server",
|
|
|
|
"//test/cpp/naming/utils:dns_resolver",
|
|
|
|
"//test/cpp/naming/utils:tcp_connect",
|
|
|
|
"//test/cpp/naming:resolver_test_record_groups", # include the transitive dependency so that the dns server py binary can locate this
|
|
|
|
],
|
|
|
|
args = [
|
|
|
|
"--test_bin_name=resolver_component_test%s" % unsecure_build_config_suffix,
|
|
|
|
"--running_under_bazel=true",
|
|
|
|
],
|
|
|
|
# The test is highly flaky on AWS workers that we use for running ARM64 tests.
|
|
|
|
# The "no_arm64" tag can be used to skip it.
|
|
|
|
# (see https://github.com/grpc/grpc/issues/25289).
|
[Windows] Make resolver_component_tests_runner_invoker run with Bazel on RBE (#34122)
This makes the resolver component tests suite run on Window RBE by
adding a flag in the test driver to further differentiate between Bazel
local run and Bazel RBE run on Windows since they have different
RUNFILES behavior.
Local Bazel run succeeds:
```
C:\Users\yijiem\projects\grpc>bazel --output_base=C:\bazel2 test --dynamic_mode=off --verbose_failures --test_arg=--running_locally=true //test/cpp/naming:resolver_component_tests_runner_invoker
INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (0 packages loaded, 0 targets configured).
INFO: Found 1 test target...
Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date:
bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe
INFO: Elapsed time: 196.080s, Critical Path: 193.21s
INFO: 2 processes: 1 internal, 1 local.
INFO: Build completed successfully, 2 total actions
//test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 193.1s
Executed 1 out of 1 test: 1 test passes.
```
RBE run succeeds:
```
C:\Users\yijiem\projects\grpc>bazel --bazelrc=tools/remote_build/windows.bazelrc test --config=windows_opt --dynamic_mode=off --verbose_failures --host_linkopt=/NODEFAULTLIB:libcmt.lib --host_linkopt=/DEFAULTLIB:msvcrt.lib --nocache_test_results //test/cpp/naming:resolver_component_tests_runner_invoker
INFO: Invocation ID: d467f2e3-7da6-4bb5-8b9b-84f1181ebc60
WARNING: --remote_upload_local_results is set, but the remote cache does not support uploading action results or the current account is not authorized to write local results to the remote cache.
INFO: Streaming build results to: https://source.cloud.google.com/results/invocations/d467f2e3-7da6-4bb5-8b9b-84f1181ebc60
INFO: Analyzed target //test/cpp/naming:resolver_component_tests_runner_invoker (0 packages loaded, 133 targets configured).
INFO: Found 1 test target...
Target //test/cpp/naming:resolver_component_tests_runner_invoker up-to-date:
bazel-bin/test/cpp/naming/resolver_component_tests_runner_invoker.exe
INFO: Elapsed time: 41.627s, Critical Path: 39.42s
INFO: 2 processes: 1 internal, 1 remote.
//test/cpp/naming:resolver_component_tests_runner_invoker PASSED in 33.0s
Executed 1 out of 1 test: 1 test passes.
INFO: Streaming build results to: https://source.cloud.google.com/results/invocations/d467f2e3-7da6-4bb5-8b9b-84f1181ebc60
INFO: Build completed successfully, 2 total actions
```
<!--
If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.
If your pull request is for a specific language, please add the
appropriate
lang label.
-->
1 year ago
|
|
|
tags = ["no_mac", "no_arm64", "resolver_component_tests_runner_invoker"],
|
|
|
|
)
|