1 #!/usr/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