Skip to content

test

test #1624

Workflow file for this run

name: test
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
schedule:
- cron: '0 0 * * *'
jobs:
windows-build-test-release:
runs-on: windows-latest
environment:
name: codecov
env:
CXXFLAGS: /MP
OPENSSL64_ROOT: "C:/Program Files/OpenSSL-Win64"
steps:
- uses: actions/checkout@v2
with:
path: Fast-DDS-monitor
- name: Install OpenSSL
uses: ./Fast-DDS-monitor/.github/actions/install-openssl-windows
- 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 Release --target install
}
- name: Install Qt
uses: jurplel/[email protected]
with:
version: '5.15.2'
arch: 'win64_msvc2019_64'
dir: '${{ github.workspace }}/qt_installation/'
modules: 'qtcharts'
- 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 Release --target install
- name: install Fast-CDR
shell: pwsh
run: >
git clone https://github.com/eProsima/Fast-CDR.git;
cmake -Ax64 -T host=x64 -B build\fastcdr Fast-CDR;
cmake --build build\fastcdr --config Release --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 Release --target install
- name: Install Fast-DDS-statistics-backend
shell: pwsh
run: >
git clone https://github.com/eProsima/Fast-DDS-statistics-backend.git;
cmake -DCMAKE_PREFIX_PATH='C:\Program Files\gtest' `
-B build\backend -A x64 -T host=x64 Fast-DDS-statistics-backend;
cmake --build build\backend --config Release --target install
- name: Install Fast-DDS-monitor
shell: pwsh
run: >
cmake -DCMAKE_PREFIX_PATH='C:\Program Files\gtest' -DBUILD_APP_TESTS=ON -DBUILD_MOCK=ON `
-DQT_PATH=$GITHUB_WORKSPACE/qt_installation/Qt/5.15.2 -DCMAKE_CXX_FLAGS="/WX /EHsc" `
-B build\monitor -A x64 -T host=x64 Fast-DDS-monitor;
cmake --build build\monitor --config Release --target install
- name: Run tests
shell: pwsh
run: ctest -C Release --test-dir build\monitor -V --timeout 60
windows-build-test-debug:
runs-on: windows-latest
environment:
name: codecov
env:
CXXFLAGS: /MP
OPENSSL64_ROOT: "C:/Program Files/OpenSSL-Win64"
steps:
- uses: actions/checkout@v2
with:
path: Fast-DDS-monitor
- name: Install OpenSSL
uses: ./Fast-DDS-monitor/.github/actions/install-openssl-windows
- 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 Debug --target install
}
- name: Install Qt
uses: jurplel/[email protected]
with:
version: '5.15.2'
arch: 'win64_msvc2019_64'
dir: '${{ github.workspace }}/qt_installation/'
modules: 'qtcharts'
- 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 Debug --target install
- name: install Fast-CDR
shell: pwsh
run: >
git clone https://github.com/eProsima/Fast-CDR.git;
cmake -Ax64 -T host=x64 -B build\fastcdr Fast-CDR;
cmake --build build\fastcdr --config Debug --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 Debug --target install
- name: Install Fast-DDS-statistics-backend
shell: pwsh
run: >
git clone https://github.com/eProsima/Fast-DDS-statistics-backend.git;
cmake -DCMAKE_PREFIX_PATH='C:\Program Files\gtest' `
-B build\backend -A x64 -T host=x64 Fast-DDS-statistics-backend;
cmake --build build\backend --config Debug --target install
- name: Install Fast-DDS-monitor
shell: pwsh
run: >
cmake -DCMAKE_PREFIX_PATH='C:\Program Files\gtest' -DBUILD_APP_TESTS=ON -DBUILD_MOCK=ON `
-DQT_PATH=$GITHUB_WORKSPACE/qt_installation/Qt/5.15.2 -DCMAKE_CXX_FLAGS="/WX /EHsc" `
-B build\monitor -A x64 -T host=x64 Fast-DDS-monitor;
cmake --build build\monitor --config Debug --target install
- name: Run tests
shell: pwsh
run: ctest -C Debug --test-dir build\monitor -V --timeout 60
ubuntu-build-test:
runs-on: ubuntu-latest
environment:
name: codecov
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-monitor
- name: Install apt packages
uses: ./src/Fast-DDS-monitor/.github/actions/install-apt-packages
- name: Install GTest
uses: ./src/Fast-DDS-monitor/.github/actions/install-gtest
- name: Install Python packages
uses: ./src/Fast-DDS-monitor/.github/actions/install-python-packages
- name: Fetch Fast DDS Statistics Backend repositories
uses: ./src/Fast-DDS-monitor/.github/actions/fetch-fastdds-statistics-backend-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: Install Qt
uses: jurplel/[email protected]
with:
version: '5.15.2'
dir: '${{ github.workspace }}/qt_installation/'
modules: 'qtcharts'
- name: Build workspace
run: |
cat src/Fast-DDS-monitor/.github/workflows/test_colcon.meta
colcon build \
--event-handlers=console_direct+ \
--metas src/Fast-DDS-monitor/.github/workflows/test_colcon.meta \
--mixin coverage-gcc asan-gcc
- name: Run tests
run: |
source install/setup.bash && \
QT_QPA_PLATFORM=offscreen \
colcon test \
--packages-select fastdds_monitor \
--event-handlers=console_direct+ \
--return-code-on-test-failure
- name: Generate coverage report
run: |
cp src/Fast-DDS-monitor/codecov.yml .
mkdir coverage-report
gcovr \
--root src/Fast-DDS-monitor/ \
--object-directory build/fastdds_monitor \
--output coverage-report/coverage.xml \
--xml-pretty \
--exclude='.*docs/.*' \
--exclude='.*test/.*' \
--exclude='.*mock/.*' \
--exclude='.*github/.*' \
--exclude-unreachable-branches
- name: Upload coverage
uses: actions/upload-artifact@v1
with:
name: coverage-report
path: coverage-report/
- name: Upload documentation
uses: actions/upload-artifact@v1
with:
name: Documentation HTML
path: install/fastdds_monitor/docs/fastdds_monitor_docs/sphinx/html/
- 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-monitor
fail_ci_if_error: true
- name: Upload Logs
uses: actions/upload-artifact@v1
with:
name: colcon-logs-ubuntu
path: log/
if: always()
- name: Upload spelling errors
uses: actions/upload-artifact@v1
with:
name: spelling_errors.txt
path: build/fastdds_monitor/docs/test/spelling/output.txt
continue-on-error: true
clang-tidy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-monitor
- uses: ./src/Fast-DDS-monitor/.github/actions/install-apt-packages
- uses: ./src/Fast-DDS-monitor/.github/actions/install-gtest
- uses: ./src/Fast-DDS-monitor/.github/actions/install-python-packages
- uses: ./src/Fast-DDS-monitor/.github/actions/fetch-fastdds-statistics-backend-repos
- name: Install Qt
uses: jurplel/[email protected]
with:
version: '5.15.2'
dir: '${{ github.workspace }}/qt_installation/'
modules: 'qtcharts'
- name: Build workspace
run: |
cat src/Fast-DDS-monitor/.github/workflows/clang_colcon.meta
colcon build \
--event-handlers=console_direct+ \
--metas src/Fast-DDS-monitor/.github/workflows/clang_colcon.meta
- name: Run clang-tidy
run: |
cd build/fastdds_monitor
run-clang-tidy -header-filter='.*' -checks='clang-analyzer-cplusplus' -quiet 2> ${{ github.workspace }}/clang_results.yml
- name: Upload clang results
uses: actions/upload-artifact@v1
with:
name: clang_results
path: ${{ github.workspace }}/clang_results.yml
uncrustify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
path: src/Fast-DDS-monitor
- name: Fetch all branches and tags
run: |
cd src/Fast-DDS-monitor
git fetch --prune --unshallow
- uses: ./src/Fast-DDS-monitor/.github/actions/install-apt-packages
- uses: ./src/Fast-DDS-monitor/.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-monitor
echo "MODIFIED_FILES=$(git diff --name-only origin/${GITHUB_BASE_REF} origin/${GITHUB_HEAD_REF} | grep -e '\.h' -e '\.hpp' -e '\.cpp' -e '\.ipp' | tr '\n' ' ')" >> $GITHUB_ENV
- name: Check difference
run: |
cd src/Fast-DDS-monitor
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-monitor
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