Skip to content

valgrind checks

valgrind checks #594

Workflow file for this run

---
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.81.0 # CURRENT DEVELOPMENT RUST TOOLCHAIN
components: cargo
- task: >-
TANG_URL=localhost
make -f Makefile test-clevis-loop-should-fail-valgrind
toolchain: 1.81.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.81.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.81.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.81.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