Merge pull request #20265 from jtattermusch/win_rbe_enabling_tests

Start running windows bazel RBE tests
pull/20513/head
Jan Tattermusch 5 years ago committed by GitHub
commit 11041e3e3c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 15
      bazel/grpc_build_system.bzl
  2. 9
      bazel/grpc_deps.bzl
  3. 1
      test/core/bad_ssl/generate_tests.bzl
  4. 1
      test/core/client_channel/BUILD
  5. 1
      test/core/end2end/BUILD
  6. 3
      test/core/end2end/fuzzers/BUILD
  7. 51
      test/core/end2end/generate_tests.bzl
  8. 2
      test/core/fling/BUILD
  9. 3
      test/core/gprpp/BUILD
  10. 1
      test/core/handshake/BUILD
  11. 4
      test/core/http/BUILD
  12. 1
      test/core/iomgr/BUILD
  13. 1
      test/core/json/BUILD
  14. 1
      test/core/memory_usage/BUILD
  15. 2
      test/core/nanopb/BUILD
  16. 2
      test/core/security/BUILD
  17. 2
      test/core/slice/BUILD
  18. 1
      test/core/transport/BUILD
  19. 1
      test/core/transport/chttp2/BUILD
  20. 1
      test/core/tsi/BUILD
  21. 1
      test/cpp/common/BUILD
  22. 10
      test/cpp/end2end/BUILD
  23. 1
      test/cpp/ext/filters/census/BUILD
  24. 1
      test/cpp/interop/BUILD
  25. 1
      test/cpp/qps/BUILD
  26. 3
      test/cpp/util/BUILD
  27. 2
      tools/internal_ci/windows/bazel_rbe.bat
  28. 4
      tools/remote_build/README.md
  29. 11
      tools/remote_build/rbe_common.bazelrc
  30. 3
      tools/remote_build/windows.bazelrc

@ -184,17 +184,17 @@ def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data
"exec_compatible_with": exec_compatible_with,
}
if uses_polling:
# Only run targets with pollers for non-MSVC
# TODO(yfen): Enable MSVC for poller-enabled targets without pollers
# the vanilla version of the test should run on platforms that only
# support a single poller
native.cc_test(
name = name,
testonly = True,
tags = [
"manual",
"no_windows",
],
tags = (tags + [
"no_linux", # linux supports multiple pollers
]),
**args
)
# on linux we run the same test multiple times, once for each poller
for poller in POLLERS:
native.sh_test(
name = name + "@poller=" + poller,
@ -208,10 +208,11 @@ def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data
poller,
"$(location %s)" % name,
] + args["args"],
tags = (tags + ["no_windows"]),
tags = (tags + ["no_windows", "no_mac"]),
exec_compatible_with = exec_compatible_with,
)
else:
# the test behavior doesn't depend on polling, just generate the test
native.cc_test(name = name, tags = tags, **args)
ios_cc_test(
name = name,

@ -174,13 +174,14 @@ def grpc_deps():
)
if "bazel_toolchains" not in native.existing_rules():
# list of releases is at https://releases.bazel.build/bazel-toolchains.html
http_archive(
name = "bazel_toolchains",
sha256 = "872955b658113924eb1a3594b04d43238da47f4f90c17b76e8785709490dc041",
strip_prefix = "bazel-toolchains-1083686fde6032378d52b4c98044922cebde364e",
sha256 = "22ca5b8115c8673ecb627a02b606529e813961e447933863fccdf325cc5f999f",
strip_prefix = "bazel-toolchains-0.29.5",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/1083686fde6032378d52b4c98044922cebde364e.tar.gz",
"https://github.com/bazelbuild/bazel-toolchains/archive/1083686fde6032378d52b4c98044922cebde364e.tar.gz",
"https://github.com/bazelbuild/bazel-toolchains/releases/download/0.29.5/bazel-toolchains-0.29.5.tar.gz",
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/0.29.5.tar.gz",
],
)

@ -46,4 +46,5 @@ def grpc_bad_ssl_tests():
deps = ['//test/core/util:grpc_test_util',
'//:gpr',
'//test/core/end2end:cq_verifier'],
tags = ["no_windows"],
)

