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.

444 lines
14 KiB

# Copyright 2023 The 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_package")
load("//tools/bazelify_tests:build_defs.bzl", "grpc_build_artifact_task", "grpc_run_cpp_distribtest_test", "grpc_run_distribtest_test", "grpc_run_simple_command_test", "grpc_run_tests_harness_test")
load(":portability_tests.bzl", "generate_run_tests_portability_tests")
load(":bazel_distribtests.bzl", "generate_bazel_distribtests")
load(":strict_tests.bzl", "generate_strict_tests")
licenses(["notice"])
grpc_package(name = "tools/bazelify_tests/test")
generate_run_tests_portability_tests(name = "portability_tests_linux")
generate_bazel_distribtests(name = "bazel_distribtests_linux")
# C/C++
grpc_run_tests_harness_test(
name = "runtests_c_linux_dbg_build_only",
size = "enormous",
args = [
"-l c -c dbg --build_only",
],
docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version",
)
grpc_run_tests_harness_test(
name = "runtests_c_linux_opt_build_only",
size = "enormous",
args = [
"-l c -c opt --build_only",
],
docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version",
)
grpc_run_tests_harness_test(
name = "runtests_cpp_linux_dbg_build_only",
size = "enormous",
args = [
"-l c++ -c dbg --build_only",
],
docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version",
)
grpc_run_tests_harness_test(
name = "runtests_cpp_linux_opt_build_only",
size = "enormous",
args = [
"-l c++ -c opt --build_only",
],
docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version",
)
# Ruby
grpc_run_tests_harness_test(
name = "runtests_ruby_linux_dbg",
size = "enormous",
args = [
"-l ruby -c dbg",
],
docker_image_version = "tools/dockerfile/test/ruby_debian11_x64.current_version",
prepare_script = ":prepare_ruby.sh",
use_login_shell = True, # ruby's docker image uses RVM which wierdly requires login shell
)
grpc_run_tests_harness_test(
name = "runtests_ruby_linux_opt",
size = "enormous",
args = [
"-l ruby -c opt",
],
docker_image_version = "tools/dockerfile/test/ruby_debian11_x64.current_version",
prepare_script = ":prepare_ruby.sh",
use_login_shell = True, # ruby's docker image uses RVM which wierdly requires login shell
)
# PHP
grpc_run_tests_harness_test(
name = "runtests_php_linux_dbg",
size = "enormous",
args = [
"-l php7 -c dbg",
],
docker_image_version = "tools/dockerfile/test/php7_debian11_x64.current_version",
)
grpc_run_tests_harness_test(
name = "runtests_php_linux_opt",
size = "enormous",
args = [
"-l php7 -c opt",
],
docker_image_version = "tools/dockerfile/test/php7_debian11_x64.current_version",
)
# Python
grpc_run_tests_harness_test(
name = "runtests_python_linux_opt",
size = "enormous",
args = [
"-l python -c opt",
],
docker_image_version = "tools/dockerfile/test/python_debian11_default_x64.current_version",
)
# C#
grpc_run_tests_harness_test(
name = "runtests_csharp_linux_dbg",
size = "enormous",
args = [
"-l csharp -c dbg",
],
docker_image_version = "tools/dockerfile/test/csharp_debian11_x64.current_version",
)
grpc_run_tests_harness_test(
name = "runtests_csharp_linux_opt",
size = "enormous",
args = [
"-l csharp -c opt",
],
docker_image_version = "tools/dockerfile/test/csharp_debian11_x64.current_version",
)
test_suite(
name = "basic_tests_linux",
tests = [
":runtests_c_linux_dbg_build_only",
":runtests_c_linux_opt_build_only",
":runtests_cpp_linux_dbg_build_only",
":runtests_cpp_linux_opt_build_only",
":runtests_csharp_linux_dbg",
":runtests_csharp_linux_opt",
":runtests_php_linux_dbg",
":runtests_php_linux_opt",
":runtests_python_linux_opt",
":runtests_ruby_linux_dbg",
":runtests_ruby_linux_opt",
],
)
grpc_run_cpp_distribtest_test(
name = "cpp_distribtest_cmake_linux",
size = "enormous",
args = ["test/distrib/cpp/run_distrib_test_cmake.sh"],
docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version",
)
grpc_run_cpp_distribtest_test(
name = "cpp_distribtest_cmake_as_submodule_linux",
size = "enormous",
args = ["test/distrib/cpp/run_distrib_test_cmake_as_submodule.sh"],
docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version",
)
grpc_run_cpp_distribtest_test(
name = "cpp_distribtest_cmake_as_externalproject_linux",
size = "enormous",
args = ["test/distrib/cpp/run_distrib_test_cmake_as_externalproject.sh"],
docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version",
)
grpc_run_cpp_distribtest_test(
name = "cpp_distribtest_cmake_fetchcontent_linux",
size = "enormous",
args = ["test/distrib/cpp/run_distrib_test_cmake_fetchcontent.sh"],
docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version",
)
grpc_run_cpp_distribtest_test(
name = "cpp_distribtest_cmake_module_install_linux",
size = "enormous",
args = ["test/distrib/cpp/run_distrib_test_cmake_module_install.sh"],
docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version",
)
grpc_run_cpp_distribtest_test(
name = "cpp_distribtest_cmake_pkgconfig_linux",
size = "enormous",
args = ["test/distrib/cpp/run_distrib_test_cmake_pkgconfig.sh"],
docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version",
)
grpc_run_cpp_distribtest_test(
name = "cpp_distribtest_cmake_aarch64_cross_linux",
size = "enormous",
args = ["test/distrib/cpp/run_distrib_test_cmake_aarch64_cross.sh"],
docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_aarch64_cross_x64.current_version",
)
test_suite(
name = "cpp_distribtests_linux",
tests = [
":cpp_distribtest_cmake_aarch64_cross_linux",
":cpp_distribtest_cmake_as_externalproject_linux",
":cpp_distribtest_cmake_as_submodule_linux",
":cpp_distribtest_cmake_fetchcontent_linux",
":cpp_distribtest_cmake_linux",
":cpp_distribtest_cmake_module_install_linux",
":cpp_distribtest_cmake_pkgconfig_linux",
],
)
# "Bazel build" tests
generate_strict_tests()
grpc_run_simple_command_test(
name = "bazel_build_with_grpc_no_xds_linux",
size = "enormous",
args = ["tools/bazelify_tests/test/bazel_build_with_grpc_no_xds_linux.sh"],
docker_image_version = "tools/dockerfile/test/bazel.current_version",
)
grpc_run_simple_command_test(
name = "bazel_build_with_grpc_no_xds_negative_test_linux",
size = "enormous",
args = ["tools/bazelify_tests/test/bazel_build_with_grpc_no_xds_negative_test_linux.sh"],
docker_image_version = "tools/dockerfile/test/bazel.current_version",
)
test_suite(
name = "bazel_build_tests_linux",
tests = [
":bazel_build_with_grpc_no_xds_linux",
":bazel_build_with_grpc_no_xds_negative_test_linux",
":bazel_build_with_strict_warnings_linux",
],
)
# protoc artifact build tasks
grpc_build_artifact_task(
name = "artifact_protoc_linux_x64",
build_script = "build_artifact_protoc_linux.sh",
docker_image_version = "tools/dockerfile/grpc_artifact_centos6_x64.current_version",
)
grpc_build_artifact_task(
name = "artifact_protoc_linux_x86",
build_script = "build_artifact_protoc_linux.sh",
docker_image_version = "tools/dockerfile/grpc_artifact_centos6_x86.current_version",
)
grpc_build_artifact_task(
name = "artifact_protoc_linux_aarch64",
build_script = "build_artifact_protoc_linux.sh",
docker_image_version = "tools/dockerfile/grpc_artifact_protoc_aarch64.current_version",
)
# PHP artifact build tasks
grpc_build_artifact_task(
name = "artifact_php_linux_x64",
build_script = "build_artifact_php_linux.sh",
docker_image_version = "tools/dockerfile/test/php73_zts_debian11_x64.current_version",
)
# Python artifact build tasks
grpc_build_artifact_task(
name = "artifact_python_linux_x64_manylinux2014_cp311",
build_script = "build_artifact_python_linux_x64_cp311.sh",
docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version",
)
grpc_build_artifact_task(
name = "artifact_python_linux_x64_manylinux2014_cp37",
build_script = "build_artifact_python_linux_x64_cp37.sh",
docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version",
)
# TODO(jtattermusch): add more grpc_build_artifact_task targets for existing python artifacts from artifact_targets.py
grpc_build_artifact_task(
name = "package_python_linux",
# TODO(jtattermusch): add more python artifacts once they are migrated from artifact_targets.py
artifact_deps = [
"artifact_python_linux_x64_manylinux2014_cp311",
"artifact_python_linux_x64_manylinux2014_cp37",
],
build_script = "build_package_python_linux.sh",
docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version",
)
# C# package build tasks
grpc_build_artifact_task(
name = "package_csharp_linux",
# csharp package needs pre-built protoc and protoc plugin binaries
artifact_deps = [
"artifact_protoc_linux_x64",
"artifact_protoc_linux_x86",
"artifact_protoc_linux_aarch64",
],
build_script = "build_package_csharp_linux.sh",
docker_image_version = "tools/dockerfile/test/csharp_debian11_x64.current_version",
)
# C# distribtests
grpc_run_distribtest_test(
name = "distribtest_csharp_linux_x64_debian10",
# depend on the C# packages
artifact_deps = [
"package_csharp_linux",
],
build_script = "run_distribtest_csharp_linux.sh",
docker_image_version = "tools/dockerfile/distribtest/csharp_debian10_x64.current_version",
)
grpc_run_distribtest_test(
name = "distribtest_csharp_linux_x64_ubuntu2204",
# depend on the C# packages
artifact_deps = [
"package_csharp_linux",
],
build_script = "run_distribtest_csharp_linux.sh",
docker_image_version = "tools/dockerfile/distribtest/csharp_ubuntu2204_x64.current_version",
)
grpc_run_distribtest_test(
name = "distribtest_csharp_linux_x64_alpine",
# depend on the C# packages
artifact_deps = [
"package_csharp_linux",
],
build_script = "run_distribtest_csharp_linux.sh",
docker_image_version = "tools/dockerfile/distribtest/csharp_alpine_x64.current_version",
)
grpc_run_distribtest_test(
name = "distribtest_csharp_linux_x64_dotnet31",
# depend on the C# packages
artifact_deps = [
"package_csharp_linux",
],
build_script = "run_distribtest_csharp_linux.sh",
docker_image_version = "tools/dockerfile/distribtest/csharp_dotnet31_x64.current_version",
)
grpc_run_distribtest_test(
name = "distribtest_csharp_linux_x64_dotnet5",
# depend on the C# packages
artifact_deps = [
"package_csharp_linux",
],
build_script = "run_distribtest_csharp_linux.sh",
docker_image_version = "tools/dockerfile/distribtest/csharp_dotnet5_x64.current_version",
)
test_suite(
name = "csharp_distribtests_linux",
tests = [
":distribtest_csharp_linux_x64_alpine",
":distribtest_csharp_linux_x64_debian10",
":distribtest_csharp_linux_x64_dotnet31",
":distribtest_csharp_linux_x64_dotnet5",
":distribtest_csharp_linux_x64_ubuntu2204",
],
)
# PHP distribtests
grpc_run_distribtest_test(
name = "distribtest_php_linux_x64_debian10",
size = "enormous",
artifact_deps = [
"artifact_php_linux_x64",
],
build_script = "run_distribtest_php_linux.sh",
docker_image_version = "tools/dockerfile/distribtest/php7_debian10_x64.current_version",
docker_run_as_root = True,
)
test_suite(
name = "php_distribtests_linux",
tests = [
":distribtest_php_linux_x64_debian10",
],
)
# Python distribtests
grpc_run_distribtest_test(
name = "distribtest_python_linux_x64_buster",
artifact_deps = [
"package_python_linux",
],
build_script = "run_distribtest_python_linux.sh",
docker_image_version = "tools/dockerfile/distribtest/python_buster_x64.current_version",
)
test_suite(
name = "python_distribtests_linux",
tests = [
":distribtest_python_linux_x64_buster",
],
)
# TODO(jtattermusch): add more grpc_run_distribtest_test targets for existing python distribtests from distribtest_targets.py
# Note that there a two flavors of python distribtests - "binary" (which uses pre-built wheels) and "source" (which compiles python extension for sources)
# TODO(jtattermusch): add grpc_build_artifact_task targets for ruby artifacts (which is tricky, since ruby artifact builds do not run under docker since they invoke docker themselves)
test_suite(
name = "artifact_build_tests_linux",
tests = [
":artifact_php_linux_x64_build_test",
":artifact_protoc_linux_aarch64_build_test",
":artifact_protoc_linux_x64_build_test",
":artifact_protoc_linux_x86_build_test",
":artifact_python_linux_x64_manylinux2014_cp311_build_test",
":artifact_python_linux_x64_manylinux2014_cp37_build_test",
":package_csharp_linux_build_test",
":package_python_linux_build_test",
],
)
test_suite(
name = "all_tests_linux",
tests = [
":artifact_build_tests_linux",
":basic_tests_linux",
":bazel_build_tests_linux",
":bazel_distribtests_linux",
":cpp_distribtests_linux",
":csharp_distribtests_linux",
":php_distribtests_linux",
":portability_tests_linux",
":python_distribtests_linux",
],
)