diff options
Diffstat (limited to 'sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.kshlib')
-rw-r--r-- | sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.kshlib | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.kshlib b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.kshlib new file mode 100644 index 000000000000..03c9d1f07a87 --- /dev/null +++ b/sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.kshlib @@ -0,0 +1,118 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# +# Copyright 2008 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# + +# +# Copyright (c) 2013, 2016 by Delphix. All rights reserved. +# + +. $STF_SUITE/include/libtest.shlib + +# +# A function that verifies sort order. It takes as input +# a command, which gets executed. We then iterate over the results +# comparing that the sort order passed in via the list +# +function verify_sort { # command list name + + # now verify we've sorted by creation date: + typeset CMD=$1 + typeset list=$2 + typeset name=$3 + + typeset -i RET=0 + typeset -i index=1 + + # run the command to verify that it works + log_must eval "$CMD > /dev/null" + + # Now check the sort order + for dataset in $( $CMD ) + do + ACTUAL=$(basename $dataset) + if [ "$dataset" != "$TESTPOOL/$TESTFS" ] + then + EXPECTED=$(echo $list | awk "{print \$$index}") + if [ "$ACTUAL" != "$EXPECTED" ] + then + log_note "WARNING:" \ + "'$ACTUAL' does not equal '$EXPECTED'" + log_fail "ERROR: Sort by $name fails." + fi + + ((index = index + 1)) + fi + done + + # finally check to see if we have the expected number of elements + if [ $index -ne $(echo $list | awk '{print split($0,arr)+1}') ] + then + log_fail "Warning: " \ + "unexpected number of filesystems found in list output!" + fi +} + +# A function that verifies reverse sort order. It takes as input +# a command, which gets executed. We then iterate over the results +# comparing that the sort order passed in via the list +# +function verify_reverse_sort { # command list name + + typeset CMD=$1 + typeset list=$2 + typeset name=$3 + + # set our index to the be number of elements in the list + typeset -i index=$(echo $list | awk '{print split($0,arr)}') + + log_note "Checking reverse sort by '$name'," \ + "expecting the reverse of '$list'" + log_must eval "$CMD > /dev/null" + + for dataset in $( $CMD ) + do + ACTUAL=$(basename $dataset) + if [ "$dataset" != "$TESTPOOL/$TESTFS" ] + then + EXPECTED=$(echo $list | awk "{print \$$index}") + if [ "$ACTUAL" != "$EXPECTED" ] + then + log_note "Warning:" \ + "'$ACTUAL' does not equal to" \ + "the reverse of '$EXPECTED'" + log_fail "ERROR: Reverse sort by '$name' fails." + fi + + ((index = index - 1)) + fi + done + + # finally check to see if we have the expected number of elements + if [ $index -ne 0 ] + then + log_fail "Warning: " \ + "unexpected number of filesystems found in list output!" + fi +} |