1 # 2 # CDDL HEADER START 3 # 4 # The contents of this file are subject to the terms of the 5 # Common Development and Distribution License (the "License"). 6 # You may not use this file except in compliance with the License. 7 # 8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 # or http://www.opensolaris.org/os/licensing. 10 # See the License for the specific language governing permissions 11 # and limitations under the License. 12 # 13 # When distributing Covered Code, include this CDDL HEADER in each 14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 # If applicable, add the following below this CDDL HEADER, with the 16 # fields enclosed by brackets "[]" replaced with your own identifying 17 # information: Portions Copyright [yyyy] [name of copyright owner] 18 # 19 # CDDL HEADER END 20 # 21 22 # 23 # Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24 # Use is subject to license terms. 25 # 26 # ident "@(#)README 1.5 08/02/27 SMI" 27 # 28 29 The ZFS Test Suite Gate README - Apr 2nd, 2007 30 31 Table of Contents 32 33 1. Introduction 34 35 2. Building & Installation 36 37 2.1 Installing from Packages 38 39 2.2 Uninstalling the Test Suite Package 40 41 2.3 Building the Test Suite (optional) 42 43 3. Running the tests 44 45 3.1 Setting environment 46 47 3.2 Configuring and running in global zone 48 49 3.3 Configuring and running in local zone 50 51 3.4 Unconfigure 52 53 ================================================================================ 54 55 1. Introduction 56 57 o This message contains the basics you need to know for the ZFS test suite 58 59 ================================================================================ 60 61 2. Building & Installation 62 63 2.1 Installing from Packages 64 65 o In the majority of cases, the test suite can be installed from packages. The 66 package is called SUNWstc-zfs and installs into "/opt" by default. Installation is 67 via the standard Solaris package installation tool pkgadd(1m). To install 68 SUNWstc-zfs simply enter the following command line: 69 70 % sudo pkgadd -d <package location> SUNWstc-zfs 71 72 Where <package location> refers to the path containing the SUNWstc-zfs 73 package directory. 74 75 o It is recommended that you install the packages from scratch, 76 rather than on top of an existing installation. Thus, if an old 77 version of the tests is installed: 78 79 % sudo pkgrm SUNWstc-zfs 80 81 2.2 Uninstalling the Test Suite Package 82 83 o Prior to uninstalling the SUNWstc-zfs package, you may want to run stf_unconfigure 84 from the top level directory. Typically this will be "/opt/SUNWstc-zfs". Unconfiguring 85 the suite is recommended if you have previous run the suite in local zone mode. For 86 more detail on how to unconfigure the suite see section 3.4. 87 88 o To uninstall the package use the standard Solaris package installation tool pkgrm(1m) 89 as follows: 90 91 % sudo pkgrm SUNWstc-zfs 92 93 2.3 Building the Test Suite (optional) 94 95 o This method uses the standard STF techniques to create a 96 Solaris package, which will be installed under the base 97 directory "/opt/SUNWstc-zfs". 98 99 Briefly, this build and installation is performed as follows: 100 101 # set path to STF bin directory 102 % PATH=<path-to-STF>/bin/`uname -p`:$PATH 103 % export PATH 104 105 # if not using teamware, define CODEMGR_WS 106 % CODEMGR_WS=<path-to-workspace> 107 % export CODEMGR_WS 108 109 % cd ${CODEMGR_WS}/src/suites/zfs 110 % stf_build package 111 % cd ${CODEMGR_WS}/packages/`uname -p` 112 % sudo pkgadd -d `pwd` SUNWstc-zfs 113 114 o It is recommended that you install the packages from scratch, 115 rather than on top of an existing installation. Thus, if an old 116 version of the tests is installed: 117 118 % sudo pkgrm SUNWstc-zfs 119 120 ================================================================================ 121 122 3. Running the tests 123 124 3.1 Setting environment 125 126 o Add <STF Tools Path>/proto/tools/stf/bin/`uname -p` to your PATH: 127 128 csh% set path = ( /ws/onnv-stc2/proto/tools/stf/bin/`uname -p` $path ) 129 130 sh% PATH=/ws/onnv-stc2/proto/tools/stf/bin/`uname -p`:$PATH export PATH 131 132 o If no legal ip address was assigned to local zone, you need pkgadd 133 SUNWstc-stf in global zone 134 135 % sudo pkgadd -d /ws/onnv-stc2/packages/`uname -p` SUNWstc-stf 136 137 o When testing with NFS, you should set the remote access permission for 138 rsh/rcp on the remote server machine. You can add the permission to 139 ~root/.rhosts file in the server, for example: 140 server% echo "foo root" >~root/.rhosts 141 Here, the 'foo' is the local host name. 142 143 -------------------------------------------------------------------------------- 144 145 3.2 Configuring and running in global zone 146 147 3.2.1 Configure the tests 148 149 o You'll need at least two scratch disks. Configure the two scratch disks, 150 c0t13d0 and c0t14d0 for example: 151 152 % cd /opt/SUNWstc-zfs; stf_configure -c DISKS="c0t13d0 c0t14d0" 153 154 o By default the test suite runs all test assertions. However, the test 155 suite can be configured for test runs of varying length by using the 156 RUNTIME parameter. Valid runtime lengths are: short, medium and 157 long (the default). For example, the following command will configure 158 the test suite for the shortest possible runtime: 159 160 % cd /opt/SUNWstc-zfs; stf_configure -c DISKS="c0t13d0 c0t14d0" \ 161 -c "RUNTIME=short" 162 163 Note that hardware speed is also a significnat contributor to the 164 runtime length of the test suite. 165 166 o Configuring this test suite will destroy all existing pools. 167 If you want to preserve existing pools you should use the KEEP 168 parameter. For example: 169 170 % cd /opt/SUNWstc-zfs; stf_configure -c DISKS="c0t13d0 c0t14d0" \ 171 -c "KEEP=poolA poolB" 172 173 o If you want to run the test suite with remote support, you should assign 174 one or more machines as remote testing hosts. Meanwhile, you also need to 175 specify disks for each remote host. Optionally, you can specify test 176 scripts location directory on the remote host. The descriptions of variables 177 are as follows: 178 179 RHOSTS -- The remote hosts list. 180 RDISKS -- The corresponding scratch disks list for each host in RHOSTS list. 181 You need to quote the disks of each host, for example: 182 RDISKS="'c0t0d0 c0t1d0' 'c0t2d0'" 183 which specifies scratch disks for two remote hosts. 184 You can assign 'detect' for a remote host, which means let 185 the program to detect any available disks for testing in a 186 remote host. 187 RTEST_ROOT -- The temporary directory to store test scripts and files on the 188 remote host. By default it's set to /var/tmp/SUNWstc-zfs/tmp. 189 190 Here is an example about how to customize the testing: 191 % cd /opt/SUNWstc-zfs 192 % stf_configure -c DISKS="c0t13d0 c0t14d0" -c RHOSTS="foo1 foo2" \ 193 -c RDISKS="'c0t1d0 c0t2d0' 'detect'" 194 In this example, there are two remote hosts -- "foo1" and "foo2": 195 "foo1" is assigned two disks -- c0t1d0 and c0t2d0 for testing; 196 "foo2" is assigned 'detect', which will detect any available scratch 197 disks in "foo2" for remote support testing. 198 199 o If you want to run the test suite on iSCSI targets, you need to specify 200 iscsi variable to do the configuration, in addition to specify RHOSTS 201 and RDISKS. 202 Currently, only one value "remote" is supported for iscsi variable. 203 204 Here is an example 205 % cd /opt/SUNWstc-zfs 206 % stf_configure -c DISKS="c0t13d0 c0t14d0" -c RHOSTS="host1" \ 207 -c RDISKS="'detect'" -c iscsi="remote" 208 In this example, all available scratch disks detected on host1 will 209 be configured as iSCSI targets on zfs, the local host will serve 210 as iSCSI initiator, the test suite will run on the iSCSI targets 211 at local host. 212 213 o In addition, all variables to stf_configure can be set through setting 214 environment variables or defining in a file. For example: 215 In Korn Shell, you can export all variables as environment variables: 216 217 % export DISKS="c0t13d0 c0t14d0" 218 % export KEEP="poolA poolB" 219 % export RUNTIME="long" 220 % export RHOSTS="foo1 foo2" 221 % export RDISKS="'c0t1d0 c0t2d0' 'detect'" 222 % export RTEST_ROOT="/export/tmp" 223 % stf_configure 224 ... 225 or, you can define all variables in a file and then via "-f" option of 226 stf_configure to export the vairables: 227 % echo "export DISKS=\"c0t13d0 c0t14d0\"" >/tmp/vars.cfg 228 % echo "export KEEP=\"poolA poolB\"" >>/tmp/vars.cfg 229 % echo "export RUNTIME=\"LONG\"" >>/tmp/vars.cfg 230 % echo "export RHOSTS=\"foo1 foo2\"" >>/tmp/vars.cfg 231 % echo "export RDISKS=\"'c0t1d0 c0t2d0' 'detect'\"" >>/tmp/vars.cfg 232 % echo "export RTEST_ROOT=\"/export/tmp\"" >>/tmp/vars.cfg 233 % stf_configure -f /tmp/vars.cfg 234 235 o For stf_configure options refer to the STF User's Guide. 236 237 3.2.2 Run the tests 238 239 o To execute all of the modes on current system platform: 240 241 % cd /opt/SUNWstc-zfs; stf_execute 242 243 o To execute in a specific mode: 244 245 % stf_execute -m <mode> 246 247 o To execute only test cases in a specific directory: 248 249 % cd /opt/SUNWstc-zfs/<test directory>; stf_execute 250 251 o For other stf_execute options, refer to the STF User's Guide. 252 253 o Note: 254 255 NIS client service will be disabled during tests/func/acl subsets 256 execution temporarily, and its state will be restored after that. 257 258 -------------------------------------------------------------------------------- 259 260 3.3 Configuring and running in local zone 261 262 3.3.1 Configure the tests 263 264 o Firstly, configure in the global zone to create a local zone and export the 265 pool to the local zone. You'll need at least two scratch disks. 266 You can assign a zone name, zone root and IP address for the local zone. 267 All parameters are optional. Syntax as, 268 269 stf_configure -c DISKS="<DISKS>" -c zone=new [-c zone_name=<zone_name>] [-c zone_root=<zone_root>] [-c zone_ip=<zone_ip>] 270 271 For example, 272 273 % cd /opt/SUNWstc-zfs; stf_configure -c DISKS="c0t13d0 c0t14d0" -c zone=new 274 275 o Note: '-c zone=new' forces the creation a fresh zone. While 'zone=existing' 276 will try to use an existing zone if possible or create a new one if no 277 existing zone is found. 278 279 o Note: 280 If zone_name is NOT given, the default name of zone is `hostname`001 281 If zone_root is NOT given, the default residence of zone is /export/home 282 283 o Then, login to local zone. 284 285 % sudo zlogin zone001 286 287 o In local zone su to non-root user 'zone' which has be created automatically 288 during the stf_configure process which was executed from the global zone. 289 290 # su - zone 291 292 o Configure in local zone 293 294 % cd /opt/SUNWstc-zfs; /opt/SUNWstc-stf/bin/`uname -p`/stf_configure 295 296 3.3.2 Running the tests 297 298 o To execute all of the modes on current system platform 299 300 % cd /opt/SUNWstc-zfs; 301 % /opt/SUNWstc-stf/bin/`uname -p`/stf_execute 302 303 o To execute in a specific mode: 304 305 % /opt/SUNWstc-stf/bin/`uname -p`/stf_execute -m <mode> 306 307 o To execute only test cases in a specific directory: 308 309 % cd /opt/SUNWstc-zfs/<test directory> 310 % /opt/SUNWstc-stf/bin/`uname -p`/stf_execute 311 312 -------------------------------------------------------------------------------- 313 314 3.4 Unconfigure the suite. 315 316 o Use the STF unconfigure tool. 317 318 % cd /opt/SUNWstc-zfs; stf_unconfigure 319 320 ================================================================================ 321