]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tests/zfs-tests/tests/functional/cli_user/zfs_list/zfs_list.kshlib
Vendor import of openzfs master @ 184df27eef0abdc7ab2105b21257f753834b936b
[FreeBSD/FreeBSD.git] / tests / zfs-tests / tests / functional / cli_user / zfs_list / zfs_list.kshlib
1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21
22 #
23 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
24 # Use is subject to license terms.
25 #
26
27 #
28 # Copyright (c) 2013, 2016 by Delphix. All rights reserved.
29 #
30
31 . $STF_SUITE/include/libtest.shlib
32
33 #
34 # A function that verifies sort order. It takes as input
35 # a command, which gets executed. We then iterate over the results
36 # comparing that the sort order passed in via the list
37 #
38 function verify_sort { # command list name
39
40         # now verify we've sorted by creation date:
41         typeset CMD=$1
42         typeset list=$2
43         typeset name=$3
44
45         typeset -i RET=0
46         typeset -i index=1
47
48         # run the command to verify that it works
49         log_must eval "$CMD > /dev/null"
50
51         # Now check the sort order
52         for dataset in $( $CMD )
53         do
54                 ACTUAL=$(basename $dataset)
55                 if [ "$dataset" != "$TESTPOOL/$TESTFS" ]
56                 then
57                         EXPECTED=$(echo $list | awk "{print \$$index}")
58                         if [ "$ACTUAL" != "$EXPECTED" ]
59                         then
60                                 log_note "WARNING:" \
61                                         "'$ACTUAL' does not equal '$EXPECTED'"
62                                 log_fail "ERROR: Sort by $name fails."
63                         fi
64
65                         ((index = index + 1))
66                 fi
67         done
68
69         # finally check to see if we have the expected number of elements
70         if [ $index -ne $(echo $list | awk '{print split($0,arr)+1}') ]
71         then
72                 log_fail "Warning: " \
73                         "unexpected number of filesystems found in list output!"
74         fi
75 }
76
77 # A function that verifies reverse sort order. It takes as input
78 # a command, which gets executed. We then iterate over the results
79 # comparing that the sort order passed in via the list
80 #
81 function verify_reverse_sort { # command list name
82
83         typeset CMD=$1
84         typeset list=$2
85         typeset name=$3
86
87         # set our index to the be number of elements in the list
88         typeset -i index=$(echo $list | awk '{print split($0,arr)}')
89
90         log_note "Checking reverse sort by '$name'," \
91                 "expecting the reverse of '$list'"
92         log_must eval "$CMD > /dev/null"
93
94         for dataset in $( $CMD )
95         do
96                 ACTUAL=$(basename $dataset)
97                 if [ "$dataset" != "$TESTPOOL/$TESTFS" ]
98                 then
99                         EXPECTED=$(echo $list | awk "{print \$$index}")
100                         if [ "$ACTUAL" != "$EXPECTED" ]
101                         then
102                                 log_note "Warning:" \
103                                         "'$ACTUAL' does not equal to" \
104                                         "the reverse of '$EXPECTED'"
105                                 log_fail "ERROR: Reverse sort by '$name' fails."
106                         fi
107
108                         ((index = index - 1))
109                 fi
110         done
111
112         # finally check to see if we have the expected number of elements
113         if [ $index -ne 0 ]
114         then
115                 log_fail "Warning: " \
116                         "unexpected number of filesystems found in list output!"
117         fi
118 }