]> git.proxmox.com Git - mirror_zfs.git/blob - tests/zfs-tests/tests/functional/cli_user/misc/setup.ksh
Add the ZFS Test Suite
[mirror_zfs.git] / tests / zfs-tests / tests / functional / cli_user / misc / setup.ksh
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 2008 Sun Microsystems, Inc. All rights reserved.
25 # Use is subject to license terms.
26 #
27
28 #
29 # Copyright (c) 2013 by Delphix. All rights reserved.
30 #
31
32 . $STF_SUITE/tests/functional/cli_user/misc/misc.cfg
33 . $STF_SUITE/include/libtest.shlib
34
35 # This setup script is moderately complex, as it creates scenarios for all
36 # of the tests included in this directory. Usually we'd want each test case
37 # to setup/teardown it's own configuration, but this would be time consuming
38 # given the nature of these tests. However, as a side-effect, one test
39 # leaving the system in an unknown state could impact other test cases.
40
41
42 DISK=${DISKS%% *}
43 VOLSIZE=150m
44 TESTVOL=testvol
45
46 # Create a default setup that includes a volume
47 default_setup_noexit "$DISK" "" "volume"
48
49 #
50 # The rest of this setup script creates a ZFS filesystem configuration
51 # that is used to test the rest of the zfs subcommands in this directory.
52 #
53
54 # create a snapshot and a clone to test clone promote
55 log_must $ZFS snapshot $TESTPOOL/$TESTFS@snap
56 log_must $ZFS clone $TESTPOOL/$TESTFS@snap $TESTPOOL/$TESTFS/clone
57 # create a file in the filesystem that isn't in the above snapshot
58 $TOUCH /$TESTDIR/file.txt
59
60
61 # create a non-default property and a child we can use to test inherit
62 log_must $ZFS create $TESTPOOL/$TESTFS/$TESTFS2
63 log_must $ZFS set snapdir=hidden $TESTPOOL/$TESTFS
64
65
66 # create an unmounted filesystem to test unmount
67 log_must $ZFS create $TESTPOOL/$TESTFS/$TESTFS2.unmounted
68 log_must $ZFS unmount $TESTPOOL/$TESTFS/$TESTFS2.unmounted
69
70
71 # send our snapshot to a known file in /tmp
72 $ZFS send $TESTPOOL/$TESTFS@snap > /tmp/zfstest_datastream.dat
73 if [ ! -s /tmp/zfstest_datastream.dat ]
74 then
75 log_fail "ZFS send datafile was not created!"
76 fi
77 log_must $CHMOD 644 /tmp/zfstest_datastream.dat
78
79
80 # create a filesystem that has particular properties to test set/get
81 log_must $ZFS create -o version=1 $TESTPOOL/$TESTFS/prop
82 set -A props $PROP_NAMES
83 set -A prop_vals $PROP_VALS
84 typeset -i i=0
85
86 while [[ $i -lt ${#props[*]} ]]
87 do
88 prop_name=${props[$i]}
89 prop_val=${prop_vals[$i]}
90 log_must $ZFS set $prop_name=$prop_val $TESTPOOL/$TESTFS/prop
91 i=$(( $i + 1 ))
92 done
93
94 # create a filesystem we don't mind renaming
95 log_must $ZFS create $TESTPOOL/$TESTFS/renameme
96
97
98 if is_global_zone
99 then
100 # create a filesystem we can share
101 log_must $ZFS create $TESTPOOL/$TESTFS/unshared
102 log_must $ZFS set sharenfs=off $TESTPOOL/$TESTFS/unshared
103
104 # create a filesystem that we can unshare
105 log_must $ZFS create $TESTPOOL/$TESTFS/shared
106 log_must $ZFS set sharenfs=on $TESTPOOL/$TESTFS/shared
107 fi
108
109
110 log_must $ZFS create -o version=1 $TESTPOOL/$TESTFS/version1
111 log_must $ZFS create -o version=1 $TESTPOOL/$TESTFS/allowed
112 log_must $ZFS allow everyone create $TESTPOOL/$TESTFS/allowed
113
114 if is_global_zone
115 then
116
117 # Now create several virtual disks to test zpool with
118
119 $MKFILE 100m /$TESTDIR/disk1.dat
120 $MKFILE 100m /$TESTDIR/disk2.dat
121 $MKFILE 100m /$TESTDIR/disk3.dat
122 $MKFILE 100m /$TESTDIR/disk-additional.dat
123 $MKFILE 100m /$TESTDIR/disk-export.dat
124 $MKFILE 100m /$TESTDIR/disk-offline.dat
125 $MKFILE 100m /$TESTDIR/disk-spare1.dat
126 $MKFILE 100m /$TESTDIR/disk-spare2.dat
127
128 # and create a pool we can perform attach remove replace,
129 # etc. operations with
130 log_must $ZPOOL create $TESTPOOL.virt mirror /$TESTDIR/disk1.dat \
131 /$TESTDIR/disk2.dat /$TESTDIR/disk3.dat /$TESTDIR/disk-offline.dat \
132 spare /$TESTDIR/disk-spare1.dat
133
134
135 # Offline one of the disks to test online
136 log_must $ZPOOL offline $TESTPOOL.virt /$TESTDIR/disk-offline.dat
137
138
139 # create an exported pool to test import
140 log_must $ZPOOL create $TESTPOOL.exported /$TESTDIR/disk-export.dat
141 log_must $ZPOOL export $TESTPOOL.exported
142
143 set -A props $POOL_PROPS
144 set -A prop_vals $POOL_VALS
145 typeset -i i=0
146
147 while [[ $i -lt ${#props[*]} ]]
148 do
149 prop_name=${props[$i]}
150 prop_val=${prop_vals[$i]}
151 log_must $ZPOOL set $prop_name=$prop_val $TESTPOOL
152 i=$(( $i + 1 ))
153 done
154
155 # copy a v1 pool from cli_root
156 $CP $STF_SUITE/tests/functional/cli_root/zpool_upgrade/blockfiles/zfs-pool-v1.dat.bz2 \
157 /$TESTDIR
158 log_must $BUNZIP2 /$TESTDIR/zfs-pool-v1.dat.bz2
159 log_must $ZPOOL import -d /$TESTDIR v1-pool
160 fi
161 log_pass