-
Notifications
You must be signed in to change notification settings - Fork 662
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CI: Add workflow for running tests on real nvme device
Introducing a GitHub workflow which runs all test cases under the `tests` directory on real hardware through a self-hosted runner. This workflow is triggered nightly or on demand as the tests run about an hour. Signed-off-by: Dennis Maisenbacher <[email protected]>
- Loading branch information
1 parent
eb33dbb
commit 01abe63
Showing
1 changed file
with
93 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |