summaryrefslogtreecommitdiffstats
path: root/.github/workflows/run-nightly-tests.yml
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-11-09 08:09:56 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-11-09 08:09:56 +0000
commit2822061d0e17d5acdbc46740b535021115f11071 (patch)
tree8c14f8690f3689562c5fd1d550e1883629ced2a8 /.github/workflows/run-nightly-tests.yml
parentAdding upstream version 2.10.2. (diff)
downloadnvme-cli-upstream.tar.xz
nvme-cli-upstream.zip
Adding upstream version 2.11.upstream/2.11upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '.github/workflows/run-nightly-tests.yml')
-rw-r--r--.github/workflows/run-nightly-tests.yml93
1 files changed, 93 insertions, 0 deletions
diff --git a/.github/workflows/run-nightly-tests.yml b/.github/workflows/run-nightly-tests.yml
new file mode 100644
index 0000000..d525986
--- /dev/null
+++ b/.github/workflows/run-nightly-tests.yml
@@ -0,0 +1,93 @@
+---
+name: run-nightly-tests
+
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '0 01 * * *'
+
+jobs:
+ nightly-tests:
+ runs-on: nvme-nvm
+ steps:
+ - name: Output kernel version
+ run: |
+ uname -a
+ - name: Clean up test device
+ run: |
+ #BDEV0 is an environment variable of the self-hosted runner instance
+ #that contains a valid nvme ctrl name which is capable of the nvm
+ #command set.
+ CONTROLLER=$(echo /dev/${BDEV0} | sed 's/n[0-9]*$//')
+ sudo nvme delete-ns $CONTROLLER -n 0xffffffff
+ sudo nvme format $CONTROLLER -n 0xffffffff -l 0 -f
+ SIZE=$(sudo nvme id-ctrl $CONTROLLER --output-format=json | jq -r '{tnvmcap} | .[]' | awk '{print $1/512}')
+ sudo nvme create-ns -s $SIZE -c $SIZE -f 0 -d 0 --csi=0 $CONTROLLER
+ sudo nvme attach-ns $CONTROLLER -n 1 -c 0
+ - uses: actions/checkout@v4
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install --no-install-recommends -y \
+ meson gcc pkg-config git libjson-c-dev libssl-dev libkeyutils-dev \
+ libdbus-1-dev libpython3-dev pipx python3-dev swig xz-utils
+ pipx ensurepath
+ sudo PIPX_BIN_DIR=/usr/local/bin pipx install nose2
+ sudo PIPX_BIN_DIR=/usr/local/bin pipx install flake8
+ sudo PIPX_BIN_DIR=/usr/local/bin pipx install mypy
+ sudo PIPX_BIN_DIR=/usr/local/bin pipx install autopep8
+ sudo PIPX_BIN_DIR=/usr/local/bin pipx install isort
+ - name: Build and install nvme-cli
+ run: |
+ scripts/build.sh -b release -c gcc
+ sudo meson install -C .build-ci
+ sudo ldconfig /usr/local/lib64
+ - name: Overwrite test config
+ run: |
+ CONTROLLER=$(echo /dev/${BDEV0} | sed 's/n[0-9]*$//')
+ cat > tests/config.json << EOF
+ {
+ "controller" : "$CONTROLLER",
+ "ns1": "/dev/${BDEV0}",
+ "log_dir": "tests/nvmetests/"
+ }
+ EOF
+ - name: Run on device tests
+ run: |
+ sudo nose2 --verbose --start-dir tests \
+ nvme_attach_detach_ns_test \
+ nvme_compare_test \
+ nvme_copy_test \
+ nvme_create_max_ns_test \
+ nvme_ctrl_reset_test \
+ nvme_dsm_test \
+ nvme_error_log_test \
+ nvme_flush_test \
+ nvme_format_test \
+ nvme_fw_log_test \
+ nvme_get_features_test \
+ nvme_get_lba_status_test \
+ nvme_id_ctrl_test \
+ nvme_id_ns_test \
+ nvme_lba_status_log_test \
+ nvme_read_write_test \
+ nvme_smart_log_test \
+ nvme_verify_test \
+ nvme_writeuncor_test \
+ nvme_writezeros_test
+ - name: Upload logs
+ uses: actions/upload-artifact@v4
+ if: always()
+ with:
+ name: logs files
+ path: |
+ ./tests/nvmetests/**/*.log
+ - name: Clean up test device
+ if: always()
+ run: |
+ CONTROLLER=$(echo /dev/${BDEV0} | sed 's/n[0-9]*$//')
+ sudo nvme delete-ns $CONTROLLER -n 0xffffffff
+ sudo nvme format $CONTROLLER -n 0xffffffff -l 0 -f
+ SIZE=$(sudo nvme id-ctrl $CONTROLLER --output-format=json | jq -r '{tnvmcap} | .[]' | awk '{print $1/512}')
+ sudo nvme create-ns -s $SIZE -c $SIZE -f 0 -d 0 --csi=0 $CONTROLLER
+ sudo nvme attach-ns $CONTROLLER -n 1 -c 0