@ -30,6 +30,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(

@ -117,6 +117,7 @@ grpc_cc_test(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(

@ -33,6 +33,7 @@ grpc_fuzzer(
"//test/core/end2end:ssl_test_data",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_fuzzer(
@ -45,6 +46,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_fuzzer(
@ -57,4 +59,5 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)

@ -46,7 +46,7 @@ def _fixture_options(
supports_write_buffering = supports_write_buffering,
client_channel = client_channel,
supports_msvc = supports_msvc,
#_platforms=_platforms,
_platforms=_platforms,
)
# maps fixture name to whether it requires the security library
@ -368,6 +368,16 @@ def _compatible(fopt, topt):
return False
return True
def _platform_support_tags(fopt):
result = []
if not "windows" in fopt._platforms:
result += ["no_windows"]
if not "mac" in fopt._platforms:
result += ["no_mac"]
if not "linux" in fopt._platforms:
result += ["no_linux"]
return result
def grpc_end2end_tests():
grpc_cc_library(
name = "end2end_tests",
@ -386,8 +396,7 @@ def grpc_end2end_tests():
":http_proxy",
":proxy",
":local_util",
],
tags = ["no_windows"],
]
)
for f, fopt in END2END_FIXTURES.items():
@ -401,12 +410,25 @@ def grpc_end2end_tests():
"//:grpc",
"//:gpr",
],
tags = ["no_windows"],
tags = _platform_support_tags(fopt),
)
for t, topt in END2END_TESTS.items():
#print(_compatible(fopt, topt), f, t, fopt, topt)
if not _compatible(fopt, topt):
continue
native.sh_test(
name = "%s_test@%s" % (f, t),
data = [":%s_test" % f],
srcs = ["end2end_test.sh"],
args = [
"$(location %s_test)" % f,
t
],
tags = ["no_linux"] + _platform_support_tags(fopt),
)
for poller in POLLERS:
native.sh_test(
name = "%s_test@%s@poller=%s" % (f, t, poller),
@ -417,7 +439,7 @@ def grpc_end2end_tests():
t,
poller,
],
tags = ["no_windows"],
tags = ["no_mac", "no_windows"],
)
def grpc_end2end_nosec_tests():
@ -439,8 +461,7 @@ def grpc_end2end_nosec_tests():
":http_proxy",
":proxy",
":local_util",
],
tags = ["no_windows"],
]
)
for f, fopt in END2END_NOSEC_FIXTURES.items():
@ -456,7 +477,7 @@ def grpc_end2end_nosec_tests():
"//:grpc_unsecure",
"//:gpr",
],
tags = ["no_windows"],
tags = _platform_support_tags(fopt),
)
for t, topt in END2END_TESTS.items():
#print(_compatible(fopt, topt), f, t, fopt, topt)
@ -464,6 +485,18 @@ def grpc_end2end_nosec_tests():
continue
if topt.secure:
continue
native.sh_test(
name = "%s_nosec_test@%s" % (f, t),
data = [":%s_nosec_test" % f],
srcs = ["end2end_test.sh"],
args = [
"$(location %s_nosec_test)" % f,
t
],
tags = ["no_linux"] + _platform_support_tags(fopt),
)
for poller in POLLERS:
native.sh_test(
name = "%s_nosec_test@%s@poller=%s" % (f, t, poller),
@ -474,5 +507,5 @@ def grpc_end2end_nosec_tests():
t,
poller,
],
tags = ["no_windows"],
tags = ["no_mac", "no_windows"],
)

