annotate usr/src/test/zfs-tests/tests/functional/cli_root/zfs_rollback/zfs_rollback_001_pos.ksh @ 13899:0bcf78798346

3311 Want a test framework for arbitrary OS unit tests 3312 Add a testrunner package for OS unit tests 3313 Add a testrunner package to convert ZFS tests from STF Reviewed by: Matt Ahrens <matthew.ahrens@delphix.com> Reviewed by: Will Guyette <will.guyette@delphix.com> Reviewed by: Dan Kimmel <dan.kimmel@delphix.com> Reviewed by: Adam Leventhal <ahl@delphix.com> Reviewed by: Henrik Mattson <henrik.mattson@delphix.com> Reviewed by: Sonu Pillai <sonu.pillai@delphix.com> Reviewed by: Christopher Siden <chris.siden@delphix.com> Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Richard Lowe <richlowe@richlowe.net> Approved by: Richard Lowe <richlowe@richlowe.net>
author John Wren Kennedy <john.kennedy@delphix.com>
date Wed, 05 Dec 2012 22:04:50 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13899
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
1 #!/bin/ksh -p
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
2 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
3 # CDDL HEADER START
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
4 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
5 # The contents of this file are subject to the terms of the
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
6 # Common Development and Distribution License (the "License").
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
7 # You may not use this file except in compliance with the License.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
8 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
10 # or http://www.opensolaris.org/os/licensing.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
11 # See the License for the specific language governing permissions
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
12 # and limitations under the License.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
13 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
14 # When distributing Covered Code, include this CDDL HEADER in each
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
16 # If applicable, add the following below this CDDL HEADER, with the
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
17 # fields enclosed by brackets "[]" replaced with your own identifying
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
18 # information: Portions Copyright [yyyy] [name of copyright owner]
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
19 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
20 # CDDL HEADER END
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
21 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
22
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
23 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
24 # Copyright 2008 Sun Microsystems, Inc. All rights reserved.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
25 # Use is subject to license terms.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
26 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
27
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
28 . $STF_SUITE/include/libtest.shlib
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
29 . $STF_SUITE/tests/functional/cli_root/zfs_rollback/zfs_rollback_common.kshlib
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
30
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
31 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
32 # DESCRIPTION:
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
33 # 'zfs rollback -r|-rf|-R|-Rf' will recursively destroy any snapshots
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
34 # more recent than the one specified.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
35 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
36 # STRATEGY:
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
37 # 1. Create pool, fs & volume.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
38 # 2. Separately create three snapshots or clones for fs & volume
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
39 # 3. Roll back to the second snapshot and check the results.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
40 # 4. Create the third snapshot or clones for fs & volume again.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
41 # 5. Roll back to the first snapshot and check the results.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
42 # 6. Separately create two snapshots for fs & volume.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
43 # 7. Roll back to the first snapshot and check the results.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
44 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
45
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
46 verify_runnable "both"
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
47
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
48 log_assert "'zfs rollback -r|-rf|-R|-Rf' will recursively destroy any " \
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
49 "snapshots more recent than the one specified."
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
50 log_onexit cleanup_env
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
51
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
52 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
53 # Create suitable test environment and run 'zfs rollback', then compare with
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
54 # expected value to check the system status.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
55 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
56 # $1 option.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
57 # $2 the number of snapshots or clones.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
58 # $3 the number of snapshot point which we want to rollback.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
59 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
60 function test_n_check #opt num_snap_clone num_rollback
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
61 {
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
62 typeset opt=$1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
63 typeset -i cnt=$2
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
64 typeset -i pointcnt=$3
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
65 typeset dtst
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
66
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
67 (( cnt > 3 || pointcnt > cnt )) && \
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
68 log_fail "Unsupported testing condition."
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
69
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
70 # Clean up the test environment
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
71 datasetexists $FS && log_must $ZFS destroy -Rf $FS
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
72 if datasetexists $VOL; then
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
73 $DF -lhF ufs "/dev/zvol/dsk/$VOL" > /dev/null 2>&1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
74 (( $? == 0 )) && log_must $UMOUNT -f $TESTDIR1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
75
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
76 log_must $ZFS destroy -Rf $VOL
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
77 fi
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
78
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
79 # Create specified test environment
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
80 case $opt in
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
81 *r*) setup_snap_env $cnt ;;
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
82 *R*) setup_clone_env $cnt ;;
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
83 esac
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
84
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
85 all_snap="$TESTSNAP $TESTSNAP1 $TESTSNAP2"
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
86 all_clone="$TESTCLONE $TESTCLONE1 $TESTCLONE2"
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
87 typeset snap_point
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
88 typeset exist_snap
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
89 typeset exist_clone
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
90 case $pointcnt in
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
91 1) snap_point=$TESTSNAP
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
92 exist_snap=$TESTSNAP
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
93 [[ $opt == *R* ]] && exist_clone=$TESTCLONE
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
94 ;;
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
95 2) snap_point=$TESTSNAP1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
96 exist_snap="$TESTSNAP $TESTSNAP1"
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
97 [[ $opt == *R* ]] && exist_clone="$TESTCLONE $TESTCLONE1"
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
98 ;;
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
99 esac
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
100
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
101 typeset snap
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
102 for dtst in $FS $VOL; do
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
103 # Volume is not available in Local Zone.
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
104 if [[ $dtst == $VOL ]]; then
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
105 if ! is_global_zone; then
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
106 break
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
107 fi
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
108 fi
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
109 if [[ $opt == *f* ]]; then
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
110 # To write data to the mountpoint directory,
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
111 write_mountpoint_dir $dtst
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
112 opt=${opt%f}
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
113 fi
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
114
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
115 if [[ $dtst == $VOL ]]; then
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
116 log_must $UMOUNT -f $TESTDIR1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
117 log_must $ZFS rollback $opt $dtst@$snap_point
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
118 log_must $MOUNT \
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
119 /dev/zvol/dsk/$TESTPOOL/$TESTVOL $TESTDIR1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
120 else
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
121 log_must $ZFS rollback $opt $dtst@$snap_point
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
122 fi
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
123
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
124 for snap in $all_snap; do
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
125 if [[ " $exist_snap " == *" $snap "* ]]; then
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
126 log_must datasetexists $dtst@$snap
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
127 else
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
128 log_must datasetnonexists $dtst@$snap
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
129 fi
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
130 done
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
131 for clone in $all_clone; do
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
132 if [[ " $exist_clone " == *" $clone "* ]]; then
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
133 log_must datasetexists $dtst$clone
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
134 else
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
135 log_must datasetnonexists $dtst$clone
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
136 fi
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
137 done
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
138
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
139 check_files $dtst@$snap_point
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
140 done
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
141 }
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
142
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
143 typeset opt
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
144 for opt in "-r" "-rf" "-R" "-Rf"; do
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
145 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
146 # Currently, the test case was limited to create and rollback
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
147 # in three snapshots
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
148 #
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
149 log_note "Create 3 snapshots, rollback to the 2nd snapshot " \
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
150 "using $opt."
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
151 test_n_check "$opt" 3 2
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
152
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
153 log_note "Create 3 snapshots and rollback to the 1st snapshot " \
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
154 "using $opt."
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
155 test_n_check "$opt" 3 1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
156
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
157 log_note "Create 2 snapshots and rollback to the 1st snapshot " \
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
158 "using $opt."
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
159 test_n_check "$opt" 2 1
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
160 done
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
161
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
162 log_pass "'zfs rollback -r|-rf|-R|-Rf' recursively destroy any snapshots more "\
0bcf78798346 3311 Want a test framework for arbitrary OS unit tests
John Wren Kennedy <john.kennedy@delphix.com>
parents:
diff changeset
163 "recent than the one specified passed."