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 2009 Sun Microsystems, Inc.  All rights reserved.
  24 # Use is subject to license terms.
  25 #
  26 # ident "@(#)README     1.7     09/08/23 SMI"
  27 #
  28 
  29 
  30 DESCRIPTION:
  31 ============
  32 This test suite is designed to test the functionality of the sharemgr and
  33 sharectl, they are file system share configuration utilities.
  34 
  35 
  36 PREREQUISITES:
  37 ==============
  38 1. You must be root in global zone to run this test suite, because ordinary
  39    user does not have permission to do share, and share in non-global zone
  40    is not supported at present. Moreover, tests in sharemgr/zones subdir
  41    require to create zones, it cannot be done in non-global zone.
  42 
  43 2. The CTI-TET test harness lite package (SUNWstc-tetlite) is required, because
  44     this test suite is implemented based on CTI-TET test harness.
  45 
  46 3. The STC genutils tool package (SUNWstc-genutils) is required, because this
  47    test suite uses some functions defined in the libraries of this tool.
  48 
  49 4. Your TESTDIR must have 2G free space at least to test sharemgr functionality,
  50    because zone tests need create zone for testing. If there is no enough free
  51    space in the default test directory(/SHARE_tests), please provide an
  52    alternative directory by setting TESTDIR before configuration:
  53 
  54    For example:
  55 
  56         root# export TESTDIR=<your_alternative_dir>
  57         root# run_test -L /var/tmp/share share configure
  58 
  59    or define TESTDIR in run_test command line directly:
  60 
  61         root# run_test -L /var/tmp/share -v TESTDIR=<your_alternative_dir> \
  62                                                         share configure
  63 
  64 5. SHR_TMPDIR is the variable used by this test suite for temporary files
  65    and test results, its default value is /var/tmp/share. If you want to
  66    use alternative path, please set this variable before configuration:
  67 
  68    For example:
  69 
  70         root# export SHR_TMPDIR=<your_alternative_dir>
  71         root# run_test -L $SHR_TMPDIR share configure
  72 
  73    or define SHR_TMPDIR in run_test command line directly, and you can also
  74    specify alternative path for test results if you want to save them in
  75    different directory other than $SHR_TMPDIR:
  76 
  77         root# run_test -v SHR_TMPDIR=<your_alternative_dir1> \
  78                                 -L <your_alternative_dir2> share configure
  79 
  80    NOTE: without "-L <logdir>" in run_test command line, all test results will
  81          be saved under /var/tmp directory by default. But in this test suite,
  82          once you specify log directory at configure phase, all test results
  83          will be saved to that directory automatically even if you do not have
  84          "-L <logdir>" in other run_test commands for later execute and
  85          unconfigure phases. However, if you really want to save results of
  86          different phases to different paths, you can always execute run_test
  87          with "-L <any_logdir_you_want>" certainly.
  88 
  89 6. For the reboot test in sharemgr/oneoff subdir, it requires you to run
  90    'reboot' scenario for two times, otherwise, you cannot get the final
  91    result, on the other hand, the imcomplete run may cause chaos to your
  92    test system and therefore affect the results of other tests.
  93 
  94         root# run_test -F $SHR_TMPDIR/test_config share reboot
  95         root# <wait for system comes back>
  96         root# run_test -F $SHR_TMPDIR/test_config share reboot
  97 
  98 
  99 CTI-TET INSTALLATION:
 100 =====================
 101 In the majority of cases, the CTI-TET lite test harness can be installed
 102 from packages. The package is called SUNWstc-tetlite and installs into
 103 "/opt" by default.  Installation is via the standard Solaris package
 104 installation tool pkgadd(1M).
 105 
 106 To install SUNWstc-tetlite, enter the following command line:
 107 
 108         root# pkgadd -d <package location> SUNWstc-tetlite
 109 
 110 Where <package location> is the path containing the SUNWstc-tetlite
 111 package directory.  'root#' indicates that this command must be run
 112 as root.
 113 
 114 o It is recommended that SUNWstc-tetlite be installed from scratch,
 115   rather than on top of an existing installation.  Thus, if a copy
 116   of SUNWstc-tetlite is already installed, remove it:
 117 
 118         root# pkgrm SUNWstc-tetlite
 119 
 120 It is also acceptable to use an NFS-accessible version of the
 121 SUNWstc-tetlite package.
 122 
 123 
 124 STC GENUTILS INSTALLATION:
 125 ==========================
 126 See "Installation" section of the README of STC genutils tool.
 127 
 128 
 129 TEST SUITE INSTALLATION:
 130 ========================
 131 In the majority of cases, the test suite can be installed from packages.
 132 The test suite package is called SUNWstc-fs-share and it installs into
 133 "/opt" by default.  Installation is via the standard Solaris package
 134 installation tool, pkgadd(1M).  To install SUNWstc-fs-share, enter the
 135 following command:
 136 
 137         root# pkgadd -d <package location> SUNWstc-fs-share
 138 
 139 Where <package location> is the path containing the SUNWstc-fs-share
 140 package directory.
 141 
 142  o It is recommended that the test suite package be installed from
 143    scratch, rather than on top of an existing installation.  Thus,
 144    if a version of SUNWstc-fs-share is already installed, first
 145    remove it:
 146 
 147         root# pkgrm SUNWstc-fs-share
 148 
 149 It is also acceptable to use an NFS-accessible version of the
 150 SUNWstc-fs-share package.
 151 
 152 ALTERNATIVELY, the test suite source can be installed locally, built in
 153 the source directory tree and run from that location.  This is optional.
 154 
 155 To build the test suite from source, first install the test suite
 156 source, and then do the following: ('user$' indicates that these
 157 commands need not be run as root):
 158 
 159     user$ TET_ROOT=/opt/SUNWstc-tetlite
 160     user$ export TET_ROOT
 161     user$ CTI_ROOT=$TET_ROOT/contrib/ctitools
 162     user$ export CTI_ROOT
 163     user$ TET_SUITE_ROOT=/export/STC/usr/src/suites/fs (example location)
 164     user$ export TET_SUITE_ROOT
 165     user$ cd $TET_SUITE_ROOT/share
 166     user$ /usr/ccs/bin/make
 167 
 168 The build can also install into a 'proto' directory below the workspace
 169 root directory.  The workspace root is the directory below which the
 170 'usr/src/suites/fs' directory resides (in the example above, the
 171 workspace root is "/export/STC").  To install binaries into the proto
 172 directory, do:
 173 
 174     user$ /usr/ccs/bin/make install
 175 
 176 In addition, test suite binary packages can be constructed using the
 177 contents of the proto directory.  To build the test suite packages, do:
 178 
 179     user$ /usr/ccs/bin/make package
 180 
 181 This can be done instead of, or in addition to 'make install'.  The
 182 packages thus constructed will be stored in the 'packages' directory
 183 under the workspace root.
 184 
 185 
 186 TEST SUITE CONFIGURATION:
 187 =========================
 188 Test configuration is required to be done as root.
 189 
 190 1. Set the following environment variables
 191 export TET_ROOT=/opt/SUNWstc-tetlite
 192 export CTI_ROOT=$TET_ROOT/contrib/ctitools
 193 export TET_SUITE_ROOT=/opt/SUNWstc-fs-share (installation path of suite)
 194 PATH=$PATH:$CTI_ROOT/bin:/opt/SUNWstc-genutils/bin
 195 export PATH
 196 
 197 2. To configure the test suite :
 198 
 199 root# run_test -L <logdir> [-v TESTDIR=<your_alternative_dir>] \
 200                 [-v setup_once=FALSE] share configure
 201 
 202 where setup_once variable is used to indicate when the needed test file
 203 systems will be created, ie. by default(setup_once=TRUE), test file systems
 204 are created only once at configure phase, and removed at unconfigure phase,
 205 this makes the test suite execute faster; otherwise, test file systems will
 206 be created/removed at execution phase by each subdir before/after their tests
 207 run, which makes the test suite run with "Clean Slate" in the case of failure
 208 propagation.
 209 
 210 2G free space is required for the test suite to operate on.  The TESTDIR do
 211 not need to have filesystems created in them.  The test suite will
 212 create the appropriate filesystem types in the specified test dir, based
 213 on the fs type of TESTDIR.  This also means that any data in the TESTDIR
 214 given will be destroyed.
 215 
 216 The 'configure' will always configure a mix of ufs and zfs filesystems, ie.
 217 half ufs and half zfs.
 218 
 219 
 220 TEST SUITE EXECUTION:
 221 =====================
 222 The test suite executions is required to be done as root.
 223 
 224 If not already available from the configuration phase, set the
 225 following environment variables:
 226 
 227 export TET_ROOT=/opt/SUNWstc-tetlite
 228 export CTI_ROOT=$TET_ROOT/contrib/ctitools
 229 export TET_SUITE_ROOT=/opt/SUNWstc-fs-share (installation path of suite)
 230 PATH=$PATH:$CTI_ROOT/bin:/opt/SUNWstc-genutils/bin
 231 export PATH
 232 
 233 To run all tests expect those in oneoff subdir, just do the following:
 234 
 235         (make sure to expand SHR_TMPDIR with your real path, or have it
 236          defined in your environment, otherwise, run_test will fail)
 237         root# run_test -F $SHR_TMPDIR/test_config share
 238 
 239 NOTE: The following usage of the run_test command is supported:
 240 
 241         root# run_test -F $SHR_TMPDIR/test_config \
 242                                         share [<scenario>|tc_dir:[tp_list]]
 243 
 244 For example:
 245 
 246         root# run_test -F $SHR_TMPDIR/test_config share create
 247         (run only the 'create' test scenario, see 'SCENARIO DEFINITION'
 248          section below for more definitions of scenarios)
 249 
 250         root# run_test -F $SHR_TMPDIR/test_config share sharemgr/create:3
 251         (run only the sharemgr/create:3 test)
 252 
 253 
 254 TEST SUITE UNCONFIGURE:
 255 =======================
 256 The unconfiguration of the test suite mainly takes out:
 257 - the zfs pool created by configure
 258 - the test file systems if setup_once=TRUE
 259 - the configuration file
 260 from the current host, so that an NFS-mounted point for execution
 261 can be used.  More important, it does NOT unconfigure any shares that
 262 might have been left around due to test suite failure.
 263 
 264 To unconfigure the test suite, run:
 265 
 266         root# run_test -F $SHR_TMPDIR/test_config share unconfigure
 267 
 268 
 269 SCENARIO DEFINITION:
 270 ====================
 271 The tet_scen file defines main scenarios that this test suite contains, you can
 272 choose any scenario to run according to your specific test requirement. The
 273 following matrix illustrates which scenario covers what tests.
 274 
 275 +--------------+----------------------------------------+----------------------+
 276 | Scenario     | Involved                               | Comment              |
 277 | Name         | Tests                                  |                      |
 278 +--------------+----------------------------------------+----------------------+
 279 | all          | all sharemgr and sharectl tests except | it is the default    |
 280 |              | tests in 'oneoff' subdir               | scenario             |
 281 +--------------+----------------------------------------+----------------------+
 282 | sharemgr     | all functional tests for sharemgr      | it includes tests in |
 283 |              |                                        | many subdirs         |
 284 +--------------+----------------------------------------+----------------------+
 285 | sharectl     | all functional tests for sharectl      | tests in one subdir  |
 286 +--------------+----------------------------------------+----------------------+
 287 | short        | equivalent to 'all' scenario, but      | create zone takes    |
 288 |              | without 'zone' tests                   | more time            |
 289 +--------------+----------------------------------------+----------------------+
 290 | add          | test "sharemgr add-share" subcommand   |                      |
 291 +--------------+----------------------------------------+----------------------+
 292 | create       | test "sharemgr create" subcommand      |                      |
 293 +--------------+----------------------------------------+----------------------+
 294 | delete       | test "sharemgr delete" subcommand      |                      |
 295 +--------------+----------------------------------------+----------------------+
 296 | disable      | test "sharemgr disable|enable"         |                      |
 297 |              | subcommands                            |                      |
 298 +--------------+----------------------------------------+----------------------+
 299 | move         | test "sharemgr move-share" subcommand  |                      |
 300 +--------------+----------------------------------------+----------------------+
 301 | remove       | test "sharemgr remove-share" subcommand|                      |
 302 +--------------+----------------------------------------+----------------------+
 303 | set_         | test "sharemgr set" subcommand         |                      |
 304 +--------------+----------------------------------------+----------------------+
 305 | set_security | test "sharemgr set|unset" subcommands  |                      |
 306 |              | with different security properties     |                      |
 307 +--------------+----------------------------------------+----------------------+
 308 | set_share    | test "sharemgr set-share" subcommand   |                      |
 309 +--------------+----------------------------------------+----------------------+
 310 | show         | test "sharemgr show" subcommand        |                      |
 311 +--------------+----------------------------------------+----------------------+
 312 | unset_       | test "sharemgr unset" subcommand       |                      |
 313 +--------------+----------------------------------------+----------------------+
 314 | usage        | check if usage presents correct info   |                      |
 315 +--------------+----------------------------------------+----------------------+
 316 | zfs          | test interaction of "sharemgr" and     | interoperability     |
 317 |              | "zfs set sharenfs"                     |                      |
 318 +--------------+----------------------------------------+----------------------+
 319 | zones        | negative tests in non-global zone      | zone will be created |
 320 +--------------+----------------------------------------+----------------------+
 321 | oneoff       | one test to check sharemgr behavior if | for bug verify only  |
 322 |              | mountd is killed                       |                      |
 323 +--------------+----------------------------------------+----------------------+
 324 | reboot       | one test to check if shares and groups | for bug verify only  |
 325 |              | can survive system reboot              |                      |
 326 +--------------+----------------------------------------+----------------------+
 327 | configure    | for test suite configuration only      | not a test           |
 328 +--------------+----------------------------------------+----------------------+
 329 | unconfigure  | for test suite unconfiguration only    | not a test           |
 330 +--------------+----------------------------------------+----------------------+