@ -59,6 +59,7 @@ grpc_cc_test(
"//test/core/end2end:ssl_test_data",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(
@ -74,4 +75,5 @@ grpc_cc_test(
"//test/core/end2end:ssl_test_data",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)

@ -22,6 +22,7 @@ grpc_cc_test(
name = "fork_test",
srcs = ["fork_test.cc"],
language = "C++",
tags = ["no_windows"],
deps = [
"//:gpr",
"//test/core/util:grpc_test_util",
@ -50,6 +51,7 @@ grpc_cc_test(
"gtest",
],
language = "C++",
tags = ["no_windows"], # TODO(jtattermusch): fix the failure on windows
deps = [
"//:gpr",
"//test/core/util:grpc_test_util",
@ -125,6 +127,7 @@ grpc_cc_test(
srcs = ["mpscq_test.cc"],
exec_compatible_with = ["//third_party/toolchains/machine_size:large"],
language = "C++",
tags = ["no_windows"], # machine_size:large is not configured for windows RBE
deps = [
"//:gpr",
"//test/core/util:grpc_test_util",

@ -97,4 +97,5 @@ grpc_cc_test(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)

@ -30,6 +30,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_fuzzer(
@ -42,6 +43,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
# Copyright 2017 gRPC authors.
@ -78,6 +80,7 @@ grpc_cc_test(
"//test/core/end2end:ssl_test_data",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(
@ -97,6 +100,7 @@ grpc_cc_test(
"//test/core/end2end:ssl_test_data",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(

@ -41,6 +41,7 @@ grpc_cc_test(
srcs = ["combiner_test.cc"],
exec_compatible_with = ["//third_party/toolchains/machine_size:large"],
language = "C++",
tags = ["no_windows"], # machine_size:large is not configured for windows RBE
deps = [
"//:gpr",
"//:grpc",

@ -30,6 +30,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_binary(

@ -49,6 +49,7 @@ grpc_cc_test(
":memory_usage_server",
],
language = "C++",
tags = ["no_windows"], # TODO(jtattermusch): breaks windows RBE build if enabled
deps = [
"//:gpr",
"//:grpc",

@ -30,6 +30,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_fuzzer(
@ -42,4 +43,5 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)

@ -30,6 +30,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_fuzzer(
@ -43,6 +44,7 @@ grpc_fuzzer(
"//test/core/end2end:ssl_test_data",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_library(

@ -30,6 +30,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_fuzzer(
@ -42,6 +43,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(

@ -25,6 +25,7 @@ grpc_cc_test(
"gtest",
],
language = "C++",
tags = ["no_windows"], # TODO(jtattermusch): investigate the timeout on windows
deps = [
"//:gpr",
"//:grpc",

@ -28,6 +28,7 @@ grpc_fuzzer(
"//:grpc",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(

@ -85,6 +85,7 @@ grpc_cc_test(
"//:tsi",
"//test/core/util:grpc_test_util",
],
tags = ["no_windows"],
)
grpc_cc_test(

@ -24,6 +24,7 @@ grpc_cc_test(
external_deps = [
"gtest",
],
tags = ["no_windows"], # TODO(jtattermusch): fix test on windows RBE
deps = [
"//:grpc++_unsecure",
"//test/core/util:grpc_test_util_unsecure",

@ -122,7 +122,7 @@ grpc_cc_test(
"//test/core/util:grpc_test_util",
"//test/cpp/util:test_util",
],
tags = ["no_test_ios"],
tags = ["no_test_ios", "no_windows"],
)
grpc_cc_binary(
@ -442,6 +442,7 @@ grpc_cc_test(
"//test/core/util:test_lb_policies",
"//test/cpp/util:test_util",
],
tags = ["no_windows"], # TODO(jtattermusch): fix test on windows
)
grpc_cc_test(
@ -482,6 +483,7 @@ grpc_cc_test(
"//test/core/util:grpc_test_util",
"//test/cpp/util:test_util",
],
tags = ["no_windows"], # TODO(jtattermusch): fix test on windows
)
grpc_cc_test(
@ -505,6 +507,7 @@ grpc_cc_test(
"//test/core/util:grpc_test_util",
"//test/cpp/util:test_util",
],
tags = ["no_windows"], # TODO(jtattermusch): fix test on windows
)
grpc_cc_test(
@ -567,7 +570,7 @@ grpc_cc_test(
"//test/core/util:grpc_test_util",
"//test/cpp/util:test_util",
],
tags = ["no_test_ios"],
tags = ["no_test_ios", "no_windows"],
)
grpc_cc_binary(
@ -621,7 +624,7 @@ grpc_cc_test(
"//src/proto/grpc/testing:echo_proto",
"//test/cpp/util:test_util",
],
tags = ["no_test_ios"],
tags = ["no_test_ios", "no_windows"],
)
grpc_cc_test(
@ -687,6 +690,7 @@ grpc_cc_test(
external_deps = [
"gtest",
],
tags = ["no_windows"], # TODO(jtattermusch): fix test on windows
deps = [
"//:gpr",
"//:grpc",

@ -37,4 +37,5 @@ grpc_cc_test(
"//test/cpp/util:test_config",
"//test/cpp/util:test_util",
],
tags = ["no_windows"], # TODO(jtattermusch): fix test on windows
)

@ -44,6 +44,7 @@ grpc_cc_binary(
"grpclb_fallback_test.cc",
],
language = "C++",
tags = ["no_windows"],
deps = [
"//src/proto/grpc/testing:empty_proto",
"//src/proto/grpc/testing:messages_proto",

@ -170,6 +170,7 @@ grpc_cc_test(
name = "qps_openloop_test",
srcs = ["qps_openloop_test.cc"],
exec_compatible_with = ["//third_party/toolchains/machine_size:large"],
tags = ["no_windows"], # machine_size:large is not configured for windows RBE
deps = [
":benchmark_config",
":driver_impl",

@ -188,7 +188,8 @@ grpc_cc_test(
"gtest",
],
tags = ["nomsan", # death tests seem to be incompatible with msan
"no_test_ios"
"no_test_ios",
"no_windows",
],
deps = [
":grpc_cli_libs",

@ -24,7 +24,7 @@ powershell -Command "[guid]::NewGuid().ToString()" >%KOKORO_ARTIFACTS_DIR%/bazel
set /p BAZEL_INVOCATION_ID=<%KOKORO_ARTIFACTS_DIR%/bazel_invocation_ids
@rem TODO(jtattermusch): windows RBE should be able to use the same credentials as Linux RBE.
bazel --bazelrc=tools/remote_build/windows.bazelrc build --invocation_id="%BAZEL_INVOCATION_ID%" --workspace_status_command=tools/remote_build/workspace_status_kokoro.sh :all --google_credentials=%KOKORO_GFILE_DIR%/rbe-windows-credentials.json
bazel --bazelrc=tools/remote_build/windows.bazelrc test --invocation_id="%BAZEL_INVOCATION_ID%" --workspace_status_command=tools/remote_build/workspace_status_kokoro.sh --google_credentials=%KOKORO_GFILE_DIR%/rbe-windows-credentials.json //test/...
set BAZEL_EXITCODE=%errorlevel%
@rem TODO(jtattermusch): upload results to bigquery

@ -31,8 +31,8 @@ bazel --bazelrc=tools/remote_build/manual.bazelrc test --config=asan //test/...
Run on Windows MSVC:
```
# RBE manual run only for c-core (must be run on a Windows host machine)
bazel --bazelrc=tools/remote_build/windows.bazelrc build :all
# manual run of bazel tests remotely on RBE Windows (must be run from Windows machine)
bazel --bazelrc=tools/remote_build/windows.bazelrc test //test/...
```
Available command line options can be found in

@ -44,6 +44,11 @@ build --define GRPC_PORT_ISOLATED_RUNTIME=1
# without verbose gRPC logs the test outputs are not very useful
test --test_env=GRPC_VERBOSITY=debug
# we assume the default bazel RBE build is on linux,
# so filter out stuff that should not be built or run there.
build --test_tag_filters=-no_linux
build --build_tag_filters=-no_linux
# Default test timeouts for all RBE tests (sanitizers override these values)
# TODO(jtattermusch): revisit the non-standard test timeout values
build --test_timeout=300,450,1200,3600
@ -53,7 +58,7 @@ build --test_timeout=300,450,1200,3600
build:asan --copt=-gmlt
# TODO(jtattermusch): use more reasonable test timeout
build:asan --test_timeout=3600
build:asan --test_tag_filters=-qps_json_driver
build:asan --test_tag_filters=-no_linux,-qps_json_driver
# memory sanitizer: most settings are already in %workspace%/.bazelrc
# we only need a few additional ones that are Foundry specific
@ -61,7 +66,7 @@ build:msan --copt=-gmlt
# TODO(jtattermusch): use more reasonable test timeout
build:msan --test_timeout=3600
# TODO(jtattermusch): revisit the disabled tests
build:msan --test_tag_filters=-nomsan,-json_run_localhost
build:msan --test_tag_filters=-no_linux,-nomsan,-json_run_localhost
build:msan --cxxopt=--stdlib=libc++
# setting LD_LIBRARY_PATH is necessary
# to avoid "libc++.so.1: cannot open shared object file"
@ -75,7 +80,7 @@ build:msan --crosstool_top=@rbe_msan//cc:toolchain
build:tsan --copt=-gmlt
# TODO(jtattermusch): use more reasonable test timeout
build:tsan --test_timeout=3600
build:tsan --test_tag_filters=-qps_json_driver
build:tsan --test_tag_filters=-no_linux,-qps_json_driver
build:tsan --extra_execution_platforms=//third_party/toolchains:rbe_ubuntu1604,//third_party/toolchains:rbe_ubuntu1604_large
# undefined behavior sanitizer: most settings are already in %workspace%/.bazelrc

@ -34,6 +34,9 @@ build --define GRPC_PORT_ISOLATED_RUNTIME=1
build --test_tag_filters=-no_windows
build --build_tag_filters=-no_windows
# required for the tests to pass on Windows RBE
build --incompatible_windows_native_test_wrapper
# without verbose gRPC logs the test outputs are not very useful
test --test_env=GRPC_VERBOSITY=debug

Loading…
Cancel
Save