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