diff options
Diffstat (limited to 'sys/contrib/openzfs/tests/zfs-tests/include/zpool_script.shlib')
-rw-r--r-- | sys/contrib/openzfs/tests/zfs-tests/include/zpool_script.shlib | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sys/contrib/openzfs/tests/zfs-tests/include/zpool_script.shlib b/sys/contrib/openzfs/tests/zfs-tests/include/zpool_script.shlib new file mode 100644 index 000000000000..10bc0cc26128 --- /dev/null +++ b/sys/contrib/openzfs/tests/zfs-tests/include/zpool_script.shlib @@ -0,0 +1,49 @@ +# +# Common functions used by the zpool_status and zpool_iostat tests for running +# scripts with the -c option. +# +# Copyright (c) 2017 Lawrence Livermore National Security, LLC. +# + +. $STF_SUITE/include/libtest.shlib + +function test_zpool_script { + script="$1" + testpool="$2" + cmd="$3" + wholecmd="$cmd $script $testpool" + out="$($wholecmd)" + + # Default number of columns that get printed without -c + if echo "$cmd" | grep -q iostat ; then + # iostat + dcols=7 + else + + # status + dcols=5 + fi + + # Get the new column name that the script created + col="$(echo "$out" | \ + awk '/^pool +alloc +free +read +write +/ {print $8} \ + /NAME +STATE +READ +WRITE +CKSUM/ {print $6}')" + + if [ -z "$col" ] ; then + log_fail "'$wholecmd' created no new columns" + fi + + # Count the number of columns for each vdev. Each script should produce + # at least one new column value. Even if scripts return blank, zpool + # will convert the blank to a '-' to make things awk-able. Normal + # zpool iostat -v output is 7 columns, so if the script ran correctly + # we should see more than that. + if ! newcols=$(echo "$out" | \ + awk '/\/dev/{print NF-'$dcols'; if (NF <= '$dcols') {exit 1}}' | \ + head -n 1) ; \ + then + log_fail "'$wholecmd' didn't create a new column value" + else + log_note "'$wholecmd' passed ($newcols new columns)" + fi +} |