]>
Commit | Line | Data |
---|---|---|
645fb9cc TF |
1 | #!/bin/bash |
2 | ||
3 | BASETANK="share" | |
4 | DATE=`date "+%Y%m%d"` | |
5 | ||
6 | TEST_SMBFS=0 | |
7 | TEST_DESTROY=0 | |
8 | ||
9 | if [ -z "$1" ]; then | |
10 | echo "Usage: `basename $0` [unpack]<[smbfs][snapshot][all]>" | |
11 | exit 1 | |
12 | fi | |
13 | ||
14 | set_onoff() { | |
15 | type="$1" | |
16 | dataset="$2" | |
17 | toggle="$3" | |
18 | ||
19 | current=`zfs get -H $type -o value $dataset` | |
20 | if [ "$current" != "$toggle" ]; then | |
21 | run "zfs set $type=$toggle $dataset" | |
22 | fi | |
23 | } | |
24 | ||
25 | check_exists() { | |
26 | dataset="$1" | |
27 | ||
28 | extra="" | |
29 | [ -n "$2" ] && extra="$2" | |
30 | ||
31 | zfs get all "$dataset" > /dev/null 2>&1 | |
32 | if [ $? != 0 ]; then | |
33 | run "zfs create $extra $dataset" | |
34 | fi | |
35 | } | |
36 | ||
37 | check_shares() { | |
38 | if [ "$TEST_SMBFS" == "1" ]; then | |
39 | echo "Shares:" | |
40 | echo "=> usershare list:" | |
41 | net usershare list | |
42 | echo | |
43 | echo "=> /etc/dfs/sharetab:" | |
44 | cat /etc/dfs/sharetab | |
45 | echo | |
46 | fi | |
47 | ||
48 | sleep 2 | |
49 | } | |
50 | ||
51 | test_header() { | |
52 | echo "TEST: $*" | |
53 | echo "======================================" | |
54 | } | |
55 | ||
56 | run() { | |
57 | cmd="$*" | |
58 | ||
59 | echo "CMD: $cmd" | |
60 | $cmd | |
61 | } | |
62 | ||
63 | # --------- | |
64 | # Needs more work... | |
65 | if echo "$*" | grep -qi "unpack"; then | |
66 | zfs unmount -a | |
67 | zfs unshare -a | |
68 | run "zfs destroy -r $BASETANK/tests" | |
69 | ||
70 | sh /etc/init.d/zfs stop | |
71 | ||
72 | # for tid in `grep ^tid /proc/net/iet/volume | sed "s@.*:\([0-9].*\) name.*@\1@"` | |
73 | # do | |
74 | # ietadm --op delete --tid $tid | |
75 | # done | |
76 | ||
77 | set -e | |
78 | rmmod `lsmod | grep ^z | grep -v zlib_deflate | sed 's@ .*@@'` spl zlib_deflate | |
79 | ||
80 | pushd / > /dev/null | |
81 | [ -f "tmp/zfs.tgz" ] && tar xzf tmp/zfs.tgz && rm tmp/zfs.tgz | |
82 | [ -f "tmp/spl.tgz" ] && tar xzf tmp/spl.tgz && rm tmp/spl.tgz | |
83 | popd > /dev/null | |
84 | ||
85 | depmod -a | |
86 | ||
87 | sh /etc/init.d/zfs start | |
88 | set +e | |
89 | fi | |
90 | ||
91 | # --------- | |
92 | if echo "$*" | egrep -qi "smbfs|all"; then | |
93 | check_exists $BASETANK/tests | |
94 | ||
95 | TEST_SMBFS=1 | |
96 | ||
97 | test_header "Exists || Create" | |
98 | str= | |
99 | for volnr in 1 2 3; do | |
100 | check_exists $BASETANK/tests/smbfs$volnr | |
101 | ||
102 | str="$str $BASETANK/tests/smbfs$volnr" | |
103 | done | |
104 | run "zfs get sharesmb $str" | |
105 | ||
106 | # Set sharesmb=on | |
107 | test_header "Enable SMB share" | |
108 | for volnr in 1 2 3; do | |
109 | set_onoff sharesmb "$BASETANK/tests/smbfs$volnr" on | |
110 | check_shares | |
111 | done | |
112 | ||
113 | # Share all | |
114 | test_header "Share all (individually)" | |
115 | for volnr in 1 2 3; do | |
116 | run "zfs share $BASETANK/tests/smbfs$volnr" | |
117 | check_shares | |
118 | done | |
119 | ||
120 | # Unshare all | |
121 | test_header "Unshare all (individually)" | |
122 | for volnr in 1 2 3; do | |
123 | run "zfs unshare $BASETANK/tests/smbfs$volnr" | |
124 | check_shares | |
125 | done | |
126 | ||
127 | # Change mountpoint - first unshare and then share individual | |
128 | test_header "Change mount point (unshare ; share)" | |
129 | mkdir -p /tests | |
130 | set_onoff sharesmb "$str" off | |
131 | for volnr in 3 1 2; do | |
132 | run "zfs set mountpoint=/tests/smbfs$volnr $BASETANK/tests/smbfs$volnr" | |
133 | echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr" | |
134 | mount | grep ^$BASETANK/tests/smbfs$volnr | |
135 | echo | |
136 | ||
137 | run "zfs mount $BASETANK/tests/smbfs$volnr" | |
138 | echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr" | |
139 | mount | grep ^$BASETANK/tests/smbfs$volnr | |
140 | echo | |
141 | ||
142 | set_onoff sharesmb "$BASETANK/tests/smbfs$volnr" on | |
143 | check_shares | |
144 | ||
145 | run "zfs share $BASETANK/tests/smbfs$volnr" | |
146 | check_shares | |
147 | ||
148 | echo "-------------------" | |
149 | done | |
150 | ||
151 | # Change mountpoint - remounting | |
152 | test_header "Change mount point (remounting)" | |
153 | for volnr in 3 1 2; do | |
154 | run "zfs set mountpoint=/$BASETANK/tests/smbfs$volnr $BASETANK/tests/smbfs$volnr" | |
155 | echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr" | |
156 | mount | grep ^$BASETANK/tests/smbfs$volnr | |
157 | echo | |
158 | # => Doesn't seem to remount (!?) | |
159 | ||
160 | run "zfs mount $BASETANK/tests/smbfs$volnr" | |
161 | echo "CMD: mount | grep ^$BASETANK/tests/smbfs$volnr" | |
162 | mount | grep ^$BASETANK/tests/smbfs$volnr | |
163 | echo | |
164 | # => Doesn't seem to reshare (!?) | |
165 | ||
166 | check_shares | |
167 | ||
168 | run "zfs share $BASETANK/tests/smbfs$volnr" | |
169 | check_shares | |
170 | ||
171 | echo "-------------------" | |
172 | done | |
173 | fi | |
174 | ||
175 | # --------- | |
176 | if echo "$*" | egrep -qi "smbfs|all"; then | |
177 | test_header "Unshare + Share all" | |
178 | ||
179 | run "zfs share -a" ; check_shares | |
180 | run "zfs unshare -a" ; check_shares | |
181 | fi | |
182 | ||
183 | # --------- | |
184 | if echo "$*" | grep -qi "snapshot|all"; then | |
185 | test_header "Snapshots" | |
186 | ||
187 | echo ; echo "-------------------" | |
188 | check_exists $BASETANK/tests/destroy | |
189 | check_exists $BASETANK/tests/destroy/destroy1 | |
190 | run "zfs destroy -r $BASETANK/tests/destroy" | |
191 | ||
192 | echo ; echo "-------------------" | |
193 | check_exists $BASETANK/tests/destroy | |
194 | run "zfs snapshot $BASETANK/tests/destroy@$DATE" | |
195 | run "zfs destroy -r $BASETANK/tests/destroy" | |
196 | ||
197 | echo ; echo "-------------------" | |
198 | check_exists $BASETANK/tests/destroy | |
199 | run "zfs snapshot $BASETANK/tests/destroy@$DATE" | |
200 | run "zfs destroy -r $BASETANK/tests/destroy@$DATE" | |
201 | run "zfs destroy -r $BASETANK/tests/destroy" | |
202 | fi | |
203 | ||
204 | if echo "$*" | egrep -qi "smbfs|snapshot|all"; then | |
205 | test_header "Cleanup (Share all + Destroy all)" | |
206 | ||
207 | run "zfs share -a" | |
208 | check_shares | |
209 | ||
210 | run "zfs destroy -r $BASETANK/tests" | |
211 | check_shares | |
212 | ||
213 | run "zfs list" | |
214 | fi |