[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.

-->
pull/34163/head
Yijie Ma 2 years ago committed by GitHub
parent 7efc7d2806
commit 28291781ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      test/cpp/naming/generate_resolver_component_tests.bzl
  2. 39
      test/cpp/naming/resolver_component_tests_runner_invoker.cc
  3. 5
      test/cpp/util/windows/manifest_file.cc

@ -101,5 +101,5 @@ def generate_resolver_component_tests():
# 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).
tags = ["no_windows", "no_mac", "no_arm64", "resolver_component_tests_runner_invoker"],
tags = ["no_mac", "no_arm64", "resolver_component_tests_runner_invoker"],
)

@ -123,24 +123,33 @@ int main(int argc, char** argv) {
bin_dir + "/resolver_test_record_groups.yaml",
bin_dir + "/utils/dns_resolver", bin_dir + "/utils/tcp_connect");
#else
grpc::testing::ManifestFile manifest_file(
grpc::testing::NormalizeFilePath(test_srcdir.value()) + "\\MANIFEST");
grpc::testing::InvokeResolverComponentTestsRunner(
// TODO(yijiem): Misusing the GRPC_PORT_ISOLATED_RUNTIME preprocessor symbol as
// an indication whether the test is running on RBE or not. Find a better way of
// doing this.
#ifndef GRPC_PORT_ISOLATED_RUNTIME
gpr_log(GPR_ERROR,
"You are invoking the test locally with Bazel, you may need to "
"invoke Bazel with --enable_runfiles=yes.");
#endif // GRPC_PORT_ISOLATED_RUNTIME
result = grpc::testing::InvokeResolverComponentTestsRunner(
grpc::testing::NormalizeFilePath(
test_srcdir.value() + "/com_github_grpc_grpc/test/cpp/naming/"
"resolver_component_tests_runner.exe"),
grpc::testing::NormalizeFilePath(
test_srcdir.value() + "/com_github_grpc_grpc/test/cpp/naming/" +
absl::GetFlag(FLAGS_test_bin_name) + ".exe"),
grpc::testing::NormalizeFilePath(
test_srcdir.value() +
"/com_github_grpc_grpc/test/cpp/naming/utils/dns_server.exe"),
grpc::testing::NormalizeFilePath(
manifest_file.Get("com_github_grpc_grpc/test/cpp/naming/"
"resolver_component_tests_runner.exe")),
test_srcdir.value() + "/com_github_grpc_grpc/test/cpp/naming/"
"resolver_test_record_groups.yaml"),
grpc::testing::NormalizeFilePath(
manifest_file.Get("com_github_grpc_grpc/test/cpp/naming/" +
absl::GetFlag(FLAGS_test_bin_name) + ".exe")),
grpc::testing::NormalizeFilePath(manifest_file.Get(
"com_github_grpc_grpc/test/cpp/naming/utils/dns_server.exe")),
test_srcdir.value() +
"/com_github_grpc_grpc/test/cpp/naming/utils/dns_resolver.exe"),
grpc::testing::NormalizeFilePath(
manifest_file.Get("com_github_grpc_grpc/test/cpp/naming/"
"resolver_test_record_groups.yaml")),
grpc::testing::NormalizeFilePath(manifest_file.Get(
"com_github_grpc_grpc/test/cpp/naming/utils/dns_resolver.exe")),
grpc::testing::NormalizeFilePath(manifest_file.Get(
"com_github_grpc_grpc/test/cpp/naming/utils/tcp_connect.exe")));
test_srcdir.value() +
"/com_github_grpc_grpc/test/cpp/naming/utils/tcp_connect.exe"));
#endif // GPR_WINDOWS
} else {
#ifdef GPR_WINDOWS

@ -18,6 +18,8 @@
#ifdef GPR_WINDOWS
#include <Windows.h>
#include <fstream>
#include <string>
#include <vector>
@ -40,7 +42,8 @@ std::string NormalizeFilePath(const std::string& filepath) {
ManifestFile::ManifestFile(const std::string& filepath)
: filestream_(filepath, std::ios::in | std::ios::binary) {
if (!filestream_.is_open()) {
grpc_core::Crash(absl::StrFormat("Failed to open %s", filepath));
grpc_core::Crash(absl::StrFormat("Failed to open: %s, error code: %d",
filepath, GetLastError()));
}
}

Loading…
Cancel
Save