mars/test_suite
2013-12-12 10:59:43 +01:00
..
build_test_environment test_suite: current state 2013-12-12 10:59:01 +01:00
downloads test_suite: current state 2013-11-07 10:38:21 +01:00
scripts test_suite: to calculate checksums take mars size of data device 2013-12-12 10:59:43 +01:00
src
test_cases test_suite: current state 2013-12-12 10:59:01 +01:00
branches_to_test.sh test_suite: adjust path names 2013-12-12 10:59:43 +01:00
bugs.txt test_suite: current state 2013-11-07 10:38:21 +01:00
changes.dok test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
default-apply_fetch.conf
default-checkout_mars.conf test_suite: current state 2013-12-12 10:59:01 +01:00
default-cluster.conf test_suite: current state 2013-12-12 10:59:01 +01:00
default-crash.conf test_suite: current state 2013-11-07 10:38:21 +01:00
default-datadev_full.conf
default-file_destroy.conf test_suite: current state 2013-11-20 11:13:57 +01:00
default-file_handling.conf
default-grub.conf
default-install_mars.conf test_suite: current state 2013-12-12 10:59:01 +01:00
default-lib_err.conf
default-lib_linktree.conf
default-lib_rw.conf test_suite: current state 2013-11-07 10:38:21 +01:00
default-lib_wait.conf
default-logrotate.conf test_suite: current state 2013-11-07 10:38:21 +01:00
default-lv_config.conf test_suite: current state 2013-12-12 10:59:01 +01:00
default-main.conf test_suite: adjust path names 2013-12-12 10:59:43 +01:00
default-make_mars.conf test_suite: current state 2013-11-07 10:38:21 +01:00
default-marsadm.conf test_suite: current state 2013-12-12 10:59:01 +01:00
default-marsview.conf test_suite: current state 2013-11-07 10:38:21 +01:00
default-memleak.conf test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
default-mount.conf
default-multires.conf test_suite: current state 2013-11-07 10:38:21 +01:00
default-net.conf test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
default-perftest.conf test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
default-remote_dev.conf
default-resize.conf test_suite: current state 2013-11-07 10:38:21 +01:00
default-resource.conf test_suite: current state 2013-12-12 10:59:01 +01:00
default-switch2primary.conf test_suite: current state 2013-12-12 10:59:01 +01:00
default.test.conf test_suite: current state 2013-11-07 10:38:21 +01:00
hardcore_tests.txt
longtime_test.sh test_suite: current state 2013-11-20 11:13:57 +01:00
mars_test_cronjob.sh test_suite: current state 2013-12-12 10:59:01 +01:00
prio.txt
README test_suite: current state 2013-12-12 10:59:01 +01:00
resource_states.txt
states_and_actions.txt
synctest.out.20130718150923 test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
test_framework.txt test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
test_suite.txt test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
test_suite.txt.official test_suite: new and updated test cases 2013-09-17 13:36:27 +02:00
user_modules.conf

GPLed software AS IS, sponsored by 1&1 Internet AG (www.1und1.de).

Contact frank.liepold@1und1.de


The test suite is work in progress.

At the moment it is not in the state to be usable outside of the development
team.
Event this file is not complete!


=============================================================================

Contents
--------
1. Running a test
2. Naming conventions
3. Error handling
4. Signal handling
5. Configuration of the build environment
6. Installing the software on the hosts on which the tests are running
    attention for grub!
7. Basic configuration of logical volumes
8. Starting the whole test suite via cronjob
9. Concurrent test runs

1. Running a test
-----------------

Tests are executed by a call to scripts/start_test.sh from a subdirectory
of one of the both directories build_test_environment and test_cases.

The scope and configuration of a test is completely described by this
subdirectory (we call it start directory) as follows:

- all leaf subdirectories of the start directory define one test case
- for each leaf subdirectory xyz there exists a configuration file named
  xyz.conf which contains (among others) in the variables prepare_list,
  setup_list, run_list, cleanup_list and finish_list names of shell 
  functions defined in scripts/modules/*.sh.
  These functions are called in the order they appear in the mentioned
  *list variables.
  The file xyz.conf may reside in the leaf directory or any of it's parent
  directories (up to 20 levels higher in the directory tree).
- the configuration of the test case belonging to a leaf directory is defined
  by a set of *.conf files which are included by start_test.sh in the
  following order:
  -- default-*.conf: These are the configuration files belonging to the
                     scripts scripts/modules/*.sh which are also included
                     bei start_test.sh and which define all functions executed
                     by the various tests.
  -- user_modules.conf
  -- <subdirname>.conf where subdirname runs bottom up through the parent
     directories starting with the leaf directory up to the immediate
     subdirectory of the start directory.
     If the start directory is a leaf directory the <leaf directory name>.conf
     is included.
     For example: 

        start directory = test_cases/perf
        leaf directory  = test_cases/perf/apply/no_parallel_writer

        leads to including of apply.conf and no_parallel_writer.conf (in this
        order!) which must reside as mentioned above in the leaf directory
        or any of it's parent directories (up to 20 levels).

        start directory = test_cases/perf/apply/no_parallel_writer
        leaf directory  = test_cases/perf/apply/no_parallel_writer

        leads to including of no_parallel_writer.conf

        
2. Naming conventions
---------------------

- All functions defined in scripts/modules/*.sh have the script's name as
  name prefix (e.g. resource_check_variables)
- All variables used in *.conf files should be "defined" (the shell has no
  explicit definition) and explained in a default-*.conf file. If a variable is
  "defined" in default-xyz.conf it's name is prefixed by xyz.


3. Error handling
-----------------

WIP

4. Signal handling
------------------

WIP

5. Configuration of the build environment
-----------------------------------------
To build the mars module and userspace tools you need:

- a directory containing a git repository which contains the kernel sources
                       variable : checkout_mars_kernel_src_directory
    to be specified in file     : default-checkout_mars.conf

- the branch from which to take the kernel sources
                       variable : checkout_mars_kernel_git_branch
    to be specified in file     : default-checkout_mars.conf

- a directory containing the kernel sources against which the mars module
  should be built (may be the same as checkout_mars_kernel_src_directory)
                       variable : make_mars_kernel_src_directory
    to be specified in file     : default-make_mars.conf

- a directory containing a git repository which contains the mars sources
                       variable : checkout_mars_src_directory
    to be specified in file     : default-checkout_mars.conf

- the branch from which to take the mars sources
                       variable : checkout_mars_git_branch
    to be specified in file     : default-checkout_mars.conf

- a directory containing the mars sources which is linked in to the
  kernel source directory make_mars_kernel_src_directory for making the mars
  module.
  May coincide with checkout_mars_src_directory
                       variable : make_mars_src_dir
    to be specified in file     : default-make_mars.conf

- a directory containing a git repository which contains the userspace tool
  marsview
                       variable : checkout_mars_contrib_src_directory
    to be specified in file     : default-checkout_mars.conf

- the branch from which to take marsview
                       variable : checkout_mars_contrib_git_branch
    to be specified in file     : default-checkout_mars.conf


6. Configuration of the hosts on which the tests are running
------------------------------------------------------------





1. The cron script mars_test_cronjob.sh




Configuration