Integration tests #1596
This file contains hidden or 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: Integration tests | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- master | |
schedule: | |
- cron: '38 2 * * *' | |
jobs: | |
build: | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
name: build (${{matrix.env.URSIM_VERSION}}-${{matrix.env.ROBOT_MODEL}}) | |
strategy: | |
fail-fast: false | |
matrix: | |
env: | |
- ROBOT_MODEL: 'ur5' | |
URSIM_VERSION: '3.14.3' | |
PROGRAM_FOLDER: 'tests/resources/dockerursim/programs/cb3' | |
- ROBOT_MODEL: 'ur5e' | |
URSIM_VERSION: '5.9.4' | |
PROGRAM_FOLDER: 'tests/resources/dockerursim/programs/e-series' | |
- ROBOT_MODEL: 'ur20' | |
URSIM_VERSION: 'latest' | |
PROGRAM_FOLDER: 'tests/resources/dockerursim/programs/e-series' | |
- ROBOT_MODEL: 'ur5e' | |
URSIM_VERSION: '10.7.0' | |
PROGRAM_FOLDER: 'tests/resources/dockerursim/programs/polyscopex' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: start ursim | |
run: | | |
scripts/start_ursim.sh -m $ROBOT_MODEL -v $URSIM_VERSION -p $PROGRAM_FOLDER -d | |
env: | |
DOCKER_RUN_OPTS: --network ursim_net | |
ROBOT_MODEL: ${{matrix.env.ROBOT_MODEL}} | |
URSIM_VERSION: ${{matrix.env.URSIM_VERSION}} | |
PROGRAM_FOLDER: ${{matrix.env.PROGRAM_FOLDER}} | |
- name: configure | |
run: mkdir build && cd build && cmake .. -DBUILDING_TESTS=1 -DINTEGRATION_TESTS=1 -DWITH_ASAN=ON | |
env: | |
CXXFLAGS: -g -O2 -fprofile-arcs -ftest-coverage | |
CFLAGS: -g -O2 -fprofile-arcs -ftest-coverage | |
LDFLAGS: -fprofile-arcs -ftest-coverage | |
- name: build | |
run: cmake --build build --config Debug | |
- name: Create folder for test artifacts | |
run: mkdir -p test_artifacts | |
- name: test | |
run: cd build && ctest --output-on-failure --output-junit junit.xml | |
- name: Upload test results to Codecov | |
if: ${{ !cancelled() }} | |
uses: codecov/test-results-action@v1 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
fail_ci_if_error: true | |
- name: run examples | |
run: ./run_examples.sh "192.168.56.101" 1 | |
- name: install gcovr | |
run: sudo apt-get install -y gcovr | |
- name: gcovr | |
run: cd build && gcovr -r .. --gcov-ignore-parse-errors negative_hits.warn_once_per_file | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
flags: ${{ matrix.env.ROBOT_MODEL }}-${{ matrix.env.URSIM_VERSION }} | |
- name: Generate URSim log files | |
if: always() && matrix.env.URSIM_VERSION != '10.7.0' | |
run: | | |
nc -q 1 192.168.56.101 29999 <<END | |
saveLog | |
END | |
mkdir -p ursim_logs | |
docker cp ursim:/ursim/URControl.log ursim_logs/URControl.log | |
docker cp ursim:/ursim/polyscope.log ursim_logs/polyscope.log | |
docker cp ursim:/ursim/log_history.txt ursim_logs/log_history.txt | |
- name: Copy flight reports | |
if: failure() && matrix.env.URSIM_VERSION != '10.7.0' | |
run: | | |
mkdir -p ursim_logs/flightreports | |
docker cp ursim:/ursim/flightreports/. ursim_logs/flightreports/ | |
- name: Upload logfiles | |
uses: actions/upload-artifact@v4 | |
if: always() && matrix.env.URSIM_VERSION != '10.7.0' | |
with: | |
name: ${{matrix.env.ROBOT_MODEL}}_${{matrix.env.URSIM_VERSION}}_URSim_Logs | |
path: ursim_logs | |
if-no-files-found: error | |
retention-days: 10 | |
- name: Upload test artifacts | |
uses: actions/upload-artifact@v4 | |
if: always() && matrix.env.URSIM_VERSION != '10.7.0' | |
with: | |
name: ${{matrix.env.ROBOT_MODEL}}_${{matrix.env.URSIM_VERSION}}_test_artifacts | |
path: test_artifacts | |
if-no-files-found: error | |
retention-days: 10 | |
test_start_ursim: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: '3.3' # Not needed with a .ruby-version, .tool-versions or mise.toml | |
bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
- name: Setup Bats and bats libs | |
id: setup-bats | |
uses: bats-core/[email protected] | |
- name: Install Ruby dependencies | |
run: bundle update --bundler && bundle install | |
- name: Run unittests | |
shell: bash | |
env: | |
BATS_LIB_PATH: ${{ steps.setup-bats.outputs.lib-path }} | |
run: bundle exec bashcov --skip-uncovered bats tests/test_start_ursim.bats | |
- name: Upload reports to Codecov | |
uses: codecov/codecov-action@v5 | |
with: | |
fail_ci_if_error: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
flags: start_ursim |