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