The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#) https://grpc.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

94 lines
4.4 KiB

# 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.
"""
Generates portability tests.
"""
load("//tools/bazelify_tests:build_defs.bzl", "grpc_run_tests_harness_test")
def _safe_language_name(name):
"""Character '+' isn't allowed in bazel target name"""
return name.replace("+", "p")
def generate_run_tests_portability_tests(name):
"""Generates run_tests_py portability test targets.
Args:
name: Name of the test suite that will be generated.
"""
test_names = []
# portability C x86
grpc_run_tests_harness_test(
name = "runtests_c_linux_dbg_x86_build_only",
args = ["-l c -c dbg --build_only"],
docker_image_version = "tools/dockerfile/test/cxx_debian11_x86.current_version",
size = "enormous",
)
test_names.append("runtests_c_linux_dbg_x86_build_only")
# C and C++ with no-exceptions on Linux
for language in ["c", "c++"]:
test_name = "runtests_%s_linux_dbg_noexcept_build_only" % _safe_language_name(language)
grpc_run_tests_harness_test(
name = test_name,
args = ["-l %s --config noexcept --build_only" % language],
docker_image_version = "tools/dockerfile/test/cxx_debian11_x64.current_version",
size = "enormous",
)
test_names.append(test_name)
# C and C++ under different compilers
for language in ["c", "c++"]:
compiler_configs = [
# Some gRPC tests have an issue with gcc-7 so gcc-7 portability test won't build any gRPC tests
["gcc_7", "--cmake_configure_extra_args=-DgRPC_BUILD_TESTS=OFF", "tools/dockerfile/test/cxx_gcc_7_x64.current_version"],
["gcc_8", "", "tools/dockerfile/test/cxx_gcc_8_x64.current_version"],
["gcc_14_cxx20", "--cmake_configure_extra_args=-DCMAKE_CXX_STANDARD=20", "tools/dockerfile/test/cxx_gcc_14_x64.current_version"],
["gcc10.2_openssl102", "--cmake_configure_extra_args=-DgRPC_SSL_PROVIDER=package", "tools/dockerfile/test/cxx_debian11_openssl102_x64.current_version"],
["gcc10.2_openssl111", "--cmake_configure_extra_args=-DgRPC_SSL_PROVIDER=package", "tools/dockerfile/test/cxx_debian11_openssl111_x64.current_version"],
["gcc_12_openssl309", "--cmake_configure_extra_args=-DgRPC_SSL_PROVIDER=package", "tools/dockerfile/test/cxx_debian12_openssl309_x64.current_version"],
["gcc_musl", "", "tools/dockerfile/test/cxx_alpine_x64.current_version"],
["clang_7", "--cmake_configure_extra_args=-DCMAKE_C_COMPILER=clang --cmake_configure_extra_args=-DCMAKE_CXX_COMPILER=clang++", "tools/dockerfile/test/cxx_clang_7_x64.current_version"],
["clang_18_cxx23", "--cmake_configure_extra_args=-DCMAKE_C_COMPILER=clang --cmake_configure_extra_args=-DCMAKE_CXX_COMPILER=clang++ --cmake_configure_extra_args=-DCMAKE_CXX_STANDARD=23", "tools/dockerfile/test/cxx_clang_18_x64.current_version"],
]
for compiler_name, args, docker_image_version in compiler_configs:
test_name = "runtests_%s_linux_dbg_%s_build_only" % (_safe_language_name(language), compiler_name)
grpc_run_tests_harness_test(
name = test_name,
args = ["-l %s -c dbg %s --build_only" % (language, args)],
docker_image_version = docker_image_version,
size = "enormous",
)
test_names.append(test_name)
# Python on alpine
grpc_run_tests_harness_test(
name = "runtests_python_linux_dbg_alpine",
args = [
"-l python -c dbg --compiler python_alpine",
],
docker_image_version = "tools/dockerfile/test/python_alpine_x64.current_version",
size = "enormous",
)
test_names.append("runtests_python_linux_dbg_alpine")
# Generate test suite that allows easily running all portability tests.
native.test_suite(
name = name,
tests = [(":%s" % test_name) for test_name in test_names],
)