12a58b312SMartin Matuskaname: zfs-linux-tests
22a58b312SMartin Matuska
32a58b312SMartin Matuskaon:
42a58b312SMartin Matuska  workflow_call:
52a58b312SMartin Matuska    inputs:
62a58b312SMartin Matuska      os:
72a58b312SMartin Matuska        description: 'The ubuntu version: 20.02 or 22.04'
82a58b312SMartin Matuska        required: true
92a58b312SMartin Matuska        type: string
102a58b312SMartin Matuska
112a58b312SMartin Matuskajobs:
122a58b312SMartin Matuska
132a58b312SMartin Matuska  zloop:
142a58b312SMartin Matuska    runs-on: ubuntu-${{ inputs.os }}
152a58b312SMartin Matuska    steps:
16*fd45b686SMartin Matuska    - uses: actions/checkout@v4
172a58b312SMartin Matuska      with:
182a58b312SMartin Matuska        ref: ${{ github.event.pull_request.head.sha }}
19*fd45b686SMartin Matuska    - uses: actions/download-artifact@v4
202a58b312SMartin Matuska      with:
212a58b312SMartin Matuska        name: modules-${{ inputs.os }}
222a58b312SMartin Matuska    - name: Install modules
232a58b312SMartin Matuska      run: |
242a58b312SMartin Matuska        tar xzf modules-${{ inputs.os }}.tgz
252a58b312SMartin Matuska        .github/workflows/scripts/setup-dependencies.sh tests
262a58b312SMartin Matuska    - name: Tests
272a58b312SMartin Matuska      timeout-minutes: 30
282a58b312SMartin Matuska      run: |
292a58b312SMartin Matuska        sudo mkdir -p /var/tmp/zloop
302a58b312SMartin Matuska        # run for 10 minutes or at most 2 iterations for a maximum runner
312a58b312SMartin Matuska        #   time of 20 minutes.
322a58b312SMartin Matuska        sudo /usr/share/zfs/zloop.sh -t 600 -I 2 -l -m1 -- -T 120 -P 60
332a58b312SMartin Matuska    - name: Prepare artifacts
342a58b312SMartin Matuska      if: failure()
352a58b312SMartin Matuska      run: |
362a58b312SMartin Matuska        sudo chmod +r -R /var/tmp/zloop/
37*fd45b686SMartin Matuska    - uses: actions/upload-artifact@v4
382a58b312SMartin Matuska      if: failure()
392a58b312SMartin Matuska      with:
402a58b312SMartin Matuska        name: Zpool-logs-${{ inputs.os }}
412a58b312SMartin Matuska        path: |
422a58b312SMartin Matuska          /var/tmp/zloop/*/
432a58b312SMartin Matuska          !/var/tmp/zloop/*/vdev/
442a58b312SMartin Matuska        retention-days: 14
452a58b312SMartin Matuska        if-no-files-found: ignore
46*fd45b686SMartin Matuska    - uses: actions/upload-artifact@v4
472a58b312SMartin Matuska      if: failure()
482a58b312SMartin Matuska      with:
492a58b312SMartin Matuska        name: Zpool-files-${{ inputs.os }}
502a58b312SMartin Matuska        path: |
512a58b312SMartin Matuska          /var/tmp/zloop/*/vdev/
522a58b312SMartin Matuska        retention-days: 14
532a58b312SMartin Matuska        if-no-files-found: ignore
542a58b312SMartin Matuska
552a58b312SMartin Matuska  sanity:
562a58b312SMartin Matuska    runs-on: ubuntu-${{ inputs.os }}
572a58b312SMartin Matuska    steps:
58*fd45b686SMartin Matuska    - uses: actions/checkout@v4
592a58b312SMartin Matuska      with:
602a58b312SMartin Matuska        ref: ${{ github.event.pull_request.head.sha }}
61*fd45b686SMartin Matuska    - uses: actions/download-artifact@v4
622a58b312SMartin Matuska      with:
632a58b312SMartin Matuska        name: modules-${{ inputs.os }}
642a58b312SMartin Matuska    - name: Install modules
652a58b312SMartin Matuska      run: |
662a58b312SMartin Matuska        tar xzf modules-${{ inputs.os }}.tgz
672a58b312SMartin Matuska        .github/workflows/scripts/setup-dependencies.sh tests
682a58b312SMartin Matuska    - name: Tests
692a58b312SMartin Matuska      timeout-minutes: 60
702a58b312SMartin Matuska      shell: bash
712a58b312SMartin Matuska      run: |
722a58b312SMartin Matuska        set -o pipefail
732a58b312SMartin Matuska        /usr/share/zfs/zfs-tests.sh -vKR -s 3G -r sanity | scripts/zfs-tests-color.sh
742a58b312SMartin Matuska    - name: Prepare artifacts
752a58b312SMartin Matuska      if: success() || failure()
762a58b312SMartin Matuska      run: |
772a58b312SMartin Matuska        RESPATH="/var/tmp/test_results"
782a58b312SMartin Matuska        mv -f $RESPATH/current $RESPATH/testfiles
792a58b312SMartin Matuska        tar cf $RESPATH/sanity.tar -h -C $RESPATH testfiles
80*fd45b686SMartin Matuska    - uses: actions/upload-artifact@v4
812a58b312SMartin Matuska      if: success() || failure()
822a58b312SMartin Matuska      with:
832a58b312SMartin Matuska        name: Logs-${{ inputs.os }}-sanity
842a58b312SMartin Matuska        path: /var/tmp/test_results/sanity.tar
852a58b312SMartin Matuska        if-no-files-found: ignore
862a58b312SMartin Matuska
872a58b312SMartin Matuska  functional:
882a58b312SMartin Matuska    runs-on: ubuntu-${{ inputs.os }}
892a58b312SMartin Matuska    strategy:
902a58b312SMartin Matuska      fail-fast: false
912a58b312SMartin Matuska      matrix:
922a58b312SMartin Matuska        tests: [ part1, part2, part3, part4 ]
932a58b312SMartin Matuska    steps:
94*fd45b686SMartin Matuska    - uses: actions/checkout@v4
952a58b312SMartin Matuska      with:
962a58b312SMartin Matuska        ref: ${{ github.event.pull_request.head.sha }}
97*fd45b686SMartin Matuska    - uses: actions/download-artifact@v4
982a58b312SMartin Matuska      with:
992a58b312SMartin Matuska        name: modules-${{ inputs.os }}
1002a58b312SMartin Matuska    - name: Install modules
1012a58b312SMartin Matuska      run: |
1022a58b312SMartin Matuska        tar xzf modules-${{ inputs.os }}.tgz
1032a58b312SMartin Matuska        .github/workflows/scripts/setup-dependencies.sh tests
1042a58b312SMartin Matuska    - name: Setup tests
1052a58b312SMartin Matuska      run: |
1062a58b312SMartin Matuska        .github/workflows/scripts/setup-functional.sh ${{ matrix.tests }} >> $GITHUB_ENV
1072a58b312SMartin Matuska    - name: Tests
1082a58b312SMartin Matuska      timeout-minutes: 120
1092a58b312SMartin Matuska      shell: bash
1102a58b312SMartin Matuska      run: |
1112a58b312SMartin Matuska        set -o pipefail
1122a58b312SMartin Matuska        /usr/share/zfs/zfs-tests.sh -vKR -s 3G -T ${{ env.TODO }} | scripts/zfs-tests-color.sh
1132a58b312SMartin Matuska    - name: Prepare artifacts
1142a58b312SMartin Matuska      if: success() || failure()
1152a58b312SMartin Matuska      run: |
1162a58b312SMartin Matuska        RESPATH="/var/tmp/test_results"
1172a58b312SMartin Matuska        mv -f $RESPATH/current $RESPATH/testfiles
1182a58b312SMartin Matuska        tar cf $RESPATH/${{ matrix.tests }}.tar -h -C $RESPATH testfiles
119*fd45b686SMartin Matuska    - uses: actions/upload-artifact@v4
1202a58b312SMartin Matuska      if: success() || failure()
1212a58b312SMartin Matuska      with:
122*fd45b686SMartin Matuska        name: Logs-${{ inputs.os }}-functional-${{ matrix.tests }}
1232a58b312SMartin Matuska        path: /var/tmp/test_results/${{ matrix.tests }}.tar
1242a58b312SMartin Matuska        if-no-files-found: ignore
125