xref: /freebsd/sys/contrib/openzfs/.github/workflows/zloop.yml (revision d2a8fad3579763bd288260c8c465ab9eb448d465)
17a7741afSMartin Matuskaname: zloop
27a7741afSMartin Matuska
37a7741afSMartin Matuskaon:
47a7741afSMartin Matuska  push:
57a7741afSMartin Matuska  pull_request:
67a7741afSMartin Matuska
77a7741afSMartin Matuskaconcurrency:
87a7741afSMartin Matuska  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
97a7741afSMartin Matuska  cancel-in-progress: true
107a7741afSMartin Matuska
117a7741afSMartin Matuskajobs:
127a7741afSMartin Matuska  zloop:
137a7741afSMartin Matuska    runs-on: ubuntu-24.04
147a7741afSMartin Matuska    env:
157a7741afSMartin Matuska      TEST_DIR: /var/tmp/zloop
167a7741afSMartin Matuska    steps:
177a7741afSMartin Matuska    - uses: actions/checkout@v4
187a7741afSMartin Matuska      with:
197a7741afSMartin Matuska        ref: ${{ github.event.pull_request.head.sha }}
207a7741afSMartin Matuska    - name: Install dependencies
217a7741afSMartin Matuska      run: |
227a7741afSMartin Matuska        sudo apt-get purge -y snapd google-chrome-stable firefox
23*d2a8fad3SMartin Matuska        ONLY_DEPS=1 .github/workflows/scripts/qemu-3-deps-vm.sh ubuntu24
247a7741afSMartin Matuska    - name: Autogen.sh
257a7741afSMartin Matuska      run: |
267a7741afSMartin Matuska        sed -i '/DEBUG_CFLAGS="-Werror"/s/^/#/' config/zfs-build.m4
277a7741afSMartin Matuska        ./autogen.sh
287a7741afSMartin Matuska    - name: Configure
297a7741afSMartin Matuska      run: |
307a7741afSMartin Matuska        ./configure --prefix=/usr --enable-debug --enable-debuginfo \
317a7741afSMartin Matuska           --enable-asan --enable-ubsan \
327a7741afSMartin Matuska           --enable-debug-kmem --enable-debug-kmem-tracking
337a7741afSMartin Matuska    - name: Make
347a7741afSMartin Matuska      run: |
357a7741afSMartin Matuska        make -j$(nproc)
367a7741afSMartin Matuska    - name: Install
377a7741afSMartin Matuska      run: |
387a7741afSMartin Matuska        sudo make install
397a7741afSMartin Matuska        sudo depmod
407a7741afSMartin Matuska        sudo modprobe zfs
417a7741afSMartin Matuska    - name: Tests
427a7741afSMartin Matuska      run: |
437a7741afSMartin Matuska        sudo mkdir -p $TEST_DIR
447a7741afSMartin Matuska        # run for 10 minutes or at most 6 iterations for a maximum runner
457a7741afSMartin Matuska        # time of 60 minutes.
467a7741afSMartin Matuska        sudo /usr/share/zfs/zloop.sh -t 600 -I 6 -l -m 1 -- -T 120 -P 60
477a7741afSMartin Matuska    - name: Prepare artifacts
487a7741afSMartin Matuska      if: failure()
497a7741afSMartin Matuska      run: |
507a7741afSMartin Matuska        sudo chmod +r -R $TEST_DIR/
517a7741afSMartin Matuska    - name: Ztest log
527a7741afSMartin Matuska      if: failure()
537a7741afSMartin Matuska      run: |
547a7741afSMartin Matuska        grep -B10 -A1000 'ASSERT' $TEST_DIR/*/ztest.out || tail -n 1000 $TEST_DIR/*/ztest.out
557a7741afSMartin Matuska    - name: Gdb log
567a7741afSMartin Matuska      if: failure()
577a7741afSMartin Matuska      run: |
587a7741afSMartin Matuska        sed -n '/Backtraces (full)/q;p' $TEST_DIR/*/ztest.gdb
597a7741afSMartin Matuska    - name: Zdb log
607a7741afSMartin Matuska      if: failure()
617a7741afSMartin Matuska      run: |
627a7741afSMartin Matuska        cat $TEST_DIR/*/ztest.zdb
637a7741afSMartin Matuska    - uses: actions/upload-artifact@v4
647a7741afSMartin Matuska      if: failure()
657a7741afSMartin Matuska      with:
667a7741afSMartin Matuska        name: Logs
677a7741afSMartin Matuska        path: |
687a7741afSMartin Matuska          /var/tmp/zloop/*/
697a7741afSMartin Matuska          !/var/tmp/zloop/*/vdev/
707a7741afSMartin Matuska        if-no-files-found: ignore
717a7741afSMartin Matuska    - uses: actions/upload-artifact@v4
727a7741afSMartin Matuska      if: failure()
737a7741afSMartin Matuska      with:
747a7741afSMartin Matuska        name: Pool files
757a7741afSMartin Matuska        path: |
767a7741afSMartin Matuska          /var/tmp/zloop/*/vdev/
777a7741afSMartin Matuska        if-no-files-found: ignore
78