• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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