test #2033
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |