Home | History | Annotate | Download | only in share
      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 +--------------+----------------------------------------+----------------------+
    331