aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/zfs-linux-tests.yml
blob: c4fe930d092cdf4fd690533b40a5275def1bfdf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
name: zfs-linux-tests

on:
  workflow_call:
    inputs:
      os:
        description: 'The ubuntu version: 20.02 or 22.04'
        required: true
        type: string

jobs:

  zloop:
    runs-on: ubuntu-${{ inputs.os }}
    steps:
    - uses: actions/checkout@v3
      with:
        ref: ${{ github.event.pull_request.head.sha }}
    - uses: actions/download-artifact@v3
      with:
        name: modules-${{ inputs.os }}
    - name: Install modules
      run: |
        tar xzf modules-${{ inputs.os }}.tgz
        .github/workflows/scripts/setup-dependencies.sh tests
    - name: Tests
      timeout-minutes: 30
      run: |
        sudo mkdir -p /var/tmp/zloop
        # run for 10 minutes or at most 2 iterations for a maximum runner
        #   time of 20 minutes.
        sudo /usr/share/zfs/zloop.sh -t 600 -I 2 -l -m1 -- -T 120 -P 60
    - name: Prepare artifacts
      if: failure()
      run: |
        sudo chmod +r -R /var/tmp/zloop/
    - uses: actions/upload-artifact@v3
      if: failure()
      with:
        name: Zpool-logs-${{ inputs.os }}
        path: |
          /var/tmp/zloop/*/
          !/var/tmp/zloop/*/vdev/
        retention-days: 14
        if-no-files-found: ignore
    - uses: actions/upload-artifact@v3
      if: failure()
      with:
        name: Zpool-files-${{ inputs.os }}
        path: |
          /var/tmp/zloop/*/vdev/
        retention-days: 14
        if-no-files-found: ignore

  sanity:
    runs-on: ubuntu-${{ inputs.os }}
    steps:
    - uses: actions/checkout@v3
      with:
        ref: ${{ github.event.pull_request.head.sha }}
    - uses: actions/download-artifact@v3
      with:
        name: modules-${{ inputs.os }}
    - name: Install modules
      run: |
        tar xzf modules-${{ inputs.os }}.tgz
        .github/workflows/scripts/setup-dependencies.sh tests
    - name: Tests
      timeout-minutes: 60
      shell: bash
      run: |
        set -o pipefail
        /usr/share/zfs/zfs-tests.sh -vKR -s 3G -r sanity | scripts/zfs-tests-color.sh
    - name: Prepare artifacts
      if: success() || failure()
      run: |
        RESPATH="/var/tmp/test_results"
        mv -f $RESPATH/current $RESPATH/testfiles
        tar cf $RESPATH/sanity.tar -h -C $RESPATH testfiles
    - uses: actions/upload-artifact@v3
      if: success() || failure()
      with:
        name: Logs-${{ inputs.os }}-sanity
        path: /var/tmp/test_results/sanity.tar
        if-no-files-found: ignore

  functional:
    runs-on: ubuntu-${{ inputs.os }}
    strategy:
      fail-fast: false
      matrix:
        tests: [ part1, part2, part3, part4 ]
    steps:
    - uses: actions/checkout@v3
      with:
        ref: ${{ github.event.pull_request.head.sha }}
    - uses: actions/download-artifact@v3
      with:
        name: modules-${{ inputs.os }}
    - name: Install modules
      run: |
        tar xzf modules-${{ inputs.os }}.tgz
        .github/workflows/scripts/setup-dependencies.sh tests
    - name: Setup tests
      run: |
        .github/workflows/scripts/setup-functional.sh ${{ matrix.tests }} >> $GITHUB_ENV
    - name: Tests
      timeout-minutes: 120
      shell: bash
      run: |
        set -o pipefail
        /usr/share/zfs/zfs-tests.sh -vKR -s 3G -T ${{ env.TODO }} | scripts/zfs-tests-color.sh
    - name: Prepare artifacts
      if: success() || failure()
      run: |
        RESPATH="/var/tmp/test_results"
        mv -f $RESPATH/current $RESPATH/testfiles
        tar cf $RESPATH/${{ matrix.tests }}.tar -h -C $RESPATH testfiles
    - uses: actions/upload-artifact@v3
      if: success() || failure()
      with:
        name: Logs-${{ inputs.os }}-functional
        path: /var/tmp/test_results/${{ matrix.tests }}.tar
        if-no-files-found: ignore