| # |
| # 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 |
| } |