valgrind checks #630
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: valgrind checks | |
# yamllint disable-line rule:truthy | |
on: | |
schedule: | |
- cron: 15 3 * * * | |
workflow_dispatch: | |
# cancel the in-progress workflow when PR is refreshed. | |
# yamllint disable rule:line-length | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
checks: | |
strategy: | |
matrix: | |
include: | |
- task: make -f Makefile test-valgrind | |
toolchain: 1.82.0 # CURRENT DEVELOPMENT RUST TOOLCHAIN | |
components: cargo | |
- task: >- | |
TANG_URL=localhost | |
make -f Makefile test-clevis-loop-should-fail-valgrind | |
toolchain: 1.82.0 # CURRENT DEVELOPMENT RUST TOOLCHAIN | |
components: cargo | |
runs-on: ubuntu-22.04 | |
container: | |
image: fedora:40 # CURRENT DEVELOPMENT ENVIRONMENT | |
options: --privileged -v /dev:/dev -v /run/udev:/run/udev -v /usr/lib/udev:/usr/lib/udev | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies for Fedora | |
run: > | |
dnf install -y | |
clang | |
curl | |
cryptsetup-devel | |
dbus-devel | |
device-mapper-persistent-data | |
jq | |
libblkid-devel | |
make | |
sudo | |
systemd-devel | |
valgrind | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
components: ${{ matrix.components }} | |
toolchain: ${{ matrix.toolchain }} | |
- name: Test ${{ matrix.task }} on ${{ matrix.toolchain }} toolchain | |
run: ${{ matrix.task }} | |
# TESTS WITH UDEV | |
checks_with_udev: | |
strategy: | |
matrix: | |
include: | |
- task: RUST_LOG=stratisd=debug make -f Makefile test-loop-valgrind | |
toolchain: 1.82.0 # CURRENT DEVELOPMENT RUST TOOLCHAIN | |
components: cargo | |
runs-on: ubuntu-22.04 | |
container: | |
image: fedora:40 # CURRENT DEVELOPMENT ENVIRONMENT | |
options: --privileged -v /dev:/dev -v /run/udev:/run/udev -v /usr/lib/udev:/usr/lib/udev --ipc=host | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies for Fedora | |
run: > | |
dnf install -y | |
asciidoc | |
clang | |
cryptsetup-devel | |
curl | |
device-mapper-persistent-data | |
dbus-devel | |
glibc-static | |
jq | |
libblkid-devel | |
make | |
sudo | |
systemd-devel | |
systemd-udev | |
valgrind | |
xfsprogs | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
components: ${{ matrix.components }} | |
toolchain: ${{ matrix.toolchain }} | |
- name: Build stratisd | |
run: PROFILEDIR=debug make -f Makefile build-all | |
- name: Install stratisd | |
run: PROFILEDIR=debug make -f Makefile install | |
- name: Reload udev | |
run: udevadm control --reload | |
- name: Test ${{ matrix.task }} on ${{ matrix.toolchain }} toolchain | |
run: ${{ matrix.task }} | |
python-based-tests: | |
strategy: | |
matrix: | |
include: | |
# MANDATORY CHECKS USING CURRENT DEVELOPMENT ENVIRONMENT | |
- toolchain: 1.82.0 # CURRENT DEVELOPMENT RUST TOOLCHAIN | |
# MANDATORY CHECKS USING LOWEST SUPPORTED ENVIRONMENT PROXY | |
- toolchain: 1.71.1 # LOWEST SUPPORTED RUST TOOLCHAIN | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies for Ubuntu | |
run: sudo apt-get -q update | |
- name: Install dependencies for Ubuntu | |
run: > | |
DEBIAN_FRONTEND=noninteractive | |
sudo apt-get install -y | |
asciidoc | |
clang | |
curl | |
libblkid-dev | |
libcryptsetup-dev | |
libdbus-1-dev | |
libdevmapper-dev | |
libsystemd-dev | |
libudev-dev | |
make | |
thin-provisioning-tools | |
udev | |
valgrind | |
xfsprogs | |
- name: Install Python dependencies | |
run: > | |
sudo python -m pip install | |
dbus-python | |
dbus-client-gen | |
dbus-python-client-gen | |
psutil | |
pyudev | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
components: cargo | |
toolchain: ${{ matrix.toolchain }} | |
- name: Build stratisd | |
run: PROFILEDIR=debug make -f Makefile build-all | |
- name: Install stratisd | |
run: sudo make PROFILEDIR=debug -f Makefile install | |
- name: Workaround for dbus inotify | |
run: sudo cp stratisd.conf /usr/share/dbus-1/system.d | |
- name: Reload udev | |
run: sudo udevadm control --reload | |
- name: Tests on ${{ matrix.image }} using Rust ${{ matrix.toolchain }} | |
run: > | |
sudo make | |
RUST_LOG=stratisd=debug | |
STRATISD="valgrind --leak-check=full --num-callers=500 /usr/libexec/stratisd" | |
PYTHONPATH=./src | |
udev-tests | |
working-directory: ./tests/client-dbus | |
# PYTHON-BASED TESTS WITH TANG | |
python-based-checks_with_tang: | |
runs-on: ubuntu-22.04 | |
container: | |
image: fedora:40 # CURRENT DEVELOPMENT ENVIRONMENT | |
options: --privileged -v /dev:/dev --userns=host --ipc=host -v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket:ro -v /usr/share/dbus-1:/usr/share/dbus-1 -v /run/udev:/run/udev -v /usr/lib/udev:/usr/lib/udev | |
services: | |
tang: | |
# yamllint disable rule:line-length | |
image: ghcr.io/stratis-storage/stratisd/tang:38 | |
credentials: | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
options: --privileged -p 80:80 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies for Fedora | |
run: > | |
dnf install -y | |
asciidoc | |
clang | |
clevis | |
clevis-luks | |
cracklib-dicts | |
cryptsetup-devel | |
curl | |
dbus-devel | |
device-mapper-persistent-data | |
glibc-static | |
libblkid-devel | |
make | |
ncurses | |
python3-dbus | |
python3-dbus-client-gen | |
python3-dbus-python-client-gen | |
python3-psutil | |
python3-pyudev | |
systemd-devel | |
systemd-udev | |
valgrind | |
xfsprogs | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
components: cargo | |
toolchain: 1.82.0 # CURRENT DEVELOPMENT RUST TOOLCHAIN | |
- name: Build stratisd | |
run: PROFILEDIR=debug make -f Makefile build-all | |
- name: Install stratisd | |
run: PROFILEDIR=debug make -f Makefile install | |
- name: Workaround for dbus inotify | |
run: cp stratisd.conf /usr/share/dbus-1/system.d | |
- name: Reload udev | |
run: udevadm control --reload | |
- name: Run D-Bus based bind tests | |
run: > | |
TANG_URL=tang | |
RUST_LOG=stratisd=debug | |
STRATISD="valgrind --leak-check=full --num-callers=500 /usr/libexec/stratisd" | |
PYTHONPATH=./src | |
make -f Makefile tang-tests | |
working-directory: ./tests/client-dbus |