1# Copyright 2023 The gRPC Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15load("//bazel:grpc_build_system.bzl", "grpc_package") 16load("//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") 17load(":bazel_distribtests.bzl", "generate_bazel_distribtests") 18load(":portability_tests.bzl", "generate_run_tests_portability_tests") 19load(":strict_tests.bzl", "generate_strict_tests") 20 21licenses(["notice"]) 22 23grpc_package(name = "tools/bazelify_tests/test") 24 25generate_run_tests_portability_tests(name = "portability_tests_linux") 26 27generate_bazel_distribtests(name = "bazel_distribtests_linux") 28 29# C/C++ 30grpc_run_tests_harness_test( 31 name = "runtests_c_linux_dbg_build_only", 32 size = "enormous", 33 args = [ 34 "-l c -c dbg --build_only", 35 ], 36 docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version", 37) 38 39grpc_run_tests_harness_test( 40 name = "runtests_c_linux_opt_build_only", 41 size = "enormous", 42 args = [ 43 "-l c -c opt --build_only", 44 ], 45 docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version", 46) 47 48grpc_run_tests_harness_test( 49 name = "runtests_cpp_linux_dbg_build_only", 50 size = "enormous", 51 args = [ 52 "-l c++ -c dbg --build_only", 53 ], 54 docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version", 55) 56 57grpc_run_tests_harness_test( 58 name = "runtests_cpp_linux_opt_build_only", 59 size = "enormous", 60 args = [ 61 "-l c++ -c opt --build_only", 62 ], 63 docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version", 64) 65 66# Ruby 67grpc_run_tests_harness_test( 68 name = "runtests_ruby_linux_dbg", 69 size = "enormous", 70 args = [ 71 "-l ruby -c dbg", 72 ], 73 docker_image_version = "tools/dockerfile/test/ruby_debian11_x64.current_version", 74 prepare_script = ":prepare_ruby.sh", 75 use_login_shell = True, # ruby's docker image uses RVM which wierdly requires login shell 76) 77 78grpc_run_tests_harness_test( 79 name = "runtests_ruby_linux_opt", 80 size = "enormous", 81 args = [ 82 "-l ruby -c opt", 83 ], 84 docker_image_version = "tools/dockerfile/test/ruby_debian11_x64.current_version", 85 prepare_script = ":prepare_ruby.sh", 86 use_login_shell = True, # ruby's docker image uses RVM which wierdly requires login shell 87) 88 89# PHP 90grpc_run_tests_harness_test( 91 name = "runtests_php_linux_dbg", 92 size = "enormous", 93 args = [ 94 "-l php7 -c dbg", 95 ], 96 docker_image_version = "tools/dockerfile/test/php7_debian11_x64.current_version", 97) 98 99grpc_run_tests_harness_test( 100 name = "runtests_php_linux_opt", 101 size = "enormous", 102 args = [ 103 "-l php7 -c opt", 104 ], 105 docker_image_version = "tools/dockerfile/test/php7_debian11_x64.current_version", 106) 107 108# Python 109grpc_run_tests_harness_test( 110 name = "runtests_python_linux_opt", 111 size = "enormous", 112 args = [ 113 "-l python -c opt", 114 ], 115 docker_image_version = "tools/dockerfile/test/python_debian11_default_x64.current_version", 116) 117 118# C# 119grpc_run_tests_harness_test( 120 name = "runtests_csharp_linux_dbg", 121 size = "enormous", 122 args = [ 123 "-l csharp -c dbg", 124 ], 125 docker_image_version = "tools/dockerfile/test/csharp_debian11_x64.current_version", 126) 127 128grpc_run_tests_harness_test( 129 name = "runtests_csharp_linux_opt", 130 size = "enormous", 131 args = [ 132 "-l csharp -c opt", 133 ], 134 docker_image_version = "tools/dockerfile/test/csharp_debian11_x64.current_version", 135) 136 137test_suite( 138 name = "basic_tests_linux", 139 tests = [ 140 ":runtests_c_linux_dbg_build_only", 141 ":runtests_c_linux_opt_build_only", 142 ":runtests_cpp_linux_dbg_build_only", 143 ":runtests_cpp_linux_opt_build_only", 144 ":runtests_csharp_linux_dbg", 145 ":runtests_csharp_linux_opt", 146 ":runtests_php_linux_dbg", 147 ":runtests_php_linux_opt", 148 ":runtests_python_linux_opt", 149 ":runtests_ruby_linux_dbg", 150 ":runtests_ruby_linux_opt", 151 ], 152) 153 154grpc_run_cpp_distribtest_test( 155 name = "cpp_distribtest_cmake_linux", 156 size = "enormous", 157 args = ["test/distrib/cpp/run_distrib_test_cmake.sh"], 158 docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version", 159) 160 161grpc_run_cpp_distribtest_test( 162 name = "cpp_distribtest_cmake_as_submodule_linux", 163 size = "enormous", 164 args = ["test/distrib/cpp/run_distrib_test_cmake_as_submodule.sh"], 165 docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version", 166) 167 168grpc_run_cpp_distribtest_test( 169 name = "cpp_distribtest_cmake_as_externalproject_linux", 170 size = "enormous", 171 args = ["test/distrib/cpp/run_distrib_test_cmake_as_externalproject.sh"], 172 docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version", 173) 174 175grpc_run_cpp_distribtest_test( 176 name = "cpp_distribtest_cmake_fetchcontent_linux", 177 size = "enormous", 178 args = ["test/distrib/cpp/run_distrib_test_cmake_fetchcontent.sh"], 179 docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version", 180) 181 182grpc_run_cpp_distribtest_test( 183 name = "cpp_distribtest_cmake_module_install_linux", 184 size = "enormous", 185 args = ["test/distrib/cpp/run_distrib_test_cmake_module_install.sh"], 186 docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version", 187) 188 189grpc_run_cpp_distribtest_test( 190 name = "cpp_distribtest_cmake_pkgconfig_linux", 191 size = "enormous", 192 args = ["test/distrib/cpp/run_distrib_test_cmake_pkgconfig.sh"], 193 docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_x64.current_version", 194) 195 196grpc_run_cpp_distribtest_test( 197 name = "cpp_distribtest_cmake_aarch64_cross_linux", 198 size = "enormous", 199 args = ["test/distrib/cpp/run_distrib_test_cmake_aarch64_cross.sh"], 200 docker_image_version = "tools/dockerfile/distribtest/cpp_debian10_aarch64_cross_x64.current_version", 201) 202 203test_suite( 204 name = "cpp_distribtests_linux", 205 tests = [ 206 ":cpp_distribtest_cmake_aarch64_cross_linux", 207 ":cpp_distribtest_cmake_as_externalproject_linux", 208 ":cpp_distribtest_cmake_as_submodule_linux", 209 ":cpp_distribtest_cmake_fetchcontent_linux", 210 ":cpp_distribtest_cmake_linux", 211 ":cpp_distribtest_cmake_module_install_linux", 212 ":cpp_distribtest_cmake_pkgconfig_linux", 213 ], 214) 215 216# "Bazel build" tests 217generate_strict_tests() 218 219grpc_run_simple_command_test( 220 name = "bazel_build_with_grpc_no_xds_linux", 221 size = "enormous", 222 args = ["tools/bazelify_tests/test/bazel_build_with_grpc_no_xds_linux.sh"], 223 docker_image_version = "tools/dockerfile/test/bazel.current_version", 224) 225 226grpc_run_simple_command_test( 227 name = "bazel_build_with_grpc_no_xds_negative_test_linux", 228 size = "enormous", 229 args = ["tools/bazelify_tests/test/bazel_build_with_grpc_no_xds_negative_test_linux.sh"], 230 docker_image_version = "tools/dockerfile/test/bazel.current_version", 231) 232 233test_suite( 234 name = "bazel_build_tests_linux", 235 tests = [ 236 ":bazel_build_with_grpc_no_xds_linux", 237 ":bazel_build_with_grpc_no_xds_negative_test_linux", 238 ":bazel_build_with_strict_warnings_linux", 239 ], 240) 241 242# protoc artifact build tasks 243grpc_build_artifact_task( 244 name = "artifact_protoc_linux_x64", 245 build_script = "build_artifact_protoc_linux.sh", 246 docker_image_version = "tools/dockerfile/grpc_artifact_centos6_x64.current_version", 247) 248 249grpc_build_artifact_task( 250 name = "artifact_protoc_linux_x86", 251 build_script = "build_artifact_protoc_linux.sh", 252 docker_image_version = "tools/dockerfile/grpc_artifact_centos6_x86.current_version", 253) 254 255grpc_build_artifact_task( 256 name = "artifact_protoc_linux_aarch64", 257 build_script = "build_artifact_protoc_linux.sh", 258 docker_image_version = "tools/dockerfile/grpc_artifact_protoc_aarch64.current_version", 259) 260 261# PHP artifact build tasks 262 263grpc_build_artifact_task( 264 name = "artifact_php_linux_x64", 265 build_script = "build_artifact_php_linux.sh", 266 docker_image_version = "tools/dockerfile/test/php73_zts_debian11_x64.current_version", 267) 268 269# Python artifact build tasks 270 271grpc_build_artifact_task( 272 name = "artifact_python_linux_x64_manylinux2014_cp312", 273 build_script = "build_artifact_python_linux_x64_cp312.sh", 274 docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version", 275) 276 277# Building 39 here since default Python version in testing image is 3.9. 278grpc_build_artifact_task( 279 name = "artifact_python_linux_x64_manylinux2014_cp39", 280 build_script = "build_artifact_python_linux_x64_cp39.sh", 281 docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version", 282) 283 284# TODO(jtattermusch): add more grpc_build_artifact_task targets for existing python artifacts from artifact_targets.py 285 286grpc_build_artifact_task( 287 name = "package_python_linux", 288 # TODO(jtattermusch): add more python artifacts once they are migrated from artifact_targets.py 289 artifact_deps = [ 290 "artifact_python_linux_x64_manylinux2014_cp312", 291 "artifact_python_linux_x64_manylinux2014_cp39", 292 ], 293 build_script = "build_package_python_linux.sh", 294 docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version", 295) 296 297# C# package build tasks 298 299grpc_build_artifact_task( 300 name = "package_csharp_linux", 301 # csharp package needs pre-built protoc and protoc plugin binaries 302 artifact_deps = [ 303 "artifact_protoc_linux_x64", 304 "artifact_protoc_linux_x86", 305 "artifact_protoc_linux_aarch64", 306 ], 307 build_script = "build_package_csharp_linux.sh", 308 docker_image_version = "tools/dockerfile/test/csharp_debian11_x64.current_version", 309) 310 311# C# distribtests 312 313grpc_run_distribtest_test( 314 name = "distribtest_csharp_linux_x64_debian10", 315 # depend on the C# packages 316 artifact_deps = [ 317 "package_csharp_linux", 318 ], 319 build_script = "run_distribtest_csharp_linux.sh", 320 docker_image_version = "tools/dockerfile/distribtest/csharp_debian10_x64.current_version", 321) 322 323grpc_run_distribtest_test( 324 name = "distribtest_csharp_linux_x64_ubuntu2204", 325 # depend on the C# packages 326 artifact_deps = [ 327 "package_csharp_linux", 328 ], 329 build_script = "run_distribtest_csharp_linux.sh", 330 docker_image_version = "tools/dockerfile/distribtest/csharp_ubuntu2204_x64.current_version", 331) 332 333grpc_run_distribtest_test( 334 name = "distribtest_csharp_linux_x64_alpine", 335 # depend on the C# packages 336 artifact_deps = [ 337 "package_csharp_linux", 338 ], 339 build_script = "run_distribtest_csharp_linux.sh", 340 docker_image_version = "tools/dockerfile/distribtest/csharp_alpine_x64.current_version", 341) 342 343grpc_run_distribtest_test( 344 name = "distribtest_csharp_linux_x64_dotnet31", 345 # depend on the C# packages 346 artifact_deps = [ 347 "package_csharp_linux", 348 ], 349 build_script = "run_distribtest_csharp_linux.sh", 350 docker_image_version = "tools/dockerfile/distribtest/csharp_dotnet31_x64.current_version", 351) 352 353grpc_run_distribtest_test( 354 name = "distribtest_csharp_linux_x64_dotnet5", 355 # depend on the C# packages 356 artifact_deps = [ 357 "package_csharp_linux", 358 ], 359 build_script = "run_distribtest_csharp_linux.sh", 360 docker_image_version = "tools/dockerfile/distribtest/csharp_dotnet5_x64.current_version", 361) 362 363test_suite( 364 name = "csharp_distribtests_linux", 365 tests = [ 366 ":distribtest_csharp_linux_x64_alpine", 367 ":distribtest_csharp_linux_x64_debian10", 368 ":distribtest_csharp_linux_x64_dotnet31", 369 ":distribtest_csharp_linux_x64_dotnet5", 370 ":distribtest_csharp_linux_x64_ubuntu2204", 371 ], 372) 373 374# PHP distribtests 375 376grpc_run_distribtest_test( 377 name = "distribtest_php_linux_x64_debian10", 378 size = "enormous", 379 artifact_deps = [ 380 "artifact_php_linux_x64", 381 ], 382 build_script = "run_distribtest_php_linux.sh", 383 docker_image_version = "tools/dockerfile/distribtest/php7_debian10_x64.current_version", 384 docker_run_as_root = True, 385) 386 387test_suite( 388 name = "php_distribtests_linux", 389 tests = [ 390 ":distribtest_php_linux_x64_debian10", 391 ], 392) 393 394# Python distribtests 395 396grpc_run_distribtest_test( 397 name = "distribtest_python_linux_x64_bullseye", 398 artifact_deps = [ 399 "package_python_linux", 400 ], 401 build_script = "run_distribtest_python_linux.sh", 402 docker_image_version = "tools/dockerfile/distribtest/python_bullseye_x64.current_version", 403) 404 405test_suite( 406 name = "python_distribtests_linux", 407 tests = [ 408 ":distribtest_python_linux_x64_bullseye", 409 ], 410) 411 412# TODO(jtattermusch): add more grpc_run_distribtest_test targets for existing python distribtests from distribtest_targets.py 413# Note that there a two flavors of python distribtests - "binary" (which uses pre-built wheels) and "source" (which compiles python extension for sources) 414 415# 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) 416 417test_suite( 418 name = "artifact_build_tests_linux", 419 tests = [ 420 ":artifact_php_linux_x64_build_test", 421 ":artifact_protoc_linux_aarch64_build_test", 422 ":artifact_protoc_linux_x64_build_test", 423 ":artifact_protoc_linux_x86_build_test", 424 ":artifact_python_linux_x64_manylinux2014_cp312_build_test", 425 ":artifact_python_linux_x64_manylinux2014_cp39_build_test", 426 ":package_csharp_linux_build_test", 427 ":package_python_linux_build_test", 428 ], 429) 430 431test_suite( 432 name = "all_tests_linux", 433 tests = [ 434 ":artifact_build_tests_linux", 435 ":basic_tests_linux", 436 ":bazel_build_tests_linux", 437 ":bazel_distribtests_linux", 438 ":cpp_distribtests_linux", 439 ":csharp_distribtests_linux", 440 ":php_distribtests_linux", 441 ":portability_tests_linux", 442 ":python_distribtests_linux", 443 ], 444) 445