]> git.proxmox.com Git - mirror_zfs.git/blame - tests/zfs-tests/tests/functional/history/history_002_pos.ksh
Update ZTS to work on FreeBSD
[mirror_zfs.git] / tests / zfs-tests / tests / functional / history / history_002_pos.ksh
CommitLineData
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 28# Copyright (c) 2013, 2016 by Delphix. All rights reserved.
6bb24f4d
BB
29#
30
31. $STF_SUITE/tests/functional/history/history_common.kshlib
32
33#
34# DESCRIPTION:
35# Create a scenario to verify the following zfs subcommands are logged.
36# create, destroy, clone, rename, snapshot, rollback, set, inherit,
37# receive, promote, hold and release.
38#
39# STRATEGY:
40# 1. Verify that all the zfs commands listed (barring send) produce an
41# entry in the pool history.
42#
43
44verify_runnable "global"
45
46function cleanup
47{
48
c1d9abf9
JWK
49 [[ -f $tmpfile ]] && rm -f $tmpfile
50 [[ -f $tmpfile2 ]] && rm -f $tmpfile2
6bb24f4d 51 for dataset in $fs $newfs $fsclone $vol $newvol $volclone; do
c1d9abf9 52 datasetexists $dataset && zfs destroy -Rf $dataset
6bb24f4d 53 done
c1d9abf9 54 rm -rf /history.$$
6bb24f4d
BB
55}
56
57log_assert "Verify zfs sub-commands which modify state are logged."
58log_onexit cleanup
59
60fs=$TESTPOOL/$TESTFS1; newfs=$TESTPOOL/newfs; fsclone=$TESTPOOL/clone
61vol=$TESTPOOL/$TESTVOL ; newvol=$TESTPOOL/newvol; volclone=$TESTPOOL/volclone
62fssnap=$fs@fssnap; fssnap2=$fs@fssnap2
63volsnap=$vol@volsnap; volsnap2=$vol@volsnap2
0fe7c953 64tmpfile=$TEST_BASE_DIR/tmpfile.$$ ; tmpfile2=$TEST_BASE_DIR/tmpfile2.$$
6bb24f4d
BB
65
66if is_linux; then
67# property value property value
68#
69props=(
70 quota 64M recordsize 512
71 reservation 32M reservation none
72 mountpoint /history.$$ mountpoint legacy
73 mountpoint none compression lz4
74 compression on compression off
75 compression lzjb acltype noacl
76 acltype posixacl xattr sa
77 atime on atime off
78 devices on devices off
79 exec on exec off
80 setuid on setuid off
81 readonly on readonly off
82 zoned on zoned off
83 snapdir hidden snapdir visible
84 aclinherit discard aclinherit noallow
85 aclinherit secure aclinherit passthrough
86 canmount off canmount on
87 xattr on xattr off
88 compression gzip compression gzip-$((RANDOM%9 + 1))
89 copies $((RANDOM%3 + 1))
90)
7839c4b5
MM
91elif is_freebsd; then
92# property value property value
93#
94props=(
95 quota 64M recordsize 512
96 reservation 32M reservation none
97 mountpoint /history.$$ mountpoint legacy
98 mountpoint none sharenfs on
99 sharenfs off
100 compression on compression off
101 compression lzjb aclmode discard
102 aclmode groupmask aclmode passthrough
103 atime on atime off
104 devices on devices off
105 exec on exec off
106 setuid on setuid off
107 readonly on readonly off
108 zoned on zoned off
109 snapdir hidden snapdir visible
110 aclinherit discard aclinherit noallow
111 aclinherit secure aclinherit passthrough
112 canmount off canmount on
113 compression gzip compression gzip-$((RANDOM%9 + 1))
114 copies $((RANDOM%3 + 1))
115)
6bb24f4d
BB
116else
117# property value property value
118#
119props=(
120 quota 64M recordsize 512
121 reservation 32M reservation none
122 mountpoint /history.$$ mountpoint legacy
123 mountpoint none sharenfs on
124 sharenfs off
125 compression on compression off
126 compression lzjb aclmode discard
127 aclmode groupmask aclmode passthrough
128 atime on atime off
129 devices on devices off
130 exec on exec off
131 setuid on setuid off
132 readonly on readonly off
133 zoned on zoned off
134 snapdir hidden snapdir visible
135 aclinherit discard aclinherit noallow
136 aclinherit secure aclinherit passthrough
137 canmount off canmount on
138 xattr on xattr off
139 compression gzip compression gzip-$((RANDOM%9 + 1))
140 copies $((RANDOM%3 + 1))
141)
142fi
143
c1d9abf9 144run_and_verify "zfs create $fs"
6bb24f4d
BB
145# Set all the property for filesystem
146typeset -i i=0
147while ((i < ${#props[@]})) ; do
c1d9abf9 148 run_and_verify "zfs set ${props[$i]}=${props[((i+1))]} $fs"
6bb24f4d
BB
149
150 # quota, reservation, canmount can not be inherited.
151 #
152 if [[ ${props[$i]} != "quota" && ${props[$i]} != "reservation" && \
153 ${props[$i]} != "canmount" ]];
154 then
c1d9abf9 155 run_and_verify "zfs inherit ${props[$i]} $fs"
6bb24f4d
BB
156 fi
157
158 ((i += 2))
159done
160
c1d9abf9
JWK
161run_and_verify "zfs create -V 64M $vol"
162run_and_verify "zfs set volsize=32M $vol"
163run_and_verify "zfs snapshot $fssnap"
164run_and_verify "zfs hold tag $fssnap"
165run_and_verify "zfs release tag $fssnap"
166run_and_verify "zfs snapshot $volsnap"
167run_and_verify "zfs snapshot $fssnap2"
168run_and_verify "zfs snapshot $volsnap2"
6bb24f4d
BB
169
170# Send isn't logged...
88eaf610
TC
171log_must eval "zfs send -i $fssnap $fssnap2 > $tmpfile"
172log_must eval "zfs send -i $volsnap $volsnap2 > $tmpfile2"
6bb24f4d 173# Verify that's true
c1d9abf9 174zpool history $TESTPOOL | grep 'zfs send' >/dev/null 2>&1 && \
6bb24f4d
BB
175 log_fail "'zfs send' found in history of \"$TESTPOOL\""
176
c1d9abf9
JWK
177run_and_verify "zfs destroy $fssnap2"
178run_and_verify "zfs destroy $volsnap2"
179run_and_verify "zfs receive $fs < $tmpfile"
180run_and_verify "zfs receive $vol < $tmpfile2"
181run_and_verify "zfs rollback -r $fssnap"
182run_and_verify "zfs rollback -r $volsnap"
183run_and_verify "zfs clone $fssnap $fsclone"
184run_and_verify "zfs clone $volsnap $volclone"
185run_and_verify "zfs rename $fs $newfs"
186run_and_verify "zfs rename $vol $newvol"
187run_and_verify "zfs promote $fsclone"
188run_and_verify "zfs promote $volclone"
189run_and_verify "zfs destroy $newfs"
190run_and_verify "zfs destroy $newvol"
191run_and_verify "zfs destroy -rf $fsclone"
192run_and_verify "zfs destroy -rf $volclone"
6bb24f4d
BB
193
194log_pass "zfs sub-commands which modify state are logged passed."