DragonOS/.github/workflows/test-mm.yaml

89 lines
2.4 KiB
YAML

name: Test MM (Host)
on:
workflow_dispatch:
push:
branches: ["master", "feat-*", "fix-*"]
pull_request:
branches: ["master", "feat-*", "fix-*"]
env:
HOME: /root
RUSTUP_DIST_SERVER: "https://rsproxy.cn"
RUSTUP_UPDATE_ROOT: "https://rsproxy.cn/rustup"
jobs:
build:
name: Build slab_stress (host)
runs-on: ubuntu-latest
container:
image: dragonos/dragonos-dev:v1.19
options: --privileged -v /dev:/dev
steps:
- name: Checkout DragonOS code
uses: actions/checkout@v4
- name: Build slab_stress (host)
shell: bash -ileo pipefail {0}
run: |
cd kernel/crates/rust-slabmalloc
cargo build --release --features host --bin slab_stress
- name: Upload slab_stress binary
uses: actions/upload-artifact@v4
with:
name: slab_stress-binary-${{ github.run_id }}-${{ github.run_attempt }}
path: kernel/target/release/slab_stress
retention-days: 1
slab-valgrind-stress:
name: Slab allocator long-run (valgrind) - size=${{ matrix.size }}, seed=${{ matrix.seed }}
runs-on: ubuntu-latest
timeout-minutes: 30
needs: build
strategy:
matrix:
size: [64, 128, 255, 256]
seed: [1, 2, 3]
container:
image: dragonos/dragonos-dev:v1.19
options: --privileged -v /dev:/dev
steps:
- name: Checkout DragonOS code
uses: actions/checkout@v4
- name: Install valgrind
shell: bash -ileo pipefail {0}
run: |
apt-get update
apt-get install -y valgrind
- name: Download slab_stress binary
uses: actions/download-artifact@v4
with:
name: slab_stress-binary-${{ github.run_id }}-${{ github.run_attempt }}
path: /tmp
- name: Run slab_stress under valgrind
shell: bash -ileo pipefail {0}
env:
SLAB_STRESS_ITERS: "2000000"
SLAB_STRESS_SIZE: "${{ matrix.size }}"
SLAB_STRESS_SEED: "${{ matrix.seed }}"
run: |
chmod +x /tmp/slab_stress
valgrind \
-s \
--error-exitcode=1 \
--track-origins=yes \
--leak-check=full \
--show-leak-kinds=all \
--malloc-fill=0xAA --free-fill=0xDD \
/tmp/slab_stress \
--iters "${SLAB_STRESS_ITERS}" \
--max-live 4096 \
--size "${SLAB_STRESS_SIZE}" \
--seed "${SLAB_STRESS_SEED}"