]>
Commit | Line | Data |
---|---|---|
6bb24f4d BB |
1 | #!/bin/ksh -p |
2 | # | |
3 | # CDDL HEADER START | |
4 | # | |
5 | # The contents of this file are subject to the terms of the | |
6 | # Common Development and Distribution License (the "License"). | |
7 | # You may not use this file except in compliance with the License. | |
8 | # | |
9 | # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | |
10 | # or http://www.opensolaris.org/os/licensing. | |
11 | # See the License for the specific language governing permissions | |
12 | # and limitations under the License. | |
13 | # | |
14 | # When distributing Covered Code, include this CDDL HEADER in each | |
15 | # file and include the License file at usr/src/OPENSOLARIS.LICENSE. | |
16 | # If applicable, add the following below this CDDL HEADER, with the | |
17 | # fields enclosed by brackets "[]" replaced with your own identifying | |
18 | # information: Portions Copyright [yyyy] [name of copyright owner] | |
19 | # | |
20 | # CDDL HEADER END | |
21 | # | |
22 | ||
23 | # | |
24 | # Copyright 2009 Sun Microsystems, Inc. All rights reserved. | |
25 | # Use is subject to license terms. | |
26 | # | |
27 | ||
c1d9abf9 JWK |
28 | # |
29 | # Copyright (c) 2016 by Delphix. All rights reserved. | |
30 | # | |
31 | ||
6bb24f4d BB |
32 | . $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib |
33 | ||
34 | # | |
35 | # DESCRIPTION: | |
36 | # Setting the invalid option and properties, 'zfs get' should failed. | |
37 | # | |
38 | # STRATEGY: | |
39 | # 1. Create pool, filesystem, volume and snapshot. | |
40 | # 2. Getting incorrect combination by invalid parameters | |
41 | # 3. Using the combination as the parameters of 'zfs get' to check the | |
42 | # command line return value. | |
43 | # | |
44 | ||
45 | verify_runnable "both" | |
46 | ||
47 | typeset val_opts=(p r H) | |
48 | typeset v_props=(type used available creation volsize referenced compressratio \ | |
49 | mounted origin recordsize quota reservation mountpoint sharenfs checksum \ | |
7839c4b5 | 50 | compression atime devices exec readonly setuid snapdir version \ |
6bb24f4d | 51 | aclinherit canmount primarycache secondarycache \ |
7839c4b5 MM |
52 | usedbychildren usedbydataset usedbyrefreservation usedbysnapshots) |
53 | if is_freebsd; then | |
54 | typeset v_props_os=(jailed aclmode) | |
55 | else | |
56 | typeset v_props_os=(zoned acltype) | |
57 | fi | |
6bb24f4d BB |
58 | typeset userquota_props=(userquota@root groupquota@root userused@root \ |
59 | groupused@root) | |
7839c4b5 MM |
60 | typeset val_props=("${v_props[@]}" \ |
61 | "${v_props_os[@]}" \ | |
62 | "${userquota_props[@]}") | |
6bb24f4d BB |
63 | set -f # Force shell does not parse '?' and '*' as the wildcard |
64 | typeset inval_opts=(P R h ? *) | |
65 | typeset inval_props=(Type 0 ? * -on --on readonl time USED RATIO MOUNTED) | |
66 | ||
67 | typeset dataset=($TESTPOOL/$TESTFS $TESTPOOL/$TESTCTR $TESTPOOL/$TESTVOL \ | |
68 | $TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTVOL@$TESTSNAP) | |
69 | ||
70 | typeset -i opt_numb=6 | |
71 | typeset -i prop_numb=12 | |
72 | ||
73 | val_opts_str=$(gen_option_str "${val_opts[*]}" "-" "" $opt_numb) | |
74 | val_props_str=$(gen_option_str "${val_props[*]}" "" "," $prop_numb) | |
6bb24f4d BB |
75 | |
76 | inval_opts_str=$(gen_option_str "${inval_opts[*]}" "-" "" $opt_numb) | |
77 | inval_props_str=$(gen_option_str "${inval_props[*]}" "" "," $prop_numb) | |
78 | ||
aeacdefe GM |
79 | typeset val_bookmark_props=(creation) |
80 | typeset bookmark=($TESTPOOL/$TESTFS#$TESTBKMARK $TESTPOOL/$TESTVOL#$TESTBKMARK) | |
81 | ||
6bb24f4d BB |
82 | # |
83 | # Test different options and properties combination. | |
84 | # | |
85 | # $1 options | |
86 | # $2 properties | |
87 | # | |
88 | function test_options | |
89 | { | |
90 | typeset opts=$1 | |
91 | typeset props=$2 | |
92 | ||
93 | for dst in ${dataset[@]}; do | |
94 | for opt in $opts; do | |
95 | for prop in $props; do | |
c1d9abf9 | 96 | zfs get $opt -- $prop $dst > /dev/null 2>&1 |
6bb24f4d BB |
97 | ret=$? |
98 | if [[ $ret == 0 ]]; then | |
c1d9abf9 | 99 | log_fail "zfs get $opt -- $prop " \ |
37bb2fc7 | 100 | "$dst unexpectedly succeeded." |
6bb24f4d BB |
101 | fi |
102 | done | |
103 | done | |
104 | done | |
105 | } | |
106 | ||
aeacdefe GM |
107 | # |
108 | # Test different options and properties combination for bookmarks. | |
109 | # | |
110 | # $1 options | |
111 | # $2 properties | |
112 | # | |
113 | function test_options_bookmarks | |
114 | { | |
115 | typeset opts=$1 | |
116 | typeset props=$2 | |
117 | ||
118 | for dst in ${bookmark[@]}; do | |
119 | for opt in $opts; do | |
120 | for prop in $props; do | |
c1d9abf9 | 121 | zfs get $opt -- $prop $dst > /dev/null 2>&1 |
aeacdefe GM |
122 | ret=$? |
123 | if [[ $ret == 0 ]]; then | |
c1d9abf9 | 124 | log_fail "zfs get $opt -- $prop " \ |
aeacdefe GM |
125 | "$dst unexpectedly succeeded." |
126 | fi | |
127 | done | |
128 | done | |
129 | done | |
130 | } | |
131 | ||
6bb24f4d BB |
132 | log_assert "Setting the invalid option and properties, 'zfs get' should be \ |
133 | failed." | |
134 | log_onexit cleanup | |
135 | ||
136 | # Create filesystem and volume's snapshot | |
137 | create_snapshot $TESTPOOL/$TESTFS $TESTSNAP | |
138 | create_snapshot $TESTPOOL/$TESTVOL $TESTSNAP | |
139 | ||
aeacdefe GM |
140 | # Create filesystem and volume's bookmark |
141 | create_bookmark $TESTPOOL/$TESTFS $TESTSNAP $TESTBKMARK | |
142 | create_bookmark $TESTPOOL/$TESTVOL $TESTSNAP $TESTBKMARK | |
143 | ||
6bb24f4d BB |
144 | log_note "Valid options + invalid properties, 'zfs get' should fail." |
145 | test_options "$val_opts_str" "$inval_props_str" | |
e55ebf6a | 146 | test_options_bookmarks "$val_opts_str" "$inval_props_str" |
6bb24f4d BB |
147 | |
148 | log_note "Invalid options + valid properties, 'zfs get' should fail." | |
149 | test_options "$inval_opts_str" "$val_props_str" | |
e55ebf6a | 150 | test_options_bookmarks "$inval_opts_str" "$val_bookmark_props" |
6bb24f4d BB |
151 | |
152 | log_note "Invalid options + invalid properties, 'zfs get' should fail." | |
153 | test_options "$inval_opts_str" "$inval_props_str" | |
aeacdefe | 154 | test_options_bookmarks "$inval_opts_str" "$inval_props_str" |
6bb24f4d BB |
155 | |
156 | log_pass "Setting the invalid options to dataset, 'zfs get' pass." |