From b3d547c2057c3ed787bb299b3aa18f9d4b18d0d4 Mon Sep 17 00:00:00 2001 From: Cengizhan Pasaoglu Date: Wed, 12 Jul 2023 22:18:18 +0300 Subject: [PATCH] [CI] Upgrade GoogleTest version from 1.12.1 to 1.13.0 (#2114) --- .github/workflows/benchmark.yml | 4 +- .github/workflows/ci.yml | 35 ++++++----- .github/workflows/codeql-analysis.yml | 8 ++- CMakeLists.txt | 4 +- bazel/repository.bzl | 6 +- ci/do_ci.sh | 16 +++++- ci/setup_cmake.sh | 83 ++++++++++++++++----------- third_party_release | 2 +- 8 files changed, 95 insertions(+), 63 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index 1826603214..cc63677a24 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -25,8 +25,8 @@ jobs: key: bazel_benchmark - name: setup run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: Run benchmark id: run_benchmarks run: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e1666dabbb..ff33aa46e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,7 +76,6 @@ jobs: env: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 - GOOGLETEST_VERSION: 1.12.1 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -109,7 +108,6 @@ jobs: env: CC: /usr/bin/gcc-12 CXX: /usr/bin/g++-12 - GOOGLETEST_VERSION: 1.12.1 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -142,7 +140,6 @@ jobs: env: CC: /usr/bin/clang-14 CXX: /usr/bin/clang++-14 - GOOGLETEST_VERSION: 1.12.1 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -175,7 +172,6 @@ jobs: env: CC: /usr/bin/clang-14 CXX: /usr/bin/clang++-14 - GOOGLETEST_VERSION: 1.12.1 PROTOBUF_VERSION: 21.12 run: | sudo -E ./ci/setup_cmake.sh @@ -241,8 +237,8 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run cmake tests (enable abseil-cpp) run: | sudo ./ci/install_abseil.sh @@ -257,8 +253,8 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run cmake tests (enable opentracing-shim) run: ./ci/do_ci.sh cmake.opentracing_shim.test @@ -281,8 +277,9 @@ jobs: env: CC: /usr/bin/gcc-4.8 CXX: /usr/bin/g++-4.8 - GOOGLETEST_VERSION: "1.10.0" - run: sudo -E ./ci/setup_cmake.sh + GOOGLETEST_VERSION: 1.10.0 + run: | + sudo -E ./ci/setup_cmake.sh - name: run tests env: CC: /usr/bin/gcc-4.8 @@ -308,7 +305,7 @@ jobs: env: CC: /usr/bin/gcc-4.8 CXX: /usr/bin/g++-4.8 - GOOGLETEST_VERSION: "1.10.0" + GOOGLETEST_VERSION: 1.10.0 run: | sudo -E ./ci/setup_cmake.sh sudo -E ./ci/setup_grpc.sh -v 4.8 @@ -327,7 +324,7 @@ jobs: submodules: 'recursive' - name: setup env: - CMAKE_VERSION: "3.20.6" + CMAKE_VERSION: 3.20.6 run: | sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh @@ -348,7 +345,7 @@ jobs: CC: /usr/bin/clang CXX: /usr/bin/clang++ CXXFLAGS: "-stdlib=libc++" - CMAKE_VERSION: "3.20.6" + CMAKE_VERSION: 3.20.6 run: | sudo -E ./ci/setup_ci_environment.sh sudo -E ./ci/setup_cmake.sh @@ -374,8 +371,8 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh @@ -390,8 +387,8 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh @@ -406,8 +403,8 @@ jobs: submodules: 'recursive' - name: setup run: | - sudo ./ci/setup_cmake.sh - sudo ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: run otlp exporter tests run: | sudo ./ci/setup_grpc.sh -T diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index d86e1d55d2..15187cb39b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -19,9 +19,13 @@ jobs: run: | rm -rf third_party - name: Setup + env: + CC: /usr/bin/gcc-10 + CXX: /usr/bin/g++-10 + GOOGLETEST_VERSION: 1.12.1 run: | - sudo CC=/usr/bin/gcc-10 CXX=/usr/bin/g++-10 ./ci/setup_cmake.sh - sudo CC=/usr/bin/gcc-10 CXX=/usr/bin/g++-10 ./ci/setup_ci_environment.sh + sudo -E ./ci/setup_cmake.sh + sudo -E ./ci/setup_ci_environment.sh - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: diff --git a/CMakeLists.txt b/CMakeLists.txt index 997c9440e8..321cf839ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -216,8 +216,8 @@ set(OTELCPP_PROTO_PATH if(WIN32) if(BUILD_TESTING) if(MSVC) - # GTest bug: https://github.com/google/googletest/issues/860 - add_compile_options(/wd4275) + # Warning as error: warning STL4036: is removed in C++20 + add_compile_options(/wd4996) endif() endif() option(WITH_ETW "Whether to include the ETW Exporter in the SDK" ON) diff --git a/bazel/repository.bzl b/bazel/repository.bzl index 6831af9aa7..dd02fc98fc 100644 --- a/bazel/repository.bzl +++ b/bazel/repository.bzl @@ -46,10 +46,10 @@ def opentelemetry_cpp_deps(): maybe( http_archive, name = "com_google_googletest", - sha256 = "81964fe578e9bd7c94dfdb09c8e4d6e6759e19967e397dbea48d1c10e45d0df2", - strip_prefix = "googletest-release-1.12.1", + sha256 = "ad7fdba11ea011c1d925b3289cf4af2c66a352e18d4c7264392fead75e919363", + strip_prefix = "googletest-1.13.0", urls = [ - "https://github.com/google/googletest/archive/release-1.12.1.tar.gz", + "https://github.com/google/googletest/archive/v1.13.0.tar.gz", ], ) diff --git a/ci/do_ci.sh b/ci/do_ci.sh index 69a6eef0c9..013a9f0ec8 100755 --- a/ci/do_ci.sh +++ b/ci/do_ci.sh @@ -89,6 +89,7 @@ if [[ "$1" == "cmake.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_PROMETHEUS=ON \ -DWITH_ZIPKIN=ON \ -DWITH_ELASTICSEARCH=ON \ @@ -103,6 +104,7 @@ elif [[ "$1" == "cmake.maintainer.sync.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_HTTP=ON \ -DWITH_OTLP_HTTP_SSL_PREVIEW=ON \ -DWITH_OTLP_HTTP_SSL_TLS_PREVIEW=ON \ @@ -127,6 +129,7 @@ elif [[ "$1" == "cmake.maintainer.async.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_HTTP=ON \ -DWITH_OTLP_HTTP_SSL_PREVIEW=ON \ -DWITH_OTLP_HTTP_SSL_TLS_PREVIEW=ON \ @@ -175,6 +178,7 @@ elif [[ "$1" == "cmake.with_async_export.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_PROMETHEUS=ON \ -DWITH_ZIPKIN=ON \ -DWITH_ELASTICSEARCH=ON \ @@ -190,6 +194,7 @@ elif [[ "$1" == "cmake.abseil.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_METRICS_EXEMPLAR_PREVIEW=ON \ -DWITH_LOGS_PREVIEW=ON \ -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ @@ -203,6 +208,7 @@ elif [[ "$1" == "cmake.opentracing_shim.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DCMAKE_CXX_FLAGS="-Werror -Wno-error=redundant-move $CXXFLAGS" \ -DWITH_OPENTRACING=ON \ "${SRC_DIR}" @@ -213,9 +219,9 @@ elif [[ "$1" == "cmake.c++20.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=20 \ -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ - -DCMAKE_CXX_STANDARD=20 \ ${IWYU} \ "${SRC_DIR}" eval "$MAKE_COMMAND" @@ -225,6 +231,7 @@ elif [[ "$1" == "cmake.c++20.stl.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=20 \ -DWITH_METRICS_EXEMPLAR_PREVIEW=ON \ -DWITH_LOGS_PREVIEW=ON \ -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ @@ -241,8 +248,8 @@ elif [[ "$1" == "cmake.legacy.test" ]]; then export BUILD_ROOT="${BUILD_DIR}" ${SRC_DIR}/tools/build-benchmark.sh cmake -DCMAKE_BUILD_TYPE=Debug \ - -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ -DCMAKE_CXX_STANDARD=11 \ + -DCMAKE_CXX_FLAGS="-Werror $CXXFLAGS" \ "${SRC_DIR}" make -j $(nproc) make test @@ -268,6 +275,7 @@ elif [[ "$1" == "cmake.exporter.otprotocol.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DWITH_OTLP_GRPC_SSL_MTLS_PREVIEW=ON \ @@ -282,6 +290,7 @@ elif [[ "$1" == "cmake.exporter.otprotocol.shared_libs.with_static_grpc.test" ]] cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DBUILD_SHARED_LIBS=ON \ @@ -296,6 +305,7 @@ elif [[ "$1" == "cmake.exporter.otprotocol.with_async_export.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ @@ -310,6 +320,7 @@ elif [[ "$1" == "cmake.do_not_install.test" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DWITH_OTLP_GRPC=ON \ -DWITH_OTLP_HTTP=ON \ -DWITH_ASYNC_EXPORT_PREVIEW=ON \ @@ -436,6 +447,7 @@ elif [[ "$1" == "code.coverage" ]]; then cd "${BUILD_DIR}" rm -rf * cmake -DCMAKE_BUILD_TYPE=Debug \ + -DCMAKE_CXX_STANDARD=14 \ -DCMAKE_CXX_FLAGS="-Werror --coverage $CXXFLAGS" \ "${SRC_DIR}" make diff --git a/ci/setup_cmake.sh b/ci/setup_cmake.sh index cdce76b38d..9684aa1d55 100755 --- a/ci/setup_cmake.sh +++ b/ci/setup_cmake.sh @@ -9,50 +9,69 @@ export DEBIAN_FRONTEND=noninteractive apt-get update if [ "x$CMAKE_VERSION" = "x" ]; then + # By default, CMake version set the following version. export CMAKE_VERSION=3.15.2 fi -if [ "x$GOOGLETEST_VERSION" = "x" ]; then - export GOOGLETEST_VERSION=1.12.1 +# This variable not set on CI pipeline for only legacy environment(GCC 4.8). +# With 1.13.0 version, C++14 must be set which does not supported by legacy environment anymore. +# Also with this version, release version path needs to be adapted. +if [ -z "${GOOGLETEST_VERSION}" ]; then + # By default, GoogleTest version set the following version. + export GOOGLETEST_VERSION=1.13.0 fi -cmake_install() { - tmp_dir=$(mktemp -d) - pushd $tmp_dir - wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh - chmod +x cmake-${CMAKE_VERSION}-Linux-x86_64.sh - ./cmake-${CMAKE_VERSION}-Linux-x86_64.sh --prefix=/usr/local --skip-license - rm cmake-${CMAKE_VERSION}-Linux-x86_64.sh - popd +OLD_GOOGLETEST_VERSION_REGEXP="^1\.([0-9]|10|11|12)(\..*)?$" + +# If GoogleTest version less than ${GOOGLETEST_LATEST_VERSION} +# Else otherwise +if [[ ${GOOGLETEST_VERSION} =~ ${OLD_GOOGLETEST_VERSION_REGEXP} ]]; then + GOOGLETEST_VERSION_PATH="release-${GOOGLETEST_VERSION}" + GOOGLETEST_FOLDER_PATH="googletest-release-${GOOGLETEST_VERSION}" +else + GOOGLETEST_VERSION_PATH="v${GOOGLETEST_VERSION}" + GOOGLETEST_FOLDER_PATH="googletest-${GOOGLETEST_VERSION}" +fi + +cmake_install() +{ + tmp_dir=$(mktemp -d) + pushd $tmp_dir + wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh + chmod +x cmake-${CMAKE_VERSION}-Linux-x86_64.sh + ./cmake-${CMAKE_VERSION}-Linux-x86_64.sh --prefix=/usr/local --skip-license + rm cmake-${CMAKE_VERSION}-Linux-x86_64.sh + popd } -googletest_install() { - # Follows these instructions - # https://gist.github.com/dlime/313f74fd23e4267c4a915086b84c7d3d - tmp_dir=$(mktemp -d) - pushd $tmp_dir - wget https://github.com/google/googletest/archive/release-${GOOGLETEST_VERSION}.tar.gz - tar -xf release-${GOOGLETEST_VERSION}.tar.gz - cd googletest-release-${GOOGLETEST_VERSION}/ - mkdir build && cd build - cmake .. -DBUILD_SHARED_LIBS=ON -DINSTALL_GTEST=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr - make -j $(nproc) - make install - ldconfig - popd +googletest_install() +{ + # Follows these instructions + # https://gist.github.com/dlime/313f74fd23e4267c4a915086b84c7d3d + tmp_dir=$(mktemp -d) + pushd $tmp_dir + wget https://github.com/google/googletest/archive/${GOOGLETEST_VERSION_PATH}.tar.gz + tar -xf ${GOOGLETEST_VERSION_PATH}.tar.gz + cd ${GOOGLETEST_FOLDER_PATH}/ + mkdir build && cd build + cmake .. -DBUILD_SHARED_LIBS=ON -DINSTALL_GTEST=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr + make -j $(nproc) + make install + ldconfig + popd } cmake_install set +e -echo \ - libbenchmark-dev \ - zlib1g-dev \ - sudo \ - libcurl4-openssl-dev \ - nlohmann-json-dev \ - nlohmann-json3 \ - nlohmann-json3-dev | xargs -n 1 apt-get install --ignore-missing --no-install-recommends --no-install-suggests -y +echo \ + libbenchmark-dev \ + zlib1g-dev \ + sudo \ + libcurl4-openssl-dev \ + nlohmann-json-dev \ + nlohmann-json3 \ + nlohmann-json3-dev | xargs -n 1 apt-get install --ignore-missing --no-install-recommends --no-install-suggests -y set -e googletest_install diff --git a/third_party_release b/third_party_release index 2120898cd9..9fae12fc31 100644 --- a/third_party_release +++ b/third_party_release @@ -16,7 +16,7 @@ gRPC=v1.49.2 abseil=20220623.1 benchmark=v1.7.1 -googletest=release-1.12.1 +googletest=release-1.13.0 ms-gsl=v3.1.0-67-g6f45293 nlohmann-json=v3.11.2 opentelemetry-proto=v1.0.0