Skip to content

test

test #2040

Workflow file for this run

name: test
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
schedule:
- cron: '0 0 * * *'
jobs:
windows-build-test:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
cmake-config:
- 'Release'
- 'Debug'
env:
CXXFLAGS: /MP
OPENSSL64_ROOT: "C:/Program Files/OpenSSL-Win64"
steps:
- name: Sync eProsima/Fast-DDS-Statistics-Backend repository
uses: actions/checkout@v2
with:
path: Fast-DDS-statistics-backend
- name: Install OpenSSL
shell: pwsh
run: >
choco install openssl -yr --no-progress;
@(ls -Path C:\Windows\System32\* -Include libssl-*.dll; ls -Path C:\Windows\SysWOW64\* -Include libssl-*.dll)
| rm -ErrorAction SilentlyContinue
- name: Install GoogleTest
shell: pwsh
run: >
cmake --find-package -DNAME=GTest -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST | Tee-Object -Variable res;
if ( $res -notlike '*GTest found.*')
{
git clone https://github.com/google/googletest.git;
cmake -DCMAKE_INSTALL_PREFIX='C:\Program Files\gtest' -Dgtest_force_shared_crt=ON -DBUILD_GMOCK=ON `
-B build\gtest -A x64 -T host=x64 googletest;
cmake --build build\gtest --config ${{ matrix.cmake-config }} --target install;
}
- name: Install foonatham memory
shell: pwsh
run: >
git clone --recurse-submodules --branch v0.6-2 https://github.com/foonathan/memory.git;
cmake -DBUILD_SHARED_LIBS=OFF -DFOONATHAN_MEMORY_BUILD_TOOLS=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON `
-DFOONATHAN_MEMORY_BUILD_TESTS=OFF -Ax64 -T host=x64 -B build\memory memory;
cmake --build build\memory --config ${{ matrix.cmake-config }} --target install;
- name: Install Fast-CDR
shell: pwsh
run: >
git clone https://github.com/eProsima/Fast-CDR.git --branch 1.1.x;
cmake -Ax64 -T host=x64 -B build\fastcdr Fast-CDR;
cmake --build build\fastcdr --config ${{ matrix.cmake-config }} --target install;
- name: Install Fast-DDS
shell: pwsh
run: >
git clone https://github.com/eProsima/Fast-DDS.git;
cmake -DTHIRDPARTY=ON -DSECURITY=ON -DCOMPILE_EXAMPLES=OFF -DEPROSIMA_BUILD_TESTS=OFF `
-DINTERNAL_DEBUG=ON -Ax64 -T host=x64 -B build\fastdds Fast-DDS;
cmake --build build\fastdds --config ${{ matrix.cmake-config }} --target install;
- name: Install Fast-DDS-statistics-backend
shell: pwsh
run: >
cmake -DCMAKE_PREFIX_PATH='C:\Program Files\gtest' -DBUILD_LIBRARY_TESTS=ON `
-B build\backend -A x64 -T host=x64 Fast-DDS-statistics-backend;
cmake --build build\backend --config ${{ matrix.cmake-config }} --target install;
- name: Run tests on ${{ matrix.cmake-config }}
shell: pwsh
run: ctest -C ${{ matrix.cmake-config }} --test-dir build\backend -V --timeout 60 --label-exclude xfail
ubuntu-build-test:
runs-on: ubuntu-latest
environment:
name: codecov
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-statistics-backend
- name: Install apt packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-apt-packages
- name: Install Python packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-python-packages
- name: Fetch eProsima dependencies
run: |
vcs import src < ./src/Fast-DDS-statistics-backend/.github/workflows/ci.repos
- name: Update colcon mixin
run: |
colcon mixin add default \
https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default
continue-on-error: true
- name: Build gtest
run: |
colcon build \
--event-handlers=console_direct+ \
--packages-select googletest-distribution
- name: Build workspace
run: |
cat src/Fast-DDS-statistics-backend/.github/workflows/test.meta
colcon build \
--packages-skip googletest-distribution \
--event-handlers=console_direct+ \
--metas src/Fast-DDS-statistics-backend/.github/workflows/test.meta
- name: Run tests
run: |
source install/setup.bash && \
colcon test \
--packages-select fastdds_statistics_backend \
--event-handlers=console_direct+ \
--return-code-on-test-failure \
--ctest-args \
--timeout 60 \
--label-exclude xfail
- name: Generate coverage report
run: |
cp src/Fast-DDS-statistics-backend/codecov.yml .
mkdir coverage-report
gcovr \
--root src/Fast-DDS-statistics-backend/ \
--object-directory build/fastdds_statistics_backend \
--output coverage-report/coverage.xml \
--xml-pretty \
--exclude='.*nlohmann-json/.*' \
--exclude='.*docs/.*' \
--exclude='.*examples/.*' \
--exclude='.*test/.*' \
--exclude='.*github/.*' \
--exclude='.*topic_types/.*' \
--exclude-unreachable-branches
if: always()
- name: Upload coverage
uses: actions/upload-artifact@v1
with:
name: coverage-report
path: coverage-report/
if: always()
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: coverage-report/coverage.xml
root_dir: src/Fast-DDS-statistics-backend
fail_ci_if_error: true
- name: Upload Logs
uses: actions/upload-artifact@v1
with:
name: colcon-logs-ubuntu
path: log/
if: always()
- name: Upload documentation
uses: actions/upload-artifact@v1
with:
name: Documentation HTML
path: install/fastdds_statistics_backend/docs/fastdds_statistics_backend/sphinx/html/
if: always()
asan-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-statistics-backend
- name: Install apt packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-apt-packages
- name: Install Python packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-python-packages
- name: Fetch eProsima dependencies
run: |
vcs import src < ./src/Fast-DDS-statistics-backend/.github/workflows/ci.repos
- name: Update colcon mixin
run: |
colcon mixin add default \
https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default
continue-on-error: true
- name: Build workspace
run: |
cat src/Fast-DDS-statistics-backend/.github/workflows/asan.meta
colcon build \
--event-handlers=console_direct+ \
--metas src/Fast-DDS-statistics-backend/.github/workflows/asan.meta
- name: Run tests
run: |
source install/setup.bash && \
colcon test \
--packages-select fastdds_statistics_backend \
--event-handlers=console_direct+ \
--return-code-on-test-failure \
--ctest-args \
--timeout 60 \
--label-exclude xasan xfail
- name: Upload Logs
uses: actions/upload-artifact@v1
with:
name: asan-logs
path: log/
if: always()
- name: Report ASAN errors
continue-on-error: true
if: always()
run: |
echo -n "**ASAN Errors**: " >> $GITHUB_STEP_SUMMARY
echo $(sed 's/==.*==ERROR:/==.*==ERROR:\n/g' log/latest_test/fastdds_statistics_backend/stdout_stderr.log | grep -c "==.*==ERROR:") >> $GITHUB_STEP_SUMMARY
python3 src/Fast-DDS-statistics-backend/.github/workflows/asan_log_parser.py
flaky-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-statistics-backend
- name: Install apt packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-apt-packages
- name: Install Python packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-python-packages
- name: Fetch eProsima dependencies
run: |
vcs import src < ./src/Fast-DDS-statistics-backend/.github/workflows/ci.repos
- name: Update colcon mixin
run: |
colcon mixin add default \
https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml
colcon mixin update default
continue-on-error: true
- name: Build workspace
run: |
cat src/Fast-DDS-statistics-backend/.github/workflows/test.meta
colcon build \
--event-handlers=console_direct+ \
--metas src/Fast-DDS-statistics-backend/.github/workflows/test.meta
- name: Run tests
run: |
source install/setup.bash && \
colcon test \
--packages-select fastdds_statistics_backend \
--event-handlers=console_direct+ \
--return-code-on-test-failure \
--ctest-args \
--timeout 60 \
--label-regex xfail
- name: Upload Logs
uses: actions/upload-artifact@v1
with:
name: asan-logs
path: log/
if: always()
clang-tidy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-statistics-backend
- name: Install apt packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-apt-packages
- name: Install Python packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-python-packages
- name: Fetch eProsima dependencies
run: |
vcs import src < ./src/Fast-DDS-statistics-backend/.github/workflows/ci.repos
- name: Build workspace
run: |
cat src/Fast-DDS-statistics-backend/.github/workflows/clang.meta
colcon build \
--event-handlers=console_direct+ \
--metas src/Fast-DDS-statistics-backend/.github/workflows/clang.meta
- name: Run clang-tidy
run: |
cd build/fastdds_statistics_backend
run-clang-tidy -header-filter='.*' -checks='clang-analyzer-cplusplus' -quiet 2> ${{ github.workspace }}/clang_results.yml
uncrustify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-statistics-backend
- name: Fetch all branches and tags
run: |
cd src/Fast-DDS-statistics-backend
git fetch --prune --unshallow
- name: Install apt packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-apt-packages
- name: Install Python packages
uses: ./src/Fast-DDS-statistics-backend/.github/actions/install-python-packages
- name: Install uncrustify
run: |
git clone https://github.com/uncrustify/uncrustify.git \
--branch uncrustify-0.71.0 \
--single-branch uncrustify
mkdir -p uncrustify/build
cd uncrustify/build
cmake ..
sudo cmake --build . --target install
cd ../..
sudo rm -rf uncrustify
- name: Clone ament_lint
run: |
git clone https://github.com/ament/ament_lint.git src/ament_lint
- name: Build ament_uncrustify
run: colcon build --packages-up-to ament_uncrustify
- name: Fetch uncrustify config file
run: |
curl \
-l https://raw.githubusercontent.com/eProsima/cpp-style/master/uncrustify.cfg \
-o uncrustify.cfg
- name: Get difference
run: |
cd src/Fast-DDS-statistics-backend
echo "MODIFIED_FILES=$(git diff --name-only origin/${GITHUB_BASE_REF} origin/${GITHUB_HEAD_REF} | grep -e '\.h' -e '\.hpp' -e '\.cpp' | tr '\n' ' ')" >> $GITHUB_ENV
- name: Check difference
run: |
cd src/Fast-DDS-statistics-backend
if [[ -z "${MODIFIED_FILES}" ]]
then
touch empty.hpp
echo "MODIFIED_FILES=empty.hpp" >> $GITHUB_ENV
fi
- name: Check style
run: |
source install/local_setup.bash
cd src/Fast-DDS-statistics-backend
ament_uncrustify \
-c ../../uncrustify.cfg \
--language CPP \
--xunit-file ../../uncrustify_results.xml \
${MODIFIED_FILES}
- name: Upload uncrustify results
uses: actions/upload-artifact@v1
with:
name: uncrustify_results
path: uncrustify_results.xml
if: always()