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 weirdly 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 weirdly 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 php8 -c dbg", 95 ], 96 docker_image_version = "tools/dockerfile/test/php8_debian12_x64.current_version", 97) 98 99grpc_run_tests_harness_test( 100 name = "runtests_php_linux_opt", 101 size = "enormous", 102 args = [ 103 "-l php8 -c opt", 104 ], 105 docker_image_version = "tools/dockerfile/test/php8_debian12_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_debian11_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_debian11_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_debian11_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_debian11_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_debian11_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_debian11_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_debian11_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_bzlmod_linux", 221 size = "enormous", 222 args = ["tools/bazelify_tests/test/bazel_build_with_bzlmod_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_linux", 228 size = "enormous", 229 args = ["tools/bazelify_tests/test/bazel_build_with_grpc_no_xds_linux.sh"], 230 docker_image_version = "tools/dockerfile/test/bazel.current_version", 231) 232 233grpc_run_simple_command_test( 234 name = "bazel_build_with_grpc_no_xds_negative_test_linux", 235 size = "enormous", 236 args = ["tools/bazelify_tests/test/bazel_build_with_grpc_no_xds_negative_test_linux.sh"], 237 docker_image_version = "tools/dockerfile/test/bazel.current_version", 238) 239 240test_suite( 241 name = "bazel_build_tests_linux", 242 tests = [ 243 ":bazel_build_with_bzlmod_linux", 244 ":bazel_build_with_grpc_no_xds_linux", 245 ":bazel_build_with_grpc_no_xds_negative_test_linux", 246 ":bazel_build_with_strict_warnings_linux", 247 ], 248) 249 250# protoc artifact build tasks 251grpc_build_artifact_task( 252 name = "artifact_protoc_linux_x64", 253 build_script = "build_artifact_protoc_linux.sh", 254 docker_image_version = "tools/dockerfile/grpc_artifact_centos6_x64.current_version", 255) 256 257grpc_build_artifact_task( 258 name = "artifact_protoc_linux_x86", 259 build_script = "build_artifact_protoc_linux.sh", 260 docker_image_version = "tools/dockerfile/grpc_artifact_centos6_x86.current_version", 261) 262 263grpc_build_artifact_task( 264 name = "artifact_protoc_linux_aarch64", 265 build_script = "build_artifact_protoc_linux_aarch64.sh", 266 docker_image_version = "tools/dockerfile/grpc_artifact_protoc_aarch64.current_version", 267) 268 269# PHP artifact build tasks 270 271grpc_build_artifact_task( 272 name = "artifact_php_linux_x64", 273 build_script = "build_artifact_php_linux.sh", 274 docker_image_version = "tools/dockerfile/test/php8_zts_debian12_x64.current_version", 275) 276 277# Python artifact build tasks 278 279grpc_build_artifact_task( 280 name = "artifact_python_linux_x64_manylinux2014_cp313", 281 build_script = "build_artifact_python_linux_x64_cp313.sh", 282 docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version", 283) 284 285# Building 39 here since default Python version in testing image is 3.9. 286grpc_build_artifact_task( 287 name = "artifact_python_linux_x64_manylinux2014_cp39", 288 build_script = "build_artifact_python_linux_x64_cp39.sh", 289 docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version", 290) 291 292# TODO(jtattermusch): add more grpc_build_artifact_task targets for existing python artifacts from artifact_targets.py 293 294grpc_build_artifact_task( 295 name = "package_python_linux", 296 # TODO(jtattermusch): add more python artifacts once they are migrated from artifact_targets.py 297 artifact_deps = [ 298 "artifact_python_linux_x64_manylinux2014_cp313", 299 "artifact_python_linux_x64_manylinux2014_cp39", 300 ], 301 build_script = "build_package_python_linux.sh", 302 docker_image_version = "tools/dockerfile/grpc_artifact_python_manylinux2014_x64.current_version", 303) 304 305# C# package build tasks 306 307grpc_build_artifact_task( 308 name = "package_csharp_linux", 309 # csharp package needs pre-built protoc and protoc plugin binaries 310 artifact_deps = [ 311 "artifact_protoc_linux_x64", 312 "artifact_protoc_linux_x86", 313 "artifact_protoc_linux_aarch64", 314 ], 315 build_script = "build_package_csharp_linux.sh", 316 docker_image_version = "tools/dockerfile/test/csharp_debian11_x64.current_version", 317) 318 319# C# distribtests 320 321grpc_run_distribtest_test( 322 name = "distribtest_csharp_linux_x64_debian11", 323 # depend on the C# packages 324 artifact_deps = [ 325 "package_csharp_linux", 326 ], 327 build_script = "run_distribtest_csharp_linux.sh", 328 docker_image_version = "tools/dockerfile/distribtest/csharp_debian11_x64.current_version", 329) 330 331grpc_run_distribtest_test( 332 name = "distribtest_csharp_linux_x64_ubuntu2204", 333 # depend on the C# packages 334 artifact_deps = [ 335 "package_csharp_linux", 336 ], 337 build_script = "run_distribtest_csharp_linux.sh", 338 docker_image_version = "tools/dockerfile/distribtest/csharp_ubuntu2204_x64.current_version", 339) 340 341grpc_run_distribtest_test( 342 name = "distribtest_csharp_linux_x64_alpine", 343 # depend on the C# packages 344 artifact_deps = [ 345 "package_csharp_linux", 346 ], 347 build_script = "run_distribtest_csharp_linux.sh", 348 docker_image_version = "tools/dockerfile/distribtest/csharp_alpine_x64.current_version", 349) 350 351grpc_run_distribtest_test( 352 name = "distribtest_csharp_linux_x64_dotnet31", 353 # depend on the C# packages 354 artifact_deps = [ 355 "package_csharp_linux", 356 ], 357 build_script = "run_distribtest_csharp_linux.sh", 358 docker_image_version = "tools/dockerfile/distribtest/csharp_dotnet31_x64.current_version", 359) 360 361grpc_run_distribtest_test( 362 name = "distribtest_csharp_linux_x64_dotnet5", 363 # depend on the C# packages 364 artifact_deps = [ 365 "package_csharp_linux", 366 ], 367 build_script = "run_distribtest_csharp_linux.sh", 368 docker_image_version = "tools/dockerfile/distribtest/csharp_dotnet5_x64.current_version", 369) 370 371test_suite( 372 name = "csharp_distribtests_linux", 373 tests = [ 374 ":distribtest_csharp_linux_x64_alpine", 375 ":distribtest_csharp_linux_x64_debian11", 376 ":distribtest_csharp_linux_x64_dotnet31", 377 ":distribtest_csharp_linux_x64_dotnet5", 378 ":distribtest_csharp_linux_x64_ubuntu2204", 379 ], 380) 381 382# PHP distribtests 383 384grpc_run_distribtest_test( 385 name = "distribtest_php_linux_x64_debian12", 386 size = "enormous", 387 artifact_deps = [ 388 "artifact_php_linux_x64", 389 ], 390 build_script = "run_distribtest_php_linux.sh", 391 docker_image_version = "tools/dockerfile/distribtest/php8_debian12_x64.current_version", 392 docker_run_as_root = True, 393) 394 395test_suite( 396 name = "php_distribtests_linux", 397 tests = [ 398 ":distribtest_php_linux_x64_debian12", 399 ], 400) 401 402# Python distribtests 403 404grpc_run_distribtest_test( 405 name = "distribtest_python_linux_x64_bullseye", 406 artifact_deps = [ 407 "package_python_linux", 408 ], 409 build_script = "run_distribtest_python_linux.sh", 410 docker_image_version = "tools/dockerfile/distribtest/python_bullseye_x64.current_version", 411) 412 413test_suite( 414 name = "python_distribtests_linux", 415 tests = [ 416 ":distribtest_python_linux_x64_bullseye", 417 ], 418) 419 420# TODO(jtattermusch): add more grpc_run_distribtest_test targets for existing python distribtests from distribtest_targets.py 421# Note that there a two flavors of python distribtests - "binary" (which uses pre-built wheels) and "source" (which compiles python extension for sources) 422 423# 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) 424 425test_suite( 426 name = "artifact_build_tests_linux", 427 tests = [ 428 ":artifact_php_linux_x64_build_test", 429 ":artifact_protoc_linux_aarch64_build_test", 430 ":artifact_protoc_linux_x64_build_test", 431 ":artifact_protoc_linux_x86_build_test", 432 ":artifact_python_linux_x64_manylinux2014_cp313_build_test", 433 ":artifact_python_linux_x64_manylinux2014_cp39_build_test", 434 ":package_csharp_linux_build_test", 435 ":package_python_linux_build_test", 436 ], 437) 438 439test_suite( 440 name = "all_tests_linux", 441 tests = [ 442 ":artifact_build_tests_linux", 443 ":basic_tests_linux", 444 ":bazel_build_tests_linux", 445 ":bazel_distribtests_linux", 446 ":cpp_distribtests_linux", 447 ":csharp_distribtests_linux", 448 ":php_distribtests_linux", 449 ":portability_tests_linux", 450 ":python_distribtests_linux", 451 ], 452) 453