aboutsummaryrefslogtreecommitdiff
path: root/sys/contrib/openzfs/tests/zfs-tests/include/zpool_script.shlib
diff options
context:
space:
mode:
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.shlib49
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
+}