# 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 ( " :bazel_distribtests.bzl " , " generate_bazel_distribtests " )
load ( " :portability_tests.bzl " , " generate_run_tests_portability_tests " )
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 weirdly 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 weirdly 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_cp312 " ,
build_script = " build_artifact_python_linux_x64_cp312.sh " ,
docker_image_version = " tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version " ,
)
# Building 39 here since default Python version in testing image is 3.9.
grpc_build_artifact_task (
name = " artifact_python_linux_x64_manylinux2014_cp39 " ,
build_script = " build_artifact_python_linux_x64_cp39.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_cp312 " ,
" artifact_python_linux_x64_manylinux2014_cp39 " ,
] ,
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_bullseye " ,
artifact_deps = [
" package_python_linux " ,
] ,
build_script = " run_distribtest_python_linux.sh " ,
docker_image_version = " tools/dockerfile/distribtest/python_bullseye_x64.current_version " ,
)
test_suite (
name = " python_distribtests_linux " ,
tests = [
" :distribtest_python_linux_x64_bullseye " ,
] ,
)
# 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_cp312_build_test " ,
" :artifact_python_linux_x64_manylinux2014_cp39_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 " ,
] ,
)