-
Notifications
You must be signed in to change notification settings - Fork 752
/
zfs_get_005_neg.ksh
150 lines (127 loc) · 4.46 KB
/
zfs_get_005_neg.ksh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/bin/ksh -p
#
# 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 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
# Copyright (c) 2016 by Delphix. All rights reserved.
#
. $STF_SUITE/tests/functional/cli_root/zfs_get/zfs_get_common.kshlib
#
# DESCRIPTION:
# Setting the invalid option and properties, 'zfs get' should failed.
#
# STRATEGY:
# 1. Create pool, filesystem, volume and snapshot.
# 2. Getting incorrect combination by invalid parameters
# 3. Using the combination as the parameters of 'zfs get' to check the
# command line return value.
#
verify_runnable "both"
typeset val_opts=(p r H)
typeset v_props=(type used available creation volsize referenced compressratio \
mounted origin recordsize quota reservation mountpoint sharenfs checksum \
compression atime devices exec readonly setuid zoned snapdir aclmode \
aclinherit canmount primarycache secondarycache \
usedbychildren usedbydataset usedbyrefreservation usedbysnapshots version)
typeset userquota_props=(userquota@root groupquota@root userused@root \
groupused@root)
typeset val_props=("${v_props[@]}" "${userquota_props[@]}")
set -f # Force shell does not parse '?' and '*' as the wildcard
typeset inval_opts=(P R h ? *)
typeset inval_props=(Type 0 ? * -on --on readonl time USED RATIO MOUNTED)
typeset dataset=($TESTPOOL/$TESTFS $TESTPOOL/$TESTCTR $TESTPOOL/$TESTVOL \
$TESTPOOL/$TESTFS@$TESTSNAP $TESTPOOL/$TESTVOL@$TESTSNAP)
typeset -i opt_numb=6
typeset -i prop_numb=12
val_opts_str=$(gen_option_str "${val_opts[*]}" "-" "" $opt_numb)
val_props_str=$(gen_option_str "${val_props[*]}" "" "," $prop_numb)
inval_opts_str=$(gen_option_str "${inval_opts[*]}" "-" "" $opt_numb)
inval_props_str=$(gen_option_str "${inval_props[*]}" "" "," $prop_numb)
typeset val_bookmark_props=(creation)
typeset bookmark=($TESTPOOL/$TESTFS#$TESTBKMARK $TESTPOOL/$TESTVOL#$TESTBKMARK)
#
# Test different options and properties combination.
#
# $1 options
# $2 properties
#
function test_options
{
typeset opts=$1
typeset props=$2
for dst in ${dataset[@]}; do
for opt in $opts; do
for prop in $props; do
zfs get $opt -- $prop $dst > /dev/null 2>&1
ret=$?
if [[ $ret == 0 ]]; then
log_fail "zfs get $opt -- $prop " \
"$dst unexpectedly succeeded."
fi
done
done
done
}
#
# Test different options and properties combination for bookmarks.
#
# $1 options
# $2 properties
#
function test_options_bookmarks
{
typeset opts=$1
typeset props=$2
for dst in ${bookmark[@]}; do
for opt in $opts; do
for prop in $props; do
zfs get $opt -- $prop $dst > /dev/null 2>&1
ret=$?
if [[ $ret == 0 ]]; then
log_fail "zfs get $opt -- $prop " \
"$dst unexpectedly succeeded."
fi
done
done
done
}
log_assert "Setting the invalid option and properties, 'zfs get' should be \
failed."
log_onexit cleanup
# Create filesystem and volume's snapshot
create_snapshot $TESTPOOL/$TESTFS $TESTSNAP
create_snapshot $TESTPOOL/$TESTVOL $TESTSNAP
# Create filesystem and volume's bookmark
create_bookmark $TESTPOOL/$TESTFS $TESTSNAP $TESTBKMARK
create_bookmark $TESTPOOL/$TESTVOL $TESTSNAP $TESTBKMARK
log_note "Valid options + invalid properties, 'zfs get' should fail."
test_options "$val_opts_str" "$inval_props_str"
test_options_bookmarks "$val_opts_str" "$inval_props_str"
log_note "Invalid options + valid properties, 'zfs get' should fail."
test_options "$inval_opts_str" "$val_props_str"
test_options_bookmarks "$inval_opts_str" "$val_bookmark_props"
log_note "Invalid options + invalid properties, 'zfs get' should fail."
test_options "$inval_opts_str" "$inval_props_str"
test_options_bookmarks "$inval_opts_str" "$inval_props_str"
log_pass "Setting the invalid options to dataset, 'zfs get' pass."