From fef36064920a5b512b2534ddd60accddbf9b544f Mon Sep 17 00:00:00 2001 From: Tino Reichardt Date: Sun, 3 Mar 2024 21:36:30 +0100 Subject: [PATCH] ZTS: Use QEMU for tests on Linux and FreeBSD ----------------------------------------------------------------- Do not merge - this is my testing version -Tony Hutter Requires-builders: none ---------------------------------------------------------------- This commit adds functional tests for these systems: - AlmaLinux 8, AlmaLinux 9 - ArchLinux - CentOS Stream 8, CentOS Stream 9 - Fedora 38, Fedora 39 - Debian 11, Debian 12 - FreeBSD 13, FreeBSD 14, FreeBSD 15 - Ubuntu 22.04, Ubuntu 24.04 Workflow for each operating system: - install QEMU on the github runner - download cloud image for this system - start and init that image via cloud-init - install deps, build openzfs, load the module - do the functional testings, hopefully < 5h Signed-off-by: Tino Reichardt --- .github/workflows/scripts/generate-summary.sh | 178 ++-- .github/workflows/scripts/qemu-1-setup.sh | 30 + .github/workflows/scripts/qemu-2-start.sh | 155 +++ .github/workflows/scripts/qemu-3-deps.sh | 179 ++++ .github/workflows/scripts/qemu-4-build.sh | 85 ++ .github/workflows/scripts/qemu-5-load.sh | 63 ++ .github/workflows/scripts/qemu-6-tests.sh | 28 + .../workflows/scripts/setup-dependencies.sh | 4 +- .github/workflows/scripts/setup-functional.sh | 6 +- .github/workflows/zfs-linux.yml | 187 +++- tests/runfiles/common.run | 998 ------------------ tests/runfiles/linux.run | 200 +--- .../cli_root/zfs_share/zfs_share_005_pos.ksh | 5 + .../functional/pyzfs/pyzfs_unittest.ksh.in | 6 + 14 files changed, 834 insertions(+), 1290 deletions(-) create mode 100755 .github/workflows/scripts/qemu-1-setup.sh create mode 100755 .github/workflows/scripts/qemu-2-start.sh create mode 100755 .github/workflows/scripts/qemu-3-deps.sh create mode 100755 .github/workflows/scripts/qemu-4-build.sh create mode 100755 .github/workflows/scripts/qemu-5-load.sh create mode 100755 .github/workflows/scripts/qemu-6-tests.sh diff --git a/.github/workflows/scripts/generate-summary.sh b/.github/workflows/scripts/generate-summary.sh index b5d89208a5d8..39ad7ec0d4f9 100755 --- a/.github/workflows/scripts/generate-summary.sh +++ b/.github/workflows/scripts/generate-summary.sh @@ -1,60 +1,107 @@ #!/usr/bin/env bash -# for runtime reasons we split functional testings into N parts -# - use a define to check for missing tarfiles -FUNCTIONAL_PARTS="4" - -ZTS_REPORT="tests/test-runner/bin/zts-report.py" -chmod +x $ZTS_REPORT +###################################################################### +# generate github summary page of all the testings +###################################################################### function output() { - echo -e $* >> Summary.md + echo -e $* >> "out-$logfile.md" +} + +function outfile() { + cat "$1" >> "out-$logfile.md" +} + +function send2github() { + test -f "$1" && dd if="$1" bs=999k count=1 >> $GITHUB_STEP_SUMMARY } function error() { output ":bangbang: $* :bangbang:\n" } -# this function generates the real summary -# - expects a logfile "log" in current directory +# generate summary of one test function generate() { # we issued some error already test ! -s log && return - # for overview and zts-report - cat log | grep '^Test' > list + ###################################################### + # input: + # - log -> full debug output + # - results -> full list with summary in the end + ###################################################### + # output: + # - info.txt -> short summary list (zts-report) + # - list.txt -> full list, but without debugging + # - debug.txt -> full list with debugging info + ###################################################### + + if [ -s results ]; then + cat results | grep '^Test[: ]' > list.txt + cat results | grep -v '^Test[: ]' > info.txt + else + cat log | grep '^Test[: ]' > list.txt + ./zts-report.py --no-maybes ./list.txt > info.txt + fi # error details awk '/\[FAIL\]|\[KILLED\]/{ show=1; print; next; } - /\[SKIP\]|\[PASS\]/{ show=0; } show' log > err + /\[SKIP\]|\[PASS\]/{ show=0; } show' log > debug.txt - # summary of errors - if [ -s err ]; then + # headline of this summary + output "\n## $headline\n" + + if [ -s uname.txt ]; then output "
"
-    $ZTS_REPORT --no-maybes ./list >> Summary.md
+    outfile uname.txt
     output "
