|
| 1 | +--- |
| 2 | +name: run-nightly-tests |
| 3 | + |
| 4 | +on: |
| 5 | + workflow_dispatch: |
| 6 | + schedule: |
| 7 | + - cron: '0 01 * * *' |
| 8 | + |
| 9 | +jobs: |
| 10 | + nightly-tests: |
| 11 | + runs-on: nvme-nvm |
| 12 | + steps: |
| 13 | + - name: Output kernel version |
| 14 | + run: | |
| 15 | + uname -a |
| 16 | + - name: Clean up test device |
| 17 | + run: | |
| 18 | + #BDEV0 is an environment variable of the self-hosted runner instance |
| 19 | + #that contains a valid nvme ctrl name which is capable of the nvm |
| 20 | + #command set. |
| 21 | + CONTROLLER=$(echo /dev/${BDEV0} | sed 's/n[0-9]*$//') |
| 22 | + sudo nvme delete-ns $CONTROLLER -n 0xffffffff |
| 23 | + sudo nvme format $CONTROLLER -n 0xffffffff -l 0 -f |
| 24 | + SIZE=$(sudo nvme id-ctrl $CONTROLLER | grep tnvmcap | sed 's/^tnvmcap : //g' | sed 's/,//g' | awk '{print $1/512}') |
| 25 | + sudo nvme create-ns -s $SIZE -c $SIZE -f 0 -d 0 --csi=0 $CONTROLLER |
| 26 | + sudo nvme attach-ns $CONTROLLER -n 1 -c 0 |
| 27 | + - uses: actions/checkout@v4 |
| 28 | + - name: Install dependencies |
| 29 | + run: | |
| 30 | + sudo apt-get update |
| 31 | + sudo apt-get install --no-install-recommends -y \ |
| 32 | + meson gcc pkg-config git libjson-c-dev libssl-dev libkeyutils-dev \ |
| 33 | + libdbus-1-dev libpython3-dev pipx python3-dev swig xz-utils |
| 34 | + pipx ensurepath |
| 35 | + sudo PIPX_BIN_DIR=/usr/local/bin pipx install nose2 |
| 36 | + sudo PIPX_BIN_DIR=/usr/local/bin pipx install flake8 |
| 37 | + sudo PIPX_BIN_DIR=/usr/local/bin pipx install mypy |
| 38 | + sudo PIPX_BIN_DIR=/usr/local/bin pipx install autopep8 |
| 39 | + sudo PIPX_BIN_DIR=/usr/local/bin pipx install isort |
| 40 | + - name: Build and install nvme-cli |
| 41 | + run: | |
| 42 | + scripts/build.sh -b release -c gcc |
| 43 | + sudo meson install -C .build-ci |
| 44 | + sudo ldconfig /usr/local/lib64 |
| 45 | + - name: Overwrite test config |
| 46 | + run: | |
| 47 | + CONTROLLER=$(echo /dev/${BDEV0} | sed 's/n[0-9]*$//') |
| 48 | + cat > tests/config.json << EOF |
| 49 | + { |
| 50 | + "controller" : "$CONTROLLER", |
| 51 | + "ns1": "/dev/${BDEV0}", |
| 52 | + "log_dir": "tests/nvmetests/" |
| 53 | + } |
| 54 | + EOF |
| 55 | + - name: Run on device tests |
| 56 | + run: | |
| 57 | + sudo nose2 --verbose --start-dir tests \ |
| 58 | + nvme_attach_detach_ns_test \ |
| 59 | + nvme_compare_test \ |
| 60 | + nvme_copy_test \ |
| 61 | + nvme_create_max_ns_test \ |
| 62 | + nvme_ctrl_reset_test \ |
| 63 | + nvme_dsm_test \ |
| 64 | + nvme_error_log_test \ |
| 65 | + nvme_flush_test \ |
| 66 | + nvme_format_test \ |
| 67 | + nvme_fw_log_test \ |
| 68 | + nvme_get_features_test \ |
| 69 | + nvme_get_lba_status_test \ |
| 70 | + nvme_id_ctrl_test \ |
| 71 | + nvme_id_ns_test \ |
| 72 | + nvme_lba_status_log_test \ |
| 73 | + nvme_read_write_test \ |
| 74 | + nvme_smart_log_test \ |
| 75 | + nvme_verify_test \ |
| 76 | + nvme_writeuncor_test \ |
| 77 | + nvme_writezeros_test |
| 78 | + - name: Upload logs |
| 79 | + uses: actions/upload-artifact@v4 |
| 80 | + if: always() |
| 81 | + with: |
| 82 | + name: logs files |
| 83 | + path: | |
| 84 | + ./tests/nvmetests/**/*.log |
| 85 | + - name: Clean up test device |
| 86 | + if: always() |
| 87 | + run: | |
| 88 | + CONTROLLER=$(echo /dev/${BDEV0} | sed 's/n[0-9]*$//') |
| 89 | + sudo nvme delete-ns $CONTROLLER -n 0xffffffff |
| 90 | + sudo nvme format $CONTROLLER -n 0xffffffff -l 0 -f |
| 91 | + SIZE=$(sudo nvme id-ctrl $CONTROLLER | grep tnvmcap | sed 's/^tnvmcap : //g' | sed 's/,//g' | awk '{print $1/512}') |
| 92 | + sudo nvme create-ns -s $SIZE -c $SIZE -f 0 -d 0 --csi=0 $CONTROLLER |
| 93 | + sudo nvme attach-ns $CONTROLLER -n 1 -c 0 |
0 commit comments