xref: /aosp_15_r20/external/grpc-grpc/tools/bazelify_tests/test/BUILD (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
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