" + fi - # generate seperate error logfile - ERRLOGS=$((ERRLOGS+1)) - errfile="err-$ERRLOGS.md" - echo -e "\n## $headline (debugging)\n" >> $errfile - echo "
Error Listing - with dmesg and dbgmsg
" >> $errfile
-    dd if=err bs=999k count=1 >> $errfile
-    echo "
" >> $errfile + if [ -s info.txt ]; then + output "
"
+    outfile info.txt
+    output "
" else output "All tests passed :thumbsup:" fi - output "
Full Listing
"
-  cat list >> Summary.md
-  output "
" + if [ -s dmesg-prerun.txt ]; then + output "
Dmesg - systemstart
"
+    outfile dmesg-prerun.txt
+    output "
" + fi + + if [ -s dmesg-module-load.txt ]; then + output "
Dmesg - module loading
"
+    outfile dmesg-module-load.txt
+    output "
" + fi + + if [ -s make-stderr.txt ]; then + output "
Stderr of make
"
+    outfile make-stderr.txt
+    output "
" + fi + + if [ -s list.txt ]; then + output "
List of all tests
"
+    outfile list.txt
+    output "
" + fi + + if [ -s debug.txt ]; then + output "
Debug list with dmesg and dbgmsg
"
+    outfile debug.txt
+    output "
" + fi # remove tmp files - rm -f err list log + rm -f log results *.txt + logfile=$((logfile+1)) } # check tarfiles and untar -function check_tarfile() { +function my_untar() { if [ -f "$1" ]; then tar xf "$1" || error "Tarfile $1 returns some error" else @@ -62,58 +109,71 @@ function check_tarfile() { fi } -# check logfile and concatenate test results -function check_logfile() { +# check file and copy +function my_copy() { if [ -f "$1" ]; then - cat "$1" >> log + cat "$1" >> "$2" else - error "Logfile $1 not found" + error "File $1 not found" fi } -# sanity -function summarize_s() { - headline="$1" - output "\n## $headline\n" +# sanity checks on ubuntu runner +function summarize_sanity() { + headline="Sanity Tests Ubuntu $1" rm -rf testfiles - check_tarfile "$2/sanity.tar" - check_logfile "testfiles/log" + my_untar "Logs-$1-sanity/sanity.tar" + my_copy "testfiles/log" log generate } -# functional -function summarize_f() { - headline="$1" - output "\n## $headline\n" +# functional on ubuntu runner matrix +function summarize_functional() { + headline="Functional Tests Ubuntu $1" rm -rf testfiles - for i in $(seq 1 $FUNCTIONAL_PARTS); do - tarfile="$2-part$i/part$i.tar" - check_tarfile "$tarfile" - check_logfile "testfiles/log" + for i in $(seq 1 4); do + tarfile="Logs-$1-functional-part$i/part$i.tar" + my_untar "$tarfile" + my_copy "testfiles/log" log done generate } +# functional tests via qemu +function summarize_qemu() { + for tarfile in Logs-functional*/qemu-*.tar; do + rm -rf current + my_untar "$tarfile" + osname=`cat osname.txt` + headline="Functional Tests: $osname" + my_copy "current/log" log + my_copy "current/results" results + generate + done +} + # https://docs.github.com/en/enterprise-server@3.6/actions/using-workflows/workflow-commands-for-github-actions#step-isolation-and-limits # Job summaries are isolated between steps and each step is restricted to a maximum size of 1MiB. # [ ] can not show all error findings here # [x] split files into smaller ones and create additional steps -ERRLOGS=0 -if [ ! -f Summary/Summary.md ]; then - # first call, we do the default summary (~500k) - echo -n > Summary.md - summarize_s "Sanity Tests Ubuntu 20.04" Logs-20.04-sanity - summarize_s "Sanity Tests Ubuntu 22.04" Logs-22.04-sanity - summarize_f "Functional Tests Ubuntu 20.04" Logs-20.04-functional - summarize_f "Functional Tests Ubuntu 22.04" Logs-22.04-functional - - cat Summary.md >> $GITHUB_STEP_SUMMARY - mkdir -p Summary - mv *.md Summary +# first call, generate all summaries +if [ ! -f out-0.md ]; then + # create ./zts-report.py for generate() + TEMPLATE="tests/test-runner/bin/zts-report.py.in" + cat $TEMPLATE| sed -e 's|@PYTHON_SHEBANG@|python3|' > ./zts-report.py + chmod +x ./zts-report.py + + logfile="0" + summarize_sanity "20.04" + summarize_sanity "22.04" + summarize_functional "20.04" + summarize_functional "22.04" + summarize_qemu + + send2github out-0.md else - # here we get, when errors where returned in first call - test -f Summary/err-$1.md && cat Summary/err-$1.md >> $GITHUB_STEP_SUMMARY + send2github out-$1.md fi exit 0 diff --git a/.github/workflows/scripts/qemu-1-setup.sh b/.github/workflows/scripts/qemu-1-setup.sh new file mode 100755 index 000000000000..7b904429ce74 --- /dev/null +++ b/.github/workflows/scripts/qemu-1-setup.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +###################################################################### +# 1) setup the action runner to start some qemu instance +###################################################################### + +set -eu + +# docker isn't needed, free some memory +sudo systemctl stop docker.socket +sudo apt-get remove docker-ce-cli docker-ce podman + +# remove snapd, not needed +for x in lxd core20 snapd; do sudo snap remove $x; done +sudo apt-get remove google-chrome-stable firefox snapd + +# only install qemu +sudo apt-get update +sudo apt-get install axel cloud-image-utils guestfs-tools virt-manager + +# no swap needed +sudo swapoff -a + +# disk usage afterwards +sudo df -h / +sudo df -h /mnt +sudo fstrim -a + +# generate ssh keys +ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -q -N "" diff --git a/.github/workflows/scripts/qemu-2-start.sh b/.github/workflows/scripts/qemu-2-start.sh new file mode 100755 index 000000000000..ff46be73baa3 --- /dev/null +++ b/.github/workflows/scripts/qemu-2-start.sh @@ -0,0 +1,155 @@ +#!/usr/bin/env bash + +###################################################################### +# 2) start qemu with some operating system, init via cloud-init +###################################################################### + +OS="$1" + +# valid ostypes: virt-install --os-variant list +OSv=$OS + +case "$OS" in + almalinux8) + OSNAME="AlmaLinux 8" + URL="https://repo.almalinux.org/almalinux/8/cloud/x86_64/images/AlmaLinux-8-GenericCloud-latest.x86_64.qcow2" + ;; + almalinux9) + OSNAME="AlmaLinux 9" + URL="https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2" + ;; + archlinux) + OSNAME="Archlinux" + URL="https://geo.mirror.pkgbuild.com/images/latest/Arch-Linux-x86_64-cloudimg.qcow2" + ;; + centos-stream8) + OSNAME="CentOS Stream 8" + URL="https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2" + ;; + centos-stream9) + OSNAME="CentOS Stream 9" + URL="https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2" + ;; + debian11) + OSNAME="Debian 11" + URL="https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2" + ;; + debian12) + OSNAME="Debian 12" + URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2" + ;; + fedora38) + OSNAME="Fedora 38" + URL="https://download.fedoraproject.org/pub/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2" + ;; + fedora39) + OSNAME="Fedora 39" + OSv="fedora38" + URL="https://download.fedoraproject.org/pub/fedora/linux/releases/39/Cloud/x86_64/images/Fedora-Cloud-Base-39-1.5.x86_64.qcow2" + ;; + freebsd13) + OSNAME="FreeBSD 13" + OSv="freebsd13.0" + # URL="https://download.freebsd.org/ftp/snapshots/amd64" + # freebsd images don't have clout-init within it! :( + # -> workaround: provide own images + URL_ZS="https://openzfs.de/freebsd/amd64-freebsd-13.3.qcow2.zst" + BASH="/usr/local/bin/bash" + ;; + freebsd14) + OSNAME="FreeBSD 14" + OSv="freebsd13.0" + URL_ZS="https://openzfs.de/freebsd/amd64-freebsd-14.0.qcow2.zst" + BASH="/usr/local/bin/bash" + ;; + freebsd15) + OSNAME="FreeBSD 15" + OSv="freebsd13.0" + URL_ZS="https://openzfs.de/freebsd/amd64-freebsd-15.0.qcow2.zst" + BASH="/usr/local/bin/bash" + ;; + ubuntu22) + OSNAME="Ubuntu 22.04" + OSv="ubuntu22.04" + URL="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img" + ;; + ubuntu24) + OSNAME="Ubuntu 24.04" + OSv="ubuntu24.04" + URL="https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img" + ;; + *) + echo "Wrong value for variable OS!" + exit 111 + ;; +esac + +IMG="/mnt/original.qcow2" +DISK="/mnt/openzfs.qcow2" +sudo chown -R $(whoami) /mnt + +if [ ! -z "$URL_ZS" ]; then + echo "Loading image $URL_ZS ..." + axel -q "$URL_ZS" -o "$IMG.zst" || exit 111 + zstd -d "$IMG.zst" && rm -f "$IMG.zst" +else + echo "Loading image $URL ..." + axel -q "$URL" -o "$IMG" || exit 111 +fi + +# we use zstd for faster IO on the testing runner +echo "Converting image ..." +qemu-img convert -q -f qcow2 -O qcow2 -c -o compression_type=zstd,preallocation=off $IMG $DISK || exit 111 +rm -f $IMG || exit 111 + +echo "Resizing image to 60GiB ..." +qemu-img resize -q $DISK 60G || exit 111 + +PUBKEY=`cat ~/.ssh/id_ed25519.pub` +cat < /tmp/user-data +#cloud-config + +fqdn: $OS + +users: +- name: root + shell: $BASH +- name: zfs + sudo: ALL=(ALL) NOPASSWD:ALL + shell: $BASH + ssh_authorized_keys: + - $PUBKEY + +growpart: + mode: auto + devices: ['/'] + ignore_growroot_disabled: false + +write_files: + - path: /tmp/runner-init.sh + permissions: '0755' + content: | + #!/usr/bin/env bash + + cd \$HOME + exec 2>stderr-init.log + echo "$OSNAME" > /var/tmp/osname.txt + +runcmd: + - sudo -u zfs /tmp/runner-init.sh +EOF + +# we could extend this with more virtual disks for example /TR +sudo virt-install \ + --os-variant $OSv \ + --name "openzfs" \ + --cpu host-passthrough \ + --vcpus=4,sockets=1 \ + --memory $((1024*12)) \ + --graphics none \ + --network bridge=virbr0,model=virtio \ + --cloud-init user-data=/tmp/user-data \ + --disk $DISK,format=qcow2,bus=virtio \ + --import --noautoconsole + +sudo rm -f /tmp/user-data diff --git a/.github/workflows/scripts/qemu-3-deps.sh b/.github/workflows/scripts/qemu-3-deps.sh new file mode 100755 index 000000000000..c6fab0f74855 --- /dev/null +++ b/.github/workflows/scripts/qemu-3-deps.sh @@ -0,0 +1,179 @@ +#!/usr/bin/env bash + +###################################################################### +# 3) install dependencies for compiling and loading +###################################################################### + +set -eu + +function archlinux() { + echo "##[group]Running pacman -Syu" + sudo pacman -Syu --noconfirm + echo "##[endgroup]" + + echo "##[group]Install Development Tools" + sudo pacman -Sy --noconfirm base-devel bc cpio dkms fakeroot fio \ + inetutils linux linux-headers lsscsi nfs-utils parted pax perf \ + python-packaging python-setuptools ksh samba sysstat rng-tools \ + rsync wget + echo "##[endgroup]" +} + +function debian() { + export DEBIAN_FRONTEND=noninteractive + + echo "##[group]Running apt-get update+upgrade" + sudo apt-get update -y + sudo apt-get upgrade -y + echo "##[endgroup]" + + echo "##[group]Install Development Tools" + yes | sudo apt-get install -y build-essential autoconf libtool \ + libtool-bin gdb lcov git alien fakeroot wget curl bc fio acl \ + sysstat lsscsi parted gdebi attr dbench watchdog ksh nfs-kernel-server \ + samba rng-tools dkms rsync linux-headers-$(uname -r) \ + zlib1g-dev uuid-dev libblkid-dev libselinux-dev \ + xfslibs-dev libattr1-dev libacl1-dev libudev-dev libdevmapper-dev \ + libssl-dev libaio-dev libffi-dev libelf-dev libmount-dev \ + libpam0g-dev pamtester python3-dev python3-setuptools python3 \ + python3-dev python3-setuptools python3-cffi libcurl4-openssl-dev \ + python3-packaging python3-distlib + echo "##[endgroup]" + + echo "##[group]starting services" + sudo -E service start nfs-server + + # Debian + sudo -E systemctl start samba || true + # Ubuntu + sudo -E service smbd start || true + echo "##[endgroup]" + +} + +function freebsd() { + export ASSUME_ALWAYS_YES="YES" + + echo "##[group]Install Development Tools" + sudo pkg install -y autoconf automake autotools base64 fio gdb git gmake \ + gsed python python3 gettext gettext-runtime checkbashisms lcov libtool \ + lscpu ksh93 pamtester pamtester rsync + + sudo pkg install -xy \ + '^samba4[[:digit:]]+$' \ + '^py3[[:digit:]]+-cffi$' \ + '^py3[[:digit:]]+-sysctl$' \ + '^py3[[:digit:]]+-packaging$' + + echo "##[endgroup]" + + # the image has /usr/src already + #echo "##[group]Install Kernel Headers" + #VERSION=$(freebsd-version -r) + #sudo mkdir -p /usr/src + #sudo chown -R $(whoami) /usr/src + #git clone --depth=1 -b releng/${VERSION%%-*} https://github.com/freebsd/freebsd-src /usr/src || + #git clone --depth=1 -b stable/${VERSION%%.*} https://github.com/freebsd/freebsd-src /usr/src || + #git clone --depth=1 -b main https://github.com/freebsd/freebsd-src /usr/src + #echo "##[endgroup]" +} + +function rhel() { + echo "##[group]Running dnf update" + sudo dnf update -y + echo "##[endgroup]" + + echo "##[group]Install Development Tools" + sudo dnf group install -y "Development Tools" + sudo dnf install -y libtool rpm-build libtirpc-devel libblkid-devel \ + libuuid-devel libudev-devel openssl-devel zlib-devel libaio-devel \ + libattr-devel elfutils-libelf-devel python3 python3-devel \ + python3-setuptools python3-cffi libffi-devel git ncompress \ + libcurl-devel python3-packaging systemd + sudo dnf install -y kernel-devel-$(uname -r) + echo "##[endgroup]" + + echo "##[group]Install utilities for ZTS" + sudo dnf install -y acl ksh bc bzip2 fio sysstat mdadm lsscsi parted attr \ + nfs-utils samba rng-tools perf rsync dbench pamtester + echo "##[endgroup]" + + echo "##[group]starting services" + sudo -E systemctl enable nfs-server + sudo -E systemctl enable smb + + + sudo -E systemctl start nfs-server + sudo -E systemctl start smb + + sudo -E service nfs-server start + sudo -E service smb start + sudo -E service nfs-server status + sudo -E service smb status + echo "##[endgroup]" +} + +case "$1" in + almalinux8|centos-stream8) + echo "##[group]Enable epel and powertools repositories" + sudo dnf config-manager -y --set-enabled powertools + sudo dnf install -y epel-release + echo "##[endgroup]" + rhel + ;; + almalinux9|centos-stream9) + echo "##[group]Enable epel and crb repositories" + sudo dnf config-manager -y --set-enabled crb + sudo dnf install -y epel-release + + sudo dnf -y install kernel-abi-stablelists + + + # To minimize EPEL leakage, disable by default... + sudo -E sed -e "s/enabled=1/enabled=0/g" -i /etc/yum.repos.d/epel.repo + + # Required development tools. + sudo -E yum -y --skip-broken install gcc make autoconf libtool gdb \ + kernel-rpm-macros kernel-abi-whitelists + + # Required utilities. + sudo -E yum -y --skip-broken install --enablerepo=epel git rpm-build \ + wget curl bc fio acl sysstat mdadm lsscsi parted attr dbench watchdog \ + ksh nfs-utils samba rng-tools dkms pamtester ncompress rsync + + # Required development libraries + sudo -E yum -y --skip-broken install kernel-devel \ + zlib-devel libuuid-devel libblkid-devel libselinux-devel \ + xfsprogs-devel libattr-devel libacl-devel libudev-devel \ + openssl-devel libargon2-devel libffi-devel pam-devel libaio-devel libcurl-devel + + sudo -E yum -y --skip-broken install --enablerepo=powertools \ + python3-packaging rpcgen + + echo "##[endgroup]" + rhel + ;; + archlinux) + archlinux + ;; + debian*) + debian + echo "##[group]Install linux-perf" + sudo apt-get install -yq linux-perf + echo "##[endgroup]" + ;; + fedora*) + rhel + ;; + freebsd*) + freebsd + ;; + ubuntu*) + debian + echo "##[group]Install linux-tools-common" + sudo apt-get install -yq linux-tools-common libtirpc-dev + echo "##[endgroup]" + ;; +esac + +sudo poweroff diff --git a/.github/workflows/scripts/qemu-4-build.sh b/.github/workflows/scripts/qemu-4-build.sh new file mode 100755 index 000000000000..b713be5e4f4e --- /dev/null +++ b/.github/workflows/scripts/qemu-4-build.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash + +###################################################################### +# 4) configure and build openzfs modules +###################################################################### + +set -eu +cd $HOME/zfs + +function freebsd() { + echo "##[group]Autogen.sh" + MAKE="gmake" ./autogen.sh + echo "##[endgroup]" + + echo "##[group]Configure" + MAKE="gmake" ./configure \ + --prefix=/usr/local \ + --with-libintl-prefix=/usr/local \ + --enable-pyzfs \ + --enable-debug \ + --enable-debuginfo + echo "##[endgroup]" + + echo "##[group]Build" + gmake -j`sysctl -n hw.ncpu` 2>/var/tmp/make-stderr.txt + echo "##[endgroup]" + + echo "##[group]Install" + sudo gmake install 2>>/var/tmp/make-stderr.txt + echo "##[endgroup]" +} + +function linux() { + echo "##[group]Autogen.sh" + ./autogen.sh + echo "##[endgroup]" + + echo "##[group]Configure" + ./configure \ + --prefix=/usr \ + --enable-pyzfs \ + --enable-debug \ + --enable-debuginfo + echo "##[endgroup]" + + echo "##[group]Build" + make -j$(nproc) 2>/var/tmp/make-stderr.txt + echo "##[endgroup]" + + echo "##[group]Install" + sudo make install 2>>/var/tmp/make-stderr.txt +find /usr/lib/python3.9/site-packages/libzfs_core/ + echo "##[endgroup]" +} + +function rhel { + echo "##[group]Autogen.sh" + ./autogen.sh + echo "##[endgroup]" + + echo "##[group]Configure" + ./configure --enable-debug --enable-debuginfo --with-spec=redhat + echo "##[endgroup]" + + echo "##[group]Build" + make -j$(nproc) pkg-kmod pkg-utils 2>/var/tmp/make-stderr.txt + echo "##[endgroup]" + + echo "##[group]Install" + sudo yum -y localinstall $(ls *.rpm | grep -v src.rpm) + echo "##[endgroup]" +} + +export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin" +case "$1" in + freebsd*) + freebsd + ;; + alma*) + rhel + ;; + *) + linux + ;; +esac diff --git a/.github/workflows/scripts/qemu-5-load.sh b/.github/workflows/scripts/qemu-5-load.sh new file mode 100755 index 000000000000..1676423f0a8f --- /dev/null +++ b/.github/workflows/scripts/qemu-5-load.sh @@ -0,0 +1,63 @@ +#!/usr/bin/env bash + +###################################################################### +# 5) load openzfs modules +###################################################################### + +set -eu +cd $HOME/zfs + +function freebsd() { + echo "##[group]Load modules" + # when freebsd zfs is loaded, unload this one + kldstat -n zfs 2>/dev/null && sudo kldunload zfs + sudo dmesg -c > /var/tmp/dmesg-prerun.txt + sudo -E ./scripts/zfs.sh + sudo dmesg + sudo dmesg -c > /var/tmp/dmesg-module-load.txt + echo "Loaded module: " + sudo kldstat -n openzfs + uname -a > /var/tmp/uname.txt + echo "##[endgroup]" +} + +function linux_forceload() { + echo "Need to force the module loading!" + # -f tells modprobe to ignore wrong version numbers + sudo modprobe -v -f spl || echo "!! Loading module spl is failing !!" + sudo modprobe -v -f zfs || echo "!! Loading module zfs is failing !!" +} + +function linux() { + echo "##[group]Load modules" + sudo dmesg -c > /var/tmp/dmesg-prerun.txt + sudo -E ./scripts/zfs.sh + test -d /proc/spl/kstat/zfs || linux_forceload + sudo dmesg + sudo dmesg -c > /var/tmp/dmesg-module-load.txt + uname -a > /var/tmp/uname.txt + echo "##[endgroup]" +} + +function rhel() { + echo "##[group]Load modules" + + sudo -E modprobe zfs + sudo dmesg -c > /var/tmp/dmesg-module-load.txt + uname -a > /var/tmp/uname.txt + echo "##[endgroup]" + +} + +export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin" +case "$1" in + freebsd*) + freebsd + ;; + alma*) + rhel + ;; + *) + linux + ;; +esac diff --git a/.github/workflows/scripts/qemu-6-tests.sh b/.github/workflows/scripts/qemu-6-tests.sh new file mode 100755 index 000000000000..fee67c83344e --- /dev/null +++ b/.github/workflows/scripts/qemu-6-tests.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash + +###################################################################### +# 6) configure and build openzfs modules +###################################################################### + +set -eu +set -o pipefail +cd $HOME/zfs + +#OPTS="-T casenorm" +OPTS="-T functional" +OPTS="-T pyzfs" + +sudo cat /usr/share/zfs/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh + +sudo /usr/bin/python3.9 -m unittest --verbose libzfs_core.test.test_libzfs_core.ZFSTest.test_recv_with_heal + +case "$1" in + freebsd*) + /usr/local/share/zfs/zfs-tests.sh -vKR -s 3G $OPTS \ + | scripts/zfs-tests-color.sh + ;; + *) + /usr/share/zfs/zfs-tests.sh -vKR -s 3G $OPTS \ + | scripts/zfs-tests-color.sh + ;; +esac diff --git a/.github/workflows/scripts/setup-dependencies.sh b/.github/workflows/scripts/setup-dependencies.sh index b40f9290f914..57e51dcaed70 100755 --- a/.github/workflows/scripts/setup-dependencies.sh +++ b/.github/workflows/scripts/setup-dependencies.sh @@ -13,7 +13,7 @@ function prerun() { sudo apt upgrade sudo xargs --arg-file=.github/workflows/build-dependencies.txt apt-get install -qq sudo apt-get clean - sudo dmesg -c > /var/tmp/dmesg-prerun + sudo dmesg -c > /var/tmp/dmesg-prerun.txt echo "::endgroup::" } @@ -47,7 +47,7 @@ function mod_install() { sudo depmod -a sudo modprobe zfs sudo dmesg - sudo dmesg -c > /var/tmp/dmesg-module-load + sudo dmesg -c > /var/tmp/dmesg-module-load.txt echo "::endgroup::" echo "::group::Report CPU information" diff --git a/.github/workflows/scripts/setup-functional.sh b/.github/workflows/scripts/setup-functional.sh index 08c4d872abdf..efeb1e2852ac 100755 --- a/.github/workflows/scripts/setup-functional.sh +++ b/.github/workflows/scripts/setup-functional.sh @@ -6,15 +6,15 @@ TDIR="/usr/share/zfs/zfs-tests/tests/functional" echo -n "TODO=" case "$1" in part1) - # ~1h 20m + # ~1h 10m echo "cli_root" ;; part2) - # ~1h + # ~1h 30m ls $TDIR|grep '^[a-m]'|grep -v "cli_root"|xargs|tr -s ' ' ',' ;; part3) - # ~1h + # ~40m ls $TDIR|grep '^[n-qs-z]'|xargs|tr -s ' ' ',' ;; part4) diff --git a/.github/workflows/zfs-linux.yml b/.github/workflows/zfs-linux.yml index e6b705c86055..32fb5609a642 100644 --- a/.github/workflows/zfs-linux.yml +++ b/.github/workflows/zfs-linux.yml @@ -6,59 +6,182 @@ on: jobs: - build: - name: Build +# build: +# name: Build +# strategy: +# fail-fast: false +# matrix: +# os: [20.04] +# runs-on: ubuntu-${{ matrix.os }} +# steps: +# - uses: actions/checkout@v4 +# with: +# ref: ${{ github.event.pull_request.head.sha }} +# - name: Build modules +# run: .github/workflows/scripts/setup-dependencies.sh build +# - name: Prepare modules upload +# run: tar czf modules-${{ matrix.os }}.tgz *.deb .github tests/test-runner tests/ImageOS.txt +# - uses: actions/upload-artifact@v4 +# with: +# name: modules-${{ matrix.os }} +# path: modules-${{ matrix.os }}.tgz +# retention-days: 14 +# +# tests: +# name: Tests +# strategy: +# fail-fast: false +# matrix: +# os: [20.04] +# needs: build +# uses: ./.github/workflows/zfs-linux-tests.yml +# with: +# os: ${{ matrix.os }} + + qemu-vm: + name: QEMU strategy: fail-fast: false matrix: - os: [20.04, 22.04] - runs-on: ubuntu-${{ matrix.os }} +# os: [almalinux8, almalinux9, archlinux, centos-stream8, centos-stream9, fedora38, fedora39, debian11, debian12, freebsd13, freebsd14, freebsd15, ubuntu22, ubuntu24] + os: [almalinux9] + + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - - name: Build modules - run: .github/workflows/scripts/setup-dependencies.sh build - - name: Prepare modules upload - run: tar czf modules-${{ matrix.os }}.tgz *.deb .github tests/test-runner tests/ImageOS.txt + - name: Setup QEMU + run: .github/workflows/scripts/qemu-1-setup.sh + - name: Start QEMU machine + run: .github/workflows/scripts/qemu-2-start.sh ${{ matrix.os }} + - name: Install dependencies in QEMU machine + timeout-minutes: 15 + run: | + echo "Install dependencies in QEMU machine" + echo "StrictHostKeyChecking no" >> $HOME/.ssh/config + echo "ConnectTimeout 1" >> $HOME/.ssh/config + while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do + sleep 1 + IP=`arp | grep "^192.168.122."| cut -d' ' -f1` + test -z "$IP" && continue + ssh 2>/dev/null zfs@$IP "uname -a" && break + done + echo IP=$IP >> $GITHUB_ENV + scp .github/workflows/scripts/qemu-3-deps.sh zfs@$IP:qemu-3-deps.sh + ssh zfs@$IP '$HOME/qemu-3-deps.sh' ${{ matrix.os }} && true + # restart vm with new kernel and so on + while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do sleep 5; done + sudo virsh start openzfs + sleep 5 + - name: Build modules in QEMU machine + timeout-minutes: 30 + run: | + echo "Build modules in QEMU machine" + while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do + sleep 1 + ssh 2>/dev/null zfs@${{ env.IP }} "uname -a" && break + done + rsync -ar $HOME/work/zfs/zfs zfs@${{ env.IP }}:./ + ssh zfs@${{ env.IP }} '$HOME/zfs/.github/workflows/scripts/qemu-4-build.sh' ${{ matrix.os }} + - name: Load modules in QEMU machine + timeout-minutes: 2 + run: | + ssh zfs@${{ env.IP }} '$HOME/zfs/.github/workflows/scripts/qemu-5-load.sh' ${{ matrix.os }} + - name: Run tests in QEMU machine + timeout-minutes: 330 + run: | + ssh zfs@${{ env.IP }} '$HOME/zfs/.github/workflows/scripts/qemu-6-tests.sh' ${{ matrix.os }} + - name: Prepare artifacts + if: success() || failure() + run: | + RESPATH="/var/tmp/test_results" + rsync -arL zfs@${{ env.IP }}:$RESPATH/current $RESPATH + scp zfs@$IP:"/var/tmp/*.txt" /var/tmp + cat $RESPATH/current/log + cp -f /var/tmp/*.txt $RESPATH + tar cf qemu-${{ matrix.os }}.tar -C $RESPATH -h current uname.txt \ + osname.txt dmesg-prerun.txt dmesg-module-load.txt make-stderr.txt - uses: actions/upload-artifact@v4 + if: success() || failure() with: - name: modules-${{ matrix.os }} - path: modules-${{ matrix.os }}.tgz - retention-days: 14 - - testings: - name: Testing - strategy: - fail-fast: false - matrix: - os: [20.04, 22.04] - needs: build - uses: ./.github/workflows/zfs-linux-tests.yml - with: - os: ${{ matrix.os }} + name: Logs-functional-${{ matrix.os }} + path: qemu-${{ matrix.os }}.tar + if-no-files-found: ignore cleanup: if: always() name: Cleanup runs-on: ubuntu-22.04 - needs: testings +# needs: [ qemu-vm, tests ] + needs: [ qemu-vm ] + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} - uses: actions/download-artifact@v4 - name: Generating summary - run: | - tar xzf modules-22.04/modules-22.04.tgz .github tests - .github/workflows/scripts/generate-summary.sh - # up to 4 steps, each can have 1 MiB output (for debugging log files) - - name: Summary for errors #1 + run: .github/workflows/scripts/generate-summary.sh + - name: Generating summary... run: .github/workflows/scripts/generate-summary.sh 1 - - name: Summary for errors #2 + - name: Generating summary... run: .github/workflows/scripts/generate-summary.sh 2 - - name: Summary for errors #3 + - name: Generating summary... run: .github/workflows/scripts/generate-summary.sh 3 - - name: Summary for errors #4 + - name: Generating summary... run: .github/workflows/scripts/generate-summary.sh 4 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 5 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 6 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 7 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 8 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 9 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 10 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 11 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 12 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 13 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 14 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 15 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 16 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 17 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 18 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 19 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 20 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 21 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 22 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 23 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 24 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 25 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 26 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 27 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 28 + - name: Generating summary... + run: .github/workflows/scripts/generate-summary.sh 29 - uses: actions/upload-artifact@v4 with: name: Summary Files - path: Summary/ + path: out-* diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run index 558cd425afd8..08229f3c4c11 100644 --- a/tests/runfiles/common.run +++ b/tests/runfiles/common.run @@ -28,1008 +28,10 @@ failsafe = callbacks/zfs_failsafe outputdir = /var/tmp/test_results tags = ['functional'] -[tests/functional/acl/off] -tests = ['dosmode', 'posixmode'] -tags = ['functional', 'acl'] - -[tests/functional/alloc_class] -tests = ['alloc_class_001_pos', 'alloc_class_002_neg', 'alloc_class_003_pos', - 'alloc_class_004_pos', 'alloc_class_005_pos', 'alloc_class_006_pos', - 'alloc_class_007_pos', 'alloc_class_008_pos', 'alloc_class_009_pos', - 'alloc_class_010_pos', 'alloc_class_011_neg', 'alloc_class_012_pos', - 'alloc_class_013_pos', 'alloc_class_014_neg', 'alloc_class_015_pos'] -tags = ['functional', 'alloc_class'] - -[tests/functional/append] -tests = ['file_append', 'threadsappend_001_pos'] -tags = ['functional', 'append'] - -[tests/functional/arc] -tests = ['dbufstats_001_pos', 'dbufstats_002_pos', 'dbufstats_003_pos', - 'arcstats_runtime_tuning'] -tags = ['functional', 'arc'] - -[tests/functional/atime] -tests = ['atime_001_pos', 'atime_002_neg', 'root_atime_off', 'root_atime_on'] -tags = ['functional', 'atime'] - -[tests/functional/bclone] -tests = ['bclone_crossfs_corner_cases_limited', - 'bclone_crossfs_data', - 'bclone_crossfs_embedded', - 'bclone_crossfs_hole', - 'bclone_diffprops_all', - 'bclone_diffprops_checksum', - 'bclone_diffprops_compress', - 'bclone_diffprops_copies', - 'bclone_diffprops_recordsize', - 'bclone_prop_sync', - 'bclone_samefs_corner_cases_limited', - 'bclone_samefs_data', - 'bclone_samefs_embedded', - 'bclone_samefs_hole'] -tags = ['functional', 'bclone'] -timeout = 7200 - -[tests/functional/block_cloning] -tests = ['block_cloning_clone_mmap_cached', - 'block_cloning_copyfilerange', - 'block_cloning_copyfilerange_partial', - 'block_cloning_copyfilerange_fallback', - 'block_cloning_disabled_copyfilerange', - 'block_cloning_copyfilerange_cross_dataset', - 'block_cloning_cross_enc_dataset', - 'block_cloning_copyfilerange_fallback_same_txg', - 'block_cloning_replay', 'block_cloning_replay_encrypted', - 'block_cloning_lwb_buffer_overflow', 'block_cloning_clone_mmap_write'] -tags = ['functional', 'block_cloning'] - -[tests/functional/bootfs] -tests = ['bootfs_001_pos', 'bootfs_002_neg', 'bootfs_003_pos', - 'bootfs_004_neg', 'bootfs_005_neg', 'bootfs_006_pos', 'bootfs_007_pos', - 'bootfs_008_pos'] -tags = ['functional', 'bootfs'] - -[tests/functional/btree] -tests = ['btree_positive', 'btree_negative'] -tags = ['functional', 'btree'] -pre = -post = - -[tests/functional/cache] -tests = ['cache_001_pos', 'cache_002_pos', 'cache_003_pos', 'cache_004_neg', - 'cache_005_neg', 'cache_006_pos', 'cache_007_neg', 'cache_008_neg', - 'cache_009_pos', 'cache_010_pos', 'cache_011_pos', 'cache_012_pos'] -tags = ['functional', 'cache'] - -[tests/functional/cachefile] -tests = ['cachefile_001_pos', 'cachefile_002_pos', 'cachefile_003_pos', - 'cachefile_004_pos'] -tags = ['functional', 'cachefile'] - -[tests/functional/casenorm] -tests = ['case_all_values', 'norm_all_values', 'mixed_create_failure', - 'sensitive_none_lookup', 'sensitive_none_delete', - 'sensitive_formd_lookup', 'sensitive_formd_delete', - 'insensitive_none_lookup', 'insensitive_none_delete', - 'insensitive_formd_lookup', 'insensitive_formd_delete', - 'mixed_none_lookup', 'mixed_none_lookup_ci', 'mixed_none_delete', - 'mixed_formd_lookup', 'mixed_formd_lookup_ci', 'mixed_formd_delete'] -tags = ['functional', 'casenorm'] - -[tests/functional/channel_program/lua_core] -tests = ['tst.args_to_lua', 'tst.divide_by_zero', 'tst.exists', - 'tst.integer_illegal', 'tst.integer_overflow', 'tst.language_functions_neg', - 'tst.language_functions_pos', 'tst.large_prog', 'tst.libraries', - 'tst.memory_limit', 'tst.nested_neg', 'tst.nested_pos', 'tst.nvlist_to_lua', - 'tst.recursive_neg', 'tst.recursive_pos', 'tst.return_large', - 'tst.return_nvlist_neg', 'tst.return_nvlist_pos', - 'tst.return_recursive_table', 'tst.stack_gsub', 'tst.timeout'] -tags = ['functional', 'channel_program', 'lua_core'] - -[tests/functional/channel_program/synctask_core] -tests = ['tst.destroy_fs', 'tst.destroy_snap', 'tst.get_count_and_limit', - 'tst.get_index_props', 'tst.get_mountpoint', 'tst.get_neg', - 'tst.get_number_props', 'tst.get_string_props', 'tst.get_type', - 'tst.get_userquota', 'tst.get_written', 'tst.inherit', 'tst.list_bookmarks', - 'tst.list_children', 'tst.list_clones', 'tst.list_holds', - 'tst.list_snapshots', 'tst.list_system_props', - 'tst.list_user_props', 'tst.parse_args_neg','tst.promote_conflict', - 'tst.promote_multiple', 'tst.promote_simple', 'tst.rollback_mult', - 'tst.rollback_one', 'tst.set_props', 'tst.snapshot_destroy', 'tst.snapshot_neg', - 'tst.snapshot_recursive', 'tst.snapshot_rename', 'tst.snapshot_simple', - 'tst.bookmark.create', 'tst.bookmark.copy', - 'tst.terminate_by_signal' - ] -tags = ['functional', 'channel_program', 'synctask_core'] - -[tests/functional/checksum] -tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test', 'run_blake3_test', - 'filetest_001_pos', 'filetest_002_pos'] -tags = ['functional', 'checksum'] - -[tests/functional/clean_mirror] -tests = [ 'clean_mirror_001_pos', 'clean_mirror_002_pos', - 'clean_mirror_003_pos', 'clean_mirror_004_pos'] -tags = ['functional', 'clean_mirror'] - -[tests/functional/cli_root/zinject] -tests = ['zinject_args'] -pre = -post = -tags = ['functional', 'cli_root', 'zinject'] - -[tests/functional/cli_root/zdb] -tests = ['zdb_002_pos', 'zdb_003_pos', 'zdb_004_pos', 'zdb_005_pos', - 'zdb_006_pos', 'zdb_args_neg', 'zdb_args_pos', - 'zdb_block_size_histogram', 'zdb_checksum', 'zdb_decompress', - 'zdb_display_block', 'zdb_encrypted', 'zdb_label_checksum', - 'zdb_object_range_neg', 'zdb_object_range_pos', 'zdb_objset_id', - 'zdb_decompress_zstd', 'zdb_recover', 'zdb_recover_2', 'zdb_backup'] -pre = -post = -tags = ['functional', 'cli_root', 'zdb'] -timeout = 1200 - -[tests/functional/cli_root/zfs] -tests = ['zfs_001_neg', 'zfs_002_pos'] -tags = ['functional', 'cli_root', 'zfs'] - -[tests/functional/cli_root/zfs_bookmark] -tests = ['zfs_bookmark_cliargs'] -tags = ['functional', 'cli_root', 'zfs_bookmark'] - -[tests/functional/cli_root/zfs_change-key] -tests = ['zfs_change-key', 'zfs_change-key_child', 'zfs_change-key_format', - 'zfs_change-key_inherit', 'zfs_change-key_load', 'zfs_change-key_location', - 'zfs_change-key_pbkdf2iters', 'zfs_change-key_clones'] -tags = ['functional', 'cli_root', 'zfs_change-key'] - -[tests/functional/cli_root/zfs_clone] -tests = ['zfs_clone_001_neg', 'zfs_clone_002_pos', 'zfs_clone_003_pos', - 'zfs_clone_004_pos', 'zfs_clone_005_pos', 'zfs_clone_006_pos', - 'zfs_clone_007_pos', 'zfs_clone_008_neg', 'zfs_clone_009_neg', - 'zfs_clone_010_pos', 'zfs_clone_encrypted', 'zfs_clone_deeply_nested', - 'zfs_clone_rm_nested'] -tags = ['functional', 'cli_root', 'zfs_clone'] - -[tests/functional/cli_root/zfs_copies] -tests = ['zfs_copies_001_pos', 'zfs_copies_002_pos', 'zfs_copies_003_pos', - 'zfs_copies_004_neg', 'zfs_copies_005_neg', 'zfs_copies_006_pos'] -tags = ['functional', 'cli_root', 'zfs_copies'] - -[tests/functional/cli_root/zfs_create] -tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos', - 'zfs_create_004_pos', 'zfs_create_005_pos', 'zfs_create_006_pos', - 'zfs_create_007_pos', 'zfs_create_008_neg', 'zfs_create_009_neg', - 'zfs_create_010_neg', 'zfs_create_011_pos', 'zfs_create_012_pos', - 'zfs_create_013_pos', 'zfs_create_014_pos', 'zfs_create_encrypted', - 'zfs_create_crypt_combos', 'zfs_create_dryrun', 'zfs_create_nomount', - 'zfs_create_verbose'] -tags = ['functional', 'cli_root', 'zfs_create'] - -[tests/functional/cli_root/zfs_destroy] -tests = ['zfs_clone_livelist_condense_and_disable', - 'zfs_clone_livelist_condense_races', 'zfs_clone_livelist_dedup', - 'zfs_destroy_001_pos', 'zfs_destroy_002_pos', 'zfs_destroy_003_pos', - 'zfs_destroy_004_pos', 'zfs_destroy_005_neg', 'zfs_destroy_006_neg', - 'zfs_destroy_007_neg', 'zfs_destroy_008_pos', 'zfs_destroy_009_pos', - 'zfs_destroy_010_pos', 'zfs_destroy_011_pos', 'zfs_destroy_012_pos', - 'zfs_destroy_013_neg', 'zfs_destroy_014_pos', 'zfs_destroy_015_pos', - 'zfs_destroy_016_pos', 'zfs_destroy_clone_livelist', - 'zfs_destroy_dev_removal', 'zfs_destroy_dev_removal_condense'] -tags = ['functional', 'cli_root', 'zfs_destroy'] - -[tests/functional/cli_root/zfs_diff] -tests = ['zfs_diff_changes', 'zfs_diff_cliargs', 'zfs_diff_timestamp', - 'zfs_diff_types', 'zfs_diff_encrypted', 'zfs_diff_mangle'] -tags = ['functional', 'cli_root', 'zfs_diff'] - -[tests/functional/cli_root/zfs_get] -tests = ['zfs_get_001_pos', 'zfs_get_002_pos', 'zfs_get_003_pos', - 'zfs_get_004_pos', 'zfs_get_005_neg', 'zfs_get_006_neg', 'zfs_get_007_neg', - 'zfs_get_008_pos', 'zfs_get_009_pos', 'zfs_get_010_neg'] -tags = ['functional', 'cli_root', 'zfs_get'] - -[tests/functional/cli_root/zfs_ids_to_path] -tests = ['zfs_ids_to_path_001_pos'] -tags = ['functional', 'cli_root', 'zfs_ids_to_path'] - -[tests/functional/cli_root/zfs_inherit] -tests = ['zfs_inherit_001_neg', 'zfs_inherit_002_neg', 'zfs_inherit_003_pos', - 'zfs_inherit_mountpoint'] -tags = ['functional', 'cli_root', 'zfs_inherit'] - -[tests/functional/cli_root/zfs_load-key] -tests = ['zfs_load-key', 'zfs_load-key_all', 'zfs_load-key_file', - 'zfs_load-key_https', 'zfs_load-key_location', 'zfs_load-key_noop', - 'zfs_load-key_recursive'] -tags = ['functional', 'cli_root', 'zfs_load-key'] - -[tests/functional/cli_root/zfs_mount] -tests = ['zfs_mount_001_pos', 'zfs_mount_002_pos', 'zfs_mount_003_pos', - 'zfs_mount_004_pos', 'zfs_mount_005_pos', 'zfs_mount_007_pos', - 'zfs_mount_009_neg', 'zfs_mount_010_neg', 'zfs_mount_011_neg', - 'zfs_mount_012_pos', 'zfs_mount_all_001_pos', 'zfs_mount_encrypted', - 'zfs_mount_remount', 'zfs_mount_all_fail', 'zfs_mount_all_mountpoints', - 'zfs_mount_test_race', 'zfs_mount_recursive'] -tags = ['functional', 'cli_root', 'zfs_mount'] - -[tests/functional/cli_root/zfs_program] -tests = ['zfs_program_json'] -tags = ['functional', 'cli_root', 'zfs_program'] - -[tests/functional/cli_root/zfs_promote] -tests = ['zfs_promote_001_pos', 'zfs_promote_002_pos', 'zfs_promote_003_pos', - 'zfs_promote_004_pos', 'zfs_promote_005_pos', 'zfs_promote_006_neg', - 'zfs_promote_007_neg', 'zfs_promote_008_pos', 'zfs_promote_encryptionroot'] -tags = ['functional', 'cli_root', 'zfs_promote'] - -[tests/functional/cli_root/zfs_property] -tests = ['zfs_written_property_001_pos'] -tags = ['functional', 'cli_root', 'zfs_property'] - -[tests/functional/cli_root/zfs_receive] -tests = ['zfs_receive_001_pos', 'zfs_receive_002_pos', 'zfs_receive_003_pos', - 'zfs_receive_004_neg', 'zfs_receive_005_neg', 'zfs_receive_006_pos', - 'zfs_receive_007_neg', 'zfs_receive_008_pos', 'zfs_receive_009_neg', - 'zfs_receive_010_pos', 'zfs_receive_011_pos', 'zfs_receive_012_pos', - 'zfs_receive_013_pos', 'zfs_receive_014_pos', 'zfs_receive_015_pos', - 'zfs_receive_016_pos', 'receive-o-x_props_override', - 'receive-o-x_props_aliases', - 'zfs_receive_from_encrypted', 'zfs_receive_to_encrypted', - 'zfs_receive_raw', 'zfs_receive_raw_incremental', 'zfs_receive_-e', - 'zfs_receive_raw_-d', 'zfs_receive_from_zstd', 'zfs_receive_new_props', - 'zfs_receive_-wR-encrypted-mix', 'zfs_receive_corrective', - 'zfs_receive_compressed_corrective', 'zfs_receive_large_block_corrective'] -tags = ['functional', 'cli_root', 'zfs_receive'] - -[tests/functional/cli_root/zfs_rename] -tests = ['zfs_rename_001_pos', 'zfs_rename_002_pos', 'zfs_rename_003_pos', - 'zfs_rename_004_neg', 'zfs_rename_005_neg', 'zfs_rename_006_pos', - 'zfs_rename_007_pos', 'zfs_rename_008_pos', 'zfs_rename_009_neg', - 'zfs_rename_010_neg', 'zfs_rename_011_pos', 'zfs_rename_012_neg', - 'zfs_rename_013_pos', 'zfs_rename_014_neg', 'zfs_rename_encrypted_child', - 'zfs_rename_to_encrypted', 'zfs_rename_mountpoint', 'zfs_rename_nounmount'] -tags = ['functional', 'cli_root', 'zfs_rename'] - -[tests/functional/cli_root/zfs_reservation] -tests = ['zfs_reservation_001_pos', 'zfs_reservation_002_pos'] -tags = ['functional', 'cli_root', 'zfs_reservation'] - -[tests/functional/cli_root/zfs_rollback] -tests = ['zfs_rollback_001_pos', 'zfs_rollback_002_pos', - 'zfs_rollback_003_neg', 'zfs_rollback_004_neg'] -tags = ['functional', 'cli_root', 'zfs_rollback'] - -[tests/functional/cli_root/zfs_send] -tests = ['zfs_send_001_pos', 'zfs_send_002_pos', 'zfs_send_003_pos', - 'zfs_send_004_neg', 'zfs_send_005_pos', 'zfs_send_006_pos', - 'zfs_send_007_pos', 'zfs_send_encrypted', 'zfs_send_encrypted_unloaded', - 'zfs_send_raw', 'zfs_send_sparse', 'zfs_send-b', 'zfs_send_skip_missing'] -tags = ['functional', 'cli_root', 'zfs_send'] - -[tests/functional/cli_root/zfs_set] -tests = ['cache_001_pos', 'cache_002_neg', 'canmount_001_pos', - 'canmount_002_pos', 'canmount_003_pos', 'canmount_004_pos', - 'checksum_001_pos', 'compression_001_pos', 'mountpoint_001_pos', - 'mountpoint_002_pos', 'reservation_001_neg', 'user_property_002_pos', - 'share_mount_001_neg', 'snapdir_001_pos', 'onoffs_001_pos', - 'user_property_001_pos', 'user_property_003_neg', 'readonly_001_pos', - 'user_property_004_pos', 'version_001_neg', 'zfs_set_001_neg', - 'zfs_set_002_neg', 'zfs_set_003_neg', 'property_alias_001_pos', - 'mountpoint_003_pos', 'ro_props_001_pos', 'zfs_set_keylocation', - 'zfs_set_feature_activation', 'zfs_set_nomount'] -tags = ['functional', 'cli_root', 'zfs_set'] - -[tests/functional/cli_root/zfs_share] -tests = ['zfs_share_001_pos', 'zfs_share_002_pos', 'zfs_share_003_pos', - 'zfs_share_004_pos', 'zfs_share_006_pos', 'zfs_share_008_neg', - 'zfs_share_010_neg', 'zfs_share_011_pos', 'zfs_share_concurrent_shares', - 'zfs_share_after_mount'] -tags = ['functional', 'cli_root', 'zfs_share'] - -[tests/functional/cli_root/zfs_snapshot] -tests = ['zfs_snapshot_001_neg', 'zfs_snapshot_002_neg', - 'zfs_snapshot_003_neg', 'zfs_snapshot_004_neg', 'zfs_snapshot_005_neg', - 'zfs_snapshot_006_pos', 'zfs_snapshot_007_neg', 'zfs_snapshot_008_neg', - 'zfs_snapshot_009_pos'] -tags = ['functional', 'cli_root', 'zfs_snapshot'] - -[tests/functional/cli_root/zfs_unload-key] -tests = ['zfs_unload-key', 'zfs_unload-key_all', 'zfs_unload-key_recursive'] -tags = ['functional', 'cli_root', 'zfs_unload-key'] - -[tests/functional/cli_root/zfs_unmount] -tests = ['zfs_unmount_001_pos', 'zfs_unmount_002_pos', 'zfs_unmount_003_pos', - 'zfs_unmount_004_pos', 'zfs_unmount_005_pos', 'zfs_unmount_006_pos', - 'zfs_unmount_007_neg', 'zfs_unmount_008_neg', 'zfs_unmount_009_pos', - 'zfs_unmount_all_001_pos', 'zfs_unmount_nested', 'zfs_unmount_unload_keys'] -tags = ['functional', 'cli_root', 'zfs_unmount'] - -[tests/functional/cli_root/zfs_unshare] -tests = ['zfs_unshare_001_pos', 'zfs_unshare_002_pos', 'zfs_unshare_003_pos', - 'zfs_unshare_004_neg', 'zfs_unshare_005_neg', 'zfs_unshare_006_pos', - 'zfs_unshare_007_pos'] -tags = ['functional', 'cli_root', 'zfs_unshare'] - -[tests/functional/cli_root/zfs_upgrade] -tests = ['zfs_upgrade_001_pos', 'zfs_upgrade_002_pos', 'zfs_upgrade_003_pos', - 'zfs_upgrade_004_pos', 'zfs_upgrade_005_pos', 'zfs_upgrade_006_neg', - 'zfs_upgrade_007_neg'] -tags = ['functional', 'cli_root', 'zfs_upgrade'] - -[tests/functional/cli_root/zfs_wait] -tests = ['zfs_wait_deleteq', 'zfs_wait_getsubopt'] -tags = ['functional', 'cli_root', 'zfs_wait'] - -[tests/functional/cli_root/zhack] -tests = ['zhack_label_repair_001', 'zhack_label_repair_002', - 'zhack_label_repair_003', 'zhack_label_repair_004'] -pre = -post = -tags = ['functional', 'cli_root', 'zhack'] - -[tests/functional/cli_root/zpool] -tests = ['zpool_001_neg', 'zpool_002_pos', 'zpool_003_pos', 'zpool_colors'] -tags = ['functional', 'cli_root', 'zpool'] - -[tests/functional/cli_root/zpool_add] -tests = ['zpool_add_001_pos', 'zpool_add_002_pos', 'zpool_add_003_pos', - 'zpool_add_004_pos', 'zpool_add_006_pos', 'zpool_add_007_neg', - 'zpool_add_008_neg', 'zpool_add_009_neg', 'zpool_add_010_pos', - 'add-o_ashift', 'add_prop_ashift', 'zpool_add_dryrun_output', - 'zpool_add--allow-ashift-mismatch'] -tags = ['functional', 'cli_root', 'zpool_add'] - -[tests/functional/cli_root/zpool_attach] -tests = ['zpool_attach_001_neg', 'attach-o_ashift'] -tags = ['functional', 'cli_root', 'zpool_attach'] - -[tests/functional/cli_root/zpool_clear] -tests = ['zpool_clear_001_pos', 'zpool_clear_002_neg', 'zpool_clear_003_neg', - 'zpool_clear_readonly'] -tags = ['functional', 'cli_root', 'zpool_clear'] - -[tests/functional/cli_root/zpool_create] -tests = ['zpool_create_001_pos', 'zpool_create_002_pos', - 'zpool_create_003_pos', 'zpool_create_004_pos', 'zpool_create_005_pos', - 'zpool_create_006_pos', 'zpool_create_007_neg', 'zpool_create_008_pos', - 'zpool_create_009_neg', 'zpool_create_010_neg', 'zpool_create_011_neg', - 'zpool_create_012_neg', 'zpool_create_014_neg', 'zpool_create_015_neg', - 'zpool_create_017_neg', 'zpool_create_018_pos', 'zpool_create_019_pos', - 'zpool_create_020_pos', 'zpool_create_021_pos', 'zpool_create_022_pos', - 'zpool_create_023_neg', 'zpool_create_024_pos', - 'zpool_create_encrypted', 'zpool_create_crypt_combos', - 'zpool_create_draid_001_pos', 'zpool_create_draid_002_pos', - 'zpool_create_draid_003_pos', 'zpool_create_draid_004_pos', - 'zpool_create_features_001_pos', 'zpool_create_features_002_pos', - 'zpool_create_features_003_pos', 'zpool_create_features_004_neg', - 'zpool_create_features_005_pos', 'zpool_create_features_006_pos', - 'zpool_create_features_007_pos', 'zpool_create_features_008_pos', - 'zpool_create_features_009_pos', 'create-o_ashift', - 'zpool_create_tempname', 'zpool_create_dryrun_output'] -tags = ['functional', 'cli_root', 'zpool_create'] - -[tests/functional/cli_root/zpool_destroy] -tests = ['zpool_destroy_001_pos', 'zpool_destroy_002_pos', - 'zpool_destroy_003_neg'] -pre = -post = -tags = ['functional', 'cli_root', 'zpool_destroy'] - -[tests/functional/cli_root/zpool_detach] -tests = ['zpool_detach_001_neg'] -tags = ['functional', 'cli_root', 'zpool_detach'] - -[tests/functional/cli_root/zpool_events] -tests = ['zpool_events_clear', 'zpool_events_cliargs', 'zpool_events_follow', - 'zpool_events_poolname', 'zpool_events_errors', 'zpool_events_duplicates', - 'zpool_events_clear_retained'] -tags = ['functional', 'cli_root', 'zpool_events'] - -[tests/functional/cli_root/zpool_export] -tests = ['zpool_export_001_pos', 'zpool_export_002_pos', - 'zpool_export_003_neg', 'zpool_export_004_pos'] -tags = ['functional', 'cli_root', 'zpool_export'] - -[tests/functional/cli_root/zpool_get] -tests = ['zpool_get_001_pos', 'zpool_get_002_pos', 'zpool_get_003_pos', - 'zpool_get_004_neg', 'zpool_get_005_pos', 'vdev_get_001_pos'] -tags = ['functional', 'cli_root', 'zpool_get'] - -[tests/functional/cli_root/zpool_history] -tests = ['zpool_history_001_neg', 'zpool_history_002_pos'] -tags = ['functional', 'cli_root', 'zpool_history'] - -[tests/functional/cli_root/zpool_import] -tests = ['zpool_import_001_pos', 'zpool_import_002_pos', - 'zpool_import_003_pos', 'zpool_import_004_pos', 'zpool_import_005_pos', - 'zpool_import_006_pos', 'zpool_import_007_pos', 'zpool_import_008_pos', - 'zpool_import_009_neg', 'zpool_import_010_pos', 'zpool_import_011_neg', - 'zpool_import_012_pos', 'zpool_import_013_neg', 'zpool_import_014_pos', - 'zpool_import_015_pos', 'zpool_import_016_pos', 'zpool_import_017_pos', - 'zpool_import_features_001_pos', 'zpool_import_features_002_neg', - 'zpool_import_features_003_pos', 'zpool_import_missing_001_pos', - 'zpool_import_missing_002_pos', 'zpool_import_missing_003_pos', - 'zpool_import_rename_001_pos', 'zpool_import_all_001_pos', - 'zpool_import_encrypted', 'zpool_import_encrypted_load', - 'zpool_import_errata3', 'zpool_import_errata4', - 'import_cachefile_device_added', - 'import_cachefile_device_removed', - 'import_cachefile_device_replaced', - 'import_cachefile_mirror_attached', - 'import_cachefile_mirror_detached', - 'import_cachefile_paths_changed', - 'import_cachefile_shared_device', - 'import_devices_missing', 'import_log_missing', - 'import_paths_changed', - 'import_rewind_config_changed', - 'import_rewind_device_replaced', - 'zpool_import_status'] -tags = ['functional', 'cli_root', 'zpool_import'] -timeout = 1200 - -[tests/functional/cli_root/zpool_labelclear] -tests = ['zpool_labelclear_active', 'zpool_labelclear_exported', - 'zpool_labelclear_removed', 'zpool_labelclear_valid'] -pre = -post = -tags = ['functional', 'cli_root', 'zpool_labelclear'] - -[tests/functional/cli_root/zpool_initialize] -tests = ['zpool_initialize_attach_detach_add_remove', - 'zpool_initialize_fault_export_import_online', - 'zpool_initialize_import_export', - 'zpool_initialize_offline_export_import_online', - 'zpool_initialize_online_offline', - 'zpool_initialize_split', - 'zpool_initialize_start_and_cancel_neg', - 'zpool_initialize_start_and_cancel_pos', - 'zpool_initialize_suspend_resume', - 'zpool_initialize_uninit', - 'zpool_initialize_unsupported_vdevs', - 'zpool_initialize_verify_checksums', - 'zpool_initialize_verify_initialized'] -pre = -tags = ['functional', 'cli_root', 'zpool_initialize'] - -[tests/functional/cli_root/zpool_offline] -tests = ['zpool_offline_001_pos', 'zpool_offline_002_neg', - 'zpool_offline_003_pos'] -tags = ['functional', 'cli_root', 'zpool_offline'] - -[tests/functional/cli_root/zpool_online] -tests = ['zpool_online_001_pos', 'zpool_online_002_neg'] -tags = ['functional', 'cli_root', 'zpool_online'] - -[tests/functional/cli_root/zpool_remove] -tests = ['zpool_remove_001_neg', 'zpool_remove_002_pos', - 'zpool_remove_003_pos'] -tags = ['functional', 'cli_root', 'zpool_remove'] - -[tests/functional/cli_root/zpool_replace] -tests = ['zpool_replace_001_neg', 'replace-o_ashift', 'replace_prop_ashift'] -tags = ['functional', 'cli_root', 'zpool_replace'] - -[tests/functional/cli_root/zpool_resilver] -tests = ['zpool_resilver_bad_args', 'zpool_resilver_restart', - 'zpool_resilver_concurrent'] -tags = ['functional', 'cli_root', 'zpool_resilver'] - -[tests/functional/cli_root/zpool_scrub] -tests = ['zpool_scrub_001_neg', 'zpool_scrub_002_pos', 'zpool_scrub_003_pos', - 'zpool_scrub_004_pos', 'zpool_scrub_005_pos', - 'zpool_scrub_encrypted_unloaded', 'zpool_scrub_print_repairing', - 'zpool_scrub_offline_device', 'zpool_scrub_multiple_copies', - 'zpool_error_scrub_001_pos', 'zpool_error_scrub_002_pos', - 'zpool_error_scrub_003_pos', 'zpool_error_scrub_004_pos'] -tags = ['functional', 'cli_root', 'zpool_scrub'] - -[tests/functional/cli_root/zpool_set] -tests = ['zpool_set_001_pos', 'zpool_set_002_neg', 'zpool_set_003_neg', - 'zpool_set_ashift', 'zpool_set_features', 'vdev_set_001_pos', - 'user_property_001_pos', 'user_property_002_neg'] -tags = ['functional', 'cli_root', 'zpool_set'] - -[tests/functional/cli_root/zpool_split] -tests = ['zpool_split_cliargs', 'zpool_split_devices', - 'zpool_split_encryption', 'zpool_split_props', 'zpool_split_vdevs', - 'zpool_split_resilver', 'zpool_split_indirect', - 'zpool_split_dryrun_output'] -tags = ['functional', 'cli_root', 'zpool_split'] - -[tests/functional/cli_root/zpool_status] -tests = ['zpool_status_001_pos', 'zpool_status_002_pos', - 'zpool_status_003_pos', 'zpool_status_004_pos', - 'zpool_status_005_pos', 'zpool_status_006_pos', - 'zpool_status_007_pos', 'zpool_status_008_pos', - 'zpool_status_features_001_pos'] -tags = ['functional', 'cli_root', 'zpool_status'] - -[tests/functional/cli_root/zpool_sync] -tests = ['zpool_sync_001_pos', 'zpool_sync_002_neg'] -tags = ['functional', 'cli_root', 'zpool_sync'] - -[tests/functional/cli_root/zpool_trim] -tests = ['zpool_trim_attach_detach_add_remove', - 'zpool_trim_fault_export_import_online', - 'zpool_trim_import_export', 'zpool_trim_multiple', 'zpool_trim_neg', - 'zpool_trim_offline_export_import_online', 'zpool_trim_online_offline', - 'zpool_trim_partial', 'zpool_trim_rate', 'zpool_trim_rate_neg', - 'zpool_trim_secure', 'zpool_trim_split', 'zpool_trim_start_and_cancel_neg', - 'zpool_trim_start_and_cancel_pos', 'zpool_trim_suspend_resume', - 'zpool_trim_unsupported_vdevs', 'zpool_trim_verify_checksums', - 'zpool_trim_verify_trimmed'] -tags = ['functional', 'zpool_trim'] - -[tests/functional/cli_root/zpool_upgrade] -tests = ['zpool_upgrade_001_pos', 'zpool_upgrade_002_pos', - 'zpool_upgrade_003_pos', 'zpool_upgrade_004_pos', - 'zpool_upgrade_005_neg', 'zpool_upgrade_006_neg', - 'zpool_upgrade_007_pos', 'zpool_upgrade_008_pos', - 'zpool_upgrade_009_neg', 'zpool_upgrade_features_001_pos'] -tags = ['functional', 'cli_root', 'zpool_upgrade'] - -[tests/functional/cli_root/zpool_wait] -tests = ['zpool_wait_discard', 'zpool_wait_freeing', - 'zpool_wait_initialize_basic', 'zpool_wait_initialize_cancel', - 'zpool_wait_initialize_flag', 'zpool_wait_multiple', - 'zpool_wait_no_activity', 'zpool_wait_remove', 'zpool_wait_remove_cancel', - 'zpool_wait_trim_basic', 'zpool_wait_trim_cancel', 'zpool_wait_trim_flag', - 'zpool_wait_usage'] -tags = ['functional', 'cli_root', 'zpool_wait'] - -[tests/functional/cli_root/zpool_wait/scan] -tests = ['zpool_wait_replace_cancel', 'zpool_wait_rebuild', - 'zpool_wait_resilver', 'zpool_wait_scrub_cancel', - 'zpool_wait_replace', 'zpool_wait_scrub_basic', 'zpool_wait_scrub_flag'] -tags = ['functional', 'cli_root', 'zpool_wait'] - -[tests/functional/cli_user/misc] -tests = ['zdb_001_neg', 'zfs_001_neg', 'zfs_allow_001_neg', - 'zfs_clone_001_neg', 'zfs_create_001_neg', 'zfs_destroy_001_neg', - 'zfs_get_001_neg', 'zfs_inherit_001_neg', 'zfs_mount_001_neg', - 'zfs_promote_001_neg', 'zfs_receive_001_neg', 'zfs_rename_001_neg', - 'zfs_rollback_001_neg', 'zfs_send_001_neg', 'zfs_set_001_neg', - 'zfs_share_001_neg', 'zfs_snapshot_001_neg', 'zfs_unallow_001_neg', - 'zfs_unmount_001_neg', 'zfs_unshare_001_neg', 'zfs_upgrade_001_neg', - 'zpool_001_neg', 'zpool_add_001_neg', 'zpool_attach_001_neg', - 'zpool_clear_001_neg', 'zpool_create_001_neg', 'zpool_destroy_001_neg', - 'zpool_detach_001_neg', 'zpool_export_001_neg', 'zpool_get_001_neg', - 'zpool_history_001_neg', 'zpool_import_001_neg', 'zpool_import_002_neg', - 'zpool_offline_001_neg', 'zpool_online_001_neg', 'zpool_remove_001_neg', - 'zpool_replace_001_neg', 'zpool_scrub_001_neg', 'zpool_set_001_neg', - 'zpool_status_001_neg', 'zpool_upgrade_001_neg', 'arcstat_001_pos', - 'arc_summary_001_pos', 'arc_summary_002_neg', 'zpool_wait_privilege', - 'zilstat_001_pos'] -user = -tags = ['functional', 'cli_user', 'misc'] - -[tests/functional/cli_user/zfs_list] -tests = ['zfs_list_001_pos', 'zfs_list_002_pos', 'zfs_list_003_pos', - 'zfs_list_004_neg', 'zfs_list_005_neg', 'zfs_list_007_pos', - 'zfs_list_008_neg'] -user = -tags = ['functional', 'cli_user', 'zfs_list'] - -[tests/functional/cli_user/zpool_iostat] -tests = ['zpool_iostat_001_neg', 'zpool_iostat_002_pos', - 'zpool_iostat_003_neg', 'zpool_iostat_004_pos', - 'zpool_iostat_005_pos', 'zpool_iostat_-c_disable', - 'zpool_iostat_-c_homedir', 'zpool_iostat_-c_searchpath'] -user = -tags = ['functional', 'cli_user', 'zpool_iostat'] - -[tests/functional/cli_user/zpool_list] -tests = ['zpool_list_001_pos', 'zpool_list_002_neg'] -user = -tags = ['functional', 'cli_user', 'zpool_list'] - -[tests/functional/cli_user/zpool_status] -tests = ['zpool_status_003_pos', 'zpool_status_-c_disable', - 'zpool_status_-c_homedir', 'zpool_status_-c_searchpath'] -user = -tags = ['functional', 'cli_user', 'zpool_status'] - -[tests/functional/compression] -tests = ['compress_001_pos', 'compress_002_pos', 'compress_003_pos', - 'l2arc_compressed_arc', 'l2arc_compressed_arc_disabled', - 'l2arc_encrypted', 'l2arc_encrypted_no_compressed_arc'] -tags = ['functional', 'compression'] - -[tests/functional/cp_files] -tests = ['cp_files_001_pos', 'cp_files_002_pos', 'cp_stress'] -tags = ['functional', 'cp_files'] - -[tests/functional/crtime] -tests = ['crtime_001_pos' ] -tags = ['functional', 'crtime'] - -[tests/functional/ctime] -tests = ['ctime_001_pos' ] -tags = ['functional', 'ctime'] - -[tests/functional/deadman] -tests = ['deadman_ratelimit', 'deadman_sync', 'deadman_zio'] -pre = -post = -tags = ['functional', 'deadman'] - -[tests/functional/delegate] -tests = ['zfs_allow_001_pos', 'zfs_allow_002_pos', 'zfs_allow_003_pos', - 'zfs_allow_004_pos', 'zfs_allow_005_pos', 'zfs_allow_006_pos', - 'zfs_allow_007_pos', 'zfs_allow_008_pos', 'zfs_allow_009_neg', - 'zfs_allow_010_pos', 'zfs_allow_011_neg', 'zfs_allow_012_neg', - 'zfs_unallow_001_pos', 'zfs_unallow_002_pos', 'zfs_unallow_003_pos', - 'zfs_unallow_004_pos', 'zfs_unallow_005_pos', 'zfs_unallow_006_pos', - 'zfs_unallow_007_neg', 'zfs_unallow_008_neg'] -tags = ['functional', 'delegate'] - -[tests/functional/exec] -tests = ['exec_001_pos', 'exec_002_neg'] -tags = ['functional', 'exec'] - -[tests/functional/fallocate] -tests = ['fallocate_punch-hole'] -tags = ['functional', 'fallocate'] - -[tests/functional/features/async_destroy] -tests = ['async_destroy_001_pos'] -tags = ['functional', 'features', 'async_destroy'] - -[tests/functional/features/large_dnode] -tests = ['large_dnode_001_pos', 'large_dnode_003_pos', 'large_dnode_004_neg', - 'large_dnode_005_pos', 'large_dnode_007_neg', 'large_dnode_009_pos'] -tags = ['functional', 'features', 'large_dnode'] - -[tests/functional/grow] -pre = -post = -tests = ['grow_pool_001_pos', 'grow_replicas_001_pos'] -tags = ['functional', 'grow'] - -[tests/functional/history] -tests = ['history_001_pos', 'history_002_pos', 'history_003_pos', - 'history_004_pos', 'history_005_neg', 'history_006_neg', - 'history_007_pos', 'history_008_pos', 'history_009_pos', - 'history_010_pos'] -tags = ['functional', 'history'] - -[tests/functional/hkdf] -pre = -post = -tests = ['hkdf_test'] -tags = ['functional', 'hkdf'] - -[tests/functional/inheritance] -tests = ['inherit_001_pos'] -pre = -tags = ['functional', 'inheritance'] - -[tests/functional/io] -tests = ['sync', 'psync', 'posixaio', 'mmap'] -tags = ['functional', 'io'] - -[tests/functional/inuse] -tests = ['inuse_004_pos', 'inuse_005_pos', 'inuse_008_pos', 'inuse_009_pos'] -post = -tags = ['functional', 'inuse'] - -[tests/functional/large_files] -tests = ['large_files_001_pos', 'large_files_002_pos'] -tags = ['functional', 'large_files'] - -[tests/functional/limits] -tests = ['filesystem_count', 'filesystem_limit', 'snapshot_count', - 'snapshot_limit'] -tags = ['functional', 'limits'] - -[tests/functional/link_count] -tests = ['link_count_001', 'link_count_root_inode'] -tags = ['functional', 'link_count'] - -[tests/functional/migration] -tests = ['migration_001_pos', 'migration_002_pos', 'migration_003_pos', - 'migration_004_pos', 'migration_005_pos', 'migration_006_pos', - 'migration_007_pos', 'migration_008_pos', 'migration_009_pos', - 'migration_010_pos', 'migration_011_pos', 'migration_012_pos'] -tags = ['functional', 'migration'] - -[tests/functional/mmap] -tests = ['mmap_mixed', 'mmap_read_001_pos', 'mmap_seek_001_pos', - 'mmap_sync_001_pos', 'mmap_write_001_pos'] -tags = ['functional', 'mmap'] - -[tests/functional/mount] -tests = ['umount_001', 'umountall_001'] -tags = ['functional', 'mount'] - -[tests/functional/mv_files] -tests = ['mv_files_001_pos', 'mv_files_002_pos', 'random_creation'] -tags = ['functional', 'mv_files'] - -[tests/functional/nestedfs] -tests = ['nestedfs_001_pos'] -tags = ['functional', 'nestedfs'] - -[tests/functional/no_space] -tests = ['enospc_001_pos', 'enospc_002_pos', 'enospc_003_pos', - 'enospc_df', 'enospc_ganging', 'enospc_rm'] -tags = ['functional', 'no_space'] - -[tests/functional/nopwrite] -tests = ['nopwrite_copies', 'nopwrite_mtime', 'nopwrite_negative', - 'nopwrite_promoted_clone', 'nopwrite_recsize', 'nopwrite_sync', - 'nopwrite_varying_compression', 'nopwrite_volume'] -tags = ['functional', 'nopwrite'] - -[tests/functional/online_offline] -tests = ['online_offline_001_pos', 'online_offline_002_neg', - 'online_offline_003_neg'] -tags = ['functional', 'online_offline'] - -[tests/functional/pool_checkpoint] -tests = ['checkpoint_after_rewind', 'checkpoint_big_rewind', - 'checkpoint_capacity', 'checkpoint_conf_change', 'checkpoint_discard', - 'checkpoint_discard_busy', 'checkpoint_discard_many', - 'checkpoint_indirect', 'checkpoint_invalid', 'checkpoint_lun_expsz', - 'checkpoint_open', 'checkpoint_removal', 'checkpoint_rewind', - 'checkpoint_ro_rewind', 'checkpoint_sm_scale', 'checkpoint_twice', - 'checkpoint_vdev_add', 'checkpoint_zdb', 'checkpoint_zhack_feat'] -tags = ['functional', 'pool_checkpoint'] -timeout = 1800 - -[tests/functional/pool_names] -tests = ['pool_names_001_pos', 'pool_names_002_neg'] -pre = -post = -tags = ['functional', 'pool_names'] - -[tests/functional/poolversion] -tests = ['poolversion_001_pos', 'poolversion_002_pos'] -tags = ['functional', 'poolversion'] - [tests/functional/pyzfs] tests = ['pyzfs_unittest'] pre = post = tags = ['functional', 'pyzfs'] -[tests/functional/quota] -tests = ['quota_001_pos', 'quota_002_pos', 'quota_003_pos', - 'quota_004_pos', 'quota_005_pos', 'quota_006_neg'] -tags = ['functional', 'quota'] - -[tests/functional/redacted_send] -tests = ['redacted_compressed', 'redacted_contents', 'redacted_deleted', - 'redacted_disabled_feature', 'redacted_embedded', 'redacted_holes', - 'redacted_incrementals', 'redacted_largeblocks', 'redacted_many_clones', - 'redacted_mixed_recsize', 'redacted_mounts', 'redacted_negative', - 'redacted_origin', 'redacted_panic', 'redacted_props', 'redacted_resume', - 'redacted_size', 'redacted_volume'] -tags = ['functional', 'redacted_send'] - -[tests/functional/raidz] -tests = ['raidz_001_neg', 'raidz_002_pos', 'raidz_expand_001_pos', - 'raidz_expand_002_pos', 'raidz_expand_003_neg', 'raidz_expand_003_pos', - 'raidz_expand_004_pos', 'raidz_expand_005_pos', 'raidz_expand_006_neg', - 'raidz_expand_007_neg'] -tags = ['functional', 'raidz'] -timeout = 1200 - -[tests/functional/redundancy] -tests = ['redundancy_draid', 'redundancy_draid1', 'redundancy_draid2', - 'redundancy_draid3', 'redundancy_draid_damaged1', - 'redundancy_draid_damaged2', 'redundancy_draid_spare1', - 'redundancy_draid_spare2', 'redundancy_draid_spare3', 'redundancy_mirror', - 'redundancy_raidz', 'redundancy_raidz1', 'redundancy_raidz2', - 'redundancy_raidz3', 'redundancy_stripe'] -tags = ['functional', 'redundancy'] -timeout = 1200 - -[tests/functional/refquota] -tests = ['refquota_001_pos', 'refquota_002_pos', 'refquota_003_pos', - 'refquota_004_pos', 'refquota_005_pos', 'refquota_006_neg', - 'refquota_007_neg', 'refquota_008_neg'] -tags = ['functional', 'refquota'] - -[tests/functional/refreserv] -tests = ['refreserv_001_pos', 'refreserv_002_pos', 'refreserv_003_pos', - 'refreserv_004_pos', 'refreserv_005_pos', 'refreserv_multi_raidz', - 'refreserv_raidz'] -tags = ['functional', 'refreserv'] - -[tests/functional/removal] -pre = -tests = ['removal_all_vdev', 'removal_cancel', 'removal_check_space', - 'removal_condense_export', 'removal_multiple_indirection', - 'removal_nopwrite', 'removal_remap_deadlists', - 'removal_resume_export', 'removal_sanity', 'removal_with_add', - 'removal_with_create_fs', 'removal_with_dedup', - 'removal_with_errors', 'removal_with_export', 'removal_with_indirect', - 'removal_with_ganging', 'removal_with_faulted', - 'removal_with_remove', 'removal_with_scrub', 'removal_with_send', - 'removal_with_send_recv', 'removal_with_snapshot', - 'removal_with_write', 'removal_with_zdb', 'remove_expanded', - 'remove_mirror', 'remove_mirror_sanity', 'remove_raidz', - 'remove_indirect', 'remove_attach_mirror', 'removal_reservation'] -tags = ['functional', 'removal'] - -[tests/functional/rename_dirs] -tests = ['rename_dirs_001_pos'] -tags = ['functional', 'rename_dirs'] - -[tests/functional/replacement] -tests = ['attach_import', 'attach_multiple', 'attach_rebuild', - 'attach_resilver', 'detach', 'rebuild_disabled_feature', - 'rebuild_multiple', 'rebuild_raidz', 'replace_import', 'replace_rebuild', - 'replace_resilver', 'resilver_restart_001', 'resilver_restart_002', - 'scrub_cancel'] -tags = ['functional', 'replacement'] - -[tests/functional/reservation] -tests = ['reservation_001_pos', 'reservation_002_pos', 'reservation_003_pos', - 'reservation_004_pos', 'reservation_005_pos', 'reservation_006_pos', - 'reservation_007_pos', 'reservation_008_pos', 'reservation_009_pos', - 'reservation_010_pos', 'reservation_011_pos', 'reservation_012_pos', - 'reservation_013_pos', 'reservation_014_pos', 'reservation_015_pos', - 'reservation_016_pos', 'reservation_017_pos', 'reservation_018_pos', - 'reservation_019_pos', 'reservation_020_pos', 'reservation_021_neg', - 'reservation_022_pos'] -tags = ['functional', 'reservation'] - -[tests/functional/rootpool] -tests = ['rootpool_002_neg', 'rootpool_003_neg', 'rootpool_007_pos'] -tags = ['functional', 'rootpool'] - -[tests/functional/rsend] -tests = ['recv_dedup', 'recv_dedup_encrypted_zvol', 'rsend_001_pos', - 'rsend_002_pos', 'rsend_003_pos', 'rsend_004_pos', 'rsend_005_pos', - 'rsend_006_pos', 'rsend_007_pos', 'rsend_008_pos', 'rsend_009_pos', - 'rsend_010_pos', 'rsend_011_pos', 'rsend_012_pos', 'rsend_013_pos', - 'rsend_014_pos', 'rsend_016_neg', 'rsend_019_pos', 'rsend_020_pos', - 'rsend_021_pos', 'rsend_022_pos', 'rsend_024_pos', 'rsend_025_pos', - 'rsend_026_neg', 'rsend_027_pos', 'rsend_028_neg', 'rsend_029_neg', - 'rsend_030_pos', 'rsend_031_pos', 'send-c_verify_ratio', - 'send-c_verify_contents', 'send-c_props', 'send-c_incremental', - 'send-c_volume', 'send-c_zstream_recompress', 'send-c_zstreamdump', - 'send-c_lz4_disabled', 'send-c_recv_lz4_disabled', - 'send-c_mixed_compression', 'send-c_stream_size_estimate', - 'send-c_embedded_blocks', 'send-c_resume', 'send-cpL_varied_recsize', - 'send-c_recv_dedup', 'send-L_toggle', 'send_encrypted_incremental', - 'send_encrypted_freeobjects', 'send_encrypted_hierarchy', - 'send_encrypted_props', 'send_encrypted_truncated_files', - 'send_freeobjects', 'send_realloc_files', 'send_realloc_encrypted_files', - 'send_spill_block', 'send_holds', 'send_hole_birth', 'send_mixed_raw', - 'send-wR_encrypted_zvol', 'send_partial_dataset', 'send_invalid', - 'send_doall', 'send_raw_spill_block', 'send_raw_ashift', - 'send_raw_large_blocks'] -tags = ['functional', 'rsend'] - -[tests/functional/scrub_mirror] -tests = ['scrub_mirror_001_pos', 'scrub_mirror_002_pos', - 'scrub_mirror_003_pos', 'scrub_mirror_004_pos'] -tags = ['functional', 'scrub_mirror'] - -[tests/functional/slog] -tests = ['slog_001_pos', 'slog_002_pos', 'slog_003_pos', 'slog_004_pos', - 'slog_005_pos', 'slog_006_pos', 'slog_007_pos', 'slog_008_neg', - 'slog_009_neg', 'slog_010_neg', 'slog_011_neg', 'slog_012_neg', - 'slog_013_pos', 'slog_014_pos', 'slog_015_neg', 'slog_replay_fs_001', - 'slog_replay_fs_002', 'slog_replay_volume', 'slog_016_pos'] -tags = ['functional', 'slog'] - -[tests/functional/snapshot] -tests = ['clone_001_pos', 'rollback_001_pos', 'rollback_002_pos', - 'rollback_003_pos', 'snapshot_001_pos', 'snapshot_002_pos', - 'snapshot_003_pos', 'snapshot_004_pos', 'snapshot_005_pos', - 'snapshot_006_pos', 'snapshot_007_pos', 'snapshot_008_pos', - 'snapshot_009_pos', 'snapshot_010_pos', 'snapshot_011_pos', - 'snapshot_012_pos', 'snapshot_013_pos', 'snapshot_014_pos', - 'snapshot_017_pos', 'snapshot_018_pos'] -tags = ['functional', 'snapshot'] - -[tests/functional/snapused] -tests = ['snapused_001_pos', 'snapused_002_pos', 'snapused_003_pos', - 'snapused_004_pos', 'snapused_005_pos'] -tags = ['functional', 'snapused'] - -[tests/functional/sparse] -tests = ['sparse_001_pos'] -tags = ['functional', 'sparse'] - -[tests/functional/stat] -tests = ['stat_001_pos'] -tags = ['functional', 'stat'] - -[tests/functional/suid] -tests = ['suid_write_to_suid', 'suid_write_to_sgid', 'suid_write_to_suid_sgid', - 'suid_write_to_none', 'suid_write_zil_replay'] -tags = ['functional', 'suid'] - -[tests/functional/trim] -tests = ['autotrim_integrity', 'autotrim_config', 'autotrim_trim_integrity', - 'trim_integrity', 'trim_config', 'trim_l2arc'] -tags = ['functional', 'trim'] - -[tests/functional/truncate] -tests = ['truncate_001_pos', 'truncate_002_pos', 'truncate_timestamps'] -tags = ['functional', 'truncate'] - -[tests/functional/upgrade] -tests = ['upgrade_userobj_001_pos', 'upgrade_readonly_pool'] -tags = ['functional', 'upgrade'] - -[tests/functional/userquota] -tests = [ - 'userquota_001_pos', 'userquota_002_pos', 'userquota_003_pos', - 'userquota_004_pos', 'userquota_005_neg', 'userquota_006_pos', - 'userquota_007_pos', 'userquota_008_pos', 'userquota_009_pos', - 'userquota_010_pos', 'userquota_011_pos', 'userquota_012_neg', - 'userspace_001_pos', 'userspace_002_pos', 'userspace_encrypted', - 'userspace_send_encrypted', 'userspace_encrypted_13709'] -tags = ['functional', 'userquota'] - -[tests/functional/vdev_disk:Linux] -pre = -post = -tests = ['page_alignment'] -tags = ['functional', 'vdev_disk'] - -[tests/functional/vdev_zaps] -tests = ['vdev_zaps_001_pos', 'vdev_zaps_002_pos', 'vdev_zaps_003_pos', - 'vdev_zaps_004_pos', 'vdev_zaps_005_pos', 'vdev_zaps_006_pos', - 'vdev_zaps_007_pos'] -tags = ['functional', 'vdev_zaps'] - -[tests/functional/write_dirs] -tests = ['write_dirs_001_pos', 'write_dirs_002_pos'] -tags = ['functional', 'write_dirs'] - -[tests/functional/xattr] -tests = ['xattr_001_pos', 'xattr_002_neg', 'xattr_003_neg', 'xattr_004_pos', - 'xattr_005_pos', 'xattr_006_pos', 'xattr_007_neg', - 'xattr_011_pos', 'xattr_012_pos', 'xattr_013_pos', 'xattr_compat'] -tags = ['functional', 'xattr'] - -[tests/functional/zvol/zvol_ENOSPC] -tests = ['zvol_ENOSPC_001_pos'] -tags = ['functional', 'zvol', 'zvol_ENOSPC'] - -[tests/functional/zvol/zvol_cli] -tests = ['zvol_cli_001_pos', 'zvol_cli_002_pos', 'zvol_cli_003_neg'] -tags = ['functional', 'zvol', 'zvol_cli'] - -[tests/functional/zvol/zvol_misc] -tests = ['zvol_misc_002_pos', 'zvol_misc_hierarchy', 'zvol_misc_rename_inuse', - 'zvol_misc_snapdev', 'zvol_misc_trim', 'zvol_misc_volmode', 'zvol_misc_zil'] -tags = ['functional', 'zvol', 'zvol_misc'] - -[tests/functional/zvol/zvol_stress] -tests = ['zvol_stress'] -tags = ['functional', 'zvol', 'zvol_stress'] - -[tests/functional/zvol/zvol_swap] -tests = ['zvol_swap_001_pos', 'zvol_swap_002_pos', 'zvol_swap_004_pos'] -tags = ['functional', 'zvol', 'zvol_swap'] - -[tests/functional/libzfs] -tests = ['many_fds', 'libzfs_input'] -tags = ['functional', 'libzfs'] - -[tests/functional/log_spacemap] -tests = ['log_spacemap_import_logs'] -pre = -post = -tags = ['functional', 'log_spacemap'] - -[tests/functional/l2arc] -tests = ['l2arc_arcstats_pos', 'l2arc_mfuonly_pos', 'l2arc_l2miss_pos', - 'persist_l2arc_001_pos', 'persist_l2arc_002_pos', - 'persist_l2arc_003_neg', 'persist_l2arc_004_pos', 'persist_l2arc_005_pos'] -tags = ['functional', 'l2arc'] -[tests/functional/zpool_influxdb] -tests = ['zpool_influxdb'] -tags = ['functional', 'zpool_influxdb'] diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index a0b74ef4a8c6..ddbd6375e2e3 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -22,203 +22,11 @@ failsafe = callbacks/zfs_failsafe outputdir = /var/tmp/test_results tags = ['functional'] -[tests/functional/acl/posix:Linux] -tests = ['posix_001_pos', 'posix_002_pos', 'posix_003_pos', 'posix_004_pos'] -tags = ['functional', 'acl', 'posix'] - -[tests/functional/acl/posix-sa:Linux] -tests = ['posix_001_pos', 'posix_002_pos', 'posix_003_pos', 'posix_004_pos'] -tags = ['functional', 'acl', 'posix-sa'] - -[tests/functional/atime:Linux] -tests = ['atime_003_pos', 'root_relatime_on'] -tags = ['functional', 'atime'] - -[tests/functional/block_cloning:Linux] -tests = ['block_cloning_ficlone', 'block_cloning_ficlonerange', - 'block_cloning_ficlonerange_partial', 'block_cloning_disabled_ficlone', - 'block_cloning_disabled_ficlonerange'] -tags = ['functional', 'block_cloning'] - -[tests/functional/chattr:Linux] -tests = ['chattr_001_pos', 'chattr_002_neg'] -tags = ['functional', 'chattr'] - -[tests/functional/cli_root/zfs:Linux] -tests = ['zfs_003_neg'] -tags = ['functional', 'cli_root', 'zfs'] - -[tests/functional/cli_root/zfs_mount:Linux] -tests = ['zfs_mount_006_pos', 'zfs_mount_008_pos', 'zfs_mount_013_pos', - 'zfs_mount_014_neg', 'zfs_multi_mount'] -tags = ['functional', 'cli_root', 'zfs_mount'] - [tests/functional/cli_root/zfs_share:Linux] -tests = ['zfs_share_005_pos', 'zfs_share_007_neg', 'zfs_share_009_neg', - 'zfs_share_012_pos', 'zfs_share_013_pos'] +tests = ['zfs_share_005_pos'] tags = ['functional', 'cli_root', 'zfs_share'] -[tests/functional/cli_root/zfs_unshare:Linux] -tests = ['zfs_unshare_008_pos'] -tags = ['functional', 'cli_root', 'zfs_unshare'] - -[tests/functional/cli_root/zfs_sysfs:Linux] -tests = ['zfeature_set_unsupported', 'zfs_get_unsupported', - 'zfs_set_unsupported', 'zfs_sysfs_live', 'zpool_get_unsupported', - 'zpool_set_unsupported'] -tags = ['functional', 'cli_root', 'zfs_sysfs'] - -[tests/functional/cli_root/zpool_add:Linux] -tests = ['add_nested_replacing_spare'] -tags = ['functional', 'cli_root', 'zpool_add'] - -[tests/functional/cli_root/zpool_expand:Linux] -tests = ['zpool_expand_001_pos', 'zpool_expand_002_pos', - 'zpool_expand_003_neg', 'zpool_expand_004_pos', 'zpool_expand_005_pos'] -tags = ['functional', 'cli_root', 'zpool_expand'] - -[tests/functional/cli_root/zpool_import:Linux] -tests = ['zpool_import_hostid_changed', - 'zpool_import_hostid_changed_unclean_export', - 'zpool_import_hostid_changed_cachefile', - 'zpool_import_hostid_changed_cachefile_unclean_export'] -tags = ['functional', 'cli_root', 'zpool_import'] - -[tests/functional/cli_root/zpool_reopen:Linux] -tests = ['zpool_reopen_001_pos', 'zpool_reopen_002_pos', - 'zpool_reopen_003_pos', 'zpool_reopen_004_pos', 'zpool_reopen_005_pos', - 'zpool_reopen_006_neg', 'zpool_reopen_007_pos'] -tags = ['functional', 'cli_root', 'zpool_reopen'] - -[tests/functional/cli_root/zpool_split:Linux] -tests = ['zpool_split_wholedisk'] -tags = ['functional', 'cli_root', 'zpool_split'] - -[tests/functional/compression:Linux] -tests = ['compress_004_pos'] -tags = ['functional', 'compression'] - -[tests/functional/devices:Linux] -tests = ['devices_001_pos', 'devices_002_neg', 'devices_003_pos'] -tags = ['functional', 'devices'] - -[tests/functional/events:Linux] -tests = ['events_001_pos', 'events_002_pos', 'zed_rc_filter', 'zed_fd_spill', - 'zed_cksum_reported', 'zed_cksum_config', 'zed_io_config', - 'zed_slow_io', 'zed_slow_io_many_vdevs'] -tags = ['functional', 'events'] - -[tests/functional/fadvise:Linux] -tests = ['fadvise_sequential'] -tags = ['functional', 'fadvise'] - -[tests/functional/fallocate:Linux] -tests = ['fallocate_prealloc', 'fallocate_zero-range'] -tags = ['functional', 'fallocate'] - -[tests/functional/fault:Linux] -tests = ['auto_offline_001_pos', 'auto_online_001_pos', 'auto_online_002_pos', - 'auto_replace_001_pos', 'auto_replace_002_pos', 'auto_spare_001_pos', - 'auto_spare_002_pos', 'auto_spare_multiple', 'auto_spare_ashift', - 'auto_spare_shared', 'decrypt_fault', 'decompress_fault', - 'scrub_after_resilver', 'zpool_status_-s'] -tags = ['functional', 'fault'] - -[tests/functional/features/large_dnode:Linux] -tests = ['large_dnode_002_pos', 'large_dnode_006_pos', 'large_dnode_008_pos'] -tags = ['functional', 'features', 'large_dnode'] - -[tests/functional/io:Linux] -tests = ['libaio', 'io_uring'] -tags = ['functional', 'io'] - -[tests/functional/largest_pool:Linux] -tests = ['largest_pool_001_pos'] -pre = -post = -tags = ['functional', 'largest_pool'] - -[tests/functional/mmap:Linux] -tests = ['mmap_libaio_001_pos', 'mmap_sync_001_pos'] -tags = ['functional', 'mmap'] - -[tests/functional/mmp:Linux] -tests = ['mmp_on_thread', 'mmp_on_uberblocks', 'mmp_on_off', 'mmp_interval', - 'mmp_active_import', 'mmp_inactive_import', 'mmp_exported_import', - 'mmp_write_uberblocks', 'mmp_reset_interval', 'multihost_history', - 'mmp_on_zdb', 'mmp_write_distribution', 'mmp_hostid'] -tags = ['functional', 'mmp'] - -[tests/functional/mount:Linux] -tests = ['umount_unlinked_drain'] -tags = ['functional', 'mount'] - -[tests/functional/pam:Linux] -tests = ['pam_basic', 'pam_change_unmounted', 'pam_nounmount', 'pam_recursive', - 'pam_short_password'] -tags = ['functional', 'pam'] - -[tests/functional/procfs:Linux] -tests = ['procfs_list_basic', 'procfs_list_concurrent_readers', - 'procfs_list_stale_read', 'pool_state'] -tags = ['functional', 'procfs'] - -[tests/functional/projectquota:Linux] -tests = ['projectid_001_pos', 'projectid_002_pos', 'projectid_003_pos', - 'projectquota_001_pos', 'projectquota_002_pos', 'projectquota_003_pos', - 'projectquota_004_neg', 'projectquota_005_pos', 'projectquota_006_pos', - 'projectquota_007_pos', 'projectquota_008_pos', 'projectquota_009_pos', - 'projectspace_001_pos', 'projectspace_002_pos', 'projectspace_003_pos', - 'projectspace_004_pos', - 'projecttree_001_pos', 'projecttree_002_pos', 'projecttree_003_neg'] -tags = ['functional', 'projectquota'] - -[tests/functional/dos_attributes:Linux] -tests = ['read_dos_attrs_001', 'write_dos_attrs_001'] -tags = ['functional', 'dos_attributes'] - -[tests/functional/renameat2:Linux] -tests = ['renameat2_noreplace', 'renameat2_exchange', 'renameat2_whiteout'] -tags = ['functional', 'renameat2'] - -[tests/functional/rsend:Linux] -tests = ['send_realloc_dnode_size', 'send_encrypted_files'] -tags = ['functional', 'rsend'] - -[tests/functional/simd:Linux] -pre = -post = -tests = ['simd_supported'] -tags = ['functional', 'simd'] - -[tests/functional/snapshot:Linux] -tests = ['snapshot_015_pos', 'snapshot_016_pos'] -tags = ['functional', 'snapshot'] - -[tests/functional/tmpfile:Linux] -tests = ['tmpfile_001_pos', 'tmpfile_002_pos', 'tmpfile_003_pos', - 'tmpfile_stat_mode'] -tags = ['functional', 'tmpfile'] - -[tests/functional/upgrade:Linux] -tests = ['upgrade_projectquota_001_pos'] -tags = ['functional', 'upgrade'] - -[tests/functional/user_namespace:Linux] -tests = ['user_namespace_001', 'user_namespace_002', 'user_namespace_003', - 'user_namespace_004'] -tags = ['functional', 'user_namespace'] - -[tests/functional/userquota:Linux] -tests = ['groupspace_001_pos', 'groupspace_002_pos', 'groupspace_003_pos', - 'userquota_013_pos', 'userspace_003_pos'] -tags = ['functional', 'userquota'] - -[tests/functional/zvol/zvol_misc:Linux] -tests = ['zvol_misc_fua'] -tags = ['functional', 'zvol', 'zvol_misc'] +# [tests/functional/mmp:Linux] +# tests = ['mmp_active_import'] +# tags = ['functional', 'mmp'] -[tests/functional/idmap_mount:Linux] -tests = ['idmap_mount_001', 'idmap_mount_002', 'idmap_mount_003', - 'idmap_mount_004', 'idmap_mount_005'] -tags = ['functional', 'idmap_mount'] diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh index 85854085f560..54736b6e1b4f 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh @@ -67,6 +67,7 @@ log_onexit cleanup cleanup + typeset -i i=0 while (( i < ${#shareopts[*]} )) do @@ -82,6 +83,10 @@ do IFS=',' read -r _ option _ <<<"$option" fi + log_note "exportfs: $(exportfs -v), $(ls -l /usr/sbin/exportfs)" + log_note "$(service nfs-server status)" + log_note "$(mount)" + log_must eval "showshares_nfs | grep -q \"$option\"" ((i = i + 1)) diff --git a/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in b/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in index 7fa14161a538..84c2b89e3014 100755 --- a/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in +++ b/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in @@ -34,8 +34,14 @@ fi verify_runnable "global" log_assert "Verify the nvlist and libzfs_core Python unittest run successfully" +echo -e "import sys\nprint (sys.path)" > /tmp/file.py +log_note "$(/usr/bin/python3.9 /tmp/file.py)" +log_not "$(env)" + + # log_must buffers stderr, which interacts badly with # no-output timeouts on CI runners +log_note "Python is "@PYTHON@ @PYTHON@ -m unittest --verbose \ libzfs_core.test.test_nvlist.TestNVList \ libzfs_core.test.test_libzfs_core.ZFSTest ||